{"version":3,"sources":["webpack:///./node_modules/@syncfusion/ej2-popups/src/tooltip/tooltip.js","webpack:///./node_modules/@syncfusion/ej2-calendars/src/datepicker/datepicker.js","webpack:///./node_modules/@syncfusion/ej2-vue-inputs/src/numerictextbox/numerictextbox.component.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/foreign-key.js","webpack:///./node_modules/@syncfusion/ej2-vue-inputs/src/textbox/textbox.component.js","webpack:///./node_modules/@syncfusion/ej2-vue-calendars/src/datepicker/datepicker.component.js","webpack:///./node_modules/@syncfusion/ej2-vue-buttons/src/radio-button/radiobutton.component.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/data.js","webpack:///./node_modules/@syncfusion/ej2-calendars/src/calendar/calendar.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/string-literals.js","webpack:///./node_modules/@syncfusion/ej2-buttons/src/radio-button/radio-button.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/column.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/scroll.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/summary-model-generator.js","webpack:///./node_modules/@syncfusion/ej2-vue-popups/src/dialog/buttons.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-popups/src/dialog/dialog.component.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/aria-service.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/toolbar/toolbar.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/common/h-scroll.js","webpack:///./src/common/dates.js","webpack:///./src/common/errorTypes.js","webpack:///./src/views/templates/TradeForm.vue?aa5f","webpack:///./node_modules/uuid/dist/esm-browser/rng.js","webpack:///./node_modules/uuid/dist/esm-browser/regex.js","webpack:///./node_modules/uuid/dist/esm-browser/validate.js","webpack:///./node_modules/uuid/dist/esm-browser/stringify.js","webpack:///./node_modules/uuid/dist/esm-browser/v4.js","webpack:///src/views/templates/TradeForm.vue","webpack:///./src/views/templates/TradeForm.vue?aea3","webpack:///./src/views/templates/TradeForm.vue","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/print.js","webpack:///./node_modules/@syncfusion/ej2-calendars/src/timepicker/timepicker.js","webpack:///./node_modules/@syncfusion/ej2-calendars/src/datetimepicker/datetimepicker.js","webpack:///./src/views/templates/TradeForm.vue?6858","webpack:///./node_modules/@syncfusion/ej2-splitbuttons/src/common/common.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/value-formatter.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/row-model-generator.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/enum.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/common/v-scroll.js","webpack:///./node_modules/@syncfusion/ej2-inputs/src/form-validator/form-validator.js","webpack:///./node_modules/@syncfusion/ej2-vue-buttons/src/button/button.component.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/stacked-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/indent-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/caption-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/expand-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-indent-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-header-indent-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-expand-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-drop-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-header-indent-render.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/render.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/cell-render-factory.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/service-locator.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/renderer-factory.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/page-settings.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/column-chooser-settings.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/search.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/show-hide.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/aggregate.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/clipboard.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/grid.js","webpack:///./node_modules/@syncfusion/ej2-buttons/src/check-box/check-box.js","webpack:///./node_modules/@syncfusion/ej2-inputs/src/numerictextbox/numerictextbox.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/common/checkbox-filter-base.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/inline-edit-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/batch-edit-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/dialog-edit-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/edit-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/edit-cell-base.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/boolean-edit-cell.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/dropdown-edit-cell.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/numeric-edit-cell.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/default-edit-cell.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/normal-edit.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/inline-edit.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/batch-edit.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/dialog-edit.js","webpack:///./node_modules/@syncfusion/ej2-calendars/src/maskbase/masked-date-time.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/datepicker-edit-cell.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/template-edit-cell.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/edit.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/responsive-dialog-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/numeric-container.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/pager-message.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/pager.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/pager-dropdown.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/external-message.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/page.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/selection.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/width-controller.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/common/menu-scroll.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/common/menu-base.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/stacked-column.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/columns.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/aggregate-columns.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/aggregates.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/grid.component.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/focus-strategy.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/constant.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/content-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/group-model-generator.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/util.js","webpack:///./node_modules/@syncfusion/ej2-vue-splitbuttons/src/drop-down-button/items.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-splitbuttons/src/drop-down-button/dropdownbutton.component.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-merge-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/toolbar.js","webpack:///./node_modules/@syncfusion/ej2-inputs/src/uploader/uploader.js","webpack:///./node_modules/@syncfusion/ej2-vue-inputs/src/uploader/files.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-inputs/src/uploader/uploader.component.js","webpack:///./node_modules/@syncfusion/ej2-splitbuttons/src/drop-down-button/drop-down-button.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/row.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/cell.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/resize.js","webpack:///./node_modules/@syncfusion/ej2-inputs/src/textbox/textbox.js","webpack:///./src/common/unitConversions.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/context-menu/context-menu.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/footer-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/summary-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/aggregate.js"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","TOUCHEND_HIDE_DELAY","TAPHOLD_THRESHOLD","SHOW_POINTER_TIP_GAP","HIDE_POINTER_TIP_GAP","MOUSE_TRAIL_GAP","POINTER_ADJUST","ROOT","RTL","DEVICE","ICON","CLOSE","TOOLTIP_WRAP","CONTENT","ARROW_TIP","ARROW_TIP_OUTER","ARROW_TIP_INNER","TIP_BOTTOM","TIP_TOP","TIP_LEFT","TIP_RIGHT","POPUP_ROOT","POPUP_OPEN","POPUP_CLOSE","POPUP_LIB","HIDE_POPUP","POPUP_CONTAINER","Animation","_super","apply","effect","duration","delay","Tooltip","options","element","_this","call","mouseMoveEvent","mouseMoveTarget","containerElement","isBodyContainer","initialize","formatPosition","_a","_b","position","indexOf","split","tooltipPositionY","tooltipPositionX","renderArrow","setTipClass","tip","createElement","className","tipClass","appendChild","tooltipEle","renderPopup","elePos","mouseTrail","top","left","getTooltipPosition","classList","remove","popupObj","height","width","X","Y","enableRtl","open","openPopupHandler","bind","close","closePopupHandler","getScalingFactor","x","y","scalingFactors","elementsWithTransform","closest","contains","computedStyle","window","getComputedStyle","transformValue","getPropertyValue","matrixValues","match","map","parseFloat","style","display","parentWithZoomStyle","zoom","pos","getBoundingClientRect","offsetPos","calculateTooltipOffset","collisionPosition","calculateElementPosition","collisionLeft","collisionTop","collisionFlipFit","windowResize","reposition","findTarget","dataBind","needTemplateReposition","trigger","tooltipEventArgs","isReact","opensOn","clearTemplate","clear","xScalingFactor","yScalingFactor","tipWidth","tipHeight","tooltipEleWidth","tooltipEleHeight","arrowEle","tipAdjust","tipHeightAdjust","tipWidthAdjust","tooltipEleRect","arrowEleRect","Math","round","showTipPointer","clientHeight","clientWidth","offsetWidth","offsetHeight","offsetX","offsetY","updateTipPosition","selEle","removeList","adjustArrow","leftValue","topValue","tooltipWidth","tooltipHeight","arrowInnerELe","tipPosExclude","tipPointerPosition","renderContent","tooltipContent","cssClass","getAttribute","setAttribute","removeAttribute","content","innerHTML","HTMLElement","enableHtmlSanitizer","setProperties","sanitize","enableHtmlParse","tempFunction","tempArr","id","undefined","root","templateFunction","renderReactTemplates","renderCloseIcon","isSticky","tipClose","add","touchStartEvent","onStickyClose","existingCloseIcon","querySelector","addDescribedBy","describedby","push","join","trim","removeDescribedBy","index","splice","orgdescribedby","tapHoldHandler","evt","clearTimeout","autoCloseTimer","targetHover","originalEvent","touchEndHandler","e","setTimeout","targetClick","hideTooltip","animation","closeDelay","targetList","slice","ctrlId","document","_i","targetList_1","target_1","restoreElement","showTooltip","mouseMoveBeforeOpen","mouseMoveBeforeRemove","showAnimation","showTimer","hideTimer","openDelay","type","cancel","event","isInteracted","observeCallback","beforeRenderArgs","beforeRenderCallback","isHidden","attrs","role","styles","tooltipBeforeRender","tooltipAfterRender","stop","appendContainer","ctrlObj","container","body","tagName","isDevice","maxWidth","observedArgs","beforeOpenCallback","openAnimation_1","name","timingFunction","show","onMouseMove","wireMouseEvents","tooltip","viewContainerRef","checkCollision","horizontal","vertical","affectedPos","checkCollideTarget","offsetLeft","pageXOffset","scrollLeft","offsetTop","pageYOffset","scrollTop","newpos","collidedPosition","elePosVertical","elePosHorizontal","getOffSetPosition","elePosition","eleOffset","windowCollision","arrowleft","parseInt","toString","positionString","newPos","offsetType","hideAnimation","targetElement","hide","isTooltipOpen","tooltipHide","popupHide","closeAnimation","unwireMouseEvents","destroy","tooltipHover","tooltipMouseOut","onMouseOut","enteredElement","relatedTarget","checkForTooltipElement","tooltipElementMouseOut","eventPageX","eventPageY","preventDefault","touches","pageX","pageY","colpos","keyDown","keyCode","touchEnd","scrollHandler","render","wireEvents","renderComplete","preRender","triggerList","getTriggerList","triggerList_1","wireFocusEvents","touchModule","tapHoldThreshold","tapHold","touchEndEvent","targetsList","targetList_2","unwireEvents","triggerList_2","unwireFocusEvents","targetList_3","triggerList_3","getModuleName","getPersistData","addOnPersist","onPropertyChanged","newProp","oldProp","keys","prop","refresh","target_2","currentTarget","currentTarget_1","DATEWRAPPER","LIBRARY","CONTROL","POPUPWRAPPER","INPUTWRAPPER","POPUP","INPUTCONTAINER","INPUTFOCUS","INPUTROOT","ERROR","ACTIVE","OVERFLOW","DATEICON","ICONS","OPENDURATION","OFFSETVALUE","SELECTED","FOCUSEDDATE","NONEDIT","containerAttr","DatePicker","isDateIconClicked","isAltKeyPressed","invalidValueString","checkPreviousValue","maskedDateValue","isAngular","preventChange","isIconClicked","isDynamicValueChanged","moduleName","isFocused","isBlur","isKeyAction","datepickerOptions","bindEvents","floatLabelType","calculateWidth","inputElement","inputWrapper","buttons","getElementsByClassName","disabled","enabled","setTimeZone","serverTimezoneOffset","offsetValue","value","clientTimeZoneDiff","Date","getTimezoneOffset","serverTimezoneDiff","timeZoneDiff","isDayLightSaving","getTime","updateInput","firstOffset","getFullYear","secondOffset","max","setAllowEdit","allowEdit","readonly","updateIconState","checkInvalidValue","enableMask","notify","module","createInput","updateHtmlAttributeToWrapper","placeholder","updateInputValue","previousElementValue","previousDate","inputValueCopy","ariaAttrs","l10nLocale","globalize","locale","l10n","getConstant","fullScreenMode","updatedCssClassValues","replace","isBindClearAction","bindClearAction","properties","showClearButton","setWidth","tabIndex","addAttributes","isDynamic","formatOptions","isCalendar","disabledDates","isNaN","checkValue","strictMode","validateDate","minMaxUpdates","minMaxUpdate","dateValue","dateString","tempFormat","formatString","dateTimeFormat","calendarMode","formatDate","format","skeleton","calendar","min","changedArgs","errorClass","checkStringValue","val","returnDate","formatDateTime","culture","getDatePattern","checkDateValue","parseDate","valueDate","valueString","invalid","extISOString","basicISOString","test","bindInputEvent","inputHandler","dateIconHandler","mouseUpHandler","inputFocusHandler","inputBlurHandler","keyupHandler","keydownHandler","inputChangeHandler","clearButton","resetHandler","formElement","resetFormHandler","defaultKeyConfigs","keyConfigs","keyboardModules","eventName","keyAction","inputKeyActionHandle","code","unBindEvents","restoreValue","currentDate","stopPropagation","bindClearEvent","clearedArgs","popupUpdate","changeEvent","keyupEvent","createEvent","initEvent","dispatchEvent","preventEventBubbling","interopAdaptor","invokeMethodAsync","setValue","blur","focus","htmlAttributes","updatedClassValues","setStyle","charAt","updateHtmlAttributeToElement","updateCssClass","newCssClass","oldCssClass","setCssClass","popupWrapper","calendarKeyActionHandle","action","children","selectionStart","selectionEnd","focusArguments","model","openOnFocus","isPopupClicked","strictModeUpdate","changeTrigger","activeElement","blurArguments","calendarKeyboardModules","calendarElement","firstElementChild","documentHandler","parentElement","depth","toLowerCase","generateTodayVal","focusOut","clickedView","currentView","start","end","length_1","headerTitleElement","defaultAction","keyActionHandle","setActiveDescendant","previousDateTime","querySelectorAll","targetdate","navigateTo","dateOptions","date","pattern","charPattern","len","modifiedValue","toLocaleUpperCase","setFullYear","setHours","getHours","getMinutes","getSeconds","getMilliseconds","createCalendar","modelHeader","modal","relateTo","targetType","zIndex","collision","iconRight","marginRight","swipe","CalendarSwipeHandler","TouchStartHandler","resetCalendar","preventArgs","setAriaAttributes","targetExitViewport","direction","swipeDirection","touchStart","navigateNext","navigatePrevious","setAriaDisabled","yearHeading","h2","daySpan","monthSpan","textContent","modelCloseIcon","modelCloseHandler","modelTodayButton","insertBefore","valueOf","navigatedEvent","navigatedArgs","selectCalendar","requiredModules","modules","args","member","prevent_1","outOfRange","mobilePopupWrapper","popup","appendTo","eventArgs","refreshPosition","openAnimation","setOverlayIndex","tableBodyElement","dlgOverlay","prevent_2","closeEventCallback","prevent","keyboardModule","outerHTML","focusIn","triggerEvent","view","removeAttributes","inputElementCopy","ensureInputAttribute","ngTag","insertAdjacentElement","attributes","cloneNode","validationAttribute","getDefaultKeyConfig","checkHtmlAttributes","hasAttribute","altUpArrow","altDownArrow","escape","enter","controlUp","controlDown","moveDown","moveUp","moveLeft","moveRight","select","home","pageUp","pageDown","shiftPageUp","shiftPageDown","controlHome","controlEnd","shiftTab","tab","nameAttribute","attribute","attr","checkFormat","skeletonString","dynamic","checkView","attributes_1","valueCopy","previousValCopy","renderDayCell","inputVal","dateIdString","isDisabledDate","setMilliseconds","setPlaceholder","setReadonly","setEnabled","setLocale","setEnableRtl","setClearButton","removeFloating","addFloating","day","month","year","hour","minute","second","dayOfTheWeek","modelProps","testProp","props","watch","emitProbs","modelProps_1","props_1","NumericTextBoxComponent","mixins","emits","provide","custom","data","ej2Instances","propKeys","models","hasChildDirective","hasInjectedModules","tagMapper","tagNameMapper","isVue3","templateCollection","created","_trigger","bindProperties","_setProperties","updated","h","slots","$slots","default","methods","templateNames","templateNames_1","tempName","elementCollection","elementCollection_1","ele","__vue__","$destroy","muteOnChange","referModels","vueInstance","$emit","eventProp","successHandler","requestType","propKey","$props","isLazyUpdate","decrement","step","getText","increment","NumericTextBoxPlugin","install","Vue","component","ForeignKey","parent","serviceLocator","isDestroyed","on","initForeignKeyColumns","getForeignKeyData","generateQueryFormData","columns","dataSource","eventfPromise","query","column","state","getStateEventArgument","def","deff","dataModule","getDataModule","foreignKeyDataState","isDataChanged","setForeignKeyDataState","isPending","resolver","resolve","promise","then","setColumnData","setForeignKeyData","foreignColumns","getForeignKeyColumns","allPromise","_loop_1","isComplex","this_1","genarateColumnQuery","genarateQuery","result","params","ready","offline","executeQuery","Promise","all","responses","columnData","editType","edit","fields","foreignKeyField","field","text","foreignKeyValue","catch","log","reject","predicate","fromData","needQuery","gObj","predicates","allowPaging","enableVirtualization","allowGrouping","groupSettings","records","executeLocal","filteredValue","distinct","getDay","operator","matchCase","where","or","queryColumn","isFiltered","isTrue","filterQuery","searchSettings","sSettings","adaptor","searchQuery","search","ignoreCase","filterColumn","filterSettings","filter","fColumn","uid","destroyEvent","off","TextBoxComponent","addIcon","icons","TextBoxPlugin","DatePickerComponent","addDate","dates","createContent","removeDate","DatePickerPlugin","RadioButtonComponent","click","getSelectedValue","RadioButtonPlugin","Data","dataState","group","initDataManager","addRows","reorderRows","removeRows","crudActions","getData","refreshFilteredCols","dataManager","json","toIndex","fromIndex","isQueryInvokedFromData","isVue","generateQuery","skipPage","isAutoCompleteCall","getQuery","clone","columnQueryMode","getColumns","isPrimaryKey","visible","selectQueryFields","aggregateQuery","sortQuery","virtualGroupPageQuery","pageQuery","groupQuery","rows","aggregates","row","j","cols","types","k","aggregate","fName","queries","enableInfiniteScrolling","pageSettings","currentPage","pageCount","pageSize","infiniteScrollModule","page","pagerModule","pagerObj","isAllPage","isManualRefresh","enableLazyLoading","lazyLoad","getColumnByField","columnName","isGrpFmt","enableGroupByFormat","formatGroupColumn","allowSorting","sortSettings","sortGrp","col","setSortDirection","fn","sortComparer","isRemote","isForeignColumn","sortByForeignKey","sortBy","getSortDirection","fcolumn","isForeignKey","getSearchColumnFieldNames","predicateList","needForeignKeySearch","some","fGeneratePredicate","ignoreAccent","predList","skipFoerign","foreignColEmpty","actualFilter","foreignColumn","allowFiltering","colType","foreignCols","defaultFltrCols","columns_1","gridColumn","getColumnByUid","grabColumnByFieldFromAllCols","excelPredicate","getPredicate","_c","_d","_e","foreignCols_1","column_1","grabColumnByUidFromAllCols","_f","_g","and","fPredicate","getKey","foreignKeyData","getPrimaryKeyFieldNames","eventPromise","crud","fromTable","changes","addedRecords","deletedRecords","changedRecords","saveChanges","requiresCount","insert","isArray","deferred_1","getFormatter","formatVal","toView","pr","update","previousData","original","endEdit","setState","url","getState","getForeignKeyDataState","adaptr","dm","processQuery","JSON","parse","pvtData","dataArgs","disablePageWiseAggregates","editArgs_1","cancelEdit","colFieldNames","columns_2","allowSearching","OTHERMONTH","OTHERDECADE","HEADER","CONTENTTABLE","YEAR","MONTH","DECADE","PREVICON","NEXTICON","PREVSPAN","NEXTSPAN","ICONCONTAINER","DISABLED","OVERLAY","WEEKEND","WEEKNUMBER","FOCUSEDCELL","OTHERMONTHROW","TODAY","TITLE","LINK","CELL","WEEKHEADER","ZOOMIN","FOOTER","BTN","FLAT","CSS","PRIMARY","DAYHEADERLONG","dayMilliSeconds","minutesMilliSeconds","CalendarBase","isDateSelected","isTodayClicked","previousDates","rangeValidation","calendarEleCopy","setSeconds","firstDayOfWeek","getFirstDayOfWeek","todayDisabled","todayDate","createHeader","spacebar","altRightArrow","altLeftArrow","popupElement","ariaPrevAttrs","ariaNextAttrs","ariaTitleAttrs","tabIndexAttr","headerElement","iconContainer","previousIcon","selector","isCenterRipple","nextIcon","adjustLongHeaderSize","contentElement","table","createContentHeader","createContentBody","showTodayButton","createContentFooter","addContentFocus","removeContentFocus","focusedDate","selectedDate","getCultureValues","cldrObj","culShortNames","dayFormat","dayHeaderFormat","getCultureObjects","obj","toCapitalize","toUpperCase","daysCount","html","tableHeadElement","weekNumber","shortNames","shiftArray","days","renderYears","renderDecades","renderMonths","updateFooter","todayElement","l10","minimum","maximum","today","footer","todayButtonClick","ref","keyConfig","navigateTitle","dateWireEvents","serverModuleName","isCustomDate","getViewNumber","renderDayCellArgs","multiSelection","depthValue","levelRestrict","keyboardNavigate","selectDate","contentClick","title","firstDay","lastDay","addMonths","addYears","number","isMonthYearRange","addDay","isMinMaxRange","navigatePreviousHandler","navigateNextHandler","navigateHandler","triggerNavigate","minMaxDate","localDate","minDate","maxDate","tdEles","numCells","renderDays","islamicModule","islamicRenderDays","renderTemplate","islamicRenderTemplate","values","isTodayDate","cellsCount","getDate","timezone","currentMonth","getMonth","titleUpdate","setStartDate","weekEle","weekAnchor","numberOfDays","weekRule","finalDate","getWeek","dateFormatOptions","tdEle","dayCell","dayLink","isDisabled","isOutOfRange","argument","renderDayCellEvent","argsDate","localDateString","tempDateString","otherMnthBool","disabledCls","clickHandler","getDateVal","tempValue","innerText","copyValues","type_1","formatOptions_1","localDateString_1","tempDateString_1","updateFocus","otherMonth","tableElement","removeTableHeadElement","valueUtil","curDate","mon","yr","curYrs","minYr","minMonth","maxYr","maxMonth","setMonth","setDate","localMonth","yearCell","localYr","startYr","endYr","startFullYr","endFullYr","startHdrYr","endHdrYr","startYear","rowIterator","collection","lastDate","timeOffset","abs","findLastDay","elements","count","classNm","trEle","weekNumCell","numberCell","otherMonthCell","iconHandler","islamicIconHandler","setAriaActiveDescendant","clickEventEmitter","eve","getIdValue","islamicPreviousHeader","islamicDate","getIslamicDate","toGregorian","switchView","keyEntity","validateValues","skipIndex","tempValueString","minFormatOption","minStringValue","minString","maxFormatOption","maxStringValue","maxString","setValueUpdate","dayFormatOptions","monthFormatOptions","focusedEle","selectedEle","previousIconHandler","compareMonth","nextIconHandler","compareYear","compareDecade","todayButtonEvent","stringVal","previous","islamicPrevious","next","islamicNext","ld","gregorianFormat","islamicFormat","mainVal","ceil","time","tzOffset","tzOffsetDiff","setTime","getMaxDays","node","setDateDecade","setDateYear","checkPresentDate","tempElement","selectedElement","previousValue","checkPrevious","compare","startDate","endDate","modifier","array","concat","findNextTD","rangeValue","tmpDate","inValue","toUTCString","toLocaleString","timeZone","Calendar","isMultiSelection","tempValues","limit","copyDate","previousValues","setEnable","setClass","form","formResetHandler","enable","setMinutes","changeHandler","triggerChange","isMultiSelect","tempDays","islamicRenderYears","islamicRenderDecade","storeView","tempDate","tempDates","setTodayDate","Number","NaN","rowCell","gridHeader","gridContent","gridFooter","headerContent","movableContent","movableHeader","frozenContent","frozenHeader","gridChkBox","editedRow","addedRow","leftRight","frozenRight","frozenLeft","dataColIndex","ariaColIndex","dataRowIndex","ariaRowIndex","tbody","colGroup","change","beforeOpen","initialFrozenColumnIndex","LABEL","RIPPLE","WRAPPER","ATTRIBUTES","RadioButton","RadioButton_1","checked","updateChange","input","instance","radioGrp","getRadioGroup","angularValue","radioWrap","wrapper","unWireEvents","parentNode","forEach","refreshing","focusHandler","focusOutHandler","label","getLabel","getWrapper","nextElementSibling","initialCheckedValue","initWrapper","updateHtmlAttribute","setDisabled","rippleSpan","for","setText","keyUpHandler","labelMouseDownHandler","labelMouseLeaveHandler","rippleElem","removeChild","childNodes","labelMouseUpHandler","wrap","labelPosition","formControlName","textLabel","rippleLabel","getElementsByTagName","Column","disableHtmlEncode","allowResizing","allowReordering","showColumnMenu","allowEditing","showInColumnChooser","autoFit","sortDirection","getEditTemplate","editTemplateFn","getFilterTemplate","filterTemplateFn","valueFormatter","setFormatter","getFormatFunction","setParser","getParserFunction","toJSON","skip","commands","textAlign","template","commandsTemplate","templateFn","headerTemplate","headerTemplateFn","itemTemplate","fltrTemplateFn","editTemplate","filterTemplate","ddEditedData","a_1","xObj","yObj","z","fnDescending","fnAscending","getFreezeTableName","freezeTable","refreshReactColumnTemplateByUid","refreshReactHeaderTemplateByUid","formatFn","getParser","parserFn","getColumnTemplate","getHeaderTemplate","getFilterItemTemplate","getDomSetter","GridColumn","CommandColumnModel","StackedColumn","Scroll","oneTimeReady","widthService","addEventListener","uiupdate","setWidthToColumns","toolbarModule","toolbar","tlbrElement","tlbrLeftElement","tlbrCenterElement","tlbrRightElement","tlbrItems","tlbrLeftWidth","tlbrCenterWidth","tlbrRightWidth","tlbrItemsWidth","tlbrWidth","enableAdaptiveUI","refreshOverflow","setHeight","mHdrHeight","getContent","enableColumnVirtualization","isFrozenGrid","getScrollBarWidth","frozenRows","getHeaderContent","height_1","getRowHeight","isInitialLoad","loadingIndicator","indicatorType","ensureOverflow","setPadding","scrollWidth","getThreshold","cssProps","getCssProperties","border","padding","removePadding","rtl","hDiv","footerDiv","getFooterContent","getSiblingsHeight","appName","info","setScrollLeft","removeEventListener","header","setPageXY","onTouchScroll","mScrollBar","onCustomScrollbarScroll","userAgent","contentScrollHandler","headerScrollHandler","firstChild","onContentScroll","scrollTarget","isHeader","isPreventScrollEvent","errorFreeze","errorFixed","getVisibleFrozenLeftCount","widthVal","getVisibleFrozenRightCount","isEdit","isLeft","isDown","scrollDown","isFooter","cont","hdr","pointerType","isFrozen","pageXY","getPointXY","mHdr","mCont","scrollBar","getScrollbleParent","scrollingElement","overflowY","defaultView","scrollHeight","addStickyListener","isAdd","eventElement","makeStickyHeader","resizeFrozenRowBorder","div","frzCols","enableStickyHeader","sLeft","sHeight","getContentTable","setLastRowCell","css","contentRect","getClientRects","headerEle","toolbarEle","groupHeaderEle","parentTop","top_1","colMenuEle","bottom","elemTop","showDropArea","setSticky","ccDlg","topStyle","gridElement","SummaryModelGenerator","footerTemplate","groupFooterTemplate","groupCaptionTemplate","columnSelector","detailTemplate","childGrid","isRowDragable","generateRows","buildSummaryData","getGeneratedRow","level","parentUid","summaryRow","raw","tmp","indents","getIndentByLevel","isDetailGridAlone","indentLength","getIndentCount","allowRowDragAndDrop","getGeneratedCell","getCellType","DetailFooterIntent","Indent","class","cells","isAggregateRow","cell","isDataCell","cellType","indent","sColumn","scolumn","opt","headerText","dummy","summaryRows","single","setTemplate","helper","a","disp","Summary","GroupSummaryModelGenerator","v","indx","GroupSummary","CaptionSummaryModelGenerator","initVal","reduce","prev","cur","isEmpty","CaptionSummary","ButtonsDirective","inject","getTag","ButtonsPlugin","DialogButtonDirective","DialogButtonPlugin","DialogComponent","getButtons","getDimension","sanitizeHelper","isFullScreen","DialogPlugin","AriaService","setOptions","setStateAndProperties","config","setExpand","expand","setSort","sort","setBusy","isBusy","busy","setGrabbed","isGrabbed","grabbed","setDropTarget","isTarget","dropeffect","datarole","selected","multiselectable","haspopup","colcount","rowcount","CLS_VERTICAL","CLS_ITEMS","CLS_ITEM","CLS_RTL","CLS_SEPARATOR","CLS_POPUPICON","CLS_POPUPDOWN","CLS_POPUPOPEN","CLS_TEMPLATE","CLS_DISABLE","CLS_POPUPTEXT","CLS_TBARTEXT","CLS_TBAROVERFLOW","CLS_POPOVERFLOW","CLS_TBARBTN","CLS_TBARNAV","CLS_TBARSCRLNAV","CLS_TBARRIGHT","CLS_TBARLEFT","CLS_TBARCENTER","CLS_TBARPOS","CLS_HSCROLLCNT","CLS_VSCROLLCNT","CLS_HSCROLLBAR","CLS_POPUPNAV","CLS_POPUPCLASS","CLS_POPUP","CLS_TBARBTNTEXT","CLS_TBARNAVACT","CLS_TBARIGNORE","CLS_POPPRI","CLS_HIDDEN","CLS_MULTIROW","CLS_MULTIROWPOS","CLS_MULTIROW_SEPARATOR","CLS_EXTENDABLE_SEPARATOR","CLS_EXTEANDABLE_TOOLBAR","CLS_EXTENDABLECLASS","CLS_EXTENDPOPUP","CLS_EXTENDEDPOPOPEN","Item","Toolbar","resizeContext","resize","orientationChangeContext","orientationChange","popupOpen","popupClose","btnItems","el","ej2_instances","tempId","destroyItems","lastElementChild","trgtEle","ctrlTem","popObj","activeEle","tbarAlign","tbarItemsCol","attrb","enableCollision","scrollStep","scrollModule","items","isVertical","isExtendedOpen","popupPriCount","allowKeyboard","wireKeyboardEvent","keyModule","keyActionHandler","docKeyDown","updateTabIndex","dataTabIndex","unwireKeyboardEvent","popCheck","overflowMode","keyCheck","destroyScroll","docEvent","clearProperty","tbarEle","tbarAlgEle","lefts","centers","rights","popEle","tbarItems","destroyMode","tempEle","popupRefresh","elementFocus","fChild","activeEleSwitch","clstElement","tbrNavChk","trgt","clst","keyHandling","navChk","scrollChk","nodes","rootEle","popAnimate","eleFocus","popupCheck","extendedPopup","focusFirstVisibleEle","focusLastVisibleEle","popFrstEle","ele_1","activeEleRemove","tbarScrollChk","disable","eleContains","sib","skipEle","elem","tbrItems","itemObj","isPopupElement","clsList","popupNav","popupClickHandler","tempItem","item","clickedArgs","getElementOffsetY","minHeight","renderControl","portals","ariaAttr","renderItems","renderLayout","renderOverflowMode","itemPositioning","childElementCount","checkPopupRefresh","separator","itemsAlign","itemEleDom","innerItem","innerPos","renderSubComponent","tbarItemAlign","align","showAlwaysInPopup","overflow","changeOrientation","initScroll","innerItems","checkOverflow","scrollEle","itemWidthCal","marginTop","marginBottom","marginLeft","getScrollCntEle","trgClass","eleWidth","itemWidth","popNav","scrollNav","navEleWidth","toolbarAlign","priorityCheck","offsetWid","removePositioning","setOverflowAttributes","createPopupEle","eleItem","multiVar","extendVar","eleInlineItem","innerEle","innerNav","createPopupIcon","innerNavDom","checkPriority","removeProperty","createPopup","pushingPoppedEle","tbarObj","popupPri","eleHeight","sepHeight","poppedEle","nodeIndex","nodePri","tbResize","tbarElement","sepItem","extendEle","popupEle","popupInit","maxHeight","eleStyles","borderRightWidth","visibility","tbarPopupHandler","isOpen","toolEle","popupElePos","popIcon","scrollVal","scrollY","innerHeight","overflowHeight","tbEleData","popupOffset","right","documentElement","inEle","pre","checkoffset","popPriority","eleWid","sepCheck","itemCount","itemPopCount","checkClass","rVal","cls","mrgn","compuStyle","fstEleCheck","tbarEleMrgn","eleWid_1","minWidth","sepEle","popedEle","nav","navItem","tbarPriRef","sepPri","des","elWid","wid","ig","ignoreCount","priEleCnt","eleSep","ignoreCheck","eleSepWidth","prevSep","previousElementSibling","isVer","dimension","popupEleWidth","popupEleRefresh","ignoreEleFetch","ignoreEle","ignoreInx","tbarWidth","tbarItemsWid","elWidth","btnText","btn","eleSplice","inlineStyles","sepBeforePri_1","state_1","refreshPositioning","margin","tbarWid","popWid","itemEle","alignDiv","alignEle","leftAlign_1","ctrlTemplate","setAttr","keyVal","enableItems","isEnable","itemElement","getElementByIndex","addItems","extendedOpen","itemsDiv","itemsRerender","itemAgn","items_1","algIndex","removeItems","removeItemByIndex","eleIdx","indexAgn","clearToolbarTemplate","btnItem","templateRender","templateProp","isComponent","itemType","eleObj","regEx","RegExp","tempStr","tempArray","toolbarTemplateID","isStringTemplate","getDataTabindex","buttonRendering","dom","iconCss","iconPos","textStr","btnTxt","prefixIcon","suffixIcon","btnObj","iconPosition","tempDom","tooltipText","itemClick","showTextOn","sTxt","curEle","multirowele","updateHideEleTabIndex","isElement","eleIndex","nextEle","templateEle","registeredTemplate","registeredTemplates","registeredItem","rootNodes","closestItem","portalItem","containerInfo","tEle","changedProb","property","newProperty","popupPriCheck","booleanCheck","itemCol","hideItem","innerItems_1","CLS_ROOT","CLS_HSCROLLCON","CLS_NAVARROW","CLS_NAVRIGHTARROW","CLS_NAVLEFTARROW","CLS_HSCROLLNAV","CLS_HSCROLLNAVRIGHT","CLS_HSCROLLNAVLEFT","CLS_DEVICE","CLS_OVERLAY","CLS_RIGHTOVERLAY","CLS_LEFTOVERLAY","OVERLAY_MAXWID","HScroll","browser","browserCheck","customStep","ieCheck","uniqueId","scroll","touchHandler","swipeHandler","createOverlay","createNavIcon","setScrollState","scrollDiv","innerEle_1","overflowX","scrollItems","overlay","navEles","rightOverlayEle","clsRight","rightEle","leftEle","eventBinding","rightAttributes","clsLeft","leftAttributes","navEle","navLeftItem","onKeyPress","timeoutFun_1","keyTimeout","eleScrolling","keyTimer","onKeyUp","tabHoldHandler","repeatScroll","clickEventHandler","clearInterval","timeout","scrollDis","timeoutFun","setInterval","isContinuous","frameScrollRequest","distance","swipeEle","velocity","distanceX","animate","sin","cancelAnimationFrame","requestAnimationFrame","scrollUpdating","scrollValue","scrollDirection","arrowDisabling","addDisable","removeDisable","arrowIcon","navLeftEle","navRightEle","leftOverlay","rightOverlay","disEle","addDays","getTradePeriodName","Error","yearSuffix","ToString","Substring","numOfDays","getDateDiffInDays","tradeablePeriod","getQuarter","getBusinessDatesCount","dayOfWeek","floor","RMErrorType","_classCallCheck","_createClass","_RMErrorType","_defineProperty","getRandomValues","_vm","_h","$createElement","_self","staticClass","_v","_s","_m","staticStyle","nativeOn","$event","tradeClientTradingGroupChanged","clients","simpleDropdownFields","onClientChange","clientsEnabled","isEditing","callback","$$v","selectedClientId","expression","tradingGroups","tradingGroupsEnabled","onTradingGroupChange","selectedTradingGroupId","states","statesEnabled","onStateChange","actionCompleteDropState","selectedStateId","utilities","utilitiesEnabled","onUtilityChange","selectedUtilityTypeId","companies","companiesEnabled","onCompanyChange","selectedCompanyId","contracts","contractsEnabled","onContractChange","selectedContractId","directives","rawName","showTradeSection","products","onProductChange","selectedProductId","priceAreas","onPriceAreaChange","selectedPriceAreaId","tradePeriods","onTradablePeriodChange","tradePeriodsEnabled","selectedTradeablePeriodId","showTradeSubSection","dateFormat","$set","tradeEntityTypeChanged","showComplex","numericVolumeFocus","numericn2Blur","setCalculatedLockedVolume","lockVolumeNtbEnabled","contractTradingUnit","numericPriceFocus","numericn3Blur","setTradedValue","priceUnit","calculatedLockedVolume","tradingUnitName","tradedValue","tradeCurrency","splitPeriodInto","onSplitPeriodIntoChange","onLockedVolumeChange","numericn2BlurComplex","cgTrades","actionBegin","editSettings","numericParams","cgPriceValidationRules","customSumFn","footerSum","customAggregateFn","footerAverage","tradedbyEnabled","onTradeDateChange","maxTradeDate","tradeDateEnabled","isHypothetical","path","browse","addHeaders","onUploadSuccess","tradeFilesItmes","onDownloadTradeFileClick","onRemoveTradeFileClick","btnSaveClickTrade","btnBackClick","staticRenderFns","rnds8","Uint8Array","rng","crypto","msCrypto","validate","uuid","byteToHex","substr","stringify","arr","offset","TypeError","v4","buf","rnds","random","getCloneProperties","Print","isAsyncPrint","defered","isContentReady","actionBeginFunction","onEmpty","hierarchyPrint","isPrintGrid","hierarchyPrintMode","contentReady","removeColGroup","printGridObj","printModule","print","renderPrintGrid","printGrid","getFrozenColumns","freeze","load","isPrinting","getInjectedModules","injectedModues","setInjectedModules","printgrid","selectedRows","contentDiv","headerDiv","waitingPop","printGridElement","printWind","outerHeight","outerWidth","moveTo","resizeTo","screen","availWidth","availHeight","groupCaption","colSpan","colGroups","contentColGroups","footerColGroups","hideColGroup","printGridProp","WRAPPERCLASS","POPUPDIMENSION","DAY","HOVER","NAVIGATION","ICONANIMATION","FOCUS","LISTCLASS","HALFPOSITION","ANIMATIONDURATION","OFFSETVAL","EDITABLE","wrapperAttributes","TimePickerBase","createListItems","createdEl","timeFormat","interval","listItems","timeCollections","listTag","createList","list","TimeMaskPlaceholder","TimePicker","liCollections","disableItemCollection","timeOptions","keyConfigure","down","up","cloneElement","angularTag","openPopupEventArgs","createInputElement","setTimeAllowEdit","validateInterval","validateDisable","getFormattedValue","checkErrorState","anchor","inputEleValue","getDateObject","clearIconState","setMinMax","initMin","initMax","popupCreation","valueIsDisable","resetState","initValue","defaultCulture","checkTimeFormat","checkInValue","scrollTo","checkAttributes","localeText","isNavigate","isPreventBlur","isTextSelected","activeIndex","valueWithMinutes","prevDate","updatedCssClassesValue","isNullOrEmpty","inputStyle","getCldrDateTimeFormat","cldrTime","cldrFormat","isInvalid","valueExpression","valueExp","setCurrentDate","cldrDateTimeString","getCultureTimeObject","ariaAttribute","enableElement","rippleFn","propertyList","generateList","listWrapper","addSelection","getPopupHeight","popupHeight","wireListEvents","rippleModel","containerStyle","setPopupWidth","unWireListEvents","modelTitleSpan","timePopupCloseHandler","createDateObj","updatedClassesValue","timeStyle","cssClassNew","cssClassOld","removeErrorClass","validateState","disableTimeIcon","disableElement","selectInputText","setSelectionRange","setCursorToEnd","getMeridianText","meridian","getCursorSelection","getActiveElement","inputWidth","setScrollPosition","setScrollTo","findScrollTop","listHeight","liHeight","initialTime","scrollTime","getValue","cldrTimeFormat","cldrDateFormat","cldrDate","getCultureDateObject","dateToNumeric","getExactDateTime","validateMinMax","compareFormatChange","updatePlaceHolder","popupHandler","isPopupOpen","closePopup","mouseDownHandler","curPos","cursorDetails","focusSelection","regex","isSeparator","keyHandler","updateValue","objToString","createMask","previousState","onMouseClick","li","setSelection","animModel","documentClickHandler","mobileTimePopupWrap","disposeServerPopup","checkValueChange","isNavigation","valueProcess","prevValue","onMouseOver","currentLi","setHover","isValidLI","removeHover","onMouseLeave","minVal","maxVal","dateVal","strictOperation","maxValue","minValue","inputEventHandler","clearHandler","inputEvent","timeValue","raiseClearedEvent","setZIndex","getTextFormat","strArray","removeSelection","validateValue","newval","value_1","findNextElement","textVal","timeVal","collections","selectNextItem","validLiElement","elementValue","backward","elementIndex","isCheck","nextItem","isUpdate","hoveredItem","getHoverItem","setActiveClass","formatStr","timeParse","listBaseOptions","itemCreated","isIE","getProperty","popupAlignment","timePopupElement","formatValues","DATEPICKERROOT","DATETIMEWRAPPER","HOUR","MINUTE","SECOND","MILLISECOND","DATETIMEPOPUPWRAPPER","DateTimePicker","scrollInvoked","formatRegex","dateFormatString","dateTimeOptions","blurHandler","isTimePopupOpen","popupObject","dateTimeWrapper","keyboardHandler","unBindInputEvents","timeIcon","timekeyConfigure","cldrDateTimeFormat","bindInputEvents","validateMinMaxRange","isDateObject","disablePopupButton","checkValidState","isValidState","isDisable","renderTimeIcon","appendSpan","timeHandler","dateHandler","inputKeyAction","getCldrFormat","cldrDateTime","isDatePopupOpen","toggle","listCreation","dateObject","TimePopupFormat","startTime","endTime","listDetails","wireTimeListEvents","addTimeSelection","setTimeScrollPosition","openPopup","timeModal","timeKeyActionHandle","unWireTimeListEvents","modelWrapper","dateTimeCloseHandler","timeContent","setDimension","setTimeHover","removeTimeHover","setInputValue","nextElement","lineHeight","listContent","getFullDateTime","tempVal","combineDateTime","minutes","seconds","setTimeActiveClass","setTimeActiveDescendant","removeTimeSelection","getTimeHoverItem","calculateStartEnd","range","method","hours","milliseconds","tempStartValue","tempMin","formatCount","proxy","formatValueSpecifier","formattext","tempEndValue","tempMax","getUTCFullYear","dateTimeCloseEventCallback","maskedDateModule","getTimeActiveElement","status_1","millisecond","findNextTimeElement","dateTimeVal","listCount","timeElementValue","setTimeValue","timeKeyHandler","nextItemValue","getModel","upDownKeyHandler","ul","defaultIdx","liIdx","selectedLi","setBlankIconStyle","blankIcon","blankIconList","menuItem","paddingLeft","paddingRight","iconLi","cssProp","icon","size","fontSize","ValueFormatter","cultureName","intl","getDateFormat","getNumberFormat","getDateParser","getNumberParser","fromView","setCulture","RowRenderer","isSpan","rowTemplate","refreshRow","isChanged","refreshMergeCells","tr","tempCells","cells_1","rowArgs","cellArgs","chekBoxEnable","selIndex","getSelectedRowIndexes","isDataRow","isSelected","isCheckBoxSelection","checkAllRows","buildAttributeFromRow","cellRendererFact","getService","_loop_2","isColumnSelected","cellRenderer","getCellRenderer","isExpand","DetailExpand","td","Filter","CommandColumn","isReactChild","parentDetails","parentInstObj","requireTemplateRef","isTemplate","thisRef_1","renderTemplates","rowSpan","requestTypeAction","isRowSpanned","rowsObject","getRowsObject","prevRowCells","uid_1","prevRowCell","rowSpanRange","cellSpan","cellMerge","isSpanned","emptyColspan","getFrozenLeftColumnsCount","freezeCells","oldColspan","colspan","tabindex","rowHeight","eventArg_1","isSelectable","cellTemplate","thisRef_2","disableRowSelection","isDraggable","selectionSettings","persistSelection","primaryKey_1","pKey_1","SelectedRecords","partialSelectedRecords","disableSelectedRecords","lazyLoadCssClass","rowRenderingMode","allowTextWrap","textWrapSettings","wrapMode","vFTable","summarycell","lastSummaryCell","firstSummaryCell","thisRef","eventArg","selectionModule","isPartialSelection","selRowIndex","chkBox","isDrag","cellIdx","isDetail","classes","isAltRow","isCaptionRow","rowindex","dataUID","ariaSelected","RowModelGenerator","startIndex","getInfiniteIndex","enableImmutableMode","generateRow","ensureColumns","generateCell","RowDragIcon","pid","tIndex","parentGid","expandedRows","enableAltRow","refreshForeignKeyRow","getFrozenMode","generateCells","foreignKeyColumns","dummies","rowId","oIndex","refreshRows","CellType","RenderType","ToolbarItem","ResponsiveDialogAction","ResponsiveToolbarAction","CLS_VSCROLLBAR","CLS_VSCROLLCON","CLS_NAVUPARROW","CLS_NAVDOWNARROW","CLS_VSCROLLNAV","CLS_VSCROLLNAVUP","CLS_VSCROLLNAVDOWN","CLS_UPOVERLAY","CLS_DOWNOVERLAY","VScroll","scrollEventHandler","createOverlayElement","wheelEventHandler","scrollCnt","navs","overlays","downOverlayEle","clsDown","downEle","upEle","clsUp","navElement","navUpItem","ev","scrollDistance","deltaY","swipeElement","distanceY","addDisableCls","removeDisableCls","navUpEle","navDownEle","upOverlay","downOverlay","ErrorOption","EMAIL","URL","DATE_ISO","DIGITS","PHONE","CREDITCARD","FormValidator","validated","errorRules","allowSubmit","required","infoElement","selectQuery","localyMessage","defaultMessages","email","dateIso","creditcard","digits","maxLength","minLength","rangeLength","tel","equalTo","rules","localeFunc","afterLocalization","inputElements","createHTML5Rules","FormValidator_1","addRules","removeRules","validateRules","rules_1","name_1","reset","clearForm","getInputElement","validClass","elements_1","elements_2","inputParent","grandParent","getErrorElement","hideMessage","defRules","acceptedTypes","allRule","defRules_1","rule","defRule","annotationRule","ruleCon","ruleName","rulesList","ruleFirstName","ruleSecondName","minvalue","maxvalue","customMessage","message","annotationMessage","getErrorMessage","isCheckable","submitHandler","clearEvents","excludeKeys","which","hiddenType","validateHiddenType","vhPos","hPos","rules_2","errorMessage","errorRule","inputName","isValid","ignore","removeErrorRules","showMessage","createErrorElement","errorElement","status","optionalValidationStatus","refer","param","currentRule","checkValidator","ruleValue","formats","errorOption","Message","errorContainer","containerId","divElement","customPlacement","nextSibling","checkRequired","inputType","option","uNum","compareTo","Label","ButtonComponent","ButtonPlugin","HeaderRender","frzIdx","notfrzIdx","isFirstCol","isReplaceDragEle","draggable","currentStateTarget","parentEle","visualElement","headercelldiv","getStackedHeaderColumnByHeaderText","lockColumn","colIndex","getColumnIndexByField","isReactCompiler","nodeType","pointerEvents","dragStart","drag","dragStop","drop","droppedElement","ariaService","setVisible","colPosRefresh","renderCustomToolbar","updateCustomResponsiveToolbar","renderPanel","isRendered","innerDiv","toggleStackClass","setPanel","renderTable","getPanel","createHeaderTable","setTable","initializeHeaderDrag","initializeHeaderDrop","headerPanel","panel","getTable","headerTable","getColGroup","colgroup","setColGroup","getRows","tHead","createTable","tableEle","tableName","cellspacing","findHeaderRow","createHeaderContent","thead","caption","bodyCell","rowBody","len_1","updateColGroup","colHeader","rowRenderer","Header","headerRow","colDepth","getHeaderCells","RowDragHIcon","indexes","getColumnIndexesInView","len_2","HeaderIndent","DetailHeader","getHeaderTable","enablePersistence","lockcolPositionCount","lockColsRendered","appendCells","isFirstObj","isLastCol","isMovable","isStackLastCol","lastCol","isLockColumn","getCellCnt","stackedLockColsCount","getStackedLockColsCount","isStackedLockColumn","StackedHeader","getColSpan","isFirstCol_1","isLaststackedCol","getColumnIndexByUid","frozenColumns","lockColsCount","rowIndex","displayVal","idx","clen","getNormalizedColumnIndex","refreshUI","freezeReorder","appendContent","updateDefaultCursor","rows_1","gCells","isXaxis","firstHeaderCell","stackedHdr","cnt","dragTarget","abort","droppableDestroy","droppable","accept","toolbarItems","toolbarLeft","toolbarItem","button","span","onclick","showResponsiveCustomSort","showResponsiveCustomFilter","resToolbar","HeaderCellRenderer","hTxtEle","sortEle","gui","chkAllBox","localizer","getGui","fltrMenuEle","prepareHeader","clean","hValueAccer","elementDesc","innerDIV","headerValueAccessor","checkAllWrap","buildAttributeFromCell","appendHtml","matchFlColumns","customAttributes","extendPrepareHeader","gridObj","headerTempID","str","isReactChild_1","copied","headerTextAlign","alignment","clipMode","titleElem","matchFilteredColumns","handler","innerHtml","StackedHeaderCellRenderer","toolTip","IndentCellRenderer","GroupCaptionCellRenderer","cellUid","fKeyValue","gTemplateValue","domSetter","valueAccessor","getVisibleColumns","gCaptionTemp","includes","tempObj","getTemplate","tempID","tempValue_1","captionTemplate","GroupCaptionEmptyCellRenderer","ExpandCellRenderer","infiniteScrollSettings","enableCache","href","HeaderIndentCellRenderer","DetailHeaderIndentCellRenderer","DetailExpandCellRenderer","RowDragDropRenderer","nodeElement","RowDragDropHeaderRenderer","Render","locator","emptyGrid","counter","renderer","headerRenderer","getRenderer","contentRenderer","Content","isLayoutRendered","emptyRow","refreshDataManager","filterModule","filterObjIndex","prevFilterObject","iconClass","flIcon","checkboxPrevFilterObject","Columns","headerCell","getColumnHeaderByField","allowSelection","searchString","pageSizes","checkAll","dataLength","totalRecordsCount","currentViewData","getCurrentViewRecords","prevPageMoving","lazyLoadRender","contentModule","getGroupCache","refreshContentRows","resetTemplates","gridColumns","detailTemplateID","toolbarTemplate","guid","refreshComplete","maskRow","enableVirtualMaskRow","isCaptionCollapse","showSpinner","showMaskRow","virtualInfo","sentinelInfo","axis","isFActon","isNeedForeignAction","deffered","getFData","deffered_1","validateGroupRecords","dataManagerSuccess","dataManagerFailure","deferred","foreignKey","fbool","sendBulkRequest","dmSuccess","dmFailure","renderEmptyRow","isTrigger","spanCount","rowDropSettings","targetID","emptyRecordTemplate","emptyRecordTemplateID","getEmptyRecordTemplate","renderEmpty","dynamicColumnChange","updateColumnType","record","cFormat","fmtr","validationRules","isColTypeDef","actionArgs","isInfiniteDelete","isInfiniteEnd","prevCurrentView","totalDataRecordsCount","removeMaskRow","updatesOnInitialRender","destroyTemplate","agg","immutableModeRendering","alert","setRowElements","setRowObjects","preventAdjustColumns","hideSpinner","setRowCount","error","focusModule","setFirstFocusableTabIndex","dataRowCount","isEmptyCol","buildColumns","isAutoGen","iterateComplexColumns","childKeys","complexCols","instantiateRenderer","addRenderer","cellrender","addCellRenderer","GroupCaption","GroupCaptionEmpty","Expand","group0","groupN","addWhere","groups","curDm","curFilter","newQuery","rPredicate","updateGroupInfo","current","untouched","uGroup","itemGroup","uGroupItem","GroupGuid","l","context","data_1","temp","customAggregate","CellRendererFactory","cellRenderMap","ServiceLocator","services","register","registerAdaptiveService","isAdaptiveUI","responsiveDialogRenderer","RendererFactory","rendererMap","rName","PageSettings","ColumnChooserSettings","Search","arg1","refreshSearch","onSearchComplete","actionCompleteFunc","onActionComplete","cancelBeginEvent","ShowHide","colName","isShowHide","evtHandlers","batchChanges","resetColumnState","changedCol","showBy","getToggleFields","hideBy","finalized","getKeyBy","columnModel","batchActionPrevent","changedStateColumns","closeEdit","groupModule","visibleRows","showHideArgs","currentViewCols","emptyVcRows","getSelectedRecords","clearSelection","colsInCurrentView","col1","col2","isModeChg","AggregateColumn","setPropertiesSilent","AggregateRow","Clipboard","copyContent","isSelect","initialEnd","keyDownHandler","pasteHandler","grid","isMacLike","navigator","platform","selectedRowCellIndexes","getSelectedRowCellIndexes","metaKey","copy","ctrlKey","clipBoardTextArea","mode","cellSelectionMode","x_1","scrollX","y_1","paste","cellIndexes","isAvail","cIdx","rIdx","getRowByIndex","getCellFromIndex","getColumnByIndex","editModule","updateCell","selectCellsByRange","cellIndex","setCopyData","withHeader","getSelection","getDataRows","selectedIndexes","headerTextArray","getCopyData","leftCols","m","checkBoxSelection","headers","colIndexes","getColumnHeaderByIndex","rowIndexes","isCell","splitKey","colIdx","queryCommandSupported","execCommand","removeAllRanges","rowCellIndxes","SortDescriptor","SortSettings","Predicate","InfiniteScrollSettings","FilterSettings","SelectionSettings","SearchSettings","RowDropSettings","TextWrapSettings","ResizeSettings","GroupSettings","EditSettings","LoadingIndicator","Grid","_this_1","inViewIndexes","keyA","frozenRightCount","freezeColumnRefresh","rightcount","frozenLeftCount","leftcount","tablesCount","movableCount","movablecount","fixedcount","fixedCount","visibleFrozenLeft","visibleFrozenFixed","isPreparedFrozenColumns","visibleFrozenRight","visibleMovable","frozenLeftColumns","frozenRightColumns","movableColumns","fixedColumns","stackedLeft","stackedRight","stackedFixed","stackedMovable","stackedarrayLeft","stackedarrayRight","stackedarrayFixed","stackedarrayMovable","media","tableIndex","componentRefresh","isChangeDataSourceCall","mergedColumns","isVirtualAdaptive","vRows","vcRows","vGroupOffsets","rowUid","translateX","isAutoFitColumns","enableDeepCompare","islazyloadRequest","pageTemplateChange","isAutoGenerateColumns","mediaBindInstance","commandDelIndex","asyncTimeOut","isExportGrid","enableLogger","needsID","Grid_1","Inject","mergePersistGridData","ignoreOnPersist","selectedRowIndex","scrollPosition","currentObject","settings","assign","pagerTemplate","persistData","setFrozenCount","enableInfiniteAggrgate","allowExcelExport","allowPdfExport","sortedColumns","isCommandColumn","allowAdding","allowDeleting","extendRequiredModules","contextMenuItems","showColumnChooser","isForeignKeyEnabled","initProperties","initializeServices","isInitial","mediaCol","allowServerDataBinding","ignoreCollectionWatch","mergeCells","isPersistSelection","filterOperators","endsWith","equal","greaterThan","greaterThanOrEqual","lessThan","lessThanOrEqual","notEqual","startsWith","wildCard","isNull","notNull","like","defaultLocale","EmptyRecord","True","False","InvalidFilterMessage","GroupDropArea","UnGroup","UnGroupButton","GroupDisable","FilterbarTitle","EmptyDataSourceError","Add","Edit","Cancel","Update","Delete","Pdfexport","Excelexport","Wordexport","Csvexport","Columnchooser","Save","Items","EditOperationAlert","DeleteOperationAlert","SaveButton","OKButton","CancelButton","EditFormTitle","AddFormTitle","BatchSaveConfirm","BatchSaveLostChanges","ConfirmDelete","CancelEdit","ChooseColumns","ColumnMenu","SearchColumns","Matchs","FilterButton","ClearButton","StartsWith","NotStartsWith","Like","EndsWith","NotEndsWith","Contains","NotContains","IsNull","NotNull","IsEmpty","IsNotEmpty","Equal","NotEqual","LessThan","LessThanOrEqual","GreaterThan","GreaterThanOrEqual","ChooseDate","EnterValue","Copy","Group","Ungroup","GroupButton","UnGroupAria","GroupSeperator","UnGroupIcon","GroupedSortIcon","GroupedDrag","CheckBoxLabel","SelectAllCheckbox","SelectRow","autoFitAll","AutoFitAll","AutoFit","Export","FirstPage","LastPage","PreviousPage","NextPage","SortAscending","SortDescending","EditRecord","DeleteRecord","FilterMenu","SelectAll","AddCurrentSelection","Blanks","FilterTrue","FilterFalse","NoResult","ClearFilter","Clear","NumberFilter","TextFilter","DateFilter","DateTimeFilter","MatchCase","Between","CustomFilter","CustomFilterPlaceHolder","CustomFilterDatePlaceHolder","AND","OR","ShowRowsWhere","ToolbarMenuDialogARIA","FilterMenuDialogARIA","ExcelFilterDialogARIA","CheckBoxFilterDialogARIA","DialogEditARIA","ColumnMenuDialogARIA","CustomFilterDialogARIA","SortAtoZ","SortZtoA","SortByOldest","SortByNewest","SortSmallestToLargest","SortLargestToSmallest","Sort","FilterDescription","SortDescription","ColumnMenuDescription","GroupDescription","ColumnHeader","TemplateCell","CommandColumnAria","DialogEdit","ClipBoard","AscendingText","DescendingText","NoneText","Expanded","Collapsed","downArrow","upArrow","rightArrow","leftArrow","shiftDown","shiftUp","shiftRight","shiftLeft","ctrlHome","ctrlEnd","ctrlAltPageUp","ctrlAltPageDown","altPageUp","altPageDown","ctrlDownArrow","ctrlUpArrow","ctrlPlusA","ctrlPlusP","delete","f2","ctrlEnter","shiftEnter","space","ctrlPlusC","ctrlShiftPlusH","ctrlSpace","ctrlLeftArrow","ctrlRightArrow","renderModule","searchModule","updateColumnModel","getMediaColumns","setInitialFrozenColumnIndex","checkLockColumns","processModel","gridRender","addListener","updateStackedFilter","refreshMaskRow","axisDirection","dialogElement","headerModule","dialogHolder","maskRowCount","maskTemplate","getShimmerTemplate","maskSpan","contentHeight","maskTableHeight","contentRowCount","headerMaskTable","createEmptyMaskTable","contentMaskTable","maskRowContentScroll","createMaskTable","getContentMaskColumns","gridFooterContent","footerContentMaskTable","footerContent","translateMaskRow","maskElement","rowCount","gridContentScrollHeight","maskTable","transform","maskColgroup","createMaskRow","frzTd","valueX","maskTHead","maskTBody","rowCountElement","altRow","altNumber","rowsQuery","addEditRow","addEditRowIndex","applyMaskRow","addEditMaskRow","tfoot","maskTFoot","minScrollTop","maskCells","maskCell","displayAsCheckBoxCell","refColgroup","refColumns","localTD","displayAsCheckBox","addShimmerEffect","maskTables","refreshMaskRowColgroupWidth","gcol","getShowHideService","hideAtMedia","pushMediaColumn","updateFrozenColumnsWidth","matchMedia","mediaQueryUpdate","updateMediaColumns","columnIndex","mediaColumn","matches","invokedFromMedia","showHider","refreshMediaCol","checkboxColumn","checkboxMode","enableHover","removeMediaListener","removeListener","eventInitializer","hasGridChild","destroyDependentModules","toolTipObj","clipboardModule","enableBoxSelection","enableAutoFill","setCSSClass","oldCSSClass","checkCursor","requireRefresh","requireGridRefresh","freezeRefresh","childGridParent","parentInstance","isEllipsisTooltip","updateColumnObject","properties_1","isCancel","refreshHeader","updateAutoFillPosition","rowTemplateFn","emptyRecordTemplateFn","detailTemplateFn","parentID","childGridObject","currentParent","currentParentInstance","currentChildObject","oldProperties","restoreAdjustColumns","extendedPropertyChange","maintainSelection","updateRTL","getToolbar","contextMenuModule","getContextMenu","columnMenuModule","getColumnMenu","showFilterBarOperator","updateResizeLines","updateGridLines","columnMenuItems","applyTextWrap","removeTextWrap","case","pending_1","getPrototypeOf","deepWatch","pKeyField","setRowData","gResult","names","scrollRefresh","isSelectedRowIndexUpdating","selectRow","setWidthToTable","enableVerticalRendering","fn_1","refreshFilter","getTablesCount","headerCells","stdHdrCell","isRecursion","updateLockableColumns","getFrozenLeftCount","frozenName","frozenCount","leftrightColumnWidth","getFrozenLeftColumns","getFrozenRightColumns","isRefresh","inview","vLen","movable","isLeftRightFrozen","stackedHeader","individualColumn","stackedColumn","getLocaleConstants","setColumnIndexesInView","getCurrentVisibleColumns","setGridHeaderContent","setGridContentTable","setGridContent","setGridHeaderTable","footerElement","getFooterContentTable","getPager","gridPager","setGridPager","getMovableRowByIndex","getFrozenRowByIndex","getRowElements","getFrozenRightRowByIndex","getRowInfo","row_1","rowObj","getRowObjectFromUID","rowData","row_2","getMovableRows","getFrozenRightRows","getAllDataRows","includeAdd","hdrTbody","freezeRows","addMovableRows","dataRows","generateDataRows","fRows","mrows","includAdd","dRows","isCollapseStateEnabled","getMovableDataRows","getAllMovableDataRows","getFrozenDataRows","getAllFrozenDataRows","getFrozenRightDataRows","getAllFrozenRightDataRows","setCellValue","rowIdx","rowuID","pkName","fieldIdx","rowObjects","selectedRow","Idx","sRow","refreshTD","columnUid","isChildGrid","refreshReactTemplateTD","childIndent","isChildRow","rowsObj","refreshGroupCaptionFooterTemplate","dataUid","headerCellRenderer","findIndex","filterElement","selectRowEle","fRowTr","setFrozenRowData","fTr","getMovableCellFromIndex","getFrozenRightCellFromIndex","getMovableColumnHeaderByIndex","getFrozenRightColumnHeaderByIndex","getFrozenLeftColumnHeaderByIndex","rowObject","getMovableRowsObject","getFrozenRightRowsObject","getColumnHeaderByUid","getStackedColumns","getUidByColumnField","getColumnFieldNames","columnNames","getRowTemplate","getDetailTemplate","getEditHeaderTemplate","editHeaderTemplateFn","getEditFooterTemplate","editFooterTemplateFn","getSelectedRows","selectedRecords","selectedRowIndexes","getSelectedColumnsUid","selectedColumnsIndexes","showColumns","hideColumns","getFrozenCount","getFrozenRightColumnsCount","getMovableColumnsCount","isAutoWidth","autoCol_1","difference_1","autoWidth_1","tWidth_1","gWidth","this_2","isPercentageWidthGrid","refreshSplitFrozenColumn","splitFrozenCount","getVisibleMovableCount","getMovableColumns","splitStackedColumns","pushStackedColumns","stackedcol","stockCol","pushallcol","text1","resetStackedColumns","headercol","gridcolumns","tempHead","firstcol","changedProperties","removeBorder","frozenLeftBorderColumns","lastVisibleLeftCol","frozenRightBorderColumns","firstVisibleRightCol","isVisibleColumns","getVisibleFrozenColumns","getVisibleFrozenColumnsCount","getVisibleFrozenCount","getFilterUIInfo","visibleFrozenColumns","goToPage","pageNo","updateExternalMessage","sortColumn","isMultiSort","sortModule","changeDataSource","clearSorting","removeSortColumn","clearGridActions","filterByColumn","fieldName","filterOperator","filterValue","actualFilterValue","actualOperator","clearFiltering","removeFilteredColsByField","isClearFilterBar","isToggle","selectRows","selectCell","endIndex","deleteRecord","fieldname","startEdit","addRecord","deleteRow","editCell","saveCell","updateRow","getBatchChanges","enableToolbarItems","recalcIndentWidth","indentWidth","headerCol","contentCol","perPixel","parentOffset","applyWidth","newWidth","toFixed","resetIndentWidth","tgridWidth","getTableWidth","setMinwidthBycalculation","refreshFrozenScrollbar","reorderColumns","fromFName","toFName","reorderModule","reorderColumnByIndex","reorderColumnByTargetIndex","fromIndexes","rowDragAndDropModule","refreshDataSource","disableRowDD","contentTable","headerRows","disValue","autoFitColumns","fieldNames","resizeModule","resizeSettings","tableWidth","percentageWidth","unit","widthUnit","defaultIndentWidth","indentWidthUnitFormat","headerIndentCol","contentIndentCol","setProperty","tableWidthUnitFormat","indentWidthUnitFormat_1","createColumnchooser","columnChooserModule","renderColumnChooser","localeObj","valueFormatterService","flag","gCols","sCols","_loop_3","sLen","this_3","isFromGroup","showGroupedColumn","parentKeyFieldValue","queryString","initForeignColumn","rendererFactory","createGridPopUpElement","createTooltip","dataReady","gridLines","getTooltipStatus","headerDivTag","htable","ctable","mouseMoveHandler","prevElement","elemNames","innerElement","tag","myTableDiv","cssText","mySubDiv","myTable","myTr","mytd","onKeyPressed","mouseClickHandler","dblClickHandler","keyPressHandler","tapEvent","refreshFrozenPosition","dataBoundFunction","checkEdit","dataRow","filterClear","ariaOwns","keyPress","editFormValidate","persistedData","getLocalData","dataObj","isProtectedOnChange","keys_1","mergeColumns","storedColumn","storedColumns","_loop_4","localCol","tCol","this_4","presskey","stopImmediatePropagation","altKey","collapse","currentInfo","elementToFocus","focusContent","addOutline","injectedModules","refreshColumns","excelExport","excelExportProperties","isMultipleExport","workbook","isBlob","exportGrids","gridIds","exportMultipleExcelGrids","excelExportModule","Map","csvExport","pdfExport","pdfExportProperties","pdfDoc","exportMultiplePdfGrids","pdfExportModule","currentGridId","shift","currentGridInstance","getElementById","exportPromise","exportedGridResults","groupColumn","groupExpandAll","expandAll","groupCollapseAll","collapseAll","clearGrouping","ungroupColumn","openColumnChooser","detailCollapseAll","detailRowModule","detailExpandAll","clearCellSelection","clearRowSelection","selectCells","rowCellIndexes","selectRowsByRange","isContextMenuOpen","ensureModuleInjected","propertyNames","loggerModule","applyBiggerTheme","getPreviousRowData","previousRowData","hideScroll","getRowIndexByPrimaryKey","isDetailRow","pKvalue","getFilteredRecords","getUserAgent","timer","getRowUid","prefix","getRowElementByUID","rowEle","cntRows","rows_2","getHiddenColumns","calculatePageSizeByParentHeight","containerHeight","pagesize","nonContentHeight","getNoncontentHeight","getSummaryValues","summaryCol","summaryData","serverExcelExport","isExcel","exportGrid","serverPdfExport","serverCsvExport","gridModel","include","sorted","setHeaderText","gridInput","submit","getFormat","isExpanded","updateRowValue","colpending","resetFilterDlgPosition","filterDlg","gClient","fClient","callBack","batchUpdate","processRowChanges","batchAsyncUpdate","processBulkRowChanges","dataToBeUpdated","loopstring","keyField","setNewData","oldValues","bulkRefresh","deleteRowElement","out_i_1","_loop_5","this_5","_loop_6","isRowExist","this_6","renderRowElement","modelData","addRowObject","updateVisibleExpandCollapseRows","getHeight","isInteger","getFrozenRightContent","getFrozenRightHeader","getMovableHeaderTbody","getMovableContentTbody","getFrozenHeaderTbody","getFrozenLeftContentTbody","getFrozenRightHeaderTbody","getFrozenRightContentTbody","isCustom","showCustomFilter","showCustomSort","showResponsiveCustomColumnChooser","showCustomColumnChooser","showAdaptiveFilterDialog","showAdaptiveSortDialog","isColVirtualization","gridCols","gridCols_1","CHECK","FRAME","INDETERMINATE","RIPPLECHECK","RIPPLEINDETERMINATE","CheckBox","isMouseClick","clickTriggered","validCheck","changeState","isInitialize","frameSpan","indeterminate","changeEventArgs","updateVueArrayModel","labelWrap","formElem","init","SPINICON","SPINUP","SPINDOWN","INCREMENT","DECREMENT","INTREGEXP","DECIMALSEPARATOR","COMPONENT","NUMERIC_FOCUS","HIDDENELEMENT","selectionTimeOut","NumericTextBox","isDynamicChange","numericOptions","isPrevFocused","decimalSeparator","intRegExp","isCalled","ejInstance","angularTagName","formEle","attributeName","nodeName","nodeValue","incrementTitle","decrementTitle","cultureInfo","initCultureInfo","initCultureFunc","updateHTMLAttrToElement","validateStep","updatePlaceholder","createWrapper","showSpinButton","spinBtnCreation","setElementWidth","changeValue","trimValue","decimals","roundNumber","hiddenInput","elementPrevValue","setNumber","stepValue","currency","currencyCode","updatedCssClassValue","getNumericValidClassList","inputObj","updateHTMLAttrToWrapper","updateDataAttribute","pro","newClass","oldClass","numericClassName","updatedClassValue","numericStyle","spinDown","spinUp","wireSpinBtnEvents","MAX_VALUE","formattedValue","maximumFractionDigits","minimumFractionDigits","useGrouping","operation","isInteract","performAction","raiseChangeEvent","checkErrorClass","setElementValue","setSpinButton","mouseDownOnSpinner","mouseUpOnSpinner","touchMoveEvent","touchMoveOnSpinner","unwireSpinBtnEvents","parsedInput","inputValue","isInteraction","beforeUpdate","numericRegex","preventHandler","iOS","currentPos","prevPos","valArray","numericObject","ignoreKeyCode","charCodeAt","prevVal","lastIndexOf","substring","cursorPosChanged","validateDecimalOnType","parseValue","numerictextboxObj","fireFox","parsedValue","localChange","nonZeroRegex","updatedValue","correctRounding","floatExp","floatValue","floatStep","valueCount","exec","stepCount","roundValue","precision","divide","pow","updateCurrency","propVal","numberOfDecimals","getNumberOfDecimals","modifyText","formatNumber","serverDecimalSeparator","EXPREGEXP","decimalPart","result1","result2","cancelEvent","version","currentChar","String","fromCharCode","isAlterNumPadDecimalChar","fractionRule","mouseWheel","delta","rawEvent","wheelDelta","detail","focusEventArgs","formatValue_1","isIos","blurEventArgs","focusEvent","getElementData","mouseUpClick","timeOut","touchEvent","elementFromPoint","clientX","clientY","floatLabelTypeUpdate","attrArray","validateInputType","updateSpinButton","updateClearButton","propValue","CheckBoxFilterBase","isExecuteLocal","existingPredicate","foreignKeyQuery","filterState","isCheckboxFilterTemplate","infiniteRenderMod","infiniteInitialLoad","infiniteSearchValChange","infinitePermenantLocalData","infiniteQueryExecutionPending","infiniteSkipCnt","infiniteScrollAppendDiff","prevInfiniteScrollDirection","infiniteLoadedElem","infiniteDataCount","infiniteLocalSelectAll","localInfiniteSelectAllClicked","localInfiniteSelectionInteracted","infiniteManualSelectMaintainPred","cBoxTrue","cBoxFalse","closeDialog","dlg","searchHandler","searchBoxKeyUp","dialogObj","foreignKeyFilter","fColl","mPredicate","filterCollection","ejpredicate","fpred","foreignFilter","initalPredicate","searchBoxClick","sInput","refreshCheckboxes","updateSearchIcon","shiftKey","sIcon","getLocalizedLabel","updateDataSource","updateModel","actualPredicate","filteredColumns","allowCaseSensitive","infiniteUnloadParentExistPred","getAndSetChkElem","sBox","hideSearchbox","searchBox","inputargs","spinner","cBox","showDialog","columnType","filterModel","animationSettings","btnClick","buttonModel","isPrimary","dialogCreated","dialogOpen","renderResponsiveFilter","dialogLabel","isResponsiveFilter","responsiveCnt","showMask","getListHeight","getAllData","openDialog","isBlanks","filterTemplateCol","filterItemTemplate","clearFilter","fltrBtnHandler","searchInput","check","optr","ddlValue","isMenuNotEqual","fObj","caseSen","defaults","isNotEqual","itemsCnt","coll","infiniteFltrBtnHandler","generateNullValuePredicates","notifyFilterPrevEvent","addCurrSelection","existingPredicate_1","initiateFilter","isClearFilter","pred","dummyDefaults","parentCurrentViewDataCount","unshift","infiniteSearchPred","arg2","arg3","arg4","arg5","arg6","firstVal","foreignQuery","parsed","predicte","parentTotalDataCount","addDistinct","filterChoiceCount","itemsCount","filterargs","filterObj","emptyValPredicte","generatePredicate","colData","fullData","makeInfiniteScrollRequest","take","filterEvent","processSearch","getPredicateFromCols","isGrid","customQuery","distincts","queryGenerate","processDataOperation","filteredColumn","parentFilteredLocalRecords","defObj","dataSuccess","infiniteScrollMouseKeyDownHandler","infiniteScrollHandler","infiniteScrollMouseKeyUpHandler","listDiv","rect","maskItemHeight","maskList","wrapperElem","removeMask","backgroundColor","borderStyle","borderWidth","borderColor","insertAdjacentHTML","maskLists","maskParent","infiniteRemoveElements","infiniteAppendElements","removeElem","appendElem","infiniteQuery","existQuery","runArray","executeQueryOperations","args1","filteredData","getDistinct","processDataSource","f","updateResult","createFilterItems","result_1","res","selectAll","updateAllCBoxes","previousSibling","updateInfiniteManualSelectPred","updateIndeterminatenBtn","setFocus","predmdl","focusNextOrPrev","focusableElements","nextIndex","from","prevElem","cBoxes","cBoxes_1","createCheckbox","dummyData","checkboxUid","nullCounter","selectAllValue","checkBox","isColFiltered","predicateCheckBox","predicateElement","checkBoxListElem","reduceHeight","increaseHeight","isRndere","args_1","updateInfiniteUnLoadedCheckboxExistPred","checkbox","getCheckedState","lastChild","selectAllParent","addCurrSelectionParent","updatePredArr","checkState","checkboxFilter","ejValue","lookup","currentFilterValue","enableCaseSensitivity","foreignDataObj","operate","first","updateDateFilter","getCaseValue","CellRenderer","formatter","rowChkBox","evaluate","fData","CSPTemplate","literals_1","templateID","invokeFormatter","refreshCell","parentRow","newTD","cloneAttributes","arialabelText","source","localeStr","fromFormatter","checkWrap","rowID","setAttributes","isCheckBoxType","colindex","InlineEditRender","addNew","newRowPosition","getEditElement","checkLastRow","tdElement","gLen","appendChildren","isCustomFormValidation","td_1","editTemplateID","BatchEditRender","columnObject","newTd","DialogEditRender","setLocaleObj","createDialog","createDialogHeader","responsiveDlgRenderer","renderResponsiveHeader","getDialogEditTemplateElement","primaryKeyValue","dialog","isModal","showCloseIcon","allowDragging","dialogClose","closeOnEscape","renderResponsiveDialog","adaptiveDlgTarget","dialogEditTemplates","templateName","dialogTemp","tempDiv","setRules","formObj","checkColumnIsGrouped","dataCell","EditRender","getEditElements","convertWidget","cols_1","write","focusElement","onClick","isFocus","preventScroll","cellValue","tArgs","tempData","isInput","complexFieldName","isIdentity","EditCellBase","read","removeEventHandler","BooleanEditCell","activeClasses","classNames","selectChkBox","chkState","editRow","cbChange","checkBoxChange","DropDownEditCell","isInline","sortOrder","dropDownClose","editCellDialogClose","ddCreated","dropdownCreated","ddOpen","dropDownOpen","ddBeforeOpen","dropdownBeforeOpen","ddComplete","ddActionComplete","dlgElement","dlgObj","NumericEditCell","keyEventHandler","instances","DefaultEditCell","Event","bubbles","cancelable","NormalEdit","currentVirtualData","allowEditOnDblClick","editComplete","editRowIndex","getEditArgs","editedData","isScroll","primaryKeys","primaryKeyValues","primaryKey","virtualRow","rObj","inlineEditHandler","prevData","argsCreator","begineditargs","editargs","preventFocus","applyFormValidation","index_1","edFail","validationArgs","editIdx","addIdx","addedRowIndex","isDlg","dlgWrapper","dlgForm","virtualData","getCurrentEditedData","eleLength","endEditArgs","destroyElements","destroyWidgets","destroyForm","editHandler","edSucc","editSuccess","editFailure","updateCurrentViewData","requestSuccess","stopEditStatus","isLastRow","blazorTemplate","dragRow","dragRowUid","dragRowObject_1","groupedColumn","comparer1","comparer2","dropRowObject","aggregateModule","groupedRowReorder","checkboxOnly","getGroupAggregateTemplates","closeForm","cloneRow","originalRow","cloneFrozen","frozen","needRefresh","leftrightCells","closeEditArgs","isLazyLoad","defaultValue","inlineAddHandler","addArgs","dataLen","tmpRecord","contained","addElements","editElements","InlineEdit","BatchEdit","cellDetails","originalCell","cloneCell","editNext","preventSaveCell","initialRender","validationColObj","addBatchRow","prevEditedBatchCell","onBeforeCellFocused","onCellFocused","editNextValCell","dataBound","batchCancelFunction","batchCancel","restoreFocus","mouseDownElement","setCellIdx","isAddRow","validateFormObj","byClick","keyArgs","clickArgs","isContent","active","matrix","prevEditedBatchCellMatrix","crtRowIndex","byKey","actualIndex","isLastCellPrimaryKey","editCellFromIndex","isAdded","isInsert","isDirty","removeBatchElementChanges","refreshRowIdx","isInstertedRemoved","bulkDelete","bulkAddRow","batchSave","checkAllBox","removeSelectedData","beforeBatchSaveArgs","removeRowObjectFromUID","isTop","rowClone","deleteRowUid","beforeBatchDeleteArgs","uniqueid","dataObjects","visibleColumns","defaultData","getDefaultData","beforeBatchAddArgs","forgetPrevious","btmIdx","getBottomIndex","findNextEditableCell","isValOnly","validation","dValues","editCellExtend","getDataByIndex","getColIndex","getCellIdx","cellEditArgs","isColored","rowObj_1","newReactTd_1","newReactTd","setChanges","rowcell","insertedRows","isSingleInsert","escapeCellEdit","generateCellArgs","successCallBack","cloneEditedData","isForceSave","cellSaveArgs","isEscapeCellEdit","editedBatchCellMatrix","editedBatchCell","addCancelWhilePaging","ARROWLEFT","ARROWRIGHT","ARROWUP","ARROWDOWN","TAB","SHIFTTAB","END","HOME","MaskedDateTime","mask","defaultConstant","hiddenMask","validCharacters","isDayPart","isMonthPart","isYearPart","isHourPart","isMinutePart","isSecondsPart","isMilliSecondsPart","monthCharacter","periodCharacter","isHiddenMask","isComplete","navigated","isDeletion","isShortYear","isDeleteKey","isDateZero","isMonthZero","isYearZero","isLeadingZero","dayTypeCount","monthTypeCount","hourTypeCount","minuteTypeCount","secondTypeCount","dateformat","getCulturedFormat","maskDateValue","validCharacterCheck","maskInputHandler","maskKeydownHandler","maskPlaceholder","getCUltureMaskFormat","formatCheck","previousHiddenMask","setDynamicValue","objectString","validChar","navigateSelection","formatText","dateAlteration","isPersist","differenceCheck","previousVal","newVal","newDateValue","handleDeletion","monthString","getCulturedValue","monthValue","monthValue_1","previousMaxDate","currentMaxDate","yearValue","periodString","periodkeys","daysAbbreviated","dayKeyAbbreviated","daysWide","dayKeyWide","daysNarrow","dayKeyNarrow","monthAbbreviated","monthWide","zeroCheck","roundOff","hiddenChar","isbackward","formatIndex","valueText","isZero","resultValue","isSegment","isDecrement","incrementValue","newMonth","DatePickerEditCell","dateanddatetimerender","datePickerEditCell","datePickerClose","TemplateEditCell","updateEditObj","createAlertDlg","createConfirmDlg","updateColTypeObj","templteCell","editCellType","alertDObj","lastTr","refreshToolbar","showConfirmDialog","showDeleteConfirmDialog","endEditing","form1","form2","mFormObj","form3","frFormObj","getCurrentEditCellData","getValueFromType","destroyToolTip","dlgWidget","dlgOk","dlgCancel","alertClick","btnOptions","isForceCancel","clearIndicator","executeAction","destroyEditComponents","eventDetails","preventBatch","onActionBegin","actionCompleteFunction","actionComplete","actions","inputs","col_1","addRow","restrictedRequestTypes","isRestrict","isDestroyVirtualForm","formObjects","virtualFormObj","curretRowFocus","focusableEditCells","commandColCell","preventObj","arg7","arg8","newRule","mRules","frRules","createFormObj","validationComplete","valErrorPlacement","getElemTable","isFHdr","resetElemPosition","tdRight","elemRight","offSet","customForm","validationForBottomRowPos","gcontent","isFHdrLastRow","isBatchModeLastRow","viewPortRowCount","fHearderRows","insertRow","client","inputClient","arrow","getEditCell","gHeight","rowsCount","rowsHeight","AddEditors","editors","ResponsiveDialogRenderer","sortedCols","sortPredicate","isCustomDialog","closeCustomDialog","refreshCustomFilterOkBtn","renderResponsiveContextMenu","renderCustomFilterDiv","customExFilterClose","refreshCustomFilterClearBtn","onActionCompleteFn","editComplate","isCustomDlgRender","customResponsiveDlg","closeBtn","saveBtn","backBtn","customExcelFilterParent","isFilter","filterClearBtn","getHeaderTitle","columnMenuResponsiveContent","cDiv","customColumnDiv","renderResponsiveContent","isColumnChooser","filterParent","isColMenu","sortColumns","sortBtnParent","filteredCols","isSort","getSortedFieldsAndDirections","buttonInnerText","sortButtonClickHandler","divIcon","iconSpan","customFilterColumnClickHandler","columndiv","allowMultiSorting","isSortApplied","resetSortButtons","txt","directionTxt","setSortedCols","getCurrentSortedFields","menuCol","filteredCol","closeCustomFilter","isRowResponsive","showResponsiveDialog","colDiv","isDialogClose","clearCustomFilter","removeCustomDlgFilterEle","renderCustomFilterDialog","setFilterModel","createOptions","setTopToChildDialog","dialogEle","child","colMenu","outerDiv","customFilterDlg","getDialogOptions","isCustomFilter","beforeDialogClose","sortField","closeResponsiveDialog","getDialogName","getButtonText","titleDiv","dialogHdrBtnClickHandler","id_1","clearBtn","removeCustomFilterElement","custommenu","applyCustomFilter","mainfilterdiv","destroyCustomFilterDialog","customEle","NumericContainer","pagerElement","renderNumericContainer","refreshNumericLinks","updateTotalPages","links","updateLinksHtml","refreshAriaAttrLabel","updateStyles","link","frag","createDocumentFragment","totalPages","auxiliaryClickHandler","numericContainer","renderFirstNPrev","renderPrevPagerSet","renderNextPagerSet","renderNextNLast","pagerContainer","prevPager","PP","nextPager","NP","last","previousPageNo","currentPageSet","isLastSet","numItems","isPagerResized","focusedItem","focusedorTarget","prevFocused","nextFocused","firstFocused","lastFocused","numItemFocused","npFocused","ppFocused","classList_1","isPageAvailable","customText","ppIndex","avgNumItems","NPIndex","updateFirstNPrevStyles","updatePrevPagerSetStyles","updateNextPagerSetStyles","updateNextNLastStyles","currentPageIndex","firstPage","firstPageDisabled","prevPage","prevPageDisabled","lastPage","lastPageDisabled","nextPage","nextPageDisabled","PagerMessage","pageNoMsgElem","pageCountMsgElem","regx","Pager","hasParent","pageRefresh","firstPagerFocus","enableExternalMessage","checkpagesizes","defaultConstants","currentPageInfo","totalItemsInfo","totalItemInfo","firstPageTooltip","lastPageTooltip","nextPageTooltip","previousPageTooltip","nextPagerTooltip","previousPagerTooltip","pagerDropDown","pagerAllDropDown","CurrentPageInfo","TotalItemsInfo","FirstPageTooltip","LastPageTooltip","NextPageTooltip","PreviousPageTooltip","NextPagerTooltip","PreviousPagerTooltip","PagerDropDown","PagerAllDropDown","All","Container","Information","ExternalMsg","Page","Of","Pages","containerModule","pagerMessageModule","initLocalization","isReactTemplate","renderFirstPrevDivForDevice","enablePagerMessage","renderNextLastDivForDevice","pagerdropdownModule","addAriaLabel","externalMessageModule","checkGoToPage","currentPageChanged","setDropDownValue","compile","resizePager","onFocusIn","onFocusOut","focusedTabIndexElement","getFocusedTabindexElement","dropDownPage","getDropDownPage","focusablePagerElements","getFocusablePagerElements","addFocus","focusedElement","getFocusedElement","removeFocus","setTabIndexForFocusLastElement","checkPagerHasFocus","changePagerFocus","setPagerFocus","setPagerContainerFocus","setPagerFocusForActiveElement","currentActivePage","offsetParent","changeFocusByShiftTab","changeFocusByTab","navigateToPageByEnterOrSpace","navigateToPageByKey","tabindexElements","currentItemPagerFocus","incrementNumber","decrementNumber","lastRow","lastCell","checkFirstPagerFocus","selectedClass","getClass","classElement","getElementByClass","checkFocusInAdaptiveMode","changeFocusInAdaptiveMode","actionClass","pagingItem","mPrev","removeTabindexLastElements","tabIndexElements","dropDownPageHolder","currentClass","previousElements","targetChildrens","pagerElements","element_1","tabindexElement","addFocusClass","removeFocusClass","setPageSize","newPageNo","oldPageNo","enableQueryString","updateQueryString","getPagerTemplate","updatedUrl","getUpdatedURL","location","history","pushState","uri","hash","calculateActualWidth","actualWidth","isStyleApplied","pagerWidth","hiddenNumItems","hideFrom","showFrom","bufferWidth","detailItems","totDetailWidth_1","averageDetailWidth","totalWidth","numericItemWidth","diff","numToHide","hideIndex","innerWidth","pagerDetailItemsWidth","detailtoHide","hiddenDetailItems","numToShow","lesserIndexItems","greaterIndexItems","showItems","showItem","pagerDropDownDiv","dropDownDiv","defaultTextDiv","pagerCons","pageSizesModule","pageSizesArray","convertValue","dropDownListObject","onChange","isPageSizeAll","beforeValueChange","pageSizeValue","pageSizeNum","isbeforeAll","ExternalMessage","externalMessage","isInitialRender","pagerDestroy","dropDownChanged","onSelect","addAriaAttr","renderReactPagerTemplate","numericContainerNew","numericContainerDiv","replaceChild","previousPage","keyActions","appendToElement","enableAfterRender","handlers","complete","updateLayout","inboundChange","Selection","checkBoxState","isMultiShiftRequest","isMultiCtrlRequest","isMultiCtrlRequestCell","enableSelectMultiTouch","clearRowCheck","selectRowCheck","selectedRowState","unSelectedRowState","chkAllCollec","isCheckedOnAdd","persistSelectedData","deSelectedData","isHdrSelectAllClicked","needColumnSelection","isCancelDeSelect","isPreventCellSelect","disableUI","isPersisted","cmdKeyPressed","cellselected","isAddRowsToSelection","initialRowSelection","isPrevRowSelection","isRowDragSelected","rmtHdrChkbxClicked","isCheckboxReset","autoFillRLselection","right_bottom","bottom_left","top_right","top_left","top_bottom","top_right_bottom","top_bottom_left","top_right_left","right_bottom_left","all_border","factory","initializeSelection","fDataUpdate","getRowObj","currentIndex","hidePopUp","getCurrentBatchRecordChanges","currentRecords","selectedGroupedData","enableSimpleMultiRowSelection","addRowsToSelection","selectData","isRemoved","selectedIndex","isAvailable","prevSelectedData","isRowType","isRowSelected","activeTarget","can","rowSelectingCallBack","isCtrlPressed","isShiftPressed","previousRow","prevRowIndex","previousRowIndex","actualTarget","isHeaderCheckboxClicked","removed","clearSelectedRow","selectRowCallBack","clearRow","disableInteracted","updateRowSelection","selectRowIndex","isHeaderCheckBoxClicked","updateRowProps","getCollectionFromIndexes","selectedDataUpdate","selectedData","selectableRowIndex","currentRow","isSingleSel","prevRow","isDragged","selectRowFn","selectableRowIndex_1","rowIndexes_1","isUnSelected","enableToggle","rowDeselect","addRemoveClassesForRow","reverse","clearRowCallBack","updatePersistCollection","updateCheckBoxes","getPkValue","pkField","ensureCheckboxFieldSelection","updatePersistDelete","pKey","isPresent","checkedTarget","setCheckAllState","getPrevIndexes","mouseButton","checkSelectAllClicked","clearColumnSelection","prevCIdxs","prevECIdxs","rowIndex_1","foreignKeyData_1","isRowClicked","getCheckAllStatus","updatePersistSelectedData","mRow","rowDeselectCallBack","frozenRightRow","cancl_1","isSingleDeSel","rowDeselectObj","rowInString","rowidx","rowidxex","dataTxt","isHeaderCheckBxClick","isCellType","selectedCell","isCellSelected","previousRowCell","getCellIndex","currentCell","previousRowCellIndex","cellSelectingArgs","cncl","clearCell","updateCellSelection","selectedRowCellIndex","updateCellProps","stIndex","edIndex","getLastColIndex","addAttribute","cellSelectedArgs","cellSelectArgs","cellLen","addRowCellIndex","prvRowCellIndex","addCellsToSelection","hideAutoFill","cellIndexes_1","selectedCellIdx","cellDeselect","cancl","rowCellIndex","isRowAvail","selectedCells","getSelectedCellsElement","cLen","bdrElement","showHideBorders","stopTimer","gBRect","x1","y1","x2","y2","isCellDrag","startAFCell","startCell","endAFCell","selectLikeExcel","startDIndex","updateScrollPosition","scrollElem","cliRect","timer1","timer2","isAutoFillSel","findNextCell","e_1","colInd","rowInd","siblingEles","nextEleInd","showAFBorders","selectLikeAutoFill","startDCellIndex","drawBorders","setFrozenBorders","bdrStr","strCell","fixedCells","isRtl","firstRowIdx","firstColIdx","lastRowIdx","lastColIdx","preCell","nextCell","refreshFrozenBorders","frcBdrElement","fhBdrElement","frhBdrElement","createBorders","positionBorders","isLastCell","isFirstRow","isFirstCell","setBorders","stOff","endOff","parentOff","topOffSet","leftOffset","rightOffset","selectDirection","updateStartEndCells","mcBdrElement","mhBdrElement","applyBorders","applyBothFrozenBorders","drawAFBorders","bdrAFBottom","createAFBorders","positionAFBorders","bdrAFLeft","firstCellTop","firstCellLeft","parentRect","sTop","totalHeight","scrolloffSet","bdrAFRight","bdrAFTop","leftRemove","topRemove","hideAFBorders","createBeforeAutoFill","getAutoFillCells","startCellIdx","isApply","startrowIdx","endrowIdx","endCellIdx","rowLen","colLen","endCell","startCellIndex","trIdx","mUPTarget","closeRowCell","updateStartCellsIndex","autofill","rindex","isFrozenRow","isFrozenRight","clientRect","colWidth","enableDrag","postion","clearSelAfterRefresh","isInfiniteScroll","pkValue","columnPositionChanged","rowsRemoved","addEventListener_checkbox","removeEventListener_checkbox","isMacOS","beforeFragAppend","getCheckAllBox","initPerisistSelection","prevColIndex","checkBoxSelectionChanged","gobj","chkField","proxy_1","refreshPersistSelection","setRowSelection","selectedStateKeys","unSelectedRowStateKeys","rowData_1","selectedData_1","getAvailableSelectedData","filteredSearchedSelectedData","editChkBox","onDataBound","totalRecords","checkSelectAllAction","cRenderer","editForm","getVirtualRowIndex","checkSelectAll","stateStr","updateSelectedRowIndexes","triggerChkChangeEvent","checkSelect","rIndex","rowCellSelectionHandler","moveIntoUncheckCollection","rowObj_2","rowObj_3","updateSelectedRowIndex","selectedVal","isAllSelected","isSelectAllRowCount","someDataSelected","checkToSelectAll","checkedLen","spanEle","getRecord","targetHeadCell","targetRowCell","isCheckBox","allowColumnSelection","popUpClickHandler","chkSelect","isEqualNode","showPopup","headerSelectionHandler","find","checkboxColumnIndexCheck","isJump","headerAction","thLen","getKeyColIndex","targetLabel","applyDownUpKey","applyRightLeftKey","shiftDownKey","applyShiftLeftRightKey","applyHomeEndKey","applyCtrlHomeEndKey","writeText","applySpaceSelection","allowNextRowEdit","innerColumn","getstackedColumns","lastIndex","firstIndex","applyUpDown","selectColumn","cIndex","selectColumnsByRange","innerColumnIndexes","clearAll","detailIndentCell","dragdropIndentCell","selectedCol","isColSelected","isMultiColumns","clearColDependency","previousColumnIndex","updateColSelection","selectedArgs","updateColProps","selectColumns","columnIndexes","getselectedCols","selectingArgs","selectColumnWithExisting","newCol","clearIndex","deselectedArgs","isCanceled","columnDeselect","selectedHeader","getSelectedColumnCells","isRowTemplate","seletedcells","selectionString","onDataBoundFunction","setCheckAllForEmptyGrid","actionCompleteHandler","resizeEndFn","isInfinitecroll","ColumnWidthService","wFlag","totalColumnsWidth","setColumnWidth","tWidth","difference","tmWidth","collection_1","isWidthUndefined","setUndefinedColumnWidth","cWidth","getWidth","elementWidth","fWidth","editTableCol","movableScrollbar","movableWidth","placeHolder","getHeightFromDirection","sibling","isWidUndefCount","isAutoResize","addScrolling","scrollType","containerOffset","contentOffset","parentElem","createScrollbar","scrollObj","menu","ENTER","ESCAPE","FOCUSED","SEPARATOR","UPARROW","DOWNARROW","LEFTARROW","RIGHTARROW","CARET","ITEM","HIDE","TEMPLATE_PROPERTY","FieldSettings","MenuItem","MenuAnimationSettings","MenuBase","navIdx","isTapHold","showSubMenuOn","isMenu","ejInst","clonedElement","refEle","enableScrolling","hamburgerMode","createHeaderContainer","defaultOption","showItemOnClick","createJsonFromElement","removeChildElement","createItems","targetElems","menuHeaderClickHandler","cmenuHandler","parent_1","delegateMoverHandler","moverHandler","delegateMouseDownHandler","delegateClickHandler","downarrow","uparrow","leftarrow","rightarrow","keyBoardHandler","closeMenu","actionName","actionNeeded","removeLIStateByClass","rightEnterKeyHandler","leftEscKeyHandler","cul","getUlByNavIdx","fliIdx","fli","getLIByClass","getIdx","cli","navIdxLen","popups_1","allPopup","getItem","keyType","openMenu","aEle","sli","isCMenu","changedTouches","canOpen","ulIndex","isIterated","isMenuVisible","item_1","wrapper_1","beforeCloseArgs","popups","getPopups","isClose","ul_1","liElem_1","getLI","parentItem","observedCloseArgs","closeArgs","trgtliId","closedLi","trgtLi","popupId","unWireKeyboardEvent","toggleAnimation","pop","showSubMenu","updateReactTemplate","trgtpopUp","submenus","afterCloseMenu","getIndex","isMenusClosed","sli_1","cliIdx","item_2","removeStateWrapper","getMenuItemModel","getFields","lItem","elemId","uList","getField","hdata","hli","isNestedOrVertical","generatePopup","calculateIndentSize","hoverDelay","triggerBeforeOpen","targetEvent","copyObject","srcElement","destination","liStyle","liIndent","textIndent","blankIconElem","menuIconElem","menuIconElemStyle","blankIconIndent","actionOnScroll","triggerOpen","spanElem","tempTitle","spanTitle","spanIcon","openHamburgerMenu","closeHamburgerMenu","observedHamburgerCloseArgs","callFit","menuType","observedOpenArgs","checkScrollOffset","animationOptions","easing","setPosition","eventArgs_1","collide","offWidth","iconCssProps","iconSize","offsetEle","offsetRight","px","toggleVisiblity","newTop","xCollision","isVisible","showIcon","hasField","itemNavigable","itemCreating","curData","liTrgt","ulId","hdrWrapper","isDifferentElem","isClosed","propName","cliWrapper","isInstLI","cliWrapperId","setLISelected","culIdx","classname","getItemIndex","isUniqueId","isText","setItem","newItem","getItems","setItems","newItems","skipHdr","updateItemsByNavIdx","updateItem","ul_2","ul_3","getChangedItemIndex","insertAfter","removeItem","wrapper1","ul1","lis","popStr","uls","targetSelctor","parent_2","isMenuOpen","pUlHeight","pElement","begin","progress","nIndex","isCallBack","skipItem","i_1","showHideItems","hideItems","ishide","validUl","iitems","insertItems","isAfter","menuitem","itemId","parentId","StackedColumnsDirective","StackedColumnsPlugin","StackedColumnDirective","StackedColumnPlugin","ColumnsDirective","ColumnsPlugin","ColumnDirective","ColumnPlugin","AggregateColumnsDirective","AggregateColumnsPlugin","AggregateColumnDirective","AggregateColumnPlugin","AggregatesDirective","AggregatesPlugin","AggregateDirective","AggregatePlugin","GridComponent","GridPlugin","FocusStrategy","oneTime","swap","forget","skipFocus","focusByClick","firstHeaderCellClick","prevIndexes","refMatrix","refreshMatrix","isVirtualScroll","rowModelGen","focusCheck","onFocus","setActive","enableHeaderFocus","generate","get","validator","passiveFocus","firstHeaderCellIndex","skipAction","onBlur","isGantt","setLastContentCellTabIndex","focusableGroupedItems","getFocusableGroupedItems","toolbarElement","focusableToolbarItems","getFocusableToolbarItems","force","beforeArgs","returnVal","clearOutline","handleFilterNavigation","inputSelector","buttonSelector","allowToPaging","lastHeaderCellIndex","isValidBatchEditCell","findBatchEditCell","parentCell","lastColumn","skipOn","setLastContentCellActive","focusOutFromChildGrid","focusFirstHeaderCell","activeKey","bValue","prevBatchValue","outline","swapInfo","jump","toHeader","getNextCurrent","setActiveByKey","lastIdxCell","nextHeaderCellIndex","firstContentCellIndex","previousCellIndex","focusOutFromHeader","cellColIndex","cellCol","currentCellIndex","limitRow","tempCellIndex","cellIndexObtain","prevTempCellIndex","lastContentCellIndex","parentTable","parentGrid","parentRows","parentRowIndex","nextFocusCell","rowCells","th","inputTarget","filterCell","focusVirtualElement","isKeyFocus","empty","setFocusedElement","getFocusInfo","cellElem","focusHeader","resetFocus","getInfo","focusedColumnUid","ContentFocus","HeaderFocus","cFocus","frozenRow","batchLen","matrixcs","hdrLen","handlerInstance","bool","cellPosition","gridPosition","passiveHandler","filterfocus","restoreFocusWithAction","internalCellFocus","groupSortFocus","groupTextFocus","groupCancelFocus","toFrozen","focusEle","getFocusable","Matrix","set","allow","emptyTable","inValid","vector","columnsCount","rowColumns","currentColumnCount","indexesByKey","navigators","getCurrentFromAction","editNextRow","visibleIndex","shouldFocusChange","rN","cN","oRowIndex","oCellIndex","nextRowFocusValidate","previousRowFocusValidate","enterFrozen","headerSwap","isHeaderFocus","optionals","defaultLen","isData","isCellWidth","getGridSeletion","current1","checkFilterColumn","getHeaderType","SearchBox","searchFocus","cursor","searchBlur","wireEvent","unWireEvent","rowDataBound","queryCellInfo","headerCellInfo","actionFailure","rowSelecting","rowSelected","rowDeselecting","rowDeselected","cellSelecting","cellSelected","cellDeselecting","cellDeselected","columnSelecting","columnSelected","columnDeselecting","columnDeselected","columnDragStart","columnDrag","columnDrop","rowDragStartHelper","rowDragStart","rowDrag","rowDrop","beforePrint","printComplete","detailDataBound","toolbarClick","batchAdd","batchDelete","beforeBatchAdd","beforeBatchDelete","beforeBatchSave","beginEdit","cellEdit","cellSave","cellSaved","recordDoubleClick","recordClick","beforeDataBound","beforeOpenColumnChooser","beforeOpenAdaptiveDialog","resizeStart","onResize","resizeStop","beforeCopy","beforePaste","beforeAutoFill","filterChoiceRequest","filterAfterOpen","filterBeforeOpen","filterSearchBegin","commandClick","exportGroupCaption","initialLoad","uiUpdate","inBoundModelChanged","modelChanged","colGroupRefresh","headerRefreshed","pageComplete","sortComplete","filterComplete","searchComplete","reorderComplete","rowDragAndDropComplete","groupComplete","ungroupComplete","groupAggregates","refreshFooterRenderer","refreshAggregateCell","refreshAggregates","rowSelectionComplete","cellSelectionComplete","beforeCellFocused","cellFocused","keyPressed","columnVisibilityChanged","columnWidthChanged","rowsAdded","columnDragStop","headerDrop","dataSourceModified","dblclick","toolbarRefresh","bulkSave","autoCol","tooltipDestroy","updateData","saveComplete","deleteComplete","dialogDestroy","crudAction","addDeleteAction","doubleTap","beforeExcelExport","excelExportComplete","excelQueryCellInfo","excelHeaderQueryCellInfo","exportDetailDataBound","exportDetailTemplate","freezeRender","columnMenuClick","columnMenuOpen","filterOpen","filterDialogCreated","filterMenuClose","initForeignKeyColumn","showEmptyGrid","columnDataStateChange","dataStateChange","dataSourceChanged","rtlUpdated","textWrapRefresh","recordAdded","cancelBegin","expandChildGrid","printGridInit","exportRowDataBound","exportDataBound","rowPositionChanged","columnChooserOpened","batchForm","beforeStartEdit","beforeBatchCancel","batchEditFormRendered","partialRefresh","beforeCustomFilterOpen","selectVirtualRow","columnsPrepared","cBoxFltrBegin","cBoxFltrComplete","fltrPrevent","beforeFltrcMenuOpen","valCustomPlacement","filterCboxValue","detailIndentCellInfo","virtaulCellFocus","virtualScrollEditActionBegin","virtualScrollEditSuccess","virtualScrollEditCancel","virtualScrollEdit","refreshVirtualCache","editReset","virtualScrollAddActionBegin","getVirtualData","refreshInfiniteModeBlocks","resetInfiniteBlocks","infinitePageQuery","infiniteShowHide","appendInfiniteContent","removeInfiniteRows","setInfiniteCache","infiniteEditHandler","initialCollapse","closeFilterDialog","columnChooserCancelBtnClick","getFilterBarOperator","resetColumns","excelAggregateQueryCellInfo","setGroupCache","lazyLoadScrollHandler","groupCollapse","beforeCheckboxRenderer","refreshHandlers","refreshFrozenColumns","setReorderDestinationElement","setFreezeSelection","beforeRefreshOnDataChange","immutableBatchCancel","checkScrollReset","preventFrozenScrollRefresh","nextCellIndex","refreshInfiniteCurrentViewData","filterDialogClose","renderResponsiveCmenu","filterCmenuSelect","customFilterClose","setFullScreenDialog","refreshExpandandCollapse","rowModeChange","enterKeyHandler","refreshVirtualMaxPage","setVirtualPageQuery","pagerRefresh","closeInline","resetVirtualFocus","beforeCheckboxRendererQuery","createVirtualValidationForm","validateVirtualForm","destroyChildGrid","stickyScrollComplete","captionActionComplete","refreshInfinitePersistSelection","refreshInfiniteEditrowindex","afterFilterColumnMenuClose","beforeCheckboxfilterRenderer","commandColumnDestroy","batchCnfrmDlgCancel","refreshResizePosition","renderResponsiveChangeAction","renderResponsiveColumnChooserDiv","ContentRender","movableRows","freezeRowElements","isLoaded","infiniteCache","visibleFrozenRows","rightFreezeRows","isAddRows","isInfiniteFreeze","useGroupCache","tempFreezeRows","rafCallback","arg","setRowsInLazyGroup","maxBlock","maxBlocks","rowElements","startIdx","generator","getModelGenerator","pressedKey","renderHorizontalScrollbar","scrollbarHeight","setScrollbarHeight","virtualTable","virtualTrack","createContentTable","initializeContentDrop","currentMovableRows","initialPageRecords","refFrag","refHdrfrag","hdrfrag","trElement","tbdy","isGroupFrozenHdr","checkCache","isFrozenLeft","templatetoclear","templates","updateVirtualCells","blockLoad","offsets","offsets_1","bSize","isEndBlock","blockIndexes","contentPanel","isVFFrozenOnly","bIndex","mhdrData","vgenerator","virtualFrozenHdrRefresh","refRowsObj","setInfiniteVisibleRows","getBlockSize","rowTemplateID","isTR","isVFreorder","ensureFrozenHeaderRender","ensureVirtualFrozenHeaderRender","headerCellHeight","cellHeight","boxSizing","maintainRows","initialGroupRows","getCurrentBlockInfiniteRecords","getReorderedRows","getReorderedFrozenRows","fhdrData","getInfiniteRows","getInfiniteMovableRows","infiniteCacheRows","infiniteRows","testRow","needFullRefresh","infiniteData","infiniteRowVisibility","contentrows","setDisplayNone","isFreeze","getHeaderColGroup","canSkip","getInfiniteRowIndex","firstRowIndex","oldKeys","newKeys","newRowObjs","oldIndexes","oldRowObjs","batchChangeKeys","getBatchEditedRecords","newIndexes","hasBatch","oldRowElements","trs","prevLen","currentLen","oldIndex","refreshImmutableContent","isEqual","objectEqualityChecker","setRowValue","old","isDate","updateCellIndex","GroupModelGenerator","infiniteChildCount","renderInfiniteAgg","summaryModelGen","captionModelGen","getGroupedRecords","ensureRowVisibility","parentid","childId","preCaption","captionRow","generateCaptionRow","getPreCaption","isRenderAggregate","rowCnt","aggregatesCount","setInfiniteRowVisibility","preCap","getCaptionRowCells","visibles","groupedLen","generateIndentCell","captionCells","cIndex_1","tmpFlag","childID","childGid","gSummary","fkValue","cRow","childRow","doesImplementInterface","checkFor","getObject","getUpdateUsingRaf","updateFunction","isExportColumns","exportProperties","updateColumnTypeForExportColumns","exportColumns","updatecloneRow","nRows","actualRows","getCollapsedRowsCount","total","dataRowCnt","agrCnt","gLevel","childLevels","recursive","rCount","nLevel","iterateArrayOrObject","iterateExtend","getActualProperties","templateCompiler","validSelector","setStyleAndAttributes","copyAttr","literals","extend","exclude","moved","setColumnIndex","ind","prepareColumns","autoWidth","setCssInGridPopUp","popUp","popUpSpan","targetPosition","isBottomTail","getPopupLeftPosition","getPosition","parentsUntil","isID","getElementIndex","inArray","getActualPropFromColl","removeElement","getUid","calculateAggregate","Global","divNode","isComplexField","getComplexFieldID","getParsedFieldID","setComplexFieldID","isEditable","isOldRow","isActionPrevent","inst","clName","addRemoveActiveClasses","distinctStringValues","getFilterMenuPostion","elementVisible","dlgWidth","leftPos","getZIndexCalcualtion","toogleCheckbox","setChecked","createCboxWithWrap","removeAddCboxClasses","refreshForeignData","getForeignData","lValue","fField","fdata","getDatePredicate","getColumnByForeignKeyValue","padZero","filterObject","datePredicate","nextDate","prevObj","nextObj","predicateSt","predicateEnd","dateOnlyString","isGroupAdaptive","object","splits","newCase","getCustomDateFormat","formatvalue","getExpandedState","printMode","getPrintGridModel","printGridModel","extendObjWithFn","deep","obj1","getPrototypesOfObj","cpy","cln","measureColumnDepth","checkDepth","indices","refreshFilteredColsUid","getColumnModelByFieldName","getTransformValues","transformV","replacedTv","translateY","rootElement","getScrollWidth","resetColspanGroupCaption","gridWidth","groupCaptionRowLeftRightPos","applyStickyLeftRightPosition","newColspan","ispercentageWidth","percentageCol","undefinedWidthCol","resetRowIndex","rowElms","startRowIndex","compareChanges","newArray","o","isChildColumn","uids","pushuid","frozenDirection","addFixedColumnBorder","addStickyColumnPosition","getCellsByTableName","getCellByColAndRowIndex","setValidationRuels","numberFormat","getNumberPattern","patternRegex","mtch_1","'","addBiggerDialog","dialogs","performComplexDataOperation","mapObject","returnObj","duplicateMap","setDisplayValue","addRemoveEventListener","isOn","evt_1","createEditElement","registerEventHandlers","evts","eventHandlers","removeEventHandlers","clearReactVueTemplates","generateExpandPredicates","filterCols","getPredicates","findCellIndex","checkActiveMatrix","checkCellIndex","activeMatrix","currentCellIndexPass","capitalizeFirstLetter","string","DropDownButtonItemsDirective","DropDownButtonItemsPlugin","DropDownButtonItemDirective","DropDownButtonItemPlugin","DropDownButtonComponent","DropDownButtonPlugin","CellMergeRender","spannedCell","targetCell_1","colSpanLen","colSpanRange","spanText","containsKey","backupMergeCells","setMergeCells","generteKey","fname","getMergeCells","mCells","merge","getIndexFromAllColumns","vColumnIndices","predefinedItems","isSearched","isRightToolbarMenu","gridID","preItems","isAdaptive","excludingItems","preItems_1","itemStr","localeName","isResponsiveToolbarMenuItems","responsiveToolbarItems","ColumnChooser","responsiveFilter","responsiveSort","responsiveBack","createToolbar","responsiveToolbarMenu","renderResponsiveToolbarpopup","isRight","addReactToolbarPortals","bindSearchEvents","searchElement","refreshToolbarItems","updateSearchBox","toolbarCreated","isNormal","clicked","toolbarClickHandler","viewStr","registerTemp","ID","renderResponsiveSearch","isRender","refreshResponsiveToolbarItems","isSearch","searchBoxObj","disableItems","hasData","getItemObject","toolbarItems_1","itemObject","itemName","gID","openResponsiveToolbarMenuPopup","newArgs","toolbarargs","tarElement","targetEle","toolbarMenuElement","getMenuItems","toolbarItems_2","getLocaleText","ResponsiveToolbarMenuItemClick","setFocusToolbarItem","getFocusToolbarElements","getFocusToolbarItems","keyPressedHandler","targetParent","reRenderToolbar","removeResponsiveSearch","rowSelectedFunction","rowDeSelectedFunction","CONTROL_WRAPPER","INPUT_WRAPPER","DROP_AREA","DROP_WRAPPER","LIST_PARENT","FILE","STATUS","ACTION_BUTTONS","UPLOAD_BUTTONS","CLEAR_BUTTONS","FILE_NAME","FILE_TYPE","FILE_SIZE","REMOVE_ICON","DELETE_ICON","SPINNER_PANE","ABORT_ICON","RETRY_ICON","DRAG_HOVER","PROGRESS_WRAPPER","PROGRESSBAR","PROGRESSBAR_TEXT","UPLOAD_INPROGRESS","UPLOAD_SUCCESS","UPLOAD_FAILED","TEXT_CONTAINER","VALIDATION_FAILS","RTL_CONTAINER","ICON_FOCUSED","PROGRESS_INNER_WRAPPER","PAUSE_UPLOAD","RESUME_UPLOAD","RESTRICT_RETRY","wrapperAttr","FORM_UPLOAD","HIDDEN_INPUT","INVALID_FILE","INFORMATION","FilesProp","ButtonsProps","AsyncSettings","Uploader","initialAttr","multiple","uploadedFilesData","base64String","isForm","allTypes","pausedData","uploadMetaData","btnTabIndex","disableKeyboardNavigation","actionCompleteCount","selectedFiles","uploaderName","fileStreams","newFileRef","isFirstFileOnSelection","dragCounter","fileList","filesData","uploaderOptions","setExtensions","allowedExtensions","setControlStatus","setMultipleSelection","setRTL","reRenderFileList","upload","renderButtonTemplates","unBindDropEvents","updateDropArea","checkHTMLAttributes","renderPreLoadFiles","updateDirectoryAttributes","setLocalizedTexts","preLocaleObj","browseButton","localizedTexts","uploadWrapper","updateFileList","getKeyValue","keyValue","autoUpload","uploadButton","listParent","internalCreateFileList","actionButtons","removeActionButtons","renderActionButtons","checkActionButtonStatus","Browse","Upload","invalidFileName","dropFilesHint","invalidMaxFileSize","invalidMinFileSize","invalidFileType","uploadFailedMessage","uploadSuccessMessage","removedSuccessMessage","removedFailedMessage","inProgress","readyToUploadMessage","pauseUpload","pause","resume","retry","fileUploadCancel","invalidFileSelection","totalFiles","formRendered","isPureReactComponent","browserName","directoryUpload","renderBrowseButton","initializeUpload","isPreloadFiles","wireActionButtonEvents","serverActionButtonsEventBind","unwireActionButtonEvents","uploadButtonClick","clearButtonClick","uploadText","clearText","dropAreaWrapper","setDropArea","files","clearData","files_1","fileData","rawFile","validationMessages","minSize","maxSize","statusCode","allowUpload","showFileList","sequentialUpload","dropTextArea","dropArea","dropZoneElement","enableDropText","createDropTextHint","bindDropEvents","fileDropArea","uploadStyle","newAttr","createAttribute","setAttributeNode","checkAutoUpload","sequenceUpload","isFileListCreated","updatedOldCssClass","browseButtonClick","onSelectFiles","resetForm","metaData","getCurrentMetaData","file","abortUpload","resumeUpload","chunkUpload","removeFiles","fileInfo","targetMetaData","dropElement","dragHover","onDragLeave","onPasteFile","onDragEnter","dropEffect","dataTransfer","clipboardData","pasteFile","kind","renderSelectedFiles","getAsFile","getSelectedFiles","liElement","allFiles","getFilesData","nameElements","formUpload","isFormUpload","getFilesInArray","spinnerTarget","uploadSequential","checkActionComplete","removeFilesData","customTemplate","getLiElement","removeUploadedFile","removeDirectly","ajax","asyncSettings","removeUrl","emitError","formData","FormData","beforeSend","currentRequest","httpRequest","removingEventCallback","onLoad","removeCompleted","onError","removeFailed","send","postRawFile","append","updateFormData","customFormData","customData","updateCustomheader","request","setRequestHeader","response","getResponse","readyState","updateStatus","statusElement","getFilesFromFolder","filesEntries","validDirectoryUpload","checkDirectoryUpload","webkitGetAsEntry","isFile","files_2","fileObj","fullPath","isDirectory","traverseFileTree","directoryReader","createReader","readFileFromDirectory","readEntries","entries","pushFilesEntries","targetFiles","sortFilesList","sortFileList","getBase64","fileReader","FileReader","readAsDataURL","onload","onerror","directory","isModified","modifiedFilesData","progressInterval","updateInitialFileDetails","sanitizeFile","beforeSanitize","sanitizeFileName","serializeValue","currentFileName","isUTF8","htmlTagRegex","hasHTMLString","encodedFileName","checkExtension","_internalRenderSelect","fileName","getFileType","webkitRelativePath","fileDetails","validatedFileSize","fileSource","dataFiles","updateSortedFileList","allowFormUpload","saveUrl","singleUpload","previousListClone","added","oldList","createParentUL","isBlank","dropFiles","extensions","extensions_1","extension","toLocaleLowerCase","fileSize","minSizeError","maxSizeError","minFileSize","maxFileSize","isPreLoadFile","isPreload","createCustomfileList","fileData_1","listItem","listElement","uploadTemplateFn","templateComplier","liTempCompiler","fromElements","eventsArgs","formFileList","statusMessage","fileContainer","fileData_2","fileNameEle","getFileNameOnly","fileTypeEle","fileType","rtlContainer","truncateName","formValidateFileInfo","setListToFileInfo","infoEle","bytesToSize","getFileSize","createFormInput","iconElement","mergeFileInfo","addInvalidClass","typeValidationMessage","fileData_3","fileData_4","fileNames","fileData_5","statusForFormUpload","fileData_6","formCustomFileList","createFileList","fileData_7","textContainer","textElement","fileExtension","preventActionComplete","getSlicedName","nameElement","dataset","tail","fileData_8","setInitialAttributes","filterfileList","filterFiles","updateLiStatus","createProgressBar","progressbarWrapper","progressBar","progressbarInnerWrapper","progressbarText","updateProgressbar","loaded","changeProgressValue","progressValue","uploadInProgress","customUI","cancelUploadingFile","updateProgressBarClasses","iconEle","ajax_1","removecanceledFile","renderFailureState","requestResponse","removeProgressbar","deleteIcon","pauseButton","retryElement","reloadcanceledFile","uploadComplete","raiseSuccessEvent","uploadFailed","statusText","getAllResponseHeaders","withCredentials","spinnerEle","raiseActionComplete","getSelectedFileStatus","matchFiles","matchFilesIndex","selectFileIndex","selectedFileData","fileDataIndex","callType","progressAnimation","animateProgressBar","uploadTemplate","exception","isMutiple","fileIndex","chunkSize","blob","chunkIndex","retryCount","sendRequest","totalChunk","async","contentType","chunkUploadComplete","onUploadProgress","chunkUploadInProgress","currentChunkIndex","uploadingEventCallback","chunkUploadFailed","eventCancelByArgs","removeIcon","checkChunkUpload","updateMetaData","sendNextRequest","name_2","removeChunkFile","removeChunkProgressBar","pauseIcon","chunkCount","cancelButton","retryRequest","retryAfterDelay","file_1","failureMessage","checkPausePlayAction","retryUpload","fromcanceledStage","clearIcon","progressVal","totalChunks","abortIcon","bytes","sortedFileNames","sortedFilesData","sortedFileNames_1","name_3","attributes_2","uploadFiles_1","uploadFiles","serverReadFileBase64","totalCount","reader","contents","uploadFileCount","getFileRead","fileCount","getFileInfo","uploadFilesRequest","chunkEnabled","name_4","spliceFiles","liIndex","beforeEventArgs","removingFiles","isLiRemoved","removingFiles_1","validUrl","fileUploadedIndex","removeFiles_1","fileDataFiles","pauseUploading","getFiles","resumeFiles","retryFailedFiles","cancelingFiles","cancelUpload","showHideUploadSpinner","FilesDirective","FilesPlugin","UploadedFilesDirective","UploadedFilesPlugin","UploaderComponent","UploaderPlugin","VERTICAL","DropDownButton","isPopupCreated","openPopUp","createPopupOnClick","getULElement","dropDown","getTargetElement","popupContent","isColorPicker","appendItems","hasIcon","createAnchor","beforeDisabled","afterDisabled","getPopUpElement","appendArrowSpan","setActiveElem","activeElem","attrList","popupUnWireEvents","destroyPopup","dropDownBtn","delegateMousedownHandler","mousedownHandler","popupWireEvents","closeActionEvents","focusoutHandler","triggerSelect","liTarget","selectEventArgs","popupElem","splitButton","appendReactElement","beforeOpenArgs","wrapperWidth","popupRect","popupLeft","openArgs","btnModel","arrowSpan","Row","isValDiff","makechanges","Cell","resizeClassList","suppress","Resize","tapped","isDblClk","resizeProcess","findColumn","newarray","resizeColumn","footerTable","footerTextClone","contentDivTag","footerDivTag","headerTextClone","contentTextClone","columnIndexByField","indentWidthClone","detailsElement","contentText","footerText","wHeader","wFooter","wContent","columnbyindex","colMaxWidth","calcTableWidth","contentwidth","refreshResizefrzCols","adaptiveClass","offsetWidthValue","refreshHeight","setHandlerHeight","getResizeHandlers","touchResizeStart","callAutoFit","getTargetColumn","refreshColumnWidth","refreshStackedColumnWidth","parentElementWidth","appendHelper","getPointX","minMove","removeHelper","cancelResizeAction","resizeEnd","resizing","updateCursor","removeEvents","updateResizeEleHeight","getColData","mousemove","refreshResizeFixedCols","isAutoFitCol","width_1","frzHdrRefresh","width_2","columnsRight","refreshGroupCaptionRow","capRow","getParticularCol","w","setHelperHeight","finalColumns","getSubColumns","calulateColumnsWidth","finalColumns_1","updateHelper","subColumns","cTable","isFrozenColResized","doubleTapEvent","getStackedWidth","headerRows_1","calcPos","doc","ownerDocument","timeoutHandler","HIDE_CLEAR","TEXTBOX_FOCUS","TextBox","isHiddenInput","inputPreviousValue","textboxOptions","textboxWrapper","respectiveElement","prevOnChange","multiline","textarea","autocomplete","apiAttributes","attrs_1","autoCompleteTxt","getInputValidClassList","initialValue","setInitialValue","inputClassName","animationHandler","resetValue","textboxObj","interaction","resetInputHandler","_calorificValue","_correctionFactor","_kWhConversionFactor","unitConversions","kWhToMWh","kWh","kWhToMW","isPeakload","kWhToTherms","kWhToThermsPerDay","kWhToMmbtu","kWhToM3","MWhTokWh","MWh","MWhToMW","MWhToTherms","MWhToThermsPerDay","MWhToMmbtu","MWhToM3","calorificValue","correctionFactor","kWhConversionFactor","MWTokWh","MW","MWToMWh","MWToTherms","MWToThermsPerDay","MWToMmbtu","MWToM3","thermsTokWh","therms","thermsToMWh","thermsToMW","thermsToThermsPerDay","thermsToMmbtu","thermsToM3","therm","thermsPerDayTokWh","thermsPerDay","thermsPerDayToMWh","thermsPerDayToMW","thermsPerDayToTherms","thermsPerDayToMmbtu","thermsPerDayToM3","mmbtuTokWh","mmbtu","mmbtuToMWh","mmbtuToMW","mmbtuToTherms","mmbtuToThermsPerDay","mmbtuToM3","m3TokWh","m3b","m3ToMWh","m3ToMW","m3ToTherms","m3ToThermsPerDay","m3ToMmbtu","percentageToUnit","percentage","unitToPercentage","part","convert","inputUnit","outputUnit","thermsTom3","kWhTom3","MWhTom3","MWTom3","thermsPerDayTom3","ContextMenu","FooterRenderer","gridModule","modelGenerator","tFoot","renderSummaryContent","cStart","cEnd","summaries","fragment","rowrenderer","srow","onScroll","refreshCol","mheaderCol","onWidthChange","getColFromIndex","updateFooterTableWidth","onAggregates","getIndexByKey","ds","gridData","idVal","hasVal","cItem","eData","agrVal","aggregateRows","SummaryCellRenderer","refreshWithAggregate","gColumn","groupKey","cellNode","curCell","Aggregate","initiateRender","cellFac","footerRenderer","prepareSummaryInfo","summaryIterator","cModel","gModel"],"mappings":"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CA,qCAMA,mBAKA,MAJA,8BACA,8BACA,0GACA,yDAEA,yIACA,4DAKA,kBACA,wBAGA,iEACA,kBACA,iBACA,oBACA,kGACA,iDACA,+BACA,yCACA,wCACA,sBACA,gEACA,oEAEA,6BAGA,yEACA,2BAHA,4FAMA,uEACA,6BACA,mDACA,oHACA,kGACA,+GACA,8GACA,6DACA,qEACA,uCACA,gCACA,mCACA,6BACA,mDACA,6CACA,yCACA,uDACA,oBACA,iCACA,iBACA,sBACA,uBACA,qEACA,KACA,wIACA,uBACA,6CACA,KAEA,uBACA,mDACA,KACA,wJACA,+EACA,yDACA,mBAEA,8BACA,2IAGA,yHACA,8GAGA,uDACA,wDACA,gDAEA,8DACA,sDACA,uDACA,uDACA,6BACA,yBACA,qCACA,6CACA,wDACA,6EACA,wDACA,0DAGA,qBACA,0BACA,qBACA,uBAEA,gCAKA,mBAKA,MAJA,8BACA,8BACA,iGACA,yDAEA,yIACA,4DAOA,wDAEA,mBAUA,GATA,0DACA,gBACA,8CACA,YACA,gBACA,wBACA,qBAGA,6GACA,mEACA,4BAGA,gBACA,OACA,QACA,OAEA,YACA,oBAEA,sBACA,WACA,aACA,aACA,iBACA,YACA,cACA,UACA,gBACA,iBACA,aACA,WACA,6BACA,aACA,eACA,kBACA,oBACA,wBACA,mBACA,oBACA,yBACA,iCACA,0BACA,oBACA,uBACA,oBACA,kCACA,wBACA,mCACA,8BACA,gBACA,qBACA,4BACA,mBACA,qBACA,eACA,SACA,sBACA,uBAMA,qCACA,wBACA,uBACA,yBACA,wBACA,6BACA,qBACA,kCACA,+BACA,qCACA,yCACA,8BACA,mCACA,4BACA,2BACA,2BACA,0BACA,wBACA,qBACA,iBACA,mBACA,qBACA,cACA,gBACA,sBACA,uBACA,wBACA,iBACA,oBACA,qBACA,yBACA,uBACA,eACA,8CACA,iDACA,qCACA,wBACA,iBACA,wBACA,8CACA,8FACA,4DACA,wFACA,qFACA,2EACA,MACA,iEAGA,qBASA,CACA,KACA,WAGA,cACA,qBACA,mEACA,eAEA,eACA,QACA,WACA,YAEA,sCAGA,SAEA,8BACA,2BACA,oBACA,kBAEA,UAIA,QACA,aAEA,WACA,aAEA,UACA,aAEA,cACA,aAEA,WACA,aAEA,cACA,aAEA,OACA,aAEA,WACA,aAEA,UACA,cACA,YACA,CACA,eAOA,qBACA,OACA,+CACA,8EACA,qCAIA,yBACA,OACA,mDACA,6EACA,qCAIA,mBACA,kBACA,wBAIA,UACA,oBACA,yEAEA,qBACA,oCAKA,wBACA,8EAGA,oBAEA,qCACA,uEAEA,6DAIA,SACA,qKACA,iBACA,UACA,mBAGA,eAEA,0BACA,gDACA,0CACA,iDACA,8DACA,2IAEA,gKACA,uEACA,gFACA,wGACA,wHACA,+CAGA,gKACA,uEACA,gFACA,wGACA,wHACA,+CAEA,mKACA,0EACA,mFACA,wGACA,wHACA,+CAEA,0JACA,sEACA,+EACA,kDACA,0DACA,qDAOA,8CAKA,2CAGA,cAaA,GAXA,yCACA,UACA,YAIA,8BACA,0CAIA,yGAEA,6FAEA,sDAEA,+DAEA,0EACA,uFACA,sNAEA,gOACA,yHACA,kIACA,4MACA,6NAGA,gOACA,yHACA,kIACA,oNACA,qOAGA,mOACA,4HACA,qIACA,oNACA,qOAGA,+NACA,wHACA,iIACA,oGACA,8GAcA,uBACA,uEACA,KA3HA,CA4HA,IACA,8BACA,sBACA,kBACA,0FACA,kCAIA,wBACA,SACA,eACA,8DAEA,UAEA,oCACA,2BACA,sCACA,kCAEA,uCACA,gDACA,qCAIA,yCACA,8DAQA,mCAEA,uDACA,qCACA,uBACA,cAGA,sEACA,wHACA,iCAGA,qCACA,kCACA,iBACA,WAEA,kCACA,sBACA,yBACA,yBACA,yBACA,6BACA,wBAGA,8BACA,oDACA,+DACA,gBAGA,6BACA,6CACA,wDACA,gBAGA,yBACA,oDACA,mDACA,2DACA,cACA,eACA,uCACA,UACA,2BAGA,UACA,6BAKA,gCACA,gEACA,0DACA,oFACA,cACA,eACA,uCACA,UACA,2BAIA,UACA,6BAMA,yBACA,8CACA,4CACA,qDACA,cACA,eACA,uCAEA,UACA,2BAIA,UACA,6BAKA,8BACA,aACA,cACA,YAIA,IAFA,QACA,IACA,mBACA,iCACA,sDAGA,UACA,iCAEA,wBACA,aACA,cACA,YAGA,IADA,QACA,mBACA,+BAEA,iCAEA,qKACA,WACA,6BAEA,WACA,2BAEA,2DACA,gCACA,oCACA,iBACA,EACA,4BACA,MACA,SAGA,iBACA,EACA,2BACA,MACA,SAGA,wBAEA,qhBAGA,SACA,SAGA,WACA,mDAEA,WACA,iDAEA,SACA,WACA,yBACA,MAEA,WACA,0BAEA,WACA,0BAGA,WACA,IAEA,gCAGA,GAFA,2HAEA,uIACA,uHACA,oCACA,4HAEA,MACA,mCACA,4MACA,6IACA,+HACA,WAEA,EADA,yEACA,6EAEA,0FAEA,qBACA,KACA,2BACA,MACA,SAGA,UACA,yBACA,4BACA,cAGA,iBACA,oJACA,iEACA,cAIA,iCACA,4CAEA,EADA,6BACA,6BAGA,6BAIA,EADA,yDACA,eACA,EACA,2BACA,4BACA,SAGA,GAGA,iBACA,EACA,qCACA,4BACA,UAMA,OACA,GAKA,gHAEA,OACA,qDACA,IACA,KAEA,2DACA,gCACA,oCACA,mDACA,0JACA,0IACA,yBACA,6BACA,2BACA,MACA,SACA,eACA,EACA,qCACA,MACA,SAEA,iDACA,oEACA,iEAGA,kEACA,kEACA,OAEA,EADA,yEACA,2DAEA,+EAGA,qBACA,2BACA,2BACA,MACA,SAgBA,OAXA,EAFA,+BAEA,EACA,0CACA,MAEA,kBACA,YAEA,EAKA,GAKA,+CAEA,WACA,+BAEA,oFAEA,OACA,4EACA,4CACA,iEACA,mBAEA,2FAGA,sFASA,OANA,EADA,QACA,MAGA,EAIA,GAKA,sKAEA,4BADA,QACA,4DAEA,6BAEA,uBAEA,kGACA,WACA,mBAGA,QAOA,OAJA,0EACA,QAGA,kCAEA,0BACA,8CAQA,oDAOA,IAPA,IAgBA,EAhBA,8DACA,OACA,mDAIA,0BACA,mBACA,qBACA,cACA,uBAOA,oCACA,gBACA,+BAEA,OADA,6BACA,IACA,KAEA,wBAGA,IAEA,EAFA,SAEA,iDACA,sEACA,oBACA,QACA,IACA,IACA,IACA,IAEA,+BAEA,yCACA,yBACA,iDACA,kDACA,oCACA,6BAGA,8BACA,4BACA,wCACA,gCACA,0CACA,gCACA,2BACA,mCACA,4CACA,iBACA,2BACA,gBACA,8BACA,wDACA,sDACA,gDACA,0IACA,kCACA,wCACA,sCACA,cACA,OACA,gBAEA,YAEA,8BAEA,UAEA,6CACA,IAOA,EAPA,IACA,mFAEA,oEACA,0DACA,+CAEA,iDACA,SACA,8BAEA,UAEA,qDACA,IAOA,EAPA,IACA,iDAEA,oEACA,0DACA,+CAEA,iDACA,gBACA,8BAEA,UAEA,iCACA,WACA,wBACA,eACA,SACA,MACA,eACA,SACA,MACA,eACA,YACA,MACA,UACA,QACA,MACA,QACA,SACA,MAEA,UAEA,iCACA,wEACA,0DAEA,iDAIA,iHACA,sBAKA,GAHA,mDACA,8BAEA,0EAkBA,IAMA,EANA,yFACA,0DACA,2CAGA,uHACA,WAOA,IAPA,2BACA,8BACA,uEACA,+BACA,IACA,cALA,+BAOA,8BACA,gBACA,wCACA,+HACA,yHAEA,mCACA,iCACA,iJACA,sDACA,0CAEA,4DACA,sJAEA,CAaA,+BACA,oCACA,2CACA,qCAEA,mCACA,iCACA,4MAEA,kDACA,sDACA,0CAEA,iMAGA,+BAKA,4BAGA,2GACA,wFAEA,kBACA,2LACA,mMAEA,yBACA,yJAGA,kMAIA,6DA+BA,EA/BA,wHAGA,+BAEA,GACA,OACA,OACA,UACA,MACA,QACA,WACA,WACA,cACA,UACA,aAEA,GACA,OACA,OACA,UACA,MACA,QACA,WACA,WACA,cACA,UACA,aAEA,0EAEA,iDACA,WACA,cACA,2BAEA,kCAEA,EAFA,IAEA,6CACA,qDACA,+EACA,cACA,gGAGA,8BAEA,sFACA,cACA,qGAEA,+FACA,UAEA,wDAGA,+BAEA,GACA,OACA,OACA,UACA,MACA,QACA,WACA,WACA,cACA,UACA,aAEA,GACA,OACA,OACA,UACA,MACA,QACA,WACA,WACA,cACA,UACA,aAEA,IACA,KACA,4IACA,sHAEA,MAEA,cAEA,sDACA,sDAEA,2DACA,iBACA,EACA,2BACA,4BACA,cAIA,CACA,0EAEA,EAFA,IAEA,iDACA,WACA,cACA,2BAEA,kCAEA,EAFA,IAEA,6CACA,qDACA,+EACA,cACA,gGAGA,8BAEA,sFACA,cACA,qGAGA,uEAGA,kFACA,kFAGA,2DACA,iBACA,EACA,2BACA,4BACA,UAQA,GAFA,KAEA,eACA,0DACA,4BAGA,OADA,yBACA,qDAEA,6GAGA,0BACA,kDACA,cACA,kFAEA,uEACA,gDACA,YACA,8EAEA,mEACA,iDACA,kBACA,8BAEA,iJAEA,gHACA,gBACA,4HACA,gIAEA,2CACA,sCACA,wBACA,2BACA,qCACA,SAGA,+CAKA,WACA,wCACA,mHACA,oGAEA,4GACA,4FAGA,wCACA,uBACA,wCACA,+EACA,0CACA,kEAGA,6FACA,4DAEA,2DACA,yDACA,kCAIA,wBACA,8BACA,MACA,eAGA,oCACA,oBACA,mCACA,+BAEA,uBACA,mFAEA,4BACA,6CACA,2BACA,4DACA,sEACA,oHACA,kCAGA,mCACA,mBACA,mDACA,sDACA,wCACA,MACA,sDACA,+CACA,wCAEA,UACA,0BAEA,UACA,4BAGA,UACA,0BAEA,sDACA,+CACA,0CAGA,2CACA,sBACA,6BACA,kCACA,uBACA,uBACA,iCACA,MACA,gCACA,IACA,iBACA,kCACA,yDAEA,sBAKA,sCAJA,kCACA,gEAQA,MAEA,2BACA,6BACA,6CACA,gDACA,gDACA,gDACA,oDACA,yBACA,yBACA,yBACA,6BACA,kBACA,sBACA,mCACA,2BAEA,uBACA,iEACA,MAEA,uCACA,OAGA,GAFA,yBACA,8BACA,yBACA,uDACA,2BACA,IACA,iDAGA,0EACA,iEAEA,+GAEA,6CACA,yCACA,gDACA,uCACA,yBACA,6GACA,mDACA,uDAEA,4BAEA,mBACA,aACA,0IACA,2DAIA,uBACA,qCACA,kEAEA,uEAEA,MAEA,0BACA,gCACA,yBACA,gDACA,gDACA,gDACA,oDAEA,yBACA,yBACA,yBACA,6BAEA,kBACA,+CACA,wCAEA,uBACA,oEACA,MAGA,4BACA,6BACA,yBACA,gDACA,gDACA,oDAEA,yBACA,yBACA,6BAEA,mBAGA,uBACA,oEACA,MAEA,4BACA,yBACA,gDACA,oDACA,yBACA,6BACA,qCACA,sFACA,uBACA,oEACA,MAEA,wCACA,OACA,4BACA,4CACA,qGACA,oGACA,6BACA,yHAEA,oBACA,uCAEA,mBACA,YACA,8IAKA,6BAEA,gDACA,oDACA,0CACA,yCACA,oCACA,6BACA,yBACA,6BAEA,uBACA,mEACA,MAEA,4CAEA,OAIA,GAFA,6CACA,kDACA,cACA,yBAEA,OAEA,gCACA,0FACA,sGAEA,uBACA,yBAEA,kFACA,6CACA,iEACA,iDAEA,oFACA,yBAEA,qIACA,gGACA,6BAEA,uEACA,sEACA,wBAEA,0FAEA,sBACA,sBACA,sBACA,yBAEA,oBACA,gDAMA,mBACA,YACA,8IAIA,oCACA,2CACA,iDAEA,4CACA,+BACA,iCACA,oDACA,2HACA,+DAEA,yFAKA,qCAGA,mCACA,iDAEA,iHACA,8DACA,oCACA,wCACA,gDACA,wDAEA,mDACA,6DAGA,2FAGA,SACA,4FAEA,6DAEA,6EACA,qCAEA,0FACA,OAIA,GAHA,aACA,QAEA,WACA,6BACA,mBAIA,4BACA,6GACA,gDACA,wDACA,uCACA,8DACA,gDACA,0CACA,GACA,wBACA,uEAEA,wBACA,uEAEA,sDAEA,OACA,sHAKA,MACA,0DAEA,0BACA,4BAEA,2GAIA,gEAEA,sBACA,yBACA,gDAEA,6BACA,oDAGA,yBACA,6BAEA,0BACA,0BACA,iDAEA,0BACA,iDAEA,0BACA,iDAEA,8BACA,qDAEA,yBACA,gDAEA,6BACA,oDAGA,yBACA,6BAEA,gCACA,6BACA,oDAEA,oCACA,6BAEA,uCAEA,gGACA,uBACA,kBACA,iBACA,uBACA,qCACA,QACA,mBACA,yBACA,8IAMA,sCAEA,2CACA,uBACA,kBACA,gBACA,uBACA,mCACA,QACA,mBACA,yBACA,8IAIA,2CACA,8GACA,uBACA,kBACA,mBACA,uBACA,uCACA,QAEA,mBACA,yBACA,8IAIA,wCACA,uCACA,kBACA,mBACA,uBACA,+CACA,QAEA,mBACA,yBACA,8IAIA,6CACA,gHACA,uBACA,kBACA,4BACA,mBACA,qBACA,uBACA,yCACA,OAGA,eACA,qBACA,eACA,sFAEA,mBACA,yBACA,8IAIA,kCAEA,kBACA,mCACA,2BAGA,4CACA,wBACA,uBACA,kBACA,uBACA,uBACA,iDACA,KAIA,IAHA,uEACA,KACA,KACA,mBACA,aACA,aACA,cAGA,cACA,mBACA,yBACA,8IAIA,0CACA,qEACA,uBACA,kBACA,kBACA,uBACA,uCACA,OAEA,mBACA,yBACA,8IAIA,4CACA,OACA,mCACA,IACA,6BAEA,uBACA,kBACA,sBACA,uBACA,uDACA,KAEA,8BACA,gIAEA,mBACA,yBACA,8IAIA,+CAEA,sBACA,uBACA,kBACA,6BAEA,mBACA,yBACA,8IAKA,uCACA,OACA,GACA,uCAUA,uBACA,kBACA,oBACA,mBACA,yBACA,8IARA,4FAYA,0CACA,8DACA,kBACA,oBACA,mBACA,yBACA,8IAIA,4CACA,qGACA,kBACA,oBACA,uBAEA,0BACA,qCACA,gCACA,2CAIA,0BACA,qCACA,gCACA,6CAGA,mBACA,YACA,+CAGA,mHACA,KACA,WACA,2BAGA,IACA,EADA,iCACA,WA0CA,IA1CA,2BAEA,uEACA,gCACA,QACA,yBACA,0BACA,mCACA,2BACA,aACA,qCACA,2BACA,yBACA,iCACA,mCACA,iCACA,6BACA,6DACA,yDACA,2CACA,iCACA,mBAEA,4DACA,8DACA,yBACA,mDACA,iDACA,2CACA,+HACA,2CACA,qCACA,qCACA,+BACA,uBACA,iBACA,WACA,4DACA,6BACA,YACA,2BAxCA,+BA0CA,8BAEA,UAGA,8OACA,OACA,KACA,WACA,2BAEA,WACA,0BAGA,uBACA,IACA,EADA,8BACA,WAsDA,QAtDA,2BACA,uEACA,gCACA,+IACA,GACA,uFACA,yBACA,0BACA,mCACA,2BACA,aACA,qCACA,2BACA,yBACA,iCACA,mCACA,iCACA,6BACA,wDACA,oDACA,2CACA,uBACA,cACA,4DACA,yDACA,yBACA,mDACA,iDACA,2CACA,+HACA,2CACA,qCACA,qCACA,+BACA,aACA,iBACA,WACA,gDACA,6BACA,wBACA,kBACA,yBAGA,gDACA,kEACA,mCACA,gHACA,2CAEA,OAGA,WArDA,+BAsDA,8BAEA,UAEA,+JAQA,8GACA,eAMA,OANA,4BAGA,gBACA,+IACA,wDACA,kBACA,+DAEA,SAlBA,gDAmBA,0NAEA,GADA,oBAEA,kCACA,6BACA,qDACA,8BAEA,OADA,2DACA,iFAHA,2BAWA,GAFA,mEACA,sFACA,6CACA,uGACA,uDACA,yCAEA,OADA,uDACA,oFAKA,wEAEA,OADA,uDACA,yGASA,GANA,yEACA,gCACA,qBAIA,8BACA,mBAKA,GAJA,mEACA,4QACA,oEACA,0DACA,2CAEA,+CACA,iMAMA,GAHA,KACA,8EAEA,iFAaA,GAVA,yEACA,qCAEA,wBAEA,0FACA,OACA,aACA,QAEA,WACA,yBACA,mBAMA,IAFA,oBAEA,oDAoBA,GAlBA,wBACA,6GACA,gDACA,wDACA,uCACA,8DACA,gDACA,0CACA,GACA,oGAEA,qDAEA,iEACA,kJACA,iEAEA,yKACA,iBAQA,CAEA,yFACA,yCACA,6EAEA,4CACA,+EACA,4RACA,kCAEA,4CACA,+EACA,oHAEA,0MACA,IACA,KACA,mKAEA,oCA3BA,8DACA,qKACA,IACA,gLA8BA,oBA4BA,CAEA,4GAGA,4CACA,iLACA,IACA,KACA,qCAEA,oCA/BA,GALA,wFACA,8MACA,IACA,sCAEA,mBAEA,4CACA,4CACA,0CACA,gEACA,GACA,6GACA,yGAEA,yNACA,8EACA,0KACA,IACA,KACA,yCAEA,+BAiBA,EACA,mCAEA,oBACA,iDAEA,SA/KA,gDAgLA,mCACA,uDACA,WACA,IACA,UAEA,gBACA,yCACA,uCACA,mDACA,2CACA,0BACA,8CAEA,qDACA,2CACA,0EACA,sEACA,+CACA,yEACA,mFACA,8DACA,kJACA,6CACA,mDACA,iDACA,iDACA,6EACA,4EACA,4FACA,sHACA,iEACA,wEACA,0DACA,2CACA,KACA,sBAEA,qBACA,4GACA,KACA,WAEA,6DACA,kBACA,4GACA,6BACA,0DACA,mBACA,aACA,0IACA,2DAIA,sDACA,mFAGA,0DACA,kBACA,4FACA,6BACA,uDACA,2BACA,qHAEA,oHAEA,mBACA,aACA,0IACA,gEAWA,mFAQA,IAPA,IAgdA,EAhdA,KACA,4CACA,IACA,qDAEA,qKAIA,iDACA,gDACA,gEACA,4DACA,8DAEA,uGAEA,0EACA,qCAEA,qBACA,2CACA,0IAEA,8DAEA,2FACA,OAIA,GAHA,aACA,QAEA,WACA,yBACA,mBAIA,iBAEA,yCACA,6GACA,gDACA,wDACA,uCACA,8DACA,gDACA,0CACA,GAEA,kFAEA,2JAEA,iBAuKA,CAGA,0BACA,uFACA,sCACA,sBACA,sCACA,mEACA,sEACA,gPACA,qPACA,IACA,EADA,IACA,sCACA,4EAGA,6QACA,yKACA,kIACA,oHACA,0HARA,+BAUA,8BAEA,SACA,WAEA,oCACA,0EAEA,8DACA,+BACA,iBAEA,4DACA,kBACA,+IAUA,GATA,6BACA,uDACA,2BACA,4DACA,mIAEA,4HAGA,eAwBA,GAvBA,kBAEA,4DACA,kBACA,0JACA,6BACA,uDACA,4CACA,4DACA,mIAEA,+HAGA,mBACA,aACA,0IACA,2DAMA,8BAEA,8DACA,EADA,IACA,wDACA,4LAEA,uJAIA,cACA,uBACA,EADA,IACA,iDACA,+BACA,oBACA,mBACA,gBACA,4FACA,wFAEA,+LACA,2HAEA,8BACA,gCACA,+BAKA,kCACA,SACA,8BACA,kBAEA,4DACA,kBACA,gKACA,6BACA,uDACA,YACA,4DACA,mIAEA,+HAGA,mBACA,aACA,0IACA,gEAQA,mBACA,aACA,0IACA,2DAMA,wDACA,kBACA,+IAUA,GATA,6BACA,uDACA,sBACA,2BACA,qHAEA,kHAGA,eAsBA,GApBA,wDACA,kBACA,0JACA,6BACA,uDACA,uCACA,2BACA,qHAEA,qHAGA,mBACA,aACA,0IACA,2DAKA,8BAEA,8DACA,EADA,IACA,wDACA,4LAEA,uJAIA,cACA,uBACA,EADA,IACA,iDACA,+BACA,oBACA,mBACA,gBACA,4FACA,wFAEA,+LACA,2HAEA,8BACA,gCACA,+BAOA,kCACA,SACA,8BAEA,wDACA,kBAEA,gKACA,6BACA,uDACA,OACA,2BACA,qHAEA,qHAGA,mBACA,aACA,0IACA,gEAOA,mBACA,aACA,0IACA,gEAnYA,GAbA,sBACA,sCACA,mEACA,sEACA,gPACA,qPACA,0EACA,gEACA,sCACA,oBACA,mBACA,yBAEA,iBAEA,4DACA,kBACA,uIAYA,GAXA,6BACA,uDACA,2BACA,4DACA,mIAEA,4HAKA,eAGA,cAGA,IAHA,kBAIA,sFAEA,KACA,eAEA,EAFA,IAEA,6CACA,uCACA,8HACA,GACA,6GACA,yGAEA,0JACA,+GACA,kIACA,gEAEA,oHACA,0HAbA,+BAeA,8BACA,kBAEA,4DACA,kBACA,8JACA,6BACA,uDACA,YACA,4DACA,mIAEA,+HAGA,mBACA,aACA,0IACA,4DAvCA,yDA+CA,mBACA,aACA,0IACA,+DAIA,CAIA,kBAGA,IAFA,SAEA,kDACA,sFAEA,eAEA,EAFA,IAEA,6CACA,uCACA,8HACA,GACA,6GACA,yGAEA,0JACA,+GACA,kIACA,gEAEA,oHACA,0HAbA,+BAeA,+BAGA,uBAGA,wDACA,kBACA,uIACA,6BACA,uDACA,sBACA,2BACA,qHAEA,kHAIA,8BAEA,2EACA,kBAEA,8JACA,6BACA,uDACA,OACA,2BACA,qHAEA,qHAGA,mBACA,aACA,0IACA,8DAKA,mBACA,aACA,0IACA,2DAwPA,KAxcA,6DAgdA,kBA+HA,6BACA,sDACA,kFACA,kCACA,oBAEA,+DACA,kBACA,iHASA,GARA,6BACA,4DACA,4DACA,mIAGA,2HAEA,eAEA,mGAEA,KAKA,GAJA,WAIA,mCACA,EADA,IACA,wDACA,8MAEA,yGAIA,cACA,uBACA,EADA,IACA,iDACA,oBACA,mBACA,gBACA,4FACA,wFAEA,+LACA,+GAEA,8BACA,gCACA,+BAuBA,GArBA,kBAEA,4DACA,kBACA,yHACA,6BACA,4DACA,4DACA,mIAEA,8HAEA,mBACA,aACA,0IACA,2DAMA,+BACA,SACA,8BACA,kBAEA,4DACA,kBACA,+HACA,6BACA,4DACA,4DACA,mIAEA,8HAEA,mBACA,aACA,0IACA,gEAMA,mBACA,aACA,0IACA,2DAMA,2DACA,kBACA,oGASA,GARA,6BACA,uDACA,2BACA,qHAEA,iHAGA,eAEA,mGAEA,KAIA,GAHA,WAGA,mCACA,EADA,IACA,wDACA,8MAEA,yGAIA,cACA,uBACA,EADA,IACA,iDACA,oBACA,mBACA,gBACA,4FACA,wFAEA,+LACA,+GAEA,8BACA,gCACA,+BAoBA,GAjBA,wDACA,kBACA,4GACA,6BACA,uDACA,2BACA,qHAEA,oHAEA,mBACA,aACA,0IACA,2DAIA,+BACA,SACA,8BAGA,wDACA,kBACA,kHACA,6BACA,0DACA,mBACA,aACA,0IACA,gEAOA,mBACA,aACA,0IACA,6DA1TA,yEACA,mFACA,oBACA,sBACA,4BAEA,oBAEA,+DACA,kBACA,yGAQA,GAPA,6BACA,4DACA,4DACA,mIAEA,2HAEA,eACA,mBACA,SACA,gDAEA,EAFA,IAEA,6CACA,yBACA,mBACA,2CACA,gEACA,GACA,6GACA,yGAEA,8MACA,gHAVA,+BAYA,8BACA,kBAEA,4DACA,kBACA,wHACA,6BACA,4DACA,4DACA,mIAEA,8HAEA,mBACA,aACA,0IACA,+DAMA,mBACA,aACA,0IACA,2DAMA,2DACA,kBACA,4FAQA,GAPA,6BACA,uDACA,2BACA,qHAEA,iHAEA,eACA,mBACA,SACA,gDAEA,EAFA,IAEA,6CACA,yBACA,mBACA,2CACA,gEACA,GACA,6GACA,yGAEA,8MACA,gHAVA,+BAaA,8BACA,wDACA,kBACA,4GACA,6BACA,uDACA,2BACA,qHAEA,oHAEA,mBACA,aACA,0IACA,+DAMA,mBACA,aACA,0IACA,6DAgNA,+BACA,SAeA,OAdA,iBAKA,2BACA,KACA,mCACA,OACA,UARA,0DACA,MAYA,GAEA,wBACA,SACA,oBACA,yCACA,qDACA,MASA,OAJA,2DACA,MAGA,GAEA,kCACA,kGAEA,yBACA,yBACA,kEACA,yIAEA,iIAGA,8BACA,oIAEA,gIAIA,IACA,WAGA,4FACA,uBACA,YACA,iBACA,qBACA,UACA,qBACA,+BACA,iBACA,iBACA,kCACA,eAGA,uCACA,UACA,mBACA,qBACA,UACA,qBACA,6CACA,oDACA,iBACA,iBACA,kCACA,eAGA,yBACA,WACA,UACA,+BACA,oBACA,MACA,uCACA,4BACA,MACA,gDACA,sBACA,MACA,gCACA,eACA,MACA,yBACA,eACA,MACA,8BACA,eACA,MACA,oBACA,eACA,MACA,QACA,kBACA,MAGA,UAEA,uBACA,IACA,YAIA,SACA,mDClqHiW,M,yBCQ7Vx5C,GAAY,gBACd,GACA/a,EACAuzD,GACA,EACA,KACA,KACA,MAIa,aAAAx4C,G,6CCnBf,8GAUO,SAAS05C,IACZ,MAAO,CAAC,aAAc,gBAAiB,iBAAkB,oBAAqB,kBAAmB,eAC7F,gBAAiB,YAAa,UAAW,kBAAmB,aAAc,iBAAkB,eAC5F,6BAA8B,iBAAkB,YAChD,gBAAiB,SAAU,SAAU,eAAgB,YAAa,QAAS,cAAe,YAC1F,YAAa,cAAe,eAAgB,mBAAoB,cAAe,qBAAsB,iBACrG,gBAAiB,mBAMzB,IAAIC,EAAuB,WAQvB,SAASA,EAAMz5C,EAAQ46B,GACnBxpD,KAAKsoE,cAAe,EACpBtoE,KAAKuoE,QAAU,IAAI,OACnBvoE,KAAK4uB,OAASA,EACV5uB,KAAK4uB,OAAOE,cAGhB9uB,KAAK4uB,OAAOG,GAAG,QAAqB/uB,KAAKwoE,iBAAkBxoE,MAC3DA,KAAKyoE,oBAAsBzoE,KAAK4lE,YAAYhgE,KAAK5F,MACjDA,KAAK4uB,OAAOiqB,iBAAiB,OAAoB74C,KAAKyoE,qBACtDzoE,KAAK4uB,OAAOG,GAAG,QAAgB/uB,KAAK0oE,QAAQ9iE,KAAK5F,OACjDA,KAAK4uB,OAAOG,GAAG,QAAuB/uB,KAAK2oE,eAAgB3oE,MAC3DA,KAAKwpD,aAAeA,GA2NxB,OAzNA6e,EAAMnoE,UAAUsoE,eAAiB,WAC7B,IAAInlE,EAAQrD,KACZ,OAAIA,KAAK4oE,eAAqD,SAAnC5oE,KAAK4uB,OAAOi6C,oBAAkC7oE,KAAK4uB,OAAOwxB,UAG9E,WACH/8C,EAAMklE,QAAQn4C,QAAQC,MAAK,WACvBhtB,EAAMylE,kBAENzlE,EAAMulE,eACNvlE,EAAMslE,kBAPH3oE,KAAK8oE,cAWpBT,EAAMnoE,UAAUyoE,eAAiB,WAC7B3oE,KAAK+oE,eAAe/oE,KAAK4uB,QACzB,IAAIo6C,EAAeziE,OAAOyiE,aACtBA,IAAiBA,EAAa5lE,QAAQ8I,cAAc,oBACpD88D,EAAaC,YAAYV,QAAQp4C,WAUzCk4C,EAAMnoE,UAAUgpE,MAAQ,WACpBlpE,KAAKmpE,mBAETd,EAAMnoE,UAAUwoE,QAAU,WAClB1oE,KAAK4oE,eACL5oE,KAAK8oE,gBAGbT,EAAMnoE,UAAU0lE,YAAc,WACtB5lE,KAAK4oE,gBACL5oE,KAAKsoE,cAAe,IAG5BD,EAAMnoE,UAAUipE,gBAAkB,WAC9B,IAAI72C,EAAOtyB,KAAK4uB,OACZxrB,EAAU,eAAc,MAAO,CAC/BkI,GAAItL,KAAK4uB,OAAOxrB,QAAQkI,GAAK,SAAU9G,UAAW8tB,EAAKlvB,QAAQoB,UAAY,kBAE/EpB,EAAQ8B,UAAUC,OAAO,eACzByI,SAAS6B,KAAK/K,YAAYtB,GAE1B,IADA,IAAIgmE,EAAY,IAAI,OAAK,eAAkB92C,EAAMA,EAAKu2C,qBAC7C7nE,EAAI,EAAGA,EAAIooE,EAAUj6C,QAAQxuB,OAAQK,IAC1CooE,EAAUj6C,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAO,eAAO,GAAIw3D,EAAUj6C,QAAQxd,SAAS3Q,EAAE4Q,WAAY,MAChG0gB,EAAK4nB,iBAAmB5nB,EAAK+2C,qBAC7BD,EAAUj6C,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK03D,YAAS/9D,GAI3DvL,KAAK4uB,OAAOxX,YAEZgyD,EAAU94D,iBAAmBtQ,KAAK4uB,OAAOte,kBAG7C84D,EAAUG,KAAO,aACjBH,EAAU95C,MAAQgD,EAAKiE,WAAWC,QAClCjwB,OAAOyiE,aAAeI,EACtBA,EAAUI,YAAa,EACvB,IAAI1jD,EAAUsjD,EAAUK,qBACpBC,EAAiBp3C,EAAKm3C,qBACrB3jD,GAAWA,EAAQnlB,SAAW+oE,EAAe/oE,QAC9CyoE,EAAUO,mBAAmBD,GAEjCp3C,EAAK1Y,OAAO,QAAsB,CAAExW,QAASA,EAASwmE,UAAWR,IACjEppE,KAAK4uB,OAAOqD,IAAI,kBAAmBjyB,KAAK8U,iBACxCs0D,EAAUtP,mBAAqB95D,KAAK4uB,OAAOkrC,mBAC3CsP,EAAUjzC,MAAQn2B,KAAK4uB,OAAOuH,MAC9BizC,EAAU/iD,SAASjjB,GACdkvB,EAAKjG,SACN+8C,EAAUnhE,QAAUqqB,EAAKrqB,UAGjCogE,EAAMnoE,UAAU4oE,aAAe,WAC3B,GAAI9oE,KAAK4oE,cAAe,CACpB,IAAIt2C,EAAOtyB,KAAK4uB,OAChB,GAAI5uB,KAAKsoE,aAEL,YADAtoE,KAAKopE,YAGT,IAAIrjD,EAAO,CACPgI,YAAa,QACb3qB,QAASkvB,EAAKlvB,QACdymE,aAAcv3C,EAAKssB,kBAAkBl8B,iBAAiB,4BACtDjU,QAAQ,EACRo6D,mBAAoBv2C,EAAKu2C,oBAK7B,GAHK7oE,KAAKsoE,cACNh2C,EAAKrqB,QAAQ,OAAoB8d,GAEjCA,EAAKtX,OAEL,YADA,eAAO6jB,EAAKlvB,SAGXpD,KAAKsoE,cACNtoE,KAAKopE,cAIjBf,EAAMnoE,UAAUkpE,UAAY,WACxB,IAAI92C,EAAOtyB,KAAK4uB,OAEhB,GAAoB,SAAhB0D,EAAKjtB,OAAmB,CACxB,IAAI01C,EAAW/6C,KAAKwpD,aAAaxO,mBAC7B8uB,EAAax3C,EAAKlvB,QAAQ8I,cAAc,IAAM,QAC9C69D,EAAYz3C,EAAKlvB,QAAQ8I,cAAc,IAAM,QACjD49D,EAAW/iE,MAAM1B,OAAS,OAC1BykE,EAAW/iE,MAAMg3C,UAAY,OAC7BgsB,EAAUhjE,MAAMg0C,EAASG,SAAW,GACpC6uB,EAAUtoD,kBAAkB1a,MAAMg0C,EAASE,QAAU,GAGrD3oB,EAAKI,gBACAJ,EAAKK,cAAcxD,QAAQxuB,OAI5BX,KAAK+oE,eAAez2C,GAHpBA,EAAKlvB,QAAQ8I,cAAc,oBAAoBnF,MAAMC,QAAU,QAOvE,IAAK,IAAI6G,EAAK,EAAGhK,EAAK,GAAG6J,MAAMpK,KAAKgvB,EAAKlvB,QAAQ+U,uBAAuB,SAAoBtK,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC9G,IAAIzK,EAAUS,EAAGgK,GACjBzK,EAAQ2D,MAAM01D,UAAY,SAI9B,IADA,IAAIuN,EAAa,GAAGt8D,MAAMpK,KAAKgvB,EAAKlvB,QAAQ+U,uBAAuB,gBAC1DrU,EAAK,EAAGo3B,EAAK,GAAGxtB,MAAMpK,KAAK0mE,GAAalmE,EAAKo3B,EAAGv6B,OAAQmD,IAAM,CAC/DV,EAAU83B,EAAGp3B,GACjB,eAAUV,EAAS,CAAC,eAAgB,CAAC,gBAEzCpD,KAAKiqE,iBAAiB33C,GACtBA,EAAKk3C,YAAa,SACXjjE,OAAOyiE,aACd,IAAIjjD,EAAO,CACP3iB,QAASkvB,EAAKlvB,SAElBkvB,EAAKrqB,QAAQ,QAAsB8d,GACnCuM,EAAK9f,UACLxS,KAAK4uB,OAAOqD,IAAI,qBAAsBjyB,KAAK8U,kBAE/CuzD,EAAMnoE,UAAU+pE,iBAAmB,SAAU33C,GACzC,eAAUA,EAAKlvB,QAAS,CAAC,uBAAwB,CAAC,iBAC9CkvB,EAAKk3C,YACL,eAAOl3C,EAAKlvB,SAEhBpD,KAAKkqE,UAAY3jE,OAAOb,KAAK,GAAI,QAAS,UAAYa,OAAO4jE,YAAc,UAAY5jE,OAAO6jE,WAAa,cAC3GpqE,KAAKkqE,UAAUG,OAAO,EAAG,GACzBrqE,KAAKkqE,UAAUI,SAASC,OAAOC,WAAYD,OAAOE,aAClDzqE,KAAKkqE,UAAY,gBAAY53C,EAAKlvB,QAASpD,KAAKkqE,YAEpD7B,EAAMnoE,UAAU6oE,eAAiB,SAAUz2C,GACvC,IAAI1Q,EAAQ0Q,EAAKK,cAAcxD,QAAQxuB,OACnCyC,EAAUkvB,EAAKlvB,QACfkI,EAAK,IAAMgnB,EAAKlvB,QAAQkI,GAC5B,GAAKsW,EAAL,CAKA,IAFA,IAAI8oD,EAAe,gBAAU,kBAAmBtnE,GAC5CunE,EAAUD,EAAa9oD,EAAQ,GAAGlX,aAAa,WAC1C1J,EAAI,EAAGA,EAAI0pE,EAAa/pE,OAAQK,IACrC0pE,EAAa/4D,SAAS3Q,EAAE4Q,WAAY,KAAKjH,aAAa,UAAWggE,GAErE,IAAIC,EAAY,gBAAU,WAAat/D,EAAK,WAAYlI,GACpDynE,EAAmB,gBAAU,sBAAuBznE,GACpD0nE,EAAkB,gBAAU,6BAA8B1nE,GAC9DpD,KAAK+qE,aAAaH,EAAWhpD,GAC7B5hB,KAAK+qE,aAAaF,EAAkBjpD,GACpC5hB,KAAK+qE,aAAaD,EAAiBlpD,KAEvCymD,EAAMnoE,UAAU6qE,aAAe,SAAUH,EAAWhpD,GAChD,IAAK,IAAI5gB,EAAI,EAAGA,EAAI4pE,EAAUjqE,OAAQK,IAClC,IAAK,IAAIs2B,EAAI,EAAGA,EAAI1V,EAAO0V,IACvBszC,EAAUj5D,SAAS3Q,EAAE4Q,WAAY,KAAKgP,SAASjP,SAAS2lB,EAAE1lB,WAAY,KAAK7K,MAAMC,QAAU,QAUvGqhE,EAAMnoE,UAAU0oE,YAAc,WAC1B,OAAO5oE,KAAK4uB,OAAOxrB,QAAQkI,GAAGtH,QAAQ,UAAY,GAAKhE,KAAK4uB,OAAO46C,YAQvEnB,EAAMnoE,UAAUsS,QAAU,WAClBxS,KAAK4uB,OAAOE,cAGhB9uB,KAAK4uB,OAAOyF,IAAI,QAAqBr0B,KAAK8oE,aAAaljE,KAAK5F,OAC5DA,KAAK4uB,OAAOgtB,oBAAoB,OAAoB57C,KAAKyoE,qBACzDzoE,KAAK4uB,OAAOyF,IAAI,QAAgBr0B,KAAK0oE,QAAQ9iE,KAAK5F,OAClDA,KAAK4uB,OAAOyF,IAAI,QAAuBr0B,KAAK2oE,kBAQhDN,EAAMnoE,UAAU4U,cAAgB,WAC5B,MAAO,SAEXuzD,EAAM2C,cAAgB5C,IAAqBn5B,OAAO,CAAC,OAAoB,QAAsB,UACtFo5B,EA/Oe,I,yECiCf,E,4DAvDPhpE,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxCK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAW5DqqE,EAAe,iBACfl1D,EAAQ,UACRI,EAAQ,UACR+0D,EAAiB,QACjBC,GAAM,IAAIxyD,MAAOkuB,UACjBpI,GAAQ,IAAI9lB,MAAOquB,WACnBxI,GAAO,IAAI7lB,MAAOQ,cAClB3X,EAAO,eACPmU,EAAU,QACVC,EAAU,YACV9T,EAAU,YACV4U,EAAW,WACX00D,EAAQ,UACRC,EAAa,eACbrsC,EAAW,aACXssC,EAAgB,cAGhBC,EAAQ,gBACRC,EAAY,cACZC,EAAe,EACfC,EAAoB,GACpBr1D,EAAW,kBACXs1D,EAAY,EACZC,EAAW,aACXC,EAAoB,CAAC,QAAS,QAAS,UAG3C,SAAWC,GAEP,SAASC,EAAgBC,EAAWvvD,EAAKpD,EAAKkB,EAAW0xD,EAAY79C,GACjE,IAQIlM,EAPAliB,KAAKoc,aAQT,IAAI8vD,EAAkB,IAAP99C,EACX+9C,EAAY,GACZC,EAAkB,GACtBlqD,GAAUzF,EAAIwN,gBAAgB,GAC9B,IAAI9H,GAAQ9I,EAAI4Q,gBAAgB,GAChC,MAAO9H,GAAOD,EACVkqD,EAAgB//D,KAAK6V,GACrBiqD,EAAU9/D,KAAKkO,EAAU8B,WAAW,IAAI1D,KAAKuJ,GAAQ,CAAE5F,OAAQ2vD,EAAYz9D,KAAM,UACjF0T,GAASgqD,EAEb,IAAIG,EAAU,OAASC,WAAWN,EAAWG,EAAW,MAAM,GAC9D,MAAO,CAAE1hC,WAAY2hC,EAAiBG,KAAMF,GAEhDP,EAAeC,gBAAkBA,GAzBrC,CA0BG,IAAmB,EAAiB,MACE,SAAUlpE,GAE/C,SAAS2pE,IACL,OAAkB,OAAX3pE,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAF/DX,EAAUmtE,EAAqB3pE,GAI/BzC,EAAW,CACP,eAAS,QACVosE,EAAoBtsE,UAAW,WAAO,GACzCE,EAAW,CACP,eAAS,UACVosE,EAAoBtsE,UAAW,aAAS,GAC3CE,EAAW,CACP,eAAS,SACVosE,EAAoBtsE,UAAW,YAAQ,GAC1CE,EAAW,CACP,eAAS,oBACVosE,EAAoBtsE,UAAW,oBAAgB,GAClDE,EAAW,CACP,eAAS,SACVosE,EAAoBtsE,UAAW,YAAQ,GAC1CE,EAAW,CACP,eAAS,WACVosE,EAAoBtsE,UAAW,cAAU,GAC5CE,EAAW,CACP,eAAS,WACVosE,EAAoBtsE,UAAW,cAAU,IAzBR,CA2BtC,QAa8B,SAAU2C,GAStC,SAAS4pE,EAAWtpE,EAASC,GACzB,IAAIC,EAAQR,EAAOS,KAAKtD,KAAMmD,EAASC,IAAYpD,KAUnD,OATAqD,EAAMqpE,cAAgB,GACtBrpE,EAAM+oE,gBAAkB,GACxB/oE,EAAMspE,sBAAwB,GAC9BtpE,EAAM4T,mBAAqB,KAC3B5T,EAAM+T,WAAY,EAClB/T,EAAMgU,eAAgB,EACtBhU,EAAM8T,gBAAkB,GACxB9T,EAAMmU,WAAanU,EAAMyR,gBACzBzR,EAAMupE,YAAczpE,EACbE,EAnBXhE,EAAUotE,EAAY5pE,GA2BtB4pE,EAAWvsE,UAAU4T,UAAY,WAC7B9T,KAAK6sE,aAAe,CAChB3kD,MAAO,QACPD,OAAQ,SACR9F,IAAK,MACL+G,IAAK,MACLR,KAAM,OACNokD,KAAM,YACNC,GAAI,UACJ/nE,KAAM,YACN4tD,MAAO,aACPltD,KAAM,gBACNG,MAAO,eAEX7F,KAAKgtE,aAAehtE,KAAKoD,QAAQskB,WAAU,GAC3C,gBAAY,CAAC1nB,KAAKgtE,cAAe,CAACxrE,EAAMoU,EAASD,IACjD3V,KAAKgY,aAAehY,KAAKoD,QACzBpD,KAAKitE,WAAa,KAClBjtE,KAAKqe,YAAc,eAAQre,KAAKoD,QAAS,QACZ,mBAAzBpD,KAAKoD,QAAQsM,UACb1P,KAAKitE,WAAajtE,KAAKoD,QAAQsM,QAC/B1P,KAAKgY,aAAehY,KAAKuE,cAAc,SACvCvE,KAAKoD,QAAQsB,YAAY1E,KAAKgY,eAElChY,KAAKmb,SAAWnb,KAAKoD,QAAQ0kB,aAAa,YAAc9nB,KAAKoD,QAAQsH,aAAa,YAAc,IAChG1K,KAAKoD,QAAQwH,gBAAgB,YAC7B5K,KAAKktE,mBAAqB,CACtB7mD,SAAUzY,SAAS6B,OAI3Bg9D,EAAWvsE,UAAUyT,OAAS,WAC1B3T,KAAK2D,aACL3D,KAAKmtE,qBACLntE,KAAK+Z,+BACL/Z,KAAKotE,mBACLptE,KAAK+vC,YACL/vC,KAAKqtE,mBACLrtE,KAAK6X,aACL7X,KAAKstE,kBACLttE,KAAKsY,cACLtY,KAAK6f,SAAS7f,KAAKutE,kBAAkBvtE,KAAKyY,SACtCzY,KAAK2Z,YAAe3Z,KAAKyY,QAASzY,KAAKmX,iBAA4C,WAAxBnX,KAAK8X,gBAAgC9X,KAAK8X,gBAAmB9X,KAAKga,cAC7Hha,KAAKia,iBAAiBja,KAAKmX,iBAC3BnX,KAAKwtE,gBAAgBxtE,KAAKmX,kBAE9BnX,KAAKytE,OAASztE,KAAKgY,aACnBhY,KAAKgY,aAAarN,aAAa,QAAS3K,KAAKgY,aAAaS,OAC1DzY,KAAK0tE,cAAgB1tE,KAAK2tE,cAAc3tE,KAAKgY,aAAaS,OACrD,eAAkBzY,KAAKiY,aAAaC,QAAQ,KAAQ,eAAkBlY,KAAKiY,aAAazI,UAAU2I,uBAAuB,yBAAyB,KAA+B,UAAxBnY,KAAK8X,gBAC/J9X,KAAKiY,aAAazI,UAAU2I,uBAAuB,yBAAyB,GAAGjT,UAAU4G,IAAI,WAE5F,eAAkB,eAAQ9L,KAAKoD,QAAS,cAAgB,eAAQpD,KAAKoD,QAAS,YAAYgV,WAC3FpY,KAAKqY,SAAU,GAEnBrY,KAAK6T,kBAET44D,EAAWvsE,UAAUoY,YAAc,WAC/B,IAAK,eAAkBtY,KAAKuY,uBAAyBvY,KAAKyY,MAAO,CAC7D,IAAIC,GAAqB,IAAIC,MAAOC,oBAAsB,GACtDC,EAAqB7Y,KAAKuY,qBAC1BO,EAAeD,EAAqBH,EACxCI,EAAe9Y,KAAK+Y,mBAAqBD,IAAiBA,EAC1D9Y,KAAKyY,MAAQ,IAAIE,KAAM3Y,KAAU,MAAEgZ,UAA4B,GAAfF,EAAoB,GAAK,OAGjF2zD,EAAWvsE,UAAU6Y,iBAAmB,WACpC,IAAIG,EAAc,IAAIP,KAAK3Y,KAAKyY,MAAMU,cAAe,EAAG,GAAGP,oBACvDQ,EAAe,IAAIT,KAAK3Y,KAAKyY,MAAMU,cAAe,EAAG,GAAGP,oBAC5D,OAAQ5Y,KAAKyY,MAAMG,oBAAsBzP,KAAKkQ,IAAIH,EAAaE,IAEnEqzD,EAAWvsE,UAAUktE,iBAAmB,WAChCptE,KAAKuZ,UACAvZ,KAAKwZ,UACNxZ,KAAKgY,aAAapN,gBAAgB,YAItC,eAAW5K,KAAKgY,aAAc,CAAE,SAAY,KAEhDhY,KAAK4tE,kBAETnB,EAAWvsE,UAAU0tE,eAAiB,WAC7B5tE,KAAKuZ,YAAavZ,KAAKiY,cAAiBjY,KAAKwZ,SAQzCxZ,KAAKiY,cACV,gBAAY,CAACjY,KAAKiY,aAAazI,WAAY,CAACo8D,IARZ,KAA5B5rE,KAAKgY,aAAaS,MAClB,gBAAY,CAACzY,KAAKiY,aAAazI,WAAY,CAACo8D,IAG5C,eAAS,CAAC5rE,KAAKiY,aAAazI,WAAY,CAACo8D,KAOrDa,EAAWvsE,UAAUotE,gBAAkB,WACnCttE,KAAK6tE,UAAU7tE,KAAK8tE,QAAS9tE,KAAK+tE,SAC7B,eAAkB/tE,KAAKyY,SACxBzY,KAAKguE,gBACLhuE,KAAKoF,SAASoN,UACdxS,KAAKygB,aAAezgB,KAAKoF,SAAW,MAElCqW,OAAOzb,KAAKyY,QAAyB,OAAfzY,KAAKyY,OACxBzY,KAAKiuE,eAAejuE,KAAKyY,SAEtBzY,KAAK2b,YACL3b,KAAKkuE,aAETluE,KAAKmuE,UAAY,KACjBnuE,KAAK+tE,QAAU/tE,KAAK2tE,cAAc3tE,KAAK+tE,SACvC/tE,KAAK8tE,QAAU9tE,KAAK2tE,cAAc3tE,KAAK8tE,SACvC9tE,KAAKosE,gBAAkBpsE,KAAK0sE,cAAgB,GAC5C1sE,KAAK6tE,UAAU7tE,KAAK8tE,QAAS9tE,KAAK+tE,WAI9CtB,EAAWvsE,UAAUynB,oBAAsB,SAAUrnB,EAAQ2yC,GACzD,IAAIjjC,EAAO1P,EAAOoK,aAAa,QAAUpK,EAAOoK,aAAa,QAAUpK,EAAOoK,aAAa,MAC3FuoC,EAAMtoC,aAAa,OAAQqF,GAC3B1P,EAAOsK,gBAAgB,QAEvB,IADA,IAAI6c,EAAa,CAAC,WAAY,gBAAiB,QACtCzmB,EAAI,EAAGA,EAAIymB,EAAW9mB,OAAQK,IACnC,IAAI,eAAkBV,EAAOoK,aAAa+c,EAAWzmB,KAArD,CAGA,IAAIqoB,EAAO/oB,EAAOoK,aAAa+c,EAAWzmB,IAC1CiyC,EAAMtoC,aAAa8c,EAAWzmB,GAAIqoB,GAClC/oB,EAAOsK,gBAAgB6c,EAAWzmB,MAG1CyrE,EAAWvsE,UAAUyD,WAAa,WAC9B3D,KAAKua,UAAY,IAAI,OAAqBva,KAAKwa,QAC/Cxa,KAAKouE,eAAiB,IAAI,OAAqB,MAC/CpuE,KAAKquE,kBACLruE,KAAK0Z,kBAAkB1Z,KAAKyY,OAE5BzY,KAAKiL,cAAc,CAAEwN,MAAOzY,KAAKkd,eAAe,IAAIvE,KAAK3Y,KAAKsuE,aAAatuE,KAAKyY,WAAY,GAC5FzY,KAAKiL,cAAc,CAAEwR,IAAKzc,KAAKkd,eAAe,IAAIvE,KAAK3Y,KAAKsuE,aAAatuE,KAAKyc,SAAU,GACxFzc,KAAKiL,cAAc,CAAEoO,IAAKrZ,KAAKkd,eAAe,IAAIvE,KAAK3Y,KAAKsuE,aAAatuE,KAAKqZ,SAAU,GACxFrZ,KAAKiL,cAAc,CAAEsjE,SAAUvuE,KAAKkd,eAAe,IAAIvE,KAAK3Y,KAAKsuE,aAAatuE,KAAKuuE,cAAe,GAC1E,OAApBvuE,KAAKitE,YACLjtE,KAAK2nB,oBAAoB3nB,KAAKoD,QAASpD,KAAKgY,cAEhDhY,KAAKogB,+BACLpgB,KAAKwuE,iBAAgB,GACrB,IAAIC,EAAa,CAAEz0D,YAAaha,KAAKga,aACrCha,KAAKya,KAAO,IAAI,OAAK,aAAcg0D,EAAYzuE,KAAKwa,QACpDxa,KAAKiL,cAAc,CAAE+O,YAAaha,KAAKga,aAAeha,KAAKya,KAAKC,YAAY,iBAAkB,GAC9F1a,KAAKmuE,UAAYnuE,KAAKkd,eAAeld,KAAKyY,OAC1CzY,KAAK8tE,QAAU9tE,KAAKkd,eAAeld,KAAKyc,KACxCzc,KAAK+tE,QAAU/tE,KAAKkd,eAAeld,KAAKqZ,KACxCrZ,KAAK0uE,WAAa1uE,KAAK2uE,cAAgB3uE,KAAK4uE,gBAAiB,EAC7D5uE,KAAK6uE,YAAc7uE,KAAK8uE,iBAAmB9uE,KAAK+uE,SAAW,KACtD,eAAkB/uE,KAAKoD,QAAQsH,aAAa,QAO7C1K,KAAKoD,QAAQkI,GAAK,eAAY,kBACN,OAApBtL,KAAKitE,YACL,eAAWjtE,KAAKgY,aAAc,CAAE,GAAMhY,KAAKoD,QAAQkI,GAAK,YARpC,OAApBtL,KAAKitE,aACLjtE,KAAKgY,aAAa1M,GAAKtL,KAAKoD,QAAQsH,aAAa,MAAQ,UAU7D,eAAkB1K,KAAKgY,aAAatN,aAAa,UACjD,eAAW1K,KAAKgY,aAAc,CAAE,KAAQhY,KAAKoD,QAAQkI,KAErDtL,KAAK2Z,YACL3Z,KAAK4Z,OAAO,aAAc,CACtBC,OAAQ,oBAIpB4yD,EAAWvsE,UAAUmuE,gBAAkB,WACnC,GAAIruE,KAAKsc,OACL,GAA2B,kBAAhBtc,KAAKsc,OACZtc,KAAKkc,aAAelc,KAAKsc,YAExB,GAAK,eAAkBtc,KAAKsc,OAAOC,WAAsC,KAAzBvc,KAAKsc,OAAOC,SAK7Dvc,KAAKkc,aAAelc,KAAKua,UAAU0C,eAAe,CAAEzO,KAAM,OAAQ+N,SAAU,cALE,CAC9E,IAAIgN,EAAiBvpB,KAAKsc,OAAOC,SACjCvc,KAAKkc,aAAelc,KAAKua,UAAU0C,eAAe,CAAEzO,KAAM,OAAQ+N,SAAUgN,SAOhFvpB,KAAKkc,aAAe,MAG5BuwD,EAAWvsE,UAAUgd,eAAiB,SAAUzE,GAC5C,OAAS,eAAkBA,IAAUA,aAAiBE,OAAS8C,OAAOhD,GAAUA,EAAQ,MAE5Fg0D,EAAWvsE,UAAUitE,mBAAqB,WAClCntE,KAAK2a,gBAAkB,OAAQhL,WAC/B3P,KAAKyK,UAAY,mBAErB,IAAIukE,EAAyBhvE,KAAKyK,SAC9BqQ,GAAoB9a,KAAK2Z,WACxB,eAAkB3Z,KAAKyK,WAA+B,KAAlBzK,KAAKyK,WAC1CukE,EAA0BhvE,KAAKyK,SAASoQ,QAAQ,OAAQ,KAAMtO,QAElEvM,KAAKiY,aAAe,OAAM6B,YAAY,CAClC1W,QAASpD,KAAKgY,aACd+C,gBAAiBD,EACjBhD,eAAgB9X,KAAK8X,eACrBkD,WAAY,CACRxB,SAAUxZ,KAAKwZ,SACfQ,YAAaha,KAAKga,YAClBvP,SAAUukE,EACV32D,QAASrY,KAAKqY,QACd5S,UAAWzF,KAAKyF,UAChBwV,gBAAiBjb,KAAKib,iBAE1B/C,QAAS,CAAC,4CACXlY,KAAKuE,eACRvE,KAAKiY,aAAazI,UAAUzI,MAAMzB,MAAQtF,KAAKkb,SAASlb,KAAKsF,OAC7D,eAAWtF,KAAKgY,aAAc,CAC1B,oBAAqB,OAAQ,SAAY,IACzC,gBAAiB,QAAS,KAAQ,WAAY,aAAgB,MAC9D,YAAe,MAAO,eAAkB,MAAO,WAAc,QAC7D,gBAAiB,QAAS,eAAgB,UAEzChY,KAAKivE,cAAcjvE,KAAKkvE,aACzB,OAAM9zD,cAAc,CAAE,MAASpb,KAAKkvE,YAAclvE,KAAKgY,cAE3D,eAAS,CAAChY,KAAKiY,aAAazI,WAAYy7D,IAE5CwB,EAAWvsE,UAAUivE,sBAAwB,WACzC,IACIC,EADApyD,EAAU,IAAI,OAAqBhd,KAAKwa,QAExC8pD,EAAatnD,EAAQC,eAAe,CAAEV,SAAU,QAOpD,OALI6yD,EADApvE,KAAKivE,cAAcjvE,KAAKkc,cACbooD,EAAa,IAAMtkE,KAAKqvE,WAAW,QAGnCrvE,KAAKkc,aAEbkzD,GAEX3C,EAAWvsE,UAAUwZ,kBAAoB,SAAUjB,GAC/C,IAAI62D,GAAY,EAChB,GAAqB,kBAAV72D,IAAuB,eAAkBA,GAAQ,CACxD,IAAI4E,EAAc5E,EACS,kBAAhB4E,IACPA,EAAcA,EAAY9Q,QAE9B,IAAIgjE,EAAkB,KAClBC,EAAW,KAuBf,GAtBqB,kBAAV/2D,EACP4E,EAAc5E,EAAM7G,WAEE,kBAAV6G,IACP,mBAAqBgF,KAAKhF,KAC3B82D,EAAkBvvE,KAAKyvE,eAAezvE,KAAK2tE,cAAcl1D,IACrD,eAAkB82D,KAClBA,EAAkBvvE,KAAKkd,eAAeld,KAAKua,UAAU4C,UAAUE,EAAa,CACxEf,OAAQtc,KAAKmvE,wBAAyB3gE,KAAM,cAE5C,eAAkB+gE,KAClBA,EAAkBvvE,KAAKkd,eAAeld,KAAKua,UAAU4C,UAAUE,EAAa,CACxEf,OAAQtc,KAAKkc,aAAc1N,KAAM,WAAY+N,SAAU,aAM3EizD,EAAWxvE,KAAKua,UAAU4C,UAAUE,EAAa,CAC7Cf,OAAQtc,KAAKmvE,wBAAyB3gE,KAAM,aAEhD+gE,GAAoB,eAAkBC,IAAaA,aAAoB72D,OAAS8C,OAAO+zD,GAAaA,EAAW,KAC3G,eAAkBD,IAAoBlyD,EAAYxC,QAAQ,MAAO,IAAIla,OAAQ,CAC7E,IAAI4c,EAAe,KACfC,EAAiB,KAErBD,EAAe,kJAEfC,EAAiB,8IACXD,EAAaE,KAAKJ,KAAiBG,EAAeC,KAAKJ,IACrD,mBAAqBI,KAAKhF,IAAWgD,OAAO,IAAI9C,KAAK,GAAK0E,IAC9DiyD,GAAY,EAGZC,EAAkB,IAAI52D,KAAK,GAAK0E,GAGpCiyD,GACKtvE,KAAK2b,aACN3b,KAAKiX,mBAAqBoG,GAE9Brd,KAAKiL,cAAc,CAAEwN,MAAO,OAAQ,GACpCzY,KAAKmuE,UAAY,OAGjBnuE,KAAKiL,cAAc,CAAEwN,MAAO82D,IAAmB,GAC/CvvE,KAAKmuE,UAAYnuE,KAAKyY,SAIlCg0D,EAAWvsE,UAAU2lB,gBAAkB,WACnC,IAAIC,EAAU,GAId,OAHI9lB,KAAK2Z,YACLmM,EAAQzZ,KAAK,CAAE0Z,KAAM,CAAC/lB,MAAOgmB,OAAQ,mBAElCF,GAGX2mD,EAAWvsE,UAAUmvE,WAAa,SAAU7gE,GACxC,IAAIkhE,EAOJ,OALIA,EADgB,OAAhB1vE,KAAKwa,QAAmC,UAAhBxa,KAAKwa,OACP,cAAD,CAAU,oBAAqB,kBAG9Bxa,KAAK2vE,qBAAqB,OAAU,GAAK3vE,KAAKwa,QAEjEk1D,GAGXjD,EAAWvsE,UAAUsS,QAAU,WAC3BxS,KAAKkS,OACLlS,KAAK8e,eACL,IAAI8wD,EAAgB,CAChB,oBAAqB,OAAQ,SAAY,IACzC,gBAAiB,QAAS,KAAQ,WAAY,aAAgB,MAC9D,YAAe,MAAO,eAAkB,MAAO,WAAc,QAC7D,gBAAiB,OAAQ,eAAgB,SAEzC5vE,KAAKgY,eACL,OAAMoP,iBAAiBwoD,EAAe5vE,KAAKgY,cACnB,OAApBhY,KAAKitE,YACLjtE,KAAKiY,aAAazI,UAAUmS,cAAcjd,YAAY1E,KAAKgY,cAE1D,eAAkBhY,KAAKgtE,aAAatiE,aAAa,aAIlD1K,KAAKgY,aAAapN,gBAAgB,YAHlC5K,KAAKgY,aAAarN,aAAa,WAAY3K,KAAKmb,UAKpDnb,KAAKsnB,uBACLtnB,KAAK6vE,cAAc,CAAC7vE,KAAKgY,eACzBhY,KAAKgY,aAAa9S,UAAUC,OAAO,WAC/B,eAAkBnF,KAAKgtE,aAAatiE,aAAa,cACjD,OAAM0f,YAAW,EAAMpqB,KAAKgY,aAAchY,KAAK8X,iBAGnD9X,KAAKiY,aAAazI,WAClB,eAAOxP,KAAKiY,aAAazI,WAE7BxP,KAAKiY,aAAejY,KAAKygB,aAAezgB,KAAKgtE,kBAAezhE,EAC5DvL,KAAK0sE,cAAgB1sE,KAAKosE,gBAAkBpsE,KAAK2sE,sBAAwB,GACpE,eAAkB3sE,KAAK8vE,WACxB9vE,KAAK8vE,WAETjtE,EAAO3C,UAAUsS,QAAQlP,KAAKtD,MAC1BA,KAAKqe,aACL,OAAalZ,OAAOnF,KAAKqe,YAAa,QAASre,KAAKkwC,kBAExDlwC,KAAK8vE,SAAW,KAChB9vE,KAAKktE,mBAAqB,KAC1BltE,KAAKyuC,gBAAkB,KACvBzuC,KAAKqsE,QAAU,KACfrsE,KAAK0sE,cAAgB,MAEzBD,EAAWvsE,UAAUonB,qBAAuB,WAExC,IADA,IAAIyoD,EAAe,GACV/uE,EAAI,EAAGA,EAAIhB,KAAKgY,aAAayP,WAAW9mB,OAAQK,IACrD+uE,EAAa/uE,GAAKhB,KAAKgY,aAAayP,WAAWzmB,GAAGgP,KAEtD,IAAShP,EAAI,EAAGA,EAAI+uE,EAAapvE,OAAQK,IAChC,eAAkBhB,KAAKgtE,aAAatiE,aAAaqlE,EAAa/uE,MAO/DhB,KAAKgY,aAAapN,gBAAgBmlE,EAAa/uE,IACT,UAAlC+uE,EAAa/uE,GAAG6gB,gBAChB7hB,KAAKgY,aAAaS,MAAQ,MAR9BzY,KAAKgY,aAAarN,aAAaolE,EAAa/uE,GAAIhB,KAAKgtE,aAAatiE,aAAaqlE,EAAa/uE,KACtD,UAAlC+uE,EAAa/uE,GAAG6gB,gBAChB7hB,KAAKgY,aAAaS,MAAQzY,KAAKgtE,aAAatiE,aAAaqlE,EAAa/uE,OAYtFyrE,EAAWvsE,UAAU8tE,cAAgB,WACjChuE,KAAKygB,aAAezgB,KAAKuE,cAAc,MAAO,CAC1CC,UAAWhD,EAAO,IAAMuU,EACxB/G,MAAO,CAAE,GAAMhP,KAAKoD,QAAQkI,GAAK,SAAU,MAAS,uBAExDtL,KAAKygB,aAAa9V,aAAa,aAAc3K,KAAKoD,QAAQkI,IAC1DtL,KAAKygB,aAAa9V,aAAa,OAAQ,UAClC,eAAkB3K,KAAKyK,YACxBzK,KAAKygB,aAAajc,WAAa,IAAMxE,KAAKyK,WAEzC,eAAkBzK,KAAKouB,OAASpuB,KAAKouB,KAAO,IAC7CpuB,KAAKgwE,eACL,eAAO,CAAChwE,KAAKiwE,aAAcjwE,KAAKygB,eAEpCzgB,KAAKkwE,eACLlwE,KAAK4E,cACL,eAAO5E,KAAKygB,eAEhBgsD,EAAWvsE,UAAUiwE,eAAiB,WAClC,IAAI9qE,EAASsM,SAASu5D,EAAgB,IAClCkF,EAAcpwE,KAAKygB,aAAarZ,wBAAwB/B,OAC5D,OAAO+qE,EAAc/qE,EAASA,EAAS+qE,GAE3C3D,EAAWvsE,UAAU8vE,aAAe,WAChChwE,KAAK+rE,kBACL/rE,KAAKqwE,iBACL,IAAIC,EAAc,CAAEttE,SAAU,IAAK2+B,SAAU,IAAM6pC,GACnDxrE,KAAK8vE,SAAW,gBAAa9vE,KAAKiwE,YAAaK,GAC/CtwE,KAAK0sE,cAAgB1sE,KAAKiwE,YAAYvtD,iBAAiB,IAAM8oD,IAEjEiB,EAAWvsE,UAAU0E,YAAc,WAC/B,IAAIvB,EAAQrD,KAsCZ,GArCAA,KAAKuwE,eAAiBvwE,KAAKiY,aAAazI,UAAUpI,wBAClDpH,KAAKoF,SAAW,IAAI,OAAMpF,KAAKygB,aAAc,CACzCnb,MAAOtF,KAAKwwE,cAAcxwE,KAAKsF,OAC/Bye,OAAQ/jB,KAAK+jB,OACbD,WAAY,WACZ/f,SAAU,OAAQ4L,SAAW,CAAEpK,EAAG,SAAUC,EAAG,UAAa,CAAED,EAAG,OAAQC,EAAG,UAC5Ewe,UAAW,OAAQrU,SAAW,CAAEpK,EAAG,MAAOC,EAAG,OAAU,CAAED,EAAG,OAAQC,EAAG,QACvEC,UAAWzF,KAAKyF,UAChBoe,SAAU,OAAQlU,SAAW/B,SAAS6B,KAAOzP,KAAKiY,aAAazI,UAC/D7F,QAASgiE,EACTjmE,KAAM,WACFrC,EAAMod,aAAa1Z,MAAMirD,WAAa,UACtC,eAAS,CAAC3uD,EAAM4U,aAAaC,QAAQ,IAAKxB,IAC3C7Q,MAAO,WACN,gBAAY,CAACxC,EAAM4U,aAAaC,QAAQ,IAAKxB,GAC7CrT,EAAMotE,mBACNptE,EAAM2U,aAAapN,gBAAgB,yBACnC,gBAAOvH,EAAM+B,SAAShC,SACtBC,EAAM+B,SAASoN,UACfnP,EAAMod,aAAa3V,UAAY,GAC/BzH,EAAM4sE,YAAc5sE,EAAMod,aAAepd,EAAMgpE,aAAU9gE,GAC1DkZ,mBAAoB,WACd,OAAQ9U,UACTtM,EAAM6O,UAIb,OAAQvC,WACT3P,KAAKoF,SAAS4e,UAAY,CAAEze,EAAG,OAAQC,EAAG,SAE1C,OAAQmK,UAAY3P,KAAK2a,gBACzB3a,KAAKoF,SAAShC,QAAQ2D,MAAM8qD,UAAY,OACxC7xD,KAAKoF,SAAShC,QAAQ2D,MAAMzB,MAAQ,QAGpCtF,KAAKoF,SAAShC,QAAQ2D,MAAM8qD,UAAYqZ,EAExC,OAAQv7D,UAAY3P,KAAK2a,eAAgB,CACzC,IAAIgJ,EAAc3jB,KAAKuE,cAAc,MAAO,CAAEC,UAAW,mBACrDksE,EAAiB1wE,KAAKuE,cAAc,OAAQ,CAAEC,UAAW,kBAC7DksE,EAAetrD,YAAc,cAC7B,IAAIC,EAAiBrlB,KAAKuE,cAAc,OAAQ,CAAEC,UAAW,kBAC7D,OAAasH,IAAIuZ,EAAgB,uBAAwBrlB,KAAK2wE,sBAAuB3wE,MACrF2jB,EAAYjf,YAAY2gB,GACxB1B,EAAYjf,YAAYgsE,GACxB1wE,KAAKygB,aAAa+E,aAAa7B,EAAa3jB,KAAKygB,aAAagB,qBAGtEgrD,EAAWvsE,UAAUywE,sBAAwB,SAAUxjE,GACnDnN,KAAKkS,QAGTu6D,EAAWvsE,UAAUqtE,kBAAoB,SAAU90D,GAC/C,OAAI,eAAkBzY,KAAKkd,eAAezE,IAC/B,KAGAzY,KAAKua,UAAU8B,WAAW5D,EAAO,CAAE8D,SAAU,SAAU/N,KAAM,UAG5Ei+D,EAAWvsE,UAAUytE,cAAgB,SAAU77C,GAC3C,IAAK9xB,KAAKivE,cAAcn9C,GAAO,CAC3B,IAAI/V,EAAY/b,KAAK4wE,cAAc9+C,GAC/BrZ,GAASzY,KAAKivE,cAAcjvE,KAAKmuE,WACrC,GAAInuE,KAAKkd,eAAenB,GAAY,CAChC,IAAI+G,EAAOrK,EAAQzY,KAAKmuE,UAAUtnC,UAAYskC,EAC1CxgD,EAAQlS,EAAQzY,KAAKmuE,UAAUnnC,WAAavI,EAC5C7T,EAAOnS,EAAQzY,KAAKmuE,UAAUh1D,cAAgBqlB,EAClD,OAAO,IAAI7lB,KAAKiS,EAAMD,EAAO7H,EAAM/G,EAAUuH,WAAYvH,EAAUwH,aAAcxH,EAAUyH,eAGnG,OAAO,MAEXipD,EAAWvsE,UAAU6Z,6BAA+B,WAChD,IAAK,eAAkB/Z,KAAKggB,gBACxB,IAAK,IAAInS,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKpV,KAAKggB,gBAAiBnS,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC1E,IAAItN,EAAMsD,EAAGgK,GACb,GAAIg+D,EAAkB7nE,QAAQzD,IAAQ,EAClC,GAAY,UAARA,EAAiB,CACjB,IAAIswE,EAAuB7wE,KAAKggB,eAAe,GAAKzf,GAAKsa,QAAQ,OAAQ,KAAMtO,OACnD,KAAxBskE,GACA,eAAS,CAAC7wE,KAAKiY,aAAazI,WAAYqhE,EAAoB5sE,MAAM,WAGrE,GAAY,UAAR1D,EAAiB,CACtB,IAAIuwE,EAAY9wE,KAAKiY,aAAazI,UAAU9E,aAAanK,GACzDuwE,EAAa,eAAkBA,GAC3B9wE,KAAKggB,eAAe,GAAKzf,GADgBuwE,EAAY9wE,KAAKggB,eAAe,GAAKzf,GAElFP,KAAKiY,aAAazI,UAAU7E,aAAapK,EAAKuwE,QAG9C9wE,KAAKiY,aAAazI,UAAU7E,aAAapK,EAAKP,KAAKggB,eAAe,GAAKzf,MAM3FksE,EAAWvsE,UAAUkgB,6BAA+B,WAChD,IAAK,eAAkBpgB,KAAKggB,gBACxB,IAAK,IAAInS,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKpV,KAAKggB,gBAAiBnS,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC1E,IAAItN,EAAMsD,EAAGgK,GACTg+D,EAAkB7nE,QAAQzD,GAAO,GACjCP,KAAKgY,aAAarN,aAAapK,EAAKP,KAAKggB,eAAe,GAAKzf,MAK7EksE,EAAWvsE,UAAUmgB,eAAiB,SAAU0wD,EAAaC,GACpD,eAAkBA,KACnBA,EAAeA,EAAYn2D,QAAQ,OAAQ,KAAMtO,QAEhD,eAAkBwkE,KACnBA,EAAeA,EAAYl2D,QAAQ,OAAQ,KAAMtO,QAErD,OAAMiU,YAAYuwD,EAAa,CAAC/wE,KAAKiY,aAAazI,WAAYwhE,GAC1DhxE,KAAKygB,cACL,OAAMD,YAAYuwD,EAAa,CAAC/wE,KAAKygB,cAAeuwD,IAG5DvE,EAAWvsE,UAAU+wE,iBAAmB,WACpC,gBAAY,CAACjxE,KAAKiY,aAAazI,WAAY2G,GAC3C,eAAWnW,KAAKgY,aAAc,CAAE,eAAgB,WAEpDy0D,EAAWvsE,UAAUstE,gBAAkB,SAAU3wD,GAC7C,IAAIpE,EAAQzY,KAAK2tE,cAAc9wD,GAC1B7c,KAAKkxE,cAAcz4D,KAAWzY,KAAKiX,oBACnCjX,KAAK2Z,YAAc3Z,KAAKgY,aAAaS,QAAUzY,KAAKmX,gBACrDnX,KAAKixE,oBAGL,eAAS,CAACjxE,KAAKiY,aAAazI,WAAY2G,GACxC,eAAWnW,KAAKgY,aAAc,CAAE,eAAgB,WAGxDy0D,EAAWvsE,UAAUmtE,iBAAmB,YAC/B,eAAkBrtE,KAAKouB,OAASpuB,KAAKouB,KAAO,EAC7CpuB,KAAK6vE,cAAc,CAAC7vE,KAAKiY,aAAaC,QAAQ,KAG9ClY,KAAKmxE,mBAGb1E,EAAWvsE,UAAUixE,gBAAkB,WACnCnxE,KAAKoxE,eAAe,CAACpxE,KAAKiY,aAAaC,QAAQ,KAC/ClY,KAAKkS,QAETu6D,EAAWvsE,UAAUkxE,eAAiB,SAAUhuE,GAC5C,eAASA,EAAS47B,IAEtBytC,EAAWvsE,UAAU2vE,cAAgB,SAAUzsE,GAC3C,gBAAYA,EAAS47B,IAEzBytC,EAAWvsE,UAAUmxE,gBAAkB,WACnCrxE,KAAKgY,aAAas5D,kBAAkB,EAAItxE,KAAiB,aAAEyY,MAAM9X,SAErE8rE,EAAWvsE,UAAUqxE,eAAiB,WAClCvxE,KAAKgY,aAAas5D,kBAAmBtxE,KAAiB,aAAEyY,MAAM9X,OAASX,KAAiB,aAAEyY,MAAM9X,SAEpG8rE,EAAWvsE,UAAUsxE,gBAAkB,WACnC,IAAIC,EACJ,GAAoB,OAAhBzxE,KAAKwa,QAAmC,UAAhBxa,KAAKwa,OAC7Bi3D,EAAW,eAAS,yBAA0B,sBAE7C,CACD,IAAI9jC,EAAkB,2DAClBE,EAAU,QACd4jC,EAAW,eAAS5jC,EAAU,GAAK7tC,KAAKwa,OAASmzB,EAAiB,QAEtE,OAAO8jC,GAEXhF,EAAWvsE,UAAUwxE,mBAAqB,WACtC,IAAIz+B,EAASjzC,KAAiB,aAC1BkiB,EAAQ,EACRC,EAAM,EAKV,OAJK1G,MAAMw3B,EAAMpyB,kBACbqB,EAAQ+wB,EAAMpyB,eACdsB,EAAM8wB,EAAMnyB,cAET,CAAEoB,MAAO/Y,KAAKyhC,IAAI1oB,GAAQC,IAAKhZ,KAAKyhC,IAAIzoB,KAEnDsqD,EAAWvsE,UAAUyxE,iBAAmB,WACpC,OAAK,eAAkB3xE,KAAKygB,cAIjB,KAHAzgB,KAAKygB,aAAaiC,iBAAiB,IAAMhM,IAMxD+1D,EAAWvsE,UAAU+uE,cAAgB,SAAUx2D,GAC3C,SAAI,eAAkBA,IAA4B,kBAAVA,GAAuC,KAAjBA,EAAMlM,SAOxEkgE,EAAWvsE,UAAUgb,SAAW,SAAU5V,GAUtC,OARIA,EADiB,kBAAVA,EACC,eAAWA,GAEG,kBAAVA,EACHA,EAAMsB,MAAM,WAActB,EAAQ,eAAWA,GAG9C,OAELA,GAEXmnE,EAAWvsE,UAAUswE,cAAgB,SAAUlrE,GAE3C,GADAA,EAAQtF,KAAKkb,SAAS5V,GAClBA,EAAMtB,QAAQ,MAAQ,EAAG,CACzB,IAAI4tE,EAAa5xE,KAAKuwE,eAAejrE,MAAQwB,WAAWxB,GAAS,IACjEA,EAAQssE,EAAWhgE,WAAa,KAEpC,OAAOtM,GAEXmnE,EAAWvsE,UAAU2xE,kBAAoB,WACrC,IAAIzuE,EAAUpD,KAAKyuC,gBACd,eAAkBrrC,GAGdpD,KAAKygB,cAAgBzgB,KAAKkd,eAAeld,KAAKuuE,WACnDvuE,KAAK8xE,cAHL9xE,KAAK+xE,cAAc3uE,IAM3BqpE,EAAWvsE,UAAU6xE,cAAgB,SAAU3uE,GAC3C,IAAI4uE,EAAahyE,KAAKmwE,iBAClBvW,EAAUx2D,EAAQ6wC,mBAClB5uC,EAASu0D,EAAUA,EAAQ7oD,UAAY3N,EAAQ2N,UAC/CkhE,EAAW7uE,EAAQgE,wBAAwB/B,OAC1CA,EAASjC,EAAQ2N,UAAaihE,EAC/BhyE,KAAKygB,aAAaxP,UAAY2oD,EAAWv0D,GAAU2sE,EAAavG,EAAewG,EAAWxG,GAAiBpmE,EAG3GrF,KAAKygB,aAAaxP,UAAY,GAGtCw7D,EAAWvsE,UAAU4xE,YAAc,WAC/B,IAAI1uE,EACJ,GAAK,eAAkBpD,KAAKygB,cASxBzgB,KAAKygB,aAAaxP,UAAY,MATS,CACvC,IAAIw4C,EAAQzpD,KAAKygB,aAAaiC,iBAAiB,IAAM8oD,GACrD,GAAI/hB,EAAM9oD,OAAQ,CACd,IAAIuxE,EAAclyE,KAAKosE,gBAAgB,GACnC+F,EAAanyE,KAAK2tE,cAAc3tE,KAAKkd,eAAeld,KAAKuuE,WAAWv1D,UACxE5V,EAAUqmD,EAAMtgD,KAAKC,OAAO+oE,EAAaD,IAA4B,IAAZlyE,KAAKouB,SAMjE,eAAkBhrB,GAInBpD,KAAKygB,aAAaxP,UAAY,EAH9BjR,KAAK+xE,cAAc3uE,IAM3BqpE,EAAWvsE,UAAUmuB,QAAU,WAC3B,OAAQ,cAAD,CAAmBruB,KAAKkd,eAAeld,KAAKyY,QAAW,GAAKzY,KAAKoyE,SAASpyE,KAAKyY,QAE1Fg0D,EAAWvsE,UAAUkyE,SAAW,SAAU35D,GACtC,OAAQ,cAAD,CAAmBzY,KAAKkd,eAAezE,IAAW,KAAOzY,KAAKua,UAAU8B,WAAW5D,EAAO,CAC7F6D,OAAQtc,KAAKqyE,iBAAkB7jE,KAAM,UAG7Ci+D,EAAWvsE,UAAUoyE,eAAiB,WAClC,IAAIC,EAOJ,OALIA,EADgB,OAAhBvyE,KAAKwa,QAAmC,UAAhBxa,KAAKwa,OACjB,cAAD,CAAU,oBAAqB,kBAG9Bxa,KAAKwyE,qBAAqB,OAAU,GAAKxyE,KAAKwa,QAEvD+3D,GAEX9F,EAAWvsE,UAAUmyE,eAAiB,WAClC,IAAIjD,EAYJ,OATQA,EAFJpvE,KAAKivE,cAAcjvE,KAAKkc,cACJ,OAAhBlc,KAAKwa,QAAmC,UAAhBxa,KAAKwa,OACjB,cAAD,CAAU,oBAAqB,kBAG9Bxa,KAAK2vE,qBAAqB,OAAU,GAAK3vE,KAAKwa,QAInDxa,KAAKkc,aAEbkzD,GAEX3C,EAAWvsE,UAAUuyE,cAAgB,WACjC,IAAIrD,EAOJ,OALIA,EADgB,OAAhBpvE,KAAKwa,QAAmC,UAAhBxa,KAAKwa,OACjB,cAAD,CAAU,qBAAsB,kBAG/B,cAAD,CAAU,QAAexa,KAAKwa,OAAS,gDAAiD,QAEhG40D,GAEX3C,EAAWvsE,UAAUwyE,iBAAmB,SAAUj6D,GAC9C,OAAI,eAAkBzY,KAAKkd,eAAezE,IAC/B,KAGAzY,KAAKua,UAAU8B,WAAW5D,EAAO,CAAE6D,OAAQtc,KAAKyyE,gBAAiBjkE,KAAM,UAGtFi+D,EAAWvsE,UAAU2f,SAAW,SAAUpH,GACtC,IAAIs1B,EAAO/tC,KAAK0b,WAAWjD,GACtBzY,KAAK2b,YAAe3b,KAAKkxE,cAAcnjC,GAOpC/tC,KAAKivE,cAAclhC,IACnB/tC,KAAKmuE,UAAY,KACjBnuE,KAAK2yE,eAAe3yE,KAAKyY,MAAOzY,KAAKyc,IAAKzc,KAAKqZ,MAG/CrZ,KAAKmuE,UAAYnuE,KAAK4yE,oBAAoB7kC,IAXK,OAA/C/tC,KAAKkd,eAAeld,KAAK8uE,oBACzB9uE,KAAKmuE,UAAYnuE,KAAK8uE,iBAAmB,MAE7C9uE,KAAK2yE,eAAe3yE,KAAKyY,MAAOzY,KAAKyc,IAAKzc,KAAKqZ,MAWnDrZ,KAAKiZ,aAAY,EAAMjZ,KAAKmuE,YAEhC1B,EAAWvsE,UAAU0yE,oBAAsB,SAAUn6D,GACjD,OAAI,eAAkBA,GACX,KAEHA,IAAUzY,KAAKquB,UAAaruB,KAAK2tE,cAAcl1D,GAASzY,KAAK2tE,cAAc3tE,KAAKyY,QAE5Fg0D,EAAWvsE,UAAU2yE,kBAAoB,WACrC,OAAM3oD,eAAelqB,KAAKya,KAAKC,YAAY,eAAgB1a,KAAKgY,eAGpEy0D,EAAWvsE,UAAU+Z,iBAAmB,SAAUxB,GAC9C,OAAMoH,SAASpH,EAAOzY,KAAKgY,aAAchY,KAAK8X,eAAgB9X,KAAKib,kBAEvEwxD,EAAWvsE,UAAUwf,qBAAuB,SAAUvS,GAClDA,EAAE+F,iBACFlT,KAAK2f,eAAeC,kBAAkB,oBAE1C6sD,EAAWvsE,UAAU4yE,aAAe,SAAU3lE,GACrCnN,KAAKqY,UAGN,OAAQ1I,UACR3P,KAAKgY,aAAarN,aAAa,WAAY,IAE/CwC,EAAE+F,iBACElT,KAAK+yE,cACL/yE,KAAKgzE,WAAW,EAAG7lE,IAGnBnN,KAAKgY,aAAa+H,QAClB/f,KAAKkQ,KAAK/C,MAGlBs/D,EAAWvsE,UAAU+yE,iBAAmB,WAC/BjzE,KAAKqY,UAGLrY,KAAKwZ,WACNxZ,KAAKgY,aAAas5D,kBAAkB,EAAG,GACvC,OAAaxlE,IAAI9L,KAAKgY,aAAc,UAAWhY,KAAK6d,eAAgB7d,SAG5EysE,EAAWvsE,UAAU2d,eAAiB,SAAUnP,GAC5C,IAAK1O,KAAKwZ,SAAU,CAEhB,GADA9K,EAAMwE,iBACFlT,KAAK2Z,WAKL,OAJAjL,EAAMwE,sBACNlT,KAAK4Z,OAAO,mBAAoB,CAC5BC,OAAQ,mBAKZ,OAAa1U,OAAOnF,KAAKgY,aAAc,UAAWhY,KAAK6d,gBACvD,IAAIq1D,EAASlzE,KAAK0xE,qBACK,IAAjBwB,EAAOhxD,OAAegxD,EAAO/wD,MAAQniB,KAAKgY,aAAaS,MAAM9X,SAC3DX,KAAKgY,aAAaS,MAAM9X,OAAS,IACjCX,KAAKmzE,cAAgBnzE,KAAKozE,kBAE9BpzE,KAAKgY,aAAas5D,kBAAkBtxE,KAAKmzE,cAAcjxD,MAAOliB,KAAKmzE,cAAchxD,QAKjGsqD,EAAWvsE,UAAUkzE,eAAiB,WAClC,IAAIC,EAAQ,IAAInb,OAAO,kBACnBj0D,EAAQjE,KAAKgY,aAAaS,MAAMxU,MAAM,IAC1CA,EAAMoI,KAAK,KACX,IAAI6mE,EAASlzE,KAAK0xE,qBACdxvD,EAAQ,EACRC,EAAM,EACNmxD,GAAc,EAClB,GAAKtzE,KAAK4uE,eAqBN1sD,EAAQgxD,EAAOhxD,MACfC,EAAM+wD,EAAO/wD,IACbniB,KAAK4uE,gBAAiB,OAtBtB,IAAK,IAAI5tE,EAAI,EAAGA,EAAIiD,EAAMtD,OAAQK,IAK9B,GAJKqyE,EAAM51D,KAAKxZ,EAAMjD,MAClBmhB,EAAMnhB,EACNsyE,GAAc,GAEdA,EAAa,CACb,GAAIJ,EAAOhxD,OAASA,GAASgxD,EAAO/wD,KAAOA,EAAK,CAE5CA,EAAMA,EACNniB,KAAK4uE,gBAAiB,EACtB,MAGA1sD,EAAQlhB,EAAI,EACZsyE,GAAc,EAU9B,MAAO,CAAEpxD,MAAOA,EAAOC,IAAKA,IAEhCsqD,EAAWvsE,UAAUyd,aAAe,SAAUjP,GAC1C,IAAK1O,KAAKwZ,UAAYxZ,KAAKqY,QAIvB,OAHuB,SAAhB3J,EAAMiS,QAAqC,QAAhBjS,EAAMiS,QAAoC,OAAhBjS,EAAMiS,SAAsC,QAAhBjS,EAAMiS,QAAoC,OAAhBjS,EAAMiS,QAAmC,MAAhBjS,EAAMiS,QAAkC,QAAhBjS,EAAMiS,QAAsB3gB,KAAK+yE,eAAkB/yE,KAAK2Z,aACvNjL,EAAMwE,iBAEFxE,EAAMiS,QACV,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,OACI3gB,KAAK+yE,gBACN/yE,KAAKguE,gBACLhuE,KAAKoF,SAASoN,UACdxS,KAAKoF,SAAWpF,KAAKygB,aAAe,OAEpCzgB,KAAK2Z,YAAe3Z,KAAKwZ,UAAaxZ,KAAK+yE,gBAC3CrkE,EAAMwE,iBACNlT,KAAK4Z,OAAO,iBAAkB,CAC1BC,OAAQ,iBACR1M,EAAGuB,KAGP1O,KAAK+yE,eACL/yE,KAAKuzE,WAAW7kE,GAEpB,MACJ,IAAK,QACG1O,KAAK0uE,YACL1uE,KAAKyuC,gBAAkBzuC,KAAK0sE,cAAc1sE,KAAK6uE,aAC/C7uE,KAAK8uE,iBAAmB,IAAIn2D,KAAK3Y,KAAKosE,gBAAgBpsE,KAAK6uE,cAC3D7uE,KAAKwzE,YAAYxzE,KAAK8uE,iBAAkBpgE,IAGxC1O,KAAKwzE,YAAYxzE,KAAKgY,aAAaS,MAAO/J,GAE9C1O,KAAKkS,OACLlS,KAAK0uE,YAAa,EACd1uE,KAAK+yE,eACLrkE,EAAMuQ,kBAEV,MACJ,IAAK,OACDjf,KAAKkQ,KAAKxB,GACV,MACJ,IAAK,SACD1O,KAAKia,iBAAiBja,KAAKyzE,YAAYzzE,KAAKyY,QACxCzY,KAAK2Z,aACA3Z,KAAKyY,OACNzY,KAAKia,iBAAiBja,KAAKmX,iBAE/BnX,KAAK0zE,cAET1zE,KAAK2zE,cAAc3zE,KAAKyY,OACxBzY,KAAKkS,OACL,MACJ,IAAK,QACDlS,KAAKkS,OACL,MACJ,IAAK,QACL,IAAK,OACL,IAAK,MACL,IAAK,WACIlS,KAAK+yE,gBAAiB/yE,KAAK2Z,YAAe3Z,KAAKwZ,YACN,IAArCxZ,KAAKgY,aAAa6I,gBAAwB7gB,KAAKgY,aAAa8I,eAAiB9gB,KAAKgY,aAAaS,MAAM9X,QACrGX,KAAKgY,aAAa8I,eAAiB9gB,KAAKgY,aAAaS,MAAM9X,QAA2B,QAAjB+N,EAAMiS,QACtC,IAArC3gB,KAAKgY,aAAa6I,gBAAyC,aAAjBnS,EAAMiS,QAA4C,SAAjBjS,EAAMiS,QAAsC,UAAjBjS,EAAMiS,SAC7GjS,EAAMwE,iBAEVlT,KAAK4Z,OAAO,iBAAkB,CAAEC,OAAQ,iBACpC1M,EAAGuB,KAGX,MACJ,QACI1O,KAAK0uE,YAAa,EAClB,QAIhBjC,EAAWvsE,UAAU0zE,aAAe,SAAUllE,GAC1C,IAAIpO,EAASoO,EAAMpO,OACfuzE,EAAK7zE,KAAKyuC,gBAAkB,eAAQnuC,EAAQ,IAAMkrE,GACtDxrE,KAAK8zE,aAAaD,EAAInlE,GAClBmlE,GAAMA,EAAG3uE,UAAUmB,SAASmlE,IAC5BxrE,KAAKkS,QAGbu6D,EAAWvsE,UAAU8yE,WAAa,SAAU/vE,EAAOkK,GAC/C,IAAI9J,EAAQrD,KACZ,GAAIA,KAAK+yE,eAAiB/yE,KAAKygB,aAAc,CACzC,IAAIsF,EAAO,CACPK,MAAOpmB,KAAKoF,SACZsJ,MAAOvB,GAAK,KACZsB,QAAQ,EACRuB,KAAM,QAEV,gBAAY,CAACpC,SAAS6B,MAAO4G,GAC7BrW,KAAKiI,QAAQ,QAAS8d,GAAM,SAAUA,GAClC,IAAKA,EAAKtX,OAAQ,CACd,IAAIslE,EAAY,CACZ/jE,KAAM,UACNhN,SAAU0oE,EACVzoE,MAAOA,GAAgB,GAE3BI,EAAM+B,SAAS8M,KAAK,IAAI,OAAU6hE,IAClC,gBAAY,CAAC1wE,EAAM4U,aAAazI,WAAY,CAAC87D,IAC7C,eAAWjoE,EAAM2U,aAAc,CAAE,gBAAiB,UAClD3U,EAAM2U,aAAapN,gBAAgB,aACnCvH,EAAM2U,aAAapN,gBAAgB,iBACnCvH,EAAM2U,aAAapN,gBAAgB,yBACnC,OAAazF,OAAOyI,SAAU,uBAAwBvK,EAAM2wE,sBAE5D,OAAQrkE,UAAYtM,EAAMugB,QAC1BvgB,EAAMugB,MAAM7c,MAAMC,QAAU,OAC5B3D,EAAMugB,MAAMoD,UAAY,GACxB3jB,EAAMugB,MAAQ,MAEd,OAAQjU,WACH,eAAkBtM,EAAM4wE,uBACzB5wE,EAAM4wE,oBAAoB9uE,SAC1B9B,EAAM4wE,oBAAsB,OAGhC,OAAQtkE,UAAYtM,EAAMkW,YAAclW,EAAMmW,UAC9CnW,EAAM2U,aAAapN,gBAAgB,oBAKvC,OAAQ+E,UAAY3P,KAAKuZ,YAAcvZ,KAAKwZ,UAC5CxZ,KAAKgY,aAAapN,gBAAgB,aAI9C6hE,EAAWvsE,UAAUg0E,mBAAqB,WAClCl0E,KAAKygB,eACLzgB,KAAKygB,aAAa1Z,MAAMirD,WAAa,SACrChyD,KAAKygB,aAAa1Z,MAAMhC,IAAM,UAC9B/E,KAAKygB,aAAa1Z,MAAM/B,KAAO,UAC/BhF,KAAKygB,aAAa1Z,MAAMzB,MAAQ,MAChCtF,KAAKygB,aAAa1Z,MAAM1B,OAAS,QAGzConE,EAAWvsE,UAAUi0E,iBAAmB,SAAUzlE,EAAO0lE,GACrD,GAAKp0E,KAAK2b,YAAe3b,KAAKkxE,cAAclxE,KAAK8uE,kBAY7C,GAAKsF,EAKA,CACD,IAAI37D,EAAQzY,KAAK2tE,cAAc,IAAIh1D,KAAK3Y,KAAKosE,gBAAgBpsE,KAAK6uE,gBAC7D7uE,KAAK+uE,YAAct2D,GACpBzY,KAAKq0E,aAAa3lE,EAAO+J,QAPxBzY,KAAKs0E,YAAct0E,KAAKgY,aAAaS,OAAU,eAAkBzY,KAAKkd,eAAeld,KAAKyY,UAC3FzY,KAAKq0E,aAAa3lE,EAAO1O,KAAK4yE,oBAAoB5yE,KAAKgY,aAAaS,aAbzB,OAA/CzY,KAAKkd,eAAeld,KAAK8uE,oBACzB9uE,KAAKmuE,UAAYnuE,KAAK8uE,iBAAmB,MAE7C9uE,KAAKiL,cAAc,CAAEwN,MAAOzY,KAAK4yE,oBAAoB5yE,KAAKgY,aAAaS,SAAU,GACjFzY,KAAKmuE,UAAYnuE,KAAK8uE,iBAAmB9uE,KAAK4yE,oBAAoB5yE,KAAKgY,aAAaS,OACpFzY,KAAKs0E,UAAYt0E,KAAKgY,aAAaS,OAC9BzY,KAAK+uE,YAAc/uE,KAAKyY,OACzBzY,KAAKqf,YAAY3Q,IAiB7B+9D,EAAWvsE,UAAUq0E,YAAc,SAAU7lE,GACzC,IAAI8lE,EAAY,eAAQ9lE,EAAMpO,OAAQ,IAAMkrE,GAC5CxrE,KAAKy0E,SAASD,EAAWpJ,IAE7BqB,EAAWvsE,UAAUu0E,SAAW,SAAUZ,EAAIrvE,GACtCxE,KAAKqY,SAAWrY,KAAK00E,UAAUb,KAAQA,EAAG3uE,UAAUmB,SAAS7B,KAC7DxE,KAAK20E,YAAYnwE,GACjB,eAAS,CAACqvE,GAAKrvE,GACXA,IAAc6mE,GACdwI,EAAGlpE,aAAa,gBAAiB,UAI7C8hE,EAAWvsE,UAAU4zE,aAAe,SAAUD,EAAInlE,GAC1C1O,KAAK00E,UAAUb,KACf7zE,KAAK0b,WAAWm4D,EAAGnpE,aAAa,eAC5B1K,KAAK2Z,YACL3Z,KAAK0zE,aAET1zE,KAAKyuC,gBAAkBolC,EACvB7zE,KAAK6uE,YAAcjvE,MAAMM,UAAUwN,MAAMpK,KAAKtD,KAAK0sE,eAAe1oE,QAAQ6vE,GAC1E7zE,KAAK8uE,iBAAmB,IAAIn2D,KAAK3Y,KAAKosE,gBAAgBpsE,KAAK6uE,cAC3D,eAAS,CAAC7uE,KAAKyuC,iBAAkB/3B,GACjC1W,KAAKyuC,gBAAgB9jC,aAAa,gBAAiB,QACnD3K,KAAKm0E,iBAAiBzlE,GAAO,KAGrC+9D,EAAWvsE,UAAU00E,aAAe,WAChC50E,KAAK20E,YAAYvJ,IAErBqB,EAAWvsE,UAAUwT,cAAgB,WACJ,eAAzB1T,KAAK8U,iBAAoC,OAAQnF,UAIjD3P,KAAKkS,QAGbu6D,EAAWvsE,UAAU2tE,UAAY,SAAUgH,EAAQC,GAC3C,eAAkB90E,KAAKkd,eAAe23D,MACtC70E,KAAK8tE,QAAU9tE,KAAK2tE,cAAc,gBAElC,eAAkB3tE,KAAKkd,eAAe43D,MACtC90E,KAAK+tE,QAAU/tE,KAAK2tE,cAAc,iBAI1ClB,EAAWvsE,UAAUyyE,eAAiB,SAAUoC,EAASF,EAAQC,GAC7D,IAAIr8D,EAAQs8D,aAAmBp8D,KAAOo8D,EAAU/0E,KAAK2tE,cAAcoH,GAYnE,OAXK,eAAkB/0E,KAAKkd,eAAezE,KAGhCzY,KAAK4wE,cAAc5wE,KAAKutE,kBAAkBvtE,KAAK8tE,WACpD9tE,KAAK4wE,cAAc5wE,KAAKutE,kBAAkBvtE,KAAK+tE,WACjD/tE,KAAKmxE,kBAJL4D,EAAU/0E,KAAKg1E,gBAAgBh1E,KAAK8tE,QAAS9tE,KAAK+tE,QAASgH,EAASt8D,GAMpEzY,KAAK2b,aACLo5D,EAAU/0E,KAAKiuE,eAAe8G,GAAWA,EAAU,MAEvD/0E,KAAKwtE,gBAAgBuH,GACdA,GAEXtI,EAAWvsE,UAAU+tE,eAAiB,SAAUx1D,GAC5C,GAAIzY,KAAK2sE,sBAAsBhsE,OAAS,EAAG,CACvC,GAAIX,KAAK2sE,sBAAsBhsE,SAAWX,KAAKosE,gBAAgBzrE,OAC3D,OAAO,EAGX,IADA,IAAIotC,EAAOt1B,aAAiBE,KAAO3Y,KAAKyzE,YAAYh7D,GAASA,EACpDhM,EAAQ,EAAGA,EAAQzM,KAAK2sE,sBAAsBhsE,OAAQ8L,IAC3D,GAAIshC,IAAS/tC,KAAK2sE,sBAAsBlgE,GACpC,OAAO,EAInB,OAAO,GAEXggE,EAAWvsE,UAAUgxE,cAAgB,SAAUr0D,GAC3C,IAAK7c,KAAK2b,WAAY,CAClB,IAAI3b,KAAKiuE,eAAepxD,GAiBpB,OAAO,EAhBP,IAAIpE,EAAkCzY,KAAKyvE,eAAezvE,KAAK2tE,cAAc9wD,IAEzEo4D,EAAWj1E,KAAKyvE,eAAezvE,KAAK2tE,cAAc3tE,KAAK+tE,UACvDmH,EAAWl1E,KAAKyvE,eAAezvE,KAAK2tE,cAAc3tE,KAAK8tE,UAC3D,GAAK,eAAkB9tE,KAAKkd,eAAezE,KAMvC,IAAM,GAAc,GAA2C,KAA5BzY,KAAKgY,aAAaS,MACjD,OAAO,OANX,IAAM,GAAW,IAAiB,GAAW,EACzC,OAAO,EAavB,OAAO,GAEXg0D,EAAWvsE,UAAU80E,gBAAkB,SAAUjxC,EAASC,EAAS+wC,EAASl4D,GACxE,IAAIo4D,EAAWj1E,KAAK4wE,cAAc5wE,KAAKutE,kBAAkBvpC,IACrDkxC,EAAWl1E,KAAK4wE,cAAc5wE,KAAKutE,kBAAkBxpC,IACrDtrB,EAAQzY,KAAK4wE,cAAc5wE,KAAKutE,kBAAkB1wD,IACtD,GAAI7c,KAAK2b,WAAY,CACjB,IAAKu5D,GAAYD,EAOb,OANAj1E,KAAKmxE,kBACLnxE,KAAKmuE,UAAYnuE,KAAK2tE,cAAcsH,GACpCj1E,KAAKia,iBAAiBja,KAAKoyE,SAASpyE,KAAKmuE,YACrCnuE,KAAK2Z,YACL3Z,KAAK0zE,aAEF1zE,KAAKgY,aAAaS,MAExB,IAAKy8D,IAAaz8D,EACnB,OAAOzY,KAAK2tE,cAAcuH,GAEzB,IAAKz8D,IAAUw8D,IAAaC,KAAcD,EAC3C,OAAOj1E,KAAK2tE,cAAcsH,QAI9B,IAAKC,GAAYD,IACbj1E,KAAKmxE,mBACA11D,OAAOzb,KAAK4wE,cAAcmE,KAC3B,OAAOA,EAInB,OAAOA,GAEXtI,EAAWvsE,UAAU2X,WAAa,WAC9B,OAAa/L,IAAI9L,KAAKiY,aAAaC,QAAQ,GAAI,YAAalY,KAAK8yE,aAAc9yE,MAC/E,OAAa8L,IAAI9L,KAAKgY,aAAc,OAAQhY,KAAK+d,iBAAkB/d,MACnE,OAAa8L,IAAI9L,KAAKgY,aAAc,QAAShY,KAAK8d,kBAAmB9d,MACrE,OAAa8L,IAAI9L,KAAKgY,aAAc,SAAUhY,KAAKke,mBAAoBle,MACvE,OAAa8L,IAAI9L,KAAKgY,aAAc,QAAShY,KAAKm1E,kBAAmBn1E,MACjEA,KAAK2Z,YACL,OAAa7N,IAAI9L,KAAKgY,aAAc,UAAWhY,KAAKie,eAAgBje,MAEpEA,KAAKib,iBAAmBjb,KAAKiY,aAAakG,aAC1C,OAAarS,IAAI9L,KAAKiY,aAAakG,YAAa,YAAane,KAAKo1E,aAAcp1E,MAEhFA,KAAKqe,aACL,OAAavS,IAAI9L,KAAKqe,YAAa,QAASre,KAAKkwC,iBAAkBlwC,MAElE,OAAQ2P,WACT3P,KAAK6sE,aAAe,eAAO7sE,KAAK6sE,aAAc7sE,KAAKwe,YACnDxe,KAAKq1E,WAAa,IAAI,OAAer1E,KAAKiY,aAAazI,UAAW,CAC9DmP,UAAW3e,KAAK2d,aAAa/X,KAAK5F,MAClCwe,WAAYxe,KAAK6sE,aACjBnuD,UAAW,YAEX1e,KAAKib,iBAAmBjb,KAAKgY,cAC7B,OAAalM,IAAI9L,KAAKgY,aAAc,YAAahY,KAAKizE,iBAAkBjzE,QAIpFysE,EAAWvsE,UAAU+d,eAAiB,SAAU9Q,GAC5C,OAAQA,EAAE0R,MACN,IAAK,UACG7e,KAAK2Z,YAAe3Z,KAAKoF,UAAapF,KAAKwZ,UAC3CxZ,KAAK4Z,OAAO,iBAAkB,CAC1BC,OAAQ,iBACR1M,EAAGA,IAGX,MACJ,QACI,QAGZs/D,EAAWvsE,UAAUgwC,iBAAmB,WACpC,GAAKlwC,KAAKqY,UAGLrY,KAAKgY,aAAaI,SAAU,CAC7B,IAAIk9D,EAAYt1E,KAAKgY,aAAatN,aAAa,SAC3CmS,EAAM7c,KAAKkd,eAAeld,KAAK0tE,eACN,mBAAzB1tE,KAAKoD,QAAQsM,UACbmN,EAAM,KACNy4D,EAAY,GACZt1E,KAAKgY,aAAarN,aAAa,QAAS,KAE5C3K,KAAKiL,cAAc,CAAEwN,MAAOoE,IAAO,GACnC7c,KAAK+uE,SAAW/uE,KAAKyY,MACrBzY,KAAK8uE,iBAAmB9uE,KAAKyY,MAC7BzY,KAAKmuE,UAAYnuE,KAAKyY,MAClBzY,KAAKgY,eACLhY,KAAKia,iBAAiBq7D,GAClBt1E,KAAK2Z,aACA27D,GACDt1E,KAAKia,iBAAiBja,KAAKmX,iBAE/BnX,KAAK0zE,cAET1zE,KAAKwtE,gBAAgB8H,GACrBt1E,KAAKs0E,UAAYt0E,KAAKgY,aAAaS,SAI/Cg0D,EAAWvsE,UAAUge,mBAAqB,SAAU/Q,GAC3CnN,KAAKqY,SAGVlL,EAAE8R,mBAENwtD,EAAWvsE,UAAUi1E,kBAAoB,WACjCn1E,KAAK2Z,YACL3Z,KAAK4Z,OAAO,eAAgB,CACxBC,OAAQ,oBAIpB4yD,EAAWvsE,UAAU4e,aAAe,WAC5B9e,KAAKiY,cACL,OAAa9S,OAAOnF,KAAKiY,aAAaC,QAAQ,GAAI,uBAAwBlY,KAAK8yE,cAEnF,OAAa3tE,OAAOnF,KAAKgY,aAAc,OAAQhY,KAAK+d,kBACpD,OAAa5Y,OAAOnF,KAAKgY,aAAc,QAAShY,KAAK8d,mBACrD,OAAa3Y,OAAOnF,KAAKgY,aAAc,SAAUhY,KAAKke,oBACtD,OAAa/Y,OAAOnF,KAAKgY,aAAc,QAAShY,KAAKm1E,mBACjDn1E,KAAKq1E,YACLr1E,KAAKq1E,WAAW7iE,UAEpB,OAAarN,OAAOnF,KAAKgY,aAAc,uBAAwBhY,KAAKizE,mBAChEjzE,KAAKib,iBAAoB,eAAkBjb,KAAKiY,eAAkB,eAAkBjY,KAAKiY,aAAakG,cACtG,OAAahZ,OAAOnF,KAAKiY,aAAakG,YAAa,uBAAwBne,KAAKo1E,cAEhFp1E,KAAKqe,aACL,OAAalZ,OAAOnF,KAAKqe,YAAa,QAASre,KAAKkwC,mBAG5Du8B,EAAWvsE,UAAUgf,eAAiB,WAC9Blf,KAAKib,iBAAmBjb,KAAKiY,aAAakG,aAC1C,OAAarS,IAAI9L,KAAKiY,aAAakG,YAAa,YAAane,KAAKo1E,aAAcp1E,OAGxFysE,EAAWvsE,UAAUq1E,kBAAoB,SAAUpoE,GAC/C,IAAIgS,EAAc,CACdzQ,MAAOvB,GAEXnN,KAAKiI,QAAQ,UAAWkX,IAE5BstD,EAAWvsE,UAAUk1E,aAAe,SAAUjoE,GAC1C,GAAKnN,KAAKqY,UAGVlL,EAAE+F,iBACG,eAAkBlT,KAAKyY,QAIxBzY,KAAKkuE,aACLluE,KAAKu1E,kBAAkBpoE,IAJvBnN,KAAKsI,MAAM6E,GAMXnN,KAAKygB,eACLzgB,KAAKygB,aAAaxP,UAAY,GAE9BjR,KAAK2Z,YACL3Z,KAAK4Z,OAAO,eAAgB,CACxBC,OAAQ,mBAGZ,eAAQ7Z,KAAKoD,QAAS,SAAS,CAC/B,IAAIA,EAAUpD,KAAKoD,QACfkc,EAAa1R,SAAS2R,YAAY,iBACtCD,EAAWE,UAAU,SAAS,GAAO,GACrCpc,EAAQqc,cAAcH,KAG9BmtD,EAAWvsE,UAAUoI,MAAQ,SAAUoG,GACnC1O,KAAKiL,cAAc,CAAEwN,MAAO,OAAQ,GACpCzY,KAAKmuE,UAAY,KACjBnuE,KAAKkuE,aACLluE,KAAKu1E,kBAAkB7mE,GACvB1O,KAAKqf,YAAY3Q,IAErB+9D,EAAWvsE,UAAUs1E,UAAY,WACzBx1E,KAAKoF,WACLpF,KAAKoF,SAAS2e,OAAS/jB,KAAK+jB,OAC5B/jB,KAAKoF,SAAS2C,aAGtB0kE,EAAWvsE,UAAUsuE,gBAAkB,SAAUnzD,GAI7C,IAHA,IAEI5C,EAFAgP,EAAapM,EAAY,eAAkBrb,KAAKggB,gBAAkB,GAAKvgB,OAAO2V,KAAKpV,KAAKggB,gBACxF,CAAC,OAAQ,WAAY,WAAY,QAAS,OAAQ,QAAS,MAAO,MAAO,eAEpEnS,EAAK,EAAG6b,EAAejC,EAAY5Z,EAAK6b,EAAa/oB,OAAQkN,IAAM,CACxE,IAAIwH,EAAOqU,EAAa7b,GACxB,IAAK,eAAkB7N,KAAKgY,aAAatN,aAAa2K,IAClD,OAAQA,GACJ,IAAK,WACD,GAAK,eAAkBrV,KAAK4sE,mBAAiDrhE,IAAhCvL,KAAK4sE,YAAY,YAA8BvxD,EAAW,CACnG,IAAIhD,EAAmD,aAAzCrY,KAAKgY,aAAatN,aAAa2K,IACA,KAAzCrV,KAAKgY,aAAatN,aAAa2K,IAAyD,SAAzCrV,KAAKgY,aAAatN,aAAa2K,GAClFrV,KAAKiL,cAAc,CAAEoN,QAASA,IAAYgD,GAE9C,MACJ,IAAK,QACDrb,KAAKkvE,WAAalvE,KAAKgY,aAAatN,aAAa2K,GACjD,MACJ,IAAK,WACD,GAAK,eAAkBrV,KAAK4sE,mBAAkDrhE,IAAjCvL,KAAK4sE,YAAY,aAA+BvxD,EAAW,CACpG,IAAI7B,EAAoD,aAAzCxZ,KAAKgY,aAAatN,aAAa2K,IACD,KAAzCrV,KAAKgY,aAAatN,aAAa2K,IAAyD,SAAzCrV,KAAKgY,aAAatN,aAAa2K,GAClFrV,KAAKiL,cAAc,CAAEuO,SAAUA,IAAa6B,GAEhD,MACJ,IAAK,OACDrb,KAAKgY,aAAarN,aAAa,OAAQ3K,KAAKgY,aAAatN,aAAa2K,IACtE,MACJ,IAAK,OACDrV,KAAKouB,KAAOzc,SAAS3R,KAAKgY,aAAatN,aAAa2K,GAAO,IAC3D,MACJ,IAAK,eACI,eAAkBrV,KAAK4sE,mBAAqDrhE,IAApCvL,KAAK4sE,YAAY,gBAAkCvxD,IAC5Frb,KAAKiL,cAAc,CAAE+O,YAAaha,KAAKgY,aAAatN,aAAa2K,KAAUgG,GAE/E,MACJ,IAAK,OACI,eAAkBrb,KAAK4sE,mBAA6CrhE,IAA5BvL,KAAK4sE,YAAY,QAA0BvxD,KACpF5C,EAAQ,IAAIE,KAAK3Y,KAAKgY,aAAatN,aAAa2K,IAC3C,eAAkBrV,KAAKkd,eAAezE,KACvCzY,KAAKiL,cAAc,CAAEwR,IAAKhE,IAAU4C,IAG5C,MACJ,IAAK,OACI,eAAkBrb,KAAK4sE,mBAA6CrhE,IAA5BvL,KAAK4sE,YAAY,QAA0BvxD,KACpF5C,EAAQ,IAAIE,KAAK3Y,KAAKgY,aAAatN,aAAa2K,IAC3C,eAAkBrV,KAAKkd,eAAezE,KACvCzY,KAAKiL,cAAc,CAAEoO,IAAKZ,IAAU4C,IAG5C,MACJ,IAAK,SACI,eAAkBrb,KAAK4sE,mBAA+CrhE,IAA9BvL,KAAK4sE,YAAY,UAA4BvxD,KACtF5C,EAAQ,IAAIE,KAAK3Y,KAAKgY,aAAatN,aAAa2K,IAC3C,eAAkBrV,KAAKkd,eAAezE,MACvCzY,KAAKmuE,UAAY11D,EACjBzY,KAAKiZ,aAAY,EAAOjZ,KAAKmuE,WAC7BnuE,KAAKiL,cAAc,CAAEwN,MAAOA,IAAU4C,KAG9C,SAKpBoxD,EAAWvsE,UAAUuvE,eAAiB,SAAUh3D,GAC5C,OAAI,eAAkBzY,KAAKkd,eAAezE,IAC/B,KAEJ,IAAIE,KAAK6lB,EAAMC,EAAO0sC,EAAK1yD,EAAM6K,WAAY7K,EAAM8K,aAAc9K,EAAM+K,eAElFipD,EAAWvsE,UAAUu1E,cAAgB,WACjC,IAAI1nC,EAAO,EACX,GAA4C,MAAxC/tC,KAAKqyE,iBAAiBpuE,MAAM,KAAK,IAAqD,IAAvCjE,KAAKqyE,iBAAiBruE,QAAQ,KAC7E+pC,EAAO,OAEN,GAAI/tC,KAAKqyE,iBAAiBruE,QAAQ,KAAO,EAE1C,IADA,IAAI0xE,EAAW11E,KAAKqyE,iBAAiBpuE,MAAM,KAClCjD,EAAI,EAAGA,EAAI00E,EAAS/0E,OAAQK,IACjC,GAAI00E,EAAS10E,GAAG6gB,cAAc7d,QAAQ,MAAQ,EAAG,CAC7C+pC,EAAO/sC,EACP,MAIZ,OAAO+sC,GAEX0+B,EAAWvsE,UAAUszE,YAAc,SAAU/6D,EAAO/J,GAChD,IAAImO,EACJ,GAAI7c,KAAKivE,cAAcx2D,GACnBzY,KAAKkuE,kBAIL,GADArxD,EAAM7c,KAAK0b,WAAWjD,GAClBzY,KAAK2b,WAAY,CAEjB,IAAImO,EAAoB,OAARjN,GAAgBpE,EAAMlM,OAAO5L,OAAS,EAClDX,KAAK2zE,cAAc3zE,KAAK+uE,UAAY/uE,KAAKgY,aAAaS,MAC1DzY,KAAKia,iBAAiB6P,GAClB9pB,KAAK2Z,aACAmQ,GACD9pB,KAAKia,iBAAiBja,KAAKmX,iBAE3B,eAAkB0F,IAAQpE,IAAUzY,KAAKmX,iBACzCnX,KAAK0zE,aAEL,eAAkB72D,IAAQpE,IAAUzY,KAAKmX,iBACzCnX,KAAKia,iBAAiBja,KAAKmX,kBAK3CnX,KAAKm0E,iBAAiBzlE,EAAwB,kBAAV+J,IAExCg0D,EAAWvsE,UAAUyzE,cAAgB,SAAU7wD,GAE3C,IADA,IAAIrK,EAAQzY,KAAK2tE,cAAc7qD,GACtB9hB,EAAI,EAAGA,EAAIhB,KAAKosE,gBAAgBzrE,OAAQK,IAC7C,IAAKyX,IAAUzY,KAAKosE,gBAAgBprE,GAAI,CACpChB,KAAK6uE,YAAc7tE,EACnBhB,KAAKyuC,gBAAkBzuC,KAAK0sE,cAAc1rE,GAC1ChB,KAAK8uE,iBAAmB,IAAIn2D,KAAK3Y,KAAKosE,gBAAgBprE,IACtD,MAGR,OAAOhB,KAAKs0E,WAEhB7H,EAAWvsE,UAAUguE,WAAa,WAC9BluE,KAAK21E,kBACL,OAAM91D,SAAS,GAAI7f,KAAKgY,aAAchY,KAAK8X,gBAAgB,GAC3D9X,KAAK8uE,iBAAmB9uE,KAAK6uE,YAAc,KACtC7uE,KAAK2b,YACN3b,KAAKwtE,gBAAgB,OAG7Bf,EAAWvsE,UAAUuzE,YAAc,SAAU52D,GACzC,OAAI,eAAkB7c,KAAKkd,eAAeL,IAC/B,KAGA7c,KAAKua,UAAU8B,WAAWQ,EAAK,CAAEP,OAAQtc,KAAKqyE,iBAAkB7jE,KAAM,UAGrFi+D,EAAWvsE,UAAUwb,WAAa,SAAUjD,GACxC,IAAKzY,KAAKivE,cAAcx2D,GAAQ,CAC5B,IAAIqK,EAAOrK,aAAiBE,KAAOF,EAAQzY,KAAK2tE,cAAcl1D,GAC9D,OAAOzY,KAAK41E,cAAc9yD,EAAMrK,GAGpC,OADAzY,KAAKkuE,aACEluE,KAAK8uE,iBAAmB,MAEnCrC,EAAWvsE,UAAU01E,cAAgB,SAAU9yD,EAAMrK,GACjD,IAAIs1B,EACAlxB,EAAM7c,KAAK2yE,eAAel6D,EAAOzY,KAAKyc,IAAKzc,KAAKqZ,KAChDw8D,EAAS71E,KAAK2tE,cAAc9wD,GAahC,GAZI7c,KAAKutE,kBAAkBsI,KAAY71E,KAAKutE,kBAAkBvtE,KAAKyY,QAC/DzY,KAAK8uE,iBAAmB,eAAkB+G,GAAU,KAAOA,EAC3D9nC,EAAO/tC,KAAKyzE,YAAYzzE,KAAK8uE,oBAGzB9uE,KAAK2b,aAELmH,EAAO+yD,GAEX71E,KAAK8uE,iBAAmB9uE,KAAKkd,eAAe4F,GAC5CirB,EAAO/tC,KAAKyzE,YAAYzzE,KAAK8uE,oBAE5B9uE,KAAK2b,YAAc,eAAkBoyB,GAAO,CAC7C,IAAI+nC,EAAUj5D,EAAItQ,OAAO5L,OAAS,EAAIkc,EAAM,GAC5C7c,KAAKia,iBAAiB67D,GAClB91E,KAAK2Z,aACAm8D,GACD91E,KAAKia,iBAAiBja,KAAKmX,uBAKnCnX,KAAKia,iBAAiB8zB,GAClB/tC,KAAK2Z,aACQ,KAATo0B,GACA/tC,KAAKia,iBAAiBja,KAAKmX,iBAE3B,eAAkB42B,IAASt1B,IAAUzY,KAAKmX,iBAC1CnX,KAAK0zE,aAEL,eAAkB3lC,IAASt1B,IAAUzY,KAAKmX,iBAC1CnX,KAAKia,iBAAiBja,KAAKmX,kBAIvC,OAAO42B,GAEX0+B,EAAWvsE,UAAUwzE,WAAa,WAC9B1zE,KAAK4Z,OAAO,aAAc,CACtBC,OAAQ,oBAGhB4yD,EAAWvsE,UAAU61E,gBAAkB,SAAUrnE,GAC7C,IAAIsnE,EAAWh2E,KAAiB,aAAEyY,MAC9BA,EAAQ,eAAkBzY,KAAK8uE,kBAAoB9uE,KAAK4wE,cAAcoF,GACtEh2E,KAAK2tE,cAAc3tE,KAAK8uE,kBACxBmH,EAAU,KACVlrC,EAAQ/qC,KAAK0sE,cAAc/rE,OAC3Bu1E,EAAcl2E,KAAKosE,gBACvB,GAAK,eAAkBpsE,KAAKkd,eAAezE,KAAY,eAAkBzY,KAAK6uE,aAiD1E7uE,KAAKm2E,eAAeznE,OAjDoE,CACxF,GAAqB,SAAjBA,EAAMiS,OAAmB,CACzB,IAAIlU,EAAQzM,KAAKo2E,eAAe,GAChCH,GAAYj2E,KAAK4wE,cAAc,IAAIj4D,KAAK3Y,KAAKosE,gBAAgB3/D,KAC7DzM,KAAK6uE,YAAcpiE,OAElB,GAAqB,QAAjBiC,EAAMiS,OAAkB,CACzBlU,EAAQzM,KAAKo2E,eAAeF,EAAYv1E,OAAS,GAAG,GACxDs1E,GAAYj2E,KAAK4wE,cAAc,IAAIj4D,KAAK3Y,KAAKosE,gBAAgB3/D,KAC7DzM,KAAK6uE,YAAcpiE,OAGnB,GAAqB,SAAjBiC,EAAMiS,OACN,IAAK,IAAI3f,EAAI,EAAGA,EAAI+pC,EAAO/pC,IAAK,CAC5B,IAAKyX,EAAQzY,KAAKosE,gBAAgBprE,GAAI,CAC9ByL,EAAQzM,KAAKo2E,eAAep1E,GAChCi1E,GAAYj2E,KAAK4wE,cAAc,IAAIj4D,KAAK3Y,KAAKosE,gBAAgB3/D,KAC7DzM,KAAK6uE,YAAcpiE,EACnB,MAEC,GAAIzL,IAAM+pC,EAAQ,EAAG,CAClBt+B,EAAQzM,KAAKo2E,eAAe,GAChCH,GAAYj2E,KAAK4wE,cAAc,IAAIj4D,KAAK3Y,KAAKosE,gBAAgB3/D,KAC7DzM,KAAK6uE,YAAcpiE,EACnB,YAKR,IAASzL,EAAI+pC,EAAQ,EAAG/pC,GAAK,EAAGA,IAAK,CACjC,IAAKyX,EAAQzY,KAAKosE,gBAAgBprE,GAAI,CAC9ByL,EAAQzM,KAAKo2E,eAAep1E,GAAG,GACnCi1E,GAAYj2E,KAAK4wE,cAAc,IAAIj4D,KAAK3Y,KAAKosE,gBAAgB3/D,KAC7DzM,KAAK6uE,YAAcpiE,EACnB,MAEC,GAAU,IAANzL,EAAS,CACVyL,EAAQzM,KAAKo2E,eAAerrC,EAAQ,GACxCkrC,GAAYj2E,KAAK4wE,cAAc,IAAIj4D,KAAK3Y,KAAKosE,gBAAgB3/D,KAC7DzM,KAAK6uE,YAAcpiE,EACnB,OAKhBzM,KAAKyuC,gBAAkBzuC,KAAK0sE,cAAc1sE,KAAK6uE,aAC/C7uE,KAAKq2E,aAAa,eAAkBJ,GAAW,KAAO,IAAIt9D,KAAKs9D,MAMvExJ,EAAWvsE,UAAUi2E,eAAiB,SAAUznE,GAC5C,IAAIjC,EAAQzM,KAAKo2E,eAAe,EAAoB,SAAjB1nE,EAAMiS,QACzC3gB,KAAK6uE,YAAcpiE,EACnBzM,KAAKyuC,gBAAkBzuC,KAAK0sE,cAAcjgE,GAC1CzM,KAAKq2E,aAAa,IAAI19D,KAAK3Y,KAAKosE,gBAAgB3/D,MAEpDggE,EAAWvsE,UAAUm2E,aAAe,SAAU59D,GACrC,eAAkBzY,KAAKkd,eAAezE,KACvCzY,KAAK0b,WAAWjD,IAGxBg0D,EAAWvsE,UAAUk2E,eAAiB,SAAU3pE,EAAO6pE,GACnD,IAAIC,EAAe,KACf9sB,EAAQ,eAAkBzpD,KAAKygB,cAAgBzgB,KAAK0sE,cACpD1sE,KAAKygB,aAAaiC,iBAAiB,IAAM8oD,GACzCgL,GAAU,EACd,GAAI/sB,EAAM9oD,OACN,GAAI21E,EACA,IAAK,IAAIt1E,EAAIyL,EAAOzL,GAAK,EAAGA,IAAK,CAC7B,IAAKyoD,EAAMzoD,GAAGkE,UAAUmB,SAAS24B,GAAW,CACxCu3C,EAAev1E,EACf,MAEW,IAANA,GACDw1E,IACA/pE,EAAQzL,EAAIyoD,EAAM9oD,OAClB61E,GAAU,QAMtB,IAASx1E,EAAIyL,EAAOzL,GAAKyoD,EAAM9oD,OAAS,EAAGK,IAAK,CAC5C,IAAKyoD,EAAMzoD,GAAGkE,UAAUmB,SAAS24B,GAAW,CACxCu3C,EAAev1E,EACf,MAEKA,IAAMyoD,EAAM9oD,OAAS,GACtB61E,IACA/pE,EAAQzL,GAAK,EACbw1E,GAAU,GAM9B,OAAOD,GAEX9J,EAAWvsE,UAAUqzE,WAAa,SAAU7kE,GACxC,KAAI,eAAkB1O,KAAKouB,OAASpuB,KAAKouB,MAAQ,IAAM,eAAkBpuB,KAAKiY,eACvEjY,KAAKiY,aAAaC,QAAQ,GAAGhT,UAAUmB,SAAS24B,IADvD,CAIA,IAAI+L,EAAQ/qC,KAAKosE,gBAAgBzrE,OACjC,GAAI,eAAkBX,KAAK2xE,qBAA0D,IAAnC3xE,KAAK2xE,mBAAmBhxE,OACtE,GAAIX,KAAK0sE,cAAc/rE,OAAS,EAC5B,GAAI,eAAkBX,KAAKyY,QAAU,eAAkBzY,KAAK6uE,aAAc,CACtE,IAAIpiE,EAAQzM,KAAKo2E,eAAe,EAAoB,SAAjB1nE,EAAMiS,QACzC3gB,KAAK6uE,YAAcpiE,EACnBzM,KAAKyuC,gBAAkBzuC,KAAK0sE,cAAcjgE,GAC1CzM,KAAKq2E,aAAa,IAAI19D,KAAK3Y,KAAKosE,gBAAgB3/D,UAGhDzM,KAAK+1E,gBAAgBrnE,QAIzB1O,KAAK+1E,gBAAgBrnE,OAGxB,CACD,IAAI+nE,OAAW,EACf,GAAK/nE,EAAM8E,SAAW,IAAQ9E,EAAM8E,SAAW,GAAK,CAC5C/G,EAA2B,KAAlBiC,EAAM8E,SAAoC,KAAlB9E,EAAM8E,UAAoBxT,KAAK6uE,cAAgB7uE,KAAK6uE,YACzF7uE,KAAK6uE,YAAcpiE,EAAQzM,KAAK6uE,cAAgB,EAAU,EAAI7uE,KAAK6uE,YACnE7uE,KAAK6uE,YAAcpiE,EAAQzM,KAAK6uE,YAAc,EAAK9jC,EAAQ,EAAK/qC,KAAK6uE,YACrE7uE,KAAK6uE,YAAcpiE,EAAQzM,KAAKo2E,eAAep2E,KAAK6uE,YAAgC,KAAlBngE,EAAM8E,SAAoC,KAAlB9E,EAAM8E,SAEhGijE,EAAW,eAAkBz2E,KAAKosE,gBAAgB3/D,IAC9CzM,KAAKosE,gBAAgB,GAAKpsE,KAAKosE,gBAAgB3/D,QAElD,GAAqB,SAAjBiC,EAAMiS,OAAmB,CAC1BlU,EAAQzM,KAAKo2E,eAAe,GAChCp2E,KAAK6uE,YAAcpiE,EACnBgqE,EAAWz2E,KAAKosE,gBAAgB3/D,QAE/B,GAAqB,QAAjBiC,EAAMiS,OAAkB,CACzBlU,EAAQzM,KAAKo2E,eAAerrC,EAAQ,GAAG,GAC3C/qC,KAAK6uE,YAAcpiE,EACnBgqE,EAAWz2E,KAAKosE,gBAAgB3/D,GAEpCzM,KAAKyuC,gBAAkBzuC,KAAK0sE,cAAc1sE,KAAK6uE,aAC/C7uE,KAAKq2E,aAAa,IAAI19D,KAAK89D,IAE/Bz2E,KAAK0uE,YAAa,EAClB1uE,KAAKy0E,SAASz0E,KAAKyuC,gBAAiB48B,GACpCrrE,KAAKwiB,sBACDxiB,KAAK2Z,YACL3Z,KAAKqxE,mBAELrxE,KAAK+yE,eAA0C,OAAzB/yE,KAAKyuC,iBAA8B//B,GAAwB,UAAfA,EAAMF,MACxExO,KAAK6xE,sBAGbpF,EAAWvsE,UAAUyvE,qBAAuB,SAAUjiC,EAAIjtC,GACtD,OAAO,eAAS,QAAUA,EAAI,+CAAgDitC,IAElF++B,EAAWvsE,UAAUsyE,qBAAuB,SAAU9kC,EAAIjtC,GACtD,OAAO,eAAS,QAAUA,EAAI,+CAAgDitC,IAElF++B,EAAWvsE,UAAUmwE,eAAiB,WAClC,OAAavkE,IAAI9L,KAAKiwE,YAAa,QAASjwE,KAAK4zE,aAAc5zE,MAC1D,OAAQ2P,WACT,OAAa7D,IAAI9L,KAAKiwE,YAAa,YAAajwE,KAAKu0E,YAAav0E,MAClE,OAAa8L,IAAI9L,KAAKiwE,YAAa,WAAYjwE,KAAK40E,aAAc50E,QAG1EysE,EAAWvsE,UAAUuwE,iBAAmB,WAChCzwE,KAAKiwE,cACL,OAAa9qE,OAAOnF,KAAKiwE,YAAa,QAASjwE,KAAK4zE,cAC/C,OAAQjkE,WACT,OAAaxK,OAAOnF,KAAKiwE,YAAa,YAAajwE,KAAKu0E,aACxD,OAAapvE,OAAOnF,KAAKiwE,YAAa,WAAYjwE,KAAK40E,iBAInEnI,EAAWvsE,UAAUm0E,aAAe,SAAU3lE,EAAO+J,GACjD,IAAIuY,EAAU,cAAD,CAAmBhxB,KAAKkd,eAAezE,IAAW,KAAOA,GACjEzY,KAAK+uE,YAAc/9C,IACpBhxB,KAAKmuE,UAAYn9C,EACjBhxB,KAAKqf,YAAY3Q,KAGzB+9D,EAAWvsE,UAAUmf,YAAc,SAAUlS,GACzCnN,KAAKkwE,eACLlwE,KAAKiZ,aAAY,EAAMjZ,KAAKmuE,WAC5B,IAAI7nD,EAAY,CACZ5X,MAAQvB,GAAK,KACbsL,MAAOzY,KAAKyY,MACZqZ,KAAO9xB,KAAiB,aAAEyY,MAC1B9J,cAAe,eAAkBxB,GACjC/J,QAASpD,KAAKoD,SAElBkjB,EAAU7N,MAAQzY,KAAK8uE,kBAAoB9uE,KAAK2tE,cAAc3tE,KAAKgY,aAAaS,OAChFzY,KAAK+uE,SAAW/uE,KAAK8uE,kBAAoB9uE,KAAK2tE,cAAc3tE,KAAKgY,aAAaS,OAC1EzY,KAAKoX,WAAapX,KAAKqX,cACvBrX,KAAKqX,eAAgB,EAGrBrX,KAAKiI,QAAQ,SAAUqe,GAE3BtmB,KAAKiX,mBAAqB,KAC1BjX,KAAKwtE,gBAAgBxtE,KAAKyY,QAE9Bg0D,EAAWvsE,UAAU+Y,YAAc,SAAUy9D,EAAU5zD,GAC/C4zD,IACA12E,KAAKs0E,UAAYt0E,KAAKoyE,SAAStvD,IAEnC9iB,KAAK+uE,SAAW/uE,KAAK8uE,iBAAmBhsD,EACnB,kBAATA,IAAuB9iB,KAAKyY,QAAU,IAAIE,MAAM3Y,KAAKyY,OAAOwR,gBAAgB,OAASnH,IAC7F9iB,KAAKiL,cAAc,CAAEwN,MAAOqK,IAAQ,GAChC9iB,KAAK2Z,YAAc3Z,KAAKyY,OACxBzY,KAAK0zE,eAGR1zE,KAAK2b,YAAc,eAAkB3b,KAAKyY,QAAUzY,KAAKiX,qBAC1DjX,KAAKwtE,gBAAgBxtE,KAAKiX,oBAC1BjX,KAAKia,iBAAiBja,KAAKiX,qBAE/BjX,KAAK4tE,kBAETnB,EAAWvsE,UAAUsiB,oBAAsB,YAClC,eAAkBxiB,KAAKyuC,kBAAoBzuC,KAAKyY,MACjD,eAAWzY,KAAKgY,aAAc,CAAE,wBAAyBhY,KAAKyuC,gBAAgB/jC,aAAa,QAG3F1K,KAAKgY,aAAapN,gBAAgB,0BAG1C6hE,EAAWvsE,UAAUy1E,gBAAkB,WAEnC,GADA31E,KAAK20E,YAAYvJ,IACZ,eAAkBprE,KAAKygB,cAAe,CACvC,IAAIgpC,EAAQzpD,KAAKygB,aAAaiC,iBAAiB,IAAMhM,GACjD+yC,EAAM9oD,SACN,gBAAY8oD,EAAO/yC,GACnB+yC,EAAM,GAAG7+C,gBAAgB,oBAIrC6hE,EAAWvsE,UAAUy0E,YAAc,SAAUnwE,GACzC,IAAImyE,EAAc32E,KAAK42E,aAAapyE,GAChCmyE,GAAeA,EAAYh2E,SAC3B,gBAAYg2E,EAAanyE,GACrBA,IAAc6mE,GACdsL,EAAY,GAAG/rE,gBAAgB,mBAI3C6hE,EAAWvsE,UAAU02E,aAAe,SAAUpyE,GAC1C,IAAImyE,EAIJ,OAHK,eAAkB32E,KAAKygB,gBACxBk2D,EAAc32E,KAAKygB,aAAaiC,iBAAiB,IAAMle,IAEpDmyE,GAEXlK,EAAWvsE,UAAU22E,eAAiB,WAClC,IAAK,eAAkB72E,KAAKygB,cAAe,CACvC,IAAIgpC,EAAQzpD,KAAKygB,aAAaiC,iBAAiB,IAAM8oD,GACrD,GAAI/hB,EAAM9oD,OACN,IAAK,IAAIK,EAAI,EAAGA,EAAIyoD,EAAM9oD,OAAQK,IAC9B,GAAKhB,KAAKosE,gBAAgBprE,MAAQhB,KAAK2tE,cAAc3tE,KAAK8uE,kBAAoB,CAC1ErlB,EAAMzoD,GAAG2J,aAAa,gBAAiB,QACvC3K,KAAKyuC,gBAAkBgb,EAAMzoD,GAC7BhB,KAAK6uE,YAAc7tE,EACnB,SAMpByrE,EAAWvsE,UAAUgwE,aAAe,WAChClwE,KAAKyuC,gBAAkB,KACvBzuC,KAAK21E,kBACL31E,KAAK62E,iBACA,eAAkB72E,KAAKyuC,mBACxB,eAAS,CAACzuC,KAAKyuC,iBAAkB/3B,GACjC1W,KAAKyuC,gBAAgB9jC,aAAa,gBAAiB,UAG3D8hE,EAAWvsE,UAAUw0E,UAAY,SAAUb,GACvC,OAAQA,GAAMA,EAAG3uE,UAAUmB,SAASmlE,KAAeqI,EAAG3uE,UAAUmB,SAAS24B,IAE7EytC,EAAWvsE,UAAU0wE,cAAgB,SAAU/zD,GAC3C,IAAIi6D,EAAY,KACZ7yC,EAAQjkC,KAAKua,UAAU8B,WAAW,IAAI1D,KAAQ,CAAE2D,OAAQw6D,EAAWv6D,SAAU,QAAS/N,KAAM,SAC5FiK,EAAQ,KAgBZ,MAfmB,kBAARoE,EACHA,EAAIomB,cAAcj/B,QAAQ,OAAS,GAAK6Y,EAAIomB,cAAcj/B,QAAQ,OAAS,GAC3EigC,EAAQjkC,KAAKouE,eAAe/xD,WAAW,IAAI1D,KAAQ,CAAE2D,OAAQw6D,EAAWv6D,SAAU,QAAS/N,KAAM,SACjGiK,EAAQgD,OAAO,IAAI9C,KAAKsrB,EAAQ,IAAMpnB,IAAQ,KAAO,IAAIlE,KAAK,IAAIA,KAAKsrB,EAAQ,IAAMpnB,GAAKoN,gBAAgB,IACtG,eAAkBxR,KAClBA,EAAQzY,KAAK+2E,UAAU9yC,EAAOpnB,KAIlCpE,EAAQzY,KAAK+2E,UAAU9yC,EAAOpnB,GAG7BA,aAAelE,OACpBF,EAAQoE,GAELpE,GAEXg0D,EAAWvsE,UAAU62E,UAAY,SAAU9yC,EAAOpnB,GAC9C,IAAIpE,EAQJ,OAPAA,EAAQzY,KAAKua,UAAU4C,UAAU8mB,EAAQ,IAAMpnB,EAAK,CAChDP,OAAQtc,KAAKsyE,iBAAmB,IAAMtyE,KAAKqyE,iBAAkB7jE,KAAM,aAEvEiK,EAAQ,eAAkBA,GAASzY,KAAKua,UAAU4C,UAAU8mB,EAAQ,IAAMpnB,EAAK,CAC3EP,OAAQtc,KAAKsyE,iBAAmB,IAAMtyE,KAAKyyE,gBAAiBjkE,KAAM,aACjEiK,EACLA,EAAQ,eAAkBA,GAASA,EAAQ,IAAIE,KAAKF,EAAMwR,gBAAgB,IACnExR,GAEXg0D,EAAWvsE,UAAU6rE,gBAAkB,WACnC,IAEI7pD,EAFA7e,EAAQrD,KACZA,KAAKiwE,YAAcjwE,KAAKuE,cAAc,MAAO,CAAEC,UAAW1C,EAASkN,MAAO,CAAE,SAAY,QAExF,IAAIk9D,EAAuB,IAAZlsE,KAAKouB,KAChB+9C,EAAY,GAChBnsE,KAAKosE,gBAAkB,GACvBpsE,KAAK2sE,sBAAwB,GAC7BzqD,GAAUliB,KAAK2tE,cAAc3tE,KAAK8tE,SAAS7jD,gBAAgB,GAC3D,IAAI9H,GAAQniB,KAAK2tE,cAAc3tE,KAAK+tE,SAAS9jD,gBAAgB,GAC7D,MAAO9H,GAAOD,EACVliB,KAAKosE,gBAAgB//D,KAAK6V,GAC1BiqD,EAAU9/D,KAAKrM,KAAKua,UAAU8B,WAAW,IAAI1D,KAAKuJ,GAAQ,CAAE5F,OAAQtc,KAAKqyE,iBAAkB7jE,KAAM,UACjG0T,GAASgqD,EAEb,IAAI8K,EAAkB,CAClBC,YAAa,SAAUlxD,GACnB,IAAIO,EAAY,CACZljB,QAAS2iB,EAAKwnC,KACdz7B,KAAM/L,EAAK+L,KAAMrZ,MAAOpV,EAAMsqE,cAAc5nD,EAAK+L,MAAO+V,YAAY,GAExExkC,EAAM4E,QAAQ,aAAcqe,GAAW,SAAUA,GACzCA,EAAUuhB,YACVvhB,EAAUljB,QAAQ8B,UAAU4G,IAAIkzB,GAEhC1Y,EAAUljB,QAAQ8B,UAAUmB,SAAS24B,IACrC37B,EAAMspE,sBAAsBtgE,KAAKia,EAAUljB,QAAQsH,aAAa,oBAKhF1K,KAAKqsE,QAAU,OAASC,WAAWtsE,KAAKuE,cAAe4nE,EAAW6K,GAAiB,GACnF,eAAWh3E,KAAKqsE,QAAS,CAAE,KAAQ,UAAW,cAAe,QAAS,GAAMrsE,KAAKoD,QAAQkI,GAAK,WAAY,SAAY,MACtH,eAAO,CAACtL,KAAKqsE,SAAUrsE,KAAKiwE,cAEhCxD,EAAWvsE,UAAU8zE,qBAAuB,SAAUtlE,GAClD,IAAIpO,EAASoO,EAAMpO,OACb,eAAkBN,KAAKoF,WAAc,eAAkBpF,KAAKiY,iBAAkBjY,KAAKiY,aAAazI,UAAUnJ,SAAS/F,IAA0B,cAAfoO,EAAMF,MACrIxO,KAAKoF,SAAShC,SAAWpD,KAAKoF,SAAShC,QAAQiD,SAAS/F,KAA6B,eAAfoO,EAAMF,MAC7EE,EAAMwE,iBAEJ,cAAD,CAAS5S,EAAQ,QAAUN,KAAKoF,SAAShC,QAAQkI,GAAK,OAAUhL,IAAWN,KAAKgY,cAC9E1X,KAAYN,KAAKiY,cAAgBjY,KAAKiY,aAAaC,QAAQ,KAC9D5X,KAAYN,KAAKiY,cAAgBjY,KAAKiY,aAAakG,cACnD7d,KAAYN,KAAKiY,cAAgBjY,KAAKiY,aAAazI,YAC9ClP,EAAO4E,UAAUmB,SAAS,iBAM1B/F,IAAWN,KAAKgY,eAChB,OAAQrI,WACT3P,KAAK2uE,eAAiB,OAAQuI,MAA8B,SAAtB,OAAQx7B,KAAK1rC,OAAqBpC,SAASyT,gBAAkBrhB,KAAKgY,cAChG1X,IAAWN,KAAKygB,eARxBzgB,KAAK+yE,gBACL/yE,KAAKkS,OACLlS,KAAK+hB,aAUjB0qD,EAAWvsE,UAAUoqB,aAAe,WAChC,OAAMA,aAAatqB,KAAKyF,UAAW,CAACzF,KAAKiY,aAAazI,YAClDxP,KAAKoF,WACLpF,KAAKoF,SAASK,UAAYzF,KAAKyF,UAC/BzF,KAAKoF,SAAS2C,aAGtB0kE,EAAWvsE,UAAU6vC,UAAY,WAC7B,OAAM3lB,WAAWpqB,KAAKqY,QAASrY,KAAKgY,aAAchY,KAAK8X,gBACnD9X,KAAKqY,SACL,gBAAY,CAACrY,KAAKiY,aAAazI,WAAYwvB,GAC3C,eAAWh/B,KAAKgY,aAAc,CAAE,gBAAiB,UACjDhY,KAAKgY,aAAarN,aAAa,WAAY3K,KAAKmb,YAGhDnb,KAAKkS,OACL,eAAS,CAAClS,KAAKiY,aAAazI,WAAYwvB,GACxC,eAAWh/B,KAAKgY,aAAc,CAAE,gBAAiB,SACjDhY,KAAKgY,aAAamD,UAAY,IAGtCsxD,EAAWvsE,UAAUi3E,YAAc,SAAUr0D,EAAMjG,GACnC,QAARA,GACA7c,KAAK8tE,QAAU9tE,KAAKkd,eAAe,IAAIvE,KAAK3Y,KAAKsuE,aAAaxrD,EAAKrG,OACnEzc,KAAKiL,cAAc,CAAEwR,IAAKzc,KAAK8tE,UAAW,KAG1C9tE,KAAK+tE,QAAU/tE,KAAKkd,eAAe,IAAIvE,KAAK3Y,KAAKsuE,aAAaxrD,EAAKzJ,OACnErZ,KAAKiL,cAAc,CAAEoO,IAAKrZ,KAAK+tE,UAAW,IAEd,KAA5B/tE,KAAKgY,aAAaS,MAClBzY,KAAK2yE,eAAe3yE,KAAKyY,MAAOzY,KAAKyc,IAAKzc,KAAKqZ,KAG/CrZ,KAAK0b,WAAW1b,KAAKgY,aAAaS,OAEtCzY,KAAKm0E,iBAAiB,MAAM,IAEhC1H,EAAWvsE,UAAU6d,iBAAmB,SAAU5Q,GAC9C,GAAKnN,KAAKqY,QAIV,GAAIrY,KAAK2uE,eAAiB3uE,KAAK+yE,cAC3B/yE,KAAKgY,aAAa+H,YADtB,CAIA/f,KAAKgzE,WAAW,EAAG7lE,GACfnN,KAAK2Z,YAAc3Z,KAAKmX,iBAAmBnX,KAAKga,aAAuC,WAAxBha,KAAK8X,iBAChE9X,KAAKgY,aAAaS,QAAUzY,KAAKmX,iBAAoBnX,KAAKyY,OAAkC,SAAxBzY,KAAK8X,gBAAqD,UAAxB9X,KAAK8X,iBAA8B9X,KAAKga,aAC9Iha,KAAKia,iBAAiB,KAG9B,gBAAY,CAACja,KAAKiY,aAAazI,WAAY,CAAC+7D,IACxCvrE,KAAKquB,YAAcruB,KAAKgY,aAAaS,MACrCzY,KAAKwzE,YAAaxzE,KAAiB,aAAEyY,MAAOtL,GAEG,IAA1CnN,KAAKgY,aAAaS,MAAMlM,OAAO5L,QACpCX,KAAKkuE,aAETluE,KAAKmzE,cAAgB,KACrBnzE,KAAK0uE,YAAa,EACc,KAA5B1uE,KAAKgY,aAAaS,QAClBzY,KAAKiX,mBAAqB,MAE9B,IAAIqK,EAAgB,CAChBN,MAAOhhB,MAEXA,KAAKiI,QAAQ,OAAQqZ,KAOzBmrD,EAAWvsE,UAAU6hB,SAAW,WAC5B,GAAInU,SAASyT,gBAAkBrhB,KAAKgY,aAAc,CAC9ChY,KAAKgY,aAAa8H,OAClB,gBAAY,CAAC9f,KAAKiY,aAAazI,WAAY,CAAC+7D,IAC5C,IAAIjqD,EAAgB,CAChBN,MAAOhhB,MAEXA,KAAKiI,QAAQ,OAAQqZ,KAG7BmrD,EAAWvsE,UAAU6yE,YAAc,WAC/B,SAAI/yE,KAAKygB,eAAgBzgB,KAAKygB,aAAavb,UAAUmB,SAAS,GAAK7E,KAKvEirE,EAAWvsE,UAAU4d,kBAAoB,WACrC,GAAK9d,KAAKqY,QAAV,CAGA,IAAI0I,EAAiB,CACjBC,MAAOhhB,MAENA,KAAKwZ,UAAa,OAAQ7J,UAAa3P,KAAK2Z,YAC7C3Z,KAAKqxE,kBAELrxE,KAAK2Z,aAAe3Z,KAAKgY,aAAaS,OAASzY,KAAKga,eAChDha,KAAKmX,iBAAoBnX,KAAKyY,OAAkC,SAAxBzY,KAAK8X,gBAAqD,UAAxB9X,KAAK8X,iBAA8B9X,KAAKga,cAClHha,KAAKia,iBAAiBja,KAAKmX,iBAC3BnX,KAAKgY,aAAa6I,eAAiB,EACnC7gB,KAAKgY,aAAa8I,aAAe9gB,KAAKgY,aAAaS,MAAM9X,SAGjEX,KAAKiI,QAAQ,QAAS8Y,GACtB/gB,KAAK4tE,iBACD5tE,KAAKihB,aACLjhB,KAAKkQ,SAQbu8D,EAAWvsE,UAAU+mB,QAAU,WACvBrZ,SAASyT,gBAAkBrhB,KAAKgY,cAAgBhY,KAAKqY,SACrDrY,KAAKgY,aAAa+H,SAS1B0sD,EAAWvsE,UAAUgS,KAAO,WACxBlS,KAAKgzE,WAAW,IAAK,MACrBhzE,KAAK4tE,kBASTnB,EAAWvsE,UAAUgQ,KAAO,SAAUxB,GAClC,IAAIrL,EAAQrD,KACZ,KAAKA,KAAKqY,SAAWrY,KAAKwZ,WAAcxZ,KAAKqY,SAAWrY,KAAKygB,cAA7D,CAIIzgB,KAAKguE,gBACD,OAAQr+D,UAAY3P,KAAKiwE,cACzBjwE,KAAK4jB,MAAQ5jB,KAAKuE,cAAc,OAChCvE,KAAK4jB,MAAMpf,UAAiBhD,EAAO,gBACnCoM,SAAS6B,KAAKjL,WAAa,IAAM6R,EACjCzI,SAAS6B,KAAK/K,YAAY1E,KAAK4jB,QAE/B,OAAQjU,WACR3P,KAAKi0E,oBAAsBj0E,KAAKuE,cAAc,MAAO,CAAEC,UAAW,gCAClEoJ,SAAS6B,KAAK/K,YAAY1E,KAAKi0E,sBAEnCj0E,KAAKktE,mBAAqB,CACtB9mD,MAAOpmB,KAAKoF,UAAY,KACxBqJ,QAAQ,EACRC,MAAOA,GAAS,KAChBsB,KAAM,OACNqW,SAAU,OAAQ1W,SAAW3P,KAAKi0E,oBAAsBrmE,SAAS6B,MAErE,IAAI6W,EAAYtmB,KAAKktE,mBAoCrB,GAnCAltE,KAAKiI,QAAQ,OAAQqe,GAAW,SAAUA,GAEtC,GADAjjB,EAAM6pE,mBAAqB5mD,EACtBjjB,EAAM6pE,mBAAmBz+D,QAAWpL,EAAM4U,aAAaC,QAAQ,GAAGhT,UAAUmB,SAAS24B,GA2BtF37B,EAAM+B,SAASoN,UACfnP,EAAMod,aAAepd,EAAMgpE,aAAU9gE,EACrClI,EAAMqpE,cAAgBrpE,EAAM+oE,gBAAkB/oE,EAAMspE,sBAAwB,GAC5EtpE,EAAM+B,SAAW,SA9BgF,CACjG/B,EAAM6pE,mBAAmB7mD,SAAS3hB,YAAYrB,EAAMod,cACpDpd,EAAM+zE,eAAe/zE,EAAM6pE,oBAC3B7pE,EAAMwuE,oBACD,OAAQliE,UACTtM,EAAM2U,aAAa+H,QAEvB,IAAIyG,EAAgB,CAChBxW,KAAM,SACNhN,SAAU0oE,GAEdroE,EAAM+B,SAASmhB,gBAAgBljB,EAAMoqE,QAChB,MAAjBpqE,EAAM0gB,OACN1gB,EAAM+B,SAAS8K,KAAK,IAAI,OAAUsW,GAAgBnjB,EAAMD,SAGxDC,EAAM+B,SAAS8K,KAAK,IAAI,OAAUsW,GAAgB,MAEtDnjB,EAAMmf,sBACN,eAAWnf,EAAM2U,aAAc,CAAE,gBAAiB,SAClD,eAAW3U,EAAM2U,aAAc,CAAE,YAAa3U,EAAM2U,aAAa1M,GAAK,aACtE,eAAWjI,EAAM2U,aAAc,CAAE,gBAAiB3U,EAAM2U,aAAa1M,KACrE,eAAS,CAACjI,EAAM4U,aAAazI,WAAY+7D,GACzC,OAAaz/D,IAAI8B,SAAU,uBAAwBvK,EAAM2wE,qBAAsB3wE,GAC/EA,EAAMojB,gBAAgBpjB,EAAM4wE,oBAAqB5wE,EAAM+B,SAAShC,QAASC,EAAMugB,MAAO,OAAQjU,cASlG,OAAQA,SAAU,CAClB,IAAIgX,EAAa3mB,KAAKuE,cAAc,MAAO,CAAEC,UAAW,kBACxDmiB,EAAW5f,MAAMgd,QAAU/jB,KAAK+jB,OAAS,GAAGnS,WAC5C5R,KAAKi0E,oBAAoBvvE,YAAYiiB,MAKjD8lD,EAAWvsE,UAAUumB,gBAAkB,SAAUhG,EAAc42D,EAAkBzzD,EAAOjU,GACpF,GAAIA,IAAa,eAAkB0nE,KAAsB,eAAkBzzD,KAAW,eAAkBnD,GAAe,CACnH,IAAIhU,EAAQkF,SAAS0lE,EAAiBtwE,MAAMgd,OAAQ,IAAMpS,SAAS0lE,EAAiBtwE,MAAMgd,OAAQ,IAAM,IACxGH,EAAM7c,MAAMgd,QAAUtX,EAAQ,GAAGmF,WACjC6O,EAAa1Z,MAAMgd,OAAStX,EAAMmF,aAG1C66D,EAAWvsE,UAAUo3E,aAAe,SAAU9oE,GAC1C,IAAIiK,EAOJ,MANoB,kBAATjK,EACPiK,EAAQ,eAAWjK,GAEE,kBAATA,IACZiK,EAASjK,EAAK5H,MAAM,YAAqB6U,MAAM9J,SAASnD,EAAM,KAA5BA,EAA0C,eAAWA,IAEpFiK,GAEXg0D,EAAWvsE,UAAUk3E,eAAiB,SAAUrxD,GAa5C,GAZAA,EAAKK,MAAMriB,SAASwB,EAAIvF,KAAKs3E,aAAavxD,EAAKK,MAAMriB,SAASwB,GAC9DwgB,EAAKK,MAAMriB,SAASyB,EAAIxF,KAAKs3E,aAAavxD,EAAKK,MAAMriB,SAASyB,GACzDiW,MAAM3U,WAAWif,EAAKK,MAAMriB,SAASwB,KAAQkW,MAAM3U,WAAWif,EAAKK,MAAMriB,SAASyB,MACnFxF,KAAKoF,SAASye,SAAW7jB,KAAKytE,OAAS7/D,SAAS6B,KAChDzP,KAAKoF,SAAS0e,WAAa,aAE1BrI,MAAM3U,WAAWif,EAAKK,MAAMriB,SAASwB,MACtCvF,KAAKoF,SAASsE,QAAU5C,WAAWif,EAAKK,MAAMriB,SAASwB,IAEtDkW,MAAM3U,WAAWif,EAAKK,MAAMriB,SAASyB,MACtCxF,KAAKoF,SAASuE,QAAU7C,WAAWif,EAAKK,MAAMriB,SAASyB,IAEtD,OAAQmK,SA2BqB,WAA1BoW,EAAKK,MAAMriB,SAASwB,GAA4C,WAA1BwgB,EAAKK,MAAMriB,SAASyB,IAC1DxF,KAAKoF,SAASye,SAAW7jB,KAAKytE,OAAS7/D,SAAS6B,KAChDzP,KAAKoF,SAASuE,QAAU,EACxB3J,KAAKoF,SAAS0e,WAAa,YAC3B9jB,KAAKoF,SAAS4e,UAAY,CAAEze,EAAG,MAAOC,EAAG,YA/B1B,CACnB,OAAQugB,EAAKK,MAAMriB,SAASwB,GACxB,IAAK,OACD,MACJ,IAAK,QACDwgB,EAAKK,MAAM1c,QAAU1J,KAAKuwE,eAAejrE,MACzC,MACJ,IAAK,SACDygB,EAAKK,MAAM1c,SAAY1J,KAAKuwE,eAAejrE,MAAQ,EACnD,MAER,OAAQygB,EAAKK,MAAMriB,SAASyB,GACxB,IAAK,MACD,MACJ,IAAK,SACD,MACJ,IAAK,SACDugB,EAAKK,MAAMzc,SAAY3J,KAAKuwE,eAAelrE,OAAS,EACpD,MAEsB,WAA1B0gB,EAAKK,MAAMriB,SAASwB,GAA4C,WAA1BwgB,EAAKK,MAAMriB,SAASyB,IAC1DxF,KAAKoF,SAASye,SAAW7jB,KAAKiY,aAAazI,UAC3CxP,KAAKytE,OAASztE,KAAKgY,aACnBhY,KAAKoF,SAAS0e,WAAa,cAkBvC2oD,EAAWvsE,UAAU6U,eAAiB,WAClC,IAAIi3B,EAAY,CAAC,SACjB,OAAOhsC,KAAKgV,aAAag3B,IAS7BygC,EAAWvsE,UAAU4U,cAAgB,WACjC,MAAO,cAUX23D,EAAWvsE,UAAU+U,kBAAoB,SAAUC,EAASC,GACxD,IAAK,IAAItH,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKF,GAAUrH,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC9D,IAAIwH,EAAOxR,EAAGgK,GACd,OAAQwH,GACJ,IAAK,cACD,OAAM6U,eAAehV,EAAQ8E,YAAaha,KAAKgY,cAC/C,MACJ,IAAK,WACD,OAAMmS,YAAYnqB,KAAKwZ,SAAUxZ,KAAKgY,aAAchY,KAAK8X,gBACrD9X,KAAKwZ,UACLxZ,KAAKkS,OAETlS,KAAKotE,mBACL,MACJ,IAAK,UACDptE,KAAKiL,cAAc,CAAEoN,QAASnD,EAAQmD,UAAW,GACjDrY,KAAK+vC,YACL,MACJ,IAAK,YACD/vC,KAAKotE,mBACL,MACJ,IAAK,YACDptE,KAAKiL,cAAc,CAAExF,UAAWyP,EAAQzP,YAAa,GACrDzF,KAAKsqB,eACL,MACJ,IAAK,WACDtqB,KAAKqgB,eAAenL,EAAQzK,SAAU0K,EAAQ1K,UAC9C,MACJ,IAAK,SACDzK,KAAKiL,cAAc,CAAE8Y,OAAQ7O,EAAQ6O,SAAU,GAC/C/jB,KAAKw1E,YACL,MACJ,IAAK,iBACDx1E,KAAKogB,+BACLpgB,KAAK+Z,+BACL/Z,KAAKwuE,iBAAgB,GACrB,MACJ,IAAK,MACL,IAAK,MACDxuE,KAAKm3E,YAAYjiE,EAASG,GAC1B,MACJ,IAAK,kBACD,OAAMkV,eAAevqB,KAAKib,gBAAiBjb,KAAKgY,aAAchY,KAAKiY,cACnEjY,KAAKkf,iBACL,MACJ,IAAK,SACDlf,KAAKiL,cAAc,CAAEuP,OAAQtF,EAAQsF,SAAU,GAC/Cxa,KAAKua,UAAY,IAAI,OAAqBva,KAAKwa,QAC/Cxa,KAAKya,KAAK4P,UAAUrqB,KAAKwa,QACrBxa,KAAK4sE,aAA+C,MAAhC5sE,KAAK4sE,YAAY5yD,aACrCha,KAAK6yE,oBAET7yE,KAAK6f,SAAS7f,KAAKyY,OACfzY,KAAK2Z,YACL3Z,KAAK4Z,OAAO,aAAc,CACtBC,OAAQ,mBAGhB,MACJ,IAAK,QACD,gBAAkB7Z,KAAKiY,aAAazI,UAAW,CAAE,MAASxP,KAAKkb,SAAShG,EAAQ5P,SAChFtF,KAAKuwE,eAAiBvwE,KAAKiY,aAAazI,UAAUpI,wBAClD,OAAM2Q,eAAe/X,KAAKgY,aAAchY,KAAKiY,aAAazI,WACrD,eAAkBxP,KAAKiY,aAAaC,QAAQ,KAAQ,eAAkBlY,KAAKiY,aAAazI,UAAU2I,uBAAuB,yBAAyB,KAA+B,UAAxBnY,KAAK8X,gBAC/J9X,KAAKiY,aAAazI,UAAU2I,uBAAuB,yBAAyB,GAAGjT,UAAU4G,IAAI,UAEjG,MACJ,IAAK,SACD9L,KAAKiL,cAAc,CAAEqR,OAAQpH,EAAQoH,SAAU,GAC/Ctc,KAAKquE,kBACLruE,KAAK6f,SAAS7f,KAAKyY,OACfzY,KAAK2Z,aACL3Z,KAAK0zE,aACA1zE,KAAKyY,OACNzY,KAAKia,iBAAiBja,KAAKmX,kBAGnC,MACJ,IAAK,QACDnX,KAAKiX,mBAAqB,KAC1BjX,KAAK0Z,kBAAkBxE,EAAQuD,OAC/BvD,EAAQuD,MAAQzY,KAAKyY,MAChBzY,KAAKiX,oBAcNjX,KAAKia,iBAAiBja,KAAKiX,oBAC3BjX,KAAKwtE,gBAAgBxtE,KAAKiX,sBAdG,kBAAlB/B,EAAQuD,OACfzY,KAAKiL,cAAc,CAAEwN,MAAOzY,KAAKkd,eAAe,IAAIvE,KAAKzD,EAAQuD,UAAW,GAC5EvD,EAAQuD,MAAQzY,KAAKyY,QAGhBvD,EAAQuD,QAAU,IAAIE,MAAMzD,EAAQuD,OAAOwR,gBAAgB,OAASjqB,KAAKyY,QAC1EvD,EAAQuD,MAAQzY,KAAKkd,eAAe,IAAIvE,KAAK,GAAKzD,EAAQuD,SAGlEzY,KAAKmuE,UAAYj5D,EAAQuD,MACzBvD,EAAQuD,MAAQzY,KAAK4yE,oBAAoB5yE,KAAK0b,WAAWxG,EAAQuD,SAMjEzY,KAAK2Z,YAAc,eAAkBzE,EAAQuD,SAC7CzY,KAAKia,iBAAiBja,KAAKmX,iBAC3BnX,KAAKwtE,gBAAgBxtE,KAAKmX,kBAE9BnX,KAAKm0E,iBAAiB,MAAM,GACxBn0E,KAAK+yE,eACL/yE,KAAK6xE,oBAEL7xE,KAAKoX,WAAapX,KAAKqX,gBACvBrX,KAAKqX,eAAgB,GAErBrX,KAAK2Z,YACL3Z,KAAK4Z,OAAO,aAAc,CACtBC,OAAQ,mBAGhB,MACJ,IAAK,iBACD7Z,KAAK8X,eAAiB5C,EAAQ4C,eAC9B,OAAM0S,eAAexqB,KAAKiY,cAC1B,OAAMwS,YAAYzqB,KAAKgY,aAAchY,KAAK8X,eAAgB9X,KAAKga,aAC1D,eAAkBha,KAAKiY,aAAaC,QAAQ,KAAQ,eAAkBlY,KAAKiY,aAAazI,UAAU2I,uBAAuB,yBAAyB,KAA+B,UAAxBnY,KAAK8X,gBAC/J9X,KAAKiY,aAAazI,UAAU2I,uBAAuB,yBAAyB,GAAGjT,UAAU4G,IAAI,UAEjG,MACJ,IAAK,aACD9L,KAAKiX,mBAAqB,KACtB/B,EAAQyG,YACR3b,KAAKwtE,gBAAgB,MAEzBxtE,KAAKiL,cAAc,CAAE0Q,WAAYzG,EAAQyG,aAAc,GACvD3b,KAAK0b,WAAY1b,KAAiB,aAAEyY,OACpCzY,KAAKm0E,iBAAiB,MAAM,GAC5B,MACJ,IAAK,WACGn0E,KAAKkd,eAAe,IAAIvE,KAAK3Y,KAAKsuE,aAAap5D,EAAQq5D,aACnDvuE,KAAKygB,cACLzgB,KAAK8xE,cAET9xE,KAAKiL,cAAc,CAAEsjE,SAAUvuE,KAAKkd,eAAe,IAAIvE,KAAK3Y,KAAKsuE,aAAap5D,EAAQq5D,cAAe,IAGrGvuE,KAAKiL,cAAc,CAAEsjE,SAAU,OAAQ,GAE3C,MACJ,IAAK,aACGvuE,KAAK2Z,YACL3Z,KAAK4Z,OAAO,aAAc,CACtBC,OAAQ,mBAEZ7Z,KAAKia,iBAAiBja,KAAKmX,kBAGvBnX,KAAKgY,aAAaS,QAAUzY,KAAKmX,iBACjCnX,KAAKia,iBAAiB,IAG9B,SAIhBwyD,EAAWvsE,UAAUouE,aAAe,SAAUj/B,GAC1C,OAAIA,aAAmB12B,KACX02B,EAAQC,cAGR,GAAKD,GAGrBjvC,EAAW,CACP,eAAS,OACVqsE,EAAWvsE,UAAW,aAAS,GAClCE,EAAW,CACP,eAAS,OACVqsE,EAAWvsE,UAAW,gBAAY,GACrCE,EAAW,CACP,gBAAS,IACVqsE,EAAWvsE,UAAW,kBAAc,GACvCE,EAAW,CACP,eAAS,OACVqsE,EAAWvsE,UAAW,kBAAc,GACvCE,EAAW,CACP,eAAS,OACVqsE,EAAWvsE,UAAW,cAAU,GACnCE,EAAW,CACP,gBAAS,IACVqsE,EAAWvsE,UAAW,eAAW,GACpCE,EAAW,CACP,gBAAS,IACVqsE,EAAWvsE,UAAW,sBAAkB,GAC3CE,EAAW,CACP,gBAAS,IACVqsE,EAAWvsE,UAAW,gBAAY,GACrCE,EAAW,CACP,eAAS,KACVqsE,EAAWvsE,UAAW,sBAAkB,GAC3CE,EAAW,CACP,eAAS,UACVqsE,EAAWvsE,UAAW,sBAAkB,GAC3CE,EAAW,CACP,eAAS,OACVqsE,EAAWvsE,UAAW,mBAAe,GACxCE,EAAW,CACP,eAAS,MACVqsE,EAAWvsE,UAAW,cAAU,GACnCE,EAAW,CACP,gBAAS,IACVqsE,EAAWvsE,UAAW,yBAAqB,GAC9CE,EAAW,CACP,gBAAS,IACVqsE,EAAWvsE,UAAW,uBAAmB,GAC5CE,EAAW,CACP,eAAS,KACVqsE,EAAWvsE,UAAW,YAAQ,GACjCE,EAAW,CACP,eAAS,OACVqsE,EAAWvsE,UAAW,gBAAY,GACrCE,EAAW,CACP,eAAS,OACVqsE,EAAWvsE,UAAW,aAAS,GAClCE,EAAW,CACP,eAAS,OACVqsE,EAAWvsE,UAAW,WAAO,GAChCE,EAAW,CACP,eAAS,OACVqsE,EAAWvsE,UAAW,WAAO,GAChCE,EAAW,CACP,gBAAS,IACVqsE,EAAWvsE,UAAW,iBAAa,GACtCE,EAAW,CACP,gBAAS,IACVqsE,EAAWvsE,UAAW,mBAAe,GACxCE,EAAW,CACP,gBAAS,IACVqsE,EAAWvsE,UAAW,kBAAc,GACvCE,EAAW,CACP,eAAS,CAAEsqB,IAAK,MAAOC,MAAO,QAASC,KAAM,OAAQC,KAAM,OAAQC,OAAQ,SAAUC,OAAQ,SAAUC,aAAc,qBACtHyhD,EAAWvsE,UAAW,uBAAmB,GAC5CE,EAAW,CACP,eAAS,OACVqsE,EAAWvsE,UAAW,4BAAwB,GACjDE,EAAW,CACP,kBACDqsE,EAAWvsE,UAAW,cAAU,GACnCE,EAAW,CACP,kBACDqsE,EAAWvsE,UAAW,eAAW,GACpCE,EAAW,CACP,kBACDqsE,EAAWvsE,UAAW,iBAAa,GACtCE,EAAW,CACP,kBACDqsE,EAAWvsE,UAAW,YAAQ,GACjCE,EAAW,CACP,kBACDqsE,EAAWvsE,UAAW,kBAAc,GACvCE,EAAW,CACP,kBACDqsE,EAAWvsE,UAAW,aAAS,GAClCE,EAAW,CACP,kBACDqsE,EAAWvsE,UAAW,eAAW,GACpCE,EAAW,CACP,kBACDqsE,EAAWvsE,UAAW,YAAQ,GACjCE,EAAW,CACP,kBACDqsE,EAAWvsE,UAAW,aAAS,GAClCusE,EAAarsE,EAAW,CACpB,QACDqsE,GAz6EwB,CA26E7B,QAn9EF,ICnFI,EAAwC,WACxC,IAAIntE,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxC,EAA0C,SAAUM,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAc5D8U,EAAc,iBACd6hE,EAAiB,eACjBC,EAAkB,qBAClB,GAAM,IAAI7+D,MAAOkuB,UACjB,GAAQ,IAAIluB,MAAOquB,WACnB,GAAO,IAAIruB,MAAOQ,cAClBs+D,GAAO,IAAI9+D,MAAO2K,WAClBo0D,GAAS,IAAI/+D,MAAO4K,aACpBo0D,GAAS,IAAIh/D,MAAO6K,aACpBo0D,GAAc,IAAIj/D,MAAO8K,kBACzB,EAAO,mBACPo0D,EAAuB,0BACvB/hE,EAAe,qBACf,EAAQ,UACR,EAAW,cACXG,EAAa,gBACb,EAAiB,QACjB,GAAgB,cAChB,GAAW,aACX,GAAQ,UACR,GAAU,YACV,GAAa,eACbG,GAAS,WACT,GAAQ,UACRG,GAAQ,UACR,GAAe,EACf,GAAY,cACZ,GAAoB,IACpB,GAAW,kBAcX,GAAgC,SAAU1T,GAS1C,SAASi1E,EAAe30E,EAASC,GAC7B,IAAIC,EAAQR,EAAOS,KAAKtD,KAAMmD,EAASC,IAAYpD,KAOnD,OANAqD,EAAMyrE,iBAAmB,KACzBzrE,EAAM00E,eAAgB,EACtB10E,EAAMmU,WAAanU,EAAMyR,gBACzBzR,EAAM20E,YAAc,6DACpB30E,EAAM40E,iBAAmB,GACzB50E,EAAM60E,gBAAkB/0E,EACjBE,EA4kDX,OA5lDA,EAAUy0E,EAAgBj1E,GAkB1Bi1E,EAAe53E,UAAU0zC,aAAe,WAC/B5zC,KAAKqY,SAGV,eAAS,CAACrY,KAAKiY,aAAazI,WAAYyG,IAO5C6hE,EAAe53E,UAAU+mB,QAAU,WAC/BpkB,EAAO3C,UAAU+mB,QAAQ3jB,KAAKtD,OAOlC83E,EAAe53E,UAAU6hB,SAAW,WAC5BnU,SAASyT,gBAAkBrhB,KAAKgY,eAChChY,KAAKgY,aAAa8H,OAClB,gBAAY,CAAC9f,KAAKiY,aAAazI,WAAY,CAACyG,MAGpD6hE,EAAe53E,UAAUi4E,YAAc,SAAUhrE,GAC7C,GAAKnN,KAAKqY,QAIV,GAAIrY,KAAKo4E,mBAAqBp4E,KAAK2uE,cAC/B3uE,KAAKgY,aAAa+H,YADtB,CAIA,gBAAY,CAAC/f,KAAKiY,aAAazI,WAAYyG,GAC3C,IAAIqL,EAAgB,CAChBN,MAAOhhB,MAEPA,KAAKo4E,mBACLp4E,KAAKkS,KAAK/E,GAEdnN,KAAKiI,QAAQ,OAAQqZ,KAOzBw2D,EAAe53E,UAAUsS,QAAU,WAC3BxS,KAAKq4E,aAAer4E,KAAKq4E,YAAYj1E,QAAQ8B,UAAUmB,SAAS,KAChErG,KAAKq4E,YAAY7lE,UACjB,eAAOxS,KAAKs4E,iBACZt4E,KAAKs4E,qBAAkB/sE,EACvBvL,KAAK0sE,cAAgB1sE,KAAKosE,gBAAkB,GACvC,eAAkBpsE,KAAK8vE,WACxB9vE,KAAK8vE,YAGb,IAAIF,EAAgB,CAChB,YAAa,YAAa,cAAe,OAAQ,eAAgB,QACjE,YAAe,MAAO,eAAkB,MAAO,WAAc,QAC7D,gBAAiB,QAAS,KAAQ,WAAY,aAAgB,OAE9D5vE,KAAKgY,cACL,OAAMoP,iBAAiBwoD,EAAe5vE,KAAKgY,cAE3ChY,KAAKub,eACDvb,KAAKygB,cACL,eAAOzgB,KAAKygB,cAEhBzgB,KAAKq4E,YAAcr4E,KAAKygB,aAAe,KACvCzgB,KAAKu4E,gBAAgB/lE,WAEzBxS,KAAKw4E,oBACLx4E,KAAK0sE,cAAgB,KACrB1sE,KAAK8vE,SAAW,KAChB9vE,KAAKyuC,gBAAkB,KACvBzuC,KAAKqsE,QAAU,KACfrsE,KAAKy4E,SAAW,KAChBz4E,KAAKq4E,YAAc,KACnBr4E,KAAKukB,YAAc,KACnBvkB,KAAK+mB,eAAiB,KACtBlkB,EAAO3C,UAAUsS,QAAQlP,KAAKtD,OAQlC83E,EAAe53E,UAAUyT,OAAS,WAC9B3T,KAAK04E,iBAAmB,CACpBxwD,MAAO,QACPD,OAAQ,SACR9F,IAAK,MACL+G,IAAK,MACLR,KAAM,OACNokD,KAAM,YACNC,GAAI,UACJ/nE,KAAM,YACN4tD,MAAO,aACPltD,KAAM,gBACNG,MAAO,eAEX7F,KAAK8uE,iBAAmB,KACxB9uE,KAAKyiB,iBAAmB,KACxBziB,KAAK2uE,eAAgB,EACrB3uE,KAAKgtE,aAAehtE,KAAKoD,QAAQskB,WAAU,GAC3C1nB,KAAKmc,eAAiBnc,KAAK24E,qBAC3B34E,KAAKmuE,UAAYnuE,KAAKyY,MACI,kBAAdzY,KAAQ,MAChBA,KAAKyc,IAAMzc,KAAKkd,eAAe,IAAIvE,KAAK3Y,KAAKyc,OAEvB,kBAAdzc,KAAQ,MAChBA,KAAKqZ,IAAMrZ,KAAKkd,eAAe,IAAIvE,KAAK3Y,KAAKqZ,QAE5C,eAAkB,eAAQrZ,KAAKoD,QAAS,cAAgB,eAAQpD,KAAKoD,QAAS,YAAYgV,WAC3FpY,KAAKqY,SAAU,GAEnBxV,EAAO3C,UAAUkgB,6BAA6B9c,KAAKtD,MACnDA,KAAKwuE,iBAAgB,GACrB,IAAIC,EAAa,CAAEz0D,YAAaha,KAAKga,aACrCha,KAAKya,KAAO,IAAI,OAAK,iBAAkBg0D,EAAYzuE,KAAKwa,QACxDxa,KAAKiL,cAAc,CAAE+O,YAAaha,KAAKga,aAAeha,KAAKya,KAAKC,YAAY,iBAAkB,GAC9F7X,EAAO3C,UAAUyT,OAAOrQ,KAAKtD,MAC7BA,KAAKmtE,qBACLtqE,EAAO3C,UAAU6Z,6BAA6BzW,KAAKtD,MACnDA,KAAK44E,kBACD54E,KAAK2Z,YACL3Z,KAAK4Z,OAAO,aAAc,CACtBC,OAAQ,mBAGhB7Z,KAAK6f,UAAS,IACV7f,KAAK2Z,YAAe3Z,KAAKyY,QAASzY,KAAKmX,iBAA4C,WAAxBnX,KAAK8X,gBAAgC9X,KAAK8X,gBAAmB9X,KAAKga,aAC7H,OAAM6F,SAAS7f,KAAKmX,gBAAiBnX,KAAKgY,aAAchY,KAAK8X,eAAgB9X,KAAKib,iBAEtFjb,KAAKiL,cAAc,CAAEsjE,SAAUvuE,KAAKkd,eAAe,IAAIvE,KAAK3Y,KAAK0b,WAAW1b,KAAKuuE,cAAe,GAChGvuE,KAAKyiB,iBAAmBziB,KAAKyY,OAAS,IAAIE,MAAM3Y,KAAKyY,OACxB,uBAAzBzY,KAAKoD,QAAQsM,UACb1P,KAAKmb,SAAWnb,KAAKoD,QAAQ0kB,aAAa,YAAc9nB,KAAKoD,QAAQsH,aAAa,YAAc,IAChG1K,KAAKoD,QAAQwH,gBAAgB,YACxB5K,KAAKqY,UACNrY,KAAKgY,aAAamD,UAAY,IAGV,SAAxBnb,KAAK8X,gBACL,OAAMC,eAAe/X,KAAKgY,aAAchY,KAAKiY,aAAazI,WAEzD,eAAkBxP,KAAKiY,aAAaC,QAAQ,KAAQ,eAAkBlY,KAAKiY,aAAazI,UAAU2I,uBAAuB,yBAAyB,KAA+B,UAAxBnY,KAAK8X,gBAC/J9X,KAAKiY,aAAazI,UAAU2I,uBAAuB,yBAAyB,GAAGjT,UAAU4G,IAAI,oBAEjG9L,KAAK6T,kBAETikE,EAAe53E,UAAU2f,SAAW,SAAUxE,GAG1C,QAFkB,IAAdA,IAAwBA,GAAY,GACxCrb,KAAKmuE,UAAYnuE,KAAK64E,oBAAoB74E,KAAKyY,QAC1CzY,KAAK2b,YAAc3b,KAAK84E,aAAa94E,KAAKmuE,WAAY,CACvD,IAAI11D,EAAQzY,KAAK64E,oBAAoB74E,KAAKmuE,WAC1C,OAAMtuD,SAAS7f,KAAKutE,kBAAkB90D,GAAQzY,KAAKgY,aAAchY,KAAK8X,eAAgB9X,KAAKib,iBAC3Fjb,KAAKiL,cAAc,CAAEwN,MAAOA,IAAS,QAGjC,eAAkBzY,KAAKyY,SACvBzY,KAAKmuE,UAAY,KACjBnuE,KAAKiL,cAAc,CAAEwN,MAAO,OAAQ,IAG5CzY,KAAK8uE,iBAAmB9uE,KAAKyY,MAC7B5V,EAAO3C,UAAU+Y,YAAY3V,KAAKtD,KAAMqb,IAE5Cy8D,EAAe53E,UAAU24E,oBAAsB,SAAUpgE,GACrD,IAAIuY,EAASvY,EAUb,OATIzY,KAAK84E,aAAargE,GAClBuY,EAAShxB,KAAK41E,cAAcn9D,IAGvBzY,KAAKyc,KAAOzc,KAAKqZ,KAClBrZ,KAAK+4E,oBAAmB,GAGhC/4E,KAAKg5E,gBAAgBhoD,GACdA,GAEX8mD,EAAe53E,UAAU84E,gBAAkB,SAAUvgE,GACjDzY,KAAKi5E,cAAe,EACfj5E,KAAK2b,cACA,GAAY3b,KAAQ,MAAQ,GAAYA,KAAQ,OAClDA,KAAKi5E,cAAe,GAG5Bj5E,KAAKwtE,mBAETsK,EAAe53E,UAAUstE,gBAAkB,WACnCxtE,KAAKi5E,aACL,gBAAY,CAACj5E,KAAKiY,aAAazI,WAAY,IAG3C,eAAS,CAACxP,KAAKiY,aAAazI,WAAY,IAE5C,eAAWxP,KAAKgY,aAAc,CAAE,eAAgBhY,KAAKi5E,aAAe,QAAU,UAElFnB,EAAe53E,UAAU01E,cAAgB,SAAUn9D,GAC/C,IAAIs8D,EAAUt8D,EAmBd,OAlBIzY,KAAK2b,YACA3b,KAAKyc,KAAOzc,KAAKqZ,KAClBrZ,KAAK+4E,oBAAmB,GACxBhE,EAAU/0E,KAAKqZ,MAETZ,GAASzY,KAAKyc,IACpBs4D,EAAU/0E,KAAKyc,KAEThE,GAASzY,KAAKqZ,MACpB07D,EAAU/0E,KAAKqZ,MAIdrZ,KAAKyc,KAAOzc,KAAKqZ,MAClBrZ,KAAK+4E,oBAAmB,GACxBhE,EAAUt8D,GAGXs8D,GAEX+C,EAAe53E,UAAU64E,mBAAqB,SAAUG,GAChDA,GACA,eAAS,CAACl5E,KAAKiY,aAAaC,QAAQ,GAAIlY,KAAKy4E,UAAW,IACxDz4E,KAAKkS,QAGL,gBAAY,CAAClS,KAAKiY,aAAaC,QAAQ,GAAIlY,KAAKy4E,UAAW,KAGnEX,EAAe53E,UAAUqtE,kBAAoB,SAAU90D,GACnD,IAAIoK,EACJ,OAAK,eAAkBpK,GAUZ,MARHoK,EADsB,cAAtB7iB,KAAKoc,aACS,CAAEE,OAAQtc,KAAK24E,qBAAsBnqE,KAAM,WAAY+N,SAAU,OAGjE,CAAED,OAAQtc,KAAK24E,qBAAsBnqE,KAAM,WAAY+N,SAAU,MAAOC,SAAU,WAE7Fxc,KAAKua,UAAU8B,WAAW5D,EAAOoK,KAMhDi1D,EAAe53E,UAAU44E,aAAe,SAAUrgE,GAC9C,OAAS,eAAkBA,KAAWgD,OAAOhD,IAEjDq/D,EAAe53E,UAAUitE,mBAAqB,WAC1C,gBAAY,CAACntE,KAAKgY,cAAeu/D,GACjC,gBAAY,CAACv3E,KAAKiY,aAAazI,WAAYkG,GAC3C,eAAS,CAAC1V,KAAKiY,aAAazI,WAAYgoE,GACxC,eAAS,CAACx3E,KAAKgY,cAAe,GAC9BhY,KAAKm5E,kBAETrB,EAAe53E,UAAUi5E,eAAiB,WACtCn5E,KAAKy4E,SAAW,OAAMW,WAAWtjE,EAAe,IAAM,EAAW,IAAMS,GAAOvW,KAAKiY,aAAazI,YAEpGsoE,EAAe53E,UAAU04E,gBAAkB,WACvC,OAAa9sE,IAAI9L,KAAKy4E,SAAU,YAAaz4E,KAAKq5E,YAAar5E,MAC/D,OAAa8L,IAAI9L,KAAKiY,aAAaC,QAAQ,GAAI,YAAalY,KAAKs5E,YAAat5E,MAC9E,OAAa8L,IAAI9L,KAAKgY,aAAc,OAAQhY,KAAKm4E,YAAan4E,MAC9D,OAAa8L,IAAI9L,KAAKgY,aAAc,QAAShY,KAAK4zC,aAAc5zC,MAChEA,KAAKue,kBAAoB,eAAOve,KAAKue,kBAAmBve,KAAKwe,YAC7Dxe,KAAKu4E,gBAAkB,IAAI,OAAev4E,KAAKgY,aAAc,CACzD0G,UAAW,UACXC,UAAW3e,KAAKu5E,eAAe3zE,KAAK5F,MACpCwe,WAAYxe,KAAKue,qBAGzBu5D,EAAe53E,UAAUs4E,kBAAoB,WACzC,OAAarzE,OAAOnF,KAAKy4E,SAAU,uBAAwBz4E,KAAKq5E,aAChE,OAAal0E,OAAOnF,KAAKiY,aAAaC,QAAQ,GAAI,uBAAwBlY,KAAKs5E,aAC3Et5E,KAAKgY,eACL,OAAa7S,OAAOnF,KAAKgY,aAAc,OAAQhY,KAAKm4E,aACpD,OAAahzE,OAAOnF,KAAKgY,aAAc,QAAShY,KAAK4zC,eAErD5zC,KAAKu4E,iBACLv4E,KAAKu4E,gBAAgB/lE,WAG7BslE,EAAe53E,UAAUmyE,eAAiB,WACtC,IAAIjD,EAYJ,OATQA,EAFJpvE,KAAKivE,cAAcjvE,KAAKisE,YACJ,OAAhBjsE,KAAKwa,QAAmC,UAAhBxa,KAAKwa,OACjB,cAAD,CAAU,oBAAqB,kBAG9Bxa,KAAK2vE,qBAAqB,OAAU,GAAK3vE,KAAKwa,QAInDxa,KAAKisE,WAEbmD,GAEX0I,EAAe53E,UAAUy4E,mBAAqB,WAC1C,IAAIvJ,EACApyD,EAAU,IAAI,OAAqBhd,KAAKwa,QACxC8pD,EAAatnD,EAAQC,eAAe,CAAEV,SAAU,QAOpD,OALI6yD,EADApvE,KAAKivE,cAAcjvE,KAAKkc,cACbooD,EAAa,IAAMtkE,KAAKw5E,cAAc,QAGtCx5E,KAAKkc,aAEbkzD,GAEX0I,EAAe53E,UAAUs5E,cAAgB,SAAUhrE,GAC/C,IAAIirE,EAOJ,OALIA,EADgB,OAAhBz5E,KAAKwa,QAAmC,UAAhBxa,KAAKwa,OACb,cAAD,CAAU,oBAAqB,kBAG9Bxa,KAAK2vE,qBAAqB,OAAU,GAAK3vE,KAAKwa,QAE3Di/D,GAEX3B,EAAe53E,UAAU+uE,cAAgB,SAAUx2D,GAC/C,SAAI,eAAkBA,IAA4B,kBAAVA,GAAuC,KAAjBA,EAAMlM,SAOxEurE,EAAe53E,UAAUyvE,qBAAuB,SAAUjiC,EAAIjtC,GAC1D,MAA0B,cAAtBT,KAAKoc,aACE,eAAS,QAAepc,KAAKwa,OAAS,+CAAgDkzB,GAGtF,eAAS,QAAe1tC,KAAKwa,OAAS,6CAA8CkzB,IAGnGoqC,EAAe53E,UAAUm5E,YAAc,SAAUlsE,GACxCnN,KAAKqY,UAGVrY,KAAKsX,eAAgB,EACjB,OAAQ3H,UACR3P,KAAKgY,aAAarN,aAAa,WAAY,IAE3CwC,EAAEqI,gBAAkBxV,KAAKy4E,UACzBtrE,EAAE+F,iBAEFlT,KAAKqY,UAAYrY,KAAKwZ,WAClBxZ,KAAK05E,mBACL72E,EAAO3C,UAAUgS,KAAK5O,KAAKtD,KAAMmN,GAEjCnN,KAAKo4E,kBACLp4E,KAAKgzE,WAAW7lE,IAGhBnN,KAAKgY,aAAa+H,QAClB/f,KAAKguE,cAAc,OAAQ7gE,GAC3B,eAAS,CAACnN,KAAKiY,aAAazI,WAAY,CAACyG,MAGjDjW,KAAKsX,eAAgB,IAEzBwgE,EAAe53E,UAAUo5E,YAAc,SAAUnsE,GACxCnN,KAAKqY,UAGNlL,EAAEqI,gBAAkBxV,KAAKiY,aAAaC,QAAQ,IAC9C/K,EAAE+F,iBAEFlT,KAAKqY,UAAYrY,KAAKwZ,WAClBxZ,KAAKo4E,mBACLp4E,KAAKgzE,WAAW7lE,GAEf,eAAkBnN,KAAKygB,eACxBzgB,KAAKguE,cAAc,OAAQ7gE,MAIvC2qE,EAAe53E,UAAUgQ,KAAO,SAAU1B,EAAMrB,GACvCnN,KAAKqY,SAAWrY,KAAKwZ,WAAcxZ,KAAKqY,UAI5B,SAAT7J,GAAoBxO,KAAKs4E,gBAMnBt4E,KAAKoF,WACPpF,KAAKo4E,mBACLp4E,KAAKkS,KAAK/E,GAEdtK,EAAO3C,UAAUgQ,KAAK5M,KAAKtD,MAC3BA,KAAKguE,cAAc,OAAQ7gE,KAVvBnN,KAAK05E,mBACL15E,KAAKkS,KAAK/E,GAEdnN,KAAKguE,cAAc,OAAQ7gE,MAWvC2qE,EAAe53E,UAAUy5E,OAAS,SAAUxsE,GACpCnN,KAAK05E,mBACL72E,EAAO3C,UAAUgS,KAAK5O,KAAKtD,KAAMmN,GACjCnN,KAAKkQ,KAAK,OAAQ,OAEblQ,KAAKo4E,mBACVp4E,KAAKkS,KAAK/E,GACVtK,EAAO3C,UAAUgQ,KAAK5M,KAAKtD,KAAM,KAAMmN,GACvCnN,KAAKguE,cAAc,OAAQ,OAG3BhuE,KAAKkQ,KAAK,KAAM/C,IAGxB2qE,EAAe53E,UAAU05E,aAAe,WACpC,IAAIC,EACsB,cAAtB75E,KAAKoc,cACLpc,KAAK24E,qBAAqB99D,QAAQ7a,KAAKg4E,YAAah4E,KAAK85E,mBACzDD,EAAa75E,KAAKua,UAAU4C,UAAUnd,KAAKgY,aAAaS,MAAO,CAC3D6D,OAAQtc,KAAKi4E,iBAAkBzpE,KAAM,cAIzCqrE,EAAa75E,KAAKua,UAAU4C,UAAUnd,KAAKgY,aAAaS,MAAO,CAC3D6D,OAAQtc,KAAK24E,qBAAsBnqE,KAAM,WAAYgO,SAAU,YAGvE,IAAI/D,EAAQ,eAAkBzY,KAAKyY,OAAqC,KAA5BzY,KAAKgY,aAAaS,MAC1DohE,EAAa,IAAIlhE,KAAS3Y,KAAKyY,MACnCzY,KAAK8uE,iBAAmBr2D,EACxBzY,KAAKiwE,YAAc,eAAc,MAAO,CAAEzrE,UAAW,GAASwK,MAAO,CAAE,SAAY,OACnF,IAAIyN,EAAMzc,KAAK+5E,UAAUthE,GACrBY,EAAMrZ,KAAKg6E,QAAQvhE,GACnBwhE,EAAc,EAAelO,gBAAgB/rE,KAAKuE,cAAekY,EAAKpD,EAAKrZ,KAAKua,UAAWva,KAAKqyE,iBAAkBryE,KAAKouB,MAC3HpuB,KAAKosE,gBAAkB6N,EAAYxvC,WACnCzqC,KAAKqsE,QAAU4N,EAAY1N,KAC3B,eAAWvsE,KAAKqsE,QAAS,CAAE,KAAQ,UAAW,cAAe,QAAS,GAAMrsE,KAAKoD,QAAQkI,GAAK,aAC9F,eAAO,CAAC2uE,EAAY1N,MAAOvsE,KAAKiwE,aAChCjwE,KAAKk6E,qBACL,IAAI5J,EAAc,CAAEttE,SAAU,IAAK2+B,SAAU,IAAM,IACnD3hC,KAAK8vE,SAAW,gBAAa9vE,KAAKiwE,YAAaK,GAC/CtwE,KAAK0sE,cAAgB1sE,KAAKiwE,YAAYvtD,iBAAiB,IAAM,KAEjEo1D,EAAe53E,UAAU8tE,cAAgB,SAAUx/D,EAAMrB,GAIrD,GAHI,OAAQwC,UACR3P,KAAKoD,QAAQuH,aAAa,WAAY,YAE7B,SAAT6D,GACKxO,KAAKwZ,UAAYxZ,KAAKygB,eACvB,eAAS,CAACzgB,KAAKygB,cAAeo3D,GAC9B,eAAW73E,KAAKygB,aAAc,CAAE,GAAMzgB,KAAKoD,QAAQkI,GAAK,mBAI5D,IAAKtL,KAAKwZ,WACNxZ,KAAKs4E,gBAAkB,eAAc,MAAO,CACxC9zE,UAAW,EAAO,IAAM,EACxBwK,MAAO,CAAE,GAAMhP,KAAKoD,QAAQkI,GAAK,aAAc,MAAS,uCAEvD,eAAkBtL,KAAKyK,YACxBzK,KAAKs4E,gBAAgB9zE,WAAa,IAAMxE,KAAKyK,WAE5C,eAAkBzK,KAAKouB,OAASpuB,KAAKouB,KAAO,IAC7CpuB,KAAK45E,eACL,eAAO,CAAC55E,KAAKiwE,aAAcjwE,KAAKs4E,kBAEpC1qE,SAAS6B,KAAK/K,YAAY1E,KAAKs4E,iBAC/Bt4E,KAAKm6E,mBACLn6E,KAAK4E,cACL5E,KAAKo6E,wBACLp6E,KAAKq6E,UAAUltE,KACV,OAAQwC,UAAa,OAAQA,WAAa3P,KAAK2a,iBAChD3a,KAAKq4E,YAAY9xD,gBAAgBvmB,KAAKgY,cAEtC,OAAQrI,UAAY3P,KAAK2a,iBACzB3a,KAAKs4E,gBAAgBvxE,MAAM/B,KAAO,OAElC,OAAQ2K,UAAU,CAClB,IAAIgX,EAAa3mB,KAAKuE,cAAc,MAAO,CAAEC,UAAW,kBACxDmiB,EAAW5f,MAAMgd,QAAU/jB,KAAK+jB,OAAS,GAAGnS,WAC5C5R,KAAKs6E,UAAU51E,YAAYiiB,KAK3CmxD,EAAe53E,UAAUm6E,UAAY,SAAUltE,GAC3C,IAAI9J,EAAQrD,KACZA,KAAKukB,YAAc,CACf9V,QAAQ,EACR2X,MAAOpmB,KAAKq4E,YACZ3pE,MAAOvB,GAAK,MAEhB,IAAImZ,EAAYtmB,KAAKukB,YACrBvkB,KAAKiI,QAAQ,OAAQqe,GAAW,SAAUA,GAEtC,GADAjjB,EAAMkhB,YAAc+B,GACfjjB,EAAMkhB,YAAY9V,SAAWpL,EAAMmW,SAAU,CAC9C,IAAIgN,EAAgB,CAChBxW,KAAM,SACNhN,SAAU,IAEO,MAAjBK,EAAM0gB,OACN1gB,EAAMg1E,YAAYnoE,KAAK,IAAI,OAAUsW,GAAgBnjB,EAAMD,SAG3DC,EAAMg1E,YAAYnoE,KAAK,IAAI,OAAUsW,GAAgB,MAEzD,eAAS,CAACnjB,EAAM4U,aAAazI,WAAY,CAAC,KAC1C,eAAWnM,EAAM2U,aAAc,CAAE,gBAAiB,SAClD,eAAW3U,EAAM2U,aAAc,CAAE,YAAa3U,EAAM2U,aAAa1M,GAAK,aACtE,eAAWjI,EAAM2U,aAAc,CAAE,gBAAiB3U,EAAM2U,aAAa1M,KACrE,OAAaQ,IAAI8B,SAAU,uBAAwBvK,EAAM2wE,qBAAsB3wE,QAI3Fy0E,EAAe53E,UAAU8zE,qBAAuB,SAAUtlE,GACtD,IAAIpO,EAASoO,EAAMpO,QACb,eAAkBN,KAAKq4E,eAAiBr4E,KAAKiY,aAAazI,UAAUnJ,SAAS/F,IAA0B,cAAfoO,EAAMF,MAC/FxO,KAAKq4E,YAAYj1E,SAAWpD,KAAKq4E,YAAYj1E,QAAQiD,SAAS/F,KAA6B,eAAfoO,EAAMF,MACnFE,EAAMwE,iBAEJ,cAAD,CAAS5S,EAAQ,SAAWN,KAAKq4E,aAAer4E,KAAKq4E,YAAYj1E,QAAQkI,GAAK,QAAWhL,IAAWN,KAAKgY,cACvG1X,IAAWN,KAAKy4E,UAAa,eAAkBz4E,KAAKiY,eAAiB3X,IAAWN,KAAKiY,aAAazI,WAAclP,EAAO4E,UAAUmB,SAAS,iBAMxI/F,IAAWN,KAAKgY,eAChB,OAAQrI,WACT3P,KAAK2uE,cAAkB/gE,SAASyT,gBAAkBrhB,KAAKgY,eAAkB,OAAQk/D,MAA8B,SAAtB,OAAQx7B,KAAK1rC,OAC/F1P,IAAWN,KAAKq4E,YAAYj1E,UARnCpD,KAAKo4E,oBACLp4E,KAAKkS,KAAKxD,GACV1O,KAAK+hB,aAUjB+1D,EAAe53E,UAAUk4E,gBAAkB,WACvC,SAAQp4E,KAAKs4E,kBAAmBt4E,KAAKs4E,gBAAgBpzE,UAAUmB,SAAS,GAAK,KAEjFyxE,EAAe53E,UAAUw5E,gBAAkB,WACvC,SAAQ15E,KAAKygB,eAAgBzgB,KAAKygB,aAAavb,UAAUmB,SAAS,GAAKwxE,KAE3EC,EAAe53E,UAAU0E,YAAc,WACnC,IAAIvB,EAAQrD,KACZA,KAAKuwE,eAAiBvwE,KAAKiY,aAAazI,UAAUpI,wBAC9C,OAAQuI,WACR3P,KAAKs6E,UAAY,eAAc,OAC/Bt6E,KAAKs6E,UAAU91E,UAAiB,EAAO,gBACvCoJ,SAAS6B,KAAKjL,WAAa,IAAM,GACjCxE,KAAKs6E,UAAUvzE,MAAMC,QAAU,QAC/B4G,SAAS6B,KAAK/K,YAAY1E,KAAKs6E,YAEnC,IAAIxS,EAAS,EA8Cb,GA7CA9nE,KAAKq4E,YAAc,IAAI,OAAMr4E,KAAKs4E,gBAAiB,CAC/ChzE,MAAOtF,KAAKwwE,gBACZzsD,OAAQ/jB,KAAK+jB,OACbD,WAAY,YACZE,UAAW,OAAQrU,SAAW,CAAEpK,EAAG,MAAOC,EAAG,OAAU,CAAED,EAAG,OAAQC,EAAG,QACvEqe,SAAU,OAAQlU,SAAW/B,SAAS6B,KAAOzP,KAAKiY,aAAazI,UAC/DzL,SAAU,OAAQ4L,SAAW,CAAEpK,EAAG,SAAUC,EAAG,UAAa,CAAED,EAAG,OAAQC,EAAG,UAC5EC,UAAWzF,KAAKyF,UAChBkE,QAASm+D,EACTpiE,KAAM,WACFrC,EAAMi1E,gBAAgBvxE,MAAMirD,WAAa,UACzC,eAAS,CAAC3uD,EAAMo1E,UAAWriE,IACtB,OAAQzG,WACTtM,EAAMq1E,iBAAmB,eAAOr1E,EAAMq1E,iBAAkBr1E,EAAMmb,YAC9Dnb,EAAMgyE,WAAa,IAAI,OAAehyE,EAAM4U,aAAazI,UAAW,CAChEmP,UAAWtb,EAAMk3E,oBAAoB30E,KAAKvC,GAC1Cmb,WAAYnb,EAAMq1E,iBAClBh6D,UAAW,cAGpB7Y,MAAO,WACN,gBAAY,CAACxC,EAAMo1E,UAAWriE,IAC9B/S,EAAMm3E,uBACNn3E,EAAM2U,aAAapN,gBAAgB,yBACnC,gBAAOvH,EAAMg1E,YAAYj1E,SACzBC,EAAMg1E,YAAY7lE,UAClBnP,EAAMi1E,gBAAgBxtE,UAAY,GAClCzH,EAAM4sE,YAAc5sE,EAAMi1E,qBAAkB/sE,EACxClI,EAAMgyE,YACNhyE,EAAMgyE,WAAW7iE,WAEtBiS,mBAAoB,WACd,OAAQ9U,UACTtM,EAAM6O,UAId,OAAQvC,UAAY3P,KAAK2a,gBACzB3a,KAAKq4E,YAAYj1E,QAAQ2D,MAAMC,QAAU,OACzChH,KAAKq4E,YAAYj1E,QAAQ2D,MAAM8qD,UAAY,OAC3C7xD,KAAKq4E,YAAYj1E,QAAQ2D,MAAMzB,MAAQ,QAGvCtF,KAAKq4E,YAAYj1E,QAAQ2D,MAAM8qD,UAAY,EAE3C,OAAQliD,UAAY3P,KAAK2a,eAAgB,CACzC,IAAI8/D,EAAe,eAAc,MAAO,CAAEj2E,UAAW,8BACjDmf,EAAc3jB,KAAKuE,cAAc,MAAO,CAAEC,UAAW,mBACrDksE,EAAiB1wE,KAAKuE,cAAc,OAAQ,CAAEC,UAAW,kBAC7DksE,EAAetrD,YAAc,cAC7B,IAAIC,EAAiBrlB,KAAKuE,cAAc,OAAQ,CAAEC,UAAW,kBAC7D,OAAasH,IAAIuZ,EAAgB,uBAAwBrlB,KAAK06E,qBAAsB16E,MACpF,IAAI26E,EAAc36E,KAAKs4E,gBAAgBpsE,cAAc,cACrDyX,EAAYjf,YAAY2gB,GACxB1B,EAAYjf,YAAYgsE,GACxB+J,EAAa/1E,YAAYif,GACzB82D,EAAa/1E,YAAYi2E,GACzB36E,KAAKs4E,gBAAgB9yD,aAAai1D,EAAcz6E,KAAKs4E,gBAAgB72D,qBAG7Eq2D,EAAe53E,UAAUw6E,qBAAuB,SAAUvtE,GACtDnN,KAAKkS,QAET4lE,EAAe53E,UAAU06E,aAAe,SAAUt1E,GAW9C,OATIA,EADiB,kBAAVA,EACC,eAAWA,GAEG,kBAAVA,EAEJA,EAGA,OAELA,GAEXwyE,EAAe53E,UAAUswE,cAAgB,WACrC,IAAIlrE,EAAQtF,KAAK46E,aAAa56E,KAAKsF,OACnC,GAAIA,EAAMtB,QAAQ,MAAQ,EAAG,CACzB,IAAI4tE,EAAa5xE,KAAKuwE,eAAejrE,MAAQwB,WAAWxB,GAAS,IACjEA,EAAQssE,EAAWhgE,WAAa,KAEpC,OAAOtM,GAEXwyE,EAAe53E,UAAUg6E,mBAAqB,WAC1C,OAAapuE,IAAI9L,KAAKiwE,YAAa,QAASjwE,KAAK4zE,aAAc5zE,MAC1D,OAAQ2P,WACT,OAAa7D,IAAI9L,KAAKiwE,YAAa,YAAajwE,KAAKu0E,YAAav0E,MAClE,OAAa8L,IAAI9L,KAAKiwE,YAAa,WAAYjwE,KAAK40E,aAAc50E,QAG1E83E,EAAe53E,UAAUs6E,qBAAuB,WACxCx6E,KAAKiwE,cACL,OAAa9qE,OAAOnF,KAAKiwE,YAAa,QAASjwE,KAAK4zE,cACpD,OAAazuE,OAAOyI,SAAU,uBAAwB5N,KAAKg0E,sBACtD,OAAQrkE,WACT,OAAa7D,IAAI9L,KAAKiwE,YAAa,YAAajwE,KAAKu0E,YAAav0E,MAClE,OAAa8L,IAAI9L,KAAKiwE,YAAa,WAAYjwE,KAAK40E,aAAc50E,SAI9E83E,EAAe53E,UAAUq0E,YAAc,SAAU7lE,GAC7C,IAAI8lE,EAAY,eAAQ9lE,EAAMpO,OAAQ,IAAM,IAC5CN,KAAK66E,aAAarG,EAAW,KAEjCsD,EAAe53E,UAAU00E,aAAe,WACpC50E,KAAK86E,gBAAgB,KAEzBhD,EAAe53E,UAAU26E,aAAe,SAAUhH,EAAIrvE,GAC9CxE,KAAKqY,SAAWrY,KAAK00E,UAAUb,KAAQA,EAAG3uE,UAAUmB,SAAS7B,KAC7DxE,KAAK86E,gBAAgBt2E,GACrB,eAAS,CAACqvE,GAAKrvE,KAGvBszE,EAAe53E,UAAUiwE,eAAiB,WACtC,IAAI9qE,EAASsM,SAAS,EAAgB,IAClCy+D,EAAcpwE,KAAKs4E,gBAAgBlxE,wBAAwB/B,OAC/D,OAAI,OAAQsK,UAAY3P,KAAK2a,eAClBy1D,EAGAA,EAAc/qE,EAASA,EAAS+qE,GAG/C0H,EAAe53E,UAAUmf,YAAc,SAAUlS,GAC7CtK,EAAO3C,UAAUmf,YAAY/b,KAAKtD,KAAMmN,IACnCnN,KAAKyY,OAASzY,KAAKyY,MAAMgN,cAAgBzlB,KAAKyiB,mBAAqBziB,KAAKyiB,iBAAiBgD,aAC1FzlB,KAAK8uE,iBAAmB9uE,KAAKyY,MAC7BzY,KAAK+6E,cAAc,QACnB/6E,KAAKyiB,iBAAmBziB,KAAKyY,OAAS,IAAIE,MAAM3Y,KAAKyY,SAG7Dq/D,EAAe53E,UAAUszE,YAAc,SAAUrmE,GAC7CnN,KAAK+6E,cAAc,SACd/6E,KAAKyiB,oBAAsBziB,KAAKyY,QACjCzY,KAAK0c,YAAc,CACfjE,MAAOzY,KAAKyY,MAAO/J,MAAOvB,GAAK,KAC/BwB,cAAe,eAAkBxB,GACjC/J,QAASpD,KAAKoD,SAElBpD,KAAKm6E,mBACLn6E,KAAKiI,QAAQ,SAAUjI,KAAK0c,aAC5B1c,KAAKyiB,iBAAmBziB,KAAKma,aAAena,KAAKyY,QAGzDq/D,EAAe53E,UAAUk6E,sBAAwB,WAC7C,IAAIj5C,EAAenhC,KAAKyuC,gBACnB,eAAkBtN,GAGdnhC,KAAKs4E,iBAAmBt4E,KAAKkd,eAAeld,KAAKuuE,WACtDvuE,KAAK8xE,cAHL9xE,KAAK+xE,cAAc5wC,IAM3B22C,EAAe53E,UAAU6xE,cAAgB,SAAU3uE,GAC/C,IAAI4uE,EAAahyE,KAAKmwE,iBAClB6K,EAAc53E,EAAQ6wC,mBACtB5uC,EAAS21E,EAAcA,EAAYjqE,UAAY3N,EAAQ2N,UACvDkqE,EAAa73E,EAAQgE,wBAAwB/B,OACjD,GAAKA,EAASjC,EAAQ2N,UAAaihE,EAC/B,GAAI,OAAQriE,UAAY3P,KAAK2a,eAAgB,CACzC,IAAIugE,EAAcl7E,KAAKs4E,gBAAgBpsE,cAAc,cACrDgvE,EAAYjqE,UAAY+pE,EAAe31E,GAAU2sE,EAAa,GAAeiJ,EAAa,IAAiB51E,OAG3GrF,KAAKs4E,gBAAgBrnE,UAAY+pE,EAAe31E,GAAU2sE,EAAa,GAAeiJ,EAAa,IAAiB51E,OAIxHrF,KAAKs4E,gBAAgBrnE,UAAY,GAGzC6mE,EAAe53E,UAAU4xE,YAAc,WACnC,IAAI1uE,EACAqmD,EAAQzpD,KAAKs4E,gBAAgB51D,iBAAiB,IAAM,IACxD,GAAI+mC,EAAM9oD,QAAU,EAAG,CACnBX,KAAK+3E,eAAgB,EACrB,IAAI7F,EAAclyE,KAAKosE,gBAAgB,GACnC+F,EAAanyE,KAAK2tE,cAAc3tE,KAAKkd,eAAeld,KAAKuuE,WAAWv1D,UACxE5V,EAAUqmD,EAAMtgD,KAAKC,OAAO+oE,EAAaD,IAA4B,IAAZlyE,KAAKouB,aAG9DpuB,KAAKs4E,gBAAgBrnE,UAAY,EAEhC,eAAkB7N,GAInBpD,KAAKs4E,gBAAgBrnE,UAAY,EAHjCjR,KAAK+xE,cAAc3uE,IAM3B00E,EAAe53E,UAAU66E,cAAgB,SAAUvsE,GAC/C,GAAa,SAATA,EACAxO,KAAKgY,aAAaS,MAAQzY,KAAKka,qBAAuBla,KAAKutE,kBAAkBvtE,KAAKm7E,mBAClFn7E,KAAKiL,cAAc,CAAEwN,MAAOzY,KAAKm7E,oBAAqB,OAErD,CACD,IAAIC,EAAUp7E,KAAKutE,kBAAkB,IAAI50D,KAAK3Y,KAAKosE,gBAAgBpsE,KAAK6uE,eACxE,OAAMhvD,SAASu7D,EAASp7E,KAAKgY,aAAchY,KAAK8X,eAAgB9X,KAAKib,iBACrEjb,KAAKka,qBAAuBla,KAAKgY,aAAaS,MAC9CzY,KAAKiL,cAAc,CAAEwN,MAAO,IAAIE,KAAK3Y,KAAKosE,gBAAgBpsE,KAAK6uE,gBAAiB,GAC5E7uE,KAAK2Z,YACL3Z,KAAK0zE,aAGb1zE,KAAKyZ,mBAETq+D,EAAe53E,UAAUi7E,gBAAkB,WACvC,IAAI1iE,EAAQ,KAOZ,OALIA,EADAzY,KAAK84E,aAAa94E,KAAK8uE,kBACf9uE,KAAKq7E,gBAAgBr7E,KAAK8uE,kBAG1B9uE,KAAKma,aAEVna,KAAK64E,oBAAoBpgE,IAEpCq/D,EAAe53E,UAAUwzE,WAAa,WAClC1zE,KAAK4Z,OAAO,aAAc,CACtBC,OAAQ,oBAGhBi+D,EAAe53E,UAAUm7E,gBAAkB,SAAU5iE,GACjD,GAAIzY,KAAK84E,aAAargE,GAAQ,CAC1B,IAAIiS,EAAM1qB,KAAKma,aAAa0sB,UACxBlc,EAAQ3qB,KAAKma,aAAa6sB,WAC1Bpc,EAAO5qB,KAAKma,aAAahB,cACzB0R,EAAOpS,EAAM6K,WACbg4D,EAAU7iE,EAAM8K,aAChBg4D,EAAU9iE,EAAM+K,aACpB,OAAO,IAAI7K,KAAKiS,EAAMD,EAAOD,EAAKG,EAAMywD,EAASC,GAGjD,OAAOv7E,KAAKma,cAGpB29D,EAAe53E,UAAU0zE,aAAe,SAAUllE,GAC9C,IAAIpO,EAASoO,EAAMpO,OACfuzE,EAAK7zE,KAAKyuC,gBAAkB,eAAQnuC,EAAQ,IAAM,IAClDuzE,GAAMA,EAAG3uE,UAAUmB,SAAS,MAC5BrG,KAAKs1E,UAAYzB,EAAGnpE,aAAa,cACjC1K,KAAKkS,KAAKxD,IAEd1O,KAAK8zE,aAAaD,EAAInlE,IAE1BopE,EAAe53E,UAAU4zE,aAAe,SAAUD,EAAInlE,GAClD,GAAI1O,KAAK00E,UAAUb,KAAQA,EAAG3uE,UAAUmB,SAAS+P,IAAS,CACtDpW,KAAKyuC,gBAAkBolC,EACvB,IAAIpnE,EAAQ7M,MAAMM,UAAUwN,MAAMpK,KAAKtD,KAAK0sE,eAAe1oE,QAAQ6vE,GACnE7zE,KAAK6uE,YAAcpiE,EACnBzM,KAAK8uE,iBAAmB,IAAIn2D,KAAK3Y,KAAKosE,gBAAgBpsE,KAAK6uE,cAC3D,eAAS,CAAC7uE,KAAKyuC,iBAAkBr4B,IACjCpW,KAAKyuC,gBAAgB9jC,aAAa,gBAAiB,QACnD3K,KAAKwzE,YAAY9kE,KAGzBopE,EAAe53E,UAAUs7E,mBAAqB,WAC1C,IAAItF,EAAc,eAAkBl2E,KAAKs4E,iBAAmBt4E,KAAKiwE,YAAcjwE,KAAKs4E,gBACpF,IAAK,eAAkBpC,GAAc,CACjC,IAAIzsB,EAAQysB,EAAYxzD,iBAAiB,IAAM,IAC/C,GAAI+mC,EAAM9oD,OACN,IAAK,IAAIK,EAAI,EAAGA,EAAIyoD,EAAM9oD,OAAQK,IAC9B,GAAIhB,KAAKosE,gBAAgBprE,MAAShB,KAAqB,iBAAG,CACtDypD,EAAMzoD,GAAG2J,aAAa,gBAAiB,QACvC3K,KAAKyuC,gBAAkBgb,EAAMzoD,GAC7BhB,KAAK6uE,YAAc7tE,EACnBhB,KAAKy7E,0BACL,SAMpB3D,EAAe53E,UAAUu7E,wBAA0B,YAC1C,eAAkBz7E,KAAKyuC,kBAAoBzuC,KAAKyY,MACjD,eAAWzY,KAAKgY,aAAc,CAAE,wBAAyBhY,KAAKyuC,gBAAgB/jC,aAAa,QAG3F1K,KAAKgY,aAAapN,gBAAgB,0BAG1CktE,EAAe53E,UAAUi6E,iBAAmB,WACxCn6E,KAAKyuC,gBAAkB,KACvBzuC,KAAK07E,sBACL17E,KAAKw7E,qBACA,eAAkBx7E,KAAKyuC,mBACxB,eAAS,CAACzuC,KAAKyuC,iBAAkBr4B,IACjCpW,KAAKyuC,gBAAgB9jC,aAAa,gBAAiB,UAG3DmtE,EAAe53E,UAAUw7E,oBAAsB,WAE3C,GADA17E,KAAK86E,gBAAgB,KAChB,eAAkB96E,KAAKs4E,iBAAkB,CAC1C,IAAI7uB,EAAQzpD,KAAKs4E,gBAAgB51D,iBAAiB,IAAMtM,IACpDqzC,EAAM9oD,SACN,gBAAY8oD,EAAOrzC,IACnBqzC,EAAM,GAAG7+C,gBAAgB,oBAIrCktE,EAAe53E,UAAU46E,gBAAkB,SAAUt2E,GACjD,IAAImyE,EAAc32E,KAAK27E,iBAAiBn3E,GACpCmyE,GAAeA,EAAYh2E,QAC3B,gBAAYg2E,EAAanyE,IAGjCszE,EAAe53E,UAAUy7E,iBAAmB,SAAUn3E,GAClD,IACImyE,EADAT,EAAc,eAAkBl2E,KAAKs4E,iBAAmBt4E,KAAKiwE,YAAcjwE,KAAKs4E,gBAKpF,OAHK,eAAkBpC,KACnBS,EAAcT,EAAYxzD,iBAAiB,IAAMle,IAE9CmyE,GAEXmB,EAAe53E,UAAUw0E,UAAY,SAAUb,GAC3C,OAAQA,GAAMA,EAAG3uE,UAAUmB,SAAS,MAAewtE,EAAG3uE,UAAUmB,SAAS,KAE7EyxE,EAAe53E,UAAU07E,kBAAoB,SAAUnjE,EAAOojE,EAAOC,GACjE,IAAIpxD,EAAMjS,EAAMouB,UACZlc,EAAQlS,EAAMuuB,WACdpc,EAAOnS,EAAMU,cACb4iE,EAAQtjE,EAAM6K,WACdg4D,EAAU7iE,EAAM8K,aAChBg4D,EAAU9iE,EAAM+K,aAChBw4D,EAAevjE,EAAMgL,kBACzB,OAAIo4D,EACe,cAAXC,EACO,IAAInjE,KAAKiS,EAAMD,EAAOD,EAAK,EAAG,EAAG,GAGjC,IAAI/R,KAAKiS,EAAMD,EAAOD,EAAK,GAAI,GAAI,IAIvC,IAAI/R,KAAKiS,EAAMD,EAAOD,EAAKqxD,EAAOT,EAASC,EAASS,IAGnElE,EAAe53E,UAAU65E,UAAY,SAAUj3D,GAC3C,IAAIm5D,EACA/5D,EACAg6D,EAAUl8E,KAAKyc,IACfhE,EAAiB,OAATqK,EAAgB,IAAInK,KAASmK,EAezC,OAdMrK,EAAMouB,aAAeq1C,EAAQr1C,YAAcpuB,EAAMuuB,cAAgBk1C,EAAQl1C,aAC1EvuB,EAAMU,iBAAmB+iE,EAAQ/iE,gBAAqB,IAAIR,KAAKF,EAAMU,cAAeV,EAAMuuB,WAAYvuB,EAAMouB,aAC5G,IAAIluB,KAAKujE,EAAQ/iE,cAAe+iE,EAAQl1C,WAAYk1C,EAAQr1C,YAC7D3kB,GAAQ,EACR+5D,EAAiBj8E,KAAKyc,MAEhBhE,GAASzY,KAAKqZ,MAAQZ,GAASzY,KAAKyc,KAC1CyF,GAAQ,EACR+5D,EAAiBxjE,IAEXA,IAAUzY,KAAKqZ,MACrB6I,GAAQ,EACR+5D,EAAiBj8E,KAAKqZ,KAEnBrZ,KAAK47E,kBAAkBK,EAAgB/5D,EAAO,cAEzD41D,EAAe53E,UAAU45E,gBAAkB,WACvC,IAAIx9D,EAAS,GACT6/D,EAAc,EACdC,EAAQp8E,KACZ,SAASq8E,EAAqBC,GAC1B,OAAQA,GACJ,IAAK,IACL,IAAK,KACL,IAAK,MACL,IAAK,OACL,IAAK,IACL,IAAK,KACL,IAAK,MACL,IAAK,OACL,IAAK,IACL,IAAK,KACL,IAAK,MACL,IAAK,OACa,IAAVhgE,EACAA,GAAkBggE,EAGlBhgE,EAASA,EAAS,IAAMggE,EAE5BH,GAA4B,EAC5B,MAKR,OAHIA,EAAc,IACdC,EAAMnE,iBAAmB37D,GAEtBA,EAEX,OAAO+/D,GAEXvE,EAAe53E,UAAU85E,QAAU,SAAUl3D,GACzC,IAAIy5D,EACAp6D,EACAq6D,EAAUx8E,KAAKqZ,IACfZ,EAAiB,OAATqK,EAAgB,IAAInK,KAASmK,EAezC,OAdMrK,EAAMouB,aAAe21C,EAAQ31C,YAAcpuB,EAAMuuB,cAAgBw1C,EAAQx1C,aAC1EvuB,EAAMU,iBAAmBqjE,EAAQrjE,gBAAoB,IAAIR,KAAKF,EAAMgkE,iBAAkBhkE,EAAMuuB,WAAYvuB,EAAMouB,aAC9G,IAAIluB,KAAK6jE,EAAQrjE,cAAeqjE,EAAQx1C,WAAYw1C,EAAQ31C,YAC7D1kB,GAAM,EACNo6D,EAAev8E,KAAKqZ,MAEdZ,GAASzY,KAAKqZ,MAAQZ,GAASzY,KAAKyc,KAC1C0F,GAAM,EACNo6D,EAAe9jE,IAETA,IAAUzY,KAAKyc,MACrB0F,GAAM,EACNo6D,EAAev8E,KAAKyc,KAEjBzc,KAAK47E,kBAAkBW,EAAcp6D,EAAK,YAErD21D,EAAe53E,UAAUgS,KAAO,SAAU/E,GACtC,IAAI9J,EAAQrD,KACZ,GAAIA,KAAKoF,UAAYpF,KAAKs4E,gBAAiB,CACvCt4E,KAAKukB,YAAc,CACf9V,QAAQ,EACR2X,MAAOpmB,KAAKoF,UAAYpF,KAAKq4E,YAC7B3pE,MAAOvB,GAAK,MAEhB,IAAImZ,EAAYtmB,KAAKukB,YACjB,eAAkBvkB,KAAKoF,UACvBpF,KAAKiI,QAAQ,QAASqe,GAAW,SAAUA,GACvCjjB,EAAMq5E,2BAA2BvvE,EAAGmZ,MAIxCtmB,KAAK08E,2BAA2BvvE,EAAGmZ,QAInC,OAAQ3W,UAAY3P,KAAKuZ,YAAcvZ,KAAKwZ,UAC5CxZ,KAAKgY,aAAapN,gBAAgB,YAEtC5K,KAAKsZ,gBAGbw+D,EAAe53E,UAAUw8E,2BAA6B,SAAUvvE,EAAGmZ,GAC/DtmB,KAAKukB,YAAc+B,EACdtmB,KAAKukB,YAAY9V,SACdzO,KAAK05E,kBACL72E,EAAO3C,UAAUgS,KAAK5O,KAAKtD,KAAMmN,GAE5BnN,KAAKo4E,oBACVp4E,KAAKgzE,WAAW7lE,GAChB,gBAAY,CAACS,SAAS6B,MAAO,IACzB,OAAQE,UAAY3P,KAAKs6E,YACzBt6E,KAAKs6E,UAAUvzE,MAAMC,QAAU,OAC/BhH,KAAKs6E,UAAUtzD,UAAY,GAC3BhnB,KAAKs6E,UAAY,MAErBt6E,KAAKy7E,4BAGT,OAAQ9rE,UAAY3P,KAAKuZ,YAAcvZ,KAAKwZ,UAC5CxZ,KAAKgY,aAAapN,gBAAgB,YAEtC5K,KAAKsZ,gBAGTw+D,EAAe53E,UAAU8yE,WAAa,SAAU7lE,GAC5C,GAAInN,KAAKo4E,mBAAqBp4E,KAAKq4E,YAAa,CAC5C,IAAItE,EAAY,CACZ/jE,KAAM,UACNhN,SAAU,GACVC,MAAO,GAEXjD,KAAKq4E,YAAYnmE,KAAK,IAAI,OAAU6hE,IACpC/zE,KAAKiY,aAAazI,UAAUtK,UAAUC,OAAO,IAC7C,eAAWnF,KAAKgY,aAAc,CAAE,gBAAiB,UACjDhY,KAAKgY,aAAapN,gBAAgB,aAClC5K,KAAKgY,aAAapN,gBAAgB,iBAClC,OAAazF,OAAOyI,SAAU,uBAAwB5N,KAAKg0E,wBAGnE8D,EAAe53E,UAAU4T,UAAY,WACjC9T,KAAKspB,cACLtpB,KAAKmc,eAAiBnc,KAAK24E,qBAC3B91E,EAAO3C,UAAU4T,UAAUxQ,KAAKtD,MAChC,gBAAY,CAACA,KAAKqnB,kBAAmB,CAAC,KAE1CywD,EAAe53E,UAAUi3E,YAAc,SAAUr0D,EAAMjG,GACvC,QAARA,EACA7c,KAAKiL,cAAc,CAAEwR,IAAKzc,KAAK41E,cAAc9yD,EAAKrG,OAAQ,GAG1Dzc,KAAKiL,cAAc,CAAEoO,IAAKrZ,KAAK41E,cAAc9yD,EAAKzJ,OAAQ,IAGlEy+D,EAAe53E,UAAUsuE,gBAAkB,SAAUnzD,GAIjD,IAHA,IAEI5C,EAFAgP,EAAapM,EAAY,eAAkBrb,KAAKggB,gBAAkB,GAAKvgB,OAAO2V,KAAKpV,KAAKggB,gBACxF,CAAC,QAAS,OAAQ,OAAQ,WAAY,WAAY,QAAS,MAAO,MAAO,cAAe,QAEnFnS,EAAK,EAAG6b,EAAejC,EAAY5Z,EAAK6b,EAAa/oB,OAAQkN,IAAM,CACxE,IAAIwH,EAAOqU,EAAa7b,GACxB,IAAK,eAAkB7N,KAAKgY,aAAatN,aAAa2K,IAClD,OAAQA,GACJ,IAAK,OACDrV,KAAKgY,aAAarN,aAAa,OAAQ3K,KAAKgY,aAAatN,aAAa2K,IACtE,MACJ,IAAK,OACDrV,KAAKouB,KAAOzc,SAAS3R,KAAKgY,aAAatN,aAAa2K,GAAO,IAC3D,MACJ,IAAK,WACD,GAAK,eAAkBrV,KAAKk4E,uBAA0D3sE,IAArCvL,KAAKk4E,gBAAgB,aAA+B78D,EAAW,CAC5G,IAAI7B,EAAoD,aAAzCxZ,KAAKgY,aAAatN,aAAa2K,IACD,KAAzCrV,KAAKgY,aAAatN,aAAa2K,IACU,SAAzCrV,KAAKgY,aAAatN,aAAa2K,GACnCrV,KAAKiL,cAAc,CAAEuO,SAAUA,IAAa6B,GAEhD,MACJ,IAAK,eACI,eAAkBrb,KAAKk4E,uBAA6D3sE,IAAxCvL,KAAKk4E,gBAAgB,gBAAkC78D,IACpGrb,KAAKiL,cAAc,CAAE+O,YAAaha,KAAKgY,aAAatN,aAAa2K,KAAUgG,GAE/E,MACJ,IAAK,OACI,eAAkBrb,KAAKk4E,uBAAqD3sE,IAAhCvL,KAAKk4E,gBAAgB,QAA0B78D,KAC5F5C,EAAQ,IAAIE,KAAK3Y,KAAKgY,aAAatN,aAAa2K,IAC3CrV,KAAKivE,cAAcx2D,IAAWgD,OAAOhD,IACtCzY,KAAKiL,cAAc,CAAEwR,IAAKhE,IAAU4C,IAG5C,MACJ,IAAK,WACD,GAAK,eAAkBrb,KAAKk4E,uBAAyD3sE,IAApCvL,KAAKk4E,gBAAgB,YAA8B78D,EAAW,CAC3G,IAAIhD,EAAmD,aAAzCrY,KAAKgY,aAAatN,aAAa2K,IACA,SAAzCrV,KAAKgY,aAAatN,aAAa2K,IACU,KAAzCrV,KAAKgY,aAAatN,aAAa2K,GACnCrV,KAAKiL,cAAc,CAAEoN,QAASA,IAAYgD,GAE9C,MACJ,IAAK,SACI,eAAkBrb,KAAKk4E,uBAAuD3sE,IAAlCvL,KAAKk4E,gBAAgB,UAA4B78D,KAC9F5C,EAAQ,IAAIE,KAAK3Y,KAAKgY,aAAatN,aAAa2K,IAC3CrV,KAAKivE,cAAcx2D,IAAWgD,OAAOhD,IACtCzY,KAAKiL,cAAc,CAAEwN,MAAOA,IAAU4C,IAG9C,MACJ,IAAK,OACI,eAAkBrb,KAAKk4E,uBAAqD3sE,IAAhCvL,KAAKk4E,gBAAgB,QAA0B78D,KAC5F5C,EAAQ,IAAIE,KAAK3Y,KAAKgY,aAAatN,aAAa2K,IAC3CrV,KAAKivE,cAAcx2D,IAAWgD,OAAOhD,IACtCzY,KAAKiL,cAAc,CAAEoO,IAAKZ,IAAU4C,IAG5C,SAKpBy8D,EAAe53E,UAAU2lB,gBAAkB,WACvC,IAAIC,EAAU,GAOd,OANI9lB,MACA8lB,EAAQzZ,KAAK,CAAE0Z,KAAM,CAAC/lB,MAAOgmB,OAAQ,YAErChmB,KAAK2Z,YACLmM,EAAQzZ,KAAKrM,KAAK28E,oBAEf72D,GAEXgyD,EAAe53E,UAAUy8E,iBAAmB,WACxC,IAAI72D,EAAU,CAAEC,KAAM,CAAC/lB,MAAOgmB,OAAQ,kBACtC,OAAOF,GAEXgyD,EAAe53E,UAAU08E,qBAAuB,WAC5C,OAAK,eAAkB58E,KAAKs4E,iBAIjB,KAHAt4E,KAAKs4E,gBAAgB51D,iBAAiB,IAAMtM,KAM3D0hE,EAAe53E,UAAU0wE,cAAgB,SAAU/zD,GAC/C,OAAOA,aAAelE,KAAOkE,EAAM,MAEvCi7D,EAAe53E,UAAUytE,cAAgB,SAAU77C,GAC/C,IAAK9xB,KAAKivE,cAAcn9C,GAAO,CAC3B,IAAI/V,EAAY/b,KAAK4wE,cAAc9+C,GAC/BrZ,EAAQzY,KAAK8uE,iBACb+N,GAAY,eAAkBpkE,GAClC,GAAIzY,KAAKkd,eAAenB,GAAY,CAChC,IAAI+G,EAAO+5D,EAAWpkE,EAAMouB,UAAY,EACpClc,EAAQkyD,EAAWpkE,EAAMuuB,WAAa,EACtCpc,EAAOiyD,EAAWpkE,EAAMU,cAAgB,EACxC0R,EAAOgyD,EAAWpkE,EAAM6K,WAAam0D,EACrC3sD,EAAS+xD,EAAWpkE,EAAM8K,aAAem0D,EACzC3sD,EAAS8xD,EAAWpkE,EAAM+K,aAAem0D,EACzCmF,EAAcD,EAAWpkE,EAAMgL,kBAAoBm0D,EACvD,OAAK53E,KAAK+3E,eAIN/3E,KAAK+3E,eAAgB,EACd,IAAIp/D,KAAKiS,EAAMD,EAAO7H,EAAM/G,EAAUuH,WAAYvH,EAAUwH,aAAcxH,EAAUyH,aAAczH,EAAU0H,oBAJ5G,IAAI9K,KAAKiS,EAAMD,EAAO7H,EAAM+H,EAAMC,EAAQC,EAAQ+xD,IAQrE,OAAO,MAEXhF,EAAe53E,UAAU68E,oBAAsB,SAAUruE,GACrD,IAAIsnE,EAAWh2E,KAAiB,aAAEyY,MAC9BA,EAAQ,eAAkBzY,KAAK8uE,kBAAoB9uE,KAAK4wE,cAAcoF,GACtEh2E,KAAK2tE,cAAc3tE,KAAK8uE,kBACxBkO,EAAc,KACdC,EAAYj9E,KAAK0sE,cAAc/rE,OACnC,IAAK,eAAkBX,KAAK6uE,eAAiB,eAAkB7uE,KAAKkd,eAAezE,IAAS,CACxF,GAAqB,SAAjB/J,EAAMiS,OACNq8D,GAAgBh9E,KAAK4wE,cAAc,IAAIj4D,KAAK3Y,KAAKosE,gBAAgB,KACjEpsE,KAAK6uE,YAAc,OAElB,GAAqB,QAAjBngE,EAAMiS,OACXq8D,GAAgBh9E,KAAK4wE,cAAc,IAAIj4D,KAAK3Y,KAAKosE,gBAAgBpsE,KAAKosE,gBAAgBzrE,OAAS,KAC/FX,KAAK6uE,YAAc7uE,KAAKosE,gBAAgBzrE,OAAS,OAGjD,GAAqB,SAAjB+N,EAAMiS,QACN,IAAK,IAAI3f,EAAI,EAAGA,EAAIi8E,EAAWj8E,IAC3B,IAAKyX,EAAQzY,KAAKosE,gBAAgBprE,GAAI,CAClCg8E,GAAgBh9E,KAAK4wE,cAAc,IAAIj4D,KAAK3Y,KAAKosE,gBAAgBprE,KACjEhB,KAAK6uE,YAAc7tE,EACnB,YAKR,IAASA,EAAIi8E,EAAY,EAAGj8E,GAAK,EAAGA,IAChC,IAAKyX,EAAQzY,KAAKosE,gBAAgBprE,GAAI,CAClCg8E,GAAgBh9E,KAAK4wE,cAAc,IAAIj4D,KAAK3Y,KAAKosE,gBAAgBprE,KACjEhB,KAAK6uE,YAAc7tE,EACnB,MAKhBhB,KAAKyuC,gBAAkBzuC,KAAK0sE,cAAc1sE,KAAK6uE,aAC/C7uE,KAAKk9E,iBAAiB,eAAkBF,GAAe,KAAO,IAAIrkE,KAAKqkE,MAG/ElF,EAAe53E,UAAUi9E,aAAe,SAAUr6D,EAAMrK,GACpD,IAAIuD,EACA+xB,EACAlxB,EAAM7c,KAAK64E,oBAAoBpgE,GAC/Bo9D,EAAS71E,KAAK4wE,cAAc/zD,GA+BhC,OA9BI7c,KAAKutE,kBAAkBsI,MAAc,eAAkB71E,KAAKyY,OAA8C,KAArCzY,KAAKutE,kBAAkBvtE,KAAKyY,SACjGzY,KAAK8uE,iBAAmB,eAAkB+G,GAAU,KAAOA,EAC3D9nC,EAAO,IAAIp1B,MAAM3Y,KAAK8uE,oBAGlB9uE,KAAK2b,aAELmH,EAAO+yD,GAEX71E,KAAK8uE,iBAAmB9uE,KAAKkd,eAAe4F,GAC5CirB,EAAO,IAAIp1B,MAAM3Y,KAAK8uE,mBAGtB9yD,EADsB,cAAtBhc,KAAKoc,aACQpc,KAAKua,UAAU8B,WAAW0xB,EAAM,CACzCzxB,OAAS,eAAkBtc,KAAKkc,cAAoClc,KAAK24E,qBAAzB34E,KAAKkc,aACrD1N,KAAM,WAAY+N,SAAU,QAInBvc,KAAKua,UAAU8B,WAAW0xB,EAAM,CACzCzxB,OAAS,eAAkBtc,KAAKkc,cAAoClc,KAAK24E,qBAAzB34E,KAAKkc,aACrD1N,KAAM,WAAY+N,SAAU,MAAOC,SAAU,aAGhDxc,KAAK2b,YAAc,eAAkBoyB,GACtC,OAAMluB,SAAS7D,EAAYhc,KAAKgY,aAAchY,KAAK8X,eAAgB9X,KAAKib,iBAKrE8yB,GAEX+pC,EAAe53E,UAAUg9E,iBAAmB,SAAUzkE,GAClD,IAAK,eAAkBzY,KAAKkd,eAAezE,MAAYzY,KAAKivE,cAAcx2D,GAAQ,CAC9E,IAAIqK,EAAOrK,aAAiBE,KAAOF,EAAQzY,KAAK2tE,cAAcl1D,GAC9D,OAAOzY,KAAKm9E,aAAar6D,EAAMrK,GAEnC,OAAO,MAEXq/D,EAAe53E,UAAUk9E,eAAiB,SAAU1uE,GAChD,KAAI,eAAkB1O,KAAKouB,OAASpuB,KAAKouB,MAAQ,GAAjD,CAGA,IAAI6uD,EAAYj9E,KAAKosE,gBAAgBzrE,OACrC,GAAI,eAAkBX,KAAK48E,yBAAkE,IAAvC58E,KAAK48E,uBAAuBj8E,OAC1EX,KAAK0sE,cAAc/rE,OAAS,IACxB,eAAkBX,KAAKyY,QAAU,eAAkBzY,KAAK6uE,cACxD7uE,KAAK6uE,YAAc,EACnB7uE,KAAKyuC,gBAAkBzuC,KAAK0sE,cAAc,GAC1C1sE,KAAKk9E,iBAAiB,IAAIvkE,KAAK3Y,KAAKosE,gBAAgB,MAGpDpsE,KAAK+8E,oBAAoBruE,QAIhC,CACD,IAAI2uE,OAAgB,EACpB,GAAK3uE,EAAM8E,SAAW,IAAQ9E,EAAM8E,SAAW,GAAK,CAChD,IAAI/G,EAA2B,KAAlBiC,EAAM8E,SAAoC,KAAlB9E,EAAM8E,UAAoBxT,KAAK6uE,cAAgB7uE,KAAK6uE,YACzF7uE,KAAK6uE,YAAcpiE,EAAQzM,KAAK6uE,cAAgB,EAAc,EAAI7uE,KAAK6uE,YACvE7uE,KAAK6uE,YAAcpiE,EAAQzM,KAAK6uE,YAAc,EAAKoO,EAAY,EAAKj9E,KAAK6uE,YACzEwO,EAAgB,eAAkBr9E,KAAKosE,gBAAgB3/D,IACnDzM,KAAKosE,gBAAgB,GAAKpsE,KAAKosE,gBAAgB3/D,OAE7B,SAAjBiC,EAAMiS,QACX3gB,KAAK6uE,YAAc,EACnBwO,EAAgBr9E,KAAKosE,gBAAgB,IAEf,QAAjB19D,EAAMiS,SACX3gB,KAAK6uE,YAAcoO,EAAY,EAC/BI,EAAgBr9E,KAAKosE,gBAAgB6Q,EAAY,IAErDj9E,KAAKyuC,gBAAkBzuC,KAAK0sE,cAAc1sE,KAAK6uE,aAC/C7uE,KAAKk9E,iBAAiB,IAAIvkE,KAAK0kE,IAEnCr9E,KAAK0uE,YAAa,EAClB1uE,KAAK66E,aAAa76E,KAAKyuC,gBAAiB,IACxCzuC,KAAKy7E,2BACDz7E,KAAKo4E,mBAA8C,OAAzBp4E,KAAKyuC,iBAA8B//B,GAAwB,UAAfA,EAAMF,MAC5ExO,KAAKo6E,0BAGbtC,EAAe53E,UAAUq6E,oBAAsB,SAAU7rE,GACrD,GAAI1O,KAAKqY,QAIL,OAHqB,UAAjB3J,EAAMiS,QAAuC,SAAjBjS,EAAMiS,QAAsC,QAAjBjS,EAAMiS,QAC7DjS,EAAMwE,iBAEFxE,EAAMiS,QACV,IAAK,KACL,IAAK,OACL,IAAK,OACL,IAAK,MACD3gB,KAAKo9E,eAAe1uE,GACpB,MACJ,IAAK,QACG1O,KAAK0uE,YACL1uE,KAAKyuC,gBAAkBzuC,KAAK0sE,cAAc1sE,KAAK6uE,aAC/C7uE,KAAK8uE,iBAAmB,IAAIn2D,KAAK3Y,KAAKosE,gBAAgBpsE,KAAK6uE,cAC3D7uE,KAAK+6E,cAAc,SACd/6E,KAAKyiB,oBAAsBziB,KAAKyY,QACjCzY,KAAK0c,YAAYjE,MAAQzY,KAAKyY,MAC9BzY,KAAKm6E,mBACLn6E,KAAKyiB,iBAAmBziB,KAAKyY,QAIjCzY,KAAKwzE,YAAY9kE,GAErB1O,KAAKkS,KAAKxD,GACV,eAAS,CAAC1O,KAAKiY,aAAazI,WAAYyG,GACxCjW,KAAK0uE,YAAa,EAClBhgE,EAAMuQ,kBACN,MACJ,IAAK,SACDjf,KAAKkS,KAAKxD,GACV,MACJ,QACI1O,KAAK0uE,YAAa,EAClB,QAIhBoJ,EAAe53E,UAAUq5E,eAAiB,SAAU7qE,GAChD,OAAQA,EAAMiS,QACV,IAAK,eACD3gB,KAAKmhB,mBACLnhB,KAAKiZ,cACLjZ,KAAK25E,OAAOjrE,GACZ,QAWZopE,EAAe53E,UAAU+U,kBAAoB,SAAUC,EAASC,GAC5D,IAAK,IAAItH,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKF,GAAUrH,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC9D,IAAIwH,EAAOxR,EAAGgK,GACd,OAAQwH,GACJ,IAAK,QACDrV,KAAKuX,uBAAwB,EAC7BvX,KAAKiX,mBAAqB,KAC1BjX,KAAK0Z,kBAAkBxE,EAAQuD,OAC/BvD,EAAQuD,MAAQzY,KAAKyY,MACrBvD,EAAQuD,MAAQzY,KAAK41E,cAAc1gE,EAAQuD,OACvCzY,KAAK2Z,WACL,OAAMkG,SAAS7f,KAAKmX,gBAAiBnX,KAAKgY,aAAchY,KAAK8X,eAAgB9X,KAAKib,iBAGlF,OAAM4E,SAAS7f,KAAKutE,kBAAkBr4D,EAAQuD,OAAQzY,KAAKgY,aAAchY,KAAK8X,eAAgB9X,KAAKib,iBAEvGjb,KAAK8uE,iBAAmB55D,EAAQuD,MAChCzY,KAAKiL,cAAc,CAAEwN,MAAOvD,EAAQuD,QAAS,GACzCzY,KAAKoF,UACLpF,KAAKof,cAETpf,KAAKyiB,iBAAmB,IAAI9J,KAAK3Y,KAAKgY,aAAaS,OACnDzY,KAAKiZ,cACLjZ,KAAKohB,cAAc,MACnBphB,KAAKqX,cAAgBrX,KAAKoX,WAAapX,KAAKqX,eAAiBrX,KAAKqX,cAAgBrX,KAAKqX,cACnFrX,KAAK2Z,YAAc3Z,KAAKyY,OACxBzY,KAAK4Z,OAAO,aAAc,CACtBC,OAAQ,mBAGhB,MACJ,IAAK,MACL,IAAK,MACD7Z,KAAKm3E,YAAYjiE,EAASG,GAC1BrV,KAAKiZ,cACL,MACJ,IAAK,YACD,OAAMqR,aAAatqB,KAAKyF,UAAW,CAACzF,KAAKiY,aAAazI,YACtD,MACJ,IAAK,WACI,eAAkB2F,EAAQ1K,YAC3B0K,EAAQ1K,SAAY0K,EAAQ1K,SAASoQ,QAAQ,OAAQ,KAAMtO,QAE1D,eAAkB2I,EAAQzK,YAC3ByK,EAAQzK,SAAYyK,EAAQzK,SAASoQ,QAAQ,OAAQ,KAAMtO,QAE/D,OAAMiU,YAAYtL,EAAQzK,SAAU,CAACzK,KAAKiY,aAAazI,WAAY2F,EAAQ1K,UACvEzK,KAAKs4E,iBACL,OAAM93D,YAAYtL,EAAQzK,SAAU,CAACzK,KAAKs4E,iBAAkBnjE,EAAQ1K,UAExE,MACJ,IAAK,SACDzK,KAAKua,UAAY,IAAI,OAAqBva,KAAKwa,QAC/Cxa,KAAKya,KAAK4P,UAAUrqB,KAAKwa,QACrBxa,KAAKk4E,iBAAuD,MAApCl4E,KAAKk4E,gBAAgBl+D,cAC7Cha,KAAKiL,cAAc,CAAE+O,YAAaha,KAAKya,KAAKC,YAAY,iBAAkB,GAC1E,OAAMwP,eAAelqB,KAAKya,KAAKC,YAAY,eAAgB1a,KAAKgY,eAEpEhY,KAAKmc,eAAiBnc,KAAK24E,qBAC3B91E,EAAO3C,UAAU+Y,YAAY3V,KAAKtD,MAClC,MACJ,IAAK,iBACDA,KAAKogB,+BACLpgB,KAAK+Z,+BACL/Z,KAAKwuE,iBAAgB,GACrB,MACJ,IAAK,SACDxuE,KAAKiL,cAAc,CAAEqR,OAAQpH,EAAQoH,SAAU,GAC/Ctc,KAAKspB,cACLtpB,KAAKmc,eAAiBnc,KAAKkc,aAC3Blc,KAAK6f,WACD7f,KAAK2Z,aACL3Z,KAAK4Z,OAAO,aAAc,CACtBC,OAAQ,mBAEP7Z,KAAKyY,OACN,OAAMoH,SAAS7f,KAAKmX,gBAAiBnX,KAAKgY,aAAchY,KAAK8X,eAAgB9X,KAAKib,kBAG1F,MACJ,IAAK,cACD,OAAMiP,eAAehV,EAAQ8E,YAAaha,KAAKgY,cAC/C,MACJ,IAAK,UACD,OAAMoS,WAAWpqB,KAAKqY,QAASrY,KAAKgY,cAChChY,KAAKqY,QACLrY,KAAKgY,aAAarN,aAAa,WAAY3K,KAAKmb,UAGhDnb,KAAKgY,aAAamD,UAAY,EAElC,MACJ,IAAK,aACDnb,KAAKiX,mBAAqB,KAC1BjX,KAAKiZ,cACL,MACJ,IAAK,QACDjZ,KAAKkb,SAAShG,EAAQ5P,OACtB,OAAMyS,eAAe/X,KAAKgY,aAAchY,KAAKiY,aAAazI,WACrD,eAAkBxP,KAAKiY,aAAaC,QAAQ,KAAQ,eAAkBlY,KAAKiY,aAAazI,UAAU2I,uBAAuB,yBAAyB,KAA+B,UAAxBnY,KAAK8X,gBAC/J9X,KAAKiY,aAAazI,UAAU2I,uBAAuB,yBAAyB,GAAGjT,UAAU4G,IAAI,oBAEjG,MACJ,IAAK,WACD,OAAMqe,YAAYnqB,KAAKwZ,SAAUxZ,KAAKgY,cACtC,MACJ,IAAK,iBACDhY,KAAK8X,eAAiB5C,EAAQ4C,eAC9B,OAAM0S,eAAexqB,KAAKiY,cAC1B,OAAMwS,YAAYzqB,KAAKgY,aAAchY,KAAK8X,eAAgB9X,KAAKga,aAC1D,eAAkBha,KAAKiY,aAAaC,QAAQ,KAAQ,eAAkBlY,KAAKiY,aAAazI,UAAU2I,uBAAuB,yBAAyB,KAA+B,UAAxBnY,KAAK8X,gBAC/J9X,KAAKiY,aAAazI,UAAU2I,uBAAuB,yBAAyB,GAAGjT,UAAU4G,IAAI,oBAEjG,MACJ,IAAK,WACG9L,KAAKkd,eAAe,IAAIvE,KAAK3Y,KAAK0b,WAAWxG,EAAQq5D,aACjDvuE,KAAKs4E,iBACLt4E,KAAK8xE,cAET9xE,KAAKiL,cAAc,CAAEsjE,SAAUvuE,KAAKkd,eAAe,IAAIvE,KAAK3Y,KAAK0b,WAAWxG,EAAQq5D,cAAe,IAGnGvuE,KAAKiL,cAAc,CAAEsjE,SAAU,OAAQ,GAE3C,MACJ,IAAK,aACGvuE,KAAK2Z,YACL3Z,KAAK4Z,OAAO,aAAc,CACtBC,OAAQ,mBAEZ,OAAMgG,SAAS7f,KAAKmX,gBAAiBnX,KAAKgY,aAAchY,KAAK8X,eAAgB9X,KAAKib,kBAG9Ejb,KAAKgY,aAAaS,QAAUzY,KAAKmX,kBACjCnX,KAAKmX,gBAAkB,GACvB,OAAM0I,SAAS7f,KAAKmX,gBAAiBnX,KAAKgY,aAAchY,KAAK8X,eAAgB9X,KAAKib,kBAG1F,MACJ,QACIpY,EAAO3C,UAAU+U,kBAAkB3R,KAAKtD,KAAMkV,EAASC,GACvD,MAEHnV,KAAKuX,uBACNvX,KAAKkS,KAAK,MAEdlS,KAAKuX,uBAAwB,IASrCugE,EAAe53E,UAAU4U,cAAgB,WACrC,MAAO,kBAEXgjE,EAAe53E,UAAU6e,aAAe,WACpC/e,KAAKyiB,iBAAmBziB,KAAKma,aAC7Bna,KAAKgf,YAAchf,KAAKyY,MAAQzY,KAAKyY,MAAQ,IAAIE,KACjD3Y,KAAK8uE,iBAAmB9uE,KAAKyY,MAC7BzY,KAAKma,aAAena,KAAKyY,MACzBzY,KAAKka,qBAAuBla,KAAKka,qBAAwB,cAAD,CAAmBla,KAAKoa,gBAAmB,GAC/Fpa,KAAKutE,kBAAkBvtE,KAAKoa,iBAEpC,EAAW,CACP,eAAS,OACV09D,EAAe53E,UAAW,kBAAc,GAC3C,EAAW,CACP,eAAS,KACV43E,EAAe53E,UAAW,YAAQ,GACrC,EAAW,CACP,eAAS,OACV43E,EAAe53E,UAAW,gBAAY,GACzC,EAAW,CACP,eAAS,MACV43E,EAAe53E,UAAW,cAAU,GACvC,EAAW,CACP,eAAS,OACV43E,EAAe53E,UAAW,aAAS,GACtC,EAAW,CACP,eAAS,OACV43E,EAAe53E,UAAW,kBAAc,GAC3C,EAAW,CACP,eAAS,KACV43E,EAAe53E,UAAW,sBAAkB,GAC/C,EAAW,CACP,gBAAS,IACV43E,EAAe53E,UAAW,yBAAqB,GAClD,EAAW,CACP,gBAAS,IACV43E,EAAe53E,UAAW,iBAAa,GAC1C,EAAW,CACP,gBAAS,IACV43E,EAAe53E,UAAW,wBAAoB,GACjD,EAAW,CACP,eAAS,OACV43E,EAAe53E,UAAW,cAAU,GACvC,EAAW,CACP,gBAAS,IACV43E,EAAe53E,UAAW,uBAAmB,GAChD,EAAW,CACP,eAAS,OACV43E,EAAe53E,UAAW,mBAAe,GAC5C,EAAW,CACP,gBAAS,IACV43E,EAAe53E,UAAW,kBAAc,GAC3C,EAAW,CACP,gBAAS,IACV43E,EAAe53E,UAAW,sBAAkB,GAC/C,EAAW,CACP,eAAS,OACV43E,EAAe53E,UAAW,4BAAwB,GACrD,EAAW,CACP,eAAS,IAAIyY,KAAK,KAAM,EAAG,KAC5Bm/D,EAAe53E,UAAW,WAAO,GACpC,EAAW,CACP,eAAS,IAAIyY,KAAK,KAAM,GAAI,MAC7Bm/D,EAAe53E,UAAW,WAAO,GACpC,EAAW,CACP,eAAS,OACV43E,EAAe53E,UAAW,sBAAkB,GAC/C,EAAW,CACP,eAAS,cACV43E,EAAe53E,UAAW,oBAAgB,GAC7C,EAAW,CACP,eAAS,UACV43E,EAAe53E,UAAW,aAAS,GACtC,EAAW,CACP,eAAS,UACV43E,EAAe53E,UAAW,aAAS,GACtC,EAAW,CACP,gBAAS,IACV43E,EAAe53E,UAAW,kBAAc,GAC3C,EAAW,CACP,gBAAS,IACV43E,EAAe53E,UAAW,uBAAmB,GAChD,EAAW,CACP,eAAS,UACV43E,EAAe53E,UAAW,uBAAmB,GAChD,EAAW,CACP,gBAAS,IACV43E,EAAe53E,UAAW,mBAAe,GAC5C,EAAW,CACP,gBAAS,IACV43E,EAAe53E,UAAW,kBAAc,GAC3C,EAAW,CACP,eAAS,CAAEwqB,IAAK,MAAOC,MAAO,QAASC,KAAM,OAAQC,KAAM,OAAQC,OAAQ,SAAUC,OAAQ,SAAUC,aAAc,qBACtH8sD,EAAe53E,UAAW,uBAAmB,GAChD,EAAW,CACP,kBACD43E,EAAe53E,UAAW,YAAQ,GACrC,EAAW,CACP,kBACD43E,EAAe53E,UAAW,aAAS,GACtC,EAAW,CACP,kBACD43E,EAAe53E,UAAW,eAAW,GACxC,EAAW,CACP,kBACD43E,EAAe53E,UAAW,YAAQ,GACrC,EAAW,CACP,kBACD43E,EAAe53E,UAAW,aAAS,GACtC,EAAW,CACP,kBACD43E,EAAe53E,UAAW,eAAW,GACxC,EAAW,CACP,kBACD43E,EAAe53E,UAAW,iBAAa,GAC1C43E,EAAiB,EAAW,CACxB,QACDA,GACIA,EA7lDwB,CA8lDjC,S,oCCvqDF,W,oCCAA,wJAAIz4E,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxCK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAQzD,SAAS08E,EAASnyD,EAAOnK,GAE5B,IADA,IAAI+hB,EAAM,eAAO,GAAI5X,GACZtd,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAK2tB,GAAMl1B,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC1D,IAAIwH,EAAOxR,EAAGgK,GACV,EAAQ7J,QAAQqR,GAAQ,GACxB,eAAa0tB,EAAK1tB,GAG1B,OAAO0tB,EAOJ,SAASw6C,EAAiBC,EAAIhqE,GACjC,IAEIqgE,EAFA4J,EAAyB,KAAZjqE,EAAiB,EAAIgqE,EAAGtvB,kBAAoB,EACzDwvB,EAAQD,EAERE,EAAaH,EAAGtxE,cAAc,eAC9ByxE,GACAA,EAAWz4E,UAAUC,OAAO,cAEhC,IAAK,IAAInE,EAAI,EAAGiiB,EAAMu6D,EAAG58D,SAASjgB,OAAQK,EAAIiiB,EAAKjiB,IAC3Cw8E,EAAG58D,SAAS5f,GAAGkE,UAAUmB,SAAS,eAClCwtE,EAAK2J,EAAG58D,SAAS5f,GACjB08E,EAAQ18E,EACR6yE,EAAG3uE,UAAUC,OAAO,aACJ,KAAZqO,EACAkqE,IAGAA,IAEAA,KAAuB,KAAZlqE,EAAiBgqE,EAAGtvB,mBAAqB,KACpDwvB,EAAQD,IAIpB5J,EAAK2J,EAAG58D,SAAS88D,GACjBA,EAAQhJ,EAAU8I,EAAI3J,EAAI6J,EAAOlqE,IAClB,IAAXkqE,IACA,eAAS,CAACF,EAAG58D,SAAS88D,IAAS,aAC/BF,EAAG58D,SAAS88D,GAAO39D,SAa3B,SAAS20D,EAAU8I,EAAI3J,EAAIpnE,EAAO+G,EAASu3B,GAgBvC,QAfc,IAAVA,IAAoBA,EAAQ,IAC5B8oC,EAAG3uE,UAAUmB,SAAS,gBAAkBwtE,EAAG3uE,UAAUmB,SAAS,iBAC1DoG,KAAuB,KAAZ+G,EAAiBgqE,EAAGtvB,kBAAoB,EAAI,GACvDzhD,EAAoB,KAAZ+G,EAAiB,EAAIgqE,EAAGtvB,kBAAoB,EAGpC,KAAZ16C,EACA/G,IAGAA,KAIZonE,EAAK2J,EAAG58D,SAASnU,GACbonE,EAAG3uE,UAAUmB,SAAS,gBAAkBwtE,EAAG3uE,UAAUmB,SAAS,cAAe,CAE7E,GADA0kC,IACIA,IAAUyyC,EAAGtvB,kBACb,OAAgB,EAEpBzhD,EAAQioE,EAAU8I,EAAI3J,EAAIpnE,EAAO+G,EAASu3B,GAE9C,OAAOt+B,EAMJ,SAASmxE,EAAkBx3D,EAAOy3D,GACrC,IAAIC,EAAgB,GAAGpwE,MAAMpK,KAAK8iB,EAAMjO,uBAAuB,iBAC/D,GAAI0lE,EAAW,CACX,IAAIE,EAAW,GAAGrwE,MAAMpK,KAAK8iB,EAAMjO,uBAAuB,WAC1D4lE,EAASrqC,SAAQ,SAAUmgC,IACnBA,EAAG9sE,MAAMi3E,aAAenK,EAAG9sE,MAAMk3E,eACjCpK,EAAGjpE,gBAAgB,YAI/B,GAAKkzE,EAAcn9E,OAAnB,CAGA,IAAIu9E,EAAS93D,EAAMla,cAAc,gDACjC,IAAI,eAAkBgyE,GAAtB,CAGIA,EAAOh5E,UAAUmB,SAAS,WAC1B63E,EAASA,EAAOhyE,cAAc,gBAElC,IACIiyE,EADAC,EAAOF,EAAOhyE,cAAc,gBAE5BzG,EAAY2gB,EAAMlhB,UAAUmB,SAAS,SAErC83E,EADA14E,EACU,CAAEy1C,QAAS,eAAgB+a,OAAQ,cAGnC,CAAE/a,QAAS,cAAe+a,OAAQ,eAGhD,IAAIooB,EAAO1sE,SAASnL,iBAAiB43E,GAAME,SAAU,IAAM3sE,SAAsBnL,iBAAiB43E,GAAMD,EAAQloB,QAAmD,IAC7JtkD,SAASnL,iBAAiB03E,GAAQF,YAAa,IAAM,KAC3DF,EAAcpqC,SAAQ,SAAUmgC,GACxBA,EAAG3uE,UAAUmB,SAAS,SACtBwtE,EAAG3nE,cAAc,eAAenF,MAAMo3E,EAAQjjC,SAAWmjC,EAGzDxK,EAAG9sE,MAAMo3E,EAAQjjC,SAAWmjC,OAQxC,IAAIp2B,EAAsB,SAAUplD,GAEhC,SAASolD,IACL,OAAkB,OAAXplD,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAoB/D,OAtBAX,EAAU4oD,EAAMplD,GAIhBzC,EAAW,CACP,eAAS,KACV6nD,EAAK/nD,UAAW,eAAW,GAC9BE,EAAW,CACP,eAAS,KACV6nD,EAAK/nD,UAAW,UAAM,GACzBE,EAAW,CACP,gBAAS,IACV6nD,EAAK/nD,UAAW,iBAAa,GAChCE,EAAW,CACP,eAAS,KACV6nD,EAAK/nD,UAAW,YAAQ,GAC3BE,EAAW,CACP,eAAS,KACV6nD,EAAK/nD,UAAW,WAAO,GAC1BE,EAAW,CACP,gBAAS,IACV6nD,EAAK/nD,UAAW,gBAAY,GACxB+nD,EAvBc,CAwBvB,S,oCCnLF,kDAOIs2B,EAAgC,WAChC,SAASA,EAAeC,GACpBx+E,KAAKy+E,KAAO,IAAI,OACX,eAAkBD,KACnBx+E,KAAKy+E,KAAKzhE,QAAUwhE,GAuC5B,OApCAD,EAAer+E,UAAUm2C,kBAAoB,SAAU/5B,GACnD,OAAIA,EAAO9N,KACAxO,KAAKy+E,KAAKC,cAAcpiE,GAGxBtc,KAAKy+E,KAAKE,gBAAgBriE,IAGzCiiE,EAAer+E,UAAUq2C,kBAAoB,SAAUj6B,GACnD,OAAIA,EAAO9N,KACAxO,KAAKy+E,KAAKG,cAActiE,GAGxBtc,KAAKy+E,KAAKI,gBAAgBviE,IAGzCiiE,EAAer+E,UAAU4+E,SAAW,SAAUrmE,EAAO6D,EAAQ9N,GACzD,MAAc,SAATA,GAA4B,aAATA,GAAgC,WAATA,GAAwB,eAAkB8N,GAI9E7D,EAHA6D,EAAO7D,IAMtB8lE,EAAer+E,UAAU28B,OAAS,SAAUpkB,EAAO6D,GAC/C,IAAI0U,EAASvY,EAIb,OAHK,eAAkB6D,IAAY,eAAkB7D,KACjDuY,EAAS1U,EAAO7D,IAEbuY,GAEXutD,EAAer+E,UAAU6+E,WAAa,SAAUP,GACvC,eAAkBA,IACnB,gBAAWA,IAGZD,EA3CwB,I,kCCPnC,8GAYIS,EAA6B,WAC7B,SAASA,EAAYnwD,EAAgBgzB,EAAUjzB,GAC3C5uB,KAAKi/E,QAAS,EACdj/E,KAAK6hD,SAAWA,EAChB7hD,KAAK6uB,eAAiBA,EACtB7uB,KAAK4uB,OAASA,EACd5uB,KAAKoD,QAAUpD,KAAK4uB,OAAOrqB,cAAc,KAAM,CAAEyK,MAAO,CAAEC,KAAM,SAmWpE,OArVA+vE,EAAY9+E,UAAUyT,OAAS,SAAU0jB,EAAKlI,EAAS1H,EAAYy3D,EAAax3D,GAC5E,OAAO1nB,KAAKm/E,WAAW9nD,EAAKlI,EAAS1H,EAAYy3D,EAAax3D,IAclEs3D,EAAY9+E,UAAUoV,QAAU,SAAU+hB,EAAKlI,EAASiwD,EAAW33D,EAAYy3D,GAC3E,IAAI77E,EAAQrD,KACRo/E,IACA/nD,EAAIxL,KAAO,eAAgB,GAAIwL,EAAI6E,SACnCl8B,KAAKq/E,kBAAkBhoD,IAE3B,IAAI+W,EAAOpuC,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,aAAemrB,EAAIlD,IAAM,KAClEmrD,EAAKt/E,KAAKm/E,WAAW9nD,EAAKlI,EAAS1H,EAAYy3D,EAAa,KAAME,GAClE39B,EAAQ,GAAG/zC,MAAMpK,KAAKg8E,EAAG79B,OACzB89B,EAAY,GAAG7xE,MAAMpK,KAAK8qC,EAAK1rB,iBAAiB,oBACpD,GAAI1iB,KAAK4uB,OAAOzmB,SAAWo3E,EAAU5+E,OASjC,IARA,IAAIgwB,EAAU,SAAUuI,GACpB,GAAIA,EAAI0d,SAIJ,OAHAxpC,YAAW,WACP/J,EAAMurB,OAAOkpB,gCAAgC5e,EAAI/E,KAAK,KACvD,GACI,SAGNtmB,EAAK,EAAG+sB,EAAYzL,EAASthB,EAAK+sB,EAAUj6B,OAAQkN,IAAM,CAC/D,IAAIqrB,EAAM0B,EAAU/sB,GAChBkoD,EAAUplC,EAAQuI,GACtB,GAAgB,UAAZ68B,EACA,MAGZ,IAAI1sC,EAAO,GAAG3b,MAAMpK,KAAKg8E,EAAG73D,YAC5B4B,EAAKxiB,KAAI,SAAU0mD,GACfnf,EAAKzjC,aAAa4iD,EAAK,QAASA,EAAK,aAEzCnf,EAAKtjC,UAAY,GACjB,IAAK,IAAIjH,EAAK,EAAG27E,EAAU/9B,EAAO59C,EAAK27E,EAAQ7+E,OAAQkD,IAAM,CACzD,IAAI89C,EAAO69B,EAAQ37E,GACnBuqC,EAAK1pC,YAAYi9C,KAIzBq9B,EAAY9+E,UAAUi/E,WAAa,SAAU9nD,EAAKlI,EAAS1H,EAAYy3D,EAAax3D,EAAWq1B,GAC3F,IAAIuiC,EAAM,eAAkB53D,GAAyB1nB,KAAKoD,QAAQskB,YAAzBA,EACrC+3D,EAAU,CAAE5zD,KAAMwL,EAAIxL,MACtB6zD,EAAW,CAAE7zD,KAAMwL,EAAIxL,MACvB8zD,EAAgB3/E,KAAK4uB,OAAO8H,aAAazC,QAAO,SAAUiF,GAAO,MAAoB,aAAbA,EAAI1qB,MAAuB0qB,EAAIrH,SAAU,GACjHpZ,GAAQ,EACRknE,IACAlnE,EAAQ,eAAUknE,EAAc9tD,MAAO4tD,EAAQ5zD,OAEnD,IAAI+zD,EAAW5/E,KAAK4uB,OAAOixD,wBACvBxoD,EAAIyoD,YACJzoD,EAAI0oD,WAAaH,EAAS57E,QAAQqzB,EAAI5qB,QAAU,GAAKgM,GAErD4e,EAAIyoD,WAAa9/E,KAAK4uB,OAAOoxD,qBACG,UAA7BhgF,KAAK4uB,OAAOqxD,eAA6BjgF,KAAK4uB,OAAO6D,sBAAwBzyB,KAAK4uB,OAAOiJ,2BAC5FR,EAAI0oD,YAAa,GACoB,IAAjCH,EAAS57E,QAAQqzB,EAAI5qB,QACrBmzE,EAASvzE,KAAKgrB,EAAI5qB,QAG1BzM,KAAKkgF,sBAAsBZ,EAAIjoD,GAC/B,eAAcioD,EAAI,eAAO,GAAI73D,EAAY,KACzC,gBAAsB63D,EAAIjoD,EAAI5P,YAiE9B,IAhEA,IAAI04D,EAAmBngF,KAAK6uB,eAAeuxD,WAAW,uBAClDC,EAAU,SAAUr/E,EAAGiiB,GACvB,IAAI0+B,EAAOtqB,EAAIoqB,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAC5C+vC,EAAKo+B,WAAa1oD,EAAI0oD,WACtBp+B,EAAK2+B,iBAAmB3+B,EAAKpyB,OAAOwwD,WACpC,IAAIQ,EAAeJ,EAAiBK,gBAAgBnpD,EAAIoqB,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKiwC,UACnF,OAASzsB,MACZpmB,EAAQ,CAAE,MAAU,eAAkBqoB,EAAI5qB,OAAgC,GAAvB4qB,EAAI5qB,MAAMmF,YAC7DylB,EAAIopD,UAAYppD,EAAIoqB,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKiwC,WAAa,OAAS6+B,eAC5E1xE,EAAM,SAAW6hB,EAAOjC,OAAO46C,WAAa,sBAAwB,qBAExE,IAAImX,EAAKJ,EAAa5sE,OAAO0jB,EAAIoqB,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAMylB,EAAIxL,KAAM7c,EAAOqoB,EAAIopD,SAAU1jC,GACnG,GAAI1lB,EAAIoqB,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKiwC,WAAa,OAAS++B,OAAQ,CACpE,GAAIvpD,EAAIoqB,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKiwC,WAAa,OAASzsB,MACzDiC,EAAIoqB,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKiwC,WAAa,OAASg/B,cAAe,CAC9E,IAAIC,EAAejwD,EAAOjC,OAAOmyD,eAAiBlwD,EAAOjC,OAAOmyD,cAAcC,eAC1EnwD,EAAOjC,OAAOmyD,cAAcC,cAAc74E,QAC9C,IAAM0oB,EAAOjC,OAAOzmB,SAAW0oB,EAAOjC,OAAOqyD,oBAAwBH,GACjEjwD,EAAOjC,OAAOmyD,cAAcC,cAAcC,qBAAwBt/B,EAAKu/B,WAAY,CAEnF,IAAIC,EAAYtwD,EAChBswD,EAAUvyD,OAAOwyD,iBAAgB,WAC7B,GAAsC,kBAA1Bz/B,EAAKpyB,OAAe,SAAgB,CAC5C,IAAIs+B,EAAW8yB,EAAGj2E,aAAa,cAC/Bi2E,EAAGh2E,aAAa,aAAcg2E,EAAGl4C,UAAYolB,GAEjDszB,EAAUvyD,OAAO3mB,QAAQ,QAAe,eAAOy3E,EAAU,CACrD/9B,KAAMg/B,EAAIpxD,OAAQoyB,EAAKpyB,OAAQo7C,QAAS,EACxC0W,QAAS,EAAGxlD,eAAgBxE,EAAIoqB,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKiqB,eAClE9N,YAAaozD,EAAUvyD,OAAO0yD,6BAKtCzwD,EAAOjC,OAAO3mB,QAAQ,QAAe,eAAOy3E,EAAU,CAClD/9B,KAAMg/B,EAAIpxD,OAAQoyB,EAAKpyB,OAAQo7C,QAAS,EACxC0W,QAAS,EAAGxlD,eAAgBxE,EAAIoqB,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKiqB,eAClE9N,YAAa8C,EAAOjC,OAAO0yD,qBAGnC,IAAIC,GAAe,EACnB,GAAIlqD,EAAI5qB,MAAQ,GAAKokB,EAAOouD,OAAQ,CAChC,IAAIuC,EAAa3wD,EAAOjC,OAAO6yD,gBAC3BC,EAAe7wD,EAAOjC,OAAO+D,cAAcxD,QAAQxuB,OAAS,IAC3D6gF,EAAWnqD,EAAI5qB,MAAQ,GAAGqzE,UAAY0B,EAAWnqD,EAAI5qB,OAAOg1C,MAAQ+/B,EAAWnqD,EAAI5qB,MAAQ,GAAGg1C,MAC/FkgC,EAAQ,MACRC,EAAcF,EAAaztD,QAAO,SAAU0tB,GAC5C,OAAOA,EAAKpyB,OAAO4E,MAAQkD,EAAIoqB,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAK2d,OAAO,GAAKoyD,MAC9E,GACHJ,EAAeK,EAAYL,aAAeK,EAAYL,aAAeK,EAAYC,aAAe,EAEpG,GAAInC,EAAS/U,QAAU,GAAKtzC,EAAIoqB,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKkwE,SAAW,GAAKpC,EAAS2B,QAAU,GAC9FE,EAAc,CACjB1wD,EAAOouD,QAAS,EAChB,IAAI8C,EAAY,IAAI,OAAgBlxD,EAAOhC,eAAgBgC,EAAOjC,QAClE+xD,EAAKoB,EAAUpuE,OAAO+rE,EAAUroD,EAAKr2B,EAAG2/E,IAG3CtpD,EAAIoqB,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKowE,WACvC1C,EAAG56E,YAAYi8E,KAIvB9vD,EAAS7wB,KACJgB,EAAI,EAAGiiB,EAAMoU,EAAIoqB,MAAM9gD,OAAQK,EAAIiiB,EAAKjiB,IAC7Cq/E,EAAQr/E,EAAGiiB,GAEf,IAAIg/D,EAAe,EACnB,GAAIjiF,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,QAAUX,KAAK4uB,OAAOszD,4BAA6B,CACrF,GAAI5C,EAAGp6E,UAAUmB,SAAS,qBAAsB,CAC5C,IAAI87E,EAAc,GAAGz0E,MAAMpK,KAAKg8E,EAAG58D,iBAAiB,qGAIpD,GAHIy/D,EAAYxhF,QACZ,gBAAYwhF,EAAa,CAAC,eAAgB,aAAc,gBAAiB,gBAAiB,sBAAuB,uBAEjH7C,EAAGpzE,cAAc,kBACjB,eAA4BozE,EAAIt/E,KAAK4uB,YAEpC,CACD,IAAK,IAAI0I,EAAI,EAAGA,EAAIgoD,EAAGxqC,WAAWn0C,OAAQ22B,IAAK,CAC3C,IAAIqpD,EAAKrB,EAAGxqC,WAAWnjC,SAAS2lB,EAAE1lB,WAAY,KAG9C,GAFA+uE,EAAGz7E,UAAU4G,IAAI,gBACjB,eAA6B60E,EAAQ,GAAJrpD,EAAQt3B,KAAK4uB,OAAOnpB,UAAW,QAC5Dk7E,EAAGz7E,UAAUmB,SAAS,kBAAmB,CACzC,IAAI+7E,EAAazwE,SAASgvE,EAAGj2E,aAAa,WAAY,IAClD23E,EAAU,gBAAyBriF,KAAK4uB,OAAQ0I,GACpDqpD,EAAGh2E,aAAa,UAAW03E,EAAQzwE,YACnCqwE,EAAeG,EAAaC,GAGpC,GAAIJ,EAAc,CACVtB,EAAK3gF,KAAK4uB,OAAOrqB,cAAc,KAAM,CACrCC,UAAW,iBACXwK,MAAO,CAAEqzE,QAASJ,EAAarwE,WAAYtG,GAAItL,KAAK4uB,OAAOxrB,QAAQkI,GAAK,cAAeg3E,SAAU,QAErGhD,EAAG56E,YAAYi8E,KAI3B,GAAIrB,EAAG58D,iBAAiB,iBAAiB/hB,SACpC2+E,EAAG58D,iBAAiB,iBAAiB/hB,QAAU2+E,EAAG58D,iBAAiB,uBAAuB/hB,QAE3F,IADIggF,EAAKrB,EAAG58D,iBAAiB,sCACpB1hB,EAAI,EAAGA,EAAI2/E,EAAGhgF,OAAQK,IAC3B2/E,EAAGhvE,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,gBAC7C,eAA6B60E,EAAGhvE,SAAS3Q,EAAE4Q,WAAY,KAAU,GAAJ5Q,EAAQhB,KAAK4uB,OAAOnpB,UAAW,QAIxG,IAAIsgB,EAAO,CAAEsR,IAAKioD,EAAIiD,UAAWviF,KAAK4uB,OAAO2zD,WAC7C,GAAIlrD,EAAIyoD,UAAW,CACf,IAAI0C,EAAa,eAAO/C,EAAS15D,GACjCy8D,EAAWC,cAAe,EAC1B,IAAI3B,EAAe9gF,KAAK4uB,OAAOmyD,eAAiB/gF,KAAK4uB,OAAOmyD,cAAcC,eACtEhhF,KAAK4uB,OAAOmyD,cAAcC,cAAc74E,QACxCu6E,EAAeF,EAAWnrD,IAAI3U,iBAAiB,mBACnD,IAAM1iB,KAAK4uB,OAAOzmB,SAAWnI,KAAK4uB,OAAOqyD,oBAAwBH,GAC7D9gF,KAAK4uB,OAAOmyD,cAAcC,cAAcC,qBAAwByB,EAAa/hF,OAAQ,CAErF,IAAIgiF,EAAY3iF,KAChB2iF,EAAU/zD,OAAOwyD,iBAAgB,WAC7BuB,EAAU/zD,OAAO3mB,QAAQ,QAAcu6E,GAClCA,EAAWC,eACZprD,EAAIorD,aAAeD,EAAWC,aAC9BE,EAAUC,oBAAoBD,EAAWtrD,EAAKtR,EAAMy8D,YAK5DxiF,KAAK4uB,OAAO3mB,QAAQ,QAAcu6E,GAEtCnrD,EAAIorD,aAAeD,EAAWC,aAC9B,IAAII,EAAc7iF,KAAK4uB,OAAOyxB,gBAC9B,GAAIrgD,KAAK4uB,OAAO4D,aAAexyB,KAAK4uB,OAAOk0D,kBAAkBC,iBAAkB,CAC3E,IAAIC,EAAehjF,KAAK4uB,OAAOkN,0BAA0B,GACrDmnD,EAAS5rD,EAAIxL,KAAOwL,EAAIxL,KAAK,GAAKm3D,GAAgB,KAClDE,EAAkBV,EAAWC,aAAeziF,KAAK4uB,OAAOu0D,uBACxDnjF,KAAK4uB,OAAOw0D,uBACXF,EAAgBlpD,MAAK,SAAUnO,GAAQ,OAAOA,EAAK,GAAKm3D,KAAkBC,MAC3EC,EAAgB72E,KAAKgrB,EAAIxL,MAMjC,GAHK22D,EAAWC,cACZziF,KAAK4iF,oBAAoB5iF,KAAMq3B,EAAKtR,EAAMy8D,GAE1CxiF,KAAK4uB,OAAOwxB,WAAayiC,GAAe7iF,KAAK4uB,OAAOuxB,eAAgB,CAChEwgC,EAAKrB,EAAG58D,iBAAiB,2BAA2B,GACpDi+D,GACAA,EAAGz7E,UAAU4G,IAAI,uBAIzB9L,KAAK4uB,OAAO6D,uBACZgtD,EAAQ8C,UAAYviF,KAAK4uB,OAAO2zD,WAEhC9C,EAAQ8C,UACRjD,EAAGv4E,MAAM1B,OAASo6E,EAAQ8C,UAAY,KAEjCviF,KAAK4uB,OAAO2zD,YAAcjD,EAAGpzE,cAAc,kBAAoBozE,EAAGpzE,cAAc,sBACrFozE,EAAGv4E,MAAM1B,OAASrF,KAAK4uB,OAAO2zD,UAAY,MAE1ClrD,EAAI5sB,UACJ60E,EAAGp6E,UAAU4G,IAAIurB,EAAI5sB,UAErB4sB,EAAIgsD,kBACJ/D,EAAGp6E,UAAU4G,IAAIurB,EAAIgsD,kBAEY,aAAjCrjF,KAAK4uB,OAAO00D,mBAAmCtjF,KAAK4uB,OAAO20D,eAA4D,WAA1CvjF,KAAK4uB,OAAO40D,iBAAiBC,UAC7D,SAA1CzjF,KAAK4uB,OAAO40D,iBAAiBC,UAChCnE,EAAGp6E,UAAU4G,IAAI,kBAErB,IAAI43E,EAAU1jF,KAAK4uB,OAAOqrB,2BAC1B,IAAKypC,GAAW1jF,KAAK4uB,OAAOwI,WAAWz2B,QAAUX,KAAK4uB,OAAOxrB,QAAQ66C,aAAej+C,KAAK4uB,OAAOvpB,OAC5F,IAASrE,EAAI,EAAGA,EAAIhB,KAAK4uB,OAAOwI,WAAWz2B,OAAQK,IAAK,CACpD,IAAIu5D,EAAW,aACXhrC,EAAS,UACb,GAAIvvB,KAAK4uB,OAAOwI,WAAWzlB,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAK2oD,GAAU,GAAKhrC,GAAQ,GAAGwwB,eAAgB,CAClG,IAAI4jC,EAAc,GAAGj2E,MAAMpK,KAAKg8E,EAAGnnE,uBAAuB,kBAC1D,GAAIwrE,EAAYhjF,OAAQ,CACpB,IAAIijF,EAAmBD,EAAYA,EAAYhjF,OAAS,GACxD,eAAS,CAACijF,GAAkB,CAAC,sBAC7B,IAAIC,EAAoBF,EAAY,GACpC,eAAS,CAACE,GAAmB,CAAC,yBAK9C,OAAOvE,GAEXN,EAAY9+E,UAAU0iF,oBAAsB,SAAUkB,EAASzsD,EAAKtR,EAAMg+D,GACtE,IAAInE,EAAW5/E,KAAK4uB,OAAOixD,wBAC3B7/E,KAAK4uB,OAAOo1D,gBAAgBC,oBAAqB,EACjD5sD,EAAI0oD,YAAa,EACjB,IAAImE,EAActE,EAAS57E,QAAQqzB,EAAI5qB,OACnCy3E,GAAe,GACftE,EAASlzE,OAAOw3E,EAAa,GAKjC,IAHA,IAAIC,EAASp+D,EAAKsR,IAAI3U,iBAAiB,2BACnC0hE,EAASL,EAAS1sD,IAAInrB,cAAc,kBACpCm4E,EAAUP,EAAQl1D,OAAO+D,cAAcxD,QAAQxuB,QAAUyjF,GAAUN,EAAQl1D,OAAO01D,WAAa,EAAI,GAC9FtjF,EAAI,EAAGA,EAAImjF,EAAOxjF,OAAQK,IAC/BmjF,EAAOxyE,SAAS3Q,EAAE4Q,WAAY,KAAK6P,kBAAkBvc,UAAU4G,IAAI,uBACnEq4E,EAAOxyE,SAAS3Q,EAAE4Q,WAAY,KAAK1F,cAAc,YAAYhH,UAAUC,OAAO,WAElF,GAAIkyB,EAAIoqB,MAAM9gD,OACV,IAASK,EAAIqjF,EAASrjF,EAAIq2B,EAAIoqB,MAAM9gD,OAAQK,IAAK,CAC7C,IAAI2gD,EAAOoiC,EAAS1sD,IAAInrB,cAAc,6BAA+BmrB,EAAIoqB,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKnF,MAAQ,MAC/Gk1C,GACA,gBAAY,CAACA,GAAO,CAAC,wBAAyB,aAItDyiC,GACA,gBAAY,CAACA,GAAS,CAAC,wBAAyB,cAIxDpF,EAAY9+E,UAAUm/E,kBAAoB,SAAUhoD,GAChD,IAAK,IAAIxpB,EAAK,EAAGhK,EAAKwzB,EAAIoqB,MAAO5zC,EAAKhK,EAAGlD,OAAQkN,IAAM,CACnD,IAAI8zC,EAAO99C,EAAGgK,GACd8zC,EAAKqgC,WAAY,EAErB,OAAO3qD,GAWX2nD,EAAY9+E,UAAUggF,sBAAwB,SAAUZ,EAAIjoD,GACxD,IAAIhO,EAAO,GACPhU,EAAO,CAAE,SAAY,OAAuB,QAAW,WAAY,aAAgB,iBACnFkvE,EAAU,GACVltD,EAAIyoD,WACJyE,EAAQl4E,KAAK,QAEbgrB,EAAImtD,UACJD,EAAQl4E,KAAK,YAEbgrB,EAAIotD,cACJF,EAAQl4E,KAAK,qBAEbgrB,EAAIqqB,gBAAkBrqB,EAAIqpB,WAC1B6jC,EAAQl4E,KAAK,oBAEZ,eAAkBgrB,EAAI5qB,SACvB4c,EAAK,QAAyBgO,EAAI5qB,MAAQ,EAC1C4c,EAAKhU,EAAKqvE,UAAYrtD,EAAI5qB,OAE1B4qB,EAAIgqD,UACJh4D,EAAKg4D,QAAUhqD,EAAIgqD,SAEnBhqD,EAAIlD,MACJ9K,EAAKhU,EAAKsvE,SAAWttD,EAAIlD,KAEzBkD,EAAI0oD,aACJ12D,EAAKhU,EAAKuvE,eAAgB,IAEV,IAAhBvtD,EAAIT,SACJ2tD,EAAQl4E,KAAK,UAEjBgd,EAAKm4B,MAAQ+iC,EACb,gBAAsBjF,EAAIj2D,IAEvB21D,EAzWqB,I,oCCZhC,8GAYI6F,EAAmC,WAMnC,SAASA,EAAkBj2D,GACvB5uB,KAAK4uB,OAASA,EA+GlB,OA7GAi2D,EAAkB3kF,UAAUogD,aAAe,SAAUz0B,EAAM9F,GACvD,IAAIoR,EAAO,GACP2tD,EAAa9kF,KAAK4uB,OAAO6D,sBAAwB1M,EAAOA,EAAK++D,WAAa,EAC9EA,EAAa9kF,KAAK4uB,OAAOiJ,yBAA2B9R,EAAO/lB,KAAK+kF,iBAAiBh/D,GAAQ++D,EACrF9kF,KAAK4uB,OAAOo2D,qBAAuBj/D,GAAQA,EAAK++D,aAChDA,EAAa/+D,EAAK++D,YAEtB,IAAK,IAAI9jF,EAAI,EAAGiiB,EAAMxjB,OAAO2V,KAAKyW,GAAMlrB,OAAQK,EAAIiiB,EAAKjiB,IAAK8jF,IAC1D3tD,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAO5R,KAAKilF,YAAYp5D,EAAKla,SAAS3Q,EAAE4Q,WAAY,KAAMkzE,GAE1F,OAAO3tD,GAEX0tD,EAAkB3kF,UAAUglF,cAAgB,WAExC,IAAI3tD,EAAO,GACX,GAAIv3B,KAAK4uB,OAAOuxB,gBAAkBngD,KAAK4uB,OAAOwxB,UAAW,CACrD,IAAIr6B,EAAO,GACX/lB,KAAK4uB,OAAOhV,OAAO,QAA6BmM,GAChDwR,EAAKlrB,KAAKrM,KAAKmlF,aAAap/D,EAAM,KAAM,OAAS26D,eAKrD,OAHI1gF,KAAK4uB,OAAOyxB,iBACZ9oB,EAAKlrB,KAAKrM,KAAKmlF,aAAa,GAAI,KAAM,OAASC,cAE5C7tD,GAEXstD,EAAkB3kF,UAAU+kF,YAAc,SAAUp5D,EAAMpf,EAAOhC,EAAUq3C,EAAQujC,EAAKC,EAAQ5kC,GAC5F,IAAIv9C,EAAU,CACd,eAAyB,IACzBA,EAAQgxB,IAAM,eAAO,YACrBhxB,EAAQ0oB,KAAOA,EACf1oB,EAAQsJ,MAAQA,EAChBtJ,EAAQ2+C,OAASA,EACjB3+C,EAAQmiF,OAASA,EACjBniF,EAAQ28E,WAAY,EACpB38E,EAAQoiF,UAAYF,EACpBliF,EAAQu9C,UAAYA,EAChB1gD,KAAK4uB,OAAO46C,aAC2B,QAAnCxpE,KAAK4uB,OAAOi6C,mBACZ1lE,EAAQs9E,UAAW,EAEqB,aAAnCzgF,KAAK4uB,OAAOi6C,oBAAqC7oE,KAAK4uB,OAAO42D,cAAgBxlF,KAAK4uB,OAAO42D,aAAa7zE,SAASlF,EAAMmF,WAAY,OACtIzO,EAAQs9E,SAAWzgF,KAAK4uB,OAAO42D,aAAa7zE,SAASlF,EAAMmF,WAAY,KAAK6uE,WAGpFt9E,EAAQsH,SAAWA,EACnBtH,EAAQqhF,WAAWxkF,KAAK4uB,OAAO62D,cAAeh5E,EAAQ,IAAM,EAC5DtJ,EAAQqhF,WAAWxkF,KAAK4uB,OAAO62D,cAAeh5E,EAAQ,IAAM,EAC5DtJ,EAAQ48E,WAAa//E,KAAK4uB,OAAOixD,wBAAwB77E,QAAQyI,IAAU,EAC3EzM,KAAK0lF,qBAAqBviF,GAC1B,IAAIs+C,EAAQzhD,KAAKklF,gBACb7tD,EAAM,IAAI,OAAIl0B,EAASnD,KAAK4uB,QAGhC,OAFAyI,EAAIoqB,MAAwC,UAAhCzhD,KAAK4uB,OAAO+2D,gBAA8B3lF,KAAK4lF,cAAcziF,GAAS8rC,OAAOwS,GACnFA,EAAMxS,OAAOjvC,KAAK4lF,cAAcziF,IAC/Bk0B,GAEXwtD,EAAkB3kF,UAAUwlF,qBAAuB,SAAUviF,GAEzD,IADA,IAAI0iF,EAAoB7lF,KAAK4uB,OAAO6B,uBAC3BzvB,EAAI,EAAGA,EAAI6kF,EAAkBllF,OAAQK,IAC1C,gBAAS6kF,EAAkBl0E,SAAS3Q,EAAE4Q,WAAY,KAAKigB,MAAO,eAAeg0D,EAAkBl0E,SAAS3Q,EAAE4Q,WAAY,KAAMzO,EAAQ0oB,MAAO1oB,EAAQ04B,iBAG3JgpD,EAAkB3kF,UAAU0lF,cAAgB,SAAUziF,GAGlD,IAFA,IAAI2iF,EAAU9lF,KAAK4uB,OAAO8H,aACtBmqB,EAAM,GACD7/C,EAAI,EAAGA,EAAI8kF,EAAQnlF,OAAQK,IAChC6/C,EAAIx0C,KAAKrM,KAAKmlF,aAAaW,EAAQn0E,SAAS3Q,EAAE4Q,WAAY,KAAMzO,EAAQgxB,IAAK,eAAkB2xD,EAAQn0E,SAAS3Q,EAAE4Q,WAAY,KAAK8kC,eAAYnrC,EAAY,OAASs1E,cAAe,KAAM7/E,EAAGmC,EAAQ04B,iBAExM,OAAOglB,GAaXgkC,EAAkB3kF,UAAUilF,aAAe,SAAU51D,EAAQw2D,EAAOlkC,EAAU8oB,EAASqb,EAAQnqD,GAC3F,IAAIomB,EAAM,CACN,QAAW1yB,EAAOqH,QAClB,YAAe,eAAkBrH,EAAOsC,OAAStC,EAAOqnB,UACxD,YAAe,eAAkBrnB,EAAOqnB,UACxC,MAASmvC,EACT,OAAUx2D,EACV,SAAa,eAAkBsyB,GAAuB,OAASzsB,KAApBysB,EAC3C,QAAW8oB,EACX,SAAYp7C,EAAOmnB,SACnB,aAAgBnnB,EAAOgK,iBAAmBhK,EAAOgK,kBACjD,eAAkBhK,EAAOgK,iBAAmBhK,EAAOgK,mBAAqB,eAAShK,EAAOsC,MAAOgK,IAKnG,OAHIomB,EAAIL,YAAkC,aAApBK,EAAI1yB,OAAO/gB,MAAuByzC,EAAIvL,YACxDuL,EAAIx1C,MAAQu5E,GAET,IAAI,OAAK/jC,IAEpB4iC,EAAkB3kF,UAAU+lF,YAAc,SAAUhzC,GAChD,IAAK,IAAIjyC,EAAI,EAAGA,EAAIiyC,EAAMtyC,OAAQK,IAC9BhB,KAAK0lF,qBAAqBzyC,EAAMthC,SAAS3Q,EAAE4Q,WAAY,MACvDqhC,EAAMthC,SAAS3Q,EAAE4Q,WAAY,KAAK6vC,MAAQzhD,KAAK4lF,cAAc3yC,EAAMthC,SAAS3Q,EAAE4Q,WAAY,MAE9F,OAAOqhC,GAEX4xC,EAAkB3kF,UAAU6kF,iBAAmB,SAAUh/D,GACrD,MAA4B,mBAArBA,EAAKgI,aAAyD,WAArBhI,EAAKgI,aAA4C,QAAhBhI,EAAKpF,OAC/E,eAAkBoF,EAAK++D,YAAc/+D,EAAK,SAAWA,EAAK++D,WAAc,GAE5ED,EAtH2B,I,oCCP/B,IAAIqB,EA4CAC,EAcAC,EAoBAC,EAoBAC,EAvGX,wIAMA,SAAWJ,GAEPA,EAASA,EAAS,QAAU,GAAK,OAEjCA,EAASA,EAAS,UAAY,GAAK,SAEnCA,EAASA,EAAS,WAAa,GAAK,UAEpCA,EAASA,EAAS,gBAAkB,GAAK,eAEzCA,EAASA,EAAS,kBAAoB,GAAK,iBAE3CA,EAASA,EAAS,UAAY,GAAK,SAEnCA,EAASA,EAAS,UAAY,GAAK,SAEnCA,EAASA,EAAS,gBAAkB,GAAK,eAEzCA,EAASA,EAAS,qBAAuB,GAAK,oBAE9CA,EAASA,EAAS,UAAY,GAAK,SAEnCA,EAASA,EAAS,gBAAkB,IAAM,eAE1CA,EAASA,EAAS,iBAAmB,IAAM,gBAE3CA,EAASA,EAAS,gBAAkB,IAAM,eAE1CA,EAASA,EAAS,gBAAkB,IAAM,eAE1CA,EAASA,EAAS,iBAAmB,IAAM,gBAE3CA,EAASA,EAAS,sBAAwB,IAAM,qBAEhDA,EAASA,EAAS,eAAiB,IAAM,cAEzCA,EAASA,EAAS,gBAAkB,IAAM,eApC9C,CAqCGA,IAAaA,EAAW,KAO3B,SAAWC,GAEPA,EAAWA,EAAW,UAAY,GAAK,SAEvCA,EAAWA,EAAW,WAAa,GAAK,UAExCA,EAAWA,EAAW,WAAa,GAAK,UAN5C,CAOGA,IAAeA,EAAa,KAO/B,SAAWC,GACPA,EAAYA,EAAY,OAAS,GAAK,MACtCA,EAAYA,EAAY,QAAU,GAAK,OACvCA,EAAYA,EAAY,UAAY,GAAK,SACzCA,EAAYA,EAAY,UAAY,GAAK,SACzCA,EAAYA,EAAY,UAAY,GAAK,SACzCA,EAAYA,EAAY,SAAW,GAAK,QACxCA,EAAYA,EAAY,UAAY,GAAK,SACzCA,EAAYA,EAAY,iBAAmB,GAAK,gBAChDA,EAAYA,EAAY,aAAe,GAAK,YAC5CA,EAAYA,EAAY,eAAiB,GAAK,cAC9CA,EAAYA,EAAY,aAAe,IAAM,YAC7CA,EAAYA,EAAY,cAAgB,IAAM,aAZlD,CAaGA,IAAgBA,EAAc,KAOjC,SAAWC,GAEPA,EAAuBA,EAAuB,UAAY,GAAK,SAE/DA,EAAuBA,EAAuB,SAAW,GAAK,QAE9DA,EAAuBA,EAAuB,UAAY,GAAK,SAE/DA,EAAuBA,EAAuB,YAAc,GAAK,WAEjEA,EAAuBA,EAAuB,aAAe,GAAK,YAElEA,EAAuBA,EAAuB,mBAAqB,GAAK,kBAZ5E,CAaGA,IAA2BA,EAAyB,KAOvD,SAAWC,GAEPA,EAAwBA,EAAwB,aAAe,GAAK,YAEpEA,EAAwBA,EAAwB,YAAc,GAAK,WAJvE,CAKGA,IAA4BA,EAA0B,M,kCC7GzD,kDAAIjnF,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxCK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAK5Dk6D,EAAW,YACXlV,EAAU,QACVM,EAAc,YACdqgC,EAAiB,gBACjBC,EAAiB,oBACjBxrB,EAAe,cACfyrB,EAAiB,iBACjBC,EAAmB,mBACnBC,EAAiB,eACjBC,EAAmB,kBACnBC,EAAqB,oBACrBvrB,EAAa,kBACbC,EAAc,mBACdurB,EAAgB,sBAChBC,EAAkB,wBAClBrrB,EAAiB,GAajBsrB,EAAyB,SAAUnkF,GAQnC,SAASmkF,EAAQ7jF,EAASC,GACtB,OAAOP,EAAOS,KAAKtD,KAAMmD,EAASC,IAAYpD,KAyZlD,OAjaAX,EAAU2nF,EAASnkF,GAgBnBmkF,EAAQ9mF,UAAU4T,UAAY,WAC1B9T,KAAK47D,QAAU,OAAQlgB,KAAK1rC,KAC5BhQ,KAAK67D,aAAgC,YAAjB77D,KAAK47D,QACzB57D,KAAK2P,SAAW,OAAQA,SACxB3P,KAAK87D,YAAa,EAClB,IAAIxuC,EAAMttB,KAAKoD,QACfpD,KAAK+7D,QAA2B,SAAjB/7D,KAAK47D,SAAuC,SAAjB57D,KAAK47D,QAC/C57D,KAAK2D,aACU,KAAX2pB,EAAIhiB,KACJgiB,EAAIhiB,GAAK,eAAY,WACrBtL,KAAKg8D,UAAW,GAEpB1uC,EAAIvmB,MAAMC,QAAU,QAChBhH,KAAKyF,WACL6nB,EAAIpoB,UAAU4G,IAAI85C,IAS1BohC,EAAQ9mF,UAAUyT,OAAS,WACvB3T,KAAKmU,YAAc,IAAI,OAAMnU,KAAKoD,QAAS,CAAE64D,OAAQj8D,KAAKk8D,aAAat2D,KAAK5F,MAAOmkB,MAAOnkB,KAAKm8D,aAAav2D,KAAK5F,QACjH,OAAa8L,IAAI9L,KAAKkvD,UAAW,SAAUlvD,KAAKinF,mBAAoBjnF,MAC/DA,KAAK2P,UAIN3P,KAAKoD,QAAQ8B,UAAU4G,IAAIwvD,GAC3Bt7D,KAAKknF,qBAAqBlnF,KAAKoD,UAJ/BpD,KAAKq8D,cAAcr8D,KAAKoD,SAM5BpD,KAAKs8D,iBACL,OAAaxwD,IAAI9L,KAAKoD,QAAS,QAASpD,KAAKmnF,kBAAmBnnF,OAEpEgnF,EAAQ9mF,UAAUo8D,eAAiB,WAC3B,eAAkBt8D,KAAKupD,aAAevpD,KAAKupD,WAAa,GACxDvpD,KAAKupD,WAAavpD,KAAKkvD,UAAUzlD,aACjCzJ,KAAK87D,YAAa,GAGlB97D,KAAK87D,YAAa,GAG1BkrB,EAAQ9mF,UAAUyD,WAAa,WAC3B,IAAIyjF,EAAY,eAAS,MAAO,CAAE5iF,UAAWgiF,IACzC5oC,EAAY,eAAS,MAAO,CAAEp5C,UAAW+hF,IAC7C3oC,EAAUjzC,aAAa,WAAY,MAGnC,IAFA,IAAI2iB,EAAMttB,KAAKoD,QACXotD,EAAW,GAAG9iD,MAAMpK,KAAKgqB,EAAI1M,UACxB/S,EAAK,EAAG2uD,EAAahM,EAAU3iD,EAAK2uD,EAAW77D,OAAQkN,IAAM,CAClE,IAAI2+C,EAAQgQ,EAAW3uD,GACvBu5E,EAAU1iF,YAAY8nD,GAE1B5O,EAAUl5C,YAAY0iF,GACtB95D,EAAI5oB,YAAYk5C,GAChBA,EAAU72C,MAAM8nD,SAAW,SAC3B7uD,KAAKkvD,UAAYtR,EACjB59C,KAAK08D,YAAc0qB,GAEvBJ,EAAQ9mF,UAAU6U,eAAiB,WAC/B,IAAIi3B,EAAY,CAAC,cACjB,OAAOhsC,KAAKgV,aAAag3B,IAQ7Bg7C,EAAQ9mF,UAAU4U,cAAgB,WAC9B,MAAO,WAOXkyE,EAAQ9mF,UAAUsS,QAAU,WACxB,IAAIk2C,EAAK1oD,KAAKoD,QACdslD,EAAG3hD,MAAMC,QAAU,GACnB,gBAAY,CAAChH,KAAKoD,SAAU,CAAC03D,EAAUQ,EAAY1V,IACnD,IAAIyhC,EAAO,gBAAU,MAAQ3+B,EAAGp9C,GAAK,QAAUq7E,EAAgBj+B,GAC3D4+B,EAAW,gBAAU,IAAM/rB,EAAa7S,GAC5C,GAAGh7C,MAAMpK,KAAKgkF,GAAU5zC,SAAQ,SAAUpmB,GACtC,eAAOA,MAEX,IAAK,IAAIzf,EAAK,EAAGhK,EAAK,GAAG6J,MAAMpK,KAAKtD,KAAK08D,YAAY97C,UAAW/S,EAAKhK,EAAGlD,OAAQkN,IAAM,CAClF,IAAIk/C,EAAOlpD,EAAGgK,GACd66C,EAAGhkD,YAAYqoD,GAEf/sD,KAAKg8D,UACLh8D,KAAKoD,QAAQwH,gBAAgB,MAEjC,eAAO5K,KAAKkvD,WACRm4B,EAAK1mF,OAAS,IACd,eAAO0mF,EAAK,IACP,eAAkBA,EAAK,KACxB,eAAOA,EAAK,KAGpB,OAAaliF,OAAOnF,KAAKkvD,UAAW,SAAUlvD,KAAKinF,oBACnDjnF,KAAKmU,YAAY3B,UACjBxS,KAAKmU,YAAc,KACnBtR,EAAO3C,UAAUsS,QAAQlP,KAAKtD,OASlCgnF,EAAQ9mF,UAAUysD,QAAU,SAAUl0C,GAClC,IAAI4kD,EAAS,gBAAU,sBAAwBnX,EAAc,IAAKlmD,KAAKoD,SACnEqV,EACAzY,KAAKoD,QAAQ8B,UAAU4G,IAAIo6C,GAG3BlmD,KAAKoD,QAAQ8B,UAAUC,OAAO+gD,GAElC,GAAGx4C,MAAMpK,KAAK+5D,GAAQ3pB,SAAQ,SAAUgV,GACpCA,EAAG/9C,aAAa,WAAa8N,EAAc,KAAN,SAG7CuuE,EAAQ9mF,UAAUgnF,qBAAuB,SAAU9jF,GAC/C,IAAIkI,EAAKlI,EAAQkI,GAAG2jC,OAAO,QACvBs4C,EAAiB,eAAS,MAAO,CAAE/iF,UAAW+2D,EAAc,IAAMwrB,IAClES,EAAU,KAAOpkF,EAAQkI,GAAG2jC,OAAO,QAAU03C,EAAiB,IAAME,GACpEY,EAAU,eAAS,MAAO,CAAEn8E,GAAIA,EAAG2jC,OAAO,QAASzqC,UAAWgjF,IAC9DtzB,EAAU,eAAS,MAAO,CAAE1vD,UAAWkiF,EAAmB,IAAM1rB,EAAe,aACnFysB,EAAQ/iF,YAAYwvD,GACpB,IAAIwzB,EAAQ,eAAS,MAAO,CAAEljF,UAAW+2D,EAAc,IAAMurB,IACzD9mF,KAAK+7D,SACL0rB,EAAQviF,UAAU4G,IAAI,cAE1B1I,EAAQsB,YAAY6iF,GACpBnkF,EAAQsB,YAAY+iF,GACpBrkF,EAAQoiB,aAAakiE,EAAOtkF,EAAQi5C,YACpCr8C,KAAKi9D,aAAa,CAACwqB,KAEvBT,EAAQ9mF,UAAUm8D,cAAgB,SAAUj5D,GACxC,IAAIkI,EAAKlI,EAAQkI,GAAG2jC,OAAO,QACvBu4C,EAAU,KAAOpkF,EAAQkI,GAAG2jC,OAAO,QAAU03C,EAAiB,IAAME,GACpE5yB,EAAM,eAAS,MAAO,CAAE3oD,GAAIA,EAAG2jC,OAAO,SAAUzqC,UAAWgjF,IAC/DvzB,EAAItpD,aAAa,gBAAiB,SAClC,IAAIupD,EAAU,eAAS,MAAO,CAAE1vD,UAAWkiF,EAAmB,IAAM1rB,EAAe,aAC/E2sB,EAAQ,KAAOvkF,EAAQkI,GAAG2jC,OAAO,QAAU03C,EAAiB,IAAMC,GAClEgB,EAAa,eAAS,MAAO,CAAEt8E,GAAIA,EAAG2jC,OAAO,OAAQzqC,UAAWmjF,EAAQ,IAAMzhC,IAClF0hC,EAAWj9E,aAAa,gBAAiB,QACzC,IAAIk9E,EAAY,eAAS,MAAO,CAAErjF,UAAWiiF,EAAiB,IAAMzrB,EAAe,aACnF4sB,EAAWljF,YAAYmjF,GACvB5zB,EAAIvvD,YAAYwvD,GAChBD,EAAItpD,aAAa,WAAY,KAC7BvH,EAAQsB,YAAYuvD,GACpB7wD,EAAQoiB,aAAaoiE,EAAYxkF,EAAQi5C,YACrCr8C,KAAK+7D,UACL9H,EAAI/uD,UAAU4G,IAAI,cAClB87E,EAAW1iF,UAAU4G,IAAI,eAE7B9L,KAAKi9D,aAAa,CAAChJ,EAAK2zB,KAE5BZ,EAAQ9mF,UAAUq9D,WAAa,SAAUuqB,GACrC,IAAIzkF,EAAQrD,KACZ,GAAe,UAAX8nF,EAAGvnF,IAAiB,CACpB,IAAIi9D,EAAe,WACfn6D,EAAMo6D,YAAa,EACnBp6D,EAAMq6D,aAAa,GAAIoqB,EAAGxnF,QAAQ,IAEtCN,KAAK29D,SAAWp3D,OAAO6G,YAAW,WAC9BowD,MACD,OAGXwpB,EAAQ9mF,UAAU09D,QAAU,SAAUkqB,GACnB,UAAXA,EAAGvnF,MAGHP,KAAKy9D,WACLz9D,KAAKy9D,YAAa,EAGlBqqB,EAAGxnF,OAAO20B,QAEdnoB,aAAa9M,KAAK29D,YAEtBqpB,EAAQ9mF,UAAU+8D,aAAe,SAAU75D,GACvC,IAAIC,EAAQrD,KACZ,GAAG0N,MAAMpK,KAAKF,GAASswC,SAAQ,SAAUpmB,GACrC,IAAI,OAAMA,EAAK,CAAEjZ,QAAShR,EAAMw6D,eAAej4D,KAAKvC,GAAQ+Q,iBAAkB,MAC9EkZ,EAAIurB,iBAAiB,UAAWx1C,EAAMk6D,WAAW33D,KAAKvC,IACtDiqB,EAAIurB,iBAAiB,QAASx1C,EAAMu6D,QAAQh4D,KAAKvC,IACjDiqB,EAAIurB,iBAAiB,UAAWx1C,EAAMy6D,aAAal4D,KAAKvC,IACxDiqB,EAAIurB,iBAAiB,WAAYx1C,EAAMy6D,aAAal4D,KAAKvC,IACzDiqB,EAAIurB,iBAAiB,eAAe,SAAU1rC,GAC1CA,EAAE+F,oBAEN,OAAapH,IAAIwhB,EAAK,QAASjqB,EAAM06D,kBAAmB16D,OAGhE2jF,EAAQ9mF,UAAU49D,aAAe,WAC7BE,cAAch+D,KAAKi+D,UAEvB+oB,EAAQ9mF,UAAU29D,eAAiB,SAAUiqB,GACzC,IAAIzkF,EAAQrD,KACR0rD,EAAOo8B,EAAG76E,cAAc3M,OAC5BorD,EAAO1rD,KAAKqG,SAASqlD,EAAMi7B,GAAkBj7B,EAAKjqC,kBAAoBiqC,EACtE,IAAIq8B,EAAiB,GACjB5pB,EAAa,WACb96D,EAAMq6D,aAAaqqB,EAAgBr8B,GAAM,IAE7C1rD,KAAKi+D,QAAU13D,OAAO63D,aAAY,WAC9BD,MACD,KAEP6oB,EAAQ9mF,UAAUmG,SAAW,SAAUjD,EAASoB,GAC5C,OAAOpB,EAAQ8B,UAAUmB,SAAS7B,IAEtCwiF,EAAQ9mF,UAAUw9D,aAAe,SAAUQ,EAAWxS,EAAM2S,GACxD,IAAIn5D,EAAYwmD,EAAKxmD,UACjBA,EAAUmB,SAASsgF,KACnBzhF,EAAYwmD,EAAKx/C,cAAc,IAAM8uD,GAAc91D,WAEnDA,EAAUmB,SAASqgF,GACnB1mF,KAAKs+D,mBAAmBJ,EAAW,MAAOG,GAErCn5D,EAAUmB,SAASogF,IACxBzmF,KAAKs+D,mBAAmBJ,EAAW,GAAIG,IAG/C2oB,EAAQ9mF,UAAU69D,kBAAoB,SAAUrvD,GAC5C1O,KAAK09D,aAAa19D,KAAKupD,WAAY76C,EAAMpO,QAAQ,IAErD0mF,EAAQ9mF,UAAUinF,kBAAoB,SAAUh6E,GAC5CA,EAAE+F,iBACFlT,KAAKs+D,mBAAmBt+D,KAAKupD,WAAap8C,EAAE66E,OAAS,EAAI,MAAQ,IAAK,IAE1EhB,EAAQ9mF,UAAUi8D,aAAe,SAAUhvD,GACvC,IACIoxD,EADA0pB,EAAejoF,KAAKkvD,UAGpBqP,EADApxD,EAAEsxD,UAAY,EACHtxD,EAAE+6E,WAA0B,GAAb/6E,EAAEsxD,UAGjBtxD,EAAE+6E,UAAY/6E,EAAEsxD,SAE/B,IAAIv8C,EAAQ,GACRy8C,EAAU,WACV,IAAIvwC,EAAOjlB,KAAKy1D,IAAI18C,GAChBkM,GAAQ,EACR7nB,OAAOs4D,qBAAqBzwC,IAGH,OAArBjhB,EAAEwX,eACFsjE,EAAah3E,WAAastD,EAAWnwC,EAEX,SAArBjhB,EAAEwX,iBACPsjE,EAAah3E,WAAastD,EAAWnwC,GAEzClM,GAAS,IACT3b,OAAOu4D,sBAAsBH,KAGrCA,KAEJqoB,EAAQ9mF,UAAU6+D,eAAiB,SAAUzM,EAAW3xC,GACrC,QAAXA,EACA3gB,KAAKkvD,UAAUj+C,WAAaqhD,EAG5BtyD,KAAKkvD,UAAUj+C,WAAaqhD,GAGpC00B,EAAQ9mF,UAAUo+D,mBAAqB,SAAUU,EAAar+C,EAAQ09C,GAClE,IAAIh7D,EAAQrD,KACRouB,EAAO,GACX,GAAIiwC,EACAr+D,KAAK++D,eAAeC,EAAar+C,OADrC,CAIK3gB,KAAK87D,YACN,GAAGpuD,MAAMpK,KAAK,gBAAU,IAAMi4D,EAAav7D,KAAKoD,UAAUswC,SAAQ,SAAUgV,GACxEsW,GAAetW,EAAGj/C,gBAG1B,IAAIk1D,EAAU,WACNK,EAAc5wC,EACd7nB,OAAOs4D,qBAAqBzwC,IAG5B/qB,EAAM07D,eAAe3wC,EAAMzN,GAC3Bq+C,GAAe5wC,EACf7nB,OAAOu4D,sBAAsBH,KAGrCA,MAEJqoB,EAAQ9mF,UAAUg8D,aAAe,SAAU/uD,GACvC,IAAIu7C,EAAK1oD,KAAKkvD,UACVqP,EAAWpxD,EAAE+6E,UACS,OAAtB/6E,EAAE8xD,gBACFvW,EAAGz3C,UAAYy3C,EAAGz3C,UAAYstD,EAEH,SAAtBpxD,EAAE8xD,kBACPvW,EAAGz3C,UAAYy3C,EAAGz3C,UAAYstD,IAGtCyoB,EAAQ9mF,UAAUg/D,eAAiB,SAAUipB,EAAeC,GACxD,GAAIpoF,KAAK2P,SAAU,CACf,IAAI9G,EAAW,eAAkBs/E,GAAiBC,EAAmBD,EACjE9oB,EAAYx2D,EAASqD,cAAc,IAAM8uD,GACzC,eAAkBmtB,GAClB,eAAU9oB,EAAW,CAACqnB,GAAmB,CAACD,IAG1C,eAAUpnB,EAAW,CAAConB,GAAiB,CAACC,SAI5CyB,EAAcjjF,UAAU4G,IAAIo6C,GAC5BiiC,EAAcx9E,aAAa,gBAAiB,QAC5Cw9E,EAAcv9E,gBAAgB,YAC9Bw9E,EAAiBljF,UAAUC,OAAO+gD,GAClCkiC,EAAiBz9E,aAAa,gBAAiB,SAC/Cy9E,EAAiBz9E,aAAa,WAAY,KAE9C3K,KAAK89D,gBAETkpB,EAAQ9mF,UAAU+mF,mBAAqB,SAAU95E,GAC7C,IAAI7M,EAAS6M,EAAE7M,OACX+E,EAAS/E,EAAOmJ,aAChB4+E,EAAWroF,KAAKoD,QAAQ8I,cAAc,IAAM06E,GAC5C0B,EAAatoF,KAAKoD,QAAQ8I,cAAc,IAAM26E,GAC9C0B,EAAYvoF,KAAKoD,QAAQ8I,cAAc,IAAM46E,GAC7C0B,EAAcxoF,KAAKoD,QAAQ8I,cAAc,IAAM66E,GAC/C91E,EAAY3Q,EAAO2Q,UAkBvB,GAjBIA,GAAa,IACbA,GAAaA,GAEbjR,KAAK2P,WAED44E,EAAUxhF,MAAM1B,OADhB4L,EAAYyqD,EACazqD,EAAY,KAGZ,OAExB3Q,EAAO29C,aAAe90C,KAAK2kC,KAAKzoC,EAAS4L,GAAcyqD,EACxD8sB,EAAYzhF,MAAM1B,OAAU/E,EAAO29C,aAAe90C,KAAK2kC,KAAKzoC,EAAS4L,GAAc,KAGnFu3E,EAAYzhF,MAAM1B,OAAS,QAGjB,IAAd4L,EACAjR,KAAKk/D,eAAempB,EAAUC,QAE7B,GAAIn/E,KAAK2kC,KAAKzoC,EAAS4L,EAAY,KAAO3Q,EAAO29C,aAClDj+C,KAAKk/D,eAAeopB,EAAYD,OAE/B,CACD,IAAI3oB,EAAS1/D,KAAKoD,QAAQ8I,cAAc,IAAMy6E,EAAiB,IAAMzgC,GACjEwZ,IACAA,EAAOx6D,UAAUC,OAAO+gD,GACxBwZ,EAAO/0D,aAAa,gBAAiB,SACrC+0D,EAAO/0D,aAAa,WAAY,QAY5Cq8E,EAAQ9mF,UAAU+U,kBAAoB,SAAUC,EAASC,GACrD,IAAK,IAAItH,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKF,GAAUrH,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC9D,IAAIwH,EAAOxR,EAAGgK,GACd,OAAQwH,GACJ,IAAK,aACDrV,KAAKs8D,iBACL,MACJ,IAAK,YACGpnD,EAAQzP,UACRzF,KAAKoD,QAAQ8B,UAAU4G,IAAI85C,GAG3B5lD,KAAKoD,QAAQ8B,UAAUC,OAAOygD,GAElC,SAIhBxlD,EAAW,CACP,eAAS,OACV4mF,EAAQ9mF,UAAW,kBAAc,GACpC8mF,EAAU5mF,EAAW,CACjB,QACD4mF,GACIA,EAlaiB,CAma1B,S,oCCrdF,sCA4CWyB,EA5CX,YAAIppF,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxCK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAUrDyyE,EAAQ,CAEfqV,MAAO,IAAIxwB,OAAO,mHAGlBywB,IAAK,kFACLC,SAAU,IAAI1wB,OAAO,2DACrB2wB,OAAQ,IAAI3wB,OAAO,YACnB4wB,MAAO,IAAI5wB,OAAO,qBAClB6wB,WAAY,IAAI7wB,OAAO,kBAS3B,SAAWuwB,GAIPA,EAAYA,EAAY,WAAa,GAAK,UAI1CA,EAAYA,EAAY,SAAW,GAAK,SAR5C,CASGA,IAAgBA,EAAc,KAgBjC,IAAIO,EAA+B,SAAUnmF,GASzC,SAASmmF,EAAc5lF,EAASD,GAC5B,IAAIE,EAAQR,EAAOS,KAAKtD,KAAMmD,EAASC,IAAYpD,KA6CnD,GA5CAqD,EAAM4lF,UAAY,GAClB5lF,EAAM6lF,WAAa,GACnB7lF,EAAM8lF,aAAc,EACpB9lF,EAAM+lF,SAAW,WACjB/lF,EAAMgmF,YAAc,KACpBhmF,EAAM2U,aAAe,KACrB3U,EAAMimF,YAAc,+DAEpBjmF,EAAMkmF,cAAgB,GAMtBlmF,EAAMmmF,gBAAkB,CACpBJ,SAAU,0BACVK,MAAO,sCACPrsD,IAAK,4BACLta,KAAM,6BACN4mE,QAAS,qCACTC,WAAY,iCACZpkD,OAAQ,+BACRqkD,OAAQ,4BACRC,UAAW,4CACXC,UAAW,wCACXC,YAAa,4DACblO,MAAO,4CACPxiE,IAAK,kDACLoD,IAAK,qDACL42D,MAAO,gCACP2W,IAAK,qCACLjnE,QAAS,wCACTknE,QAAS,qCAEc,qBAAhB5mF,EAAM6mF,QACb7mF,EAAM6mF,MAAQ,IAElB7mF,EAAMoX,KAAO,IAAI,OAAK,gBAAiBpX,EAAMmmF,gBAAiBnmF,EAAMmX,QAChEnX,EAAMmX,QACNnX,EAAM8mF,aAEV,QAAap7D,GAAG,uBAAwB1rB,EAAM+mF,kBAAmB/mF,GACjED,EAA6B,kBAAZA,EAAuB,gBAAOA,EAASwK,UAAYxK,EAE/C,MAAjBC,EAAMD,QASV,OARIC,EAAMD,QAAQuH,aAAa,aAAc,IACzCtH,EAAMgnF,cAAgB,gBAAUhnF,EAAMimF,YAAajmF,EAAMD,SACzDC,EAAMinF,mBACNjnF,EAAMuQ,aAKHvQ,EA4oBX,IAAIknF,EAuIJ,OAl1BAlrF,EAAU2pF,EAAenmF,GAiEzB0nF,EAAkBvB,EASlBA,EAAc9oF,UAAUsqF,SAAW,SAAUx6E,EAAMk6E,GAC3Cl6E,IAEIhQ,KAAKkqF,MAAMpqF,eAAekQ,GAC1B,eAAOhQ,KAAKkqF,MAAM,GAAKl6E,GAAOk6E,EAAO,IAGrClqF,KAAKkqF,MAAM,GAAKl6E,GAAQk6E,IAYpClB,EAAc9oF,UAAUuqF,YAAc,SAAUz6E,EAAMk6E,GAClD,GAAKl6E,GAASk6E,EAGT,GAAIlqF,KAAKkqF,MAAM,GAAKl6E,KAAUk6E,SACxBlqF,KAAKkqF,MAAM,GAAKl6E,OAEtB,IAAK,eAAkBhQ,KAAKkqF,MAAM,GAAKl6E,IAASk6E,GAMjD,OALA,IAAK,IAAIlpF,EAAI,EAAGA,EAAIkpF,EAAMvpF,OAAQK,WACvBhB,KAAKkqF,MAAM,GAAKl6E,GAAMk6E,EAAMv4E,SAAS3Q,EAAE4Q,mBAPlD5R,KAAKkqF,MAAQ,IAsBrBlB,EAAc9oF,UAAUsnE,SAAW,SAAUpiB,GACzC,IAAI8kC,EAAQzqF,OAAO2V,KAAKpV,KAAKkqF,OAC7B,GAAI9kC,GAAY8kC,EAAMvpF,OAGlB,OAFAX,KAAK0qF,cAActlC,IAEiB,IAA7B8kC,EAAMlmF,QAAQohD,IAEP,IAF2BplD,KAAKkpF,WAAWj1D,QAAO,SAAUpI,GACtE,OAAOA,EAAK7b,OAASo1C,KACtBzkD,OAGHX,KAAKkpF,WAAa,GAClB,IAAK,IAAIr7E,EAAK,EAAG88E,EAAUT,EAAOr8E,EAAK88E,EAAQhqF,OAAQkN,IAAM,CACzD,IAAI+8E,EAASD,EAAQ98E,GACrB7N,KAAK0qF,cAAcE,GAEvB,OAAkC,IAA3B5qF,KAAKkpF,WAAWvoF,QAS/BqoF,EAAc9oF,UAAU2qF,MAAQ,WAC5B7qF,KAAKoD,QAAQynF,QACb7qF,KAAK8qF,aAST9B,EAAc9oF,UAAU6qF,gBAAkB,SAAU/6E,GAEhD,OADAhQ,KAAKgY,aAAgB,eAAD,CAAQ,UAAYhI,EAAO,KAAMhQ,KAAKoD,SACnDpD,KAAKgY,cAQhBgxE,EAAc9oF,UAAUsS,QAAU,WAC9BxS,KAAK6qF,QACL7qF,KAAKyU,eACLzU,KAAKkqF,MAAQ,GAEb,IADA,IAAIp/C,EAAW,gBAAU,IAAM9qC,KAAK2c,WAAa,MAAQ3c,KAAKgrF,WAAYhrF,KAAKoD,SACtEyK,EAAK,EAAGo9E,EAAangD,EAAUj9B,EAAKo9E,EAAWtqF,OAAQkN,IAAM,CAClE,IAAIzK,EAAU6nF,EAAWp9E,GACzB,eAAOzK,GAEXP,EAAO3C,UAAUsS,QAAQlP,KAAKtD,MAC9BA,KAAKqpF,YAAc,KACnB,QAAah1D,IAAI,uBAAwBr0B,KAAKoqF,oBASlDpB,EAAc9oF,UAAU+U,kBAAoB,SAAUC,EAASC,GAC3D,IAAK,IAAItH,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKF,GAAUrH,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC9D,IAAIwH,EAAOxR,EAAGgK,GACd,OAAQwH,GACJ,IAAK,SACDrV,KAAKmqF,aACL,SAQhBnB,EAAc9oF,UAAUiqF,WAAa,WACjC,IAAK,IAAIt8E,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKpV,KAAKwpF,iBAAkB37E,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC3E,IAAItN,EAAMsD,EAAGgK,GACb7N,KAAKya,KAAK4P,UAAUrqB,KAAKwa,QACzB,IAAI/B,EAAQzY,KAAKya,KAAKC,YAAYna,GAClCP,KAAKupF,cAAc,GAAKhpF,GAAOkY,IAOvCuwE,EAAc9oF,UAAU4U,cAAgB,WACpC,MAAO,iBAOXk0E,EAAc9oF,UAAUkqF,kBAAoB,SAAUrkE,GAClD/lB,KAAKwa,OAASuL,EAAKvL,OACnBxa,KAAKmqF,cAOTnB,EAAc9oF,UAAUoV,QAAU,WAC9BtV,KAAKyU,eACLzU,KAAKqqF,cAAgB,gBAAUrqF,KAAKspF,YAAatpF,KAAKoD,SACtDpD,KAAK4T,cAETo1E,EAAc9oF,UAAU4qF,UAAY,WAChC9qF,KAAKkpF,WAAa,GAClBlpF,KAAKipF,UAAY,GAEjB,IADA,IAAIn+C,EAAW,gBAAU9qC,KAAKspF,YAAatpF,KAAKoD,SACvCyK,EAAK,EAAGq9E,EAAapgD,EAAUj9B,EAAKq9E,EAAWvqF,OAAQkN,IAAM,CAClE,IAAIzK,EAAU8nF,EAAWr9E,GACrBolC,EAAQ7vC,EACZ6vC,EAAMroC,gBAAgB,gBACtB,IAAIugF,EAAcl4C,EAAMtxB,cACpBypE,EAAcD,EAAYxpE,cAC1BwpE,EAAYjmF,UAAUmB,SAAS,sBAAwB8kF,EAAYjmF,UAAUmB,SAAS,cAAiB4sC,EAAM/tC,UAAUmB,SAAS,YAAc8kF,EAAYjmF,UAAUmB,SAAS,iBAC7K8kF,EAAYjmF,UAAUC,OAAOnF,KAAK2c,YAEb,MAAfyuE,IAAyBA,EAAYlmF,UAAUmB,SAAS,sBAAwB+kF,EAAYlmF,UAAUmB,SAAS,cACrH+kF,EAAYlmF,UAAUC,OAAOnF,KAAK2c,YAGlCs2B,EAAM/tC,UAAUC,OAAOnF,KAAK2c,YAE5Bs2B,EAAMjjC,KAAKrP,OAAS,IACpBX,KAAK+qF,gBAAgB93C,EAAMjjC,MAC3BhQ,KAAKqrF,gBAAgBp4C,EAAMjjC,MAC3BhQ,KAAKsrF,YAAYr4C,EAAMjjC,OAEvBm7E,EAAYjmF,UAAUmB,SAAS,sBAAwB8kF,EAAYjmF,UAAUmB,SAAS,cAAiB4sC,EAAM/tC,UAAUmB,SAAS,YAAc8kF,EAAYjmF,UAAUmB,SAAS,iBAC7K8kF,EAAYjmF,UAAUC,OAAOnF,KAAKgrF,YAEb,MAAfI,IAAyBA,EAAYlmF,UAAUmB,SAAS,sBAAwB+kF,EAAYlmF,UAAUmB,SAAS,cACrH+kF,EAAYlmF,UAAUC,OAAOnF,KAAKgrF,YAGlC/3C,EAAM/tC,UAAUC,OAAOnF,KAAKgrF,cAIxChC,EAAc9oF,UAAUoqF,iBAAmB,WAMvC,IALA,IAAIiB,EAAW,CAAC,WAAY,iBAAkB,QAAS,cAAe,YAAa,YAAa,UAAW,SACvG,UAAW,oBAAqB,OAAQ,kBAAmB,MAAO,MAAO,QAAS,UAAW,yBAC7F,yBAA0B,yBAA0B,qBAAsB,yBAA0B,sBACpG,sBAAuB,kBACvBC,EAAgB,CAAC,SAAU,QAAS,MAAO,OAAQ,SAAU,OACxD39E,EAAK,EAAGhK,EAAM7D,KAAkB,cAAG6N,EAAKhK,EAAGlD,OAAQkN,IAAM,CAI9D,IAHA,IAAIolC,EAAQpvC,EAAGgK,GAEX49E,EAAU,GACL3nF,EAAK,EAAG4nF,EAAaH,EAAUznF,EAAK4nF,EAAW/qF,OAAQmD,IAAM,CAClE,IAAI6nF,EAAOD,EAAW5nF,GACtB,GAAiC,OAA7BmvC,EAAMvoC,aAAaihF,GACnB,OAAQA,GACJ,IAAK,WACD3rF,KAAK4rF,QAAQ34C,EAAOw4C,EAASE,EAAM14C,EAAMm2C,UACzC,MACJ,IAAK,kBACDuC,EAAO14C,EAAMvoC,aAAaihF,GAC1B3rF,KAAK4rF,QAAQ34C,EAAOw4C,EAASE,GAAM,GACnC,MACJ,IAAK,QAC0C,IAAvCH,EAAcxnF,QAAQivC,EAAMzkC,OAC5BxO,KAAK4rF,QAAQ34C,EAAOw4C,EAASx4C,EAAMzkC,MAAM,GAE7C,MACJ,IAAK,cACL,IAAK,QACDxO,KAAK4rF,QAAQ34C,EAAOw4C,EAASE,EAAMjuD,KAAKC,MAAMsV,EAAMvoC,aAAaihF,KACjE,MACJ,IAAK,UAEG,IAAIrgF,EAAK2nC,EAAMvoC,aAAaihF,GAC5B3rF,KAAK4rF,QAAQ34C,EAAOw4C,EAASE,EAAMrgF,GAEvC,MACJ,QAC2C,SAAnC2nC,EAAMvoC,aAAa,YACnB1K,KAAK6rF,eAAe54C,EAAOw4C,EAASE,EAAM14C,EAAMvoC,aAAaihF,IAG7D3rF,KAAK4rF,QAAQ34C,EAAOw4C,EAASE,EAAM14C,EAAMvoC,aAAaihF,KAMtC,IAAhClsF,OAAO2V,KAAKq2E,GAAS9qF,QACrBX,KAAKwqF,SAASv3C,EAAMjjC,KAAMy7E,KAItCzC,EAAc9oF,UAAU2rF,eAAiB,SAAU54C,EAAO64C,EAASC,EAAUtzE,GACzE,IAAIozE,EAAiBE,EAAS9nF,MAAM,KAChC+nF,EAAY,CAAC,WAAY,aAAc,QAAS,YAAa,YAAa,QAAS,QAAS,WAC5FC,EAAgBJ,EAAeA,EAAelrF,OAAS,GACvDurF,EAAiBL,EAAeA,EAAelrF,OAAS,GAC5D,IAA0C,IAAtCqrF,EAAUhoF,QAAQioF,GAClB,OAAQA,GACJ,IAAK,WACDjsF,KAAK4rF,QAAQ34C,EAAO64C,EAAS,WAAYrzE,GACzC,MACJ,IAAK,aACDzY,KAAK4rF,QAAQ34C,EAAO64C,EAAS,aAAcrzE,GAC3C,MACJ,IAAK,QACDzY,KAAK4rF,QAAQ34C,EAAO64C,EAAS,MAAOrzE,GACpC,WAGP,IAA2C,IAAvCuzE,EAAUhoF,QAAQkoF,GACvB,OAAQA,GACJ,IAAK,YACDlsF,KAAK4rF,QAAQ34C,EAAO64C,EAAS,YAAarzE,GAC1C,MACJ,IAAK,YACDzY,KAAK4rF,QAAQ34C,EAAO64C,EAAS,YAAarzE,GAC1C,MACJ,IAAK,QAEG,IAAI0zE,EAAWl5C,EAAMvoC,aAAa,sBAC9B0hF,EAAWn5C,EAAMvoC,aAAa,sBAClC1K,KAAK4rF,QAAQ34C,EAAO64C,EAAS,QAAS,CAACK,EAAUC,IAErD,MACJ,IAAK,UAEG,IAAI9gF,EAAK2nC,EAAMvoC,aAAaqhF,GAAU9nF,MAAM,KAC5CjE,KAAK4rF,QAAQ34C,EAAO64C,EAAS,UAAWxgF,EAAGA,EAAG3K,OAAS,IAE3D,MACJ,IAAK,QACDX,KAAK4rF,QAAQ34C,EAAO64C,EAAS,QAASrzE,GACtC,QAIhBuwE,EAAc9oF,UAAU0rF,QAAU,SAAU34C,EAAO64C,EAASC,EAAUtzE,GAClE,IAEI4zE,EAFAC,EAAUr5C,EAAMvoC,aAAa,QAAUqhF,EAAW,YAClDQ,EAAoBt5C,EAAMvoC,aAAa,YAAcqhF,GAErD/rF,KAAKkqF,MAAMj3C,EAAMjjC,OAAsB,mBAAb+7E,GAA8C,WAAbA,IAC3D/rF,KAAK+qF,gBAAgB93C,EAAMjjC,MAC3Bq8E,EAAgBrsF,KAAKwsF,gBAAgBxsF,KAAKkqF,MAAMj3C,EAAMjjC,MAAM,GAAK+7E,GAAWA,IAE5EO,EACA7zE,EAAQ,CAACA,EAAO6zE,GAEXC,EACL9zE,EAAQ,CAACA,EAAO8zE,GAEXF,IACL5zE,EAAQ,CAACA,EAAO4zE,IAEpBP,EAAQ,GAAKC,GAAYtzE,GAG7BuwE,EAAc9oF,UAAU0T,WAAa,WACjC,IAAK,IAAI/F,EAAK,EAAGhK,EAAM7D,KAAkB,cAAG6N,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC9D,IAAIolC,EAAQpvC,EAAGgK,GACX08E,EAAgBkC,YAAYx5C,GAC5B,OAAannC,IAAImnC,EAAO,QAASjzC,KAAKsoC,aAActoC,MAE7B,WAAlBizC,EAAMvjC,QACX,OAAa5D,IAAImnC,EAAO,SAAUjzC,KAAKqwC,cAAerwC,OAGtD,OAAa8L,IAAImnC,EAAO,WAAYjzC,KAAK6zC,gBAAiB7zC,MAC1D,OAAa8L,IAAImnC,EAAO,QAASjzC,KAAKy0C,aAAcz0C,OAG5D,OAAa8L,IAAI9L,KAAKoD,QAAS,SAAUpD,KAAK0sF,cAAe1sF,MAC7D,OAAa8L,IAAI9L,KAAKoD,QAAS,QAASpD,KAAKoe,aAAcpe,OAG/DgpF,EAAc9oF,UAAUuU,aAAe,WACnC,IAAK,IAAI5G,EAAK,EAAGhK,EAAM7D,KAAkB,cAAG6N,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC9D,IAAIolC,EAAQpvC,EAAGgK,GACf,OAAa8+E,YAAY15C,GAE7B,OAAa9tC,OAAOnF,KAAKoD,QAAS,SAAUpD,KAAK0sF,eACjD,OAAavnF,OAAOnF,KAAKoD,QAAS,QAASpD,KAAKoe,eAGpD4qE,EAAc9oF,UAAU2zC,gBAAkB,SAAU1mC,GAChDnN,KAAKiI,QAAQ,WAAYkF,GAEzB,IAAI/J,EAAU+J,EAAE7M,OACZN,KAAKkqF,MAAM9mF,EAAQ4M,QACfhQ,KAAKkqF,MAAM9mF,EAAQ4M,MAAMhQ,KAAKopF,WAAahmF,EAAQqV,MAAM9X,OAAS,EAClEX,KAAKwnE,SAASpkE,EAAQ4M,OAEyB,IAA1ChQ,KAAKipF,UAAUjlF,QAAQZ,EAAQ4M,OACpChQ,KAAKipF,UAAU58E,KAAKjJ,EAAQ4M,QAKxCg5E,EAAc9oF,UAAUu0C,aAAe,SAAUtnC,GAC7CnN,KAAKiI,QAAQ,QAASkF,GACtB,IAAI/J,EAAU+J,EAAE7M,OAEZssF,EAAc,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,MACpD,IAAZz/E,EAAE0/E,OAAiB7sF,KAAKkqF,MAAM9mF,EAAQ4M,SAAUhQ,KAAKkqF,MAAM9mF,EAAQ4M,OAAUhQ,KAAKkqF,MAAM9mF,EAAQ4M,MAAMhQ,KAAKopF,cAGjE,IAA1CppF,KAAKipF,UAAUjlF,QAAQZ,EAAQ4M,OAAgBhQ,KAAKkqF,MAAM9mF,EAAQ4M,QAA2C,IAAlC48E,EAAY5oF,QAAQmJ,EAAE0/E,QACjG7sF,KAAKwnE,SAASpkE,EAAQ4M,OAI9Bg5E,EAAc9oF,UAAUooC,aAAe,SAAUn7B,GAC7CnN,KAAKiI,QAAQ,QAASkF,GACtB,IAAI/J,EAAU+J,EAAE7M,OAEK,WAAjB8C,EAAQoL,KACRxO,KAAKwnE,SAASpkE,EAAQ4M,MAE0B,OAA3C5M,EAAQsH,aAAa,oBAE1B1K,KAAKmpF,aAAc,IAI3BH,EAAc9oF,UAAUmwC,cAAgB,SAAUljC,GAC9CnN,KAAKiI,QAAQ,SAAUkF,GACvB,IAAI/J,EAAU+J,EAAE7M,OAChBN,KAAKwnE,SAASpkE,EAAQ4M,OAG1Bg5E,EAAc9oF,UAAUwsF,cAAgB,SAAUv/E,GAC9CnN,KAAKiI,QAAQ,SAAUkF,GAGlBnN,KAAKmpF,aAAgBnpF,KAAKwnE,WAI3BxnE,KAAKmpF,aAAc,EAHnBh8E,EAAE+F,kBAOV81E,EAAc9oF,UAAUke,aAAe,WACnCpe,KAAK8qF,aAGT9B,EAAc9oF,UAAUwqF,cAAgB,SAAU16E,GAC9C,GAAKhQ,KAAKkqF,MAAM,GAAKl6E,GAArB,CAGA,IAAIk6E,EAAQzqF,OAAO2V,KAAKpV,KAAKkqF,MAAM,GAAKl6E,IACpC88E,GAAa,EACbC,GAAqB,EACrBC,EAAQ9C,EAAMlmF,QAAQ,kBACtBipF,EAAO/C,EAAMlmF,QAAQ,UAQzB,GAPAhE,KAAK+qF,gBAAgB/6E,IACP,IAAVi9E,IACAH,GAAa,IAEF,IAAXE,IACAD,GAAqB,IAEpBD,GAAeA,GAAcC,EAAlC,EACmB,IAAXC,GACA9C,EAAMx9E,OAAOsgF,EAAO,IAEV,IAAVC,GACA/C,EAAMx9E,OAAQugF,EAAO,EAAI,GAE7BjtF,KAAKqrF,gBAAgBr7E,GACrB,IAAK,IAAInC,EAAK,EAAGq/E,EAAUhD,EAAOr8E,EAAKq/E,EAAQvsF,OAAQkN,IAAM,CACzD,IAAI89E,EAAOuB,EAAQr/E,GACfs/E,EAAentF,KAAKwsF,gBAAgBxsF,KAAKkqF,MAAM,GAAKl6E,GAAM,GAAK27E,GAAOA,GACtEyB,EAAY,CAAEp9E,KAAMA,EAAMs8E,QAASa,GACnC7mE,EAAY,CACZ+mE,UAAWr9E,EACX5M,QAASpD,KAAKgY,aACds0E,QAASa,GAEb,IAAKntF,KAAKstF,QAAQt9E,EAAM27E,KAAU3rF,KAAKgY,aAAa9S,UAAUmB,SAASrG,KAAKutF,QAAS,CACjFvtF,KAAKwtF,iBAAiBx9E,GACtBhQ,KAAKkpF,WAAW78E,KAAK+gF,GAErBptF,KAAKgY,aAAarN,aAAa,eAAgB,QAC/C3K,KAAKgY,aAAarN,aAAa,mBAAoB3K,KAAKgY,aAAa1M,GAAK,SAC1E,IAAI6/E,EAAcnrF,KAAKgY,aAAa2J,cAChCypE,EAAcD,EAAYxpE,cAC1BwpE,EAAYjmF,UAAUmB,SAAS,sBAAwB8kF,EAAYjmF,UAAUmB,SAAS,cAAiBrG,KAAKgY,aAAa9S,UAAUmB,SAAS,YAAc8kF,EAAYjmF,UAAUmB,SAAS,kBACzL8kF,EAAYjmF,UAAU4G,IAAI9L,KAAK2c,YAC/BwuE,EAAYjmF,UAAUC,OAAOnF,KAAKgrF,aAEb,MAAfI,IAAyBA,EAAYlmF,UAAUmB,SAAS,sBAAwB+kF,EAAYlmF,UAAUmB,SAAS,eACrH+kF,EAAYlmF,UAAU4G,IAAI9L,KAAK2c,YAC/ByuE,EAAYlmF,UAAUC,OAAOnF,KAAKgrF,cAGlChrF,KAAKgY,aAAa9S,UAAU4G,IAAI9L,KAAK2c,YACrC3c,KAAKgY,aAAa9S,UAAUC,OAAOnF,KAAKgrF,aAEvChrF,KAAKqpF,YAINrpF,KAAKytF,YAAYL,GAHjBptF,KAAK0tF,mBAAmB19E,EAAMo9E,EAAUd,QAAStsF,KAAKgY,cAK1DsO,EAAUqnE,aAAe3tF,KAAKqpF,YAC9B/iE,EAAUsnE,OAAS,UACfzC,EAAYjmF,UAAUmB,SAAS,sBAAwB8kF,EAAYjmF,UAAUmB,SAAS,cAAiBrG,KAAKgY,aAAa9S,UAAUmB,SAAS,YAAc8kF,EAAYjmF,UAAUmB,SAAS,kBACzL8kF,EAAYjmF,UAAU4G,IAAI9L,KAAK2c,YAC/BwuE,EAAYjmF,UAAUC,OAAOnF,KAAKgrF,aAEb,MAAfI,IAAyBA,EAAYlmF,UAAUmB,SAAS,sBAAwB+kF,EAAYlmF,UAAUmB,SAAS,eACrH+kF,EAAYlmF,UAAU4G,IAAI9L,KAAK2c,YAC/ByuE,EAAYlmF,UAAUC,OAAOnF,KAAKgrF,cAGlChrF,KAAKgY,aAAa9S,UAAU4G,IAAI9L,KAAK2c,YACrC3c,KAAKgY,aAAa9S,UAAUC,OAAOnF,KAAKgrF,aAE5ChrF,KAAK6tF,yBAAyB79E,EAAMsW,GACpCtmB,KAAKiI,QAAQ,qBAAsBqe,GAEtB,aAATqlE,GACA3rF,KAAKgY,aAAarN,aAAa,gBAAiB,QAEpD,MAGA3K,KAAKsrF,YAAYt7E,GACjBsW,EAAUsnE,OAAS,UACnB5tF,KAAKiI,QAAQ,qBAAsBqe,OASnD0iE,EAAc9oF,UAAU2tF,yBAA2B,SAAU79E,EAAM89E,GAC1D9tF,KAAKkqF,MAAM,GAAKl6E,GAAMhQ,KAAKopF,WAAcppF,KAAKgY,aAAaS,MAAM9X,QAAW,eAAkBX,KAAKqpF,eACpGrpF,KAAKqpF,YAAYv+E,UAAY9K,KAAKgY,aAAaS,MAC/CzY,KAAKqpF,YAAY1+E,aAAa,eAAgB,SAC9CmjF,EAAMF,OAAS,GACf5tF,KAAKsrF,YAAYt7E,KAIzBg5E,EAAc9oF,UAAUotF,QAAU,SAAUt9E,EAAM27E,GAC9C,IAAI16D,EAASjxB,KAAKkqF,MAAM,GAAKl6E,GAAM,GAAK27E,GACpCoC,EAAS98D,aAAkBrxB,OAA8B,kBAAdqxB,EAAO,GAAmBA,EAAO,GAAKA,EACjF+8D,EAAchuF,KAAKkqF,MAAM,GAAKl6E,GAAM,GAAK27E,GACzC5lE,EAAO,CAAEtN,MAAOzY,KAAKgY,aAAaS,MAAOs1E,MAAOA,EAAO3qF,QAASpD,KAAKgY,aAAcqG,YAAare,KAAKoD,SAEzG,GADApD,KAAKiI,QAAQ,kBAAmB8d,IAC3BA,EAAKgoE,OAAkB,aAATpC,EACf,OAAO,EAEX,GAAIqC,GAAyC,oBAAnBA,EAAY,GAAmB,CACrD,IAAI50D,EAAK40D,EAAY,GACrB,OAAO50D,EAAG91B,KAAKtD,KAAM,CAAEoD,QAASpD,KAAKgY,aAAcS,MAAOzY,KAAKgY,aAAaS,QAE3E,OAAI8xE,EAAgBkC,YAAYzsF,KAAKgY,cACzB,aAAT2zE,GAGG,gBAAU,eAAiB37E,EAAO,aAAchQ,KAAKoD,SAASzC,OAAS,EAGvE4pF,EAAgB0D,eAAe,GAAKtC,GAAM5lE,IAIzDijE,EAAc9oF,UAAUssF,gBAAkB,SAAU0B,EAAWvC,GAC3D,IAAIW,EAAUtsF,KAAKgY,aAAatN,aAAa,QAAUihF,EAAO,YAC1D3rF,KAAKgY,aAAatN,aAAa,QAAUihF,EAAO,YAC/CuC,aAAqBtuF,OAAiC,kBAAjBsuF,EAAU,GAAmBA,EAAU,GAC7B,IAA3CzuF,OAAO2V,KAAKpV,KAAKupF,eAAe5oF,OAAgBX,KAAKupF,cAAc,GAAKoC,GAAQ3rF,KAAKwpF,gBAAgB,GAAKmC,GAC/GwC,EAAU7B,EAAQ1lF,MAAM,WAC5B,IAAK,eAAkBunF,GACnB,IAAK,IAAIntF,EAAI,EAAGA,EAAImtF,EAAQxtF,OAAQK,IAAK,CACrC,IAAIyX,EAAQy1E,aAAqBtuF,MAAQsuF,EAAUv8E,SAAS3Q,EAAE4Q,aAAes8E,EAC7E5B,EAAUA,EAAQzxE,QAAQszE,EAAQx8E,SAAS3Q,EAAE4Q,aAAc6G,GAGnE,OAAO6zE,GAGXtD,EAAc9oF,UAAUwtF,mBAAqB,SAAU19E,EAAMs8E,EAASr5C,GAClE,IAAI06C,EAAe,eAAc3tF,KAAK2tF,aAAc,CAChDnpF,UAAWxE,KAAK2c,WAChB7R,UAAWwhF,EACXt9E,MAAO,CAAEulC,IAAKvkC,KAUlB,GAPIhQ,KAAKouF,cAAgB3F,EAAY4F,UACjCV,EAAazoF,UAAUC,OAAOnF,KAAK2c,YACnCgxE,EAAazoF,UAAU4G,IAAI,aAC3B6hF,EAAe,eAAc3tF,KAAKsuF,eAAgB,CAAE9pF,UAAWxE,KAAK2c,WAAY7R,UAAW6iF,EAAa3mE,aAE5G2mE,EAAariF,GAAKtL,KAAKgY,aAAahI,KAAO,QAEvChQ,KAAKoD,QAAQ8I,cAAc,qBAAuB+mC,EAAM3nC,GAAK,MAC7DtL,KAAKoD,QAAQ8I,cAAc,qBAAuB+mC,EAAM3nC,GAAK,MAAM5G,YAAYipF,QAE9E,IAAmD,IAA/C16C,EAAMnrB,aAAa,wBAAkC,CAE1D,IAAIymE,EAAct7C,EAAMvoC,aAAa,wBACjC8jF,EAAa,gBAAO,IAAMD,EAAavuF,KAAKoD,SAChDorF,EAAW9pF,YAAYipF,QAEtB,GAA4B,MAAxB3tF,KAAKyuF,gBAEVzuF,KAAKyuF,gBAAgBnrF,KAAKtD,KAAMA,KAAKgY,aAAc21E,OAElD,CACD,IAAIxC,EAAcnrF,KAAKgY,aAAa2J,cAChCypE,EAAcD,EAAYxpE,cAC1BwpE,EAAYjmF,UAAUmB,SAAS,sBAAwB8kF,EAAYjmF,UAAUmB,SAAS,aACtF+kF,EAAY5lE,aAAamoE,EAAcxC,EAAYuD,aAE9CtD,EAAYlmF,UAAUmB,SAAS,sBAAwB+kF,EAAYlmF,UAAUmB,SAAS,aAC3F+kF,EAAYzpE,cAAc6D,aAAamoE,EAAcvC,EAAYsD,aAGjEvD,EAAY3lE,aAAamoE,EAAc3tF,KAAKgY,aAAa02E,aAGjEf,EAAa5mF,MAAMC,QAAU,QAC7BhH,KAAKqrF,gBAAgBr7E,GACrBhQ,KAAKipF,UAAU58E,KAAK2D,GACpBhQ,KAAK2uF,cAAc3+E,IAGvBg5E,EAAc9oF,UAAUmrF,gBAAkB,SAAUr7E,GAKhD,OAJAhQ,KAAKqpF,YAAc,gBAAOrpF,KAAK2tF,aAAe,IAAM3tF,KAAK2c,WAAY3c,KAAKgY,aAAa2J,eAClF3hB,KAAKqpF,cACNrpF,KAAKqpF,YAAc,gBAAOrpF,KAAK2tF,aAAe,IAAM3tF,KAAK2c,WAAa,SAAW3M,EAAO,KAAMhQ,KAAKoD,UAEhGpD,KAAKqpF,aAGhBL,EAAc9oF,UAAUstF,iBAAmB,SAAUx9E,GACjD,IAAK,IAAIhP,EAAI,EAAGA,EAAIhB,KAAKkpF,WAAWvoF,OAAQK,IAAK,CAC7C,IAAI2qF,EAAO3rF,KAAKkpF,WAAWv3E,SAAS3Q,EAAE4Q,aAClC+5E,EAAK37E,OAASA,GACdhQ,KAAKkpF,WAAWx8E,OAAO1L,EAAG,KAKtCgoF,EAAc9oF,UAAUutF,YAAc,SAAUL,GAC5CptF,KAAKqpF,YAAYtiF,MAAMC,QAAU,QACjChH,KAAKqpF,YAAYv+E,UAAYsiF,EAAUd,QACvCtsF,KAAK2uF,cAAcvB,EAAUp9E,OAGjCg5E,EAAc9oF,UAAUorF,YAAc,SAAUt7E,GAC5C,GAAIhQ,KAAKqpF,YAAa,CAClBrpF,KAAKqpF,YAAYtiF,MAAMC,QAAU,OACjChH,KAAKwtF,iBAAiBx9E,GACtB,IAAIm7E,EAAcnrF,KAAKgY,aAAa2J,cAChCypE,EAAcD,EAAYxpE,cAC1BwpE,EAAYjmF,UAAUmB,SAAS,sBAAwB8kF,EAAYjmF,UAAUmB,SAAS,cAAiBrG,KAAKgY,aAAa9S,UAAUmB,SAAS,YAAc8kF,EAAYjmF,UAAUmB,SAAS,kBACzL8kF,EAAYjmF,UAAU4G,IAAI9L,KAAKgrF,YAC/BG,EAAYjmF,UAAUC,OAAOnF,KAAK2c,aAEb,MAAfyuE,IAAyBA,EAAYlmF,UAAUmB,SAAS,sBAAwB+kF,EAAYlmF,UAAUmB,SAAS,eACrH+kF,EAAYlmF,UAAU4G,IAAI9L,KAAKgrF,YAC/BI,EAAYlmF,UAAUC,OAAOnF,KAAK2c,cAGlC3c,KAAKgY,aAAa9S,UAAU4G,IAAI9L,KAAKgrF,YACrChrF,KAAKgY,aAAa9S,UAAUC,OAAOnF,KAAK2c,aAE5C3c,KAAKgY,aAAarN,aAAa,eAAgB,WAIvDq+E,EAAc9oF,UAAUyuF,cAAgB,SAAU3+E,GACzChQ,KAAKkqF,MAAM,GAAKl6E,GAAMhQ,KAAKopF,WAAcppF,KAAKgY,aAAaS,MAAM9X,QAAW,eAAkBX,KAAKqpF,eACpGrpF,KAAKqpF,YAAYv+E,UAAY9K,KAAKgY,aAAaS,MAC/CzY,KAAKqpF,YAAY1+E,aAAa,eAAgB,SAC9C3K,KAAKsrF,YAAYt7E,KAIzBg5E,EAAcyD,YAAc,SAAUx5C,GAClC,IAAI27C,EAAY37C,EAAMvoC,aAAa,QACnC,OAAOkkF,IAA4B,aAAdA,GAA0C,UAAdA,GAAuC,WAAdA,IAI9E5F,EAAciF,eAAiB,CAC3B7E,SAAU,SAAUyF,GAChB,OAAQpzE,MAAM9C,KAAKglB,MAAMkxD,EAAOp2E,QAAqDo2E,EAAOp2E,MAAM7G,WAAWjR,OAAS,GAA3E8a,MAAM,IAAI9C,KAAKk2E,EAAOp2E,OAAOO,YAE5EywE,MAAO,SAAUoF,GACb,OAAOxb,EAAMqV,MAAMjrE,KAAKoxE,EAAOp2E,QAEnC2kB,IAAK,SAAUyxD,GACX,OAAOxb,EAAMsV,IAAIlrE,KAAKoxE,EAAOp2E,QAEjCixE,QAAS,SAAUmF,GACf,OAAOxb,EAAMuV,SAASnrE,KAAKoxE,EAAOp2E,QAEtCuxE,IAAK,SAAU6E,GACX,OAAOxb,EAAMyV,MAAMrrE,KAAKoxE,EAAOp2E,QAEnCkxE,WAAY,SAAUkF,GAClB,OAAOxb,EAAM0V,WAAWtrE,KAAKoxE,EAAOp2E,QAExC8sB,OAAQ,SAAUspD,GACd,OAAQpzE,MAAMs1B,OAAO89C,EAAOp2E,UAA0C,IAA/Bo2E,EAAOp2E,MAAMzU,QAAQ,MAEhE4lF,OAAQ,SAAUiF,GACd,OAAOxb,EAAMwV,OAAOprE,KAAKoxE,EAAOp2E,QAEpCoxE,UAAW,SAAUgF,GACjB,OAAOA,EAAOp2E,MAAM9X,QAAUkuF,EAAOd,OAEzCjE,UAAW,SAAU+E,GACjB,OAAOA,EAAOp2E,MAAM9X,QAAUkuF,EAAOd,OAEzChE,YAAa,SAAU8E,GACnB,IAAId,EAAQc,EAAOd,MACnB,OAAOc,EAAOp2E,MAAM9X,QAAUotF,EAAM,IAAMc,EAAOp2E,MAAM9X,QAAUotF,EAAM,IAE3ElS,MAAO,SAAUgT,GACb,IAAId,EAAQc,EAAOd,MACnB,OAAQtyE,MAAMs1B,OAAO89C,EAAOp2E,SAAWs4B,OAAO89C,EAAOp2E,QAAUs1E,EAAM,IAAMh9C,OAAO89C,EAAOp2E,QAAUs1E,EAAM,IAE7GjrE,KAAM,SAAU+rE,GACZ,GAAK,eAAkBA,EAAOd,QAAqC,kBAAlBc,EAAY,OAAmC,KAAjBA,EAAOd,MAOlF,OAAQtyE,MAAM,IAAI9C,KAAKk2E,EAAOp2E,OAAOO,WANrC,IAAIuB,EAAY,IAAI,OAChBsI,EAAc,CAAEvG,OAAQuyE,EAAOd,MAAMn8E,WAAYpD,KAAM,WAAY+N,SAAU,OAC7ER,EAAYxB,EAAU4C,UAAU0xE,EAAOp2E,MAAOoK,GAClD,OAAS,eAAkB9G,IAAcA,aAAqBpD,OAAS8C,OAAOM,IAMtF1C,IAAK,SAAUw1E,GACX,OAAKpzE,MAAMs1B,OAAO89C,EAAOp2E,QAKlB,IAAIE,KAAKk2E,EAAOp2E,OAAOO,WAAa,IAAIL,KAAK+kB,KAAKC,MAAMD,KAAKkqC,UAAUinB,EAAOd,SAAS/0E,WAHlF61E,EAAOp2E,OAASo2E,EAAOd,OAKvCtxE,IAAK,SAAUoyE,GACX,GAAKpzE,MAAMs1B,OAAO89C,EAAOp2E,QAIpB,KAAqC,IAAhCo2E,EAAY,MAAE7qF,QAAQ,KAAa,CACzC,IAAI8qF,EAAQD,EAAY,MAAEh0E,QAAQ,KAAM,IACxC,OAAO/T,WAAWgoF,IAASD,EAAOd,MAIlC,OAAO,IAAIp1E,KAAKk2E,EAAOp2E,OAAOO,WAAa,IAAIL,KAAK+kB,KAAKC,MAAMD,KAAKkqC,UAAUinB,EAAOd,SAAS/0E,UAR9F,OAAQ61E,EAAOp2E,OAASo2E,EAAOd,OAWvC1a,MAAO,SAAUwb,GAEb,OAAO,IAAI32B,OAAO22B,EAAOd,OAAOtwE,KAAKoxE,EAAOp2E,QAEhDwxE,QAAS,SAAU4E,GACf,IAAIE,EAAYF,EAAOxwE,YAAYnS,cAAc,IAAM2iF,EAAOd,OAE9D,OADAc,EAAOd,MAAQgB,EAAUt2E,MAClBo2E,EAAOd,QAAUc,EAAOp2E,QAGvCrY,EAAW,CACP,eAAS,KACV4oF,EAAc9oF,UAAW,cAAU,GACtCE,EAAW,CACP,eAAS,aACV4oF,EAAc9oF,UAAW,cAAU,GACtCE,EAAW,CACP,kBACD4oF,EAAc9oF,UAAW,aAAS,GACrCE,EAAW,CACP,eAAS,YACV4oF,EAAc9oF,UAAW,kBAAc,GAC1CE,EAAW,CACP,eAAS,YACV4oF,EAAc9oF,UAAW,kBAAc,GAC1CE,EAAW,CACP,eAAS,UACV4oF,EAAc9oF,UAAW,oBAAgB,GAC5CE,EAAW,CACP,eAAS,QACV4oF,EAAc9oF,UAAW,sBAAkB,GAC9CE,EAAW,CACP,eAASqoF,EAAYuG,QACtBhG,EAAc9oF,UAAW,mBAAe,GAC3CE,EAAW,CACP,kBACD4oF,EAAc9oF,UAAW,gBAAY,GACxCE,EAAW,CACP,kBACD4oF,EAAc9oF,UAAW,aAAS,GACrCE,EAAW,CACP,kBACD4oF,EAAc9oF,UAAW,aAAS,GACrCE,EAAW,CACP,kBACD4oF,EAAc9oF,UAAW,cAAU,GACtCE,EAAW,CACP,kBACD4oF,EAAc9oF,UAAW,cAAU,GACtCE,EAAW,CACP,kBACD4oF,EAAc9oF,UAAW,uBAAmB,GAC/CE,EAAW,CACP,kBACD4oF,EAAc9oF,UAAW,0BAAsB,GAClDE,EAAW,CACP,kBACD4oF,EAAc9oF,UAAW,uBAAmB,GAC/C8oF,EAAgBuB,EAAkBnqF,EAAW,CACzC,QACD4oF,GACIA,EAn1BuB,CAo1BhC,S,oCC15BF,0EAGWhuE,EAAa,CAAC,eAAgB,UAAW,UAAW,WAAY,WAAY,sBAAuB,oBAAqB,YAAa,UAAW,eAAgB,YAAa,WAAY,SAAU,WACnMiQ,EAAa,GACbC,EAAW,eAAS,CAAEC,MAAOnQ,IAC7BmQ,EAAQD,EAAS,GAAIE,EAAQF,EAAS,GAAIG,EAAY5rB,OAAO2V,KAAKgW,GAC7EC,EAAUhf,KAAK,eAAgB,qBAC/B,IAAK,IAAIwB,EAAK,EAAGyd,EAAeL,EAAYpd,EAAKyd,EAAa3qB,OAAQkN,IAAM,CACxE,IAAI0d,EAAUD,EAAazd,GAC3Bwd,EAAUhf,KAAK,UAAYkf,GAQxB,IAAI0jE,EAAkB,eAAmB,CAC5Cj/E,KAAM,kBACNyb,OAAQ,CAAC,QACTN,MAAOA,EACPC,MAAOA,EACPM,MAAOL,EACPM,QAAS,WAAc,MAAO,CAAEC,OAAQ5rB,KAAK4rB,SAC7CC,KAAM,WACF,MAAO,CACHC,aAAc,IAAI,OAAO,IACzBC,SAAU/Q,EACVgR,OAAQf,EACRgB,mBAAmB,EACnBC,oBAAoB,EACpBC,UAAW,GACXC,cAAe,GACfC,QAAS,OACTC,mBAAoB,KAG5BC,QAAS,WACLvsB,KAAKysB,iBACLzsB,KAAK8rB,aAAaY,eAAiB1sB,KAAK8rB,aAAa7gB,cACrDjL,KAAK8rB,aAAa7gB,cAAgBjL,KAAKiL,cACvCjL,KAAK8rB,aAAazjB,cAAgBrI,KAAKqI,cACvCrI,KAAK2sB,QAAU3sB,KAAK2sB,SAExBhZ,OAAQ,SAAUpP,GACd,IAAIqoB,EAAK,OAAiBroB,EAAL,OACjBsoB,EAAQ,KAIZ,OAHK,eAAkB7sB,KAAK8sB,OAAOC,WAC/BF,EAAS,OAAoC7sB,KAAK8sB,OAAOC,QAApC/sB,KAAK8sB,OAAOC,WAE9BH,EAAE,SAAUC,IAEvBG,QAAS,CACL3kB,cAAe,SAAU4kB,GAIrB,GAHKA,IACDA,EAAgBxtB,OAAO2V,KAAKpV,KAAKssB,oBAAsB,KAEvDW,EAActsB,QAAUX,KAAKssB,mBAC7B,IAAK,IAAIze,EAAK,EAAGqf,EAAkBD,EAAepf,EAAKqf,EAAgBvsB,OAAQkN,IAAM,CACjF,IAAIsf,EAAWD,EAAgBrf,GAC3Buf,EAAoBptB,KAAKssB,mBAAmBa,GAChD,GAAIC,GAAqBA,EAAkBzsB,OAAQ,CAC/C,IAAK,IAAIkD,EAAK,EAAGwpB,EAAsBD,EAAmBvpB,EAAKwpB,EAAoB1sB,OAAQkD,IAAM,CAC7F,IAAIypB,EAAMD,EAAoBxpB,GAC1B2O,EAAU,eAAS,mBAAoB8a,GACvC9a,GACA8a,EAAIC,QAAQC,WAEZF,EAAIxiB,YACJwiB,EAAIxiB,UAAY,WAGjB9K,KAAKssB,mBAAmBa,MAK/CliB,cAAe,SAAUoK,EAAMoY,GAC3B,IAAIpqB,EAAQrD,KACRA,KAAKqsB,SACLrsB,KAAKgsB,OAAUhsB,KAAKgsB,OAAyChsB,KAAKgsB,OAArChsB,KAAK8rB,aAAa4B,aAE/C1tB,KAAK8rB,cAAgB9rB,KAAK8rB,aAAaY,gBACvC1sB,KAAK8rB,aAAaY,eAAerX,EAAMoY,GAEvCpY,GAAQrV,KAAKgsB,QAAUhsB,KAAKgsB,OAAOrrB,QACnClB,OAAO2V,KAAKC,GAAMxO,KAAI,SAAUtG,GAC5B8C,EAAM2oB,OAAOnlB,KAAI,SAAUma,GAClBzgB,IAAQygB,GAAY,cAAcvD,KAAKld,KACpC8C,EAAMgpB,OACNhpB,EAAMyoB,aAAa6B,YAAYC,MAAM,UAAYrtB,EAAK8U,EAAK9U,KAG3D8C,EAAMuqB,MAAM,UAAYrtB,EAAK8U,EAAK9U,IAClC8C,EAAMuqB,MAAM,eAAgBvY,EAAK9U,aAOzDqrB,OAAQ,WACJ5rB,KAAK2sB,WAETsI,MAAO,WACH,OAAOj1B,KAAK8rB,aAAamJ,SAE7BhO,QAAS,WACL,OAAOjnB,KAAK8rB,aAAa7E,cAI1BioE,EAAe,CACtBl/E,KAAM,aACNwe,QAAS,SAAUC,GACfA,EAAIC,UAAUwgE,EAAal/E,KAAMi/E,M,+SClGrC,EAA8B,WAO9B,SAASE,EAAavgE,EAAQC,GAC1B,IAAIxrB,EAAQrD,KACZA,KAAKovF,OAAS,EACdpvF,KAAKqvF,UAAY,EACjBrvF,KAAKsvF,YAAa,EAClBtvF,KAAKuvF,kBAAmB,EAExBvvF,KAAKuiD,OAAS,SAAUp1C,GACpB,IAAImlB,EAAOjvB,EAAMurB,OACbtuB,EAAS+C,EAAMmsF,UAAUC,mBACzBC,EAAY,gBAAapvF,EAAQ,gBACrC,IAAMgyB,EAAKmjB,kBAAmBnjB,EAAKI,gBAAoB,eAAkBg9D,IAClEA,EAAUv3E,uBAAuB,oBAAoBxX,OAAS,EACjE,OAAO,EAEX,IAAIgvF,EAAgBtsF,EAAMurB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,gDAC/DpB,EAAU9C,EAAO4E,UAAUmB,SAAS,gBAAkB/F,EAASovF,EACnE,IAAKtsF,IAAakvB,EAAKmjB,iBAAmBryC,EAAQ8B,UAAUmB,SAAS,uBACjE,OAAO,EAEX,IAEI6yB,EAFA7zB,EAASjC,EAAQqG,aACjBmmF,EAAgBxsF,EAAQ8I,cAAc,qBAAuB9I,EAAQ8I,cAAc,2BAEvF,GAAI0jF,EAAe,CAQf,GANI12D,EADA91B,EAAQ8I,cAAc,2BAChBomB,EAAKu9D,mCAAmCD,EAAcnnD,UAAUl8B,OAAQ+lB,EAAKnD,SAG7EmD,EAAKwI,eAAe80D,EAAcllF,aAAa,iBAEzDrH,EAAMksB,OAAS2J,EACX71B,EAAMksB,OAAOugE,WACb,OAAO,EAEXH,EAAchlF,aAAa,eAAgBtH,EAAMksB,OAAO4E,KAE5D,GAAI+E,IAAQ,eAAkBA,EAAI6d,gBAAiB,CAC/C,GAAK,eAAkB7d,EAAI6d,gBAYvB44C,EAAc7kF,UAAYouB,EAAI6d,mBAZU,CACxC,IAAIg5C,EAAWz9D,EAAK09D,sBAAsB92D,EAAIrH,OAC1Cb,EAASkI,EAAIkf,mBAAJlf,CAAwB,eAAO,CAAE,MAAS62D,GAAY72D,GAAM5G,EAAM,kBAC3E29D,EAAkB39D,EAAKnqB,SAA2C,kBAAxB+wB,EAAkB,eAC5D4nD,EAAexuD,EAAKyuD,eAAiBzuD,EAAKyuD,cAAcC,eACxD1uD,EAAKyuD,cAAcC,cAAc74E,SACjC8nF,GAAmBnP,IACnBxuD,EAAK8uD,kBAET,eAAeuO,EAAe3+D,GAK7B,eAAkB2+D,EAActzC,aAAqD,IAAtCszC,EAActzC,WAAW6zC,WACzEP,EAActzC,WAAWt1C,MAAMopF,cAAgB,aAInDR,EAAc7kF,UAAY8kF,EACtB12D,EAAIgpB,WAAa9+C,EAAQqe,kBAAkB3W,UAMnD,OAJA6kF,EAAc5oF,MAAMzB,MAAQlC,EAAQoG,YAAc,KAClDmmF,EAAc5oF,MAAM1B,OAASjC,EAAQqG,aAAe,KACpDkmF,EAAc5oF,MAAMk0E,YAAc51E,EAAS,GAAGuM,WAAa,KAC3D0gB,EAAKlvB,QAAQsB,YAAYirF,GAClBA,GAEX3vF,KAAKowF,UAAY,SAAUjjF,GACvB,IAAImlB,EAAOjvB,EAAMurB,OACjB0D,EAAKlvB,QAAQ8I,cAAc,gBAAgBnF,MAAMC,QAAU,OAC3DsrB,EAAK1Y,OAAO,QAAwB,CAAEtZ,OAAQ+C,EAAMmsF,UAAUC,mBAAoBlgE,OAAQlsB,EAAMksB,OAAQ7gB,MAAOvB,EAAEuB,SAErH1O,KAAKqwF,KAAO,SAAUljF,GAClB,IAAImlB,EAAOjvB,EAAMurB,OACbtuB,EAAS6M,EAAE7M,OACf,GAAIA,EAAQ,CACR,IAAI8F,EAAU,eAAW9F,EAAQ,WAC7B0sE,EAAe3pE,EAAMurB,OAAOxrB,QAAQ8I,cAAc,sBACtD,KAAK9F,GAAWA,EAAQsE,aAAa,QAAU4nB,EAAKlvB,QAAQsH,aAAa,SACrE,eAAUsiE,EAAc,CAAC,mBAAoB,CAAC,iBAC1C16C,EAAKmjB,kBACLnjB,EAAKlvB,QAAQ8I,cAAc,qBAAqBnF,MAAMC,QAAU,OAChEsrB,EAAKlvB,QAAQ8I,cAAc,uBAAuBnF,MAAMC,QAAU,SAEjEsrB,EAAKK,cAAc8iB,iBACpB,OAGRnjB,EAAK1Y,OAAO,QAAmB,CAAEtZ,OAAQ6M,EAAE7M,OAAQivB,OAAQlsB,EAAMksB,OAAQ7gB,MAAOvB,EAAEuB,UAG1F1O,KAAKswF,SAAW,SAAUnjF,GACtB,IACIsB,EADA6jB,EAAOjvB,EAAMurB,OAEjB0D,EAAKlvB,QAAQ8I,cAAc,gBAAgBnF,MAAMC,QAAU,SACrD,gBAAamG,EAAE7M,OAAQ,kBAAoB,gBAAa6M,EAAE7M,OAAQ,qBAClEgyB,EAAKmjB,iBAAmB,gBAAatoC,EAAE7M,OAAQ,kBAC/C6M,EAAEo1C,OAAO73C,aAAa,iBAAmB,gBAAayC,EAAE7M,OAAQ,sBAClE,gBAAO6M,EAAEo1C,QACT9zC,GAAS,GAEb6jB,EAAK1Y,OAAO,QAAuB,CAAEtZ,OAAQ6M,EAAE7M,OAAQoO,MAAOvB,EAAEuB,MAAO6gB,OAAQlsB,EAAMksB,OAAQ9gB,OAAQA,KAEzGzO,KAAKuwF,KAAO,SAAUpjF,GAClB,IAAImlB,EAAOjvB,EAAMurB,OACbuF,EAAMhnB,EAAEqjF,eAAe9lF,aAAa,gBACpCtE,EAAU,eAAW+G,EAAE7M,OAAQ,WACnC,gBAAO6M,EAAEqjF,gBACLpqF,GAAWA,EAAQsE,aAAa,QAAU4nB,EAAKlvB,QAAQsH,aAAa,QAClE4nB,EAAKmjB,kBAAmBnjB,EAAKI,eAGnCJ,EAAK1Y,OAAO,QAAmB,CAAEtZ,OAAQ6M,EAAE7M,OAAQ6zB,IAAKA,EAAKq8D,eAAgBrjF,EAAEqjF,kBAEnFxwF,KAAK4uB,OAASA,EACd5uB,KAAK6uB,eAAiBA,EACtB7uB,KAAKywF,YAAczwF,KAAK6uB,eAAeuxD,WAAW,eAClDpgF,KAAK44C,aAAe54C,KAAK6uB,eAAeuxD,WAAW,gBAC/CpgF,KAAK4uB,OAAOE,cAGX9uB,KAAK4uB,OAAOqrB,4BACbj6C,KAAK4uB,OAAOG,GAAG,QAAgC/uB,KAAK0wF,WAAY1wF,MAEpEA,KAAK4uB,OAAOG,GAAG,QAA8B/uB,KAAK2wF,cAAe3wF,MACjEA,KAAK4uB,OAAOG,GAAG,QAAmB/uB,KAAK4wF,oBAAqB5wF,MACvB,aAAjCA,KAAK4uB,OAAO00D,kBACZtjF,KAAK4uB,OAAOG,GAAG,QAAiB/uB,KAAK6wF,8BAA+B7wF,OA4hB5E,OAphBAmvF,EAAajvF,UAAU4wF,YAAc,WACjC,IAAIvyC,EAAMv+C,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,IAAM,QAC9C6kF,EAAqB,MAAPxyC,EAClBA,EAAMwyC,EAAaxyC,EAAMv+C,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,iBACvE,IAAIwsF,EAAWD,EAAaxyC,EAAIryC,cAAc,IAAM,QAChDlM,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,SAClDxE,KAAKixF,iBAAiB1yC,GACtBA,EAAI75C,YAAYssF,GAChBhxF,KAAKkxF,SAAS3yC,GACTwyC,GACD/wF,KAAK4uB,OAAOxrB,QAAQsB,YAAY65C,IAQxC4wC,EAAajvF,UAAUixF,YAAc,WACjC,IAAIpnB,EAAY/pE,KAAKoxF,WACrBrnB,EAAUrlE,YAAY1E,KAAKqxF,qBAC3BrxF,KAAKsxF,SAASvnB,EAAU79D,cAAc,IAAM,SAC5ClM,KAAKuxF,uBACLvxF,KAAKwxF,uBACLxxF,KAAK4uB,OAAOhV,OAAO,QAAwB,CAAEud,KAAMn3B,KAAKm3B,QAO5Dg4D,EAAajvF,UAAUkxF,SAAW,WAC9B,OAAOpxF,KAAKyxF,aAQhBtC,EAAajvF,UAAUgxF,SAAW,SAAUQ,GACxC1xF,KAAKyxF,YAAcC,GAOvBvC,EAAajvF,UAAUyxF,SAAW,WAC9B,OAAO3xF,KAAK4xF,aAQhBzC,EAAajvF,UAAUoxF,SAAW,SAAUtvD,GACxChiC,KAAK4xF,YAAc5vD,GAOvBmtD,EAAajvF,UAAU2xF,YAAc,WACjC,OAAO7xF,KAAK8xF,UAQhB3C,EAAajvF,UAAU6xF,YAAc,SAAU1/C,GAC3C,OAAOryC,KAAK8xF,SAAWz/C,GAO3B88C,EAAajvF,UAAU8xF,QAAU,WAC7B,IAAIhwD,EAAQhiC,KAAK2xF,WACjB,OAAO3vD,EAAMiwD,MAAM96D,MAQvBg4D,EAAajvF,UAAUmxF,kBAAoB,WACvC,IAAIrvD,EAAQhiC,KAAKkyF,cACblB,EAAWhxF,KAAKoxF,WAAWllF,cAAc,IAAM,QAEnD,OADA8kF,EAAStsF,YAAYs9B,GACdgvD,GAWX7B,EAAajvF,UAAU6gC,aAAe,SAAUoxD,EAAUC,QACrC,IAAbD,IAAuBA,EAAW,MACtC,IAAI7/D,EAAOtyB,KAAK4uB,OACZ5uB,KAAK2xF,YACL,gBAAO3xF,KAAK2xF,YAEhB,IAAI3vD,EAAQhiC,KAAK4uB,OAAOrqB,cAAc,QAAS,CAAEC,UAAW,OAAgBwK,MAAO,CAAEqjF,YAAa,SAAUpjF,KAAM,kBAC9GqjF,EAAgBtyF,KAAKuyF,oBAAoBH,GACzCI,EAAQF,EAAcE,MACtBpgD,EAAQpyC,KAAK4uB,OAAOrqB,cAAc,OAAgB,CAAEC,UAAWxE,KAAK4uB,OAAOwrB,WAAa,GAAK,SAAUprC,MAAO,CAAEC,KAAM,cAC1HjP,KAAKyyF,QAAUzyF,KAAK4uB,OAAOrqB,cAAc,UAAW,CAAEuG,UAAW9K,KAAK4uB,OAAOxrB,QAAQkI,GAAK,gBAAiB9G,UAAW,WAKtH,IAJA,IAEIkuF,EAFArgD,EAAWryC,KAAK4uB,OAAOrqB,cAAc,QACrCouF,EAAU3yF,KAAK4uB,OAAOrqB,cAAc,KAAM,CAAEyK,MAAO,CAAEC,KAAM,SAE3DkoB,EAAOn3B,KAAKm3B,KAAOm7D,EAAcn7D,KAC5Bn2B,EAAI,EAAGiiB,EAAMkU,EAAKx2B,OAAQK,EAAIiiB,EAAKjiB,IACxC,IAAK,IAAIs2B,EAAI,EAAGs7D,EAAQz7D,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAK6vC,MAAM9gD,OAAQ22B,EAAIs7D,EAAOt7D,IAC9Eo7D,EAAW1yF,KAAK4uB,OAAOrqB,cAAc,MACrCouF,EAAQjuF,YAAYguF,GAY5B,OATIpgE,EAAKkI,gBAAkBlI,EAAKyG,cAAgBzG,EAAKI,gBACjDsP,EAAM98B,UAAU4G,IAAI,gBAExB9L,KAAK6yF,eAAexgD,GACpBD,EAAM1tC,YAAYiuF,GAClB3wD,EAAMt9B,YAAY1E,KAAK+xF,YAAY1/C,IACnCrQ,EAAMt9B,YAAY8tF,GAClBxwD,EAAMt9B,YAAY0tC,GAClBpQ,EAAMt9B,YAAY1E,KAAKyyF,SAChBzwD,GAOXmtD,EAAajvF,UAAUgyF,YAAc,SAAUC,GAE3C,YADiB,IAAbA,IAAuBA,EAAW,MAC/BnyF,KAAK+gC,aAAaoxD,IAE7BhD,EAAajvF,UAAUqyF,oBAAsB,SAAUH,GACnD,IAAI9/D,EAAOtyB,KAAK4uB,OACZO,EAAUmD,EAAKoE,aACf87D,EAAQxyF,KAAK4uB,OAAOrqB,cAAc,QAAS,CAAEyK,MAAO,CAAE,KAAQ,cAC9D8jF,EAAY9yF,KAAK4uB,OAAOrqB,cAAc,KAAM,CAAEC,UAAW,iBAAkBwK,MAAO,CAAEC,KAAM,SAC1F8jF,EAAc,IAAI,OAAY/yF,KAAK6uB,eAAgB,OAASmkE,OAAQ1gE,GACxEygE,EAAY3vF,QAAU0vF,EACtB,IACIG,EADA97D,EAAO,GAEXn3B,KAAKkzF,SAAW,gBAAmB5gE,EAAKnD,SACxC,IAAK,IAAInuB,EAAI,EAAGiiB,EAAMjjB,KAAKkzF,SAAUlyF,EAAIiiB,EAAKjiB,IAC1Cm2B,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAO5R,KAAKilF,YAAYjkF,GACpDm2B,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAK6vC,MAAQ,GAI7C,GAFAtqB,EAAOn3B,KAAKklF,cAAc/tD,GAC1BA,EAAOn3B,KAAKmzF,eAAeh8D,EAAMi7D,GAC7B9/D,EAAK+tB,iBAAmD,UAAhCrgD,KAAK4uB,OAAO+2D,gBACpC,IAAS3kF,EAAI,EAAGiiB,EAAMkU,EAAKx2B,OAAQK,EAAIiiB,EAAKjiB,IACxCm2B,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAK6vC,MAAMp1C,KAAKrM,KAAKmlF,aAAa,GAAI,OAASiO,eAGnF,IAASpyF,EAAI,EAAGiiB,EAAMjjB,KAAKkzF,SAAUlyF,EAAIiiB,EAAKjiB,IAC1CiyF,EAAYF,EAAYp/E,OAAOwjB,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAMud,GAC7DnvB,KAAK4uB,OAAO2zD,WAAa0Q,EAAU/mF,cAAc,mBACjD+mF,EAAUlsF,MAAM1B,OAASrF,KAAK4uB,OAAO2zD,UAAY,MAErD,eAAqB0Q,GACrBT,EAAM9tF,YAAYuuF,GAEtB,IAAIX,EAAgB,CAChBE,MAAOA,EACPr7D,KAAMA,GAEV,OAAOm7D,GAEXnD,EAAajvF,UAAU2yF,eAAiB,SAAUxgD,GAC9C,IACInZ,EADA3B,EAAOv3B,KAAK4uB,OAAO8H,aAEnB28D,EAAUrzF,KAAK4uB,OAAO0kE,yBAE1B,GADAjhD,EAAS/mC,GAAKtL,KAAK4uB,OAAOxrB,QAAQkI,GAAK,OACnCtL,KAAK4uB,OAAO8D,cACZ,IAAK,IAAI1xB,EAAI,EAAGiiB,EAAMjjB,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,OAAQK,EAAIiiB,EAAKjiB,IACjEhB,KAAK4uB,OAAOqrB,6BAAsD,IAAxBo5C,EAAQrvF,QAAQhD,KAG9Dk4B,EAAMl5B,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,mBACpD6tC,EAAS3tC,YAAYw0B,KAGzBl5B,KAAK4uB,OAAOuxB,gBAAkBngD,KAAK4uB,OAAOwxB,aAC1ClnB,EAAMl5B,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,oBACpD6tC,EAAS3tC,YAAYw0B,IAErBl5B,KAAK4uB,OAAOyxB,iBAAmD,UAAhCrgD,KAAK4uB,OAAO+2D,kBAC3CzsD,EAAMl5B,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,kBACpD6tC,EAAS3tC,YAAYw0B,IAEzB,IAASl4B,EAAI,EAAGiiB,EAAMsU,EAAK52B,OAAQK,EAAIiiB,EAAKjiB,IACxCk4B,EAAMl5B,KAAK4uB,OAAOrqB,cAAc,QACiB,IAA7CgzB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKglB,SACjC,gBAAkBsC,EAAK,CAAE,QAAW,SAExCmZ,EAAS3tC,YAAYw0B,GAMzB,OAJIl5B,KAAK4uB,OAAOyxB,iBAAmD,UAAhCrgD,KAAK4uB,OAAO+2D,kBAC3CzsD,EAAMl5B,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,kBACpD6tC,EAAS3tC,YAAYw0B,IAElBmZ,GAEX88C,EAAajvF,UAAUglF,cAAgB,SAAU/tD,GAI7C,IAFA,IAAI7E,EAAOtyB,KAAK4uB,OACZykE,EAAUrzF,KAAK4uB,OAAO0kE,yBACjBtyF,EAAI,EAAGiiB,EAAMkU,EAAKx2B,OAAQK,EAAIiiB,EAAKjiB,IAAK,CAC7C,GAAIsxB,EAAKI,cACL,IAAK,IAAIjyB,EAAI,EAAG8yF,EAAQjhE,EAAKK,cAAcxD,QAAQxuB,OAAQF,EAAI8yF,EAAO9yF,IAC9DT,KAAK4uB,OAAOqrB,6BAAsD,IAAxBo5C,EAAQrvF,QAAQvD,IAG9D02B,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAK6vC,MAAMp1C,KAAKrM,KAAKmlF,aAAa,GAAI,OAASqO,eAGnF,GAAIlhE,EAAK6tB,gBAAkB7tB,EAAK8tB,UAAW,CACvC,IAAIr6B,EAAO,GACX/lB,KAAK4uB,OAAOhV,OAAO,QAA6BmM,GAChDoR,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAK6vC,MAAMp1C,KAAKrM,KAAKmlF,aAAap/D,EAAM,OAAS0tE,eAE7EnhE,EAAK+tB,iBAAmD,UAAhCrgD,KAAK4uB,OAAO+2D,iBACpCxuD,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAK6vC,MAAMp1C,KAAKrM,KAAKmlF,aAAa,GAAI,OAASiO,eAGnF,OAAOj8D,GAEXg4D,EAAajvF,UAAUizF,eAAiB,SAAUh8D,EAAMi7D,GACpD,IAAII,EAAQxyF,KAAK4uB,OAAO8kE,kBAAoB1zF,KAAK4uB,OAAO8kE,iBAAiBxnF,cAAc,SACnFqrB,EAAOv3B,KAAK4uB,OAAOqrB,2BACnBj6C,KAAK4uB,OAAO8H,WAAW12B,KAAK4uB,OAAO+kE,mBAAqB3zF,KAAK4uB,OAAOO,QAGxE,GAFAnvB,KAAKovF,OAAS,EACdpvF,KAAKqvF,UAAY,EACbrvF,KAAK4uB,OAAOglE,qBACZ,IAAK,IAAI5yF,EAAI,EAAGA,EAAIu2B,EAAK52B,OAAQK,IAC7BhB,KAAK6zF,kBAAmB,EACxB18D,EAAOn3B,KAAK8zF,YAAYv8D,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAMulB,EAAM,EAAS,IAANn2B,GAAS,EAAOA,IAAOu2B,EAAK52B,OAAS,EAAI6xF,EAAOJ,GAAW,GAG7HpxF,EAAI,EAAb,IAAK,IAAWiiB,EAAMsU,EAAK52B,OAAQK,EAAIiiB,EAAKjiB,IACxChB,KAAKqvF,UAAY,EACjBrvF,KAAK6zF,kBAAmB,EACxB18D,EAAOn3B,KAAK8zF,YAAYv8D,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAMulB,EAAM,EAAS,IAANn2B,GAAS,EAAOA,IAAOiiB,EAAM,EAAIuvE,EAAOJ,GAAW,GAE1H,OAAOj7D,GAEXg4D,EAAajvF,UAAU4zF,YAAc,SAAUv8D,EAAMJ,EAAM1qB,EAAOsnF,EAAYzE,EAAY0E,EAAWC,EAAW7B,EAAW8B,GACvH,IAAIC,EAAUH,EAAYE,EAAiB,kBAAoB,aAAe,GAC1EE,GAAgBp0F,KAAK4uB,OAAOglE,sBACxBr8D,EAAKu4D,aAAe9vF,KAAK6zF,mBAAuBt8D,EAAKu4D,YAAc9vF,KAAK6zF,iBAChF,GAAKt8D,EAAKpI,QAiBL,CACDnvB,KAAKsvF,YAAa,EAClB,IAAI3kB,EAAU3qE,KAAKq0F,WAAW98D,EAAM,GACpC,GAAIozC,EAAS,CACT,IAAI2pB,EAAuBt0F,KAAKu0F,wBAAwBh9D,EAAM,GAC1Di9D,EAA2D,IAArCx0F,KAAK4uB,OAAOglE,uBAC7B5zF,KAAK6zF,kBAA6C,IAAzBS,GAC1Bt0F,KAAK6zF,kBAAqBlpB,EAAU2pB,IAA0B,EAClEE,GACAr9D,EAAKxlB,SAASlF,EAAMmF,WAAY,KAAK6vC,MAAMp1C,KAAK,IAAI,OAAK,CACrDw1C,SAAU,OAAS4yC,cAAellE,OAAQgI,EAC1CozC,QAAS3qE,KAAK00F,WAAW/pB,EAAS2pB,GAClC9vF,UAAWuvF,EAAa,GAAMzE,EAAa,cAAgB,MAIvE,GAAItvF,KAAK4uB,OAAOglE,uBAAyB5zF,KAAK6zF,iBAC1C,IAAK,IAAI7yF,EAAI,EAAGA,EAAIu2B,EAAKpI,QAAQxuB,OAAQK,IACrCm2B,EAAOn3B,KAAK8zF,YAAYv8D,EAAKpI,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAMulB,EAAM1qB,EAAQ,EAAGsnF,EAAkB,IAAN/yF,EAASA,IAAOu2B,EAAKpI,QAAQxuB,OAAS,GAAMqzF,EAAWC,EAAW7B,GAAW,GAGpL,GAAIpyF,KAAK6zF,iBACA,CAAI7yF,EAAI,EAAb,IAAK,IAAWiiB,EAAMsU,EAAKpI,QAAQxuB,OAAQK,EAAIiiB,EAAKjiB,IAAK,CACrD+yF,EAAaA,GAAoB,IAAN/yF,EAC3B,IAAI2zF,EAAe30F,KAAKsvF,WAAa/3D,EAAKpI,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKglB,UACtEm9D,EACJa,EAAmB5zF,IAAOiiB,EAAM,GAAM+wE,EAC1C78D,EAAOn3B,KAAK8zF,YAAYv8D,EAAKpI,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAMulB,EAAM1qB,EAAQ,EAAGsnF,EAAYY,IAAiBC,EAAkBA,EAAkBX,EAAW7B,GAAW,UA3C9KgC,GACAj9D,EAAKxlB,SAASlF,EAAMmF,WAAY,KAAK6vC,MAAMp1C,KAAKrM,KAAKmlF,aAAa5tD,EAAM,OAASy7D,OAAQhzF,KAAKkzF,SAAWzmF,GAAQsnF,EAAa,GAAMzE,EAAa,cAAgB,IAAO6E,EAAS1nF,EAAOzM,KAAK4uB,OAAOimE,oBAAoBt9D,EAAKpD,OAE7Nn0B,KAAK4uB,OAAOglE,qBACP5zF,KAAKovF,OAASpvF,KAAKqvF,UAAYrvF,KAAK4uB,OAAOkmE,gBAC1Cv9D,EAAKu4D,aAAe9vF,KAAK6zF,mBAAuBt8D,EAAKu4D,YAAc9vF,KAAK6zF,kBAC1E7zF,KAAKovF,SAGLpvF,KAAKqvF,YAITrvF,KAAKovF,SAkCb,OAAOj4D,GAEXg4D,EAAajvF,UAAUq0F,wBAA0B,SAAUr7D,EAAK67D,GAC5D,GAAI77D,EAAI/J,QACJ,IAAK,IAAInuB,EAAI,EAAGA,EAAIk4B,EAAI/J,QAAQxuB,OAAQK,IACpC+zF,EAAgB/0F,KAAKu0F,wBAAwBr7D,EAAI/J,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAMmjF,QAGrF77D,EAAI42D,YACTiF,IAEJ,OAAOA,GAEX5F,EAAajvF,UAAUw0F,WAAa,SAAU/pB,EAAS2pB,GAEnD,OADA3pB,EAAW3qE,KAAK6zF,iBAA0ClpB,EAAU2pB,EAAjCA,EAC5B3pB,GAGXwkB,EAAajvF,UAAU+kF,YAAc,SAAUx4E,GAC3C,OAAO,IAAI,OAAI,KAEnB0iF,EAAajvF,UAAUilF,aAAe,SAAU51D,EAAQsyB,EAAUw/B,EAAS78E,EAAWwwF,EAAUjF,GAC5F,IAAI9tC,EAAM,CACN,QAAW1yB,EAAOqH,QAClB,YAAc,EACd,YAAe,eAAkBrH,EAAOwnB,gBACxC,MAAS,GACT,OAAUxnB,EACV,SAAYsyB,EACZ,QAAWw/B,EACX,UAAa78E,EACb,MAASwwF,EACT,SAAYjF,GAKhB,QAHK9tC,EAAIo/B,SAAWp/B,EAAIo/B,QAAU,WACvBp/B,EAAIo/B,QAER,IAAI,OAAKp/B,IAQpBktC,EAAajvF,UAAUwwF,WAAa,SAAUvhE,GAI1C,IAHA,IACI8lE,EACAC,EAFA5iE,EAAOtyB,KAAK4uB,OAGPnuB,EAAI,EAAG00F,EAAOhmE,EAAQxuB,OAAQF,EAAI00F,EAAM10F,IAAK,CAClD,IAAI8uB,EAASJ,EAAQxd,SAASlR,EAAEmR,WAAY,KAC5CsjF,EAAM5iE,EAAK8iE,yBAAyB7lE,EAAO4E,KAC3C8gE,EAAa1lE,EAAOqH,QAAU,GAAK,OACnC,gBAAkB52B,KAAK6xF,cAAcjxE,SAASjP,SAASujF,EAAItjF,WAAY,KAAM,CAAE,QAAWqjF,IAE9Fj1F,KAAKq1F,aAETlG,EAAajvF,UAAUywF,cAAgB,WACnC3wF,KAAKq1F,aAOTlG,EAAajvF,UAAUm1F,UAAY,WAC/B,IAAItrB,EAAY/pE,KAAKoxF,WACrBpxF,KAAKixF,iBAAiBlnB,GACtB,IAAI/nC,EAAQhiC,KAAKs1F,cAAgBt1F,KAAKyxF,YAAYvlF,cAAc,IAAM,QAAwBA,cAAc,IAAM,QAC5GlM,KAAK2xF,WACPS,OAAY7mF,EAChB,GAAIy2B,EAAO,CACP,gBAAOA,GACPA,EAAM6S,YAAY7S,EAAMqa,YACxBra,EAAM6S,YAAY7S,EAAM8S,WAAW,IACnC,IAAIzC,EAAWryC,KAAK4uB,OAAOrqB,cAAc,QACrC+tF,EAAgBtyF,KAAKuyF,oBAAoBH,GAC7CpyF,KAAKm3B,KAAOm7D,EAAcn7D,KAC1B6K,EAAMxc,aAAa8sE,EAAcE,MAAOxwD,EAAMqa,YAC9Cr8C,KAAK6yF,eAAexgD,GACpBrQ,EAAMxc,aAAaxlB,KAAK+xF,YAAY1/C,GAAWrQ,EAAMqa,YACrDr8C,KAAKu1F,cAAcvzD,GACnBhiC,KAAK4uB,OAAOhV,OAAO,QAAwB,IAC3C5Z,KAAK44C,aAAaG,oBAClB/4C,KAAK4uB,OAAO4mE,sBACZx1F,KAAKuxF,uBAEL,IADA,IAAIp6D,EAAO,GAAGzpB,MAAMpK,KAAKymE,EAAUrnD,iBAAiB,sBAC3C7U,EAAK,EAAG4nF,EAASt+D,EAAMtpB,EAAK4nF,EAAO90F,OAAQkN,IAAM,CACtD,IAAIwpB,EAAMo+D,EAAO5nF,GACb6nF,EAAS,GAAGhoF,MAAMpK,KAAK+zB,EAAIlf,uBAAuB,uBAClDu9E,EAAO/0F,QACP+0F,EAAOA,EAAO/0F,OAAS,GAAGuE,UAAU4G,IAAI,0BAGhD9L,KAAK4uB,OAAOhV,OAAO,QAAwB,CAAEud,KAAMn3B,KAAKm3B,OACpDn3B,KAAK4uB,OAAOqrB,4BAA8B,gBAAajY,EAAO,SAC9DhiC,KAAK4uB,OAAOhV,OAAO,QAAwB,CAAEud,KAAMn3B,KAAKm3B,KAAMpR,KAAM,CAAEw3B,UAAU,EAAOo4C,SAAS,KAEhG31F,KAAK4uB,OAAO20D,eAA2D,WAA1CvjF,KAAK4uB,OAAO40D,iBAAiBC,UAC1D,gBAAKtsD,GAAM,GAGnB,IAAIy+D,EAAkB51F,KAAK4uB,OAAOyrB,mBAAmBnuC,cAAc,8BAC9D,eAAkB0pF,KACnBA,EAAgBz6E,SAAW,IAGnCg0E,EAAajvF,UAAU+wF,iBAAmB,SAAU1yC,GAChD,IAAIhvB,EAASvvB,KAAK4uB,OAAOO,QACrB0mE,EAAatmE,EAAOyK,MAAK,SAAUzK,GAAU,OAAQ,eAAkBA,EAAOJ,YAC9E0mE,EACAt3C,EAAIr5C,UAAU4G,IAAI,mBAGlByyC,EAAIr5C,UAAUC,OAAO,oBAG7BgqF,EAAajvF,UAAUq1F,cAAgB,SAAUvzD,GAC7ChiC,KAAKoxF,WAAWllF,cAAc,IAAM,QAAwBxH,YAAYs9B,IAE5EmtD,EAAajvF,UAAUm0F,WAAa,SAAUn7D,EAAK48D,GAC/C,GAAI58D,EAAI/J,QACJ,IAAK,IAAInuB,EAAI,EAAGiiB,EAAMiW,EAAI/J,QAAQxuB,OAAQK,EAAIiiB,EAAKjiB,IAC/C80F,EAAM91F,KAAKq0F,WAAWn7D,EAAI/J,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAMkkF,QAI/D58D,EAAItC,SACJk/D,IAGR,OAAOA,GAEX3G,EAAajvF,UAAUqxF,qBAAuB,WAC1C,IAAIj/D,EAAOtyB,KAAK4uB,QACV5uB,KAAK4uB,OAAO6mB,iBAAoBz1C,KAAK4uB,OAAO8D,eAAiB1yB,KAAK4uB,OAAO+D,cAAc8sB,gBAG7Fz/C,KAAKwvF,UAAY,IAAI,OAAUl9D,EAAK+nB,mBAAoB,CACpD07C,WAAY,gBACZx3B,SAAU,EACVhc,OAAQviD,KAAKuiD,OACb6tC,UAAWpwF,KAAKowF,UAChBC,KAAMrwF,KAAKqwF,KACXC,SAAUtwF,KAAKswF,SACf0F,MAAO,cACPzG,iBAAkBvvF,KAAKuvF,mBAE3BvvF,KAAK4uB,OAAOG,GAAG,QAAgB/uB,KAAKi2F,iBAAkBj2F,QAE1DmvF,EAAajvF,UAAUsxF,qBAAuB,WAC1C,IAAIl/D,EAAOtyB,KAAK4uB,OAChB5uB,KAAKk2F,UAAY,IAAI,OAAU5jE,EAAK+nB,mBAAoB,CACpD87C,OAAQ,eACR5F,KAAMvwF,KAAKuwF,OAEfvwF,KAAK4uB,OAAOG,GAAG,QAAgB/uB,KAAKi2F,iBAAkBj2F,OAE1DmvF,EAAajvF,UAAU+1F,iBAAmB,WAClCj2F,KAAKk2F,YAAcl2F,KAAKk2F,UAAUpnE,aAClC9uB,KAAKk2F,UAAU1jF,UAEfxS,KAAKwvF,YAAcxvF,KAAKwvF,UAAU1gE,aAClC9uB,KAAKwvF,UAAUh9E,WAGvB28E,EAAajvF,UAAU0wF,oBAAsB,WACzC,IAAIvtF,EAAQrD,KACRsyB,EAAOtyB,KAAK4uB,OAChB,GAA8B,aAA1B0D,EAAKgxD,mBAAoChxD,EAAK2mB,UAC1C3mB,EAAKyG,cAAiBzG,EAAKkI,gBAA+C,cAA7BlI,EAAK0B,eAAexlB,MAAwB,CAK7F,IAJA,IAAI+vC,EAAMjsB,EAAK/tB,cAAc,MAAO,CAAEC,UAAW,4BAC7C4xF,EAAe9jE,EAAK/tB,cAAc,MAAO,CAAEC,UAAW,oBACtD6xF,EAAc/jE,EAAK/tB,cAAc,MAAO,CAAEC,UAAW,mBACrDumC,EAAQ/qC,KAAK4uB,OAAO4L,gBAAkBx6B,KAAK4uB,OAAOmK,aAAe,EAAI,EAChE/3B,EAAI,EAAGA,EAAI+pC,EAAO/pC,IAAK,CAC5B,IAAIs1F,EAAchkE,EAAK/tB,cAAc,MAAO,CAAEC,UAAW,8DACrDgvD,EAAgB,IAAVzoB,EAAc/qC,KAAK4uB,OAAOmK,aAAe,OAC7C,SAAiB,IAAN/3B,EAAU,OAAS,SAChCu1F,EAASjkE,EAAK/tB,cAAc,SAAU,CAAEC,UAAW,gDACnDgyF,EAAOlkE,EAAK/tB,cAAc,OAAQ,CAAEC,UAAW,mBAAqBgvD,EAAM,kBAC9E+iC,EAAO7xF,YAAY8xF,GACnB,IAAIx9B,EAAS,IAAI,OAAO,CACpBvuD,SAAUzK,KAAK4uB,OAAOnkB,SAAWzK,KAAK4uB,OAAOnkB,SAAW,KAE5DuuD,EAAO3yC,SAASkwE,GAChBA,EAAOE,QAAU,SAAUtpF,GACnBA,EAAE7M,OAAO4E,UAAUmB,SAAS,kBACzB8G,EAAE7M,OAAO4E,UAAUmB,SAAS,kBAC/BhD,EAAMurB,OAAO8nE,2BAGbrzF,EAAMurB,OAAO+nE,8BAGrBL,EAAY5xF,YAAY6xF,GACxBF,EAAY3xF,YAAY4xF,GAE5BF,EAAa1xF,YAAY2xF,GACzB93C,EAAI75C,YAAY0xF,GAChB9jE,EAAKlvB,QAAQoiB,aAAa+4B,EAAKv+C,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,IAAM,cAGnEomB,EAAKsnB,mBAAqBtnB,EAAK2mB,SAC/B3mB,EAAK0nB,aAAa90C,UAAU4G,IAAI,wBAI5CqjF,EAAajvF,UAAU2wF,8BAAgC,SAAU9qE,GAC7D,IAAI6wE,EAAa52F,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,yBAC/B,YAAhB6Z,EAAKlM,SACD+8E,EACA,gBAAOA,GAGP52F,KAAK4wF,wBAIVzB,EAhqBsB,G,oCClB7B9vF,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAyBxC,EAAoC,SAAU8C,GAE9C,SAASg0F,IACL,IAAIxzF,EAAmB,OAAXR,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAQhE,OAPAqD,EAAMD,QAAUC,EAAMurB,OACjBrqB,cAAc,KAAM,CAAEC,UAAW,eAAgBwK,MAAO,CAAEszE,SAAU,KAAMrzE,KAAM,kBACrF5L,EAAMotF,YAAc,IAAI,OACxBptF,EAAMyzF,QAAUzzF,EAAMurB,OAAOrqB,cAAc,OAAQ,CAAEC,UAAW,iBAChEnB,EAAM0zF,QAAU1zF,EAAMurB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,0BAA2BwK,MAAO,CAAE,cAAe,UAClH3L,EAAM2zF,IAAM3zF,EAAMurB,OAAOrqB,cAAc,OACvClB,EAAM4zF,UAAY5zF,EAAMurB,OAAOrqB,cAAc,QAAS,CAAEC,UAAW,mBAAoBwK,MAAO,CAAE,KAAQ,WAAY,aAAc3L,EAAM6zF,UAAUx8E,YAAY,wBACvJrX,EAqOX,OA/OAhE,EAAUw3F,EAAoBh0F,GAiB9Bg0F,EAAmB32F,UAAUi3F,OAAS,WAClC,OAAOn3F,KAAKg3F,IAAItvE,aAWpBmvE,EAAmB32F,UAAUyT,OAAS,SAAUguC,EAAM91B,EAAMpE,GACxD,IAAI2mB,EAAOpuC,KAAKoD,QAAQskB,YACpB0vE,EAAcp3F,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,wCAAyCwK,MAAO,CAAE,cAAe,UACjI,OAAOhP,KAAKq3F,cAAc11C,EAAMvT,EAAMgpD,IAS1CP,EAAmB32F,UAAUoV,QAAU,SAAUqsC,EAAMvT,GACnDpuC,KAAKs3F,MAAMlpD,GACX,IAAIgpD,EAAcp3F,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,wCAAyCwK,MAAO,CAAE,cAAe,UACjI,OAAOhP,KAAKq3F,cAAc11C,EAAMvT,EAAMgpD,IAE1CP,EAAmB32F,UAAUo3F,MAAQ,SAAUlpD,GAC3CA,EAAKtjC,UAAY,IAGrB+rF,EAAmB32F,UAAUm3F,cAAgB,SAAU11C,EAAMvT,EAAMgpD,GAC/D,IAKIG,EA0EAvmE,EA/EAzB,EAASoyB,EAAKpyB,OACds+B,EAAW,GACX2pC,EAAc,GAEdC,EAAWz3F,KAAKm3F,SASpB,GAPA,eAAWM,EAAU,CACjB,eAAgBloE,EAAO4E,IACvB,MAAS,oBAER,eAAkB5E,EAAOmoE,uBAC1BH,EAAcv3F,KAAKoyE,SAAS7iD,EAAO2yB,WAAY3yB,IAE/B,aAAhBA,EAAO/gB,KAAqB,CAC5B,IAAIiK,EAAQ8W,EAAO2yB,WACd,eAAkBq1C,KACnB9+E,EAAQ8+E,GAEZ,IAAIr1C,EAAaliD,KAAK82F,QAAQpvE,YAC9Bw6B,EAAW3yB,EAAO+oB,gBAAkBt4C,KAAK4uB,OAAO1jB,SAASuN,GACzDg/E,EAAS/yF,YAAYw9C,OAEpB,CACD3yB,EAAOkC,SAAW,cAClB,IAAIkmE,EAAe,eAAe33F,KAAK4uB,OAAOrqB,eAAe,EAAO,CAAEwuC,SAAS,EAAOe,MAAO,MAC7F9zC,KAAKi3F,UAAU3rF,GAAK,YAAcikB,EAAO4E,IACzCwjE,EAAanyE,aAAaxlB,KAAKi3F,UAAUvvE,YAAaiwE,EAAat7C,YAC/Dr8C,KAAK4uB,OAAOnkB,UACZ,eAAS,CAACktF,GAAe,CAAC33F,KAAK4uB,OAAOnkB,WAE1CgtF,EAAS/yF,YAAYizF,GACrBF,EAASvyF,UAAU4G,IAAI,sBAK3B,GAHA9L,KAAK43F,uBAAuBxpD,EAAMuT,GAClC3hD,KAAK63F,WAAWzpD,EAAMqpD,GACtBrpD,EAAK1pC,YAAY1E,KAAK+2F,QAAQrvE,aACzB1nB,KAAK4uB,OAAO4L,gBAAsD,cAApCx6B,KAAK4uB,OAAOoF,eAAexlB,MACzD+gB,EAAOiL,iBAAmB,eAAkBjL,EAAOsC,UAClD7xB,KAAK4uB,OAAO8mB,iBAAkBnmB,EAAOmmB,gBAAiB,CACxD,eAAW0hD,EAAa,CACpB,eAAgB,YAAc7nE,EAAO4E,MAEzCqjE,EAAcA,EAAY72F,OAAS62F,EAAc,KAAOx3F,KAAKk3F,UAAUx8E,YAAY,qBAAuB1a,KAAKk3F,UAAUx8E,YAAY,qBACrI0zB,EAAKlpC,UAAU4G,IAAI,eACnB,IAAIgsF,EAAiB,GACrB,GAAI93F,KAAK4uB,OAAOoF,eAAe7E,QAAQxuB,QAAUX,KAAK4uB,OAAOoF,eAAe7E,QAAQxuB,SAAWm3F,EAAen3F,OAE1G,IADA,IAAI45B,EAAgBv6B,KAAK4uB,OAAO6B,uBACvBhkB,EAAQ,EAAGA,EAAQzM,KAAK4uB,OAAOO,QAAQxuB,OAAQ8L,IACpD,IAAK,IAAIs+B,EAAQ,EAAGA,EAAQ/qC,KAAK4uB,OAAOoF,eAAe7E,QAAQxuB,OAAQoqC,IACnE,GAAI/qC,KAAK4uB,OAAOoF,eAAe7E,QAAQxd,SAASo5B,EAAMn5B,WAAY,KAAKigB,QAAUtC,EAAOsC,OAChF0I,EAAc55B,QACX4uB,EAAOwC,kBAAoB/xB,KAAK4uB,OAAOoF,eAAe7E,QAAQxd,SAASo5B,EAAMn5B,WAAY,KAAKigB,MAAQ,CAC7GulE,EAAYlyF,UAAU4G,IAAI,cAC1BgsF,EAAezrF,KAAKkjB,EAAOsC,OAC3B,MAKhBuc,EAAK1pC,YAAY0yF,EAAY1vE,aAE7Bi6B,EAAKn9C,WACL4pC,EAAKlpC,UAAU4G,IAAI61C,EAAKn9C,WAExB+qB,EAAOwoE,kBACP,gBAAsB3pD,EAAM7e,EAAOwoE,kBAEnC/3F,KAAK4uB,OAAOmK,cAAgBxJ,EAAOwJ,eACnC80B,EAASpJ,KAAO,OAChB+yC,EAAcA,EAAY72F,OAAS62F,EAAc,KAAOx3F,KAAKk3F,UAAUx8E,YAAY,mBAAqB1a,KAAKk3F,UAAUx8E,YAAY,qBAElI1a,KAAK4uB,OAAO8D,eAAiBnD,EAAOmD,eAAkB1yB,KAAK4uB,OAAO6mB,iBAAmBlmB,EAAOkmB,mBAC7FoY,EAAS9I,SAAU,EACnByyC,EAAcA,EAAY72F,OAAS62F,EAAc,KAAOx3F,KAAKk3F,UAAUx8E,YAAY,oBAAsB1a,KAAKk3F,UAAUx8E,YAAY,qBAEpI1a,KAAK4uB,OAAO8mB,gBAAkC,aAAhBnmB,EAAO/gB,OAAwB+gB,EAAOqnB,WACpE4gD,EAAcA,EAAY72F,OAAS62F,EAAc,KAAOx3F,KAAKk3F,UAAUx8E,YAAY,yBAA2B1a,KAAKk3F,UAAUx8E,YAAY,0BAE7I0zB,EAAOpuC,KAAKg4F,oBAAoBzoE,EAAQ6e,GAExC,IAAI6pD,EAAUj4F,KAAK4uB,OACfmhE,EAAWkI,EAAQjI,sBAAsBzgE,EAAOsC,OACpD,IAAK,eAAkBtC,EAAOwnB,gBAAiB,CAE3C,IAAImhD,EAAeD,EAAQ70F,QAAQkI,GAAKikB,EAAO4E,IAAM,iBACjDgkE,EAAM,mBACNj/D,EAAM3J,EACN0gE,EAAkBjwF,KAAK4uB,OAAOzmB,SAA8C,kBAA3BonB,EAAqB,eACtE6oE,EAAiBp4F,KAAK4uB,OAAOmyD,eAAiB/gF,KAAK4uB,OAAOmyD,cAAcC,eACxEhhF,KAAK4uB,OAAOmyD,cAAcC,cAAc74E,QAC5C,GAAI8nF,GAAmBmI,EAAgB,CACnC,IAAIC,EAAS,CAAE,MAAStI,GACxB3hD,EAAK3sB,kBAAkB3W,UAAY,GACnCykB,EAAO6oB,mBAAP7oB,CAA2B,eAAO8oE,EAAQn/D,GAAM++D,EAAS,iBAAkBC,EAAcl4F,KAAK4uB,OAAO,GAAKupE,GAAM,KAAM/pD,EAAK3sB,mBAC3HzhB,KAAK4uB,OAAOwyD,uBAGZpwD,EAASzB,EAAO6oB,mBAAP7oB,CAA2B,eAAO,CAAE,MAASwgE,GAAY72D,GAAM++D,EAAS,iBAAkBC,EAAcl4F,KAAK4uB,OAAO,GAAKupE,QAAM5sF,OAAWA,EAAWvL,KAAK4uB,OAAO,SAC1Kwf,EAAK3sB,kBAAkB3W,UAAY,GACnC,eAAesjC,EAAK3sB,kBAAmBuP,GAI/C,GADAhxB,KAAKywF,YAAYtsC,WAAW/V,EAAMyf,IAC7B,eAAkBt+B,EAAO+oE,mBAAqB,eAAkB/oE,EAAOonB,WAAY,CACpF,IAAI4hD,EAAYhpE,EAAO+oE,iBAAmB/oE,EAAOonB,UACjD8gD,EAAS1wF,MAAM4vC,UAAY4hD,EACT,UAAdA,GAAuC,SAAdA,EACzBnqD,EAAKlpC,UAAU4G,IAAkB,UAAdysF,EAAwB,eAAiB,eAEzC,WAAdA,GACLnqD,EAAKlpC,UAAU4G,IAAI,iBAa3B,GAVwB,SAApByjB,EAAOipE,WAAyBjpE,EAAOipE,UAAqC,SAAzBx4F,KAAK4uB,OAAO4pE,SAC/DpqD,EAAKlpC,UAAU4G,IAAI,cAEO,wBAApByjB,EAAOipE,WAAwCjpE,EAAOipE,UAAqC,wBAAzBx4F,KAAK4uB,OAAO4pE,WAC/EP,EAAQ1U,gBAAwD,WAAtC0U,EAAQzU,iBAAiBC,UACX,SAAtCwU,EAAQzU,iBAAiBC,WACZ,aAAhBl0D,EAAO/gB,MACP4/B,EAAKlpC,UAAU4G,IAAI,qBAGvB0rF,EAAa,CACb,IAAIiB,EAAaz4F,KAAK4uB,OAAOrqB,cAAc,OAAQ,CAAE+G,GAAI,eAAiBikB,EAAO4E,IAAKrpB,UAAW0sF,EAAaxoF,MAAO,CAAEjI,MAAO,kBAC9HqnC,EAAK1pC,YAAY+zF,GACjBrqD,EAAKzjC,aAAa,mBAAoB8tF,EAAUntF,IAEpD8iC,EAAKzjC,aAAa,gBAAkB,eAAkBg3C,EAAK0/B,SAA0B,EAAf1/B,EAAK0/B,SAAazvE,YACxFw8B,EAAKzjC,aAAa,eAAgB,KAClC,IAAIm2E,EAAe9gF,KAAK4uB,OAAOmyD,eAAiB/gF,KAAK4uB,OAAOmyD,cAAcC,eACtEhhF,KAAK4uB,OAAOmyD,cAAcC,cAAc74E,QAC5C,IAAMnI,KAAK4uB,OAAOzmB,SAAWnI,KAAK4uB,OAAOqyD,oBACjCH,GAAgB9gF,KAAK4uB,OAAOmyD,cAAcC,cAAcC,sBACxD,eAAkB1xD,EAAOwnB,gBAAiB,CAE9C,IAAIoqC,EAAYnhF,KAChBmhF,EAAUvyD,OAAOwyD,iBAAgB,WAC7BD,EAAUvyD,OAAO3mB,QAAQ,QAAgB,CAAE05C,KAAMA,EAAMvT,KAAMA,YAIjEpuC,KAAK4uB,OAAO3mB,QAAQ,QAAgB,CAAE05C,KAAMA,EAAMvT,KAAMA,IAK5D,OAHIpuC,KAAK4uB,OAAOsrB,gBACZ,eAAwBl6C,KAAK4uB,OAAQW,EAAQ6e,GAE1CA,GAEXyoD,EAAmB32F,UAAUkyE,SAAW,SAAUvgD,EAAOtC,GACrD,OAAOA,EAAOmoE,oBAAoB7lE,EAAOtC,IAE7CsnE,EAAmB32F,UAAU83F,oBAAsB,SAAUzoE,EAAQ6e,GACjE,GAAIpuC,KAAK4uB,OAAO8mB,gBAAkBnmB,EAAOmmB,iBAAmB,eAAkBnmB,EAAOsC,OAAQ,CACzF,IAAIzuB,EAAWpD,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,uBAAwBwK,MAAO,CAAE,cAAe,UACzG0pF,EAAuB,GAC3B,GAAI14F,KAAK4uB,OAAOoF,eAAe7E,QAAQxuB,QAAUX,KAAK4uB,OAAOoF,eAAe7E,QAAQxuB,SAAW+3F,EAAqB/3F,OAChH,IAAK,IAAIK,EAAI,EAAGA,EAAIhB,KAAK4uB,OAAOO,QAAQxuB,OAAQK,IAC5C,IAAK,IAAIs2B,EAAI,EAAGA,EAAIt3B,KAAK4uB,OAAOoF,eAAe7E,QAAQxuB,OAAQ22B,IAC3D,GAAIt3B,KAAK4uB,OAAOoF,eAAe7E,QAAQxd,SAAS2lB,EAAE1lB,WAAY,KAAKigB,QAAUtC,EAAOsC,MAAO,CACvFzuB,EAAQ8B,UAAU4G,IAAI,cACtB4sF,EAAqBrsF,KAAKkjB,EAAOsC,OACjC,MAKhBuc,EAAKlpC,UAAU4G,IAAI,eACnBsiC,EAAK1pC,YAAYtB,GAErB,GAAIpD,KAAK4uB,OAAO4mB,cAAe,CAC3B,IAAImjD,EAAU34F,KAAK4uB,OAAOrqB,cAAc,OACxCo0F,EAAQn0F,UAAY+qB,EAAOimB,cAAgB,uBAAyB,cACpEpH,EAAK1pC,YAAYi0F,GAErB,OAAOvqD,GASXyoD,EAAmB32F,UAAU23F,WAAa,SAAUzpD,EAAMwqD,GAEtD,OADAxqD,EAAK1pC,YAAYk0F,GACVxqD,GAEJyoD,EAhP4B,CAiPrC,QC1QE,EAAwC,WACxC,IAAIv3F,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAsBxC,EAA2C,SAAU8C,GAErD,SAASg2F,IACL,IAAIx1F,EAAmB,OAAXR,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAMhE,OALAqD,EAAMD,QAAUC,EAAMurB,OAAOrqB,cAAc,KAAM,CAC7CC,UAAW,mCAAoCwK,MAAO,CAClDszE,SAAU,KAAMrzE,KAAM,kBAGvB5L,EAqIX,OA7IA,EAAUw1F,EAA2Bh2F,GAmBrCg2F,EAA0B34F,UAAUyT,OAAS,SAAUguC,EAAM91B,EAAMpE,GAC/D,IAAI2mB,EAAOpuC,KAAKoD,QAAQskB,YACpB62B,EAAMv+C,KAAK4uB,OAAOrqB,cAAc,MAAO,CACvCC,UAAW,yBACXwK,MAAO,CAAE,eAAgB2yC,EAAKpyB,OAAO4E,OAErC5E,EAASoyB,EAAKpyB,OA0BlB,GAzBA6e,EAAK1pC,YAAY65C,GACZ,eAAkBhvB,EAAOwnB,gBAI1B/2C,KAAK63F,WAAWt5C,EAAKv+C,KAAK4uB,OAAO1jB,SAASqkB,EAAO2yB,YAAa3yB,EAAO+oB,gBAHrE,eAAeiG,EAAKhvB,EAAO6oB,mBAAP7oB,CAA2BA,EAAQvvB,KAAK4uB,OAAQ,mBAKpE+yB,EAAKpyB,OAAOupE,SACZ1qD,EAAKzjC,aAAa,QAASg3C,EAAKpyB,OAAOupE,SAEnB,SAApBvpE,EAAOipE,WAAyBjpE,EAAOipE,UAAqC,SAAzBx4F,KAAK4uB,OAAO4pE,SAC/DpqD,EAAKlpC,UAAU4G,IAAI,eAEM,wBAApByjB,EAAOipE,WAAwCjpE,EAAOipE,UAAqC,wBAAzBx4F,KAAK4uB,OAAO4pE,WACnFpqD,EAAKlpC,UAAU4G,IAAI,qBAElB,eAAkB61C,EAAKpyB,OAAOonB,aAC/B4H,EAAIx3C,MAAM4vC,UAAYgL,EAAKpyB,OAAOonB,WAElCgL,EAAKpyB,OAAOwoE,kBACZ,gBAAsB3pD,EAAMuT,EAAKpyB,OAAOwoE,kBAE5C3pD,EAAKzjC,aAAa,UAAWg3C,EAAKgpB,QAAQ/4D,YAC1Cw8B,EAAKzjC,aAAa,eAAgBg3C,EAAKgpB,QAAQ/4D,YAC/Cw8B,EAAKzjC,aAAa,eAAgB,KAC9B3K,KAAK4uB,OAAO4mB,cAAe,CAC3B,IAAImjD,EAAU34F,KAAK4uB,OAAOrqB,cAAc,OACxCo0F,EAAQn0F,UAAYm9C,EAAKpyB,OAAOimB,cAAgB,uBAAyB,cACzEpH,EAAK1pC,YAAYi0F,GAMrB,GAJIh3C,EAAKn9C,WACL4pC,EAAKlpC,UAAU4G,IAAI61C,EAAKn9C,WAE5BxE,KAAK4uB,OAAO3mB,QAAQ,QAAgB,CAAE05C,KAAMA,EAAMvT,KAAMA,IACxB,SAA5B,eAAgB7e,GAKhB,GAJA6e,EAAKlpC,UAAU4G,IAAI,gBACG,SAAlByjB,EAAO0rB,QACP7M,EAAKlpC,UAAU4G,IAAI,sBAEF,IAAjByjB,EAAO9iB,MACP,eAA6B2hC,EAAsC,GAA/BpuC,KAAK4uB,OAAOsyB,iBAAwBlhD,KAAK4uB,OAAOnpB,UAAW,YAE9F,CAGD,IAFA,IAAI8xB,EAAOv3B,KAAK4uB,OAAO8H,aACnBpxB,EAAuC,GAA/BtF,KAAK4uB,OAAOsyB,iBACflgD,EAAI,EAAGA,EAAIu2B,EAAK52B,OAAQK,IAAK,CAClC,GAAIuuB,EAAO9iB,MAAQ8qB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKnF,MAChD,MAEA8qB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKglB,UACjCtxB,GAASwB,WAAWywB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKtM,MAAMsM,aAGnE,eAA6Bw8B,EAAM9oC,EAAOtF,KAAK4uB,OAAOnpB,UAAW,aAGpE,GAAgC,UAA5B,eAAgB8pB,GAAqB,CAC1C6e,EAAKlpC,UAAU4G,IAAI,iBAGnB,IAFIyrB,EAAOv3B,KAAK4uB,OAAO8H,aACnBpxB,EAAwC,UAAhCtF,KAAK4uB,OAAO+2D,iBAA+B3lF,KAAK4uB,OAAOyxB,gBAAkB,GAAK,EACjFr/C,EAAIu2B,EAAK52B,OAAS,EAAGK,GAAK,EAAGA,IAAK,CACvC,GAAI,eAAcuuB,EAAQgI,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKuiB,MAAQ5E,EAAO9iB,MAAQ8qB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKnF,MAC/G,MAEA8qB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKglB,UACjCtxB,GAASwB,WAAWywB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKtM,MAAMsM,aAGnE,eAA6Bw8B,EAAM9oC,EAAOtF,KAAK4uB,OAAOnpB,UAAW,SAC3C,UAAlB8pB,EAAO0rB,QACP7M,EAAKlpC,UAAU4G,IAAI,4BAGtB,GAAgC,UAA5B,eAAgByjB,GAAqB,CAC1C6e,EAAKlpC,UAAU4G,IAAI,iBACfyrB,EAAOv3B,KAAK4uB,OAAO8H,aACnBpxB,EAAQ,EACRtF,KAAK4uB,OAAOguB,4BACZt3C,EAAuC,GAA/BtF,KAAK4uB,OAAOsyB,iBAEiB,UAAhClhD,KAAK4uB,OAAO+2D,kBACjBrgF,EAAmD,GAA3CtF,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,QAE9C,IAASK,EAAI,EAAGA,EAAIu2B,EAAK52B,OAAQK,IACzBuuB,EAAO9iB,MAAQ8qB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKnF,QACC,SAA5C8qB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK03D,QAAqB/xC,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK2rC,UAC5C,UAA5ChmB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK03D,SAC7B/xC,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKglB,UACjCtxB,GAASwB,WAAWywB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKtM,MAAMsM,aAK3E,eAA6Bw8B,EAAM9oC,EAAQ,EAAGtF,KAAK4uB,OAAOnpB,UAAW,QACrEH,EAAwC,UAAhCtF,KAAK4uB,OAAO+2D,iBAA+B3lF,KAAK4uB,OAAOyxB,gBAAkB,GAAK,EACtF,IAASr/C,EAAIu2B,EAAK52B,OAAS,EAAGK,GAAK,EAAGA,IAClC,GAAIuuB,EAAO9iB,MAAQ8qB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKnF,MAAO,CACvD,GAAI,eAAc8iB,EAAQgI,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKuiB,MACvD5E,EAAO9iB,MAAQ8qB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKnF,MAChD,MAE4C,UAA5C8qB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK03D,QAAkE,UAA5C/xC,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK03D,QACpF/xC,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKglB,UACjCtxB,GAASwB,WAAWywB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKtM,MAAMsM,aAK3E,eAA6Bw8B,EAAM9oC,EAAQ,EAAGtF,KAAK4uB,OAAOnpB,UAAW,cAGrE2oC,EAAKlpC,UAAU4G,IAAI,cAEvB,OAAOsiC,GAEJyqD,EA9ImC,CA+I5C,QCrKE,EAAwC,WACxC,IAAIv5F,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAoBxC,EAAoC,SAAU8C,GAE9C,SAASk2F,IACL,IAAI11F,EAAmB,OAAXR,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAEhE,OADAqD,EAAMD,QAAUC,EAAMurB,OAAOrqB,cAAc,KAAM,CAAEC,UAAW,iBACvDnB,EAeX,OAnBA,EAAU01F,EAAoBl2F,GAc9Bk2F,EAAmB74F,UAAUyT,OAAS,SAAUguC,EAAM91B,GAClD,IAAIuiB,EAAOpuC,KAAKoD,QAAQskB,YAExB,OADA,gBAAsB0mB,EAAMuT,EAAKl6B,YAC1B2mB,GAEJ2qD,EApB4B,CAqBrC,QCzCE,EAAwC,WACxC,IAAIz5F,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAsBxC,EAA0C,SAAU8C,GAEpD,SAASm2F,IACL,IAAI31F,EAAmB,OAAXR,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAKhE,OAJAqD,EAAM41F,QAAU,EAChB51F,EAAMD,QAAUC,EAAMurB,OACjBrqB,cAAc,KAAM,CAAEC,UAAW,iBAClCwK,MAAO,CAAE1D,GAAIjI,EAAMurB,OAAOxrB,QAAQkI,GAAK,cAAeg3E,SAAU,QAC7Dj/E,EAoHX,OA3HA,EAAU21F,EAA0Bn2F,GAgBpCm2F,EAAyB94F,UAAUyT,OAAS,SAAUguC,EAAM91B,GACxD7rB,KAAKoD,QAAQkI,GAAKtL,KAAK4uB,OAAOxrB,QAAQkI,GAAK,cAAgBtL,KAAKi5F,UAChE,IAIIjoE,EACAkoE,EACAC,EANA/qD,EAAOpuC,KAAKoD,QAAQskB,YACpB4K,EAAOtyB,KAAK4uB,OACZW,EAASoyB,EAAKpyB,OACd6pE,EAAY7pE,EAAO+oB,aAAe/oB,EAAO+oB,eAAiB,YAI9DzsB,EAAKq2B,WAAaP,EAAKpyB,OAAO2yB,WAC1BP,EAAK/nB,eACLs/D,EAAYl5F,KAAKsc,OAAOqlC,EAAKpyB,OAAQoyB,EAAKpyB,OAAO8pE,cAAc,aAAcxtE,EAAM81B,EAAKpyB,UAI5F,IAFA,IAAI9W,EAAQkpC,EAAK/nB,aAAes/D,EAAYv3C,EAAKpyB,OAAOsJ,oBAAsBhN,EAAKtrB,IAC/EP,KAAKsc,OAAOqlC,EAAKpyB,OAAQoyB,EAAKpyB,OAAO8pE,cAAc,MAAOxtE,EAAM81B,EAAKpyB,SAChE+H,EAAI,EAAGA,EAAIhF,EAAK8E,WAAWz2B,OAAQ22B,IAgDxC,IA/CA,IAAI3G,EAAU,SAAU3vB,GACpB,GAAIsxB,EAAKgnE,oBAAoB,GAAGznE,QAAUS,EAAK8E,WAAWzlB,SAAS2lB,EAAE1lB,WAAY,KAAKud,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAChHigB,OAASS,EAAK8E,WAAWzlB,SAAS2lB,EAAE1lB,WAAY,KAAKud,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKquC,qBAAsB,CAChH,IAAIs5C,EAAejnE,EAAK8E,WAAWzlB,SAAS2lB,EAAE1lB,WAAY,KACrDud,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKquC,qBACzC,GAA4B,kBAAjBs5C,GAA6BA,EAAaC,SAAS,KAC1DL,EAAiB7mE,EAAK8E,WAAWzlB,SAAS2lB,EAAE1lB,WAAY,KAAKud,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KACvFquC,qBAAqBh8C,MAAM,KAAK,GAAK4nB,EAAKyG,EAAKgnE,oBAAoB,GAAGznE,OAAOS,EAC7E8E,WAAWzlB,SAAS2lB,EAAE1lB,WAAY,KAAKud,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKpD,MAC5E8jB,EAAK8E,WAAWzlB,SAAS2lB,EAAE1lB,WAAY,KAAKud,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KACtEquC,qBAAqBh8C,MAAM,KAAK,OAExC,CACD,IAAIq3B,EAAYhJ,EAAK8E,WAAWzlB,SAAS2lB,EAAE1lB,WAAY,KAClDud,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAChC6nF,EAAUn+D,EAASo+D,YAAY,OAASr2C,gBACxCs2C,EAAS,GACb,IAAK,eAAkBF,GAAU,CAC7B,IAAIG,EAAcH,EAAQrgE,GAAGvN,EAAKyP,EAAS3C,YAAa9H,EAAOjC,OAAQ6qE,EAAQl/B,SAAUo/B,GACrF9oE,EAAOjC,OAAOzmB,SAAoD,kBAAlCmzB,EAAS2kB,qBACzCpvB,EAAOjC,OAAOwyD,iBAAgB,WACtBwY,GAAeA,EAAYj5F,SACtB,eAAkB2xB,EAAKK,cAAcknE,iBAItCzrD,EAAK3F,WAAa,IAAMmxD,EAAY,GAAGx0E,YAHvCgpB,EAAK1pC,YAAYk1F,EAAY,QASrCA,GAAeA,EAAYj5F,SAKvBw4F,EAJC,eAAkB7mE,EAAKK,cAAcknE,iBAIrBD,EAAY,GAAGx0E,YAHfw0E,IASrC,MAAO,UAGX/oE,EAAS7wB,KACJgB,EAAI,EAAGA,EAAIsxB,EAAK8E,WAAWzlB,SAAS2lB,EAAE1lB,WAAY,KAAKud,QAAQxuB,OAAQK,IAAK,CACjF,IAAI+0D,EAAUplC,EAAQ3vB,GACtB,GAAgB,UAAZ+0D,EACA,MAGZ,GAAK,eAAkBzjC,EAAKK,cAAcknE,iBAuBlCvnE,EAAKK,cAAc6F,kBACnB4V,EAAK,GAAKgrD,GAAap5F,KAAK4uB,OAAO1jB,SAASy2C,EAAKpyB,OAAO2yB,YAAc,KAAOliD,KAAK4uB,OAAO1jB,SAASuN,IAC7F0gF,EAAiB,MAAQA,EAAiB,IAG/C/qD,EAAK,GAAKgrD,GAAap5F,KAAK4uB,OAAO1jB,SAASy2C,EAAKpyB,OAAO2yB,YAAc,KAAOliD,KAAK4uB,OAAO1jB,SAASuN,GAC9F,MAAQoT,EAAKkf,MAAQ,KAAOlf,EAAKkf,MAAQ,EAAI/qC,KAAKk3F,UAAUx8E,YAAY,QAAU1a,KAAKk3F,UAAUx8E,YAAY,WAC1Gy+E,EAAiB,MAAQA,EAAiB,QA9BG,CACxD,IAAIlJ,EAAkBjwF,KAAK4uB,OAAOzmB,SAA2D,kBAAxCmqB,EAAKK,cAA6B,gBACnFmuD,EAAe9gF,KAAK4uB,OAAOmyD,eAAiB/gF,KAAK4uB,OAAOmyD,cAAcC,eACtEhhF,KAAK4uB,OAAOmyD,cAAcC,cAAc74E,QAC5C,GAAI8nF,GAAmBnP,EAAc,CACjC,IAAI6Y,EAASrnE,EAAKlvB,QAAQkI,GAAK,kBAC/B,gBAAiBgnB,EAAKK,cAAcknE,gBAApC,CAAqDhuE,EAAM7rB,KAAK4uB,OAAQ,kBAAmB+qE,EAAQ,KAAM,KAAMvrD,GAC/GpuC,KAAK4uB,OAAOwyD,uBAGZpwD,EADKhxB,KAAK4uB,OAAOuH,MACR,gBAAiB7D,EAAKK,cAAcknE,gBAApC,CAAqDhuE,EAAM7rB,KAAK4uB,QAGhE,gBAAiB0D,EAAKK,cAAcknE,gBAApC,CAAqDhuE,GAE7DokE,GAAoBnP,IACrB,eAAe1yC,EAAMpd,GACjBmoE,GAAkBA,EAAex4F,QAAUw4F,EAAe,GAAG/zE,aAC7DgpB,EAAK1pC,YAAYy0F,EAAe,KAkB5C,OAHA/qD,EAAKzjC,aAAa,UAAWg3C,EAAKgpB,QAAQ/4D,YAC1Cw8B,EAAKzjC,aAAa,aAAcyjC,EAAKtjC,UAAY9K,KAAKk3F,UAAUx8E,YAAY,iBAC5E0zB,EAAKzjC,aAAa,QAASyjC,EAAKhpB,aACzBgpB,GAEJ4qD,EA5HkC,CA6H3C,QAOEc,EAA+C,SAAUj3F,GAEzD,SAASi3F,IACL,IAAIz2F,EAAmB,OAAXR,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAEhE,OADAqD,EAAMD,QAAUC,EAAMurB,OAAOrqB,cAAc,KAAM,CAAEC,UAAW,mBACvDnB,EAmBX,OAvBA,EAAUy2F,EAA+Bj3F,GAiBzCi3F,EAA8B55F,UAAUyT,OAAS,SAAUguC,EAAM91B,GAC7D,IAAIuiB,EAAOpuC,KAAKoD,QAAQskB,YAGxB,OAFA0mB,EAAKtjC,UAAY,SACjBsjC,EAAKzjC,aAAa,UAAWg3C,EAAKgpB,QAAQ/4D,YACnCw8B,GAEJ0rD,EAxBuC,CAyBhD,QCnLE,EAAwC,WACxC,IAAIx6F,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAoBxC,EAAoC,SAAU8C,GAE9C,SAASk3F,IACL,OAAkB,OAAXl3F,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAgC/D,OAlCA,EAAU+5F,EAAoBl3F,GAe9Bk3F,EAAmB75F,UAAUyT,OAAS,SAAUguC,EAAM91B,EAAMxC,EAAMo3D,GAC9D,IAAIryC,EAAOpuC,KAAKoD,QAAQskB,YAgBxB,OAfA0mB,EAAKzjC,aAAa,iBAAkBkhB,EAAKgG,OACzCuc,EAAKzjC,aAAa,kBAAmBkhB,EAAKtrB,KAC1C6tC,EAAKzjC,aAAa,gBAAiB81E,EAAW,OAAS,SACvDryC,EAAKzjC,aAAa,WAAY,MAC1B3K,KAAK4uB,OAAOorE,wBAA0Bh6F,KAAK4uB,OAAOorE,uBAAuBC,aACzEt4C,EAAKE,SAAW,OAASN,OACzBnT,EAAK5pC,UAAYi8E,EAAW,sCAAwC,0CAGpEryC,EAAK5pC,UAAYi8E,EAAW,qBAAuB,uBACnDryC,EAAK1pC,YAAY1E,KAAK4uB,OAAOrqB,cAAc,IAAK,CAC5CC,UAAWi8E,EAAW,4CAA8C,4CACpEzxE,MAAO,CAAEkrF,KAAM,IAAK,MAASzZ,EAAW,WAAa,iBAGtDryC,GAEJ2rD,EAnC4B,CAoCrC,GCxDE,EAAwC,WACxC,IAAIz6F,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAmBxCo6F,EAA0C,SAAUt3F,GAEpD,SAASs3F,IACL,IAAI92F,EAAmB,OAAXR,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAEhE,OADAqD,EAAMD,QAAUC,EAAMurB,OAAOrqB,cAAc,KAAM,CAAEC,UAAW,uBACvDnB,EAeX,OAnBA,EAAU82F,EAA0Bt3F,GAcpCs3F,EAAyBj6F,UAAUyT,OAAS,SAAUguC,EAAM91B,GACxD,IAAIuiB,EAAOpuC,KAAKoD,QAAQskB,YAExB,OADA0mB,EAAK1pC,YAAY1E,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,8BAA+BsG,UAAW,MAClGsjC,GAEJ+rD,EApBkC,CAqB3C,QCxCE,EAAwC,WACxC,IAAI76F,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAmBxCq6F,EAAgD,SAAUv3F,GAE1D,SAASu3F,IACL,IAAI/2F,EAAmB,OAAXR,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAEhE,OADAqD,EAAMD,QAAUC,EAAMurB,OAAOrqB,cAAc,KAAM,CAAEC,UAAW,uBACvDnB,EAeX,OAnBA,EAAU+2F,EAAgCv3F,GAc1Cu3F,EAA+Bl6F,UAAUyT,OAAS,SAAUguC,EAAM91B,GAC9D,IAAIuiB,EAAOpuC,KAAKoD,QAAQskB,YAExB,OADA0mB,EAAK1pC,YAAY1E,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,iBACxD4pC,GAEJgsD,EApBwC,CAqBjD,QCxCE,EAAwC,WACxC,IAAI96F,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAoBxC,EAA0C,SAAU8C,GAEpD,SAASw3F,IACL,IAAIh3F,EAAmB,OAAXR,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAKhE,OAJAqD,EAAMD,QAAUC,EAAMurB,OAAOrqB,cAAc,KAAM,CAC7CC,UAAW,sBACXwK,MAAO,CAAE,gBAAiB,QAASszE,SAAU,QAE1Cj/E,EA6BX,OApCA,EAAUg3F,EAA0Bx3F,GAiBpCw3F,EAAyBn6F,UAAUyT,OAAS,SAAUguC,EAAM91B,EAAMpE,GAC9D,IAAI2mB,EAAOpuC,KAAKoD,QAAQskB,YAgBxB,OAfID,IAAe,eAAkBA,EAAW,WAC5C2mB,EAAK5pC,UAAY,GACjB4pC,EAAK5pC,UAAYijB,EAAW,SAC5B2mB,EAAK1pC,YAAY1E,KAAK4uB,OAAOrqB,cAAc,IAAK,CAAEC,UAAW,6CAA8CwK,MAAO,CAC1GkrF,KAAM,IAAK,MAASl6F,KAAKk3F,UAAUx8E,YAAY,iBAIvD0zB,EAAK1pC,YAAY1E,KAAK4uB,OAAOrqB,cAAc,IAAK,CAAEC,UAAW,+CAAgDwK,MAAO,CAC5GkrF,KAAM,IAAK,MAASl6F,KAAKk3F,UAAUx8E,YAAY,iBAGvDinC,EAAKo+B,YACL3xC,EAAKlpC,UAAU4G,IAAI,wBAAyB,YAEzCsiC,GAEJisD,EArCkC,CAsC3C,QC1DE,EAAwC,WACxC,IAAI/6F,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAoBxC,EAAqC,SAAU8C,GAE/C,SAASy3F,IACL,IAAIj3F,EAAmB,OAAXR,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAKhE,OAJAqD,EAAMD,QAAUC,EAAMurB,OAAOrqB,cAAc,KAAM,CAC7CC,UAAW,kCACXwK,MAAO,CAAEszE,SAAU,KAAMrzE,KAAM,cAE5B5L,EA2BX,OAlCA,EAAUi3F,EAAqBz3F,GAiB/By3F,EAAoBp6F,UAAUyT,OAAS,SAAUguC,EAAM91B,GACnD,IAAI0uE,EAAcv6F,KAAKoD,QAAQskB,YAS/B,GARA6yE,EAAY71F,YAAY1E,KAAK4uB,OAAOrqB,cAAc,MAAO,CACrDC,UAAW,6DACXwK,MAAO,CAAE,cAAe,WAExB2yC,EAAKo+B,aACLwa,EAAYr1F,UAAU4G,IAAI,yBAC1ByuF,EAAYr1F,UAAU4G,IAAI,aAE1B9L,KAAK4uB,OAAOkuB,8BAAgC98C,KAAK4uB,OAAOguB,4BAA6B,CACrF29C,EAAYr1F,UAAU4G,IAAI,gBAC1B,IAAIxG,EAAwC,UAAhCtF,KAAK4uB,OAAO+2D,gBAA8B,EAA+C,GAA3C3lF,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,OAC5F,eAA6B45F,EAAaj1F,EAAOtF,KAAK4uB,OAAOnpB,UAA2C,UAAhCzF,KAAK4uB,OAAO+2D,gBAA8B,QAAU,QAEhI,OAAO4U,GAEJD,EAnC6B,CAoCtC,QCxDE,EAAwC,WACxC,IAAIh7F,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAqBxC,EAA2C,SAAU8C,GAErD,SAAS23F,IACL,IAAIn3F,EAAmB,OAAXR,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAEhE,OADAqD,EAAMD,QAAUC,EAAMurB,OAAOrqB,cAAc,KAAM,CAAEC,UAAW,oBACvDnB,EAoBX,OAxBA,EAAUm3F,EAA2B33F,GAcrC23F,EAA0Bt6F,UAAUyT,OAAS,SAAUguC,EAAM91B,GACzD,IAAIuiB,EAAOpuC,KAAKoD,QAAQskB,YAExB,GADA0mB,EAAK1pC,YAAY,eAAc,MAAO,CAAEF,UAAW,iBAC/CxE,KAAK4uB,OAAOkuB,8BAAgC98C,KAAK4uB,OAAOguB,4BAA6B,CACrFxO,EAAKlpC,UAAU4G,IAAI,gBACnB,IAAIxG,EAAwC,UAAhCtF,KAAK4uB,OAAO+2D,gBAA8B,EAA+C,GAA3C3lF,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,OAC5F,eAA6BytC,EAAM9oC,EAAOtF,KAAK4uB,OAAOnpB,UAA2C,UAAhCzF,KAAK4uB,OAAO+2D,gBAA8B,QAAU,QAEzH,OAAOv3C,GAEJosD,EAzBmC,CA0B5C,QCjBE,EAAwB,WAOxB,SAASC,EAAO7rE,EAAQ8rE,GACpB16F,KAAK26F,WAAY,EACjB36F,KAAK46F,QAAU,EACf56F,KAAK4uB,OAASA,EACd5uB,KAAK06F,QAAUA,EACf16F,KAAK6rB,KAAO,IAAI,OAAK+C,EAAQ8rE,GAC7B16F,KAAKya,KAAOigF,EAAQta,WAAW,gBAC/BpgF,KAAKywF,YAAczwF,KAAK06F,QAAQta,WAAW,eAC3CpgF,KAAK66F,SAAW76F,KAAK06F,QAAQta,WAAW,mBACxCpgF,KAAK64C,mBAguBT,OAztBA4hD,EAAOv6F,UAAUyT,OAAS,WACtB,IAAI2e,EAAOtyB,KAAK4uB,OAChB5uB,KAAK86F,eAAiB96F,KAAK66F,SAASE,YAAY,OAAW/H,QAC3DhzF,KAAKg7F,gBAAkBh7F,KAAK66F,SAASE,YAAY,OAAWE,SAC5Dj7F,KAAK86F,eAAehK,cACpB9wF,KAAKg7F,gBAAgBlK,cACjBx+D,EAAKoE,aAAa/1B,SAClBX,KAAKk7F,kBAAmB,EACxBl7F,KAAK86F,eAAe3J,cACpBnxF,KAAKg7F,gBAAgB7J,cACrBnxF,KAAKm7F,UAAS,IAElBn7F,KAAK4uB,OAAO46B,aAAatuC,WACzBlb,KAAK4uB,OAAO46B,aAAa1P,YACE,SAAvB95C,KAAK4uB,OAAOvpB,QACZrF,KAAK4uB,OAAO46B,aAAa5O,aAE7B56C,KAAKo7F,sBAQTX,EAAOv6F,UAAUoV,QAAU,SAAUnI,GACjC,IAAI9J,EAAQrD,UACF,IAANmN,IAAgBA,EAAI,CAAE4gB,YAAa,YACvC,IAAIuE,EAAOtyB,KAAK4uB,OAChB0D,EAAK1Y,OAAOzM,EAAE4gB,YAAc,SAAU5gB,GACtCmlB,EAAKrqB,QAAQ,OAAoBkF,GAAG,SAAU4Y,GAE1C,QADa,IAATA,IAAmBA,EAAO,CAAEgI,YAAa,YACzChI,EAAKtX,OAAT,CAEI,GADA6jB,EAAK1Y,OAAO,OAAoBmM,GACZ,gBAAhBA,EAAKpF,QAAiE,SAArCtd,EAAMurB,OAAOoF,eAAexlB,KAAiB,CAC9EnL,EAAMurB,OAAOoF,eAAe7E,QAAQ9rB,EAAMurB,OAAOysE,aAAaC,gBAAkBj4F,EAAMurB,OAAOysE,aAAaE,iBAC1G,IAAIC,EAAYn4F,EAAMurB,OAAO8mB,gBAAkBryC,EAAMurB,OAAOysE,aAAa,UAAU3lD,eAAiB,gBAAkB,iBAClHxc,EAAM71B,EAAMurB,OAAOxrB,QAAQ8I,cAAc,kBAAoB7I,EAAMurB,OAAOysE,aAAa,UAAUlnE,IAAM,MAAMxS,cAC7G85E,EAASviE,EAAIhtB,cAAcsvF,GAC1B,eAAkBn4F,EAAMurB,OAAOysE,aAAaE,mBAC7CE,EAAOv2F,UAAU4G,IAAI,cAM7B,GAHoB,iBAAhBia,EAAKpF,QAAmE,aAArCtd,EAAMurB,OAAOoF,eAAexlB,MAA4D,UAArCnL,EAAMurB,OAAOoF,eAAexlB,OAClHnL,EAAMurB,OAAOoF,eAAe7E,QAAU9rB,EAAMurB,OAAOysE,aAAaK,0BAE3C,aAArB31E,EAAKgI,YAA4B,CAEjC,IAAIthB,EAAQ6lB,EAAKK,cAAcxD,QAAQnrB,QAAQ+hB,EAAK4S,YACpD,IAAe,IAAXlsB,EAAc,CACd6lB,EAAKrnB,cAAc,CAAE0nB,cAAe,CAAEgpE,QAASrpE,EAAKK,cAAcxD,QAAQziB,OAAOD,EAAO,MAAQ,GAChG6lB,EAAKrnB,cAAc,CAAE+tB,aAAc,CAAE2iE,QAASrpE,EAAK0G,aAAa7J,QAAQziB,OAAOD,EAAO,MAAQ,GAC9F,IAAI8iB,EAAS+C,EAAKoG,iBAAiB3S,EAAK4S,YACpCijE,EAAatpE,EAAKupE,uBAAuBtsE,EAAOsC,OACpDtC,EAAOqH,SAAY,eAAkBglE,KAAgBA,EAAW12F,UAAUmB,SAAS,gBAtB/F,CAmCA,GARIisB,EAAKwpE,iBAAmC,gBAAhB/1E,EAAKpF,QAA4C,iBAAhBoF,EAAKpF,QACxC,cAArBoF,EAAKgI,aAAqD,KAAtBhI,EAAKg2E,cAAwC,QAAhBh2E,EAAKpF,UACvE2R,EAAK0xD,gBAAgB,uBAAwB,GAE7C1xD,EAAKE,aAAeF,EAAKwF,aAAakkE,WAAa1pE,EAAK8F,YAAYC,SAASC,WAC5D,QAAhBvS,EAAKpF,QAAyC,SAArBoF,EAAKgI,aAA2BuE,EAAK8F,YAAYC,SAAS4jE,UACpF3pE,EAAKrnB,cAAc,CAAE6sB,aAAc,CAAEG,SAAU3F,EAAKwF,aAAaG,SAAW,KAAO,GAE9D,WAArBlS,EAAKgI,aAA4BuE,EAAKE,YAAa,CACnD,IAAI0pE,EAAan2E,EAAK8F,KAAKlrB,OACvBoqC,EAAQzY,EAAKwF,aAAaqkE,kBAAoBD,EAC9CE,EAAkB9pE,EAAK+pE,wBAAwB17F,UAE5Cy7F,EAAkBF,IAAenxD,IAAWzY,EAAKwF,aAAaC,YAAc,GAAKzF,EAAKwF,aAAaG,WAAc8S,GAAWA,GAASA,GAASmxD,KACjJ5pE,EAAKgqE,gBAAiB,EACtBhqE,EAAKrnB,cAAc,CACf6sB,aAAc,CACVqkE,kBAAmBpxD,EAAOhT,YAAa5uB,KAAK2kC,KAAK/C,EAAQzY,EAAKwF,aAAaG,aAEhF,GACH3F,EAAK8F,YAAYC,SAAS8jE,kBAAoBpxD,GAG7B,YAArBhlB,EAAKgI,aAA6B1qB,EAAMurB,OAAOQ,YAAc,WAAY/rB,EAAMurB,OAAOQ,aAG3D,WAArBrJ,EAAKgI,aAAiD,gBAArBhI,EAAKgI,aAAsD,YAArBhI,EAAKgI,cAC/E1qB,EAAMurB,OAAO+D,cAAc6F,mBAAqBn1B,EAAMurB,OAAO+D,cAAcxD,QAAQxuB,SAClF0C,EAAMurB,OAAO6D,qBAAuBpvB,EAAMurB,OAAO2tE,eACjDl5F,EAAMurB,OAAO4tE,eAAeC,gBAAgBp5F,EAAMurB,OAAOkJ,aAAaC,aAL1E10B,EAAM23F,gBAAgB0B,mBAAmB32E,GASzC1iB,EAAM+3F,mBAAmBr1E,QAQrC00E,EAAOv6F,UAAUy8F,eAAiB,WAC9B,IAAIrqE,EAAOtyB,KAAK4uB,OACZguE,EAActqE,EAAKoE,aACvB,GAAIpE,EAAK6tB,eAAgB,CACrB,IAAI08C,EAAmBvqE,EAAKlvB,QAAQkI,GAAK,iBACzC,OAAgB,GAAKuxF,GAAoB,GACzC,gBAAoBA,EAAkB,kBAEtCvqE,EAAKK,cAAcknE,iBACnB,gBAAoBvnE,EAAKlvB,QAAQkI,GAAK,kBAAmB,mBAEzDgnB,EAAK4sD,aACL,gBAAoB5sD,EAAKlvB,QAAQkI,GAAK,cAAe,eAErDgnB,EAAKwqE,iBACL,gBAAoBxqE,EAAKlvB,QAAQkI,GAAK,kBAAmB,mBAEzDgnB,EAAKwF,aAAa8e,UAClB,gBAAoBtkB,EAAKlvB,QAAQkI,GAAK,YAAa,gBAEvD,IAAK,IAAItK,EAAI,EAAGA,EAAI47F,EAAYj8F,OAAQK,IAChC47F,EAAYjrF,SAAS3Q,EAAE4Q,WAAY,KAAKglC,WACxC,OAAgBtkB,EAAKlvB,QAAQkI,GAAKsxF,EAAYjrF,SAAS3Q,EAAE4Q,WAAY,KAAKuiB,KAAO,GACjF,gBAAoB7B,EAAKlvB,QAAQkI,GAAKsxF,EAAYjrF,SAAS3Q,EAAE4Q,WAAY,KAAKuiB,IAAK,aAEnFyoE,EAAYjrF,SAAS3Q,EAAE4Q,WAAY,KAAKmlC,gBACxC,gBAAoBzkB,EAAKlvB,QAAQkI,GAAKsxF,EAAYjrF,SAAS3Q,EAAE4Q,WAAY,KAAKuiB,IAAM,iBAAkB,kBAEtGyoE,EAAYjrF,SAAS3Q,EAAE4Q,WAAY,KAAKwlC,gBACxC,gBAAoB9kB,EAAKlvB,QAAQkI,GAAKsxF,EAAYjrF,SAAS3Q,EAAE4Q,WAAY,KAAKuiB,IAAM,iBAAkB,kBAI9G,IADA,IAAI4oE,EAAO,OACFtlE,EAAI,EAAGA,EAAInF,EAAK8E,WAAWz2B,OAAQ82B,IACxC,IAAK,IAAIH,EAAI,EAAGA,EAAIhF,EAAK8E,WAAWzlB,SAAS8lB,EAAE7lB,WAAY,KAAKud,QAAQxuB,OAAQ22B,IAAK,CACjF,GAAIhF,EAAK8E,WAAWzlB,SAAS8lB,EAAE7lB,WAAY,KAAKud,QAAQxd,SAAS2lB,EAAE1lB,WAAY,KAAKmuC,eAAgB,CAChG,IAAI45C,EAASrnE,EAAKlvB,QAAQkI,GAAKgnB,EAAK8E,WAAWzlB,SAAS8lB,EAAE7lB,WAAY,KAAKud,QAAQxd,SAAS2lB,EAAE1lB,WAAY,KAAK,GAAKmrF,GAAQ,iBAC5H,gBAAoBpD,EAAQ,kBAEhC,GAAIrnE,EAAK8E,WAAWzlB,SAAS8lB,EAAE7lB,WAAY,KAAKud,QAAQxd,SAAS2lB,EAAE1lB,WAAY,KAAKouC,oBAAqB,CACjG25C,EAASrnE,EAAKlvB,QAAQkI,GAAKgnB,EAAK8E,WAAWzlB,SAAS8lB,EAAE7lB,WAAY,KAAKud,QAAQxd,SAAS2lB,EAAE1lB,WAAY,KAAK,GAAKmrF,GAAQ,sBAC5H,gBAAoBpD,EAAQ,uBAEhC,GAAIrnE,EAAK8E,WAAWzlB,SAAS8lB,EAAE7lB,WAAY,KAAKud,QAAQxd,SAAS2lB,EAAE1lB,WAAY,KAAKquC,qBAAsB,CAClG05C,EAASrnE,EAAKlvB,QAAQkI,GAAKgnB,EAAK8E,WAAWzlB,SAAS8lB,EAAE7lB,WAAY,KAAKud,QAAQxd,SAAS2lB,EAAE1lB,WAAY,KAAK,GAAKmrF,GAAQ,uBAC5H,gBAAoBpD,EAAQ,2BAK5Cc,EAAOv6F,UAAU88F,gBAAkB,SAAU7vF,GACzCnN,KAAK4uB,OAAO3mB,QAAQ,OAAuBkF,IAQ/CstF,EAAOv6F,UAAUk7F,mBAAqB,SAAUr1E,GAC5C,IAAI1iB,EAAQrD,UACC,IAAT+lB,IAAmBA,EAAO,IAC9B,IAaI+P,EAbAxD,EAAOtyB,KAAK4uB,OACZquE,EAAmD,YAAxC3qE,EAAKmoB,iBAAiBC,eAAoD,kBAArB30B,EAAKgI,aAC7C,mBAArBhI,EAAKgI,cAA4D,kBAArBhI,EAAKgI,aAAwD,mBAArBhI,EAAKgI,cACzFuE,EAAK4qE,qBACa,kBAArBn3E,EAAKgI,aAAoChI,EAAKo3E,mBAAsBF,GACpEj9F,KAAK4uB,OAAOwuE,cAEZH,GACA3qE,EAAK+qE,YAAiC,kBAArBt3E,EAAKgI,YAAkChI,EAAKu3E,YAAYC,aAAaC,KAC3D,mBAArBz3E,EAAKgI,YAAmChI,EAAKrB,eAAYnZ,GAEnEvL,KAAK4uB,OAAOhV,OAAO,QAA4BmM,GAC/C/lB,KAAK26F,WAAY,EAEjB,IAAI8C,EAAWz9F,KAAK09F,sBAEpB,GADA19F,KAAKywF,YAAY/rC,QAAQ1kD,KAAK4uB,OAAOorB,aAAa9tC,cAAc,IAAM,SAAmB,GACrFuxF,EAAU,CACV,IAAIE,EAAW,IAAI,OACnB7nE,EAAc91B,KAAK49F,SAASD,EAAU53E,GAqB1C,GAnBK+P,EASDA,EAAcA,EAAYzF,MAAK,SAAUljB,GACrC,IAAImiB,EAAQjsB,EAAMwoB,KAAKuK,gBAAgBmG,gBACvC,GAAIl5B,EAAMs3F,UAAW,CACjB,IAAIjrE,EAAM,IAAI,OAEd,OADAA,EAAIS,QAAQ,CAAEa,OAAQ,GAAI+Z,MAAO,IAC1Brb,EAAIU,QAEf,OAAO/sB,EAAMwoB,KAAK+J,QAAQ7P,EAAMuJ,OAfhCgD,EAAKE,cAAgBF,EAAKzC,gBAAgBiG,YAAY1G,WAAW+B,SAAWmB,EAAKwF,cAC9ExF,EAAKwF,aAAakkE,WAAa1pE,EAAK8F,aAAe9F,EAAK8F,YAAYC,UAAY/F,EAAK8F,YAAYC,SAASC,YAC7GhG,EAAK8F,YAAYC,SAASC,eAAY/sB,GAE1CuqB,EAAc91B,KAAK6rB,KAAK+J,QAAQ7P,EAAM/lB,KAAK6rB,KAAKuK,gBAAgBmG,kBAchEv8B,KAAK4uB,OAAO6B,uBAAuB9vB,UAAY88F,GAAYz9F,KAAK4uB,OAAO6E,eAAelzB,IAAII,QAAS,CACnG,IAAIk9F,EAAa,IAAI,OACrB/nE,EAAcA,EAAYzF,MAAK,SAAUljB,GAErC,OADA9J,EAAMurB,OAAOhV,OAAO,QAA0B,CAAEkc,YAAaA,EAAa9E,OAAQ7jB,EAAGijB,QAASytE,EAAYl9E,OAAQoF,IAC3G83E,EAAWztE,WAGtBpwB,KAAK4uB,OAAO+D,cAAcmL,2BAA6B99B,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,SACzFm1B,EAAcA,EAAYzF,MAAK,SAAUljB,GAAK,OAAO9J,EAAMy6F,qBAAqB3wF,OAEpF2oB,EAAYzF,MAAK,SAAUljB,GAAK,OAAO9J,EAAM06F,mBAAmB5wF,EAAG4Y,MAC9DiM,OAAM,SAAU7kB,GAAK,OAAO9J,EAAM26F,mBAAmB7wF,EAAG4Y,OAEjE00E,EAAOv6F,UAAU09F,SAAW,SAAUK,EAAUl4E,GAE5C,OADA/lB,KAAK4uB,OAAOhV,OAAO,QAA0B,CAAEgX,WAAW,EAAMR,QAAS6tE,EAAUt9E,OAAQoF,IACpFk4E,EAAS7tE,SAEpBqqE,EAAOv6F,UAAUw9F,oBAAsB,WACnC,IAAIprE,EAAOtyB,KAAK4uB,OAChB,SAAW0D,EAAKkI,gBAAkBlI,EAAK0B,eAAe7E,QAAQxuB,QACzD2xB,EAAKmB,eAAelzB,IAAU,SAAMP,KAAKk+F,WAAWl+F,KAAK4uB,OAAO6B,yBAEzEgqE,EAAOv6F,UAAUg+F,WAAa,SAAU/uE,GACpC,IAAI9rB,EAAQrD,KACZ,OAAOmvB,EAAQ6K,MAAK,SAAUd,GAC1B,IAAIilE,GAAQ,EAIZ,OAHAA,EAAQ96F,EAAMurB,OAAOoF,eAAe7E,QAAQ6K,MAAK,SAAUvhB,GACvD,OAAOygB,EAAI/E,MAAQ1b,EAAM0b,UAEnBgqE,IAAS96F,EAAMurB,OAAO6E,eAAelzB,IAAII,YAG3D85F,EAAOv6F,UAAUk+F,gBAAkB,SAAUr4E,GACzC,IAAI1iB,EAAQrD,KACZ+lB,EAAKgI,YAAc,YACnB,IAAIuE,EAAOtyB,KAAK4uB,OAChB,GAAI0D,EAAKE,aAAeF,EAAKwF,aAAakkE,WAAa1pE,EAAK8F,YAAYC,SAASC,WAAahG,EAAK8F,YAAYC,SAAS4jE,SAAU,CAC9H,IAAIC,EAAan2E,EAAK,WAAWoW,aAAax7B,OAC1Cu7F,GACA5pE,EAAKrnB,cAAc,CAAE6sB,aAAc,CAAEG,SAAU3F,EAAKwF,aAAaG,SAAWikE,KAAgB,GAGhG5pE,EAAKE,cAAgBzM,EAAKmW,QAAQC,aAAax7B,QAC/ColB,EAAKmW,QAAQE,eAAez7B,QAC5BolB,EAAKmW,QAAQG,eAAe17B,SAAW2xB,EAAKwF,cACzCxF,EAAKwF,aAAakkE,WAAa1pE,EAAK8F,aAAe9F,EAAK8F,YAAYC,WACnE/F,EAAKzC,gBAAgBiG,YAAY1G,WAAW+B,SAAWmB,EAAK8F,YAAYC,SAASC,YACrFhG,EAAK8F,YAAYC,SAASC,eAAY/sB,GAE1C,IAAI6kB,EAAUpwB,KAAK6rB,KAAKyQ,YAAYvW,EAAKmW,QAASl8B,KAAK4uB,OAAOkN,0BAA0B,GAAI/V,EAAKkX,UAC7F3N,EAAQtvB,KAAK6rB,KAAKuK,gBAAgBmG,gBAClCv8B,KAAK6rB,KAAKiK,YAAY1G,WAAW+B,QACjCnxB,KAAKo7F,mBAAmB,CAAErtE,YAAa,cAKvCqC,EAAQC,MAAK,SAAUljB,GACnB9J,EAAMwoB,KAAK+J,QAAQ7P,EAAMuJ,GACpBe,MAAK,SAAUljB,GAAK,OAAO9J,EAAMg7F,UAAUlxF,EAAG4Y,MAC9CiM,OAAM,SAAU7kB,GAAK,OAAO9J,EAAMi7F,UAAUnxF,EAAG4Y,SAEnDiM,OAAM,SAAU7kB,GAAK,OAAO9J,EAAMi7F,UAAUnxF,EAAG4Y,OAG5D00E,EAAOv6F,UAAUm+F,UAAY,SAAUlxF,EAAG4Y,GACtC/lB,KAAK+9F,mBAAmB5wF,EAAG4Y,IAE/B00E,EAAOv6F,UAAUo+F,UAAY,SAAUnxF,EAAG4Y,GACtC/lB,KAAKg+F,mBAAmB7wF,EAAG4Y,IAQ/B00E,EAAOv6F,UAAUq+F,eAAiB,WAC9Bv+F,KAAKm7F,UAAS,IAElBV,EAAOv6F,UAAUi7F,SAAW,SAAUqD,GAClC,IAAIlsE,EAAOtyB,KAAK4uB,OACZwjB,EAAQpyC,KAAKg7F,gBAAgBrJ,WAAWzlF,cAAc,QACrD,eAAkBkmC,IACnB,gBAAOA,GAEXA,EAAQpyC,KAAK4uB,OAAOrqB,cAAc,OAAgB,CAAEyK,MAAO,CAAEC,KAAM,cACnE,IAAIwvF,EAAYnsE,EAAK6uB,qBAAuB,eAAkB7uB,EAAKosE,gBAAgBC,UAAY,EAAI,GAC/FrsE,EAAK6tB,gBAAkB7tB,EAAK8tB,cAC1Bq+C,EAEN,IACI9d,EADArB,EAAKt/E,KAAK4uB,OAAOrqB,cAAc,KAAM,CAAEC,UAAW,aAAcwK,MAAO,CAAEC,KAAM,SAEnF,GAAIqjB,EAAKssE,oBAAqB,CAC1B,IAAIC,EAAwBvsE,EAAKlvB,QAAQkI,GAAK,sBAC9Cq1E,EAAK3gF,KAAK4uB,OAAOrqB,cAAc,KAAM,CAAEyK,MAAO,CAAEqzE,SAAU/vD,EAAKgnE,oBAAoB34F,OAAS89F,EAAYnsE,EAAKK,cAAcxD,QAAQxuB,QAAQiR,cACvI0gB,EAAK6D,MACLwqD,EAAGj8E,YAAY4tB,EAAKwsE,wBAALxsE,CAA8BA,EAAKlD,WAAYkD,EAAM,sBAAuBusE,OAAuBtzF,OAAWA,OAAWA,EAAWvL,KAAK4uB,OAAO,SAAS,IAGxK+xD,EAAGj8E,YAAY4tB,EAAKwsE,wBAALxsE,CAA8BA,EAAKlD,WAAYkD,EAAM,sBAAuBusE,OAAuBtzF,OAAWA,OAAWA,EAAWvL,KAAK4uB,OAAO,SAAS,IAExK0D,EAAKnqB,SACLnI,KAAK4uB,OAAOwyD,uBAIhBT,EAAK3gF,KAAK4uB,OAAOrqB,cAAc,KAAM,CACjCuG,UAAW9K,KAAKya,KAAKC,YAAY,eACjC1L,MAAO,CAAEqzE,SAAU/vD,EAAKgnE,oBAAoB34F,OAAS89F,EAAYnsE,EAAKK,cAAcxD,QAAQxuB,QAAQiR,cAGxG0gB,EAAK4nB,iBACLymC,EAAGz7E,UAAU4G,IAAI,gBACjB60E,EAAG55E,MAAM/B,KAAO,OAEhBstB,EAAK8nB,YAAc9nB,EAAKlvB,QAAQ8I,cAAc,wBAC9ClM,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,uBAAuBhH,UAAU4G,IAAI,qBAE3EwzE,EAAG56E,YAAYi8E,GACfvuC,EAAM1tC,YAAY46E,GAClBt/E,KAAKg7F,gBAAgB+D,YAAY3sD,GAC7BosD,IACAx+F,KAAK4uB,OAAO3mB,QAAQ,QAAkB,IACtCjI,KAAK4uB,OAAOhV,OAAO,QAAgB,CAAEud,KAAM,CAAC,IAAI,OAAI,CAAE2oD,WAAW,EAAMr+B,MAAO,CAAC,IAAI,OAAK,CAAEG,YAAY,EAAMhrB,SAAS,YAG7H6jE,EAAOv6F,UAAU8+F,oBAAsB,WAC/Bh/F,KAAK4uB,OAAOytE,wBAAwB17F,QACpCX,KAAKi/F,iBAAiBj/F,KAAK4uB,OAAOytE,wBAAwB,KAGlE5B,EAAOv6F,UAAU++F,iBAAmB,SAAUC,GAO1C,IANA,IACIzmF,EADA0W,EAAUnvB,KAAK4uB,OAAO8H,aAEtByoE,EAAU,eACVlV,EAAU,UACVp+D,EAAOqzE,GAAUA,EAAOz1C,MAAQy1C,EAAOz1C,MAAM,GAAKy1C,EAClDE,EAAOp/F,KAAK06F,QAAQta,WAAW,kBAC1Bp/E,EAAI,EAAGiiB,EAAMkM,EAAQxuB,OAAQK,EAAIiiB,EAAKjiB,IAAK,CAChDyX,EAAQ,eAAU0W,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKigB,OAAS,GAAIhG,GAC9D,eAAkBsD,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAKutF,MAC5DhwE,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK0K,OAAS6S,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAKutF,IAErF,eAAkBhwE,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKytF,kBACnD,eAAkBlwE,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKytF,gBAAgB,GAAKpV,MAC/E96D,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKytF,gBAAgB,GAAKpV,GAAS,GAAKjqF,KAAK4uB,OAAOxrB,QAAQkI,GAAK6jB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKytF,gBAAgB,GAAKpV,GAAS,IAElK96D,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK2nB,mBAAqBpK,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK4f,aAC7F/Y,EAAQ,eAAU0W,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKmgB,iBAAmB,GAAI5C,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK4f,WAAW,KAE3H,eAAkB/Y,GAQnB0W,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKpD,KAAO2gB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKpD,MAAQ,MAPvFxO,KAAKs/F,cAAe,EACfnwE,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKpD,OACrC2gB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKpD,KAAOiK,EAAMua,OAAUva,EAAM6K,WAAa,GAAK7K,EAAM8K,aAAe,GACpG9K,EAAM+K,aAAe,GAAK/K,EAAMgL,kBAAoB,EAAI,WAAa,cAAiB,IAMlG,IAAI0yB,EAAiB,IAAI,OACrBhnB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK0K,SAAW6S,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK0K,OAAOC,UACtF4S,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK0K,OAAOA,QACkB,kBAAtD6S,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK0K,OAAOA,UACtD6S,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKwkC,aAAaD,EAAeE,kBAAkB,eAAO,GAAIlnB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK0K,UACjI6S,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK0kC,UAAUH,EAAeI,kBAAkBpnB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK0K,UAE3D,kBAAhD6S,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAW,OAClD,gBAAa5R,KAAK06F,QAASvrE,EAAQxd,SAAS3Q,EAAE4Q,WAAY,MAEpDud,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK0K,QAAuD,WAA7C6S,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKpD,MACxF2gB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK0kC,UAAU8oD,EAAK7oD,kBAAkB,CAAEj6B,OAAQ,QAElC,aAA7C6S,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKpD,MAAwB2gB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK0K,SAChG6S,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK0K,OAAS,MAC7C,gBAAatc,KAAK06F,QAASvrE,EAAQxd,SAAS3Q,EAAE4Q,WAAY,SAWtE6oF,EAAOv6F,UAAU69F,mBAAqB,SAAU5wF,EAAG4Y,GAC/C,IAAI1iB,EAAQrD,KACRsyB,EAAOtyB,KAAK4uB,OAChB5uB,KAAKg7F,gBAAkBh7F,KAAK66F,SAASE,YAAY,OAAWE,SAC5Dj7F,KAAK86F,eAAiB96F,KAAK66F,SAASE,YAAY,OAAW/H,QAC3D7lF,EAAEoyF,WAAax5E,EACf,IAAIy5E,EAAmBx/F,KAAK4uB,OAAOiJ,0BAA4B73B,KAAK4uB,OAAOorE,uBAAuBC,cAC7F3nE,EAAKK,cAAc6F,oBAA2C,WAArBzS,EAAKgI,aAAkD,SAArBhI,EAAKgI,aAChC,QAAjD/tB,KAAK4uB,OAAOsJ,qBAAqBnK,eAA2BuE,EAAK0G,aAAa7J,QAAQxuB,QACtF2xB,EAAK0B,eAAe7E,QAAQxuB,QAAUX,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,QAAU2xB,EAAKmB,eAAelzB,MAE1G+xB,EAAKrqB,QAAQ,OAAwBkF,GAAG,SAAU0wB,GAC9C,IAAIA,EAASpvB,OAAb,CAGAovB,EAAS7M,OAAS,eAAkB6M,EAAS7M,QAAU,GAAK6M,EAAS7M,OACrE,IAAI/N,EAAMxjB,OAAO2V,KAAKyoB,EAAS7M,QAAQrwB,OACvC,IAAI0C,EAAMurB,OAAOE,YAGjB,GAAMwD,EAAKoE,aAAa/1B,QAAWsiB,GAAUqP,EAAKnD,QAAQxuB,QAAU2xB,EAAKnD,QAAQ,aAAc,OAI/F,IAAI9rB,EAAMo8F,cAAc15E,IAAU9C,EAAlC,CAgBA,GAZA5f,EAAMurB,OAAOmuB,QAAS,EACtB15C,EAAMurB,OAAOhV,OAAO,QAAkB,IACtCvW,EAAMurB,OAAOhV,OAAO,QAAuB,IACvCmM,GAA6B,mBAArBA,EAAKgI,aACb1qB,EAAMurB,OAAOhV,OAAO,QAA6B,CAAEpL,KAAM,yBAE7DnL,EAAM23F,gBAAgB0E,gBAAkBr8F,EAAMurB,OAAOwtE,gBAAgB1uF,QACrE4kB,EAAK8pE,gBAAkBv+D,EAAS7M,OAChCsB,EAAK1Y,OAAO,QAAuC,CAAEmM,KAAMA,EAAM8F,KAAMgS,EAAS7M,SAC5E6M,EAASkN,QAAUzY,EAAKE,cAAgBF,EAAKG,sBAAwBH,EAAKuF,2BAC1EvF,EAAKqtE,sBAAwB9hE,EAASkN,QAErC9nB,GAAO4a,EAASkN,OAASzY,EAAKE,aAAezM,GAA6B,WAArBA,EAAKgI,YAW3D,OAVI1qB,EAAMurB,OAAO+D,cAAc6F,mBACF,aAArBzS,EAAKgI,aAAmD,eAArBhI,EAAKgI,aAC5C1qB,EAAMurB,OAAOhV,OAAO,QAAsBmM,GAE9CuM,EAAKgqE,gBAAiB,EACtBhqE,EAAKwF,aAAaqkE,kBAAoBt+D,EAASkN,MACtB,WAArBhlB,EAAKgI,cACLuE,EAAKwF,aAAaC,YAAc5uB,KAAK2kC,KAAKjQ,EAASkN,MAAQzY,EAAKwF,aAAaG,gBAEjF3F,EAAKvqB,WA+BT,IA5BMuqB,EAAKoE,aAAa/1B,SAAUsiB,IAAQ5f,EAAM63F,kBAAsB,gBAAgB5oE,KAClFA,EAAKstE,gBACLv8F,EAAMw8F,uBAAuBhiE,KAE5Bx6B,EAAMi8F,cAAgBhtE,EAAK+pE,0BACxBh5F,EAAMwoB,KAAKiK,YAAY1G,WAAW+B,SAAWmB,EAAKlD,YAAckD,EAAKlD,WAAWzuB,OAChF0C,EAAM47F,iBAAiB3sE,EAAKlD,WAAW,IAGvC/rB,EAAM47F,iBAAiB3sE,EAAK+pE,wBAAwB,KAGvDh5F,EAAMurB,OAAO4rB,gBAAiBn3C,EAAMurB,OAAO+D,cAAcmL,2BACzDz6B,EAAMurB,OAAO+D,cAAcxD,QAAQxuB,SACpCk9B,EAAS7M,OAAS3tB,EAAMurB,OAAOQ,sBAAsBxvB,MAAQyD,EAAMurB,OAAOQ,WAAa/rB,EAAMurB,OAAOwtE,kBAEnG/4F,EAAMurB,OAAOzmB,UAAW9E,EAAMurB,OAAOuH,OAAW,eAAkBpQ,IAA8B,mBAArBA,EAAKgI,aAAqChI,EAAKw3B,UAC3H,eAAuBl6C,EAAMurB,OAAQ,CAAC,mBAEtCvrB,EAAMurB,OAAOxX,WAAa/T,EAAMurB,OAAO8D,eAAiBrvB,EAAMurB,OAAO+D,cAAcknE,kBAC7E,eAAkB9zE,IAA8B,mBAArBA,EAAKgI,cACtC1qB,EAAMurB,OAAOkxE,gBAAgB,CAAC,kCAElCz8F,EAAMurB,OAAOhV,OAAO,QAAkB,eAAO,CAAEmxB,MAAOlN,EAASkN,MAAO/Z,OAAQ6M,EAAS7M,OAAQoG,WAAYyG,EAASzG,YAAcrR,KAC7HuM,EAAKK,cAAcxD,QAAQxuB,QAAWolB,GAA6B,eAArBA,EAAKgI,cAChDhI,GAA6B,cAArBA,EAAKgI,aACjB1qB,EAAMy3F,eAAezF,YAErBpyE,EAAK,CACL,GAAI,gBAAgBqP,GAAO,CACvB,IAAIznB,EAAU,UACdkb,EAAK9U,UAAY,CAAElM,IAAK1B,EAAM23F,gBAAgB,GAAKnwF,GAASoG,WAE3DuuF,EASDn8F,EAAMurB,OAAOhV,OAAO,QAA4B,CAAEzM,EAAG4Y,EAAMiL,OAAQ7jB,EAAE6jB,OAAQ+Z,MAAO59B,EAAE49B,MAAOg1D,IAAK5yF,EAAEiqB,aARhG/zB,EAAMurB,OAAOo2D,oBACb3hF,EAAM23F,gBAAgBgF,uBAAuBj6E,GAG7C1iB,EAAM23F,gBAAgB0B,mBAAmB32E,OAOhD,CACD,GAAIA,GAAQA,EAAKo3E,kBACb,OAEJ,IAAK7qE,EAAKoE,aAAa/1B,OAGnB,OAFA2xB,EAAKlvB,QAAQ0H,UAAY,QACzBm1F,MAAM58F,EAAMoX,KAAKC,YAAY,yBAWjC,GARArX,EAAM23F,gBAAgBkF,eAAe,IACrC78F,EAAM23F,gBAAgBmF,cAAc,IACpC98F,EAAMotF,YAAY/rC,QAAQrhD,EAAMurB,OAAOorB,aAAa9tC,cAAc,IAAM,SAAmB,GAC3FomB,EAAKstE,gBACLv8F,EAAMk7F,iBACFjsE,EAAK2nB,6BAA+Bh3B,GACpC5f,EAAMurB,OAAOhV,OAAO,QAAqB,CAAEud,KAAM7E,EAAKmvD,gBAAiB17D,KAAM,KAE7EA,EAAM,CACN,IAAIpF,GAAUoF,EAAKgI,aAAe,IAAIlM,cAAgB,YACtDxe,EAAMurB,OAAOhV,OAAO+G,EAAQoF,GACH,cAArBA,EAAKgI,cACLhI,EAAKtX,QAAS,EACdsX,EAAKoR,KAAO,GACZpR,EAAKw3B,UAAYx3B,EAAKw3B,SACtBl6C,EAAMurB,OAAO3mB,QAAQ,OAAuB8d,IAGhD1iB,EAAMurB,OAAOinB,SACbxyC,EAAMurB,OAAOwxE,uBAEjB/8F,EAAMurB,OAAOyxE,cAEjBh9F,EAAMurB,OAAOhV,OAAO,QAAuB,IAC3CvW,EAAMi9F,YAAYj9F,EAAMurB,OAAOytE,wBAAwB17F,QACnD,UAAWwM,IACX9J,EAAMurB,OAAOiB,gBAAgBqG,wBAAyB,QA5GtD7yB,EAAMurB,OAAOhV,OAAO,QAA4B,CAAEzM,EAAG4Y,EAAMiL,OAAQ7jB,EAAE6jB,OAAQ+Z,MAAO59B,EAAE49B,MAAOg1D,IAAK5yF,EAAEiqB,kBAJpG9E,EAAK+tE,mBA2HjB5F,EAAOv6F,UAAU89F,mBAAqB,SAAU7wF,EAAG4Y,GAC1C,eAAkB/lB,KAAK4uB,OAAO4tE,iBAC/Bx8F,KAAKywF,YAAYtsC,WAAWnkD,KAAK4uB,OAAOorB,aAAa9tC,cAAc,IAAM,QAAmB,CAAE04C,MAAM,EAAOtnC,SAAS,IACpHtd,KAAKsgG,YAAY,IAErBtgG,KAAK4uB,OAAO3mB,QAAQ,OAAsB,CAAEs4F,MAAOpzF,IACnDnN,KAAK4uB,OAAOyxE,cACZrgG,KAAK4uB,OAAOgxE,gBACa,SAArB75E,EAAKgI,aAA+C,WAArBhI,EAAKgI,aACnB,cAAdhI,EAAK/V,OAGZhQ,KAAK4uB,OAAOwtE,gBAAkB,GAC9Bp8F,KAAKu+F,iBACAv+F,KAAK4uB,OAAO4rB,eACbx6C,KAAK4uB,OAAO4xE,YAAYC,4BAE5BzgG,KAAK4uB,OAAOqD,IAAI,gBAAiB,CAAEsuE,MAAOpzF,MAE9CstF,EAAOv6F,UAAUogG,YAAc,SAAUI,GACrC1gG,KAAKywF,YAAYtsC,WAAWnkD,KAAK4uB,OAAOxrB,QAAS,CAC7CoiD,SAAUk7C,EAAeA,EAAa9uF,WAAa,OAG3D6oF,EAAOv6F,UAAUu/F,cAAgB,SAAU15E,GACvC,OAAO/lB,KAAK4uB,OAAOiJ,0BAA4B73B,KAAK4uB,OAAOorE,uBAAuBC,aAAoC,WAArBl0E,EAAKgI,aAE1G0sE,EAAOv6F,UAAU2/F,uBAAyB,SAAU1yF,GAChDnN,KAAKk7F,kBAAmB,EACxB,IAAIyF,GAAa,EACb3gG,KAAK4uB,OAAOO,QAAQxuB,OAAS,IAC7BX,KAAK4gG,aAAazzF,EAAE6jB,OAAO,IAC3B2vE,GAAa,GAEjB,gBAAe3gG,KAAK4uB,OAAOO,QAAS,KAAMnvB,KAAK4uB,QAC3C+xE,GACA3gG,KAAK4uB,OAAOhV,OAAO,QAAiC,IAExD5Z,KAAK86F,eAAe3J,cACpBnxF,KAAKg7F,gBAAgB7J,cACrBnxF,KAAK4uB,OAAOiyE,WAAY,EACxB7gG,KAAK4uB,OAAOhV,OAAO,OAAgB,KAEvC6gF,EAAOv6F,UAAU4gG,sBAAwB,SAAU/9D,EAAKlR,EAAO5tB,GAE3D,IADA,IAAImR,EAAO3V,OAAO2V,KAAK2tB,GACd/hC,EAAI,EAAGA,EAAIoU,EAAKzU,OAAQK,IAAK,CAClC,IAAI+/F,EAA6D,kBAA1Ch+D,EAAI3tB,EAAKzD,SAAS3Q,EAAE4Q,WAAY,QAChDmxB,EAAI3tB,EAAKzD,SAAS3Q,EAAE4Q,WAAY,OAAWmxB,EAAI3tB,EAAKzD,SAAS3Q,EAAE4Q,WAAY,gBAAiB+G,KAC1C,GAArDlZ,OAAO2V,KAAK2tB,EAAI3tB,EAAKzD,SAAS3Q,EAAE4Q,WAAY,OAC5CmvF,EAAUpgG,OACVX,KAAK8gG,sBAAsB/9D,EAAI3tB,EAAKzD,SAAS3Q,EAAE4Q,WAAY,MAAOigB,GAASzc,EAAKzD,SAAS3Q,EAAE4Q,WAAY,KAAO,KAAM3N,IAGpHA,EAAMjE,KAAK46F,SAAW/oE,EAAQzc,EAAKzD,SAAS3Q,EAAE4Q,WAAY,KAC1D5R,KAAK46F,aAIjBH,EAAOv6F,UAAU0gG,aAAe,SAAU1B,GACtC,IAAI3nE,EAAO,GACPypE,EAAc,GAClBhhG,KAAK8gG,sBAAsB5B,EAAQ,GAAI8B,GAGvC,IAFA,IAAI7xE,EAAU1vB,OAAO2V,KAAK4rF,GAAa/sE,QAAO,SAAU9mB,GAAK,MAA+B,WAAxB6zF,EAAY,GAAK7zF,MACjFtG,KAAI,SAAUgrB,GAAS,OAAOmvE,EAAY,GAAKnvE,MAC1C7wB,EAAI,EAAGiiB,EAAMkM,EAAQxuB,OAAQK,EAAIiiB,EAAKjiB,IAC3Cu2B,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAO,CAAE,MAASud,EAAQxd,SAAS3Q,EAAE4Q,WAAY,MACzE5R,KAAK4uB,OAAOqrB,6BACZ1iB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKtM,MAAS,eAAkBiyB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKtM,OAChD,IAAzCiyB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKtM,OAG7CtF,KAAK4uB,OAAO3jB,cAAc,CAAE,QAAWssB,IAAQ,IAEnDkjE,EAAOv6F,UAAU+gG,oBAAsB,WACnCjhG,KAAK66F,SAASqG,YAAY,OAAWlO,OAAQ,IAAI,EAAahzF,KAAK4uB,OAAQ5uB,KAAK06F,UAChF16F,KAAK66F,SAASqG,YAAY,OAAWjG,QAAS,IAAI,OAAcj7F,KAAK4uB,OAAQ5uB,KAAK06F,UAClF,IAAIyG,EAAanhG,KAAK06F,QAAQta,WAAW,uBACzC+gB,EAAWC,gBAAgB,OAASpO,OAAQ,IAAI,EAAmBhzF,KAAK4uB,OAAQ5uB,KAAK06F,UACrFyG,EAAWC,gBAAgB,OAAShsE,KAAM,IAAI,OAAap1B,KAAK4uB,OAAQ5uB,KAAK06F,UAC7EyG,EAAWC,gBAAgB,OAAS3M,cAAe,IAAI,EAA0Bz0F,KAAK4uB,OAAQ5uB,KAAK06F,UACnGyG,EAAWC,gBAAgB,OAAS7/C,OAAQ,IAAI,EAAmBvhD,KAAK4uB,OAAQ5uB,KAAK06F,UACrFyG,EAAWC,gBAAgB,OAASC,aAAc,IAAI,EAAyBrhG,KAAK4uB,OAAQ5uB,KAAK06F,UACjGyG,EAAWC,gBAAgB,OAASE,kBAAmB,IAAIxH,EAA8B95F,KAAK4uB,OAAQ5uB,KAAK06F,UAC3GyG,EAAWC,gBAAgB,OAASG,OAAQ,IAAI,EAAmBvhG,KAAK4uB,OAAQ5uB,KAAK06F,UACrFyG,EAAWC,gBAAgB,OAAS5N,aAAc,IAAI2G,EAAyBn6F,KAAK4uB,OAAQ5uB,KAAK06F,UACjGyG,EAAWC,gBAAgB,OAAS3M,cAAe,IAAI,EAA0Bz0F,KAAK4uB,OAAQ5uB,KAAK06F,UACnGyG,EAAWC,gBAAgB,OAAS3N,aAAc,IAAI2G,EAA+Bp6F,KAAK4uB,OAAQ5uB,KAAK06F,UACvGyG,EAAWC,gBAAgB,OAAShO,aAAc,IAAI,EAA0BpzF,KAAK4uB,OAAQ5uB,KAAK06F,UAClGyG,EAAWC,gBAAgB,OAAS1gB,aAAc,IAAI,EAAyB1gF,KAAK4uB,OAAQ5uB,KAAK06F,UACjGyG,EAAWC,gBAAgB,OAAS9/C,mBAAoB,IAAI,EAAmBthD,KAAK4uB,OAAQ5uB,KAAK06F,UACjGyG,EAAWC,gBAAgB,OAAShc,YAAa,IAAI,EAAoBplF,KAAK4uB,OAAQ5uB,KAAK06F,WAE/FD,EAAOv6F,UAAU24C,iBAAmB,WAChC,IAAIx1C,EAAQrD,KACRA,KAAK4uB,OAAOE,cAGhB9uB,KAAK4uB,OAAOG,GAAG,QAAoB/uB,KAAKihG,oBAAqBjhG,MAC7DA,KAAK4uB,OAAOG,GAAG,oBAAqB/uB,KAAK+9F,mBAAoB/9F,MAC7DA,KAAK4uB,OAAOG,GAAG,QAAqB/uB,KAAKsV,QAAStV,MAClDA,KAAK4uB,OAAOG,GAAG,QAAwB/uB,KAAKg9F,gBAAiBh9F,MAC7DA,KAAK4uB,OAAOG,GAAG,OAAiB/uB,KAAKo+F,gBAAiBp+F,MACtDA,KAAK4uB,OAAOG,GAAG,SAAsB,WAAc1rB,EAAMs3F,WAAY,IAAS36F,MAC9EA,KAAK4uB,OAAOG,GAAG,OAAgB/uB,KAAKg/F,oBAAqBh/F,QAO7Dy6F,EAAOv6F,UAAU49F,qBAAuB,SAAU3wF,GAC9C,IAAI9J,EAAQrD,KACRyM,EAAQU,EAAE6jB,OAAOrwB,OAAS,EAC9B,GAAI8L,EAAQ,EACR,OAAO4kB,QAAQlB,QAAQhjB,GAE3B,IAAIq0F,EAASr0F,EAAE6jB,OAAO,GAClBywE,EAASt0F,EAAE6jB,OAAOrf,SAASlF,EAAMmF,WAAY,KAC7CugB,EAAY,GACZuvE,EAAW,SAAUzuD,GAErB,IADA,IAAI0uD,EAAS,CAACH,EAAQC,GACbzgG,EAAI,EAAGA,EAAI2gG,EAAOhhG,OAAQK,IAC/BmxB,EAAU9lB,KAAK,IAAI,OAAU,QAAS,KAAMs1F,EAAOhwF,SAAS3Q,EAAE4Q,WAAY,KAAKigB,OAAO6J,IAAIr4B,EAAM43B,aAAa,MAAO,QAAS0mE,EAAOhwF,SAAS3Q,EAAE4Q,WAAY,KAAKrR,OAEpK0yC,EAAM9f,MAAM,OAAUC,GAAGjB,KAEzB7C,EAAQ,IAAI,OAChBoyE,EAASpyE,GACT,IAAIsyE,EAAQ,IAAI,OAAYz0F,EAAE6jB,QAC1B6wE,EAAYD,EAAM/uE,aAAavD,GAC/BwyE,EAAW9hG,KAAK6rB,KAAKuK,eAAc,GACnC2rE,EAAa,GACjB,GAAI/hG,KAAK6rB,KAAKyN,WAAY,CAEtB,IADA,IAAIqoE,EAAS,CAACH,EAAQC,GACbzgG,EAAI,EAAGA,EAAI2gG,EAAOhhG,OAAQK,IAC/B+gG,EAAW11F,KAAKrM,KAAKi7B,aAAa0mE,EAAOhwF,SAAS3Q,EAAE4Q,WAAY,KAAKigB,MAAO,QAAS8vE,EAAOhwF,SAAS3Q,EAAE4Q,WAAY,KAAKrR,MAE5HuhG,EAAS3uE,MAAM,OAAUC,GAAG2uE,SAG5BL,EAASI,GAEb,IAAI7D,EAAW,IAAI,OAKnB,OAJAj+F,KAAK6rB,KAAK+J,QAAQ,GAAIksE,GAAUzxE,MAAK,SAAUzvB,GAC3CyC,EAAM2+F,gBAAgBH,EAAWjhG,EAAEowB,QACnCitE,EAAS9tE,QAAQhjB,MAClB6kB,OAAM,SAAU7kB,GAAK,OAAO8wF,EAAS/rE,OAAO/kB,MACxC8wF,EAAS7tE,SAEpBqqE,EAAOv6F,UAAU+6B,aAAe,SAAU16B,EAAK0yB,EAAUxa,GACrD,OAAIA,aAAiBE,KACV,eAAiB,CAAEkZ,MAAOtxB,EAAK0yB,SAAUA,EAAUxa,MAAOA,IAE9D,IAAI,OAAUlY,EAAK0yB,EAAUxa,IAExCgiF,EAAOv6F,UAAU8hG,gBAAkB,SAAUC,EAASC,GAGlD,IAFA,IAAI1kE,EAAK,IAAI,OAAY0kE,GACrBp3D,EAAWm3D,EACNjhG,EAAI,EAAGA,EAAI8pC,EAASnqC,OAAQK,IAAK,CACtC,IAAImhG,EAAS3kE,EAAG3K,cAAa,IAAI,QAC5BM,MAAM,IAAI,OAAU,QAAS,KAAM2X,EAASn5B,SAAS3Q,EAAE4Q,WAAY,KAAKigB,OAAO6J,IAAI17B,KAAKi7B,aAAa,MAAO,QAAS6P,EAASn5B,SAAS3Q,EAAE4Q,WAAY,KAAKrR,QAAQ,GACvKuqC,EAASn5B,SAAS3Q,EAAE4Q,WAAY,KAAKm5B,MAAQo3D,EAAOp3D,MACpD,IAAIq3D,EAAYt3D,EAASn5B,SAAS3Q,EAAE4Q,WAAY,KAAK63C,MACjD44C,EAAaF,EAAO14C,MACpB24C,EAAUE,YACVx3D,EAASn5B,SAAS3Q,EAAE4Q,WAAY,KAAK63C,MACjCzpD,KAAKgiG,gBAAgBl3D,EAASn5B,SAAS3Q,EAAE4Q,WAAY,KAAK63C,MAAO04C,EAAO14C,QAGhF,IADA,IAAItyB,EAAOn3B,KAAK4uB,OAAOwI,WACdE,EAAI,EAAGA,EAAIH,EAAKx2B,OAAQ22B,IAE7B,IADA,IAAID,EAAMF,EAAKxlB,SAAS2lB,EAAE1lB,WAAY,KAC7B6lB,EAAI,EAAGA,EAAIJ,EAAIlI,QAAQxuB,OAAQ82B,IAIpC,IAHA,IAAID,EAAQH,EAAIlI,QAAQxd,SAAS8lB,EAAE7lB,WAAY,KAAKpD,gBAAgB5O,MAC/Dy3B,EAAIlI,QAAQxd,SAAS8lB,EAAE7lB,WAAY,KAAS,KAC7C,CAAEylB,EAAIlI,QAAQxd,SAAS8lB,EAAE7lB,WAAY,KAAS,MACzC2wF,EAAI,EAAGA,EAAI/qE,EAAM72B,OAAQ4hG,IAAK,CACnC,IAAIhiG,EAAM82B,EAAIlI,QAAQxd,SAAS8lB,EAAE7lB,WAAY,KAAKigB,MAAQ,MAAQ2F,EAAM7lB,SAAS4wF,EAAE3wF,WAAY,KAAKiQ,cAChGgK,EAAOu2E,EAAU3hD,MAAQ4hD,EAAWzvE,QAAUuvE,EAAO14C,MACrD+4C,EAAUxiG,KAAK4uB,OACnB,GAA0C,WAAtC4I,EAAM7lB,SAAS4wF,EAAE3wF,WAAY,KAAmB,CAChD,IAAI6wF,EAASL,EAAU3hD,MAAQ4hD,EAAaF,EACxCO,EAAOrrE,EAAIlI,QAAQxd,SAAS8lB,EAAE7lB,WAAY,KACzC+wF,gBACe,kBAATD,IACPA,EAAO,eAASA,EAAMn8F,SAE1BukC,EAASn5B,SAAS3Q,EAAE4Q,WAAY,KAAKwlB,WAAW,GAAK72B,GAAOmiG,EAAOA,EAAKp/F,KAAKk/F,EAASC,EAAQprE,EAAIlI,QAAQxd,SAAS8lB,EAAE7lB,WAAY,MAAQ,QAGzIk5B,EAASn5B,SAAS3Q,EAAE4Q,WAAY,KAAKwlB,WAAW,GAAK72B,GAAO,OAAS62B,WAAWI,EAAM7lB,SAAS4wF,EAAE3wF,WAAY,KAAKiQ,eAAegK,EAAMwL,EAAIlI,QAAQxd,SAAS8lB,EAAE7lB,WAAY,KAAKigB,QAMnM,OAAOowE,GAEJxH,EAhvBgB,GCvBvB,EAAqC,WACrC,SAASmI,IACL5iG,KAAK6iG,cAAgB,GAkBzB,OAhBAD,EAAoB1iG,UAAUkhG,gBAAkB,SAAUpxF,EAAMxB,GAC5DwB,EAAuB,kBAATA,EAAoBA,EAAO,eAAa,OAAUA,GAC5D,eAAkBhQ,KAAK6iG,cAAc,GAAK7yF,MAC1ChQ,KAAK6iG,cAAc,GAAK7yF,GAAQxB,IAGxCo0F,EAAoB1iG,UAAUsgF,gBAAkB,SAAUxwE,GAEtD,GADAA,EAAuB,kBAATA,EAAoBA,EAAO,eAAa,OAAUA,GAC5D,eAAkBhQ,KAAK6iG,cAAc,GAAK7yF,IAE1C,KAAM,oBAAsBA,EAAO,gBAGnC,OAAOhQ,KAAK6iG,cAAc,GAAK7yF,IAGhC4yF,EApB6B,G,YCApC,EAAgC,WAChC,SAASE,IACL9iG,KAAK+iG,SAAW,GA0BpB,OAxBAD,EAAe5iG,UAAU8iG,SAAW,SAAUhzF,EAAMxB,GAC5C,eAAkBxO,KAAK+iG,SAAS,GAAK/yF,MACrChQ,KAAK+iG,SAAS,GAAK/yF,GAAQxB,IAGnCs0F,EAAe5iG,UAAUkgF,WAAa,SAAUpwE,GAC5C,GAAI,eAAkBhQ,KAAK+iG,SAAS,GAAK/yF,IAErC,KAAM,eAAiBA,EAAO,qBAElC,OAAOhQ,KAAK+iG,SAAS,GAAK/yF,IAE9B8yF,EAAe5iG,UAAU+iG,wBAA0B,SAAUz0F,EAAM00F,EAAcviF,GACzEuiF,GACA10F,EAAK20F,yBAA2B,IAAI,OAAyB30F,EAAKogB,OAAQpgB,EAAKqgB,gBAC/ErgB,EAAK20F,yBAAyBxiF,OAASA,GAGnCnS,EAAK20F,2BACL30F,EAAK20F,yBAAyBvnD,sBAC9BptC,EAAK20F,8BAA2B53F,IAIrCu3F,EA5BwB,GCA/B,EAAiC,WACjC,SAASM,IACLpjG,KAAKqjG,YAAc,GAkBvB,OAhBAD,EAAgBljG,UAAUghG,YAAc,SAAUlxF,EAAMxB,GACpD,IAAI80F,EAAQ,eAAa,OAAYtzF,GACjC,eAAkBhQ,KAAKqjG,YAAY,GAAKC,MACxCtjG,KAAKqjG,YAAY,GAAKC,GAAS90F,IAGvC40F,EAAgBljG,UAAU66F,YAAc,SAAU/qF,GAC9C,IAAIszF,EAAQ,eAAa,OAAYtzF,GACrC,GAAI,eAAkBhQ,KAAKqjG,YAAY,GAAKC,IAExC,KAAM,gBAAkBA,EAAQ,gBAGhC,OAAOtjG,KAAKqjG,YAAY,GAAKC,IAG9BF,EApByB,G,wBCPhC,GAAwC,WACxC,IAAI9jG,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxCK,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAM5D,GAA8B,SAAUiC,GAExC,SAAS0gG,IACL,OAAkB,OAAX1gG,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAuB/D,OAzBA,GAAUujG,EAAc1gG,GAIxBzC,GAAW,CACP,eAAS,KACVmjG,EAAarjG,UAAW,gBAAY,GACvCE,GAAW,CACP,eAAS,IACVmjG,EAAarjG,UAAW,iBAAa,GACxCE,GAAW,CACP,eAAS,IACVmjG,EAAarjG,UAAW,mBAAe,GAC1CE,GAAW,CACP,kBACDmjG,EAAarjG,UAAW,yBAAqB,GAChDE,GAAW,CACP,gBAAS,IACVmjG,EAAarjG,UAAW,yBAAqB,GAChDE,GAAW,CACP,gBAAS,IACVmjG,EAAarjG,UAAW,iBAAa,GACxCE,GAAW,CACP,eAAS,OACVmjG,EAAarjG,UAAW,gBAAY,GAChCqjG,EA1BsB,CA2B/B,QClDE,GAAwC,WACxC,IAAIjkG,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxC,GAA0C,SAAUM,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAM5D,GAAuC,SAAUiC,GAEjD,SAAS2gG,IACL,OAAkB,OAAX3gG,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAQ/D,OAVA,GAAUwjG,EAAuB3gG,GAIjC,GAAW,CACP,eAAS,eACV2gG,EAAsBtjG,UAAW,gBAAY,GAChD,GAAW,CACP,gBAAS,IACVsjG,EAAsBtjG,UAAW,oBAAgB,GAC7CsjG,EAX+B,CAYxC,Q,aC7BE,GAAwB,WAOxB,SAASC,EAAO70E,GACZ5uB,KAAK4uB,OAASA,EACd5uB,KAAK64C,mBAyHT,OA/GA4qD,EAAOvjG,UAAU2zB,OAAS,SAAUkoE,GAChC,IAAIzpE,EAAOtyB,KAAK4uB,OAChBmtE,EAAe,eAAkBA,GAAgB,GAAKA,EAClD,eAAgBzpE,GAChBA,EAAK1Y,OAAO,QAAqB,CAAEs5B,SAAUlzC,KAAM24F,QAAS34F,KAAK6zB,OAAQ6vE,KAAM3H,IAG/EA,IAAiBzpE,EAAKmB,eAAelzB,KAGrC+xB,EAAKmB,eAAelzB,IAAM,gBAAgBkd,KAAKs+E,GAAgBj1F,WAAWi1F,GAAcnqF,WAAamqF,EAAanqF,WAClH0gB,EAAKvqB,YAEA/H,KAAK2jG,eACVrxE,EAAKhd,WAObmuF,EAAOvjG,UAAU24C,iBAAmB,WAC5B74C,KAAK4uB,OAAOE,cAGhB9uB,KAAK4uB,OAAOG,GAAG,QAA4B/uB,KAAKiV,kBAAmBjV,MACnEA,KAAK4uB,OAAOG,GAAG,QAAuB/uB,KAAK4jG,iBAAkB5jG,MAC7DA,KAAK4uB,OAAOG,GAAG,QAAgB/uB,KAAKwS,QAASxS,MAC7CA,KAAK6jG,mBAAqB7jG,KAAK8jG,iBAAiBl+F,KAAK5F,MACrDA,KAAK4uB,OAAOiqB,iBAAiB,OAAuB74C,KAAK6jG,oBACzD7jG,KAAK4uB,OAAOG,GAAG,OAAoB/uB,KAAK+jG,iBAAkB/jG,QAM9DyjG,EAAOvjG,UAAU07C,oBAAsB,WAC/B57C,KAAK4uB,OAAOE,cAGhB9uB,KAAK4uB,OAAOyF,IAAI,QAA4Br0B,KAAKiV,mBACjDjV,KAAK4uB,OAAOyF,IAAI,QAAuBr0B,KAAK4jG,kBAC5C5jG,KAAK4uB,OAAOyF,IAAI,QAAgBr0B,KAAKwS,SACrCxS,KAAK4uB,OAAOgtB,oBAAoB,OAAuB57C,KAAK6jG,oBAC5D7jG,KAAK4uB,OAAOyF,IAAI,OAAoBr0B,KAAK+jG,oBAQ7CN,EAAOvjG,UAAUsS,QAAU,WACvBxS,KAAK47C,uBAOT6nD,EAAOvjG,UAAU+U,kBAAoB,SAAU9H,GACvCA,EAAE0M,SAAW7Z,KAAK8U,kBAGjB,eAAkB3H,EAAE6N,WAAWza,KAMhCP,KAAK4uB,OAAOhV,OAAO,QAAqB,CACpCmU,YAAa,YAAavf,KAAM,SANpCxO,KAAK4uB,OAAOhV,OAAO,QAAqB,CACpCmU,YAAa,YAAavf,KAAM,OAAoButF,aAAc/7F,KAAK4uB,OAAO6E,eAAelzB,QAgBzGkjG,EAAOvjG,UAAU0jG,iBAAmB,SAAUz2F,GAC1CnN,KAAK4uB,OAAO3mB,QAAQ,OAAuB,eAAOkF,EAAG,CACjD4uF,aAAc/7F,KAAK4uB,OAAO6E,eAAelzB,IAAKwtB,YAAa,YAAavf,KAAM,WAUtFi1F,EAAOvjG,UAAU4jG,iBAAmB,SAAU32F,GAC1CnN,KAAK2jG,cAAkC,cAAlBx2F,EAAE4gB,aAE3B01E,EAAOvjG,UAAU6jG,iBAAmB,SAAU52F,GACpB,cAAlBA,EAAE4gB,aACF/tB,KAAK4uB,OAAO3jB,cAAc,CAAEwoB,eAAgB,CAAElzB,IAAK,MAAQ,IASnEkjG,EAAOvjG,UAAU4U,cAAgB,WAC7B,MAAO,UAEJ2uF,EAlIgB,GCAvB,GAA0B,WAO1B,SAASO,EAASp1E,GACd5uB,KAAKikG,QAAU,GACfjkG,KAAKkkG,YAAa,EAClBlkG,KAAK4uB,OAASA,EACd5uB,KAAK64C,mBAuKT,OArKAmrD,EAAS9jG,UAAU24C,iBAAmB,WAC9B74C,KAAK4uB,OAAOE,cAGhB9uB,KAAKmkG,YAAc,CAAC,CAAEz1F,MAAO,OAAoBiqF,QAAS34F,KAAKokG,cAC3D,CAAE11F,MAAO,OAA4BiqF,QAAS34F,KAAKqkG,mBAEvD,eAAuBrkG,KAAK4uB,OAAQ5uB,KAAKmkG,aAAa,EAAMnkG,QAMhEgkG,EAAS9jG,UAAU07C,oBAAsB,WACjC57C,KAAK4uB,OAAOE,aAGhB,eAAuB9uB,KAAK4uB,OAAQ5uB,KAAKmkG,aAAa,IAE1DH,EAAS9jG,UAAUkkG,aAAe,WAC1BpkG,KAAKkkG,aACLlkG,KAAKkkG,YAAa,EAClBlkG,KAAK0wF,WAAW1wF,KAAKikG,QAASjkG,KAAKskG,YACnCtkG,KAAKskG,WAAatkG,KAAKikG,QAAU,KAUzCD,EAAS9jG,UAAUgQ,KAAO,SAAUyoB,EAAY4rE,GAC5C,IAAInvF,EAAOpV,KAAKwkG,gBAAgB7rE,GAC5BxJ,EAAUnvB,KAAK02B,WAAWthB,EAAMmvF,GACpCvkG,KAAK4uB,OAAOhV,OAAO,QAAuB,CAAEC,OAAQ,SACpD,IAAK,IAAI7Y,EAAI,EAAGA,EAAImuB,EAAQxuB,OAAQK,IAChCmuB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKglB,SAAU,EAElD52B,KAAK0wF,WAAWvhE,IASpB60E,EAAS9jG,UAAUgS,KAAO,SAAUymB,EAAY8rE,GAC5C,IAAIrvF,EAAOpV,KAAKwkG,gBAAgB7rE,GAC5BxJ,EAAUnvB,KAAK02B,WAAWthB,EAAMqvF,GACpCzkG,KAAK4uB,OAAOhV,OAAO,QAAuB,CAAEC,OAAQ,SACpD,IAAK,IAAI7Y,EAAI,EAAGA,EAAImuB,EAAQxuB,OAAQK,IAChCmuB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKglB,SAAU,EAElD52B,KAAK0wF,WAAWvhE,IAEpB60E,EAAS9jG,UAAUskG,gBAAkB,SAAUjkG,GAC3C,IAAImkG,EAAY,GAOhB,OALIA,EADe,kBAARnkG,EACK,CAACA,GAGDA,EAETmkG,GAEXV,EAAS9jG,UAAUw2B,WAAa,SAAUthB,EAAMuvF,GAC5C,IAAIthG,EAAQrD,KACRmvB,EAAU,gBAAqB/Z,GAAM,SAAU7U,GAC/C,OAAO,gBAAqB8C,EAAMurB,OAAOg2E,aAAa,SAAUr3C,GAC5D,GAAIA,EAAK,GAAKo3C,KAAcpkG,EACxB,OAAOgtD,KAGZ,MAEP,OAAOp+B,GAEX60E,EAAS9jG,UAAU2kG,mBAAqB,SAAU11E,EAAS21E,GAEvD,YAD4B,IAAxBA,IAAkCA,EAAsB,KACxD,eAAgB9kG,KAAK4uB,UACrB5uB,KAAKikG,QAAU90E,EACfnvB,KAAKskG,WAAaQ,EAClB9kG,KAAK4uB,OAAOm2E,aACL,IAIff,EAAS9jG,UAAUmkG,iBAAmB,WAClC,GAAIrkG,KAAKkkG,WACL,IAAK,IAAIljG,EAAI,EAAGA,EAAIhB,KAAKikG,QAAQtjG,OAAQK,IACrChB,KAAKikG,QAAQtyF,SAAS3Q,EAAE4Q,WAAY,KAAKglB,SAAW52B,KAAKikG,QAAQtyF,SAAS3Q,EAAE4Q,WAAY,KAAKglB,SAYzGotE,EAAS9jG,UAAUwwF,WAAa,SAAUvhE,EAAS21E,GAC/C,IAAIzhG,EAAQrD,KAGZ,QAF4B,IAAxB8kG,IAAkCA,EAAsB,IAC5D9kG,KAAKkkG,YAAa,EACblkG,KAAK6kG,mBAAmB11E,EAAS21E,GAAtC,CAGAA,EAAuBA,EAAoBnkG,OAAS,EAAKmkG,EAAsB31E,EAC/E,IAAIpJ,EAAO,CACPgI,YAAa,cACbtf,QAAQ,EACR0gB,QAAS21E,GAETr2F,EAAS,SACTzO,KAAK4uB,OAAOiJ,yBAA2B73B,KAAK4uB,OAAO8D,eAChD1yB,KAAK4uB,OAAOo2E,YAAYryE,cAAcxD,QAAQxuB,OAAS,IAC1DX,KAAK4uB,OAAO4tE,cAAcyI,YAAc,IAE5CjlG,KAAK4uB,OAAO3mB,QAAQ,OAAoB8d,GAAM,SAAUm/E,GACpD,IAAIC,EAAkB9hG,EAAMurB,OAAO8H,aAEnC,GADAvH,EAAU,eAAkBA,GAAWg2E,EAAkBh2E,EACrD+1E,EAAa,GAAKz2F,GAKlB,OAJApL,EAAMurB,OAAOhV,OAAO,QAAqB,CAAEsrF,aAAcA,SACrD/1E,EAAQxuB,OAAS,IACjBwuB,EAAQ,GAAGyH,SAAU,IAW7B,GAPI,gBAAgBvzB,EAAMurB,SACtBvrB,EAAMurB,OAAO4tE,cAAc4I,cAE3B/hG,EAAMurB,OAAOktE,gBAAkBz4F,EAAMurB,OAAOy2E,qBAAqB1kG,SAChE0C,EAAMurB,OAAOk0D,kBAAkBC,kBAChC1/E,EAAMurB,OAAO02E,iBAEbjiG,EAAMurB,OAAOqrB,2BAA4B,CACzC,IAAIsrD,EAAoBp2E,EAAQ8E,QAAO,SAAUuxE,GAAQ,OAAQL,EAAgBnrE,MAAK,SAAUyrE,GAAQ,OAAOD,EAAK3zE,QAAU4zE,EAAK5zE,YAC/H0zE,EAAkB5kG,QAClB0C,EAAMurB,OAAOhV,OAAO,QAAgCuV,QAIpD9rB,EAAMurB,OAAOsrB,gBAAkB/qB,EAAQxuB,QACvC0C,EAAMurB,OAAOhV,OAAO,QAA8B,CAAE8rF,WAAW,IAEnEriG,EAAMurB,OAAOhV,OAAO,QAAgCuV,GAExD,IAAI8B,EAAS,CACTlD,YAAa,cACboB,QAAS21E,GAEbzhG,EAAMurB,OAAO3mB,QAAQ,OAAuBgpB,GACP,QAAjC5tB,EAAMurB,OAAO6H,iBACbpzB,EAAMurB,OAAOtZ,aAGjBtV,KAAK4uB,OAAOinB,UAAY71C,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,QAC1DX,KAAK4uB,OAAOwxE,yBAGb4D,EAlLkB,G,0BCNzB,GAAwC,WACxC,IAAI1kG,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxC,GAA0C,SAAUM,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAS5D,GAAiC,SAAUiC,GAE3C,SAAS8iG,IACL,IAAItiG,EAAmB,OAAXR,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAEhE,OADAqD,EAAMyzC,WAAa,GACZzzC,EA6EX,OAjFA,GAAUsiG,EAAiB9iG,GAW3B8iG,EAAgBzlG,UAAUk2C,aAAe,SAAU39B,GAC/CzY,KAAKg4C,SAAWv/B,GAMpBktF,EAAgBzlG,UAAUy8B,aAAe,WACrC,OAAO38B,KAAKg4C,UAOhB2tD,EAAgBzlG,UAAUoiD,YAAc,SAAUC,QAC/B,IAAXA,IAAqBA,EAAS,SACNh3C,IAAxBvL,KAAK+/C,iBACL//C,KAAK82C,WAAW,eAAa,OAAU,OAAS4L,UAAY,CAAEtpB,GAAI,eAAQp5B,KAAK+/C,eAAgBwC,GAC3FgY,SAAU,wBAEehvD,IAA7BvL,KAAKggD,sBACLhgD,KAAK82C,WAAW,eAAa,OAAU,OAASgM,eAAiB,CAAE1pB,GAAI,eAAQp5B,KAAKggD,oBAAqBuC,GACrGgY,SAAU,6BAEgBhvD,IAA9BvL,KAAKigD,uBACLjgD,KAAK82C,WAAW,eAAa,OAAU,OAASuM,iBAAmB,CAAEjqB,GAAI,eAAQp5B,KAAKigD,qBAAsBsC,GACxGgY,SAAU,0BAQtBorC,EAAgBzlG,UAAUw5F,YAAc,SAAUlrF,GAC9C,OAAOxO,KAAK82C,WAAW,eAAa,OAAUtoC,KAOlDm3F,EAAgBzlG,UAAU0lG,oBAAsB,SAAUvwF,GACtDrV,KAAKiL,cAAcoK,GAAM,IAE7B,GAAW,CACP,kBACDswF,EAAgBzlG,UAAW,YAAQ,GACtC,GAAW,CACP,kBACDylG,EAAgBzlG,UAAW,aAAS,GACvC,GAAW,CACP,kBACDylG,EAAgBzlG,UAAW,kBAAc,GAC5C,GAAW,CACP,kBACDylG,EAAgBzlG,UAAW,cAAU,GACxC,GAAW,CACP,kBACDylG,EAAgBzlG,UAAW,sBAAkB,GAChD,GAAW,CACP,kBACDylG,EAAgBzlG,UAAW,2BAAuB,GACrD,GAAW,CACP,kBACDylG,EAAgBzlG,UAAW,4BAAwB,GACtD,GAAW,CACP,kBACDylG,EAAgBzlG,UAAW,uBAAmB,GAC1CylG,EAlFyB,CAmFlC,QAKE,GAA8B,SAAU9iG,GAExC,SAASgjG,IACL,OAAkB,OAAXhjG,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAK/D,OAPA,GAAU6lG,EAAchjG,GAIxB,GAAW,CACP,eAAW,GAAI,KAChBgjG,EAAa3lG,UAAW,eAAW,GAC/B2lG,EARsB,CAS/B,QCpHE,GAA2B,WAQ3B,SAASC,EAAUl3E,EAAQC,GACvB7uB,KAAK+lG,YAAc,GACnB/lG,KAAKgmG,UAAW,EAChBhmG,KAAK4uB,OAASA,EACd5uB,KAAK6uB,eAAiBA,EACtB7uB,KAAK64C,mBA6ST,OAvSAitD,EAAU5lG,UAAU24C,iBAAmB,WAC/B74C,KAAK4uB,OAAOE,cAGhB9uB,KAAK4uB,OAAOG,GAAG,QAAqB/uB,KAAKimG,WAAYjmG,MACrDA,KAAK4uB,OAAOG,GAAG,QAAmB/uB,KAAKkmG,eAAgBlmG,MACvDA,KAAK4uB,OAAOG,GAAG,OAAc/uB,KAAKsoC,aAActoC,MAChDA,KAAK4uB,OAAOG,GAAG,QAAgB/uB,KAAKimG,WAAYjmG,MAChD,OAAa8L,IAAI9L,KAAK4uB,OAAOxrB,QAAS,UAAWpD,KAAKmmG,aAAcnmG,QAMxE8lG,EAAU5lG,UAAU07C,oBAAsB,WAClC57C,KAAK4uB,OAAOE,cAGhB9uB,KAAK4uB,OAAOyF,IAAI,QAAmBr0B,KAAKkmG,gBACxClmG,KAAK4uB,OAAOyF,IAAI,QAAqBr0B,KAAKimG,YAC1CjmG,KAAK4uB,OAAOyF,IAAI,OAAcr0B,KAAKsoC,cACnCtoC,KAAK4uB,OAAOyF,IAAI,QAAgBr0B,KAAKimG,YACrC,OAAa9gG,OAAOnF,KAAK4uB,OAAOxrB,QAAS,UAAWpD,KAAKmmG,gBAE7DL,EAAU5lG,UAAUooC,aAAe,SAAUn7B,GACzC,IAAI7M,EAAS6M,EAAE7M,OAEfA,EAAS,gBAAaA,EAAQ,cAElCwlG,EAAU5lG,UAAUimG,aAAe,SAAUh5F,GACzC,IAAI9J,EAAQrD,KACRomG,EAAOpmG,KAAK4uB,OACZy3E,EAAY,SAAS5oF,KAAK6oF,UAAUC,UACpCC,EAAyBxmG,KAAK4uB,OAAO63E,4BAIzC,GAHkB,KAAdt5F,EAAEqG,SAAkB6yF,GAAal5F,EAAEu5F,UAAYN,EAAKrpD,QACpD/8C,KAAK2mG,OAELH,EAAuB7lG,QAAwB,KAAdwM,EAAEqG,WAAqB6yF,GAAal5F,EAAEy5F,SAAaP,GAAal5F,EAAEu5F,WAAcN,EAAKrpD,OAAQ,CAC9H,IAAIz8C,EAAS,eAAQsN,SAASyT,cAAe,IAAM,QACnD,IAAKrhB,KAAK6mG,oBAAsBvmG,IAAW8lG,EAAKvgC,aAAalwB,cAA2C,UAA3BywD,EAAKvgC,aAAaihC,MAC3D,SAAhCV,EAAKtjB,kBAAkBgkB,MAAgE,SAA7CV,EAAKtjB,kBAAkBikB,kBACjE,OAEJ/mG,KAAKqhB,cAAgBzT,SAASyT,cAC9B,IAAI2lF,EAAMzgG,OAAO0gG,QACbC,EAAM3gG,OAAOgsD,QACjBvyD,KAAK6mG,kBAAkB9mF,QACvB3S,YAAW,WACP/J,EAAMge,cAActB,QACpBxZ,OAAOgoE,SAASy4B,EAAKE,GACrB7jG,EAAM8jG,MAAM9jG,EAAMwjG,kBAAkBpuF,MAAO+tF,EAAuB,GAAGxR,SAAUwR,EAAuB,GAAGY,YAAY,MACtHf,EAAY,IAAM,MAW7BP,EAAU5lG,UAAUinG,MAAQ,SAAUt7E,EAAMmpE,EAAUjF,GASlD,IARA,IAGI72D,EACAzgB,EACA4uF,EAEA9vE,EAPA6uE,EAAOpmG,KAAK4uB,OACZ04E,EAAOvX,EACPwX,EAAOvS,EAIP79D,EAAOtL,EAAK5nB,MAAM,MAEbrD,EAAI,EAAGA,EAAIu2B,EAAKx2B,OAAQC,IAAK,CAGlC,GAFA22B,EAAOJ,EAAKxlB,SAAS/Q,EAAEgR,WAAY,KAAK3N,MAAM,MAC9CqjG,EAAOvX,EACFnvF,IAAMu2B,EAAKx2B,OAAS,GAA0C,KAArCw2B,EAAKxlB,SAAS/Q,EAAEgR,WAAY,MAAgB,gBAAYw0F,EAAKoB,cAAcD,IAAQ,CAC7GD,IACA,MAEJ,IAAK,IAAI7mG,EAAI,EAAGA,EAAI82B,EAAK52B,OAAQF,IAAK,CAElC,GADA4mG,EAAUjB,EAAKqB,iBAAiBF,EAAMD,IACjCD,EAAS,CACVC,IACA,MAIJ,GAFApuE,EAAMktE,EAAKsB,iBAAiBJ,GAC5B7uF,EAAQygB,EAAI+e,YAAc/e,EAAI+e,WAAJ/e,CAAgB3B,EAAK5lB,SAASlR,EAAEmR,WAAY,MAAQ2lB,EAAK5lB,SAASlR,EAAEmR,WAAY,KACtGsnB,EAAIyc,eAAiBzc,EAAIvC,eAAiBuC,EAAI0d,SAAU,CACxD,IAAI7wB,EAAO,CACPwJ,OAAQ2J,EACRrN,KAAMpT,EACNu8E,SAAUuS,GAEdvnG,KAAK4uB,OAAO3mB,QAAQ,OAAoB8d,GACxCwhF,EAAOxhF,EAAKivE,SACPjvE,EAAKtX,QACF23F,EAAKuB,aACY,WAAbzuE,EAAI1qB,KACJxO,KAAK4uB,OAAO+4E,WAAWC,WAAWL,EAAMruE,EAAIrH,MAAO/qB,WAAWif,EAAK8F,OAGnEu6E,EAAKuB,WAAWC,WAAWL,EAAMruE,EAAIrH,MAAO9L,EAAK8F,OAKjEy7E,IAEJC,IAEJnB,EAAKpiB,gBAAgB6jB,mBAAmB,CAAE7S,SAAUA,EAAU8S,UAAW/X,GAAY,CAAEiF,SAAUuS,EAAO,EAAGO,UAAWR,EAAO,IAC7H,IAAI3lD,EAAO3hD,KAAK4uB,OAAO64E,iBAAiBF,EAAO,EAAGD,EAAO,GACrD3lD,GACA,eAAUA,EAAM,CAAC,UAAW,aAAc,IAE9C3hD,KAAK6mG,kBAAkBpuF,MAAQ,IAEnCqtF,EAAU5lG,UAAU+lG,WAAa,WAC7BjmG,KAAKya,KAAOza,KAAK6uB,eAAeuxD,WAAW,gBAC3CpgF,KAAK4uB,OAAOyF,IAAI,QAAqBr0B,KAAKimG,YAC1CjmG,KAAK6mG,kBAAoB7mG,KAAK4uB,OAAOrqB,cAAc,WAAY,CAC3DC,UAAW,cACX0K,OAAQ,aACRF,MAAO,CAAEszE,SAAU,KAAM,aAActiF,KAAKya,KAAKC,YAAY,gBAEjE1a,KAAK4uB,OAAOxrB,QAAQsB,YAAY1E,KAAK6mG,oBAEzCf,EAAU5lG,UAAUgmG,eAAiB,SAAU/4F,GAC1B,cAAbA,EAAEwT,OACF3gB,KAAK2mG,OAEa,mBAAbx5F,EAAEwT,QACP3gB,KAAK2mG,MAAK,IAGlBb,EAAU5lG,UAAU6nG,YAAc,SAAUC,GACxC,GAAyC,KAArCzhG,OAAO0hG,eAAer2F,WAAmB,CACzC5R,KAAK6mG,kBAAkBpuF,MAAQzY,KAAK+lG,YAAc,GAClD,IAAI5uE,EAAOn3B,KAAK4uB,OAAOs5E,cACvB,GAA2C,SAAvCloG,KAAK4uB,OAAOk0D,kBAAkBgkB,KAAiB,CAC/C,IAAIqB,EAAkBnoG,KAAK4uB,OAAOixD,wBAAwBp7B,MAAK,SAAUjC,EAAGhjD,GAAK,OAAOgjD,EAAIhjD,KAC5F,GAAIwoG,EAAY,CAEZ,IADA,IAAII,EAAkB,GACbpnG,EAAI,EAAGA,EAAIhB,KAAK4uB,OAAO0qE,oBAAoB34F,OAAQK,IACxDonG,EAAgBz2F,SAAS3Q,EAAE4Q,WAAY,KAAO5R,KAAK4uB,OAC9C0qE,oBAAoB3nF,SAAS3Q,EAAE4Q,WAAY,KAAKswC,WAEzDliD,KAAKqoG,YAAYD,GAAiB,EAAO,KAAMJ,GAC/ChoG,KAAK+lG,aAAe,KAExB,IAAS/kG,EAAI,EAAGA,EAAImnG,EAAgBxnG,OAAQK,IAAK,CACzCA,EAAI,IACJhB,KAAK+lG,aAAe,MAExB,IAAIuC,EAAW,GACXpT,EAAMiT,EAAgBx2F,SAAS3Q,EAAE4Q,WAAY,MAC5C,gBAAgB5R,KAAK4uB,UAAY5uB,KAAK4uB,OAAO6D,sBAC7CzyB,KAAK4uB,OAAOiJ,yBAA2B73B,KAAK4uB,OAAOorE,uBAAuBC,aAC1Ej6F,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,QAAUX,KAAK4uB,OAAO+D,cAAc6F,qBACvE08D,EAAM/9D,EAAKtwB,KAAI,SAAU0hG,GAAK,OAAOA,EAAE79F,aAAa,oBAAqB1G,QAAQmkG,EAAgBx2F,SAAS3Q,EAAE4Q,WAAY,KAAKA,aAEjI02F,EAASj8F,KAAKvJ,MAAMwlG,EAAU,GAAG56F,MAAMpK,KAAK6zB,EAAKxlB,SAASujF,EAAItjF,WAAY,KAAK8Q,iBAAiB,6BAChG1iB,KAAKqoG,YAAYC,GAAU,EAAO,KAAMN,QAG3C,CACD,IAAIjlE,EAAM/iC,KAAKwoG,oBACf,GAAIzlE,EAAI6qD,OAAQ,CACZ,GAAIoa,EAAY,CACZ,IAAIS,EAAU,GACd,IAASznG,EAAI,EAAGA,EAAI+hC,EAAI2lE,WAAW/nG,OAAQK,IAAK,CAC5C,IAAI8xF,EAAY9yF,KAAK4uB,OAAO+5E,uBAAuB5lE,EAAI2lE,WAAW/2F,SAAS3Q,EAAE4Q,WAAY,MACpFkhF,EAAU5tF,UAAUmB,SAAS,WAC9BoiG,EAAQp8F,KAAKymF,GAGrB9yF,KAAKqoG,YAAYI,GAAS,EAAO,KAAMT,GACvChoG,KAAK+lG,aAAe,KAExB,IAAS/kG,EAAI,EAAGA,EAAI+hC,EAAI6lE,WAAWjoG,OAAQK,IAAK,CACxCA,EAAI,IACJhB,KAAK+lG,aAAe,MAExB,IAAItkD,EAAQ,GAAG/zC,MAAMpK,KAAK6zB,EAAK4L,EAAI6lE,WAAWj3F,SAAS3Q,EAAE4Q,WAAY,MACjE8Q,iBAAiB,4CACrB1iB,KAAKqoG,YAAY5mD,GAAO,EAAO,KAAMumD,SAIzChoG,KAAKqoG,YAAY,GAAG36F,MAAMpK,KAAKtD,KAAK4uB,OAAOxrB,QAAQ+U,uBAAuB,+BAA+B,EAAM,KAAM6vF,GAG7H,IAAIjiF,EAAO,CACP8F,KAAM7rB,KAAK+lG,YACXt3F,QAAQ,GAGZ,GADAzO,KAAK4uB,OAAO3mB,QAAQ,OAAmB8d,GACnCA,EAAKtX,OACL,OAEJzO,KAAK6mG,kBAAkBpuF,MAAQzY,KAAK+lG,YAAchgF,EAAK8F,KAClD,OAAQqwB,UAAUt1C,MAAM,qBAIzB5G,KAAK6mG,kBAAkBv1B,kBAAkB,EAAGtxE,KAAK6mG,kBAAkBpuF,MAAM9X,QAHzEX,KAAK6mG,kBAAkBp+E,SAK3BzoB,KAAKgmG,UAAW,IAGxBF,EAAU5lG,UAAUmoG,YAAc,SAAU5mD,EAAOonD,EAAQC,EAAUd,GAEjE,IADA,IAAItuC,EAAgC,kBAAbjY,EAAM,GACpBnqB,EAAI,EAAGA,EAAImqB,EAAM9gD,OAAQ22B,IAAK,CACnC,GAAI0wE,GAAca,EAAQ,CACtB,IAAIE,EAASp3F,SAAS8vC,EAAM9vC,SAAS2lB,EAAE1lB,WAAY,KAAKlH,aAAa,QAAwB,IAC7F1K,KAAK+lG,aAAe/lG,KAAK4uB,OAAO8H,aAAa/kB,SAASo3F,EAAOn3F,WAAY,KAAKswC,WAAa,KAE3FwX,EACKjY,EAAM9vC,SAAS2lB,EAAE1lB,WAAY,KAAK1M,UAAUmB,SAAS,YACtDrG,KAAK+lG,aAAetkD,EAAM9vC,SAAS2lB,EAAE1lB,WAAY,KAAK62B,WAI1DzoC,KAAK+lG,aAAetkD,EAAM9vC,SAAS2lB,EAAE1lB,WAAY,KAEjD0lB,EAAImqB,EAAM9gD,OAAS,IACnBX,KAAK+lG,aAAe+C,KAUhChD,EAAU5lG,UAAUymG,KAAO,SAAUqB,GAC7Bp6F,SAASo7F,sBAAsB,SAAWhpG,KAAK6mG,oBAC/C7mG,KAAK+nG,YAAYC,GACjBp6F,SAASq7F,YAAY,QACrBjpG,KAAK6mG,kBAAkB/mF,QAEvB9f,KAAKgmG,WACLz/F,OAAO0hG,eAAeiB,kBACtBlpG,KAAKgmG,UAAW,IASxBF,EAAU5lG,UAAU4U,cAAgB,WAChC,MAAO,aAQXgxF,EAAU5lG,UAAUsS,QAAU,WAC1BxS,KAAK47C,sBACD57C,KAAK6mG,mBACL,gBAAO7mG,KAAK6mG,oBAGpBf,EAAU5lG,UAAUsoG,kBAAoB,WACpC,IAAIvQ,EAAUj4F,KAAK4uB,OACfmU,EAAM,CAAE6qD,QAAQ,GACpB,GAAuC,SAAnCqK,EAAQnV,kBAAkBgkB,KAAiB,CAC3C,IAAIqC,EAAgBlR,EAAQwO,4BACxBtO,OAAM,EACNyQ,EAAa,GACb5nG,OAAI,EACR,IAAKA,EAAI,EAAGA,EAAImoG,EAAcxoG,OAAQK,IAIlC,GAHImoG,EAAcx3F,SAAS3Q,EAAE4Q,WAAY,KAAKw1F,YAAYzmG,QACtDioG,EAAWv8F,KAAK88F,EAAcx3F,SAAS3Q,EAAE4Q,WAAY,KAAKojF,UAE1DmU,EAAcx3F,SAAS3Q,EAAE4Q,WAAY,KAAKw1F,YAAYzmG,SACjDw3F,IACDA,EAAMz6D,KAAKkqC,UAAUuhC,EAAcx3F,SAAS3Q,EAAE4Q,WAAY,KAAKw1F,YAAY3iD,SAE3E0zC,IAAQz6D,KAAKkqC,UAAUuhC,EAAcx3F,SAAS3Q,EAAE4Q,WAAY,KAAKw1F,YAAY3iD,SAC7E,MAIZmkD,EAAWnkD,MAAK,SAAUjC,EAAGhjD,GAAK,OAAOgjD,EAAIhjD,KACzCwB,IAAMmoG,EAAcxoG,SACpBoiC,EAAM,CAAE6qD,QAAQ,EAAMgb,WAAYA,EAAYF,WAAYS,EAAc,GAAG/B,cAGnF,OAAOrkE,GAEJ+iE,EA1TmB,G,aCP1B,GAAwC,WACxC,IAAIxmG,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxC,GAA0C,SAAUM,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAyC5D,GAAgC,SAAUiC,GAE1C,SAASumG,IACL,OAAkB,OAAXvmG,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAW/D,OAbA,GAAUopG,EAAgBvmG,GAI1B,GAAW,CACP,kBACDumG,EAAelpG,UAAW,aAAS,GACtC,GAAW,CACP,kBACDkpG,EAAelpG,UAAW,iBAAa,GAC1C,GAAW,CACP,gBAAS,IACVkpG,EAAelpG,UAAW,mBAAe,GACrCkpG,EAdwB,CAejC,QAKE,GAA8B,SAAUvmG,GAExC,SAASwmG,IACL,OAAkB,OAAXxmG,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAQ/D,OAVA,GAAUqpG,EAAcxmG,GAIxB,GAAW,CACP,eAAW,GAAI,KAChBwmG,EAAanpG,UAAW,eAAW,GACtC,GAAW,CACP,gBAAS,IACVmpG,EAAanpG,UAAW,mBAAe,GACnCmpG,EAXsB,CAY/B,QAKE,GAA2B,SAAUxmG,GAErC,SAASymG,IACL,OAAkB,OAAXzmG,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAyC/D,OA3CA,GAAUspG,EAAWzmG,GAIrB,GAAW,CACP,kBACDymG,EAAUppG,UAAW,aAAS,GACjC,GAAW,CACP,kBACDopG,EAAUppG,UAAW,gBAAY,GACpC,GAAW,CACP,kBACDopG,EAAUppG,UAAW,aAAS,GACjC,GAAW,CACP,kBACDopG,EAAUppG,UAAW,iBAAa,GACrC,GAAW,CACP,gBAAS,IACVopG,EAAUppG,UAAW,oBAAgB,GACxC,GAAW,CACP,kBACDopG,EAAUppG,UAAW,iBAAa,GACrC,GAAW,CACP,eAAS,KACVopG,EAAUppG,UAAW,yBAAqB,GAC7C,GAAW,CACP,eAAS,KACVopG,EAAUppG,UAAW,sBAAkB,GAC1C,GAAW,CACP,kBACDopG,EAAUppG,UAAW,YAAQ,GAChC,GAAW,CACP,kBACDopG,EAAUppG,UAAW,mBAAe,GACvC,GAAW,CACP,kBACDopG,EAAUppG,UAAW,WAAO,GAC/B,GAAW,CACP,kBACDopG,EAAUppG,UAAW,oBAAgB,GACxC,GAAW,CACP,kBACDopG,EAAUppG,UAAW,iBAAa,GAC9BopG,EA5CmB,CA6C5B,QAKE,GAAwC,SAAUzmG,GAElD,SAAS0mG,IACL,OAAkB,OAAX1mG,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAW/D,OAbA,GAAUupG,EAAwB1mG,GAIlC,GAAW,CACP,gBAAS,IACV0mG,EAAuBrpG,UAAW,mBAAe,GACpD,GAAW,CACP,eAAS,IACVqpG,EAAuBrpG,UAAW,iBAAa,GAClD,GAAW,CACP,eAAS,IACVqpG,EAAuBrpG,UAAW,qBAAiB,GAC/CqpG,EAdgC,CAezC,QAKE,GAAgC,SAAU1mG,GAE1C,SAAS2mG,IACL,OAAkB,OAAX3mG,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAsC/D,OAxCA,GAAUwpG,EAAgB3mG,GAI1B,GAAW,CACP,eAAW,GAAI,KAChB2mG,EAAetpG,UAAW,eAAW,GACxC,GAAW,CACP,eAAS,cACVspG,EAAetpG,UAAW,YAAQ,GACrC,GAAW,CACP,eAAS,YACVspG,EAAetpG,UAAW,YAAQ,GACrC,GAAW,CACP,gBAAS,IACVspG,EAAetpG,UAAW,2BAAuB,GACpD,GAAW,CACP,eAAS,OACVspG,EAAetpG,UAAW,0BAAsB,GACnD,GAAW,CACP,kBACDspG,EAAetpG,UAAW,iBAAa,GAC1C,GAAW,CACP,gBAAS,IACVspG,EAAetpG,UAAW,oBAAgB,GAC7C,GAAW,CACP,gBAAS,IACVspG,EAAetpG,UAAW,+BAA2B,GACxD,GAAW,CACP,eAAS,KACVspG,EAAetpG,UAAW,kBAAc,GAC3C,GAAW,CACP,eAAS,YACVspG,EAAetpG,UAAW,wBAAoB,GACjD,GAAW,CACP,gBAAS,IACVspG,EAAetpG,UAAW,6BAAyB,GACtD,GAAW,CACP,gBAAS,IACVspG,EAAetpG,UAAW,6BAAyB,GAC/CspG,EAzCwB,CA0CjC,QAKE,GAAmC,SAAU3mG,GAE7C,SAAS4mG,IACL,OAAkB,OAAX5mG,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KA6B/D,OA/BA,GAAUypG,EAAmB5mG,GAI7B,GAAW,CACP,eAAS,QACV4mG,EAAkBvpG,UAAW,YAAQ,GACxC,GAAW,CACP,eAAS,SACVupG,EAAkBvpG,UAAW,yBAAqB,GACrD,GAAW,CACP,eAAS,WACVupG,EAAkBvpG,UAAW,YAAQ,GACxC,GAAW,CACP,gBAAS,IACVupG,EAAkBvpG,UAAW,oBAAgB,GAChD,GAAW,CACP,gBAAS,IACVupG,EAAkBvpG,UAAW,wBAAoB,GACpD,GAAW,CACP,eAAS,YACVupG,EAAkBvpG,UAAW,oBAAgB,GAChD,GAAW,CACP,gBAAS,IACVupG,EAAkBvpG,UAAW,qCAAiC,GACjE,GAAW,CACP,gBAAS,IACVupG,EAAkBvpG,UAAW,oBAAgB,GAChD,GAAW,CACP,gBAAS,IACVupG,EAAkBvpG,UAAW,4BAAwB,GACjDupG,EAhC2B,CAiCpC,QAKE,GAAgC,SAAU5mG,GAE1C,SAAS6mG,IACL,OAAkB,OAAX7mG,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAiB/D,OAnBA,GAAU0pG,EAAgB7mG,GAI1B,GAAW,CACP,eAAS,KACV6mG,EAAexpG,UAAW,cAAU,GACvC,GAAW,CACP,eAAS,KACVwpG,EAAexpG,UAAW,WAAO,GACpC,GAAW,CACP,eAAS,aACVwpG,EAAexpG,UAAW,gBAAY,GACzC,GAAW,CACP,gBAAS,IACVwpG,EAAexpG,UAAW,kBAAc,GAC3C,GAAW,CACP,gBAAS,IACVwpG,EAAexpG,UAAW,oBAAgB,GACtCwpG,EApBwB,CAqBjC,QAKE,GAAiC,SAAU7mG,GAE3C,SAAS8mG,IACL,OAAkB,OAAX9mG,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAK/D,OAPA,GAAU2pG,EAAiB9mG,GAI3B,GAAW,CACP,kBACD8mG,EAAgBzpG,UAAW,gBAAY,GACnCypG,EARyB,CASlC,QAKE,GAAkC,SAAU9mG,GAE5C,SAAS+mG,IACL,OAAkB,OAAX/mG,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAK/D,OAPA,GAAU4pG,EAAkB/mG,GAI5B,GAAW,CACP,eAAS,SACV+mG,EAAiB1pG,UAAW,gBAAY,GACpC0pG,EAR0B,CASnC,QAKE,GAAgC,SAAU/mG,GAE1C,SAASgnG,IACL,OAAkB,OAAXhnG,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAK/D,OAPA,GAAU6pG,EAAgBhnG,GAI1B,GAAW,CACP,eAAS,WACVgnG,EAAe3pG,UAAW,YAAQ,GAC9B2pG,EARwB,CASjC,QAKE,GAA+B,SAAUhnG,GAEzC,SAASinG,IACL,OAAkB,OAAXjnG,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KA6B/D,OA/BA,GAAU8pG,EAAejnG,GAIzB,GAAW,CACP,gBAAS,IACVinG,EAAc5pG,UAAW,oBAAgB,GAC5C,GAAW,CACP,gBAAS,IACV4pG,EAAc5pG,UAAW,uBAAmB,GAC/C,GAAW,CACP,gBAAS,IACV4pG,EAAc5pG,UAAW,wBAAoB,GAChD,GAAW,CACP,gBAAS,IACV4pG,EAAc5pG,UAAW,yBAAqB,GACjD,GAAW,CACP,gBAAS,IACV4pG,EAAc5pG,UAAW,yBAAqB,GACjD,GAAW,CACP,gBAAS,IACV4pG,EAAc5pG,UAAW,iCAA6B,GACzD,GAAW,CACP,eAAS,KACV4pG,EAAc5pG,UAAW,eAAW,GACvC,GAAW,CACP,kBACD4pG,EAAc5pG,UAAW,uBAAmB,GAC/C,GAAW,CACP,gBAAS,IACV4pG,EAAc5pG,UAAW,yBAAqB,GAC1C4pG,EAhCuB,CAiChC,QAKE,GAA8B,SAAUjnG,GAExC,SAASknG,IACL,OAAkB,OAAXlnG,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAyC/D,OA3CA,GAAU+pG,EAAclnG,GAIxB,GAAW,CACP,gBAAS,IACVknG,EAAa7pG,UAAW,mBAAe,GAC1C,GAAW,CACP,gBAAS,IACV6pG,EAAa7pG,UAAW,oBAAgB,GAC3C,GAAW,CACP,gBAAS,IACV6pG,EAAa7pG,UAAW,qBAAiB,GAC5C,GAAW,CACP,eAAS,WACV6pG,EAAa7pG,UAAW,YAAQ,GACnC,GAAW,CACP,gBAAS,IACV6pG,EAAa7pG,UAAW,2BAAuB,GAClD,GAAW,CACP,gBAAS,IACV6pG,EAAa7pG,UAAW,yBAAqB,GAChD,GAAW,CACP,gBAAS,IACV6pG,EAAa7pG,UAAW,+BAA2B,GACtD,GAAW,CACP,kBACD6pG,EAAa7pG,UAAW,gBAAY,GACvC,GAAW,CACP,kBACD6pG,EAAa7pG,UAAW,sBAAkB,GAC7C,GAAW,CACP,kBACD6pG,EAAa7pG,UAAW,sBAAkB,GAC7C,GAAW,CACP,eAAS,QACV6pG,EAAa7pG,UAAW,sBAAkB,GAC7C,GAAW,CACP,eAAS,KACV6pG,EAAa7pG,UAAW,cAAU,GACrC,GAAW,CACP,gBAAS,IACV6pG,EAAa7pG,UAAW,wBAAoB,GACxC6pG,EA5CsB,CA6C/B,QAKE,GAAkC,SAAUlnG,GAE5C,SAASmnG,IACL,OAAkB,OAAXnnG,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAK/D,OAPA,GAAUgqG,EAAkBnnG,GAI5B,GAAW,CACP,eAAS,YACVmnG,EAAiB9pG,UAAW,qBAAiB,GACzC8pG,EAR0B,CASnC,QAYE,GAAsB,SAAUnnG,GAShC,SAASonG,EAAK9mG,EAASC,GACnB,IAAI8mG,EAAUrnG,EAAOS,KAAKtD,KAAMmD,EAASC,IAAYpD,KA8FrD,OA7FAkqG,EAAQztD,sBAAuB,EAC/BytD,EAAQC,cAAgB,GACxBD,EAAQE,MAAO,EACfF,EAAQG,iBAAmB,EAC3BH,EAAQI,qBAAsB,EAC9BJ,EAAQK,WAAa,EACrBL,EAAQM,gBAAkB,EAC1BN,EAAQO,UAAY,EACpBP,EAAQQ,YAAc,EACtBR,EAAQS,aAAe,EACvBT,EAAQU,aAAe,EACvBV,EAAQW,WAAa,EACrBX,EAAQY,WAAa,EACrBZ,EAAQa,kBAAoB,EAC5Bb,EAAQc,mBAAqB,EAC7Bd,EAAQe,yBAA0B,EAClCf,EAAQgB,mBAAqB,EAC7BhB,EAAQiB,eAAiB,EACzBjB,EAAQkB,kBAAoB,GAC5BlB,EAAQmB,mBAAqB,GAC7BnB,EAAQoB,eAAiB,GACzBpB,EAAQqB,aAAe,GACvBrB,EAAQsB,YAAc,GACtBtB,EAAQuB,aAAe,GACvBvB,EAAQwB,aAAe,GACvBxB,EAAQyB,eAAiB,GACzBzB,EAAQ0B,iBAAmB,GAC3B1B,EAAQ2B,kBAAoB,GAC5B3B,EAAQ4B,kBAAoB,GAC5B5B,EAAQ6B,oBAAsB,GAC9B7B,EAAQ8B,MAAQ,GAEhB9B,EAAQ+B,WAAa,EACrB/B,EAAQgC,iBAAmB,OAAUhsG,UAAUoV,QAC/C40F,EAAQiC,wBAAyB,EACjCjC,EAAQkC,eAAgB,EAExBlC,EAAQmC,mBAAoB,EAS5BnC,EAAQjpB,oBAAqB,EAE7BipB,EAAQoC,MAAQ,GAEhBpC,EAAQqC,OAAS,GAEjBrC,EAAQsC,cAAgB,GAExBtC,EAAQuC,OAAS,EAEjBvC,EAAQwC,WAAa,EAErBxC,EAAQ3xE,iBAAkB,EAE1B2xE,EAAQyC,kBAAmB,EAE3BzC,EAAQ0C,mBAAoB,EAE5B1C,EAAQvK,sBAAwB,EAEhCuK,EAAQ9mB,uBAAyB,GAEjC8mB,EAAQ/mB,uBAAyB,GAEjC+mB,EAAQ2C,mBAAoB,EAE5B3C,EAAQtW,qBAAuB,EAE/BsW,EAAQ5N,gBAAiB,EAEzB4N,EAAQ4C,oBAAqB,EAE7B5C,EAAQrJ,WAAY,EAEpBqJ,EAAQ6C,uBAAwB,EAChC7C,EAAQ8C,kBAAoB,GAE5B9C,EAAQ+C,qBAAkB1hG,EAE1B2+F,EAAQgD,aAAe,GAEvBhD,EAAQiD,cAAe,EAEvBjD,EAAQkD,cAAe,EACvBlD,EAAQmD,SAAU,EAClBC,EAAOC,OAAO,SACd,gBAAS,mBAAoBrD,EAAQsD,qBAAsBtD,GACpDA,EAyrLX,IAAIoD,EAkdJ,OAlvMA,GAAUrD,EAAMpnG,GAyGhByqG,EAASrD,EAMTA,EAAK/pG,UAAU6U,eAAiB,WAW5B,IAVA,IAAIi3B,EAAY,CAAC,eAAgB,eAC7B,iBAAkB,gBAAiB,UAAW,iBAAkB,mBAAoB,kBACpFyhE,EAAkB,CAClB31E,aAAc,CAAC,WAAY,YAAa,oBAAqB,oBAAqB,aAClF9D,eAAgB,CAAC,OAAQ,OAAQ,sBAAuB,qBAAsB,gBAC9ErB,cAAe,CAAC,eAAgB,mBAAoB,oBAAqB,oBACrE,4BAA6B,oBACjCc,eAAgB,CAAC,SAAU,WAAY,cACvCuF,aAAc,GAAI7J,QAAS,GAAIu+E,iBAAkB,GAAIC,eAAgB,IAEhE3sG,EAAI,EAAGA,EAAIgrC,EAAUrrC,OAAQK,IAElC,IADA,IAAI4sG,EAAgB5tG,KAAKgsC,EAAUr6B,SAAS3Q,EAAE4Q,WAAY,MACjD/D,EAAK,EAAGhK,EAAK4pG,EAAgBzhE,EAAUr6B,SAAS3Q,EAAE4Q,WAAY,MAAO/D,EAAKhK,EAAGlD,OAAQkN,IAAM,CAChG,IAAIgP,EAAMhZ,EAAGgK,UACN+/F,EAAc,GAAK/wF,GAGlC,IAAI6lF,EAAO1iG,KAAK83B,aAAa8e,SACzBi3D,EAAWpuG,OAAOquG,OAAO,CAAEl3D,cAAUrrC,GAAavL,KAAK83B,cAC3D93B,KAAKiL,cAAc,CAAE6sB,aAAc+1E,IAAY,GAE3C7tG,KAAKoX,kBACEpX,KAAK2yB,cAAc,cAAc,mBAE5C3yB,KAAK8sG,oBAAsB,eAAkB9sG,KAAK+tG,eAClD,IAAIC,EAAchuG,KAAKgV,aAAag3B,GAGpC,OAFA6hE,EAASj3D,SAAW8rD,EACpB1iG,KAAKiL,cAAc,CAAE6sB,aAAc+1E,IAAY,GACxCG,GAQX/D,EAAK/pG,UAAU2lB,gBAAkB,WAC7B7lB,KAAKiuG,iBACLjuG,KAAKkuG,yBACL,IAAIpoF,EAAU,GACd,OAAI9lB,KAAK8uB,cAGL9uB,KAAKw6B,gBACL1U,EAAQzZ,KAAK,CACT2Z,OAAQ,SACRD,KAAM,CAAC/lB,KAAMA,KAAKg0B,eAAgBh0B,KAAK6uB,kBAG3C7uB,KAAKmuG,kBACLroF,EAAQzZ,KAAK,CACT2Z,OAAQ,cACRD,KAAM,CAAC/lB,KAAMA,KAAK6uB,kBAGtB7uB,KAAKouG,gBACLtoF,EAAQzZ,KAAK,CACT2Z,OAAQ,YACRD,KAAM,CAAC/lB,QAGXA,KAAK+4B,cACLjT,EAAQzZ,KAAK,CACT2Z,OAAQ,OACRD,KAAM,CAAC/lB,KAAMA,KAAKg5B,aAAch5B,KAAKquG,cAAeruG,KAAK6uB,kBAG7D7uB,KAAKwyB,aACL1M,EAAQzZ,KAAK,CACT2Z,OAAQ,QACRD,KAAM,CAAC/lB,KAAMA,KAAK83B,gBAGtB93B,KAAK87F,gBACLh2E,EAAQzZ,KAAK,CACT2Z,OAAQ,YACRD,KAAM,CAAC/lB,KAAMA,KAAK8iF,kBAAmB9iF,KAAK6uB,kBAGlD/I,EAAQzZ,KAAK,CACT2Z,OAAQ,SACRD,KAAM,CAAC/lB,QAEPA,KAAKy1C,iBACL3vB,EAAQzZ,KAAK,CACT2Z,OAAQ,UACRD,KAAM,CAAC/lB,QAGXA,KAAKmhD,qBACLr7B,EAAQzZ,KAAK,CACT2Z,OAAQ,iBACRD,KAAM,CAAC/lB,QAGXA,KAAK0yB,eACL5M,EAAQzZ,KAAK,CACT2Z,OAAQ,QACRD,KAAM,CAAC/lB,KAAMA,KAAK2yB,cAAe3yB,KAAKquG,cAAeruG,KAAK6uB,kBAG9D7uB,KAAKo3B,WAAWz2B,QAChBmlB,EAAQzZ,KAAK,CAAE2Z,OAAQ,YAAaD,KAAM,CAAC/lB,KAAMA,KAAK6uB,kBAEtD7uB,KAAKskF,YACLx+D,EAAQzZ,KAAK,CACT2Z,OAAQ,YACRD,KAAM,CAAC/lB,KAAMA,KAAK6uB,mBAGtB7uB,KAAKi5C,SAAWj5C,KAAK88F,kBACrBh3E,EAAQzZ,KAAK,CACT2Z,OAAQ,UACRD,KAAM,CAAC/lB,KAAMA,KAAK6uB,mBAGtB7uB,KAAKyyB,sBAAwBzyB,KAAKi6C,6BAClCn0B,EAAQzZ,KAAK,CACT2Z,OAAQ,gBACRD,KAAM,CAAC/lB,KAAMA,KAAK6uB,mBAGtB7uB,KAAKqpE,oBAAsBrpE,KAAKo6C,YAAcp6C,KAAKqqG,kBAAoBrqG,KAAKwqG,kBAC5E1kF,EAAQzZ,KAAK,CAAE2Z,OAAQ,SAAUD,KAAM,CAAC/lB,KAAMA,KAAK6uB,kBAEnD7uB,KAAKsuG,gBAAgBtuG,KAAKmvB,UAC1BrJ,EAAQzZ,KAAK,CACT2Z,OAAQ,gBACRD,KAAM,CAAC/lB,KAAMA,KAAK6uB,mBAGtB7uB,KAAK6lE,aAAa0oC,aAAevuG,KAAK6lE,aAAa2oC,eAAiBxuG,KAAK6lE,aAAalwB,eACtF7vB,EAAQzZ,KAAK,CACT2Z,OAAQ,OACRD,KAAM,CAAC/lB,KAAMA,KAAK6uB,kBAG1B7uB,KAAKyuG,sBAAsB3oF,IAhGhBA,GAmGfmkF,EAAK/pG,UAAUuuG,sBAAwB,SAAU3oF,GACzC9lB,KAAK63B,yBACL/R,EAAQzZ,KAAK,CACT2Z,OAAQ,iBACRD,KAAM,CAAC/lB,KAAMA,KAAK6uB,kBAGtB7uB,KAAK2yB,cAAc6F,mBACnB1S,EAAQzZ,KAAK,CACT2Z,OAAQ,gBACRD,KAAM,CAAC/lB,KAAMA,KAAK6uB,kBAGtB7uB,KAAK0uG,kBACL5oF,EAAQzZ,KAAK,CACT2Z,OAAQ,cACRD,KAAM,CAAC/lB,KAAMA,KAAK6uB,kBAGtB7uB,KAAK01C,gBACL5vB,EAAQzZ,KAAK,CACT2Z,OAAQ,aACRD,KAAM,CAAC/lB,KAAMA,KAAK6uB,kBAGtB7uB,KAAK2uG,mBACL7oF,EAAQzZ,KAAK,CACT2Z,OAAQ,gBACRD,KAAM,CAAC/lB,KAAMA,KAAK6uB,kBAGtB7uB,KAAK4uG,oBAAoB5uG,KAAKmvB,UAC9BrJ,EAAQzZ,KAAK,CAAE2Z,OAAQ,aAAcD,KAAM,CAAC/lB,KAAMA,KAAK6uB,kBAEvD7uB,KAAKotG,cACLtnF,EAAQzZ,KAAK,CAAE2Z,OAAQ,SAAUD,KAAM,CAAC/lB,SAShDiqG,EAAK/pG,UAAU4T,UAAY,WACvB9T,KAAK6uB,eAAiB,IAAI,EAC1B7uB,KAAK6uG,iBACL7uG,KAAK8uG,sBAET7E,EAAK/pG,UAAU2uG,eAAiB,WAC5B7uG,KAAK+uG,WAAY,EACjB/uG,KAAKquG,cAAgB,GACrBruG,KAAKmqG,cAAgB,GACrBnqG,KAAKgvG,SAAW,GAChBhvG,KAAKw6C,eAAgB,EACrBx6C,KAAKivG,wBAAyB,EAC9BjvG,KAAKkvG,uBAAwB,EAC7BlvG,KAAKmvG,WAAa,GAClBnvG,KAAK+8C,QAAS,EACd/8C,KAAKigF,aAAe,OACpBjgF,KAAKggF,qBAAsB,EAC3BhgF,KAAKovG,oBAAqB,EAC1BpvG,KAAKksG,iBAAmB,OAAUhsG,UAAUoV,QAC5CtV,KAAKqvG,gBAAkB,CACnBhpG,SAAU,WAAYipG,SAAU,WAAYC,MAAO,QAASC,YAAa,cAAeC,mBAAoB,qBAC5GC,SAAU,WAAYC,gBAAiB,kBAAmBC,SAAU,WAAYC,WAAY,aAAcC,SAAU,WACpHC,OAAQ,SAAUC,QAAS,UAAWC,KAAM,QAEhDjwG,KAAKkwG,cAAgB,CACjBC,YAAa,wBACbC,KAAM,OACNC,MAAO,QACPC,qBAAsB,sBACtBC,cAAe,gDACfC,QAAS,wBACTC,cAAe,wBACfC,aAAc,uCACdC,eAAgB,qBAChBC,qBAAsB,uHAEtBC,IAAK,MACLC,KAAM,OACNC,OAAQ,SACRC,OAAQ,SACRC,OAAQ,SACR5oC,MAAO,QACP6oC,UAAW,aACXC,YAAa,eACbC,WAAY,cACZC,UAAW,aACX5N,OAAQ,SACR6N,cAAe,UACfC,KAAM,OACNtpD,KAAM,OACNupD,MAAO,QACPC,mBAAoB,yCACpBC,qBAAsB,2CACtBC,WAAY,OACZC,SAAU,KACVC,aAAc,SACdC,cAAe,cACfC,aAAc,iBACdC,iBAAkB,yCAClBC,qBAAsB,mEACtBC,cAAe,0CACfC,WAAY,+CACZC,cAAe,gBACfC,WAAY,cACZC,cAAe,iBACfC,OAAQ,mBACRC,aAAc,SACdC,YAAa,QACbC,WAAY,cACZC,cAAe,sBACfC,KAAM,OACNC,SAAU,YACVC,YAAa,oBACbC,SAAU,WACVC,YAAa,mBACbC,OAAQ,OACRC,QAAS,WACTC,QAAS,QACTC,WAAY,YACZC,MAAO,QACPC,SAAU,YACVC,SAAU,YACVC,gBAAiB,qBACjBC,YAAa,eACbC,mBAAoB,wBACpBC,WAAY,gBACZC,WAAY,kBACZC,KAAM,OACNC,MAAO,uBACPC,QAAS,yBACTC,YAAa,eACbC,YAAa,iBACbC,eAAgB,oCAChBC,YAAa,8BACbC,gBAAiB,2BACjBC,YAAa,0BACbhT,aAAc,wBACdiT,cAAe,WACfC,kBAAmB,sBACnBC,UAAW,aACXC,WAAY,sBACZ5+D,QAAS,sBACT6+D,WAAY,sBACZC,QAAS,sBACTC,OAAQ,SACRC,UAAW,aACXC,SAAU,YACVC,aAAc,gBACdC,SAAU,YACVC,cAAe,iBACfC,eAAgB,kBAChBC,WAAY,cACZC,aAAc,gBACdC,WAAY,SACZC,UAAW,aACXC,oBAAqB,kCACrBC,OAAQ,SACRC,WAAY,OACZC,YAAa,QACbC,SAAU,mBACVC,YAAa,eACbC,MAAO,QACPC,aAAc,iBACdC,WAAY,eACZC,WAAY,eACZC,eAAgB,mBAChBC,UAAW,aACXC,QAAS,UACTC,aAAc,gBACdC,wBAAyB,kBACzBC,4BAA6B,gBAC7BC,IAAK,MACLC,GAAI,KACJC,cAAe,mBACfC,sBAAuB,sBACvBC,qBAAsB,cACtBC,sBAAuB,eACvBC,yBAA0B,kBAC1BC,eAAgB,cAChBC,qBAAsB,qBACtBC,uBAAwB,yBACxBC,SAAU,cACVC,SAAU,cACVC,aAAc,iBACdC,aAAc,iBACdC,sBAAuB,2BACvBC,sBAAuB,2BACvBC,KAAM,OACNC,kBAAmB,qCACnBC,gBAAiB,sBACjBC,sBAAuB,qCACvBC,iBAAkB,4BAClBC,aAAc,kBACdC,aAAc,oBACdC,kBAAmB,mCACnBC,WAAY,cACZC,UAAW,YACXC,cAAe,YACfC,eAAgB,aAChBC,SAAU,OACVC,SAAU,WACVC,UAAW,aAEfr4G,KAAKwe,WAAa,CACd85F,UAAW,YACXC,QAAS,UACTC,WAAY,aACZC,UAAW,YACXC,UAAW,kBACXC,QAAS,gBACTC,WAAY,mBACZC,UAAW,kBACXnwF,KAAM,OACNvG,IAAK,MACL8F,OAAQ,SACR6wF,SAAU,YACVC,QAAS,WACTpwF,OAAQ,SACRC,SAAU,WACVowF,cAAe,kBACfC,gBAAiB,oBACjBC,UAAW,aACXC,YAAa,eACbnxF,aAAc,gBACdD,WAAY,cACZqxF,cAAe,iBACfC,YAAa,eACbC,UAAW,SACXC,UAAW,SACX/8E,OAAQ,SACRg9E,OAAQ,SACRC,GAAI,KACJvxF,MAAO,QACPwxF,UAAW,aACXC,WAAY,cACZzwF,IAAK,MACLD,SAAU,YACV2wF,MAAO,QACPC,UAAW,SACXC,eAAgB,eAChBC,UAAW,aACXC,cAAe,iBACfC,eAAgB,oBASxBhQ,EAAK/pG,UAAUyT,OAAS,WAYpB,GAXA3T,KAAKiyB,IAAI,CAAC,iBAAkB,kBAAmB,iBAAkB,6BACjEjyB,KAAKywF,YAAYtsC,WAAWnkD,KAAKoD,QAAS,CAAE6L,KAAM,SAClD,eAAc,CAAE3O,OAAQN,KAAKoD,QAASqH,SAAUzK,KAAKyK,SAAWzK,KAAKyK,SAAW,MAAQzK,KAAKuE,eAC7FvE,KAAKk6G,aAAe,IAAI,EAAOl6G,KAAMA,KAAK6uB,gBAC1C7uB,KAAKm6G,aAAe,IAAI,GAAOn6G,MAC/BA,KAAKwpD,aAAe,IAAI,QAAOxpD,MAC/BA,KAAK4Z,OAAO,QAAoB,KAC6B,IAAxD5Z,KAAK6vB,gBAAgBiG,YAAY1G,WAAW+B,cAAwE5lB,IAApDvL,KAAK6vB,gBAAgBiG,YAAY1G,WAAWgO,MAC1G,eAAkBp9B,KAAKovB,aAAepvB,KAAKovB,WAAW4B,SACzDhxB,KAAKqsG,mBAAoB,GAEzBrsG,KAAKmI,QAAS,CACd,IAAI4d,EAAO,CAAEk7D,mBAAoBjhF,KAAKihF,oBACtCjhF,KAAKiI,QAAQ,QAAa8d,GACrBA,EAAKk7D,qBACNjhF,KAAKihF,mBAAqBl7D,EAAKk7D,yBAInCjhF,KAAKiI,QAAQ,SAEjB,gBAAejI,KAAKmvB,QAASnvB,KAAKi6C,2BAA4Bj6C,MAC1DA,KAAKi6C,4BAA8Bj6C,KAAKmsG,wBAA0BnsG,KAAK4kG,cACvE5kG,KAAK4kG,YAAc,GACnB5kG,KAAKo6G,kBAAkBp6G,KAAKmvB,UAEhCnvB,KAAKirG,yBAA0B,EAC3BjrG,KAAK2zF,mBACL3zF,KAAK4Z,OAAO,QAAwB,IAExC5Z,KAAKq6G,kBACL,gBAAer6G,KAAKmvB,SAChBnvB,KAAKk6C,iBAAmBl6C,KAAKosG,eAC7BpsG,KAAKs6G,4BAA4Bt6G,KAAKmvB,SAE1CnvB,KAAKu6G,iBAAiBv6G,KAAKmvB,SAC3BnvB,KAAK02B,aACL12B,KAAKw6G,eACLx6G,KAAKy6G,aACLz6G,KAAK4T,aACL5T,KAAK06G,cACL16G,KAAKw1F,sBACLx1F,KAAK26G,sBACuC,YAAxC36G,KAAKy6C,iBAAiBC,eACtB16C,KAAKo9F,cAETp9F,KAAK4Z,OAAO,QAAmB,IACa,YAAxC5Z,KAAKy6C,iBAAiBC,eACtB16C,KAAK46G,iBAEL56G,KAAK2zC,YACL3zC,KAAKiI,QAAQ,YAGrBgiG,EAAK/pG,UAAUo6G,4BAA8B,SAAUnrF,GACnD,IAAK,IAAInuB,EAAI,EAAGA,EAAImuB,EAAQxuB,OAAQK,IAAK,CACrC,IAAIuuB,EAASJ,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAC5C2d,EAAO,GAAK,QAAqCA,EAAO9iB,MACpD8iB,EAAOJ,SACPnvB,KAAKs6G,4BAA4B/qF,EAAOJ,WASpD86E,EAAK/pG,UAAUk9F,YAAc,WACpBp9F,KAAKmtG,cACN,eAAYntG,KAAKoD,UAQzB6mG,EAAK/pG,UAAUmgG,YAAc,WACpBrgG,KAAKmtG,cACN,eAAYntG,KAAKoD,UAGzB6mG,EAAK/pG,UAAUm9F,YAAc,SAAUwd,EAAeC,GAClD,IAAI,eAAkB96G,KAAK+6G,gBAAiB,eAAkB/6G,KAAKw8F,eAAnE,CAGA,IAAItrD,EAAalxC,KAAKq6C,mBAAmBgC,WACrClL,EAAcnxC,KAAKg6C,aAAaqC,WAChCjL,EAAapxC,KAAKu7C,mBACtB,GAAIu/D,EAAJ,CACI,IAAIE,EAAeF,EAAc5uG,cAAc,mBAC3C+uG,EAAe9xG,KAAKo3D,MAAMy6C,EAAa5zG,wBAAwB/B,OAASrF,KAAKu6C,gBAC7E2gE,EAAe,6IAEbl7G,KAAKm7G,qBAAuBn7G,KAAKm7G,qBAAuB,eAC9DH,EAAalwG,UAAY,GACzB,IAAK,IAAI9J,EAAI,EAAGA,EAAIi6G,EAAcj6G,IAAK,CACnCg6G,EAAalwG,WAAaowG,EAC1B,IAAIE,EAAW,GAAG1tG,MAAMpK,KAAK03G,EACxBt4F,iBAAiB,yFACtB04F,EAAS,GAAGl2G,UAAU4G,IAAI,iCAC1BsvG,EAAS,GAAGl2G,UAAU4G,IAAI,2CAZlC,CAoBA,KAJM9L,KAAKyF,YAAczF,KAAKq6C,mBAAmBtzC,MAAMk3E,cAC/Cj+E,KAAKyF,YAAczF,KAAKq6C,mBAAmBtzC,MAAMi3E,eACrD7sC,EAAYpqC,MAAMg3C,UAAY,WAE7B/9C,KAAKw6C,gBAAkBx6C,KAAK02B,aAAa/1B,OAAQ,CAClD,IAAI06G,EAAgBlqE,EAAY/pC,wBAAwB/B,OACpDi2G,EAAoC,IAAlBD,EAAsBr7G,KAAKwyB,YAAcxyB,KAAK83B,aAAaG,SAAWj4B,KAAKu6C,eAC3Fh0C,OAAOisD,YAAc6oD,EACvBE,EAAkBpyG,KAAK2kC,KAAKwtE,EAAkBt7G,KAAKu6C,gBAKvD,MAJ8B,aAA1Bv6C,KAAKsjF,mBACLtjF,KAAKw7G,gBAAkBx7G,KAAKy7G,qBAAqBvqE,EAAY,SAEjElxC,KAAK07G,iBAAmB17G,KAAKy7G,qBAAqBtqE,EAAaoqE,IAInE,GADAv7G,KAAK27G,wBAAwB37G,KAAKyyB,uBAAwBzyB,KAAKi6C,6BAA+B4gE,IACzF76G,KAAK07G,iBAAkB,CACxB,IAAI7wG,EAAUsmC,GACVnxC,KAAKyyB,sBAAwBzyB,KAAKi6C,8BAClCpvC,EAAUA,EAAQqB,cAAc,oBAE/B,eAAkBrB,EAAQqB,cAAc,YACzClM,KAAK07G,iBAAmB17G,KAAK47G,gBAAgB/wG,EAAS7K,KAAK67G,wBAAyBhB,IAG5F,IAAK76G,KAAKw7G,kBAAoBx7G,KAAKk6C,gBAAmBl6C,KAAKi6C,4BAAgD,MAAlB4gE,GAAyB,CAC1GhwG,EAAUqmC,EACVlxC,KAAKi6C,4BAAgD,MAAlB4gE,IACnChwG,EAAUA,EAAQqB,cAAc,oBAEpClM,KAAKw7G,gBAAkBx7G,KAAK47G,gBAAgB/wG,EAAS7K,KAAK67G,wBAAyBhB,GAEvF,GAAIzpE,GAAcA,EAAWllC,cAAc,iBAAkB,CACzD,IAAI4vG,EAAoB1qE,EAAWiL,WACnC,IAAKr8C,KAAK+7G,uBAAwB,CAC9B,IAAIC,EAAgBF,EACpB97G,KAAK+7G,uBAAyB/7G,KAAK47G,gBAAgBI,IAGrDh8G,KAAKyyB,sBAAwBooF,GAC/B,OAAa/uG,IAAIqlC,EAAa,SAAUnxC,KAAKi8G,iBAAkBj8G,SAGvEiqG,EAAK/pG,UAAU27G,sBAAwB,WACnC,OAAO77G,KAAK02B,cAEhBuzE,EAAK/pG,UAAUu7G,qBAAuB,SAAUS,EAAaC,GACzD,IAAIn6E,EAAQhiC,KAAKuE,cAAc,QAAS,CAAEC,UAAW,2BACjD4tC,EAAQpyC,KAAKuE,cAAc,QAAS,CAAEC,UAAW,mBACjD6yB,EAAMr3B,KAAKuE,cAAc,KAAM,CAAEC,UAAW,qBAAsBwK,MAAO,CACrEjI,MAAO,WAAa/G,KAAKu6C,eAAiB,SAE9CoH,EAAO3hD,KAAKuE,cAAc,KAAM,CAAEC,UAAW,4BACjDm9C,EAAK72C,UAAY9K,KAAKm7G,qBACtB9jF,EAAI3yB,YAAYi9C,GAChB,IAAK,IAAI3gD,EAAI,EAAGA,EAAIm7G,EAAUn7G,IAC1BoxC,EAAM1tC,YAAY2yB,EAAI3P,WAAU,IAIpC,OAFAsa,EAAMt9B,YAAY0tC,GAClB8pE,EAAYx3G,YAAYs9B,GACjBA,GAEXioE,EAAK/pG,UAAU07G,gBAAkB,SAAUx4G,EAAS+rB,EAAS0rF,GACzD,IAAIl5F,EAAgBve,EAChBy4C,IAAS,eAAQl6B,EAAe,iBAChC9W,IAAU,eAAQ8W,EAAe,kBACjCuiB,IAAS,eAAQviB,EAAe,iBAChCwvB,EAAcnxC,KAAKg6C,aAAaqC,WAChC+/D,EAA0BjrE,EAAY8M,aACtCjc,EAAQrgB,EAAczV,cAAc,SACpCmwG,EAAYr6E,EAAMta,YACtB20F,EAAUzxG,gBAAgB,QAC1ByxG,EAAUzxG,gBAAgB,MAC1ByxG,EAAUt1G,MAAMhD,SAAW,WAC3Bs4G,EAAUt1G,MAAMgd,OAAS,IACzBs4F,EAAUt1G,MAAMzB,MAAQ08B,EAAM56B,wBAAwB9B,MAAQ,MAC1Du2C,GAAY77C,KAAKi6C,4BAAgD,MAAlB4gE,IAC/CwB,EAAUt1G,MAAMu1G,UAAY,iBACtBt6E,EAAM91B,cAAc,SAAS9E,wBAAwB/B,OAAS,OAExEg3G,EAAU1xG,aAAa,QAAS,0BAChC,IAAI4xG,EAAev6E,EAAM91B,cAAc,YAAYwb,WAAU,GAI7D,GAHA60F,EAAa3xG,gBAAgB,MAC7B2xG,EAAa5xG,aAAa,QAAS,qBACnC0xG,EAAU33G,YAAY63G,GAClB1gE,GAAU77C,KAAKi6C,4BAAgD,MAAlB4gE,EAAuB,CACpE,IAAIxjF,EAAMr3B,KAAKw8G,cAAcD,EAAcptF,GAC3C,GAAInvB,KAAKk6C,eAEL,IADA,IAAIuiE,EAAQ,GAAG/uG,MAAMpK,KAAK+zB,EAAI3U,iBAAiB,eACtC1hB,EAAI,EAAGA,EAAIy7G,EAAM97G,OAAQK,IAC1BA,EAAIhB,KAAKwqG,iBACLxqG,KAAKwqG,gBAAkB,IAAMxpG,GAC7By7G,EAAM9qG,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,sBAEpD2wG,EAAM9qG,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,gBAChD2wG,EAAM9qG,SAAS3Q,EAAE4Q,WAAY,KAAKjH,aAAa,gBAAiB3J,EAAE4Q,YAClE6qG,EAAM9qG,SAAS3Q,EAAE4Q,WAAY,KAAK7K,MAAM/B,KAAQmqB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK8qG,OAChF18G,KAAK0sG,WAAc,MAEjB+P,EAAM97G,OAASX,KAAKqqG,kBAAqBrpG,GAAKmuB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,OAC9E6qG,EAAM97G,OAASX,KAAKqqG,mBAAsBrpG,GAC3Cy7G,EAAM9qG,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,uBAEpD2wG,EAAM9qG,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,iBAChD2wG,EAAM9qG,SAAS3Q,EAAE4Q,WAAY,KAAKjH,aAAa,gBAAiB3J,EAAE4Q,YAClE6qG,EAAM9qG,SAAS3Q,EAAE4Q,WAAY,KAAK7K,MAAM6rD,MAAS5yD,KAAK0sG,WAClDv9E,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK8qG,OAAU,MAI9D,IAAIlqB,EAAQxwD,EAAM91B,cAAc,SAC5BirB,EAAO,GAAGzpB,MAAMpK,KAAKkvF,EAAM9vE,iBAAiB,OAC5Ci6F,EAAYnqB,EAAM9qE,YACtBi1F,EAAU/xG,gBAAgB,QAC1B+xG,EAAUhyG,aAAa,QAAS,kBAChC,IAAIwxG,EAAWhlF,EAAKx2B,OACpB,IAASK,EAAI,EAAGA,EAAIm7G,EAAUn7G,IAC1B27G,EAAUj4G,YAAY2yB,EAAI3P,WAAU,IACpCi1F,EAAU7nE,WAAWnjC,SAAS3Q,EAAE4Q,WAAY,KAAK7K,MAC5C1B,OAAS8xB,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAKxK,wBAAwB/B,OAAS,KAEpFg3G,EAAU33G,YAAYi4G,GAE1B,IAAIC,EAAY56E,EAAM91B,cAAc,SAASwb,YAC7Ck1F,EAAUhyG,gBAAgB,QAC1BgyG,EAAUjyG,aAAa,QAAS,kBAChC,IAAIynC,EAAQpQ,EAAM91B,cAAc,SAChC,GAAIrB,GAAWgxC,EAAQ,CACnB,IAAIghE,EAAkB1rE,EAClBgrE,EAAWhzG,KAAK2kC,KAAK+uE,EAAgBz1G,wBAAwB/B,OAASrF,KAAKu6C,gBAC/E,GAAInI,EAAMlmC,cAAc,iBAAmBkmC,EAAM0C,WAAWn0C,QAAWkK,GAAW7K,KAAKogD,UAAY,CAC3F/oB,EAAMr3B,KAAKw8G,cAAcD,EAAcptF,GAA3C,IACI2tF,EAASzlF,EAAI3P,WAAU,GAC3Bo1F,EAAO53G,UAAU4G,IAAI,YACrB,IAAS9K,EAAI,EAAGA,EAAIm7G,EAAUn7G,IAAK,CAC/B,IAAI+7G,EAAY,EAChBH,EAAUl4G,aAAa1D,EAAI+7G,GAAa,IAAM,EAAID,EAAOp1F,WAAU,GAAQ2P,EAAI3P,WAAU,SAG5F,CACD,IAAIs1F,EAAY,gEAEZC,GADA9lF,EAAO,GAAGzpB,MAAMpK,KAAK8uC,EAAM1vB,iBAAiBs6F,IAC/B5qE,EAAMlmC,cAAc,8BACjCgxG,OAAkB,EACtB,GAAID,EAAY,CAEZ,GADAC,EAAkB/lF,EAAKnzB,QAAQi5G,GAC3Bj9G,KAAKk6C,gBAAkBl6C,KAAKi6C,2BAE5B,IADIwiE,EAAQ,GAAG/uG,MAAMpK,KAAK6zB,EAAK+lF,EAAkB,GAAGx6F,iBAAiB,eAC5D1hB,EAAI,EAAGA,EAAIy7G,EAAM97G,OAAQK,IAC1BA,EAAIhB,KAAKwqG,iBACTiS,EAAM9qG,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,gBAChD2wG,EAAM9qG,SAAS3Q,EAAE4Q,WAAY,KAAKjH,aAAa,gBAAiB3J,EAAE4Q,YAClE6qG,EAAM9qG,SAAS3Q,EAAE4Q,WAAY,KAAK7K,MAAM/B,KAAQmqB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK8qG,OAAS18G,KAAK0sG,WAAc,MAE1G+P,EAAM97G,OAASX,KAAKqqG,kBAAqBrpG,GAAKmuB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,OACnF6qG,EAAM9qG,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,iBAChD2wG,EAAM9qG,SAAS3Q,EAAE4Q,WAAY,KAAKjH,aAAa,gBAAiB3J,EAAE4Q,YAClE6qG,EAAM9qG,SAAS3Q,EAAE4Q,WAAY,KAAK7K,MAAM6rD,MAAS5yD,KAAK0sG,WAClDv9E,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK8qG,OAAU,MAI1DO,EAAW/3G,UAAUmB,SAAS,cAC9B8wB,EAAKzqB,OAAOwwG,EAAiB,GAG7B/lF,EAAKzqB,OAAOwwG,EAAiB,GAGrCf,GAAYn8G,KAAKyyB,sBAAwBzyB,KAAKi6C,6BAA+B4gE,EAAgB1jF,EAAKx2B,OAC5Fw7G,GAAYhlF,EAAKx2B,OAASw7G,EAAWhlF,EAAKx2B,OAChD,IAASK,EAAI,EAAGA,EAAIm7G,EAAUn7G,IAC1B47G,EAAUl4G,YAAY1E,KAAKm9G,aAAahmF,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAK8V,WAAU,GAAOyP,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAKxK,wBAAwB/B,SAEvJ,GAAI43G,GAAcA,EAAW/3G,UAAUmB,SAAS,gBAAkB62G,EAAkBf,EAAU,CAC1F,IAAIiB,EAAiBR,EAAU9nE,WAAWnjC,SAASurG,EAAgBtrG,WAAY,KAC/EwrG,EAAer2G,MAAM1B,OAASrF,KAAKu6C,eAAiB,KACpD6iE,EAAel4G,UAAU4G,IAAI,SACzBmxG,EAAW/3G,UAAUmB,SAAS,aAC9B+2G,EAAel4G,UAAU4G,IAAI,cAM7C,GADAuwG,EAAU33G,YAAYk4G,GAClB14E,EAAQ,CACR,IAAIm5E,EAAQr7E,EAAM91B,cAAc,SAC5BoxG,EAAYD,EAAM31F,YACtB41F,EAAU3yG,aAAa,QAAS,kBAEhC,IADIwsB,EAAO,GAAGzpB,MAAMpK,KAAK+5G,EAAM36F,iBAAiB,OACvC1hB,EAAI,EAAGA,EAAIm2B,EAAKx2B,OAAQK,IAC7Bs8G,EAAU54G,YAAY1E,KAAKm9G,aAAahmF,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAK8V,WAAU,GAAOyP,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAKxK,wBAAwB/B,SAEvJg3G,EAAU33G,YAAY44G,GAM1B,GAJIzhE,GAAU77C,KAAKk6C,iBAAmBl6C,KAAKi6C,6BACvCj6C,KAAKq6C,mBAAmBnuC,cAAc,IAAM,QAAwBnF,MAAMhD,SAAW,YAEzF4d,EAAc6D,aAAa62F,EAAW16F,EAAc06B,YAChDxxC,KAAa7K,KAAKyyB,uBAAwBooF,GAAgB,CAC1D,IAAI0C,EAAenB,EAA0BC,EAAUj1G,wBAAwB/B,OAC/Ek4G,EAAeA,EAAe,EAAI,EAAIA,EACtC,IAAItsG,EAAYkgC,EAAYlgC,WAAassG,EAAepsE,EAAYlgC,UAAYssG,EAC5Ev9G,KAAKyyB,uBACLxhB,GAAa,eAAmB,eAAQ0Q,EAAe,oBAAoBtc,QAE/Eg3G,EAAUt1G,MAAMu1G,UAAY,iBAAmBrrG,EAAY,MAE/D,OAAOorG,GAEXpS,EAAK/pG,UAAUi9G,aAAe,SAAU9lF,EAAKkrD,GACzC,IAAI0a,EAAU5lE,EACd4lE,EAAQryF,gBAAgB,QACxBqyF,EAAQryF,gBAAgB,iBACxBqyF,EAAQryF,gBAAgB,iBACxBqyF,EAAQryF,gBAAgB,YACxBqyF,EAAQ/3F,UAAU4G,IAAI,gBACtBmxF,EAAQl2F,MAAM1B,OAASk9E,EAAY,KAEnC,IADA,IAAIi7B,EAAY,GAAG9vG,MAAMpK,KAAK25F,EAAQnoD,YAC7B9zC,EAAI,EAAGA,EAAIw8G,EAAU78G,OAAQK,IAAK,CACvC,IAAIy8G,EAAWD,EAAU7rG,SAAS3Q,EAAE4Q,WAAY,KAC5C8rG,EAAwBD,EAASphE,YAAcohE,EAASphE,WAAWn3C,WAChEu4G,EAASphE,WAAWn3C,UAAUmB,SAAS,sBAC9Co3G,EAAS7yG,gBAAgB,QACzB6yG,EAAS7yG,gBAAgB,YACzB6yG,EAAS7yG,gBAAgB,cACrB5K,KAAKi6C,4BAA8BwjE,EAASv4G,UAAUmB,SAAS,mBAC/D,gBAAY,CAACo3G,GAAW,CAAC,gBAAiB,qBAAsB,wBAChE,eAAS,CAACA,GAAW,CAAC,gBAEpBz9G,KAAKi6C,6BAA+BwjE,EAASv4G,UAAUmB,SAAS,iBAClEo3G,EAASv4G,UAAUmB,SAAS,mBAC5Bo3G,EAAS7yG,gBAAgB,iBAE7B6yG,EAAS7yG,gBAAgB,iBACzB6yG,EAAS7yG,gBAAgB,SACzB6yG,EAAS7yG,gBAAgB,kBACzB6yG,EAAS7yG,gBAAgB,mBACzB6yG,EAAS7yG,gBAAgB,gBACzB6yG,EAAS7yG,gBAAgB,iBACzB6yG,EAASv4G,UAAU4G,IAAI,iBACvB2xG,EAAS3yG,UAAY9K,KAAKm7G,qBACtBsC,EAASv4G,UAAUmB,SAAS,uBAAyBo3G,EAASv4G,UAAUmB,SAAS,wBACjFo3G,EAASphE,WAAWn3C,UAAU4G,IAAI,uBAE7B2xG,EAASv4G,UAAUmB,SAAS,iBAAmBq3G,EACpDD,EAASphE,WAAWn3C,UAAU4G,IAAI,0BAE7B2xG,EAASv4G,UAAUmB,SAAS,iBACjCo3G,EAASphE,WAAWn3C,UAAU4G,IAAI,sBAE7B2xG,EAASv4G,UAAUmB,SAAS,kBACjCo3G,EAAS3yG,UAAY,IAG7B,OAAOmyF,GAEXgN,EAAK/pG,UAAUs8G,cAAgB,SAAUmB,EAAaC,GAClD,IAAI9rB,EAAW6rB,EACXxuF,EAAUyuF,EACVvmF,EAAMr3B,KAAKuE,cAAc,KAAM,CAAEC,UAAW,uBAClB,aAA1BxE,KAAKsjF,mBACLjsD,EAAItwB,MAAM1B,OAASrF,KAAKu6C,eAAiB,MAG7C,IADA,IAAIomC,EAAK3gF,KAAKuE,cAAc,KAAM,CAAEC,UAAW,4BACtCxD,EAAI,EAAG+uF,EAAW,EAAG/uF,EAAI8wF,EAASh9C,WAAWn0C,OAAQK,IAAK,CAC/D,IAAIk4B,EAAM44D,EAASh9C,WAAWnjC,SAAS3Q,EAAE4Q,WAAY,KACjDisG,EAAUl9B,EAAGj5D,YACjBm2F,EAAQ/yG,UAAY9K,KAAKm7G,qBACnBjiF,EAAIh0B,UAAUmB,SAAS,mBAAqB6yB,EAAIh0B,UAAUmB,SAAS,oBAClE6yB,EAAIh0B,UAAUmB,SAAS,iBAqBtB6yB,EAAIh0B,UAAUmB,SAAS,kBACvBw3G,EAAQxhE,WAAWn3C,UAAU4G,IAAI,uBAE5BotB,EAAIh0B,UAAUmB,SAAS,mBAC5Bw3G,EAAQxhE,WAAWn3C,UAAU4G,IAAI,wBAE5BotB,EAAIh0B,UAAUmB,SAAS,kBAC5Bw3G,EAAQxhE,WAAWn3C,UAAU4G,IAAI,uBA3BP,aAA1B9L,KAAKsjF,kBAAmCn0D,EAAQxd,SAASo+E,EAASn+E,WAAY,MAC9EisG,EAAQlzG,aAAa,YAAawkB,EAAQxd,SAASo+E,EAASn+E,WAAY,KAAKswC,WACzE/yB,EAAQxd,SAASo+E,EAASn+E,WAAY,KAAKswC,WAAa/yB,EAAQxd,SAASo+E,EAASn+E,WAAY,KAAKigB,OAEjF,SAAtBqH,EAAInyB,MAAMC,QACV62G,EAAQ34G,UAAU4G,IAAI,WAGtB+xG,EAAQ92G,MAAM4vC,UAAYxnB,EAAQxd,SAASo+E,EAASn+E,WAAY,MACzDud,EAAQxd,SAASo+E,EAASn+E,WAAY,KAAK+kC,UAC9CxnB,EAAQxd,SAASo+E,EAASn+E,WAAY,KAAK+kC,UAAU90B,cACnD7hB,KAAKyF,UAAY,QAAU,OAC7B0pB,EAAQxd,SAASo+E,EAASn+E,WAAY,OAA6D,aAApDud,EAAQxd,SAASo+E,EAASn+E,WAAY,KAAKpD,MACvF2gB,EAAQxd,SAASo+E,EAASn+E,WAAY,KAAKksG,oBAC9CD,EAAQxhE,WAAWn3C,UAAU4G,IAAI,2BAGzCikF,KAaJ14D,EAAI3yB,YAAYm5G,GAEpB,OAAOxmF,GAEX4yE,EAAK/pG,UAAUi7G,mBAAqB,WAChC,OAAIn7G,KAAK27G,qBACE,0DAEJ,0EAEX1R,EAAK/pG,UAAU69G,iBAAmB,WAC9B/9G,KAAK27G,sBAAuB,EAE5B,IADA,IAAIP,EAAW,GAAG1tG,MAAMpK,KAAKtD,KAAKoD,QAAQsf,iBAAiB,iCAClD1hB,EAAI,EAAGA,EAAIo6G,EAASz6G,OAAQK,IAC7Bo6G,EAASzpG,SAAS3Q,EAAE4Q,WAAY,MAChCwpG,EAASzpG,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,mBAI/Dm+F,EAAK/pG,UAAU+7G,iBAAmB,SAAU9uG,GAGxC,IAFA,IAAI7M,EAAS6M,EAAE7M,OACX09G,EAAa19G,EAAOoiB,iBAAiB,mBAChC1hB,EAAI,EAAGA,EAAIg9G,EAAWr9G,OAAQK,IAAK,CACxC,IAAIq7G,EAAY2B,EAAWrsG,SAAS3Q,EAAE4Q,WAAY,KAClD,GAAIyqG,EAAW,CACX,IAAIkB,EAAej9G,EAAO29C,aAAeo+D,EAAUj1G,wBAAwB/B,OAC3Ek4G,EAAeA,EAAe,EAAI,EAAIA,EACtC,IAAItsG,EAAY3Q,EAAO2Q,WAAassG,EAAej9G,EAAO2Q,UAAYssG,EAClEv9G,KAAKyyB,uBACLxhB,GAAa,eAAmB,eAAQorG,EAAW,oBAAoBh3G,QAE3Eg3G,EAAUt1G,MAAMu1G,UAAY,iBAAmBrrG,EAAY,SAIvEg5F,EAAK/pG,UAAU0/F,cAAgB,WAC3B,IAAK,eAAkB5/F,KAAKw8F,eAAgB,CACxC,IAAIrrD,EAAcnxC,KAAKg6C,aAAaqC,WACpC,OAAal3C,OAAOgsC,EAAa,SAAUnxC,KAAKi8G,kBAEhDj8G,KAAKw7G,iBAAmBx7G,KAAKk6C,iBAAmBl6C,KAAKi6C,6BACrDj6C,KAAKq6C,mBAAmBnuC,cAAc,IAAM,QAAwBnF,MAAMhD,SAAW,IAIzF,IAFA,IAAIi6G,EAAa,CAACh+G,KAAKw7G,gBACnBx7G,KAAK07G,iBAAkB17G,KAAK+7G,wBACvB/6G,EAAI,EAAGA,EAAIg9G,EAAWr9G,OAAQK,IAAK,CACxC,IAAIq7G,EAAY2B,EAAWrsG,SAAS3Q,EAAE4Q,WAAY,KAC9CyqG,GACA,gBAAOA,GAGfr8G,KAAKw7G,gBAAkB,KACvBx7G,KAAK07G,iBAAmB,KACxB17G,KAAK+7G,uBAAyB,MAElC9R,EAAK/pG,UAAU06G,eAAiB,WAC5B,IAAIzpE,EAAcnxC,KAAKg6C,aAAaqC,WACpC,IAAKr8C,KAAKw6C,eAAkBx6C,KAAK02B,aAAa/1B,SAG1CX,KAAK07G,kBAAoBvqE,EAAYjlC,cAAc,mBAAoB,CACvE,IAAIrB,EAAUsmC,EACVnxC,KAAKyyB,uBACL5nB,EAAUA,EAAQqB,cAAc,oBAEpClM,KAAKi+G,4BAA4BpzG,KAGzCo/F,EAAK/pG,UAAU+9G,4BAA8B,SAAUpzG,GACnD,IAAIm3B,EAAQn3B,EAAQqB,cAAc,8BAC9B4lF,EAAW9vD,EAAM91B,cAAc,QAAmBwb,WAAU,GAC5D20F,EAAYxxG,EAAQqB,cAAc,mBACtC4lF,EAASlnF,gBAAgB,MACzBknF,EAASnnF,aAAa,QAAS,qBAC/B,IAAK,IAAI3J,EAAI,EAAGA,EAAI8wF,EAASh9C,WAAWn0C,OAAQK,IAC5C8wF,EAASh9C,WAAWnjC,SAAS3Q,EAAE4Q,WAAY,KAAKhH,gBAAgB,SAEpE,gBAAOyxG,EAAUnwG,cAAc,uBAC/BmwG,EAAU72F,aAAassE,EAAUuqB,EAAUhgE,YAC3CggE,EAAUt1G,MAAMzB,MAAQ08B,EAAM56B,wBAAwB9B,MAAQ,MAElE2kG,EAAK/pG,UAAUy6G,oBAAsB,WAC7B36G,KAAKw6B,gBAA+C,cAA7Bx6B,KAAKg0B,eAAexlB,MAC3CxO,KAAKq6C,mBAAmBliC,uBAAuB,uBAAuBxX,OACtEX,KAAKq6C,mBAAmBn1C,UAAU4G,IAAI,mBAGtC9L,KAAKq6C,mBAAmBn1C,UAAUC,OAAO,oBAGjD8kG,EAAK/pG,UAAUm6G,gBAAkB,WAC7B,IAAKr6G,KAAKi6C,2BAA4B,CAClC,IAAIikE,EAAOl+G,KAAK02B,aAEhB,GADA12B,KAAKm+G,mBAAqBn+G,KAAK6uB,eAAeuxD,WAAW,oBACpD,eAAkB89B,GACnB,IAAK,IAAIzxG,EAAQ,EAAGA,EAAQyxG,EAAKv9G,OAAQ8L,IAChC,eAAkByxG,EAAKvsG,SAASlF,EAAMmF,WAAY,KAAKwsG,eACpD,eAAkBF,EAAKvsG,SAASlF,EAAMmF,WAAY,KAAKglB,WACpDsnF,EAAKvsG,SAASlF,EAAMmF,WAAY,KAAKglB,SAC5C52B,KAAKq+G,gBAAgBH,EAAKvsG,SAASlF,EAAMmF,WAAY,KAAMnF,GAK3EzM,KAAKs+G,4BAETrU,EAAK/pG,UAAUm+G,gBAAkB,SAAUnlF,EAAKzsB,GAC5CzM,KAAKgvG,SAAS3iG,KAAK6sB,GACnBl5B,KAAKgsG,MAAM9yE,EAAI/E,KAAO5tB,OAAOg4G,WAAWrlF,EAAIklF,aAC5Cp+G,KAAKw+G,iBAAiB/xG,EAAOzM,KAAKgsG,MAAM9yE,EAAI/E,MAC5Cn0B,KAAKgtG,kBAAkBr7F,SAASlF,EAAMmF,WAAY,KAAO5R,KAAKw+G,iBAAiB54G,KAAK5F,KAAMyM,GAC1FzM,KAAKgsG,MAAM9yE,EAAI/E,KAAKumF,YAAY16G,KAAKgtG,kBAAkBr7F,SAASlF,EAAMmF,WAAY,OAOtFq4F,EAAK/pG,UAAUu+G,mBAAqB,SAAUvlF,GAC1C,IAAKl5B,KAAKi6C,2BAA4B,CAElC,IADA,IAAIxtC,EAAQzM,KAAK60F,oBAAoB37D,EAAI/E,KAChCnzB,EAAI,EAAGA,EAAIhB,KAAKgvG,SAASruG,OAAQK,IACtC,GAAIk4B,EAAI/E,MAAQn0B,KAAKgvG,SAASr9F,SAAS3Q,EAAE4Q,WAAY,KAAKuiB,IAEtD,YADAn0B,KAAKgvG,SAAStiG,OAAO1L,EAAG,GAIhChB,KAAKq+G,gBAAgBnlF,EAAKzsB,KASlCw9F,EAAK/pG,UAAUs+G,iBAAmB,SAAUE,EAAavxG,GACrD,IAAI+rB,EAAMl5B,KAAK02B,aAAa/kB,SAAS+sG,EAAY9sG,WAAY,KACzD5R,KAAKgvG,SAASh1E,MAAK,SAAU2kF,GAAe,OAAOA,EAAYxqF,MAAQ+E,EAAI/E,SAC3E+E,EAAItC,QAAUzpB,EAAEyxG,QACZ5+G,KAAKw6C,gBACLx6C,KAAK6+G,kBAAmB,EACpB3lF,EAAItC,QACJ52B,KAAK8+G,UAAU5uG,KAAKgpB,EAAIgpB,WAAY,cAGpCliD,KAAK8+G,UAAU5sG,KAAKgnB,EAAIgpB,WAAY,iBAKpD+nD,EAAK/pG,UAAU6+G,gBAAkB,WAC7B/+G,KAAKw6C,eAAgB,EACrB,IAAIwhE,EAAgBh8G,KAAKoD,QAAQ8I,cAAc,IAAM,QACjDlM,KAAKo3B,WAAWz2B,QAAUX,KAAKoD,QAAQ66C,aAAetsC,SAAS3R,KAAKqF,OAAOuM,WAAY,KAAOoqG,GAC9F,eAAS,CAACA,GAAgB,CAAC,oBAE/B,IAAIgD,EAAiBh/G,KAAK02B,aAAazC,QAAO,SAAUiF,GAAO,MAAoB,aAAbA,EAAI1qB,SAC5C,IAA1BwwG,EAAer+G,QAAgBq+G,EAAer+G,QAAkD,oBAAxCX,KAAK8iF,kBAAkBm8B,gBAC/Ej/G,KAAKggF,qBAAsB,GAED,aAA1BhgF,KAAKsjF,kBACDtjF,KAAKk/G,cACLl/G,KAAKiL,cAAc,CAAE2uC,kBAAkB,EAAMslE,aAAa,IAAS,GACnE,gBAAY,CAACl/G,KAAKoD,SAAU,gBAGhCpD,KAAK45C,kBAAoB55C,KAAKwpD,cAC9BxpD,KAAKwpD,aAAal0C,UAElBtV,KAAKk6C,gBAAkBl6C,KAAK+sG,wBAC5B/sG,KAAK44C,aAAaG,oBAClB/4C,KAAK+sG,uBAAwB,IAGrC9C,EAAK/pG,UAAUi/G,oBAAsB,WACjC,IAAK,IAAIn+G,EAAI,EAAGA,EAAIhB,KAAKgvG,SAASruG,OAAQK,IACtChB,KAAKgsG,MAAMhsG,KAAKgvG,SAASr9F,SAAS3Q,EAAE4Q,WAAY,KAAKuiB,KAChDirF,eAAep/G,KAAKgtG,kBAAkBhtG,KAAKgvG,SAASr9F,SAAS3Q,EAAE4Q,WAAY,KAAKnF,SAS7Fw9F,EAAK/pG,UAAUm/G,iBAAmB,aASlCpV,EAAK/pG,UAAUsS,QAAU,WACrB,IAAIqtC,EAAc7/C,KAAKoD,QACvB,GAAKy8C,EAAL,CAGA,IAAIy/D,KAAez/D,EAAY3zC,cAAc,IAAM,UAC/C2zC,EAAY3zC,cAAc,IAAM,SAChCozG,GACAt/G,KAAKyU,eAETzU,KAAKo/G,iBACLp/G,KAAKm/G,sBACLn/G,KAAK4Z,OAAO,QAAgB,IAC5B5Z,KAAKu/G,0BACDv/G,KAAKmI,SACLnI,KAAK8/F,gBAAgB,CAAC,aAEtB9/F,KAAKm2B,OACLn2B,KAAK8/F,kBAELwf,GACAz8G,EAAO3C,UAAUsS,QAAQlP,KAAKtD,MAElCA,KAAKw/G,WAAWhtG,UACZxS,KAAKmI,UAAY,OAAQ+uE,OACzBl3E,KAAKoD,QAAQ0H,UAAY,IAK7B,IAHA,IAAIgb,EAAU,CAAC,eAAgB,eAAgB,gBAAiB,wBAC5D,iBAAkB,cAAe,iBAAkB,eAAgB,eAAgB,YACnF,eAAgB,cAAe,kBAAmB,eAC7C9kB,EAAI,EAAGA,EAAI8kB,EAAQnlB,OAAQK,IAC5BhB,KAAK8lB,EAAQnU,SAAS3Q,EAAE4Q,WAAY,QACpC5R,KAAK8lB,EAAQnU,SAAS3Q,EAAE4Q,WAAY,MAAQ,MAGpD5R,KAAKoD,QAAQ0H,UAAY,GACzB,eAAU9K,KAAKoD,QAAS,GAAI,CAAC,QAAS,cAAe,eAAgB,YAAa,WAAY,wBAElG6mG,EAAK/pG,UAAUq/G,wBAA0B,WACrC,IAAI1/D,EAAc7/C,KAAKoD,QAClBy8C,IAAiBA,EAAY3zC,cAAc,IAAM,SAAyB2zC,EAAY3zC,cAAc,IAAM,WAG/GlM,KAAKwpD,aAAah3C,UAClBxS,KAAK+mB,eAAevU,UACpBxS,KAAKwgG,YAAYhuF,UACjBxS,KAAKy/G,gBAAgBjtG,UACrBxS,KAAKipE,YAAYz2D,YAQrBy3F,EAAK/pG,UAAU4U,cAAgB,WAC3B,MAAO,QAEXm1F,EAAK/pG,UAAUw/G,mBAAqB,WAC5B1/G,KAAK2/G,gBACL3/G,KAAK8iF,kBAAkBikB,kBAAoB,gBAC3C/mG,KAAKoD,QAAQ8B,UAAU4G,IAAI,gBAG3B9L,KAAKoD,QAAQ8B,UAAUC,OAAO,gBAGtC8kG,EAAK/pG,UAAU0/G,YAAc,SAAUC,GAC/B7/G,KAAKyK,UACL,eAAS,CAACzK,KAAKoD,SAAUpD,KAAKyK,SAASxG,MAAM,MAE7C47G,GACA,gBAAY,CAAC7/G,KAAKoD,SAAUy8G,EAAY57G,MAAM,OAWtDgmG,EAAK/pG,UAAU+U,kBAAoB,SAAUC,EAASC,GAClD,IAGI2qG,EAHAC,GAAiB,EACjBC,GAAqB,EACrBC,GAAgB,EAEhBl6F,EAAO,CAAEgI,YAAa,WACtBmyF,EAAkB,KAClBC,EAAiB,KACrB,IAAIngH,KAAK8uB,YAAT,CAGA9uB,KAAKiyB,IAAI,kBACLjyB,KAAKogH,qBACLpgH,KAAKw/G,WAAW35G,QAEpB,IAAImV,EAAavb,OAAO2V,KAAKF,GACzB8F,EAAWhX,QAAQ,YAAc,IAC7BhE,KAAKi6C,6BACLj6C,KAAK4kG,YAAc,IAEvB5kG,KAAKqgH,qBACLL,GAAqB,GAEzB,IAAK,IAAInyG,EAAK,EAAGyyG,EAAetlG,EAAYnN,EAAKyyG,EAAa3/G,OAAQkN,IAAM,CACxE,IAAIwH,EAAOirG,EAAazyG,GACxB,OAAQwH,GACJ,IAAK,cACDrV,KAAK4Z,OAAO,QAAiB,CAAEC,OAAQ,QAASs2B,OAAQnwC,KAAKwyB,cAC7DutF,GAAiB,EACG,SAAhB//G,KAAKqF,QACLrF,KAAKwpD,aAAal0C,UAEtB,MACJ,IAAK,eACD,GAAItV,KAAK8sG,mBAAoB,CACzB9sG,KAAK8sG,oBAAqB,EAC1B9sG,KAAK4Z,OAAO,QAA4B,CAAEC,OAAQ,QAASmB,WAAY9F,EAAQ4iB,eAC/E,MAEJ,GAAI93B,KAAKo4B,aAAep4B,KAAKo4B,YAAYmoF,SAErC,YADAvgH,KAAKo4B,YAAYmoF,UAAW,GAGhCvgH,KAAK4Z,OAAO,QAA4B,CAAEC,OAAQ,QAASmB,WAAY9F,EAAQ4iB,gBAC3E,eAAkB5iB,EAAQ4iB,aAAaC,cAAgB,eAAkB7iB,EAAQ4iB,aAAaG,WAC3F,eAAkB/iB,EAAQ4iB,aAAaqkE,qBACtC,eAAkBhnF,EAAQ2iB,eACxB5iB,EAAQ4iB,aAAaC,cAAgB5iB,EAAQ2iB,aAAaC,cACpD/3B,KAAKi6C,6BAA+Bj6C,KAAKyyB,sBAC1CzyB,KAAK83B,aAAaqkE,mBAAqBn8F,KAAK83B,aAAaG,YACpE8nF,GAAiB,GAEjB//G,KAAKo4B,aAAep4B,KAAKo4B,YAAYmoF,WACrCvgH,KAAKo4B,YAAYmoF,UAAW,GAEhC,MACJ,IAAK,eACDvgH,KAAK4Z,OAAO,QAAiB,CAAEC,OAAQ,OAAQs2B,OAAQnwC,KAAK+4B,eAC5DgnF,GAAiB,EACjBD,GAAc,EACd,MACJ,IAAK,iBACD9/G,KAAK26G,sBACL36G,KAAK4Z,OAAO,QAAiB,CAAEC,OAAQ,SAAUs2B,OAAQnwC,KAAKw6B,iBAC9DulF,GAAiB,EACgB,cAA7B//G,KAAKg0B,eAAexlB,KACpBxO,KAAKwgH,gBAGe,SAAhBxgH,KAAKqF,QACLrF,KAAKwpD,aAAal0C,UAG1B,MACJ,IAAK,SACL,IAAK,QACDtV,KAAK4Z,OAAO,QAAiB,CAAEC,OAAQ,SAAUmB,WAAY,CAAE1V,MAAO4P,EAAQ5P,MAAOD,OAAQ6P,EAAQ7P,UACjGrF,KAAKwyB,aACLxyB,KAAKo4B,YAAY9iB,UAErB,MACJ,IAAK,kBACDtV,KAAK+6G,aAAa1lB,YAClByqB,GAAc,EACd,MACJ,IAAK,sBACD9/G,KAAK4Z,OAAO,QAAiB,CAAEC,OAAQ,iBAAkBs2B,OAAQnwC,KAAKmhD,sBACtEnhD,KAAKk6G,aAAa5kG,UAClBtV,KAAK+6G,aAAa1lB,YAClB,MACJ,IAAK,iBACDr1F,KAAK4Z,OAAO,QAAiB,CAAEC,OAAQ,YAAas2B,OAAQnwC,KAAK87F,iBACjE,MACJ,IAAK,WACD97F,KAAK4/G,YAAYzqG,EAAQ1K,UACzB,MACJ,IAAK,iBACGzK,KAAKgkF,kBACLhkF,KAAK0/G,qBACL1/G,KAAKgkF,gBAAgBy8B,0BAEzB,MACJ,IAAK,cACDzgH,KAAK0gH,cAAgB,gBAAiB1gH,KAAKk/E,aAC3C6gC,GAAiB,EACjB,MACJ,IAAK,sBACD//G,KAAK2gH,sBAAwB,gBAAiB3gH,KAAK4+F,qBACnDmhB,GAAiB,EACjB,MACJ,IAAK,iBACD//G,KAAK4gH,iBAAmB,gBAAiB5gH,KAAKmgD,gBAC9C4/D,GAAiB,EACjB,MACJ,IAAK,gBACD//G,KAAK4Z,OAAO,QAAiB,CAAEC,OAAQ,QAASs2B,OAAQnwC,KAAK0yB,gBAC7D1yB,KAAK+6G,aAAa1lB,YAClB0qB,GAAiB,EACjBD,GAAc,EACM,SAAhB9/G,KAAKqF,QACLrF,KAAKwpD,aAAal0C,UAEtB,MACJ,IAAK,0BACL,IAAK,YAID,GAHAyqG,GAAiB,EACjBG,EAAkBlgH,KAAK+gF,cAAgBnzE,SAAS1B,cAAc,IAAMlM,KAAK+gF,cAAc8/B,UAAY,KACnGV,EAAiBD,EAAkBA,EAAgBv3D,cAAc,GAAK,KAClE3oD,KAAKogD,WAAa+/D,GAAkB,eAAkBA,EAAe//D,UAAUA,WAAY,CAC3F,IAAI0gE,EAAkBrhH,OAAOquG,OAAO,GAAIqS,EAAe//D,UAAW,CAAEA,UAAWlrC,EAAQkrC,YACvF+/D,EAAel1G,cAAc,CAAEm1C,UAAW0gE,IAAmB,GAC7D,OAAQ,eAAkBX,EAAep/B,eAAgB,CACrD,IAAIggC,EAAgBnzG,SAAS1B,cAAc,IAAMi0G,EAAep/B,cAAc8/B,UAC1EG,EAAwBD,EAAgBA,EAAcp4D,cAAc,GAAK,KAC7E,GAAIq4D,EAAuB,CACvB,IAAIC,EAAqBxhH,OAAOquG,OAAO,GAAIkT,EAAsB5gE,WACjE6gE,EAAmB7gE,UAAY+/D,EAAe//D,UAC9C4gE,EAAsB/1G,cAAc,CAAEm1C,UAAW6gE,IAAsB,GAE3Ed,EAAiBa,GAGzBhhH,KAAK+6G,aAAa1lB,YAClB,MACJ,IAAK,UACDr1F,KAAK4Z,OAAO,QAAiB,CAAEC,OAAQ,YACnB,SAAhB7Z,KAAKqF,QACLrF,KAAKwpD,aAAal0C,UAEtB,MACJ,IAAK,gBACDtV,KAAK4Z,OAAO,QAA4B,CACpCC,OAAQ,QAASmB,WAAY9F,EAAQyd,cACrCuuF,cAAe/rG,EAAQwd,gBAE3B,MACJ,IAAK,cACI3yB,KAAKo3B,WAAWz2B,QAAUX,KAAK0yB,eAAiB1yB,KAAK2yB,cAAcxD,QAAQxuB,SAC5Eo/G,GAAiB,GAErB//G,KAAK4Z,OAAO,QAAiB,CAAEC,OAAQ,YAAamB,WAAY9F,IAC5C,SAAhBlV,KAAKqF,QACLrF,KAAKwpD,aAAal0C,UAEtB,MACJ,IAAK,gBACL,IAAK,aACL,IAAK,uBACL,IAAK,6BACL,IAAK,eACL,IAAK,SACDtV,KAAKiyB,IAAI,uBACTguF,GAAgB,EAChBD,GAAqB,EACrB,MACJ,IAAK,QACIhgH,KAAK6vB,gBAAgBqG,yBACtB6pF,GAAiB,GAErB//G,KAAK6vB,gBAAgBqG,wBAAyB,EAC9C,MACJ,IAAK,UACGl2B,KAAK61C,QACL71C,KAAKogG,uBAGLpgG,KAAKmhH,uBAET,MACJ,QACInhH,KAAKohH,uBAAuB/rG,EAAMH,EAAS8qG,IAGnDF,GACA9/G,KAAKw1F,sBAELwqB,EACIC,GAAiBjgH,KAAKqpE,oBAAsBrpE,KAAKo6C,WACjDp6C,KAAKigH,gBAGLjgH,KAAKsV,UAGJyqG,IACL//G,KAAK4Z,OAAO,QAAqBmM,GACjCg6F,GAAiB,EACjB//G,KAAKqhH,kBAAkBnsG,EAAQw4F,qBAGvCzD,EAAK/pG,UAAUkhH,uBAAyB,SAAU/rG,EAAMH,EAAS8qG,GAC7D,OAAQ3qG,GACJ,IAAK,YACDrV,KAAKshH,YACDthH,KAAKwyB,cACLxyB,KAAKoD,QAAQ8I,cAAc,gBAAgBy8C,cAAc,GAAGljD,UAAYyP,EAAQzP,UAChFzF,KAAKoD,QAAQ8I,cAAc,gBAAgBy8C,cAAc,GAAG5gD,YAE5C,SAAhB/H,KAAKqF,SACLrF,KAAKwpD,aAAarO,eAAejmC,EAAQzP,WACzCzF,KAAKwpD,aAAa5O,cAElB56C,KAAKi5C,SAAWj5C,KAAKg5C,gBACrBh5C,KAAKg5C,cAAcuoE,aAAa54D,cAAc,GAAGljD,UAAYyP,EAAQzP,UACrEzF,KAAKg5C,cAAcuoE,aAAa54D,cAAc,GAAG5gD,YAEjD/H,KAAK0uG,kBAAoB1uG,KAAKwhH,oBAC9BxhH,KAAKwhH,kBAAkBC,iBAAiB94D,cAAc,GAAGljD,UAAYyP,EAAQzP,UAC7EzF,KAAKwhH,kBAAkBC,iBAAiB94D,cAAc,GAAG5gD,YAEzD/H,KAAK01C,gBAAkB11C,KAAK0hH,mBAAqB1hH,KAAK45C,mBACtD55C,KAAK0hH,iBAAiBC,gBAAgBh5D,cAAc,GAAGljD,UAAYyP,EAAQzP,UAC3EzF,KAAK0hH,iBAAiBC,gBAAgBh5D,cAAc,GAAG5gD,YAE1B,cAA7B/H,KAAKg0B,eAAexlB,MAAwBxO,KAAKg0B,eAAe4tF,uBAChE5hH,KAAKwgH,gBAETxgH,KAAK4Z,OAAO,QAAmB,IAC/B,MACJ,IAAK,eACD5Z,KAAKk6G,aAAa5kG,UAClB,MACJ,IAAK,gBACDtV,KAAK+6G,aAAa1lB,YAClBr1F,KAAK6hH,oBACL,MACJ,IAAK,YACG7hH,KAAKuiF,UACL,eAAS,CAACviF,KAAKoD,SAAU,qBAGzB,gBAAY,CAACpD,KAAKoD,SAAU,qBAEhCpD,KAAKk6G,aAAa5kG,UAClBtV,KAAK+6G,aAAa1lB,YAClB,MACJ,IAAK,YACDr1F,KAAK8hH,kBACL,MACJ,IAAK,iBACD9hH,KAAK+6G,aAAa1lB,YAClBr1F,KAAK4Z,OAAO,QAAiB,CAAEC,OAAQ,aAAcs2B,QAAQ,IAC7D,MACJ,IAAK,kBACDnwC,KAAK4Z,OAAO,QAAiB,CAAEC,OAAQ,aAAcs2B,OAAQnwC,KAAK+hH,kBAClE,MACJ,IAAK,mBACD/hH,KAAK4Z,OAAO,QAAiB,CAAEC,OAAQ,cAAes2B,OAAQnwC,KAAK0uG,mBACnE,MACJ,IAAK,oBACD1uG,KAAK4Z,OAAO,QAAiB,CAAEC,OAAQ,gBAAiBs2B,OAAQnwC,KAAK2uG,oBACrE,MACJ,IAAK,iBACD3uG,KAAK26G,sBACL36G,KAAK4Z,OAAO,QAA4B,CAAEC,OAAQ,SAAUmB,WAAY9F,EAAQ8e,iBAChF,MACJ,IAAK,iBACDh0B,KAAK4Z,OAAO,QAA4B,CAAEC,OAAQ,SAAUmB,WAAY9F,EAAQue,iBAChF,MACJ,IAAK,eACDzzB,KAAK4Z,OAAO,QAA4B,CAAEC,OAAQ,SAClD,MACJ,IAAK,oBACD7Z,KAAK4Z,OAAO,QAA4B,CAAEC,OAAQ,YAAamB,WAAY9F,EAAQ4tE,oBACnF,MACJ,IAAK,eACD9iF,KAAK4Z,OAAO,QAA4B,CAAEC,OAAQ,OAAQmB,WAAY9F,EAAQ2wD,eAC9E,MACJ,IAAK,gBACL,IAAK,mBACG7lE,KAAKujF,cACLvjF,KAAKgiH,gBAGLhiH,KAAKiiH,iBAETjiH,KAAK4Z,OAAO,QAAqB,CAAEsoG,KAAM,WAAYxc,UAAqB,qBAATrwF,IACjE,MACJ,IAAK,aAED,IAAI8sG,EAAYniH,KAAK6vB,gBAAgBwN,WAOrC,IANIr9B,KAAK87F,iBAAkB97F,KAAKovG,oBAAwB+S,GAAaA,EAAUlyF,WAC3EjwB,KAAKslG,kBAEJ,eAAkBtlG,KAAKovB,aAAepvB,KAAKovB,WAAW4B,SACvDhxB,KAAKqsG,mBAAoB,GAEzB5sG,OAAO2iH,eAAeltG,GAASmtG,UAE/B,IADA,IAAIC,EAAYtiH,KAAK87B,0BAA0B,GACtC96B,EAAI,EAAGmqB,EAAQ1rB,OAAO2V,KAAKF,EAAQka,YAAapuB,EAAImqB,EAAMxqB,OAAQK,IACvEhB,KAAKuiH,WAAW,eAASD,EAAWtiH,KAAKovB,WAAWjE,EAAMxZ,SAAS3Q,EAAE4Q,WAAY,OAAQ5R,KAAKovB,WAAWjE,EAAMxZ,SAAS3Q,EAAE4Q,WAAY,YAGzI,GAAIuwG,EAAUlyF,UAAW,CAC1B,IAAIuyF,EAAW,eAAkBxiH,KAAKovB,YAAuC,GAAzBpvB,KAAKovB,WAAW4B,OAChEyxF,EAASN,EAAU7sF,OAAS,GAChC,GAAImtF,EAAM9hH,SAAWX,KAAK2yB,cAAc6F,qBAAuBgqF,EAAQ7hH,SAAU6hH,EAAQ,GAAG3wF,OACxF,IAAS7wB,EAAI,EAAGA,EAAIyhH,EAAM9hH,OAAQK,IAC9BwhH,EAAU,OAASltF,MAAMktF,EAASC,EAAM9wG,SAAS3Q,EAAE4Q,WAAY,KAAMuwG,EAAU/qF,YAAc,IAGrGp3B,KAAKovB,WAAa,CACd4B,OAAQwxF,EAASz3E,MAAO/qC,KAAKovB,WAAW2b,MACxC3T,WAAYp3B,KAAKovB,WAAWgI,YAEhCp3B,KAAK6vB,gBAAgBsN,SAAS,IAC9BglF,EAAUjyF,SAASlwB,KAAKovB,iBAGxBpvB,KAAK6vB,gBAAgBsN,SAAS,CAAEpN,eAAe,IAC/C/vB,KAAK4Z,OAAO,QAA2B,IAClComG,IACDhgH,KAAKk6G,aAAa5kG,UACdtV,KAAKggF,qBACLhgF,KAAK4Z,OAAO,OAAkC,KAI1D5Z,KAAK0iH,gBACL,MACJ,IAAK,cAED,IAAI/hG,EAASzL,EAAQgqG,YAAc,OAAW,QAC9Cv+F,EAAO,CAAC3gB,KAAKoD,SAAU,eACvB,MACJ,IAAK,mBACIpD,KAAK2iH,4BACN3iH,KAAK4iH,UAAU1tG,EAAQw4F,kBAE3B1tG,KAAK2iH,4BAA6B,EAClC,MACJ,IAAK,iBACD3iH,KAAK44C,aAAaiqE,kBAClB,MACJ,IAAK,mBACD7iH,KAAK4Z,OAAO,QAA4B,IACxC,MACJ,IAAK,mBACD5Z,KAAK8iH,0BACL9iH,KAAK4Z,OAAO,QAAsB,IAClC5Z,KAAKsV,UACL,MACJ,IAAK,qBACDtV,KAAKwpD,aAAatL,kBAAkBhpC,EAAQupC,oBAC5C,QAGZwrD,EAAK/pG,UAAUmhH,kBAAoB,SAAU50G,GACzC,IAAIy9F,EAAUlqG,KACd,IAAe,IAAXyM,EAAc,CACd,IAAIs2G,EAAO,WACP7Y,EAAQ0Y,UAAUn2G,GAClBy9F,EAAQ71E,IAAI,QAAqB0uF,IAErC/iH,KAAK+uB,GAAG,QAAqBg0F,EAAM/iH,QAS3CiqG,EAAK/pG,UAAU+K,cAAgB,SAAUoK,EAAMoY,GAC3C5qB,EAAO3C,UAAU+K,cAAc3H,KAAKtD,KAAMqV,EAAMoY,GAChD,IAAIuG,EAAiB,iBACjB3e,EAAK,GAAK2e,IAAmBh0B,KAAKq7F,cAAgB5tE,GAClDztB,KAAKq7F,aAAa2nB,iBAO1B/Y,EAAK/pG,UAAU+iH,eAAiB,WAC5B,OAAOjjH,KAAK0qG,aAMhBT,EAAK/pG,UAAUs1F,oBAAsB,WAIjC,IAHA,IAAI0tB,EAAc,GAAGx1G,MAAMpK,KAAKtD,KAAKq6C,mBAAmB33B,iBAAiB,4CACrEygG,EAAa,GAAGz1G,MAAMpK,KAAKtD,KAAKq6C,mBAAmBliC,uBAAuB,wBAC1Eof,EAAOv3B,KAAK02B,aACP11B,EAAI,EAAGA,EAAIkiH,EAAYviH,OAAQK,IAAK,CACzC,IAAI2gD,EAAOuhE,EAAYvxG,SAAS3Q,EAAE4Q,WAAY,MAC1C5R,KAAK0yB,eAAiB1yB,KAAKy1C,iBAAmBz1C,KAAK+4B,gBAC9CxB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK6jC,iBAAoBle,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKmnB,cACnFxB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK8gB,cAIrCivB,EAAKz8C,UAAU4G,IAAI,kBAHnB61C,EAAKz8C,UAAU4G,IAAI,oBAO/B,IAAK,IAAIi/B,EAAQ,EAAGA,EAAQo4E,EAAWxiH,OAAQoqC,IACvC/qC,KAAKy1C,iBACL0tE,EAAWxxG,SAASo5B,EAAMn5B,WAAY,KAAK1M,UAAU4G,IAAI,mBAIrEm+F,EAAK/pG,UAAUk6G,kBAAoB,SAAUjrF,EAASi0F,GAClD,IAAK,IAAIpiH,EAAI,EAAGiiB,EAAMkM,EAAQxuB,OAAQK,EAAIiiB,EAAKjiB,IACvCmuB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKud,QACpCnvB,KAAKo6G,kBAAkBjrF,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKud,SAAS,GAGpEnvB,KAAK4kG,YAAYv4F,KAAK8iB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,OAGzD,eAAkBwxG,IAAiBA,GACnCpjH,KAAKqjH,yBAGbpZ,EAAK/pG,UAAUojH,mBAAqB,WAChC,OAAOtjH,KAAKqpE,oBAAsBrpE,KAAKkiF,6BAE3C+nB,EAAK/pG,UAAUg6C,aAAe,WAC1B,OAAmC,IAA5Bl6C,KAAKqpE,oBAA8D,IAAlCrpE,KAAKorG,kBAAkBzqG,QAAmD,IAAnCX,KAAKqrG,mBAAmB1qG,QACtE,IAA7BX,KAAKurG,aAAa5qG,QAE1BspG,EAAK/pG,UAAUylF,cAAgB,WAC3B,OAAO3lF,KAAKujH,YAEhBtZ,EAAK/pG,UAAUmjH,sBAAwB,WAKnC,IAJA,IAAI9rF,EAAOv3B,KAAK4kG,YACZ4e,EAAc,EACd7Y,EAAe,EACf7V,EAAgB90F,KAAKqpE,mBAChBroE,EAAI,EAAGA,EAAIu2B,EAAK52B,OAAQK,IACzBu2B,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKk+E,aAC7B9uF,EAAI8zF,GACJv9D,EAAK7qB,OAAO82G,EAAa,EAAGjsF,EAAK7qB,OAAO1L,EAAG,GAAG,IAC9CwiH,MAGAjsF,EAAK7qB,OAAOooF,EAAgB6V,EAAc,EAAGpzE,EAAK7qB,OAAO1L,EAAG,GAAG,IAC/D2pG,OAKhBV,EAAK/pG,UAAUq6G,iBAAmB,SAAUhjF,GACxC,IAAK,IAAIv2B,EAAI,EAAGA,EAAIu2B,EAAK52B,OAAQK,IACzBu2B,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKud,QACjCnvB,KAAKu6G,iBAAiBhjF,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKud,SAElDoI,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKk+E,YACtC9vF,KAAK4zF,wBAQjBqW,EAAK/pG,UAAUujH,qBAAuB,SAAU1/G,GAC5C,IAAIwzB,EAAoB,SAAbxzB,EAAsB/D,KAAK0jH,uBAAsC,UAAb3/G,EAAuB/D,KAAK2jH,wBAA0B,GACjHr+G,EAAQ,EAMZ,OALAiyB,EAAKtD,QAAO,SAAUiF,GACdA,EAAItC,UACJtxB,GAASqM,SAASunB,EAAI5zB,MAAMsM,WAAY,QAGzCtM,GAQX2kG,EAAK/pG,UAAUw2B,WAAa,SAAUktF,GAClC,IAAI1Z,EAAUlqG,KACV6jH,EAAS7jH,KAAKmqG,cAActjG,KAAI,SAAU+7C,GAAK,OAAOA,EAAIsnD,EAAQv3E,cAAcxD,QAAQxuB,UAAWszB,QAAO,SAAU2uB,GAAK,OAAOA,GAAK,KACrIkhE,EAAOD,EAAOljH,SACbX,KAAKi6C,4BAA8B,eAAkBj6C,KAAK4kG,cAA4C,IAA5B5kG,KAAK4kG,YAAYjkG,QAAgBijH,KAC5G5jH,KAAK4kG,YAAc,GACnB5kG,KAAKo6G,kBAAkBp6G,KAAKmvB,UAEhC,IAAIA,EAAmB,IAAT20F,EAAa9jH,KAAK4kG,YAC5B5kG,KAAK4kG,YAAYl3F,MAAMm2G,EAAO,GAAIA,EAAOC,EAAO,GAAK,GACrD9+G,EAAO,GACP4tD,EAAQ,GACRmxD,EAAU,GACVC,EAAoBhkH,KAAKi6C,4BAA8Bj6C,KAAKirG,yBAAoC,IAAT6Y,EACvFE,IACAhkH,KAAKqrG,mBAAqB,GAC1BrrG,KAAKorG,kBAAoB,IAE7B,IAAK,IAAIpqG,EAAI,EAAGA,EAAImuB,EAAQxuB,OAAQK,IACmB,SAA/CmuB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK03D,QAAqBn6C,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK2rC,UAC7Fv4C,EAAKqH,KAAK8iB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,MACrCoyG,GACAhkH,KAAKorG,kBAAkB/+F,KAAK8iB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,OAGX,UAA/Cud,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK03D,QACzC1W,EAAMvmD,KAAK8iB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,MACtCoyG,GACAhkH,KAAKqrG,mBAAmBh/F,KAAK8iB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,OAIhEmyG,EAAQ13G,KAAK8iB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,MAWpD,OARI5R,KAAKi6C,4BAA8Bj6C,KAAKk6C,iBACpCl6C,KAAKorG,kBAAkBzqG,SACvBqE,EAAOhF,KAAKorG,mBAEZprG,KAAKqrG,mBAAmB1qG,SACxBiyD,EAAQ5yD,KAAKqrG,qBAGdrmG,EAAKiqC,OAAO80E,GAAS90E,OAAO2jB,IAQvCq3C,EAAK/pG,UAAU2vF,mCAAqC,SAAUo0B,EAAe/qF,GACzE,IAAK,IAAIl4B,EAAI,EAAGA,EAAIk4B,EAAIv4B,OAAQK,IAAK,CACjC,IAAIkjH,EAAmBhrF,EAAIvnB,SAAS3Q,EAAE4Q,WAAY,KAClD,GAAIsyG,EAAiBryF,QAAUoyF,GAAiBC,EAAiBhiE,aAAe+hE,EAAe,CAC3FjkH,KAAKmkH,cAAgBD,EACrB,MAEKA,EAAiB/0F,SACtBnvB,KAAK6vF,mCAAmCo0B,EAAeC,EAAiB/0F,SAGhF,OAAOnvB,KAAKmkH,eAMhBla,EAAK/pG,UAAUozF,uBAAyB,WACpC,OAAOtzF,KAAKmqG,eAMhBF,EAAK/pG,UAAUq2B,SAAW,WACtB,OAAOv2B,KAAKsvB,OAMhB26E,EAAK/pG,UAAUkkH,mBAAqB,WAChC,OAAOpkH,KAAKkwG,eAOhBjG,EAAK/pG,UAAUmkH,uBAAyB,SAAUhxB,GAC9CrzF,KAAKmqG,cAAgB9W,GAOzB4W,EAAK/pG,UAAUo5F,kBAAoB,WAC/B,OAAOt5F,KAAKskH,4BAOhBra,EAAK/pG,UAAUm6C,iBAAmB,WAC9B,OAAOr6C,KAAK+6G,aAAa3pB,YAS7B6Y,EAAK/pG,UAAUqkH,qBAAuB,SAAUnhH,GAC5CpD,KAAK+6G,aAAa7pB,SAAS9tF,IAO/B6mG,EAAK/pG,UAAU0+C,gBAAkB,WAC7B,OAAO5+C,KAAKw8F,cAAc7K,YAS9BsY,EAAK/pG,UAAUskH,oBAAsB,SAAUphH,GAC3CpD,KAAKw8F,cAAclL,SAASluF,IAOhC6mG,EAAK/pG,UAAU85C,WAAa,WACxB,OAAOh6C,KAAKw8F,cAAcpL,YAS9B6Y,EAAK/pG,UAAUukH,eAAiB,SAAUrhH,GACtCpD,KAAKw8F,cAActL,SAAS9tF,IAOhC6mG,EAAK/pG,UAAUwzF,eAAiB,WAC5B,OAAO1zF,KAAK+6G,aAAappB,YAS7BsY,EAAK/pG,UAAUwkH,mBAAqB,SAAUthH,GAC1CpD,KAAK+6G,aAAazpB,SAASluF,IAO/B6mG,EAAK/pG,UAAUq7C,iBAAmB,WAE9B,OADAv7C,KAAK2kH,cAAgB3kH,KAAKoD,QAAQ+U,uBAAuB,QAAqB,GACvEnY,KAAK2kH,eAOhB1a,EAAK/pG,UAAU0kH,sBAAwB,WAEnC,OADA5kH,KAAK2kH,cAAgB3kH,KAAKoD,QAAQ+U,uBAAuB,QAAqB,GACvEnY,KAAK2kH,cAActoE,WAAWA,YAOzC4tD,EAAK/pG,UAAU2kH,SAAW,WACtB,OAAO7kH,KAAK8kH,WAShB7a,EAAK/pG,UAAU6kH,aAAe,SAAU3hH,GACpCpD,KAAK8kH,UAAY1hH,GASrB6mG,EAAK/pG,UAAUsnG,cAAgB,SAAU/6F,GACrC,OAAIzM,KAAKyyB,sBAAwBzyB,KAAK2yB,cAAc6F,kBACzCx4B,KAAKu8F,eAAeiL,cAAc/6F,GAGlCzM,KAAKw8F,cAAcgL,cAAc/6F,IAWhDw9F,EAAK/pG,UAAU8kH,qBAAuB,SAAUv4G,GAC5C,OAAOzM,KAAKw8F,cAAcgL,cAAc/6F,IAS5Cw9F,EAAK/pG,UAAU+kH,oBAAsB,SAAUx4G,GAC3C,OAAOzM,KAAKw8F,cAAcgL,cAAc/6F,IAO5Cw9F,EAAK/pG,UAAU8xF,QAAU,WACrB,OAAOhyF,KAAKw8F,cAAc0oB,kBAS9Bjb,EAAK/pG,UAAUilH,yBAA2B,SAAU14G,GAChD,OAAOzM,KAAKw8F,cAAcgL,cAAc/6F,IAS5Cw9F,EAAK/pG,UAAUklH,WAAa,SAAU9kH,GAClC,IAAIgtB,EAAMhtB,EACNylB,EAAO,CAAEzlB,OAAQA,GACrB,IAAK,eAAkBA,IAAW,eAAkB,gBAAagtB,EAAK,wBAC/D,eAAkB,gBAAaA,EAAK,wBAAyB,CAChE,IAAIq0B,EAAO,eAAQr0B,EAAK,IAAM,QAC9B,IAAKq0B,EAAM,CACP,IAAI0jE,EAAQ,eAAQ/3F,EAAK,IAAM,QAC/B,IAAK,eAAkB+3F,KAAWA,EAAMngH,UAAUmB,SAAS,cAAe,CACtE,IAAIi/G,EAAStlH,KAAKulH,oBAAoBF,EAAM36G,aAAa,aACrDsqF,EAAWrjF,SAAS0zG,EAAM36G,aAAa,QAAwB,IACnEqb,EAAO,CAAEsR,IAAKguF,EAAOG,QAASF,EAAOz5F,KAAMmpE,SAAUA,GAEzD,OAAOjvE,EAEX,IAAI+hF,EAAYn2F,SAASgwC,EAAKj3C,aAAa,QAAwB,IAC/D+6G,EAAQ,eAAQ9jE,EAAM,IAAM,QAChC,IAAK,eAAkBA,KAAUlmC,MAAMqsF,KAAe,eAAkB2d,GAAQ,CACxEzwB,EAAWrjF,SAAS8zG,EAAM/6G,aAAa,QAAwB,IAAnE,IACIysB,EAAOn3B,KAAKw8F,cAAcxK,UAC1BvlF,EAAQq7F,EAAY9nG,KAAKkhD,iBACzBsgC,EAAarqD,EAAKlD,QAAO,SAAUrzB,GAAK,OAAOA,EAAEuzB,MAAQsxF,EAAM/6G,aAAa,eAC5E86G,EAAU,GACVj2F,OAAS,EACT9vB,OAAO2V,KAAKosE,GAAY7gF,SACxB6kH,EAAUhkC,EAAW,GAAG31D,KACxB0D,EAASiyD,EAAW,GAAG//B,MAAM9vC,SAASlF,EAAMmF,WAAY,KAAK2d,QAEjExJ,EAAO,CAAE47B,KAAMA,EAAMmmD,UAAWA,EAAWzwE,IAAKouF,EAAOzwB,SAAUA,EAAUwwB,QAASA,EAASj2F,OAAQA,EAAQjvB,OAAQA,IAG7H,OAAOylB,GAQXkkF,EAAK/pG,UAAUwlH,eAAiB,WAC5B,OAAO1lH,KAAKw8F,cAAc0oB,kBAQ9Bjb,EAAK/pG,UAAUylH,mBAAqB,WAChC,OAAO3lH,KAAKw8F,cAAc0oB,kBAO9Bjb,EAAK/pG,UAAUgoG,YAAc,WACzB,OAAOloG,KAAK4lH,kBAOhB3b,EAAK/pG,UAAU0lH,eAAiB,SAAUC,GACtC,GAAI,eAAkB7lH,KAAK4+C,kBAAkB1yC,cAAc,SACvD,MAAO,GAEX,IAAIkmC,EAAQpyC,KAAK4+C,kBAAkB1yC,cAAc,QAC7CirB,EAAO,GAAGzpB,MAAMpK,KAAK8uC,EAAMxxB,UAC/B,GAAI5gB,KAAKo6C,WAAY,CACjB,IAAI0rE,EAAW9lH,KAAK0zF,iBAAiBxnF,cAAc,QAC/C65G,EAAa,GAAGr4G,MAAMpK,KAAKwiH,EAASllG,UACxCuW,EAAOn3B,KAAKgmH,eAAeD,EAAY5uF,GAE3C,IAAI8uF,EAAWjmH,KAAKkmH,iBAAiB/uF,EAAM0uF,GAC3C,OAAOI,GAQXhc,EAAK/pG,UAAU8lH,eAAiB,SAAUG,EAAOC,GAC7C,IAAK,IAAIplH,EAAI,EAAGiiB,EAAMmjG,EAAMzlH,OAAQK,EAAIiiB,EAAKjiB,IACzCmlH,EAAM95G,KAAK+5G,EAAMz0G,SAAS3Q,EAAE4Q,WAAY,MAE5C,OAAOu0G,GAEXlc,EAAK/pG,UAAUgmH,iBAAmB,SAAU/uF,EAAMkvF,GAE9C,IADA,IAAIC,EAAQ,GACHtlH,EAAI,EAAGiiB,EAAMkU,EAAKx2B,OAAQK,EAAIiiB,EAAKjiB,KACpCm2B,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAUmB,SAAS,SAC/C8wB,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAUmB,SAAS,iBAAkBggH,IACvErmH,KAAKumH,yBACLD,EAAM30G,SAASwlB,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAKlH,aAAa,iBAAkB,KAAOysB,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAGlH00G,EAAMj6G,KAAK8qB,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,OAInD,OAAO00G,GAQXrc,EAAK/pG,UAAUsmH,mBAAqB,WAChC,OAAOxmH,KAAKymH,yBAQhBxc,EAAK/pG,UAAUumH,sBAAwB,SAAUZ,GAC7C,OAAO7lH,KAAK4lH,eAAeC,IAQ/B5b,EAAK/pG,UAAUwmH,kBAAoB,WAC/B,OAAO1mH,KAAK2mH,wBAQhB1c,EAAK/pG,UAAUymH,qBAAuB,SAAUd,GAC5C,OAAO7lH,KAAK4lH,eAAeC,IAQ/B5b,EAAK/pG,UAAU0mH,uBAAyB,WACpC,OAAO5mH,KAAK6mH,6BAQhB5c,EAAK/pG,UAAU2mH,0BAA4B,SAAUhB,GACjD,OAAO7lH,KAAK4lH,eAAeC,IAY/B5b,EAAK/pG,UAAU4mH,aAAe,SAAUvmH,EAAKsxB,EAAOpZ,GAChD,IAAIgpC,EAAQ,QACR+jE,EAAU,OACVuB,EAAS,QACTC,EAAS,MACTC,EAASjnH,KAAK87B,0BAA0B,GACxC6lB,EAAO,IAAI,OAAa3hD,KAAMA,KAAK6uB,gBACnCq4F,EAAWlnH,KAAKgwF,sBAAsBn+D,GACtCqH,EAAMl5B,KAAK04B,iBAAiB7G,GAC5Bs1F,EAAannH,KAAKw8F,cAAcxK,UAChCo1B,EAAcD,EAAWlzF,QAAO,SAAUrzB,GAC1C,OAAO,eAASqmH,EAAQrmH,EAAEirB,QAAUtrB,KACrC,GACC++E,EAAK8nC,EAAcpnH,KAAKoD,QAAQ8I,cAAc,aAAek7G,EAAY,GAAKJ,GAAU,KAAO,KACnG,IAAK,eAAkB1nC,GAAvB,CACyB,kBAAV7mE,IACPA,EAAQzY,KAAKkL,SAASuN,IAE1B,gBAASoZ,EAAOpZ,EAAO2uG,EAAY,GAAK5B,IAEpCxlH,KAAKqgD,iBACLr7C,EAEJ,IAAI27E,EAAK3gF,KAAKyyB,qBAAuB6sD,EAAG1+D,SAASjP,SAASu1G,EAASt1G,WAAY,KACzE5R,KAAKynG,iBAAiB2f,EAAY,GAAKL,GAASG,GACtD,IAAK,eAAkBvmC,GAAK,CACxB,IAAI0mC,EAAM,EACNrnH,KAAK2yB,cAAcxD,QAAQxuB,SAC3BumH,GAAsBlnH,KAAK2yB,cAAcxD,QAAQxuB,SAEjDX,KAAKogD,WAAapgD,KAAKmgD,iBACvB+mE,IAEAlnH,KAAKqgD,iBACL6mE,IAEJ,IAAII,EAAOF,EAAY,GAAK3lE,GAAOylE,EAAWG,GAC9C1lE,EAAK4lE,UAAU5mC,EAAI2mC,EAAMF,EAAY,GAAK5B,GAAU,CAAE/4G,MAAO26G,EAAY,GAAKL,KAC1E/mH,KAAKmI,UACLw4E,EAAK3gF,KAAKyyB,qBAAuB6sD,EAAG1+D,SAASjP,SAASu1G,EAASt1G,WAAY,KACrE5R,KAAKynG,iBAAiB2f,EAAY,GAAKL,GAASG,IAEtDlnH,KAAKo3B,WAAWz2B,OAAS,IACzBX,KAAK4Z,OAAO,QAA8B,IACtC5Z,KAAK2yB,cAAcxD,QAAQxuB,OAAS,GACpCX,KAAK4Z,OAAO,QAAwB,KAIvC,eAAkBwtG,IAAiB,eAAkBA,EAAY,cAClEA,EAAY,WAAW,GAAKv1F,GAASpZ,GAGzCzY,KAAKiI,QAAQ,QAAsB,CAC/B05C,KAAMg/B,EAAIpxD,OAAQ2J,EAAKrN,KAAMu7F,EAAY,GAAK5B,KAE9CxlH,KAAKmI,SAA2C,MAAhCw4E,EAAGj2E,aAAa,aAAuBi2E,EAAGz7E,UAAUmB,SAAS,cAC7Es6E,EAAG5gE,WAcnBkqF,EAAK/pG,UAAU43C,gCAAkC,SAAU0vE,EAAWpmC,GAClE,IAAI8oB,EAAUlqG,KACVA,KAAKmI,SAELnI,KAAKqI,cAAc,CAAC,uBAAmBkD,GAAW,WAC9C,IAAIk8G,KAAcvd,EAAQ9pD,YAAa8pD,EAAQ9mG,QAAQsf,iBAAiB,gBAAgB/hB,QACpFw2B,EAAOswF,EAAcvd,EAAQtrD,kBAAkBl8B,iBAAiB,UAChEwnF,EAAQhC,cACZgC,EAAQwd,uBAAuBvwF,EAAMswF,GACjCrmC,GACA8oB,EAAQ9oB,sBAYxB6oB,EAAK/pG,UAAUwnH,uBAAyB,SAAUvwF,EAAMswF,EAAalqE,GAMjE,IALA,IAAIkE,EAAQ,QACRslE,EAAS,QACTjlE,EAAS9hD,KAAKkhD,iBACdymE,EAAc,EACdC,GAAa,EACRtwF,EAAI,EAAGA,EAAIH,EAAKx2B,OAAQ22B,IAAK,CAClC,IAAIuwF,EAAU7nH,KAAKulH,oBAAoBpuF,EAAKxlB,SAAS2lB,EAAE1lB,WAAY,KAAKlH,aAAa,aACrF,GAAI+8G,IAAgBI,GAAW,gBAAa1wF,EAAKxlB,SAAS2lB,EAAE1lB,WAAY,KAAM,eAAgB,CAC1F,IAAIqmF,EAAU,gBAAa9gE,EAAKxlB,SAAS2lB,EAAE1lB,WAAY,KAAM,eAAe+2C,cAAc,GAC1Fk/D,EAAU5vB,EAAQstB,oBAAoBpuF,EAAKxlB,SAAS2lB,EAAE1lB,WAAY,KAAKlH,aAAa,aACpFi9G,EAAc1vB,EAAQ/2C,iBACtB0mE,GAAa,EAEjB,GAAIC,GAAWA,EAAQ/nC,YAAc,eAAkB+nC,EAAQp7G,SAC1D0qB,EAAKxlB,SAAS2lB,EAAE1lB,WAAY,KAAK1M,UAAUmB,SAAS,eACrD,IAAK,IAAIrF,EAAI,EAAGA,EAAI6mH,EAAQ,GAAKpmE,GAAO9gD,OAAQK,IAAK,CACjD,IAAI2gD,EAAOkmE,EAAQ,GAAKpmE,GAAO9vC,SAAS3Q,EAAE4Q,WAAY,KACtD,GAAI+vC,EAAKu/B,WAAY,CACjB,IAAIX,EAAe,IAAI,OAAavgF,KAAMA,KAAK6uB,gBAC3C8xD,EAAK8mC,EAActwF,EAAKxlB,SAAS2lB,EAAE1lB,WAAY,KAC9CgP,SAAS+gC,EAAKl1C,OAASm7G,EAAaD,EAAc7lE,IAAW9hD,KAAKynG,iBAAiBnwE,EAAGimB,EAAWoE,EAAKl1C,MAAQzL,EAAI8gD,GACvHy+B,EAAagnC,UAAU5mC,EAAIh/B,EAAMkmE,EAAQh8F,KAAM,CAAEpf,MAAOo7G,EAAQ,GAAKd,MAIjFa,GAAa,IAOrB3d,EAAK/pG,UAAU4nH,kCAAoC,WAG/C,IAFA,IAAIL,KAAcznH,KAAKogD,YAAapgD,KAAKoD,QAAQsf,iBAAiB,gBAAgB/hB,QAC9Ew2B,EAAOn3B,KAAK4+C,kBAAkBl8B,iBAAiB,yCAC1C1hB,EAAI,EAAGA,EAAIm2B,EAAKx2B,OAAQK,IAAK,CAElC,IAAIi3F,EAAUj4F,KACV6nH,EAAU7nH,KAAKulH,oBAAoBpuF,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAKlH,aAAa,aAKrF,GAJI+8G,IAAgBI,GAAW,gBAAa1wF,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAM,iBAC1EqmF,EAAU,gBAAa9gE,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAM,eAAe+2C,cAAc,GACtFk/D,EAAU5vB,EAAQstB,oBAAoBpuF,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAKlH,aAAa,cAEpFm9G,EAAS,CACT,IAAIpmE,EAAQomE,EAAQpmE,MAAMxtB,QAAO,SAAU0tB,GAAQ,OAAOA,EAAKC,cAC3D77B,EAAO,CAAE07B,MAAOA,EAAO51B,KAAMg8F,EAAQh8F,KAAMk8F,QAASF,EAAQ1zF,KAChE8jE,EAAQr+E,OAAO,QAA6BmM,MASxDkkF,EAAK/pG,UAAU63C,gCAAkC,SAAUyvE,GACvD,GAAIxnH,KAAKmI,QA6BL,IA5BA,IAAIs5C,EAAQ,QACRomE,EAAU7nH,KAAK+6G,aAAa5jF,KAC5B2wE,EAAY9nG,KAAKo1F,yBAAyBoyB,GAC1C72F,EAAU,SAAU2G,GACpB,IAAIqqB,EAAOkmE,EAAQl2G,SAAS2lB,EAAE1lB,WAAY,KAAK,GAAK6vC,GAAO9vC,SAASm2F,EAAUl2F,WAAY,KAC1F,GAAI+vC,GAAQA,EAAKpyB,OAAO4E,MAAQqzF,EAAW,CACvC,IAAIQ,EAAqB,IAAI,EAAmBn3F,EAAQA,EAAOhC,gBAC3D8xD,EAAK,gBAAa9vD,EAAOztB,QAAQsf,iBAAiB,iBAAmB8kG,EAAY,KAAK,GAAI,kBAC9FQ,EAAmB1yG,QAAQqsC,EAAMg/B,GACjC,IAAIppD,EAAO1G,EAAOmI,aAAa7J,QAC3BuvF,EAAcnnF,EAAK0wF,WAAU,SAAU/uF,GAAO,OAAOA,EAAIrH,QAAU8vB,EAAKpyB,OAAOsC,SACnF,IAAqB,IAAjB6sF,EAAoB,CACpB,IAAI7iE,EAAShrB,EAAOgrE,uBAAuBl6C,EAAKpyB,OAAOsC,OACvDhB,EAAO4/D,YAAYjsC,QAAQ3I,EAAStkB,EAAK5lB,SAAS+sG,EAAY9sG,WAAY,KAAc,UAAEiQ,eACtF0V,EAAK52B,OAAS,GACdk7C,EAAO3vC,cAAc,oBAAoBsZ,aAAaqL,EAAOtsB,cAAc,OAAQ,CAAEC,UAAW,eAAgBsG,WAAY4zG,EAAc,GAAG9sG,aAAeiqC,EAAO3vC,cAAc,kBAErL,IAAIg8G,EAAgBrsE,EAAO3vC,cAAc,oBACoB,cAAzDqrB,EAAK5lB,SAAS+sG,EAAY9sG,WAAY,KAAK8S,UAC3C,eAAUwjG,EAAe,CAAC,cAAe,oBAAqB,IAG9D,eAAUA,EAAe,CAAC,eAAgB,qBAAsB,OAK5Er3F,EAAS7wB,KACJs3B,EAAI,EAAGA,EAAIuwF,EAAQlnH,OAAQ22B,IAChC3G,EAAQ2G,IAapB2yE,EAAK/pG,UAAUqiH,WAAa,SAAUhiH,EAAKilH,GACvC,IAAIwB,EAAS,MACTG,EAAannH,KAAKw8F,cAAcxK,UAChCi1B,EAASjnH,KAAK87B,0BAA0B,GACxC97B,KAAK2yB,cAAcxD,QAAQxuB,OAAS,GAAKX,KAAKo3B,WAAWz2B,OAAS,IAClEwmH,EAAaA,EAAWlzF,QAAO,SAAUoD,GAAO,OAAOA,EAAIyoD,cAE/D,IAAIsnC,EAAcD,EAAWlzF,QAAO,SAAUrzB,GAC1C,OAAO,eAASqmH,EAAQrmH,EAAEirB,QAAUtrB,KACrC,GACC4nH,EAAef,EAAc,GAAG15G,MAAMpK,KAAKtD,KAAKoD,QAAQsf,iBAAiB,aAAe0kG,EAAY,GAAKJ,GAAU,WAAQz7G,EAC/H,IAAK,eAAkB67G,IAAgBe,EAAaxnH,OAApD,CAEI,GADAymH,EAAYlrF,QAAUspF,EAClBxlH,KAAKo6C,WAAY,CACjB,IAAIguE,EAASpoH,KAAKyhF,gBAAgB2lC,EAAY36G,OAC9CzM,KAAKqoH,iBAAiBD,EAAQ5C,QAG9BxlH,KAAKqoH,iBAAiBjB,EAAa5B,GAEnCxlH,KAAKo3B,WAAWz2B,OAAS,IACzBX,KAAK4Z,OAAO,QAA8B,IACtC5Z,KAAK2yB,cAAcxD,QAAQxuB,OAAS,GACpCX,KAAK4Z,OAAO,QAAwB,OAQpDqwF,EAAK/pG,UAAUmoH,iBAAmB,SAAUC,EAAK9C,GAC7C,IAAIzyB,EAAc,IAAI,OAAY/yF,KAAK6uB,eAAgB,KAAM7uB,MAC7DsoH,EAAIpsF,QAAUspF,EACd,gBAAmB8C,EAAKtoH,KAAKywB,uBAAwB63F,EAAIpsF,SACzD62D,EAAYz9E,QAAQgzG,EAAKtoH,KAAK02B,cAAc,IAUhDuzE,EAAK/pG,UAAUunG,iBAAmB,SAAUzS,EAAU0pB,GAClD,IAAIxlF,EAAMl5B,KAAK0nG,iBAAiBgX,GAChC,OAAO,eAAwB1+G,KAAMk5B,EAAK87D,EAAU0pB,IAWxDzU,EAAK/pG,UAAUqoH,wBAA0B,SAAUvzB,EAAU0pB,GACzD,OAAO1+G,KAAKynG,iBAAiBzS,EAAU0pB,IAU3CzU,EAAK/pG,UAAUsoH,4BAA8B,SAAUxzB,EAAU0pB,GAC7D,OAAO1+G,KAAKynG,iBAAiBzS,EAAU0pB,IAS3CzU,EAAK/pG,UAAUyoG,uBAAyB,SAAUl8F,GAC9C,OAAOzM,KAAK0zF,iBAAiBv7E,uBAAuB,gBAAgBxG,SAASlF,EAAMmF,WAAY,MASnGq4F,EAAK/pG,UAAUuoH,8BAAgC,SAAUh8G,GACrD,OAAOzM,KAAK2oG,uBAAuBl8F,IASvCw9F,EAAK/pG,UAAUwoH,kCAAoC,SAAUj8G,GACzD,OAAOzM,KAAK2oG,uBAAuBl8F,IASvCw9F,EAAK/pG,UAAUyoH,iCAAmC,SAAUl8G,GACxD,OAAOzM,KAAK2oG,uBAAuBl8F,IASvCw9F,EAAK/pG,UAAUqlH,oBAAsB,SAAUpxF,GAC3C,IAAIgD,EAAOn3B,KAAKw8F,cAAcxK,UAC1B36D,EAAMr3B,KAAK4oH,UAAUzxF,EAAMhD,GAC/B,OAAI,eAAkBkD,IAAQr3B,KAAKyyB,sBAAwBzyB,KAAK2yB,cAAcxD,QAAQxuB,OAAS,GAC3F02B,EAAMr3B,KAAK4oH,UAAU5oH,KAAKssG,MAAOn4E,GAC1BkD,GAEJA,GAEX4yE,EAAK/pG,UAAU0oH,UAAY,SAAUzxF,EAAMhD,GACvC,GAAIgD,EACA,IAAK,IAAItpB,EAAK,EAAG4nF,EAASt+D,EAAMtpB,EAAK4nF,EAAO90F,OAAQkN,IAAM,CACtD,IAAIwpB,EAAMo+D,EAAO5nF,GACjB,GAAIwpB,EAAIlD,MAAQA,EACZ,OAAOkD,EAInB,OAAO,MAMX4yE,EAAK/pG,UAAUuhF,cAAgB,WAC3B,OAAOzhF,KAAKw8F,cAAcxK,WAO9BiY,EAAK/pG,UAAU2oH,qBAAuB,WAClC,OAAO7oH,KAAKw8F,cAAcxK,WAO9BiY,EAAK/pG,UAAU4oH,yBAA2B,WACtC,OAAO9oH,KAAKw8F,cAAcxK,WAS9BiY,EAAK/pG,UAAU27F,uBAAyB,SAAUhqE,GAC9C,IAAItC,EAASvvB,KAAK04B,iBAAiB7G,GACnC,OAAOtC,EAASvvB,KAAK+oH,qBAAqBx5F,EAAO4E,UAAO5oB,GAS5D0+F,EAAK/pG,UAAU6oH,qBAAuB,SAAU50F,GAC5C,IAAI/wB,EAAUpD,KAAKq6C,mBAAmBnuC,cAAc,iBAAmBioB,EAAM,KAC7E,OAAO/wB,EAAUA,EAAQue,mBAAgBpW,GAO7C0+F,EAAK/pG,UAAUwnG,iBAAmB,SAAUj7F,GACxC,IAAI8iB,EAKJ,OAJAvvB,KAAK02B,aAAasD,MAAK,SAAUd,EAAKl4B,GAElC,OADAuuB,EAAS2J,EACFl4B,IAAMyL,KAEV8iB,GASX06E,EAAK/pG,UAAUw4B,iBAAmB,SAAU7G,GACxC,OAAO,gBAAqB7xB,KAAK02B,cAAc,SAAU62B,GACrD,GAAIA,EAAK17B,QAAUA,EACf,OAAO07B,KAGZ,IASP08C,EAAK/pG,UAAU8vF,sBAAwB,SAAUn+D,GAE7C,IADA,IAAI0F,EAAOv3B,KAAK02B,aACP11B,EAAI,EAAGA,EAAIu2B,EAAK52B,OAAQK,IAC7B,GAAIu2B,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKigB,QAAUA,EAC3C,OAAO7wB,EAGf,OAAQ,GASZipG,EAAK/pG,UAAU46B,eAAiB,SAAU3G,GACtC,OAAO,gBAAqBn0B,KAAK02B,aAAauY,OAAOjvC,KAAKgpH,kBAAkBhpH,KAAKmvB,WAAW,SAAUo+B,GAClG,GAAIA,EAAKp5B,MAAQA,EACb,OAAOo5B,KAGZ,IAQP08C,EAAK/pG,UAAU8oH,kBAAoB,SAAU75F,EAASg1F,QAC5B,IAAlBA,IAA4BA,EAAgB,IAChD,IAAK,IAAIt2G,EAAK,EAAG+sB,EAAYzL,EAASthB,EAAK+sB,EAAUj6B,OAAQkN,IAAM,CAC/D,IAAI0hB,EAASqL,EAAU/sB,GACnB0hB,EAAOJ,UACPg1F,EAAc93G,KAAKkjB,GACnBvvB,KAAKgpH,kBAAkBz5F,EAAOJ,QAASg1F,IAG/C,OAAOA,GASXla,EAAK/pG,UAAU20F,oBAAsB,SAAU1gE,GAC3C,IAAI1nB,EAAQ,gBAAqBzM,KAAK02B,cAAc,SAAU62B,EAAM9gD,GAChE,GAAI8gD,EAAKp5B,MAAQA,EACb,OAAO1nB,KAGZ,GACH,OAAQ,eAAkBA,IAAkB,EAATA,GASvCw9F,EAAK/pG,UAAU+oH,oBAAsB,SAAUp3F,GAC3C,OAAO,gBAAqB7xB,KAAK02B,cAAc,SAAU62B,GACrD,GAAIA,EAAK17B,QAAUA,EACf,OAAO07B,EAAKp5B,OAGjB,IASP81E,EAAK/pG,UAAUk1F,yBAA2B,SAAUjhE,GAChD,IAAI1nB,EAAQzM,KAAK60F,oBAAoB1gE,GACrC,OAAO1nB,EAAQzM,KAAKkhD,kBAQxB+oD,EAAK/pG,UAAUghD,eAAiB,WAC5B,IAAIz0C,EAAQ,EAcZ,OAbIzM,KAAK0yB,gBACLjmB,GAASzM,KAAK2yB,cAAcxD,QAAQxuB,QAEpCX,KAAKskF,YACL73E,IAEAzM,KAAKqgD,iBAAmB,eAAkBrgD,KAAK0+F,gBAAgBC,WAC/DlyF,IAMGA,GAOXw9F,EAAK/pG,UAAUgpH,oBAAsB,WAGjC,IAFA,IACI35F,EADA45F,EAAc,GAETnoH,EAAI,EAAGiiB,EAAMjjB,KAAK02B,aAAa/1B,OAAQK,EAAIiiB,EAAKjiB,IACrDuuB,EAASvvB,KAAK02B,aAAa/kB,SAAS3Q,EAAE4Q,WAAY,KAC9C2d,EAAOqH,SACPuyF,EAAY98G,KAAKkjB,EAAOsC,OAGhC,OAAOs3F,GAQXlf,EAAK/pG,UAAUkpH,eAAiB,WAC5B,OAAOppH,KAAK0gH,eAQhBzW,EAAK/pG,UAAU4+F,uBAAyB,WACpC,OAAO9+F,KAAK2gH,uBAQhB1W,EAAK/pG,UAAUmpH,kBAAoB,WAC/B,OAAOrpH,KAAK4gH,kBAQhB3W,EAAK/pG,UAAU61C,gBAAkB,WAC7B,OAAO/1C,KAAKg2C,gBAQhBi0D,EAAK/pG,UAAUopH,sBAAwB,WACnC,OAAOtpH,KAAKupH,sBAQhBtf,EAAK/pG,UAAUspH,sBAAwB,WACnC,OAAOxpH,KAAKypH,sBAOhBxf,EAAK/pG,UAAU47B,wBAA0B,WAErC,IADA,IAAI1mB,EAAO,GACFqiB,EAAI,EAAGA,EAAIz3B,KAAK4kG,YAAYjkG,OAAQ82B,IACrCz3B,KAAK4kG,YAAYjzF,SAAS8lB,EAAE7lB,WAAY,KAAK+kB,cAC7CvhB,EAAK/I,KAAKrM,KAAK4kG,YAAYjzF,SAAS8lB,EAAE7lB,WAAY,KAAKigB,OAG/D,OAAOzc,GAOX60F,EAAK/pG,UAAUoV,QAAU,WAChBtV,KAAK8uB,cACN9uB,KAAKu4B,iBAAkB,EACvBv4B,KAAK+6G,aAAa1lB,YAClBr1F,KAAK26G,sBACL36G,KAAKk6G,aAAa5kG,YAQ1B20F,EAAK/pG,UAAUsgH,cAAgB,WAC3BxgH,KAAK+6G,aAAa1lB,aAOtB4U,EAAK/pG,UAAUwpH,gBAAkB,WAC7B,OAAO1pH,KAAKgkF,gBAAkBhkF,KAAKgkF,gBAAgB2lC,gBAAkB,IAOzE1f,EAAK/pG,UAAU2/E,sBAAwB,WACnC,OAAO7/E,KAAKgkF,gBAAkBhkF,KAAKgkF,gBAAgB4lC,mBAAqB,IAO5E3f,EAAK/pG,UAAUumG,0BAA4B,WACvC,OAAOzmG,KAAKgkF,gBAAkBhkF,KAAKgkF,gBAAgBwiB,uBAAyB,IAQhFyD,EAAK/pG,UAAUmlG,mBAAqB,WAChC,OAAOrlG,KAAKgkF,gBAAkBhkF,KAAKgkF,gBAAgBqhB,qBAAuB,IAQ9E4E,EAAK/pG,UAAU2pH,sBAAwB,WACnC,IAAI3f,EAAUlqG,KACVm0B,EAAM,GAIV,OAHIn0B,KAAKgkF,iBACLhkF,KAAKgkF,gBAAgB8lC,uBAAuB71F,QAAO,SAAUjzB,GAAK,OAAOmzB,EAAI9nB,KAAK69F,EAAQxzE,aAAa/kB,SAAS3Q,EAAE4Q,WAAY,KAAKuiB,QAEhIA,GAOX81E,EAAK/pG,UAAU2vB,cAAgB,WAC3B,OAAO7vB,KAAKk6G,aAAaruF,MAU7Bo+E,EAAK/pG,UAAU6pH,YAAc,SAAU30G,EAAMmvF,GACzCA,EAASA,GAAkB,aAC3BvkG,KAAK8+G,UAAU5uG,KAAKkF,EAAMmvF,IAU9B0F,EAAK/pG,UAAU8pH,YAAc,SAAU50G,EAAMqvF,GACzCA,EAASA,GAAkB,aAC3BzkG,KAAK8+G,UAAU5sG,KAAKkD,EAAMqvF,IAM9BwF,EAAK/pG,UAAUmpE,iBAAmB,WAC9B,OAAOrpE,KAAK80F,cAAgB90F,KAAKiqH,eAAejqH,KAAKmvB,QAAS,EAAG,IAMrE86E,EAAK/pG,UAAUgqH,2BAA6B,WACxC,OAAOlqH,KAAKqqG,kBAAoBrqG,KAAKuqG,YAMzCN,EAAK/pG,UAAUgiF,0BAA4B,WACvC,OAAOliF,KAAKwqG,iBAAmBxqG,KAAKyqG,WAMxCR,EAAK/pG,UAAUiqH,uBAAyB,WACpC,OAAOnqH,KAAK2qG,cAAgB3qG,KAAK4qG,cAErCX,EAAK/pG,UAAUo+G,yBAA2B,WACtC,GAAIt+G,KAAKk6C,iBAAmBl6C,KAAKi6C,2BAoD7B,IAnDA,IAAIikE,EAAOl+G,KAAK02B,aACZ0zF,GAAc,EACdC,EAAY,EACZC,EAAe,EACfC,EAAc,EACdlqC,EAAU,SAAUr/E,GACpB,IAAIk4B,EAAMglF,EAAKvsG,SAAS3Q,EAAE4Q,WAAY,KAItC,GAHI,eAAkBsnB,EAAI5zB,SAA0B,SAAf4zB,EAAIowC,QAAoC,UAAfpwC,EAAIowC,QAAqC,UAAfpwC,EAAIowC,QAAsBpwC,EAAIqkB,YAClHrkB,EAAI5zB,MAAQ6D,KAAKkQ,IAAI,IAAK6f,EAAI46B,SAAWhtD,WAAWoyB,EAAI46B,SAASliD,YAAc,IAEjE,SAAdsnB,EAAI5zB,QAAoC,SAAf4zB,EAAIowC,QAAoC,UAAfpwC,EAAIowC,QAAqC,UAAfpwC,EAAIowC,QAAsBpwC,EAAIqkB,UAAW,CACrH,IAAIitE,EAAW,EACf,GAAIJ,EAAa,CACblM,EAAKjqF,QAAO,SAAUsD,GAClB,GAAIA,EAAKX,UACc,SAAfW,EAAKjyB,OACL+kH,IAEe,SAAf9yF,EAAKjyB,OAAkB,CACvB,IAAIA,EAAS,eAAkBiyB,EAAKjyB,OAChC6D,KAAKkQ,IAAI,IAAKke,EAAKu8B,SAAWhtD,WAAWywB,EAAKu8B,SAASliD,YAAc,GAD5B9K,WAAWywB,EAAKjyB,MAAMsM,YAEnE44G,GAAYllH,MAIxB,IAAImlH,EAASC,EAAOC,yBAA4C,SAAjBD,EAAOplH,MAAmBolH,EAAOtnH,QAAQgE,wBAAwB9B,MAC5GwB,WAAW4jH,EAAOplH,MAAMsM,YAC5B04G,EAAiC,SAAlBI,EAAOrlH,OAAoBolH,EAASD,EAAaC,EAASD,EAAY,iBACjFF,EAAe,IACfA,EAAe,GAEnBC,EAAczjH,YAAYwjH,EAAeD,GAAWz4G,YACpDssG,EAAKjqF,QAAO,SAAUiF,GACdA,EAAItC,SACAsC,EAAI46B,UAAYhtD,WAAWoyB,EAAI46B,SAASliD,YAAc24G,IACtDD,GAA8BxjH,WAAWoyB,EAAI46B,SAASliD,YACtDy4G,QAIZD,GAAc,EAEdlxF,EAAI46B,UAAYhtD,WAAWoyB,EAAI46B,SAASliD,YAAc24G,EACtDrxF,EAAI5zB,MAAQwB,WAAWoyB,EAAI46B,SAASliD,YAGpCsnB,EAAI5zB,MAAQglH,EAAeD,IAInCK,EAAS1qH,KACJgB,EAAI,EAAGA,EAAIk9G,EAAKv9G,OAAQK,IAC7Bq/E,EAAQr/E,IAIpBipG,EAAK/pG,UAAU0qH,yBAA2B,WACtC5qH,KAAK6qH,iBAAiB7qH,KAAKmvB,SAC3BnvB,KAAKs+G,2BACLt+G,KAAK+sG,uBAAwB,GAMjC9C,EAAK/pG,UAAU+tG,eAAiB,WAC5BjuG,KAAKwqG,gBAAkBxqG,KAAKqqG,iBAAmBrqG,KAAK2qG,aAAe,EACnE3qG,KAAK+qG,kBAAoB/qG,KAAKkrG,mBAAqBlrG,KAAKmrG,eAAiB,EACzEnrG,KAAKorG,kBAAoB,GACzBprG,KAAKqrG,mBAAqB,GAC1BrrG,KAAKsrG,eAAiB,GACtBtrG,KAAKurG,aAAe,GACpBvrG,KAAK6qH,iBAAiB7qH,KAAKmvB,SAC3BnvB,KAAKyqG,UAAYzqG,KAAKwqG,gBACtBxqG,KAAKuqG,WAAavqG,KAAKqqG,iBACvBrqG,KAAK4qG,aAAe5qG,KAAK2qG,aAIrB3qG,KAAKwqG,kBAAoBxqG,KAAKqqG,iBAC9BrqG,KAAKujH,WAAa,OAEbvjH,KAAKqqG,mBAAqBrqG,KAAKwqG,gBACpCxqG,KAAKujH,WAAa,QAEbvjH,KAAKwqG,iBAAmBxqG,KAAKqqG,iBAClCrqG,KAAKujH,WAAa,aAEbvjH,KAAK80F,eAAiB90F,KAAKo6C,WAChCp6C,KAAKujH,WAAa,OAGlBvjH,KAAKujH,gBAAah4G,GAO1B0+F,EAAK/pG,UAAU08C,0BAA4B,WACvC,OAAO58C,KAAK+qG,mBAMhBd,EAAK/pG,UAAU48C,2BAA6B,WACxC,OAAO98C,KAAKkrG,oBAMhBjB,EAAK/pG,UAAU4qH,uBAAyB,WACpC,OAAO9qH,KAAKmrG,gBAMhBlB,EAAK/pG,UAAUyjH,sBAAwB,WACnC,OAAO3jH,KAAKqrG,oBAMhBpB,EAAK/pG,UAAUwjH,qBAAuB,WAClC,OAAO1jH,KAAKorG,mBAMhBnB,EAAK/pG,UAAU6qH,kBAAoB,WAC/B,OAAO/qH,KAAKsrG,gBAEhBrB,EAAK/pG,UAAU8qH,oBAAsB,SAAU77F,GAC3C,IAAK,IAAInuB,EAAI,EAAGA,EAAImuB,EAAQxuB,OAAQK,IAC5BmuB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKud,QACpCnvB,KAAKgrH,oBAAoB77F,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKud,SAGV,SAA/CA,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK03D,QAAqBn6C,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK2rC,WACzC,IAAhDpuB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKglB,SACpC52B,KAAK+qG,oBAET/qG,KAAKyqG,aAE+C,UAA/Ct7E,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK03D,SACW,IAAhDn6C,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKglB,SACpC52B,KAAKkrG,qBAETlrG,KAAKuqG,cAE+C,UAA/Cp7E,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK03D,SACW,IAAhDn6C,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKglB,SACpC52B,KAAKgrG,qBAEThrG,KAAK6qG,gBAG+C,IAAhD17E,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKglB,SACpC52B,KAAKmrG,iBAETnrG,KAAK4qG,iBAKrBX,EAAK/pG,UAAU+qH,mBAAqB,SAAU97F,EAAS1iB,EAAOo7D,EAAK3uC,EAAKgyF,GACpErjD,EAAIl2D,SAASlF,EAAMmF,WAAY,KAAOsnB,EAAIgpB,WAC1C,IAAK,IAAIlhD,EAAI,EAAGA,EAAImuB,EAAQxuB,OAAQK,IAChC,GAAImuB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKud,QACpC1iB,GAAgB,EAChBzM,KAAKirH,mBAAmB97F,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKud,QAAS1iB,EAAOo7D,EAAK14C,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAMs5G,GACtHz+G,GAAgB,MAEf,CACD,IAAI0+G,EAAW,GACfA,EAAWtjD,EAAIn6D,QAAQA,MAAM,EAAGjB,EAAQ,GACW,SAA/C0iB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK03D,QAAqBn6C,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK2rC,UAC7Fv9C,KAAKwrG,YAAYn/F,KAAK8+G,GACtBnrH,KAAK4rG,iBAAiBv/F,KAAK8iB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,OAEN,UAA/Cud,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK03D,QACzCtpE,KAAKyrG,aAAap/F,KAAK8+G,GACvBnrH,KAAK6rG,kBAAkBx/F,KAAK8iB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,OAEP,UAA/Cud,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK03D,QACzCtpE,KAAK0rG,aAAar/F,KAAK8+G,GACvBnrH,KAAK8rG,kBAAkBz/F,KAAK8iB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,QAG3D5R,KAAK2rG,eAAet/F,KAAK8+G,GACzBnrH,KAAK+rG,oBAAoB1/F,KAAK8iB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,SAK7Eq4F,EAAK/pG,UAAUkrH,WAAa,SAAUt5F,EAAMu5F,EAAOnyF,EAAK/J,EAASoE,GAC7D,GAAI2F,EAAIgpB,aAAempE,EACf93F,EACA2F,EAAI/J,QAAQ9iB,KAAK8iB,GAGjB+J,EAAI/J,QAAQ9iB,KAAK,CAAE61C,WAAYpwB,EAAM3C,QAAS,UAIlD,GAAI+J,EAAI/J,SAAW+J,EAAI/J,QAAQxuB,OAC3B,IAAK,IAAIK,EAAI,EAAGA,EAAIk4B,EAAI/J,QAAQxuB,OAAQK,IACpChB,KAAKorH,WAAWt5F,EAAMu5F,EAAOnyF,EAAI/J,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAMud,EAASoE,IAK/F02E,EAAK/pG,UAAUorH,oBAAsB,SAAUC,EAAWC,EAAaliD,GAGnE,IAFA,IAAIpwC,EAAM,GACNuyF,EAAW,GACNzqH,EAAI,EAAGA,GAAKuqH,EAAU5qH,OAAQK,IAEnC,IADA,IAAI0qH,EAAWH,EAAUvqH,EAAI,GACpBs2B,EAAI,EAAGA,EAAIo0F,EAAS/qH,OAAQ22B,IAWjC,GAVK4B,EAAI/J,SAAiB,IAANnuB,GAKgD,IAA5DyqH,EAASznH,QAAQ0nH,EAAS/5G,SAAS2lB,EAAE1lB,WAAY,QACjD5R,KAAKorH,WAAWM,EAAS/5G,SAAS2lB,EAAE1lB,WAAY,KAAM85G,EAASp0F,EAAI,GAAI4B,GACvEuyF,EAASp/G,KAAKq/G,EAAS/5G,SAAS2lB,EAAE1lB,WAAY,QANlDsnB,EAAM,CAAEgpB,WAAYwpE,EAAS/5G,SAAS2lB,EAAE1lB,WAAY,KAAMud,QAAS,IACnEs8F,EAASp/G,KAAKq/G,EAAS/5G,SAAS2lB,EAAE1lB,WAAY,OAQ9C0lB,IAAMo0F,EAAS/qH,OAAS,EAAG,CAC3BX,KAAKorH,WAAW,KAAMM,EAAS/5G,SAAS2lB,EAAE1lB,WAAY,KAAMsnB,EAAKsyF,EAAYxqH,EAAI,IAAI,GACrF,IAAI+pC,EAAQ,EACZ,MAAOA,IAAUwgF,EAAU5qH,OAAS,GAAKK,IAAMuqH,EAAU5qH,OACjD+qH,EAAS95G,aAAe25G,EAAU55G,SAAS3Q,EAAE4Q,WAAY,KAAKA,aAC9D5Q,IACAhB,KAAKorH,WAAW,KAAMM,EAAS/5G,SAAS2lB,EAAE1lB,WAAY,KAAMsnB,EAAKsyF,EAAYxqH,EAAI,IAAI,IAEzF+pC,IAKD,SAAXu+B,EACAtpE,KAAKorG,kBAAkB/+F,KAAK6sB,GAEZ,UAAXowC,EACLtpE,KAAKqrG,mBAAmBh/F,KAAK6sB,GAG7Bl5B,KAAKsrG,eAAej/F,KAAK6sB,IAGjC+wE,EAAK/pG,UAAU2qH,iBAAmB,SAAU17F,GACxC,GAAInvB,KAAK80F,eAAkB90F,KAAK2rH,mBAA8D,IAAzC3rH,KAAK2rH,kBAAkB72B,cAAsB,CAC9F,IAAIv9D,GAAQv3B,KAAKi6C,4BAA+Bj6C,KAAKi6C,4BAA8Bj6C,KAAKirG,wBACpFjrG,KAAKi6C,4BAA8Bj6C,KAAK4kG,aAAe5kG,KAAK4kG,YAAYjkG,OAASX,KAAK4kG,YAClF5kG,KAAK02B,aAAe12B,KAAKmvB,QACjC,IAAKnvB,KAAK2rH,mBAAsB3rH,KAAK2rH,oBAAsB3rH,KAAK2rH,kBAAkB72B,cAC9E,IAAK,IAAI9zF,EAAI,EAAGA,EAAIu2B,EAAK52B,OAAQK,IACzBhB,KAAK80F,cAAgB9zF,EACrBu2B,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK03D,OAAS,OAEO,UAA5C/xC,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK03D,QAAkE,UAA5C/xC,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK03D,OAC7F/xC,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK03D,OAAS/xC,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK03D,OAG3E/xC,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK03D,YAAS/9D,EAK1D,IAASvK,EAAI,EAAGA,EAAImuB,EAAQxuB,OAAQK,IAChC,GAAImuB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKud,QAAS,CAC7CnvB,KAAKyqG,UAAY,EACjBzqG,KAAKuqG,WAAa,EAClBvqG,KAAK4qG,aAAe,EACpB5qG,KAAK6qG,WAAa,EAClB,IAAIhjC,EAAM,GACV7nE,KAAKgrH,oBAAoB77F,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKud,UACzDnvB,KAAKyqG,WAAczqG,KAAKuqG,YAAevqG,KAAK4qG,cAAiB5qG,KAAK6qG,YAI7D7qG,KAAKuqG,YAAevqG,KAAKyqG,WAAczqG,KAAK4qG,cAAiB5qG,KAAK6qG,YAIlE7qG,KAAK4qG,cAAiB5qG,KAAKyqG,WAAczqG,KAAKuqG,YAAevqG,KAAK6qG,YAIlE7qG,KAAK6qG,YAAe7qG,KAAKyqG,WAAczqG,KAAKuqG,YAAevqG,KAAK4qG,cAOrE5qG,KAAKwqG,iBAAmBxqG,KAAKyqG,UAC7BzqG,KAAKqqG,kBAAoBrqG,KAAKuqG,WAC9BvqG,KAAK2qG,cAAgB3qG,KAAK4qG,aAC1B5qG,KAAK8qG,YAAc9qG,KAAK6qG,WACxB7qG,KAAKyqG,UAAY,EACjBzqG,KAAKuqG,WAAa,EAClBvqG,KAAK4qG,aAAe,EACpB5qG,KAAK6qG,WAAa,EAClB7qG,KAAKwrG,YAAc,GACnBxrG,KAAKyrG,aAAe,GACpBzrG,KAAK0rG,aAAe,GACpB1rG,KAAK2rG,eAAiB,GACtB3rG,KAAK4rG,iBAAmB,GACxB5rG,KAAK6rG,kBAAoB,GACzB7rG,KAAK8rG,kBAAoB,GACzB9rG,KAAK+rG,oBAAsB,GAC3B/rG,KAAKirH,mBAAmB97F,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKud,QAAS,EAAG04C,EAAK14C,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAM,CAAEswC,WAAY/yB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKswC,WAAY/yB,QAAS,KACrLnvB,KAAK4rG,iBAAiBjrG,QACtBX,KAAKsrH,oBAAoBtrH,KAAKwrG,YAAaxrG,KAAK4rG,iBAAkB,QAElE5rG,KAAK6rG,kBAAkBlrG,QACvBX,KAAKsrH,oBAAoBtrH,KAAKyrG,aAAczrG,KAAK6rG,kBAAmB,SAEpE7rG,KAAK8rG,kBAAkBnrG,QACvBX,KAAKsrH,oBAAoBtrH,KAAK0rG,aAAc1rG,KAAK8rG,kBAAmB,SAEpE9rG,KAAK+rG,oBAAoBprG,QACzBX,KAAKsrH,oBAAoBtrH,KAAK2rG,eAAgB3rG,KAAK+rG,oBAAqB,WAE5E/rG,KAAKwrG,YAAc,GACnBxrG,KAAKyrG,aAAe,GACpBzrG,KAAK2rG,eAAiB,GACtB3rG,KAAK0rG,aAAe,GACpB1rG,KAAK4rG,iBAAmB,GACxB5rG,KAAK6rG,kBAAoB,GACzB7rG,KAAK+rG,oBAAsB,GAC3B/rG,KAAK8rG,kBAAoB,KA1CzB9rG,KAAK8qG,YAAc9qG,KAAK6qG,WACxB7qG,KAAKurG,aAAal/F,KAAK8iB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,MACtD5R,KAAK2qG,cAAgB3qG,KAAK4qG,aAC1B5qG,KAAKsrG,eAAej/F,KAAK8iB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,QAPxD5R,KAAK2qG,cAAgB3qG,KAAK4qG,aAC1B5qG,KAAKsrG,eAAej/F,KAAK8iB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,QALxD5R,KAAKqqG,kBAAoBrqG,KAAKuqG,WAC9BvqG,KAAKqrG,mBAAmBh/F,KAAK8iB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,QAL5D5R,KAAKwqG,iBAAmBxqG,KAAKyqG,UAC7BzqG,KAAKorG,kBAAkB/+F,KAAK8iB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,WAyDZ,UAA/Cud,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK03D,SACgB,IAAhDn6C,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKglB,SACpC52B,KAAKkrG,qBAETlrG,KAAKqrG,mBAAmBh/F,KAAK8iB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,MAC5D5R,KAAKqqG,oBAE+C,SAA/Cl7E,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK03D,QAAqBn6C,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK2rC,WAC9C,IAAhDpuB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKglB,SACpC52B,KAAK+qG,oBAET/qG,KAAKorG,kBAAkB/+F,KAAK8iB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,MAC3D5R,KAAKwqG,mBAE+C,UAA/Cr7E,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK03D,QACzCtpE,KAAKurG,aAAal/F,KAAK8iB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,MACtD5R,KAAK8qG,aACL9qG,KAAKsrG,eAAej/F,KAAK8iB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,MACxD5R,KAAK2qG,kBAG+C,IAAhDx7E,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKglB,SACpC52B,KAAKmrG,iBAETnrG,KAAKsrG,eAAej/F,KAAK8iB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,MACxD5R,KAAK2qG,gBAIjB,GAAI3qG,KAAKorG,kBAAkBzqG,OAAQ,CAC3B42B,EAAOv3B,KAAKorG,kBAAkBprG,KAAKorG,kBAAkBzqG,OAAS,GAClEX,KAAK4rH,aAAa5rH,KAAKorG,mBACvBprG,KAAK6rH,wBAAwBt0F,aAAgB,OAASv3B,KAAK8rH,mBAAmB9rH,KAAKorG,mBAAqB7zE,GAE5G,GAAIv3B,KAAKqrG,mBAAmB1qG,OAAQ,CAC5B42B,EAAOv3B,KAAKqrG,mBAAmB,GACnCrrG,KAAK4rH,aAAa5rH,KAAKqrG,oBACvBrrG,KAAK+rH,yBAAyBx0F,aAAgB,OAASv3B,KAAKgsH,qBAAqBhsH,KAAKqrG,oBAAsB9zE,GAEhH,IAAKv3B,KAAKorG,kBAAkBzqG,QAAUX,KAAKqrG,mBAAmB1qG,SAAWX,KAAKsqG,oBAAqB,CAC3F/yE,EAAQv3B,KAAKorG,kBAAkBn8D,OAAOjvC,KAAKsrG,gBAAiBr8D,OAAOjvC,KAAKqrG,oBAC5ErrG,KAAKiL,cAAc,CAAEkkB,QAASoI,IAAQ,GACtCv3B,KAAKsqG,qBAAsB,IAGnCL,EAAK/pG,UAAU0rH,aAAe,SAAUz8F,GACpC,IAAK,IAAInuB,EAAI,EAAGA,EAAImuB,EAAQxuB,OAAQK,IAC5BmuB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKud,SAAWA,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKud,QAAQxuB,QACxC,UAA/CwuB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKqpC,QACW,SAA/C9rB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKqpC,SACpC9rB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKqpC,YAAS1vC,GAEjDvL,KAAK4rH,aAAaz8F,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKud,UAGH,UAA/CA,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKqpC,QACW,SAA/C9rB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKqpC,SACpC9rB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKqpC,YAAS1vC,IAK7D0+F,EAAK/pG,UAAU+rH,iBAAmB,SAAU18F,EAAQs4C,GAChD,GAAIt4C,EAAOJ,SAAWI,EAAOJ,QAAQxuB,OACjC,IAAK,IAAIK,EAAI,EAAGA,EAAIuuB,EAAOJ,QAAQxuB,OAAQK,IACvChB,KAAKisH,iBAAiB18F,EAAOJ,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAMi2D,GAC9Dt4C,EAAOJ,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKglB,SAC3C,eAAkBrH,EAAOJ,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKud,YAC3D,eAAkBI,EAAOJ,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK03D,SAC3D/5C,EAAOJ,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK2rC,WAC/CsqB,EAAIx7D,KAAK,aAKbkjB,EAAOqH,SAAa,eAAkBrH,EAAO+5C,UAAW/5C,EAAOguB,UAC/DsqB,EAAIx7D,KAAK,SAIrB49F,EAAK/pG,UAAU4rH,mBAAqB,SAAU38F,GAE1C,IADA,IAAII,EACKvuB,EAAImuB,EAAQxuB,OAAS,EAAGK,GAAK,EAAGA,IAAK,CAC1C,IAAI6mE,EAAM,GAEV,GADA7nE,KAAKisH,iBAAiB98F,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAMi2D,GACvD14C,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKglB,UAAoC,IAAzBixC,EAAI7jE,QAAQ,QAAgB,CAC3EurB,EAASJ,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KACxC,OAGR,OAAO2d,GAEX06E,EAAK/pG,UAAU8rH,qBAAuB,SAAU78F,GAE5C,IADA,IAAII,EACKvuB,EAAI,EAAGA,EAAImuB,EAAQxuB,OAAQK,IAAK,CACrC,IAAI6mE,EAAM,GAEV,GADA7nE,KAAKisH,iBAAiB98F,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAMi2D,GACvD14C,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKglB,UAAoC,IAAzBixC,EAAI7jE,QAAQ,QAAgB,CAC3EurB,EAASJ,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KACxC,OAGR,OAAO2d,GAEX06E,EAAK/pG,UAAU2rH,wBAA0B,SAAU18F,GAC/C,IAAI,eAAkBA,GAGtB,GAAIA,EAAQA,SAAWA,EAAQA,QAAQxuB,OAAQ,CAC3CwuB,EAAQ8rB,OAAS,OACjB,IAAI1jB,EAAOpI,EAAQA,QAAQA,EAAQA,QAAQxuB,OAAS,GACpDX,KAAK6rH,wBAAwBt0F,aAAgB,QAAUA,EAAKpI,QAAUnvB,KAAK8rH,mBAAmB38F,EAAQA,SAAWoI,QAGjHpI,EAAQ8rB,OAAS,QAGzBgvD,EAAK/pG,UAAU6rH,yBAA2B,SAAU58F,GAChD,IAAI,eAAkBA,GAGtB,GAAIA,EAAQA,SAAWA,EAAQA,QAAQxuB,OAAQ,CAC3CwuB,EAAQ8rB,OAAS,QACjB,IAAI1jB,EAAOpI,EAAQA,QAAQ,GAC3BnvB,KAAK+rH,yBAAyBx0F,aAAgB,QAAUA,EAAKpI,QAAUnvB,KAAKgsH,qBAAqB78F,EAAQA,SAAWoI,QAGpHpI,EAAQ8rB,OAAS,SAOzBgvD,EAAK/pG,UAAUgsH,wBAA0B,WACrC,OAAOlsH,KAAKmsH,+BAAiCnsH,KAAKosH,sBAAsBpsH,KAAKmvB,QAAS,IAO1F86E,EAAK/pG,UAAUmsH,gBAAkB,WAC7B,OAAOrsH,KAAKq7F,aAAer7F,KAAKq7F,aAAagxB,kBAAoB,IAErEpiB,EAAK/pG,UAAUisH,6BAA+B,WAG1C,IAFA,IAAIG,EAAuB,EACvBn9F,EAAUnvB,KAAK4kG,YACV5jG,EAAI,EAAGA,EAAIhB,KAAK80F,cAAe9zF,IAChCmuB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKglB,SACpC01F,IAGR,GAAKtsH,KAAKwqG,iBAAmBxqG,KAAKyqG,WAAezqG,KAAKqqG,kBAAoBrqG,KAAKuqG,WAC3E,IAASvpG,EAAI,EAAGA,EAAImuB,EAAQxuB,OAAQK,KAC5BmuB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKglB,SAA2D,SAA/CzH,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK03D,QAClC,UAA/Cn6C,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK03D,QACvCgjD,IAIZ,OAAOA,GAEXriB,EAAK/pG,UAAUksH,sBAAwB,SAAU70F,EAAMu+D,GACnD,IAAM91F,KAAKwqG,kBAAoBxqG,KAAKyqG,aAAgBzqG,KAAKqqG,mBAAqBrqG,KAAKuqG,YAC/E,IAAK,IAAIvpG,EAAI,EAAGiiB,EAAMsU,EAAK52B,OAAQK,EAAIiiB,EAAKjiB,IACpCu2B,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKud,QACjC2mE,EAAM91F,KAAKosH,sBAAsB70F,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKud,QAAS2mE,GAGvEv+D,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK2rC,UAAYhmB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKglB,SAC9Ek/D,IAKhB,OAAOA,GAEXmU,EAAK/pG,UAAU+pH,eAAiB,SAAU1yF,EAAMu+D,EAAKrpF,GACjD,IAAK,IAAIzL,EAAI,EAAGiiB,EAAMsU,EAAK52B,OAAQK,EAAIiiB,EAAKjiB,IACpCu2B,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKud,QACjC2mE,EAAM91F,KAAKiqH,eAAe1yF,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKud,QAAS2mE,EAAKrpF,IAGrE8qB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK2rC,UAAY9wC,EAAQzM,KAAK80F,cAAgB,GAC1EgB,IAEJrpF,KAGR,OAAOqpF,GASXmU,EAAK/pG,UAAUqsH,SAAW,SAAUC,GAC5BxsH,KAAKo4B,aACLp4B,KAAKo4B,YAAYm0F,SAASC,IAUlCviB,EAAK/pG,UAAUusH,sBAAwB,SAAUngC,GACzCtsF,KAAKo4B,cAAgBp4B,KAAK+tG,eAC1B/tG,KAAKo4B,YAAYq0F,sBAAsBngC,IAY/C2d,EAAK/pG,UAAUwsH,WAAa,SAAU/zF,EAAYjU,EAAWioG,GACrD3sH,KAAK4sH,YACL5sH,KAAK4sH,WAAWF,WAAW/zF,EAAYjU,EAAWioG,IAiC1D1iB,EAAK/pG,UAAU2sH,iBAAmB,SAAUz9F,EAAYD,GACpDnvB,KAAKmsG,wBAAyB,EAC9BnsG,KAAKiL,cAAc,CAAE+tB,aAAc,CAAE7J,QAAS,MAAQ,GACtDnvB,KAAKiL,cAAc,CAAE+oB,eAAgB,CAAE7E,QAAS,MAAQ,GACxDnvB,KAAKiL,cAAc,CAAEwoB,eAAgB,CAAElzB,IAAK,MAAQ,GAChDP,KAAK0yB,eACL1yB,KAAKiL,cAAc,CAAE0nB,cAAe,CAAExD,QAAS,MAAQ,GAEvDA,GAAWA,EAAQxuB,QACnBX,KAAKiL,cAAc,CAAEkkB,QAASA,IAAW,GAEzCC,IACI,eAAkBD,IAClBnvB,KAAKiL,cAAc,CAAEkkB,QAAS,KAAM,GAExCnvB,KAAKiL,cAAc,CAAEmkB,WAAYA,IAAc,IAEnDpvB,KAAKigH,gBACLjgH,KAAKmsG,wBAAyB,GAOlClC,EAAK/pG,UAAU4sH,aAAe,WACtB9sH,KAAK4sH,YACL5sH,KAAK4sH,WAAWE,gBAUxB7iB,EAAK/pG,UAAU6sH,iBAAmB,SAAUl7F,GACpC7xB,KAAK4sH,YACL5sH,KAAK4sH,WAAWG,iBAAiBl7F,IAOzCo4E,EAAK/pG,UAAU8sH,iBAAmB,WAC9BhtH,KAAKiL,cAAc,CAAE+tB,aAAc,CAAE7J,QAAS,MAAQ,GACtDnvB,KAAKiL,cAAc,CAAE+oB,eAAgB,CAAE7E,QAAS,MAAQ,GACxDnvB,KAAKiL,cAAc,CAAEwoB,eAAgB,CAAElzB,IAAK,MAAQ,GAChDP,KAAK0yB,cACL1yB,KAAKiL,cAAc,CAAE0nB,cAAe,CAAExD,QAAS,MAAQ,GAGvDnvB,KAAKigH,iBAmBbhW,EAAK/pG,UAAU+sH,eAAiB,SAAUC,EAAWC,EAAgBC,EAAaj7F,EAAWe,EAAWgH,EAAcmzF,EAAmBC,GACjIttH,KAAKq7F,cACLr7F,KAAKq7F,aAAa4xB,eAAeC,EAAWC,EAAgBC,EAAaj7F,EAAWe,EAAWgH,EAAcmzF,EAAmBC,IASxIrjB,EAAK/pG,UAAUqtH,eAAiB,SAAU57F,GAClC3xB,KAAKq7F,cACLr7F,KAAKq7F,aAAakyB,eAAe57F,IAWzCs4E,EAAK/pG,UAAUstH,0BAA4B,SAAU37F,EAAO47F,GACpDztH,KAAKq7F,cACLr7F,KAAKq7F,aAAamyB,0BAA0B37F,EAAO47F,IAW3DxjB,EAAK/pG,UAAU0iH,UAAY,SAAUn2G,EAAOihH,GACpC1tH,KAAKgkF,iBACLhkF,KAAKgkF,gBAAgB4+B,UAAUn2G,EAAOihH,IAU9CzjB,EAAK/pG,UAAUytH,WAAa,SAAU/kB,GAC9B5oG,KAAKgkF,iBACLhkF,KAAKgkF,gBAAgB2pC,WAAW/kB,IAQxCqB,EAAK/pG,UAAUolG,eAAiB,WACxBtlG,KAAKgkF,iBACLhkF,KAAKgkF,gBAAgBshB,kBAW7B2E,EAAK/pG,UAAU0tH,WAAa,SAAU9lB,EAAW4lB,GACzC1tH,KAAKgkF,iBACLhkF,KAAKgkF,gBAAgB4pC,WAAW9lB,EAAW4lB,IAWnDzjB,EAAK/pG,UAAU2nG,mBAAqB,SAAU/iB,EAAY+oC,GACtD7tH,KAAKgkF,gBAAgB6jB,mBAAmB/iB,EAAY+oC,IAWxD5jB,EAAK/pG,UAAU2zB,OAAS,SAAUkoE,GAC1B/7F,KAAKm6G,cACLn6G,KAAKm6G,aAAatmF,OAAOkoE,IAUjCkO,EAAK/pG,UAAUgpE,MAAQ,WACflpE,KAAKipE,aACLjpE,KAAKipE,YAAYC,SAWzB+gC,EAAK/pG,UAAU4tH,aAAe,SAAUC,EAAWliG,GAC3C7rB,KAAK2nG,YACL3nG,KAAK2nG,WAAWmmB,aAAaC,EAAWliG,IAUhDo+E,EAAK/pG,UAAU8tH,UAAY,WACnBhuH,KAAK2nG,YACL3nG,KAAK2nG,WAAWqmB,aAQxB/jB,EAAK/pG,UAAUg9B,QAAU,WACjBl9B,KAAK2nG,YACL3nG,KAAK2nG,WAAWzqE,WAQxB+sE,EAAK/pG,UAAU6kG,UAAY,WACnB/kG,KAAK2nG,YACL3nG,KAAK2nG,WAAW5C,aAWxBkF,EAAK/pG,UAAU+tH,UAAY,SAAUpiG,EAAMpf,GACnCzM,KAAK2nG,YACL3nG,KAAK2nG,WAAWsmB,UAAUpiG,EAAMpf,IASxCw9F,EAAK/pG,UAAUguH,UAAY,SAAU5uC,GAC7Bt/E,KAAK2nG,YACL3nG,KAAK2nG,WAAWumB,UAAU5uC,IAWlC2qB,EAAK/pG,UAAUiuH,SAAW,SAAU1hH,EAAOolB,GACnC7xB,KAAK2nG,YACL3nG,KAAK2nG,WAAWwmB,SAAS1hH,EAAOolB,IASxCo4E,EAAK/pG,UAAUkuH,SAAW,WAClBpuH,KAAK2nG,YACL3nG,KAAK2nG,WAAWymB,YAYxBnkB,EAAK/pG,UAAU0nG,WAAa,SAAU5S,EAAUnjE,EAAOpZ,GAC/CzY,KAAK2nG,YACL3nG,KAAK2nG,WAAWC,WAAW5S,EAAUnjE,EAAOpZ,IAapDwxF,EAAK/pG,UAAUmuH,UAAY,SAAU5hH,EAAOof,GACpC7rB,KAAK2nG,YACL3nG,KAAK2nG,WAAW0mB,UAAU5hH,EAAOof,IAQzCo+E,EAAK/pG,UAAUouH,gBAAkB,WAC7B,OAAItuH,KAAK2nG,WACE3nG,KAAK2nG,WAAW2mB,kBAEpB,IAUXrkB,EAAK/pG,UAAUquH,mBAAqB,SAAU9kE,EAAOmN,GAC7C52D,KAAKg5C,eACLh5C,KAAKg5C,cAAc2d,YAAYlN,EAAOmN,IAS9CqzC,EAAK/pG,UAAUymG,KAAO,SAAUqB,GACxBhoG,KAAKy/G,iBACLz/G,KAAKy/G,gBAAgB9Y,KAAKqB,IAOlCiC,EAAK/pG,UAAUsuH,kBAAoB,WAC/B,IAAItkB,EAAUlqG,KACd,GAAKA,KAAK0zF,iBAAiBxnF,cAAc,kBAGnClM,KAAK2yB,cAAcxD,QAAQxuB,QAAWX,KAAKskF,YAAetkF,KAAKqgD,mBACjErgD,KAAK0zF,iBAAiBxnF,cAAc,gBAAgBxB,aAAa,oBAChE1K,KAAK4+C,kBAFV,CAKA,IAAI6vE,EAAczuH,KAAK0zF,iBAAiBxnF,cAAc,gBAAgByV,cAAcnY,YAChFklH,EAAY,GAAGhhH,MAAMpK,KAAKtD,KAAK0zF,iBAAiBxnF,cAAc,QAAmB4oC,YACjF65E,EAAa,GAAGjhH,MAAMpK,KAAKtD,KAAK4+C,kBAAkB1yC,cAAc,QAAmB4oC,YACnF85E,EAAWH,EAAc,GACzBztH,EAA6B,UAAzBhB,KAAK2lF,gBAA8B3lF,KAAK2yB,cAAcxD,QAAQxuB,OAASX,KAAK02B,aAAa/1B,OAAS,EACtGkuH,EAAe7uH,KAAKoD,QAAQoG,YAC5BslH,EAAa,SAAUriH,EAAOnH,GAC9B,GAAI,gBAAkB4kG,GAAU,CAC5B,IAAI6kB,GAAYzpH,EAAQupH,EAAe,KAAKG,QAAQ,GAAK,IACzDN,EAAU/8G,SAASlF,EAAMmF,WAAY,KAAK7K,MAAMzB,MAAQypH,EACxDJ,EAAWh9G,SAASlF,EAAMmF,WAAY,KAAK7K,MAAMzB,MAAQypH,OAGzDL,EAAU/8G,SAASlF,EAAMmF,WAAY,KAAK7K,MAAMzB,MAAQA,EAAQ,KAChEqpH,EAAWh9G,SAASlF,EAAMmF,WAAY,KAAK7K,MAAMzB,MAAQA,EAAQ,KAErE4kG,EAAQtwF,OAAO,QAA2B,CAAEnN,MAAOA,EAAOnH,MAAOA,KAEjEspH,GAAY,IACZH,EAAe,GAAKG,GAEpBH,EAAc,IACdA,EAAc,IAEdzuH,KAAKi6C,4BAA8Bj6C,KAAK6gG,WAAc7gG,KAAKmvB,QAAQxuB,SAAWX,KAAK2yB,cAAcxD,QAAQxuB,UACzG8tH,EAAc,IAElB,MAAOztH,EAAIhB,KAAK2yB,cAAcxD,QAAQxuB,OAClCmuH,EAAW9tH,EAAGytH,GACdztH,IAEAhB,KAAKskF,aACLwqC,EAAW9tH,EAAGytH,GACdztH,KAEAhB,KAAKqgD,iBACLyuE,EAAW9tH,EAAGytH,GAElBzuH,KAAK6gG,WAAY,EACjB7gG,KAAK0zF,iBAAiBxnF,cAAc,gBAAgBvB,aAAa,kBAAmB,UAMxFs/F,EAAK/pG,UAAU+uH,iBAAmB,WAS9B,GARI,gBAAkBjvH,QAClBA,KAAK0zF,iBAAiBxnF,cAAc,gBAAgBtB,gBAAgB,mBACpE5K,KAAK44C,aAAaG,oBAClB/4C,KAAKwuH,oBACDxuH,KAAK61C,SACL71C,KAAKogG,yBAGO,SAAfpgG,KAAKsF,OAA4C,kBAAhBtF,KAAU,QAA+C,IAA7BA,KAAKsF,MAAMtB,QAAQ,OAC9EhE,KAAK02B,aAAazC,QAAO,SAAUiF,GAAO,QAASA,EAAI5zB,OAAuB,SAAd4zB,EAAI5zB,QAAqB4zB,EAAI46B,YAAanzD,OAAS,EAAG,CACzH,IAAIuuH,EAAalvH,KAAK44C,aAAau2E,cAAcnvH,KAAK02B,cACtD12B,KAAK44C,aAAaw2E,yBAAyBF,GAE3ClvH,KAAKk6C,gBAAkBl6C,KAAKi6C,4BAA8Bj6C,KAAK44C,cAC/D54C,KAAK44C,aAAay2E,yBAElBrvH,KAAKujF,eAAoD,YAAnCvjF,KAAKwjF,iBAAiBC,UAC5CzjF,KAAK4Z,OAAO,QAAwB,IAEpC5Z,KAAKo6C,YAAcp6C,KAAKwpD,cACxBxpD,KAAKwpD,aAAalL,yBAO1B2rD,EAAK/pG,UAAUmgD,cAAgB,WAC3B,OAAOrgD,KAAKmhD,sBAAwBnhD,KAAK0+F,gBAAgBC,UAU7DsL,EAAK/pG,UAAUovH,eAAiB,SAAUC,EAAWC,GAC7CxvH,KAAKyvH,eACLzvH,KAAKyvH,cAAcH,eAAeC,EAAWC,IAYrDvlB,EAAK/pG,UAAUwvH,qBAAuB,SAAUz5F,EAAWD,GACnDh2B,KAAKyvH,eACLzvH,KAAKyvH,cAAcC,qBAAqBz5F,EAAWD,IAY3Di0E,EAAK/pG,UAAUyvH,2BAA6B,SAAUzC,EAAWl3F,GACzDh2B,KAAKyvH,eACLzvH,KAAKyvH,cAAcE,2BAA2BzC,EAAWl3F,IAWjEi0E,EAAK/pG,UAAUu1B,YAAc,SAAUm6F,EAAa55F,GAC5Ch2B,KAAK6vH,sBACL7vH,KAAK6vH,qBAAqBp6F,YAAYm6F,EAAa55F,IAQ3Di0E,EAAK/pG,UAAU4vH,kBAAoB,SAAU3iH,GACzCnN,KAAK4Z,OAAO,oBAAqBzM,IAOrC88F,EAAK/pG,UAAU6vH,aAAe,SAAU5/E,GACpC,IAAIyhD,EAAc5xF,KAAK0zF,iBACnBs8B,EAAehwH,KAAK4+C,kBACpBqxE,EAAar+B,EAAYlvE,iBAAiB,uCAC1CyU,EAAOn3B,KAAKgyF,UACZk+B,EAAW//E,EAAS,OAAS,GACjC,gBAAkByhD,EAAY1lF,cAAc,QAAmB4oC,WAAW,GAAI,CAAE,QAAWo7E,IAC3F,gBAAkBF,EAAa9jH,cAAc,QAAmB4oC,WAAW,GAAI,CAAE,QAAWo7E,IAC5F,IAAK,IAAIlvH,EAAI,EAAGA,EAAIhB,KAAKgyF,UAAUrxF,OAAQK,IAAK,CAC5C,IAAIssB,EAAM6J,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAK6P,kBACvC0uB,EACA,eAAS,CAAC7iB,GAAM,UAGhB,gBAAY,CAACA,GAAM,CAAC,WAG5B,IAAK,IAAIgK,EAAI,EAAGA,EAAIs6D,EAAYlvE,iBAAiB,uCAAuC/hB,OAAQ22B,IAAK,CAC7FhK,EAAM2iG,EAAWt+G,SAAS2lB,EAAE1lB,WAAY,KACxCu+B,EACA,eAAS,CAAC7iB,GAAM,UAGhB,gBAAY,CAACA,GAAM,CAAC,aA4BhC28E,EAAK/pG,UAAUiwH,eAAiB,SAAUC,GAClCpwH,KAAKqwH,cACLrwH,KAAKqwH,aAAaF,eAAeC,IAOzCnmB,EAAK/pG,UAAUkgG,qBAAuB,WAClC,KAAKpgG,KAAK45C,kBAA8C,aAA1B55C,KAAKsjF,kBAC3BtjF,KAAKw1C,eAA8C,SAA7Bx1C,KAAKswH,eAAexpB,MADlD,CAOA,IAHA,IAAI33E,EAAUnvB,KAAK02B,aACfk7D,EAAc5xF,KAAK0zF,iBACnB68B,EAAa,EACRvvH,EAAI,EAAGA,EAAImuB,EAAQxuB,OAAQK,IAChC,GAAImuB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKglB,QAAS,CAC7C,GAAI52B,KAAK2yB,cAAcxD,QAAQxuB,QACxBX,KAAK2yB,cAAcxD,QAAQnrB,QAAQmrB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKigB,QAAU,EAAG,CACvF,IAAI68F,EAAY,GAAGhhH,MAAMpK,KAAKsuF,EAAY1lF,cAAc,YACnDwW,iBAAiB,oEACtB,GAA4D,SAAxDgsG,EAAU/8G,SAAS3Q,EAAE4Q,WAAY,KAAK7K,MAAMC,QAC5C,SAGR,IAAImoB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKtM,MAGnC,CACDirH,EAAa,EACb,MAJAA,GAAczpH,WAAWqoB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKtM,MAAMsM,YAQ/E,GAAI2+G,EAAY,CACZ,IAAIC,EAAkBxwH,KAAK2qH,wBACvB8F,EAAOzwH,KAAK0wH,UAAUF,GACtBR,EAAehwH,KAAK4+C,kBACxB,GAAI5+C,KAAK2yB,cAAcxD,QAAQxuB,QAAUX,KAAKskF,YAActkF,KAAKqgD,gBAC7D,KAAIouE,EAAczuH,KAAK2wH,mBAAmBH,GACtCI,EAAwBnC,EAAY78G,WAAa6+G,EACjDI,EAAkB,GAAGnjH,MAAMpK,KAAKsuF,EAAY1lF,cAAc,YACzDwW,iBAAiB,sDAClBouG,EAAmB,GAAGpjH,MAAMpK,KAAK0sH,EAAa9jH,cAAc,YAC3DwW,iBAAiB,sDACtB,IAAS1hB,EAAI,EAAGA,EAAI6vH,EAAgBlwH,OAAQK,IACxC6vH,EAAgBl/G,SAAS3Q,EAAE4Q,WAAY,KAAK7K,MAAMgqH,YAAY,QAASH,GACvEE,EAAiBn/G,SAAS3Q,EAAE4Q,WAAY,KAAK7K,MAAMgqH,YAAY,QAASH,GACxEL,GAAc9B,GAGjB+B,GAAmBD,EAAa,MAC5BC,GAAmBD,EAAaP,EAAaruG,cAAcpY,eAC3D,eAAkBymH,EAAa9jH,cAAc,gBAK9C,eAAS,CAAC0lF,EAAao+B,GAAe,CAAC,mBAJvC,eAAS,CAACp+B,GAAc,CAAC,kBACzB,gBAAY,CAACo+B,GAAe,CAAC,oBAMrC,IAAIgB,EAAuBT,EAAW3+G,WAAa6+G,EACnD7+B,EAAY7qF,MAAMgqH,YAAY,QAASC,GACvChB,EAAajpH,MAAMgqH,YAAY,QAASC,QAGxChxH,KAAKmhH,yBAGblX,EAAK/pG,UAAUihH,qBAAuB,WAClC,KAAKnhH,KAAK45C,kBAA8C,aAA1B55C,KAAKsjF,kBAC3BtjF,KAAKw1C,eAA8C,SAA7Bx1C,KAAKswH,eAAexpB,MADlD,CAIA,IAAIlV,EAAc5xF,KAAK0zF,iBACnBs8B,EAAehwH,KAAK4+C,kBAIxB,GAHA,gBAAY,CAACgzC,EAAao+B,GAAe,CAAC,kBAC1Cp+B,EAAY7qF,MAAM8pD,eAAe,SACjCm/D,EAAajpH,MAAM8pD,eAAe,SAC9B7wD,KAAK2yB,cAAcxD,QAAQxuB,QAAUX,KAAKskF,YAActkF,KAAKqgD,gBAAiB,CAC9E,IAAImwE,EAAkBxwH,KAAK2qH,wBACvBsG,EAA0BjxH,KAAK2wH,mBAAmBH,GAAiB5+G,WAAa5R,KAAK0wH,UAAUF,GAC/FK,EAAkB,GAAGnjH,MAAMpK,KAAKsuF,EAAY1lF,cAAc,YACzDwW,iBAAiB,sDACtBmuG,EAAgBn9E,SAAQ,SAAUtwC,GAC9BA,EAAQ2D,MAAMgqH,YAAY,QAASE,MAEvCr/B,EAAY1lF,cAAc,gBAAgBtB,gBAAgB,mBAC1D5K,KAAKwuH,uBAGbvkB,EAAK/pG,UAAUwwH,UAAY,SAAUF,GACjC,OAAOA,EAAkB,IAAM,MAEnCvmB,EAAK/pG,UAAUywH,mBAAqB,SAAUH,GAC1C,OAAOA,EAAkB1pH,YAAY,GAAK9G,KAAKoD,QAAQoG,YAAc,KAAKwlH,QAAQ,IAAM,IAE5F/kB,EAAK/pG,UAAUyqH,sBAAwB,WACnC,OAAO3qH,KAAK02B,aAAa,GAAGpxB,MAAMsM,WAAW5N,QAAQ,MAAQ,GASjEimG,EAAK/pG,UAAUgxH,oBAAsB,SAAUlrH,EAAGC,EAAG3F,GAC7CN,KAAKmxH,qBACLnxH,KAAKmxH,oBAAoBC,oBAAoBprH,EAAGC,EAAG3F,IAG3D2pG,EAAK/pG,UAAU4uG,mBAAqB,WAChC9uG,KAAK6uB,eAAem0E,SAAS,eAAgBhjG,KAAK44C,aAAe,IAAI,OAAmB54C,OACxFA,KAAK6uB,eAAem0E,SAAS,sBAAuB,IAAI,GACxDhjG,KAAK6uB,eAAem0E,SAAS,kBAAmB,IAAI,GACpDhjG,KAAK6uB,eAAem0E,SAAS,eAAgBhjG,KAAKqxH,UAAY,IAAI,OAAKrxH,KAAK8U,gBAAiB9U,KAAKkwG,cAAelwG,KAAKwa,SACtHxa,KAAK6uB,eAAem0E,SAAS,iBAAkBhjG,KAAKsxH,sBAAwB,IAAI,OAAetxH,KAAKwa,SACpGxa,KAAK6uB,eAAem0E,SAAS,kBAAmBhjG,KAAK8+G,UAAY,IAAI,GAAS9+G,OAC9EA,KAAK6uB,eAAem0E,SAAS,cAAehjG,KAAKywF,YAAc,IAAI,QACnEzwF,KAAK6uB,eAAem0E,SAAS,QAAShjG,KAAKwgG,YAAc,IAAI,OAAcxgG,QAE/EiqG,EAAK/pG,UAAUs6G,aAAe,WAC1B,IAEI+W,EACAj6F,EAHAk6F,EAAQxxH,KAAK2yB,cAAcxD,QAC3BsiG,EAAQzxH,KAAKg5B,aAAa7J,QAG9B,GAAInvB,KAAK0yB,cAiCL,IAhCA,IAAIg/F,EAAU,SAAU1wH,EAAGiiB,GACvBqU,EAAI,EACJ,IAAK,IAAIq6F,EAAOF,EAAM9wH,OAAQ22B,EAAIq6F,EAAMr6F,IACpC,GAAIm6F,EAAM9/G,SAAS2lB,EAAE1lB,WAAY,KAAKigB,QAAU2/F,EAAM7/G,SAAS3Q,EAAE4Q,WAAY,KAAM,CAC/E2/G,GAAO,EACP,MAcR,GAXKA,EAIGK,EAAO74F,aACP64F,EAAOvjB,cAAchiG,KAAKolH,EAAM9/G,SAAS2lB,EAAE1lB,WAAY,KAAKigB,OAG5D4/F,EAAM9/G,SAAS2lB,EAAE1lB,WAAY,KAAK8S,UAAY,YAPlD+sG,EAAMplH,KAAK,CAAEwlB,MAAO2/F,EAAM7/G,SAAS3Q,EAAE4Q,WAAY,KAAM8S,UAAW,YAAamtG,aAAa,KAU3FD,EAAOj/F,cAAcm/F,kBAAmB,CACzC,IAAIviG,EAASqiG,EAAO33E,2BAChB23E,EAAOziG,QAAQ8E,QAAO,SAAUxzB,GAAK,OAAOA,EAAEoxB,QAAU2/F,EAAM7/G,SAAS3Q,EAAE4Q,WAAY,QAAS,GAC5FggH,EAAOl5F,iBAAiB84F,EAAM7/G,SAAS3Q,EAAE4Q,WAAY,MACvD2d,EACAA,EAAOqH,SAAU,EAGjBg7F,EAAO3/F,IAAI,iBAAkB,CAAEza,WAAY,QAASmhB,WAAY64F,EAAM7/G,SAAS3Q,EAAE4Q,WAAY,SAIrGggH,EAAS5xH,KACJgB,EAAI,EAAGiiB,EAAMuuG,EAAM7wH,OAAQK,EAAIiiB,EAAKjiB,IACzC0wH,EAAQ1wH,EAAGiiB,GAGnB,IAAKuuG,EAAM7wH,OACP,IAASK,EAAI,EAAGA,EAAIywH,EAAM9wH,OAAQK,IAC9BhB,KAAKquG,cAAchiG,KAAKolH,EAAM9/G,SAAS3Q,EAAE4Q,WAAY,KAAKigB,OASlE,GANA7xB,KAAK0gH,cAAgB,gBAAiB1gH,KAAKk/E,aAC3Cl/E,KAAK2gH,sBAAwB,gBAAiB3gH,KAAK4+F,qBACnD5+F,KAAK4gH,iBAAmB,gBAAiB5gH,KAAKmgD,gBAC9CngD,KAAKg2C,eAAiB,gBAAiBh2C,KAAK6lE,aAAajvB,UACzD52C,KAAKupH,qBAAuB,gBAAiBvpH,KAAK6lE,aAAa9uB,gBAC/D/2C,KAAKypH,qBAAuB,gBAAiBzpH,KAAK6lE,aAAa9lB,iBAC1D,eAAkB//C,KAAK+gF,eAAgB,CACxC,IAAItoE,EAAQ,eAAkBzY,KAAK+gF,cAAcgxC,qBAAuB,YACpE/xH,KAAK+gF,cAAcgxC,oBACvB/xH,KAAKsvB,MAAM6D,MAAMnzB,KAAKgyH,YAAa,QAASv5G,GAAO,GAEvDzY,KAAKiyH,qBAEThoB,EAAK/pG,UAAU+xH,kBAAoB,WAC3BjyH,KAAK4uG,oBAAoB5uG,KAAK02B,eAC9B12B,KAAK4Z,OAAO,QAA6B5Z,KAAKywB,yBAGtDw5E,EAAK/pG,UAAU4iH,wBAA0B,WACP,aAA1B9iH,KAAKsjF,iBACLtjF,KAAKoD,QAAQ8B,UAAU4G,IAAI,oBAG3B9L,KAAKoD,QAAQ8B,UAAUC,OAAO,qBAGtC8kG,EAAK/pG,UAAUu6G,WAAa,WACxB,IAAI52G,EACJ7D,KAAKshH,YACyB,aAA1BthH,KAAKsjF,kBACLtjF,KAAKoD,QAAQ8B,UAAU4G,IAAI,oBAE3B9L,KAAKk/G,aACLl/G,KAAKoD,QAAQ8B,UAAU4G,IAAI,eAE3B,OAAQ6D,UACR3P,KAAKoD,QAAQ8B,UAAU4G,IAAI,YAE3B9L,KAAKuiF,WACLviF,KAAKoD,QAAQ8B,UAAU4G,IAAI,qBAE3B9L,KAAKyK,YAC+B,IAAhCzK,KAAKyK,SAASzG,QAAQ,MACrBH,EAAK7D,KAAKoD,QAAQ8B,WAAW4G,IAAIhJ,MAAMe,EAAI7D,KAAKyK,SAASxG,MAAM,MAGhEjE,KAAKoD,QAAQ8B,UAAU4G,IAAI9L,KAAKyK,WAIpCzK,KAAKmhD,qBAAuBnhD,KAAK0+F,gBAAgBC,UAAkC,YAAtB,OAAQjjD,KAAK1rC,MAC1EhQ,KAAKoD,QAAQ8B,UAAU4G,IAAI,uBAE/B,eAAU9L,KAAKoD,QAAS,CAAC,eAAgB,aAAc,IACvD,IAAI8uH,EAAkBlyH,KAAK6uB,eAAeuxD,WAAW,mBACrDpgF,KAAK+6G,aAAemX,EAAgBn3B,YAAY,OAAW/H,QAC3DhzF,KAAKw8F,cAAgB01B,EAAgBn3B,YAAY,OAAWE,SAC5Dj7F,KAAKipE,YAAc,IAAI,QAAMjpE,KAAMA,KAAKwpD,cACxCxpD,KAAKy/G,gBAAkB,IAAI,GAAUz/G,KAAMA,KAAK6uB,gBAChD7uB,KAAKk6G,aAAavmG,SAClB3T,KAAKq/G,mBACLr/G,KAAKmyH,yBACLnyH,KAAK44C,aAAaG,oBAClB/4C,KAAK8hH,kBACL9hH,KAAKgiH,gBACLhiH,KAAKoyH,gBACLpyH,KAAK0/G,sBAETzV,EAAK/pG,UAAUmyH,UAAY,WACvBryH,KAAKwpD,aAAatuC,WAClBlb,KAAKwpD,aAAa1P,YACE,SAAhB95C,KAAKqF,QACLrF,KAAKwpD,aAAa5O,cAG1BqvD,EAAK/pG,UAAUohH,UAAY,WACnBthH,KAAKyF,UACLzF,KAAKoD,QAAQ8B,UAAU4G,IAAI,SAG3B9L,KAAKoD,QAAQ8B,UAAUC,OAAO,UAGtC8kG,EAAK/pG,UAAUiyH,uBAAyB,WACpC,IAAI/rG,EAAQpmB,KAAKuE,cAAc,MAAO,CAAEC,UAAW,cAAe0K,OAAQ,kBACtErE,EAAU7K,KAAKuE,cAAc,MAAO,CAAEC,UAAW,OAAkBwK,MAAO,CAAEmM,SAAU,QAC1F,eAAO,CAACtQ,EAAS7K,KAAKuE,cAAc,MAAO,CAAEC,UAAW,qBAAuB4hB,GAC/Evb,EAAQnG,YAAY1E,KAAKuE,cAAc,SACvC,eAAO,CAACsG,EAAS7K,KAAKuE,cAAc,MAAO,CAAEC,UAAW,uBAAyB4hB,GACjFpmB,KAAKoD,QAAQsB,YAAY0hB,IAE7B6jF,EAAK/pG,UAAU4hH,gBAAkB,WAE7B,OADA,eAAU9hH,KAAKoD,QAAS,GAAI,CAAC,kBAAmB,oBAAqB,cAAe,gBAC5EpD,KAAKsyH,WACT,IAAK,aACDtyH,KAAKoD,QAAQ8B,UAAU4G,IAAI,qBAC3B,MACJ,IAAK,WACD9L,KAAKoD,QAAQ8B,UAAU4G,IAAI,mBAC3B,MACJ,IAAK,OACD9L,KAAKoD,QAAQ8B,UAAU4G,IAAI,eAC3B,MACJ,IAAK,OACD9L,KAAKoD,QAAQ8B,UAAU4G,IAAI,eAC3B,MAER9L,KAAK6hH,qBAET5X,EAAK/pG,UAAU2hH,kBAAoB,WAC3B7hH,KAAKw1C,eACgB,aAAnBx1C,KAAKsyH,WAA+C,SAAnBtyH,KAAKsyH,UACxCtyH,KAAKoD,QAAQ8B,UAAU4G,IAAI,kBAG3B9L,KAAKoD,QAAQ8B,UAAUC,OAAO,mBAStC8kG,EAAK/pG,UAAU8hH,cAAgB,WAC3B,GAAIhiH,KAAKujF,cAAe,CACpB,IAAI0sC,EAAa,GAAGviH,MAAMpK,KAAKtD,KAAKoD,QAAQ+U,uBAAuB,mBACnE,OAAQnY,KAAKwjF,iBAAiBC,UAC1B,IAAK,SACD,gBAAKzjF,KAAKoD,SAAS,GACnB,gBAAKpD,KAAKg6C,cAAc,GACxB,gBAAKi2E,GAAY,GACjB,MACJ,IAAK,UACD,gBAAKjwH,KAAKg6C,cAAc,GACxB,gBAAKh6C,KAAKoD,SAAS,GACnB,gBAAK6sH,GAAY,GACjB,MACJ,QACI,gBAAKjwH,KAAKoD,SAAS,GACnB,gBAAKpD,KAAKg6C,cAAc,GACxB,gBAAKi2E,GAAY,GAEc,YAAnCjwH,KAAKwjF,iBAAiBC,UACtBzjF,KAAK4Z,OAAO,QAAwB,MAUhDqwF,EAAK/pG,UAAU+hH,eAAiB,WAC5B,gBAAKjiH,KAAKoD,SAAS,GACnB,IAAI6sH,EAAa,GAAGviH,MAAMpK,KAAKtD,KAAKoD,QAAQ+U,uBAAuB,mBACnE,gBAAK83G,GAAY,GACjB,gBAAKjwH,KAAKg6C,cAAc,GACe,YAAnCh6C,KAAKwjF,iBAAiBC,UACtBzjF,KAAK4Z,OAAO,QAAwB,KAS5CqwF,EAAK/pG,UAAUkyH,cAAgB,WAC3BpyH,KAAKw/G,WAAa,IAAI,OAAQ,CAC1Bp3G,QAAS,SACTyC,QAAS,GACTJ,SAAUzK,KAAKyK,SAAWzK,KAAKyK,SAAW,MAC3CzK,KAAKoD,UAKZ6mG,EAAK/pG,UAAU+/G,cAAgB,YACvBjgH,KAAKyyB,sBAAwBzyB,KAAK63B,2BAClC73B,KAAK83B,aAAaC,YAAc,GAEpC/3B,KAAKksG,oBAETjC,EAAK/pG,UAAUqyH,iBAAmB,SAAUnvH,GACxC,IAAIwuF,EAAc5xF,KAAK0zF,iBACnB8+B,EAAexyH,KAAK45C,kBAA8C,aAA1B55C,KAAKsjF,iBAAkC,gBAAkB,eACjGmvC,EAASzyH,KAAKkyF,YAAYN,EAAa4gC,EAAc,UACrDE,EAAS1yH,KAAKkyF,YAAYN,EAAa4gC,EAAc,WACrDxwF,EAAQ5+B,EAAQ8B,UAAUmB,SAAS,gBAAkBosH,EAASC,EAC9DplG,EAAMlqB,EAAQ8B,UAAUmB,SAAS,gBAAkB,KAAO,KAC9D27B,EAAM91B,cAAcohB,GAAK9oB,UAAYpB,EAAQoB,UAC7Cw9B,EAAM91B,cAAcohB,GAAKxiB,UAAY1H,EAAQ0H,UAC7C,IAAIxF,EAAQ08B,EAAM91B,cAAcohB,GAAKlmB,wBAAwB9B,MAG7D,OAFAsI,SAAS6B,KAAKolC,YAAY49E,GAC1B7kH,SAAS6B,KAAKolC,YAAY69E,MACrBptH,EAAQlC,EAAQgE,wBAAwB9B,QAAUlC,EAAQ8B,UAAUmB,SAAS,sBAC7ErG,KAAK45C,kBAA8C,aAA1B55C,KAAKsjF,kBAC3Bh+E,EAAiD,IAAxClC,EAAQgE,wBAAwB9B,OAAiC,SAAhBtF,KAAKqF,OAAoB,GAAK,KAKpG4kG,EAAK/pG,UAAUyyH,iBAAmB,SAAUxlH,GACxC,GAAInN,KAAKogH,oBAAqB,CAC1B,IAAIh9G,EAAU,gBAAa+J,EAAE7M,OAAQ,qBACjCN,KAAK4yH,cAAgBxvH,GAAsB,aAAX+J,EAAEqB,MAClCxO,KAAKw/G,WAAW35G,QAEpB,IAAI6J,EAAUvC,EAAE7M,OAAOoP,QACnBmjH,EAAY,CAAC,IAAK,SAAU,SAChC,GAAIzvH,GAAsB,aAAX+J,EAAEqB,QAAyB,OAAQmB,WAA4C,IAAhCkjH,EAAU7uH,QAAQ0L,KACxE1P,KAAKuyH,iBAAiBnvH,GAAU,CAChC,IAAI81B,EAAMl5B,KAAK02B,aAAa/kB,SAASvO,EAAQsH,aAAa,QAAwB,KAC9E0uF,EAAYlgE,EAAIqc,kBAAoB,YAAc,YAClDu0B,EAAa9pE,KAAKuE,cAAc,OACpC,GAAInB,EAAQ+U,uBAAuB,gBAAgBxX,OAAQ,CACvD,IAAImyH,EAAe1vH,EAAQ+U,uBAAuB,gBAAgB,GAClE2xD,EAAW,GAAKsvB,GAAap5F,KAAKkL,SAAS4nH,EAAarqF,WACxDzoC,KAAKw/G,WAAW30G,QAAUi/D,OAG1BA,EAAW,GAAKsvB,GAAap5F,KAAKkL,SAAS9H,EAAQqlC,WACnDzoC,KAAKw/G,WAAW30G,QAAUi/D,EAE9B9pE,KAAK4yH,YAAcxvH,EACfpD,KAAKgL,sBACLhL,KAAKw/G,WAAWx0G,qBAAsB,GAEtCkuB,EAAIqc,oBACJv1C,KAAKw/G,WAAWr0G,iBAAkB,GAEtCnL,KAAKw/G,WAAW,QAAQp8G,MAKxC6mG,EAAK/pG,UAAUkgH,kBAAoB,WAC/B,IAAI7oF,EAAOv3B,KAAK02B,aAChB,GAAsB,wBAAlB12B,KAAKw4F,SACL,OAAO,EAEX,IAAK,IAAIx3F,EAAI,EAAGA,EAAIu2B,EAAK52B,OAAQK,IAC7B,GAAkD,wBAA9Cu2B,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK4mF,SACjC,OAAO,EAGf,OAAO,GAEXyR,EAAK/pG,UAAUwT,cAAgB,WACvB1T,KAAKogH,qBACLpgH,KAAKw/G,WAAW35G,SAYxBokG,EAAK/pG,UAAUgyF,YAAc,SAAUlwD,EAAO+wF,EAAKvkH,GAC/C,IAAIwkH,EAAahzH,KAAKuE,cAAc,OACpCyuH,EAAWxuH,UAAYxE,KAAKoD,QAAQoB,UACpCwuH,EAAWjsH,MAAMksH,QAAU,4DAC3B,IAAIC,EAAWlzH,KAAKuE,cAAc,OAClC2uH,EAAS1uH,UAAYuuH,EACrB,IAAII,EAAUnzH,KAAKuE,cAAc,SACjC4uH,EAAQ3uH,UAAYw9B,EAAMx9B,UAC1B2uH,EAAQpsH,MAAMksH,QAAU,iCACxB,IAAI3lG,EAAgB,WAAT9e,EAAqB,KAAO,KACnC4kH,EAAOpzH,KAAKuE,cAAc,KAAM,CAAEyK,MAAO,CAAEC,KAAM,SACjDokH,EAAOrzH,KAAKuE,cAAc+oB,GAM9B,OALA8lG,EAAK1uH,YAAY2uH,GACjBF,EAAQzuH,YAAY0uH,GACpBF,EAASxuH,YAAYyuH,GACrBH,EAAWtuH,YAAYwuH,GACvBtlH,SAAS6B,KAAK/K,YAAYsuH,GACnBA,GAEX/oB,EAAK/pG,UAAUozH,aAAe,SAAUnmH,GACnB,QAAbA,EAAEwT,QAAiC,aAAbxT,EAAEwT,QACxB3gB,KAAKw/G,WAAW35G,SASxBokG,EAAK/pG,UAAU0T,WAAa,WACxB,OAAa9H,IAAI9L,KAAKoD,QAAS,QAASpD,KAAKuzH,kBAAmBvzH,MAChE,OAAa8L,IAAI9L,KAAKoD,QAAS,WAAYpD,KAAKuzH,kBAAmBvzH,MACnE,OAAa8L,IAAI9L,KAAKoD,QAAS,WAAYpD,KAAK6zC,gBAAiB7zC,MACjE,OAAa8L,IAAI9L,KAAKoD,QAAS,WAAYpD,KAAKwzH,gBAAiBxzH,MACjE,OAAa8L,IAAI9L,KAAKoD,QAAS,UAAWpD,KAAKyzH,gBAAiBzzH,MAEhE,OAAa8L,IAAIvF,OAAQ,SAAUvG,KAAKivH,iBAAkBjvH,MACtDA,KAAK6pD,gBACL7pD,KAAKoD,QAAQ+X,UAAsC,IAA3Bnb,KAAKoD,QAAQ+X,SAAkB,EAAInb,KAAKoD,QAAQ+X,UAE5Enb,KAAK+mB,eAAiB,IAAI,OAAe/mB,KAAKoD,QAAS,CACnDub,UAAW3e,KAAKgqD,iBAAiBpkD,KAAK5F,MACtCwe,WAAYxe,KAAKwe,WACjBE,UAAW,YAEf,OAAa5S,IAAI9L,KAAKg6C,aAAav4B,kBAAmB,SAAUzhB,KAAK0T,cAAe1T,MACpF,OAAa8L,IAAI9L,KAAKoD,QAAS,YAAapD,KAAK2yH,iBAAkB3yH,MACnE,OAAa8L,IAAI9L,KAAKoD,QAAS,WAAYpD,KAAK2yH,iBAAkB3yH,MAClE,OAAa8L,IAAI9L,KAAKg6C,aAAc,aAAch6C,KAAK0zH,SAAU1zH,MACjE,OAAa8L,IAAI8B,SAAS6B,KAAM,UAAWzP,KAAKkmG,eAAgBlmG,OAQpEiqG,EAAK/pG,UAAUuU,aAAe,WAC1B,OAAatP,OAAOnF,KAAKoD,QAAS,QAASpD,KAAKuzH,mBAChD,OAAapuH,OAAOnF,KAAKoD,QAAS,WAAYpD,KAAKuzH,mBACnD,OAAapuH,OAAOnF,KAAKoD,QAAS,WAAYpD,KAAK6zC,iBACnD,OAAa1uC,OAAOnF,KAAKoD,QAAS,WAAYpD,KAAKwzH,iBACnD,OAAaruH,OAAOnF,KAAKg6C,aAAav4B,kBAAmB,SAAUzhB,KAAK0T,eACxE,OAAavO,OAAOnF,KAAKoD,QAAS,YAAapD,KAAK2yH,kBACpD,OAAaxtH,OAAOnF,KAAKoD,QAAS,WAAYpD,KAAK2yH,kBACnD,OAAaxtH,OAAOnF,KAAKoD,QAAS,UAAWpD,KAAKyzH,iBAClD,OAAatuH,OAAOnF,KAAKg6C,aAAc,aAAch6C,KAAK0zH,UAC1D,OAAavuH,OAAOyI,SAAS6B,KAAM,UAAWzP,KAAKkmG,gBAEnD,OAAa/gG,OAAOoB,OAAQ,SAAUvG,KAAKivH,mBAM/ChlB,EAAK/pG,UAAUw6G,YAAc,WACrB16G,KAAK8uB,cAGT9uB,KAAK+uB,GAAG,QAAkB/uB,KAAKqyH,UAAWryH,MAC1CA,KAAK+uB,GAAG,QAAqB/uB,KAAKwuH,kBAAmBxuH,MACrDA,KAAK+uB,GAAG,QAAwB/uB,KAAKwuH,kBAAmBxuH,MACxDA,KAAK+uB,GAAG,QAA8B/uB,KAAK2zH,sBAAuB3zH,MAClEA,KAAK+uB,GAAG,QAAiC/uB,KAAK4qH,yBAA0B5qH,MACxEA,KAAK4zH,kBAAoB5zH,KAAK++G,gBAAgBn5G,KAAK5F,MACnDA,KAAK64C,iBAAiB,QAAkB74C,KAAK4zH,mBAC7C5zH,KAAK+uB,GAAG,QAAmB/uB,KAAKszH,aAActzH,QAMlDiqG,EAAK/pG,UAAUk/G,eAAiB,WACxBp/G,KAAK8uB,cAGT9uB,KAAKq0B,IAAI,QAAkBr0B,KAAKqyH,WAChCryH,KAAKq0B,IAAI,QAAqBr0B,KAAKwuH,mBACnCxuH,KAAKq0B,IAAI,QAAwBr0B,KAAKwuH,mBACtCxuH,KAAK+uB,GAAG,QAA8B/uB,KAAK2zH,sBAAuB3zH,MAClEA,KAAK+uB,GAAG,QAAiC/uB,KAAK4qH,yBAA0B5qH,MACxEA,KAAK47C,oBAAoB,QAAkB57C,KAAK4zH,mBAChD5zH,KAAKq0B,IAAI,QAAmBr0B,KAAKszH,gBASrCrpB,EAAK/pG,UAAUm8F,sBAAwB,WACnC,OAAI,gBAAgBr8F,MACT,eAAkBA,KAAKo8F,gBAAgBxpE,SAC1C5yB,KAAKo8F,gBAAkBp8F,KAAKo8F,gBAAgBxpE,QAEhD5yB,KAAK2yB,cAAc6F,kBACZx4B,KAAKo8F,gBAERp8F,KAAK0yB,eAAiB1yB,KAAK2yB,cAAcxD,QAAQxuB,QAAUX,KAAKo8F,gBAAgBz7F,QACjFX,KAAKo8F,gBAAgBxpE,QAAW5yB,KAAKo8F,gBAAgBxpE,QACtD5yB,KAAKo8F,iBAEf6N,EAAK/pG,UAAUqzH,kBAAoB,SAAUpmH,GACzC,KAAInN,KAAKynH,YAAYt6G,IAAO,gBAAaA,EAAE7M,OAAQ,gBAAkB6M,EAAEgG,SACnEnT,KAAKoD,QAAQ+U,uBAAuB,qBAAqBxX,QAAUX,KAAK6zH,UAAU1mH,OAG/EnN,KAAKmhD,sBAAwB,gBAAah0C,EAAE7M,OAAQ,SAClC,OAArB6M,EAAE7M,OAAOoP,WAAyB1P,KAAK0yB,eAAiB1yB,KAAKy1C,kBAC7D,gBAAatoC,EAAE7M,OAAQ,mBAAqB6M,EAAEgG,SAFlD,CAKI,gBAAahG,EAAE7M,OAAQ,iBAAmBN,KAAKmhD,sBAC7C,eAAD,CAAch0C,EAAE7M,OAAQ,oBAAwB6M,EAAE7M,SACK,IAAxD,CAAC,IAAK,SAAU,SAAS0D,QAAQmJ,EAAE7M,OAAOoP,UAC1CvC,EAAE+F,iBAEN,IAAI6S,EAAO/lB,KAAKolH,WAAWj4G,EAAE7M,QACzBmO,EAAS,SACbsX,EAAK,GAAKtX,IAAU,EACpB,IAAIqxE,GAAY,EACZR,EAAK,eAAQnyE,EAAE7M,OAAQ,MAC3B,GAAIg/E,GAAMA,EAAG50E,aAAa,YAAa,CACnC,IAAI46G,EAAStlH,KAAKulH,oBAAoBjmC,EAAG50E,aAAa,aACtDo1E,IAAYwlC,GAASA,EAAOxlC,UAE5BA,GACA9/E,KAAKiI,QAAQ,QAAoB8d,GAErC/lB,KAAK4Z,OAAO,OAAczM,KAE9B88F,EAAK/pG,UAAU2zH,UAAY,SAAU1mH,GACjC,IAAImyE,EAAK,gBAAanyE,EAAE7M,OAAQ,QAC5By8C,EAAoC,UAA3B/8C,KAAK6lE,aAAaihC,MAC3B9mG,KAAK+8C,QAAUuiC,IAAOA,EAAGp6E,UAAUmB,SAAS,SAAuBi5E,EAAGp6E,UAAUmB,SAAS,SAC7F,OAAQ,gBAAa8G,EAAE7M,OAAQ,sBAAwBy8C,GAAW,gBAAa5vC,EAAE7M,OAAQ,SACrF,gBAAa6M,EAAE7M,OAAQ,QAAkB4E,UAAUmB,SAAS,uBAEpE4jG,EAAK/pG,UAAUszH,gBAAkB,SAAUrmH,GACvC,IAAIi5F,EAAO,gBAAaj5F,EAAE7M,OAAQ,UAClC,IAAI,eAAkB8lG,IAASA,EAAK96F,KAAOtL,KAAKoD,QAAQkI,KAAM,eAAQ6B,EAAE7M,OAAQ,qBAAhF,CAGA,IAAIwzH,GAAU,EACVx0C,EAAK,eAAQnyE,EAAE7M,OAAQ,MAC3B,GAAIg/E,GAAMA,EAAG50E,aAAa,YAAa,CACnC,IAAI46G,EAAStlH,KAAKulH,oBAAoBjmC,EAAG50E,aAAa,aACtDopH,IAAUxO,GAASA,EAAOxlC,UAE9B,IAAI/5D,EAAO/lB,KAAKolH,WAAWj4G,EAAE7M,QAC7BylB,EAAKzlB,OAAS6M,EAAE7M,OACZwzH,GACA9zH,KAAKiI,QAAQ,QAA0B8d,GAE3C/lB,KAAK4Z,OAAO,QAAiBzM,KAEjC88F,EAAK/pG,UAAU2zC,gBAAkB,SAAU1mC,GACvC,IAAInN,KAAKynH,YAAYt6G,GAArB,CAGK,gBAAaA,EAAE7M,OAAQ,YACxBN,KAAKoD,QAAQ8I,cAAc,gBAAgBnF,MAAMC,QAAU,QAE/D,IAAI+sH,EAAc/zH,KAAKoD,QAAQ8I,cAAc,0BACzC6nH,IAAgBA,EAAYpyG,cAAczc,UAAUmB,SAAS,eAC7D0tH,EAAY7uH,UAAU4G,IAAI,UAE9B,IAAI+G,EAAgB1F,EAAE0F,cAClBmhH,EAAWnhH,EAAgBA,EAAcnI,aAAa,aAAe,KACnEmI,IAAmB,gBAAaA,EAAe,aAC/C,eAAkBmhH,IAChB,KAAgB7mH,EAAE7M,OAAOoK,aAAa,eACtC1K,KAAKi0H,WAAYj0H,KAAK+8C,QAAW,OAAQptC,WACd,UAA3B3P,KAAK6lE,aAAaihC,OAAwB,gBAAaj0F,EAAe,UAAY,gBAAaA,EAAe,WAC9G,gBAAaA,EAAe,gCAAmC,gBAAaA,EAAe,mBACvF,gBAAaA,EAAe,eAAmBA,GAC/C,eAAkB,gBAAaA,EAAe,oBAClD7S,KAAK2nG,WAAWymB,WAChBpuH,KAAK4Z,OAAO,QAAwB,KAET,WAA3B5Z,KAAK6lE,aAAaihC,MAClB9mG,KAAK2nG,WAAWusB,oBAGxBl0H,KAAKi0H,UAAW,IAEpBhqB,EAAK/pG,UAAUunH,YAAc,SAAUt6G,GACnC,IAAI0yC,EAAc,gBAAa1yC,EAAE7M,OAAQ,UACzC,SAAKu/C,GAAeA,EAAYv0C,KAAOtL,KAAKoD,QAAQkI,IAAQ,gBAAa6B,EAAE7M,OAAQ,qBAC/E,eAAkBu/C,KAU1BoqD,EAAK/pG,UAAUstG,qBAAuB,SAAU2mB,GAC5C,IAAItoG,EAAO7rB,KAAKo0H,eAChB,IAAM,eAAkBvoG,IAAmB,KAATA,IAAkB,eAAkBsoG,GAAgB,CAClF,IAAIE,EAAW,eAAkBF,GAAiCz2F,KAAKC,MAAM9R,GAA3BsoG,EAC9Cn0H,KAAKyyB,sBAAwB4hG,EAAQv8F,eACrCu8F,EAAQv8F,aAAaC,YAAc,GAEvC,IAAI3iB,EAAO3V,OAAO2V,KAAKi/G,GACvBr0H,KAAKs0H,qBAAsB,EAC3B,IAAK,IAAIzmH,EAAK,EAAG0mH,EAASn/G,EAAMvH,EAAK0mH,EAAO5zH,OAAQkN,IAAM,CACtD,IAAItN,EAAMg0H,EAAO1mH,GACc,kBAAnB7N,KAAK,GAAKO,IAAuB,eAAkBP,KAAK,GAAKO,IAarEP,KAAK,GAAKO,GAAO8zH,EAAQ,GAAK9zH,GAZ1BX,MAAM68B,QAAQz8B,KAAK,GAAKO,KAAiB,YAARA,GACjCP,KAAKiuG,iBACL,gBAAejuG,KAAK,GAAKO,IACzBP,KAAKw0H,aAAaH,EAAQ,GAAK9zH,GAAMP,KAAK,GAAKO,IAC/CP,KAAKosG,eAAgB,EACrBpsG,KAAK,GAAKO,GAAO8zH,EAAQ,GAAK9zH,IAG9B,eAAOP,KAAK,GAAKO,GAAM8zH,EAAQ,GAAK9zH,IAOhDP,KAAKs0H,qBAAsB,IAGnCrqB,EAAK/pG,UAAUs0H,aAAe,SAAUC,EAActlG,GAsBlD,IArBA,IAAIulG,EAAgBD,EAChBv6E,EAAel6C,KAAKk6C,eACpBy6E,EAAU,SAAU3zH,GACpB,IAAI4zH,EAAWzlG,EAAQ8E,QAAO,SAAU4gG,GAAQ,OAAO36E,EACnD26E,EAAKpoH,QAAUioH,EAAc/iH,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAK,QAC9DijH,EAAKpoH,QAAUioH,EAAc/iH,SAAS3Q,EAAE4Q,WAAY,KAAKnF,SAAU,GAClE,eAAkBmoH,KACf16E,IACA06E,EAAW,eAAO,GAAIA,EAAU,IAAI,GACpCA,EAAStrD,OAASorD,EAAc/iH,SAAS3Q,EAAE4Q,WAAY,KAAK03D,QAE5DsrD,EAASzlG,SAAWylG,EAASzlG,QAAQxuB,QACrCm0H,EAAON,aAAaE,EAAc/iH,SAAS3Q,EAAE4Q,WAAY,KAAKud,QAASylG,EAASzlG,SAChFulG,EAAc/iH,SAAS3Q,EAAE4Q,WAAY,KAAO,eAAOgjH,EAAUF,EAAc/iH,SAAS3Q,EAAE4Q,WAAY,KAAM,IAAI,IAG5G8iH,EAAc/iH,SAAS3Q,EAAE4Q,WAAY,KAAO,eAAOgjH,EAAUF,EAAc/iH,SAAS3Q,EAAE4Q,WAAY,KAAM,IAAI,KAIpHkjH,EAAS90H,KACJgB,EAAI,EAAGA,EAAI0zH,EAAc/zH,OAAQK,IACtC2zH,EAAQ3zH,IAOhBipG,EAAK/pG,UAAUokF,SAAW,WACtB,OAAQ,eAAkBtkF,KAAKmgD,kBAAoB,eAAkBngD,KAAKogD,YAE9E6pD,EAAK/pG,UAAUouG,gBAAkB,SAAUn/E,GACvC,IAAI+6E,EAAUlqG,KACd,OAAOmvB,EAAQ6K,MAAK,SAAUd,GAC1B,OAAIA,EAAI/J,QACG+6E,EAAQoE,gBAAgBp1E,EAAI/J,YAE7B+J,EAAIwd,WAAYxd,EAAI2d,sBAGtCozD,EAAK/pG,UAAU0uG,oBAAsB,SAAUz/E,GAC3C,IAAI+6E,EAAUlqG,KACd,OAAOmvB,EAAQ6K,MAAK,SAAUd,GAC1B,OAAIA,EAAI/J,QACG+6E,EAAQ0E,oBAAoB11E,EAAI/J,YAEjC+J,EAAI9J,aAAc8J,EAAInH,qBAGxCk4E,EAAK/pG,UAAUuzH,gBAAkB,SAAUtmH,GACvC,IAAI4nH,EAAW,eAAO5nH,EAAG,CAAEsB,QAAQ,IACnCzO,KAAKiI,QAAQ,aAAc8sH,IACH,IAApBA,EAAStmH,QACTtB,EAAE6nH,4BAGV/qB,EAAK/pG,UAAUgmG,eAAiB,SAAU/4F,GACtC,GAAIA,EAAE8nH,OAAQ,CAgBV,GAfkB,KAAd9nH,EAAEqG,UACExT,KAAKoqG,MACLpqG,KAAK4Z,OAAO,QAAsB,CAAEtZ,OAAQ6M,EAAE7M,OAAQ40H,UAAU,IAChEl1H,KAAKoqG,MAAO,IAGRpqG,KAAKwgG,aAAexgG,KAAKwgG,YAAY20B,aAAen1H,KAAKwgG,YAAY20B,YAAY/xH,UACjF,gBAAY,CAACpD,KAAKwgG,YAAY20B,YAAY/xH,QAASpD,KAAKwgG,YAAY20B,YAAYC,gBAAiB,CAAC,YAAa,YAC/Gp1H,KAAKwgG,YAAY20B,YAAY/xH,QAAQ+X,UAAY,GAEhDnb,KAAKoD,QAAQ8B,UAAUmB,SAAS,gBACjCrG,KAAKoD,QAAQ2c,UAIP,KAAd5S,EAAEqG,QAAgB,CAClB,IAAIgtF,EAAcxgG,KAAKwgG,YACvB,GAAIA,EAAa,CACb,IAAKxgG,KAAKo8F,gBAAgBz7F,OACtB,OAEJ6/F,EAAY60B,eACZ70B,EAAY80B,cAGF,KAAdnoH,EAAEqG,UACFxT,KAAKoqG,MAAO,GAEE,KAAdj9F,EAAEqG,SAAkBxT,KAAKoqG,OACzBpqG,KAAK4Z,OAAO,QAAsB,CAAEtZ,OAAQ6M,EAAE7M,OAAQ40H,UAAU,IAChEl1H,KAAKoqG,MAAO,GAGF,KAAdj9F,EAAEqG,SACFxT,KAAK4Z,OAAO,QAAwBzM,IAG5C88F,EAAK/pG,UAAU8pD,iBAAmB,SAAU78C,GACpCnN,KAAKynH,YAAYt6G,IAChBnN,KAAK+8C,QAAuB,WAAb5vC,EAAEwT,QAAoC,UAAbxT,EAAEwT,QAAmC,eAAbxT,EAAEwT,QAC/C,QAAbxT,EAAEwT,QAAiC,aAAbxT,EAAEwT,SAI/B3gB,KAAKi0H,UAAW,EAEhBj0H,KAAK6pD,gBACY,cAAb18C,EAAEwT,SACFxT,EAAE+F,iBACFlT,KAAKkpE,SAETlpE,KAAK4Z,OAAO,QAAmBzM,MAQvC88F,EAAK/pG,UAAUypE,mBAAqB,SAAU7jD,GAC1C9lB,KAAKu1H,gBAAkBzvG,GAE3BmkF,EAAK/pG,UAAUmgH,mBAAqB,WAChC,gBAAergH,KAAKmvB,QAASnvB,KAAKi6C,2BAA4Bj6C,MAC9D,gBAAeA,KAAKmvB,SACpBnvB,KAAKiyH,oBACLjyH,KAAK4Z,OAAO,OAAgB,KAEhCqwF,EAAK/pG,UAAUyzH,sBAAwB,SAAU5wF,GACzCA,GAAOA,EAAI2iE,WACX1lG,KAAKw1H,iBACLx1H,KAAK4Z,OAAO,QAA8B,KAG1C5Z,KAAKw1H,kBAQbvrB,EAAK/pG,UAAUuwB,qBAAuB,WAClC,OAAOzwB,KAAK02B,aAAazC,QAAO,SAAUiF,GACtC,OAAOA,EAAIK,sBAOnB0wE,EAAK/pG,UAAUq6C,aAAe,WAC1B,OAAOv6C,KAAKuiF,UAAYviF,KAAKuiF,UAAY,eAAaviF,KAAKoD,UAO/D6mG,EAAK/pG,UAAUs1H,eAAiB,WAU5B,GATAx1H,KAAKsqG,qBAAsB,EAC3BtqG,KAAKiuG,iBACLjuG,KAAKs+G,2BACDt+G,KAAKk6C,iBACLl6C,KAAKy8C,sBAAuB,GAEhCz8C,KAAKqgH,qBACLrgH,KAAKu6G,iBAAiBv6G,KAAK02B,cAC3B12B,KAAKsV,UACDtV,KAAKk6C,gBAAkBl6C,KAAKi6C,2BAA4B,CACxD,IAAIj1C,EAAOhF,KAAKg6C,aAAa9tC,cAAc,uBAAuB4E,WAClE9Q,KAAKq6C,mBAAmBnuC,cAAc,IAAM,QAAwB4E,WAAa9L,EACjFhF,KAAKg6C,aAAa9tC,cAAc,IAAM,QAAkB4E,WAAa9L,IAY7EilG,EAAK/pG,UAAUu1H,YAAc,SAAUC,EAAuBC,EAE9DC,EAAUC,GACN,GAAI71H,KAAK81H,aAAe91H,KAAK81H,YAAYn1H,OAAQ,CAC7C,IAAIo1H,EAAU/1H,KAAK81H,YAAYpoH,QAC/B,OAAO1N,KAAKg2H,yBAAyBD,EAASL,EAAuBC,EAAkBC,EAAUC,GAGjG,OAAO71H,KAAKi2H,kBACRj2H,KAAKi2H,kBAAkBC,IAAIl2H,KAAM01H,EAAuBC,EAAkBC,GAAU,EAAOC,GAAU,MAYjH5rB,EAAK/pG,UAAUi2H,UAAY,SAAUT,EAErCC,EAAkBC,EAAUC,GACxB,OAAO71H,KAAKi2H,kBACRj2H,KAAKi2H,kBAAkBC,IAAIl2H,KAAM01H,EAAuBC,EAAkBC,GAAU,EAAMC,GAAU,MAY5G5rB,EAAK/pG,UAAUk2H,UAAY,SAAUC,EAAqBV,EAAkBW,EAAQT,GAChF,GAAI71H,KAAK81H,aAAe91H,KAAK81H,YAAYn1H,OAAQ,CAC7C,IAAIo1H,EAAU/1H,KAAK81H,YAAYpoH,QAC/B,OAAO1N,KAAKu2H,uBAAuBR,EAASM,EAAqBV,EAAkBW,EAAQT,GAG3F,OAAO71H,KAAKw2H,gBAAkBx2H,KAAKw2H,gBAAgBN,IAAIl2H,KAAMq2H,EAAqBV,EAAkBW,EAAQT,GAAU,MAG9H5rB,EAAK/pG,UAAUq2H,uBAAyB,SAAUR,EAASM,EAAqBV,EAEhFW,EAAQT,GACJ,IAAIxyH,EAAQrD,KACZ,GAAuB,IAAnB+1H,EAAQp1H,OAAc,CACtB,IAAI81H,EAAgBV,EAAQW,QAExBC,EAAsB/oH,SAASgpH,eAAeH,GAAe9tE,cAAc,GAC3EkuE,EAAgBF,EAAoBH,gBACpCG,EAAoBH,gBAAgBN,IAAIS,EAAqBN,EAAqBV,EAAkBW,EAAQT,GAC1GxkG,QAAQlB,UACd,OAAO0mG,EAAcxmG,MAAK,SAAUymG,GAEhC,OADAnB,EAAsC,IAAnBI,EAAQp1H,OACpB0C,EAAMkzH,uBAAuBR,EAASM,EAAqBV,EAAkBmB,EAAqBjB,MAGjH,OAAO,MAEX5rB,EAAK/pG,UAAU81H,yBAA2B,SAAUD,EAASL,EAAuBC,EAEpFC,EAAUC,GACN,IAAIxyH,EAAQrD,KACZ,GAAuB,IAAnB+1H,EAAQp1H,OAAc,CACtB,IAAI81H,EAAgBV,EAAQW,QAExBC,EAAsB/oH,SAASgpH,eAAeH,GAAe9tE,cAAc,GAC3EkuE,EAAgBF,EAAoBV,kBACpCU,EAAoBV,kBAAkBC,IAAIS,EAAqBjB,EAAuBC,EAAkBC,GAAU,EAAOC,GAAU,KACvI,OAAOgB,EAAcxmG,MAAK,SAAUymG,GAEhC,OADAnB,EAAsC,IAAnBI,EAAQp1H,OACpB0C,EAAM2yH,yBAAyBD,EAASL,EAAuBC,EAAkBmB,EAAqBjB,MAGrH,OAAO,MASX5rB,EAAK/pG,UAAU62H,YAAc,SAAUp+F,GAC/B34B,KAAKglG,aACLhlG,KAAKglG,YAAY+xB,YAAYp+F,IAQrCsxE,EAAK/pG,UAAU82H,eAAiB,WACxBh3H,KAAKglG,aACLhlG,KAAKglG,YAAYiyB,aAQzBhtB,EAAK/pG,UAAUg3H,iBAAmB,WAC1Bl3H,KAAKglG,aACLhlG,KAAKglG,YAAYmyB,eAmBzBltB,EAAK/pG,UAAUk3H,cAAgB,WACvBp3H,KAAKglG,aACLhlG,KAAKglG,YAAYoyB,iBAYzBntB,EAAK/pG,UAAUm3H,cAAgB,SAAU1+F,GACjC34B,KAAKglG,aACLhlG,KAAKglG,YAAYqyB,cAAc1+F,IAWvCsxE,EAAK/pG,UAAUo3H,kBAAoB,SAAUtxH,EAAGC,GACxCjG,KAAKmxH,qBACLnxH,KAAKmxH,oBAAoBmG,kBAAkBtxH,EAAGC,IAGtDgkG,EAAK/pG,UAAUwiH,cAAgB,WAC3B,IAAIxY,EAAUlqG,KACVsV,EAAU,WACV40F,EAAQ1gD,aAAal0C,UACrB40F,EAAQ71E,IAAI,QAAqB/e,IAErCtV,KAAK+uB,GAAG,QAAqBzZ,EAAStV,OAkB1CiqG,EAAK/pG,UAAUq3H,kBAAoB,WAC3Bv3H,KAAKw3H,iBACLx3H,KAAKw3H,gBAAgBL,eAmB7BltB,EAAK/pG,UAAUu3H,gBAAkB,WACzBz3H,KAAKw3H,iBACLx3H,KAAKw3H,gBAAgBP,aAQ7BhtB,EAAK/pG,UAAUw3H,mBAAqB,WAC5B13H,KAAKgkF,iBACLhkF,KAAKgkF,gBAAgB0zC,sBAQ7BztB,EAAK/pG,UAAUy3H,kBAAoB,WAC3B33H,KAAKgkF,iBACLhkF,KAAKgkF,gBAAgB2zC,qBAU7B1tB,EAAK/pG,UAAU03H,YAAc,SAAUC,GAC/B73H,KAAKgkF,iBACLhkF,KAAKgkF,gBAAgB4zC,YAAYC,IAWzC5tB,EAAK/pG,UAAU43H,kBAAoB,SAAUhzC,EAAY+oC,GACjD7tH,KAAKgkF,iBACLhkF,KAAKgkF,gBAAgB8zC,kBAAkBhzC,EAAY+oC,IAO3D5jB,EAAK/pG,UAAU63H,kBAAoB,WAC/B,OAAO/3H,KAAKwhH,mBAAqBxhH,KAAKwhH,kBAAkBtvD,QAO5D+3C,EAAK/pG,UAAU83H,qBAAuB,SAAUn+G,GAC5C,OAAO7Z,KAAKypE,qBAAqBzlE,QAAQ6V,IAAW,GAWxDowF,EAAK/pG,UAAU4/F,gBAAkB,SAAUm4B,EAAexrH,GACtDzM,KAAKqI,cAAc4vH,EAAexrH,IAStCw9F,EAAK/pG,UAAU+xB,IAAM,SAAUzjB,EAAMuX,GAEjC/lB,KAAKk4H,aAAel4H,KAAKk4H,aAAajmG,IAAIzjB,EAAMuX,QAAQ,GAO5DkkF,EAAK/pG,UAAUi4H,iBAAmB,SAAU/0H,GACpCpD,KAAKoD,QAAQ8B,UAAUmB,SAAS,aAChCjD,EAAQ8B,UAAU4G,IAAI,aAO9Bm+F,EAAK/pG,UAAUk4H,mBAAqB,WAChC,IAAIC,EAAkBr4H,KAAKyhF,gBAAgBzhF,KAAKgyF,UAAUrxF,OAAS,GAAGkrB,KACtE,OAAOwsG,GAOXpuB,EAAK/pG,UAAUo4H,WAAa,WACxB,IAAIztH,EAAU7K,KAAKg6C,aAAa9tC,cAAc,IAAM,QAChDrB,EAAQozC,cAAgBpzC,EAAQvB,eAChCtJ,KAAKwpD,aAAarO,gBAClBtwC,EAAQ9D,MAAMg3C,UAAY,SAUlCksD,EAAK/pG,UAAUq4H,wBAA0B,SAAU9/G,GAC/C,IAAIwuG,EAASjnH,KAAK87B,0BAA0B,GAC5CrjB,EAAyB,kBAAVA,EAAqBA,EAAM,GAAKwuG,GAAUxuG,EAEzD,IADA,IAAI0e,EAAOn3B,KAAKyhF,gBACPzgF,EAAI,EAAGA,EAAIm2B,EAAKx2B,OAAQK,IAC7B,IAAIm2B,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAK4mH,cAAerhG,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAK6yE,aAArF,CAGA,IAAIg0C,EAAUthG,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAKia,KAAK,GAAKo7F,GAIzD,GAHIA,EAAOhjH,MAAM,KAAKtD,OAAS,IAC3B83H,EAAU,gBAA4BxR,EAAQ9vF,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAKia,OAE/E4sG,IAAYhgH,EACZ,OAAO0e,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAKnF,MAGhD,OAAQ,GAQZw9F,EAAK/pG,UAAU66B,6BAA+B,SAAUlJ,EAAO+H,GAC3D,IAAIrK,EACJvvB,KAAK4kG,YAAc,GACnB5kG,KAAKo6G,kBAAkBp6G,KAAKmvB,SAE5B,IADA,IAAIqiG,EAAQxxH,KAAK4kG,YACR5jG,EAAI,EAAGA,EAAIwwH,EAAM7wH,OAAQK,IAC9B,IAAM44B,GAAgB/H,IAAU2/F,EAAM7/G,SAAS3Q,EAAE4Q,WAAY,KAAKigB,OAC7D+H,GAAgB43F,EAAM7/G,SAAS3Q,EAAE4Q,WAAY,KAAK2nB,mBAC/C1H,IAAU2/F,EAAM7/G,SAAS3Q,EAAE4Q,WAAY,KAAKmgB,gBAAkB,CAClExC,EAASiiG,EAAM7/G,SAAS3Q,EAAE4Q,WAAY,KACtC,MAGR,OAAO2d,GAQX06E,EAAK/pG,UAAUq7B,2BAA6B,SAAUpH,GAClD,IAAI5E,EACJvvB,KAAK4kG,YAAc,GACnB5kG,KAAKo6G,kBAAkBp6G,KAAKmvB,SAE5B,IADA,IAAIqiG,EAAQxxH,KAAK4kG,YACR5jG,EAAI,EAAGA,EAAIwwH,EAAM7wH,OAAQK,IAC1BmzB,IAAQq9F,EAAM7/G,SAAS3Q,EAAE4Q,WAAY,KAAKuiB,MAC1C5E,EAASiiG,EAAM7/G,SAAS3Q,EAAE4Q,WAAY,MAG9C,OAAO2d,GAOX06E,EAAK/pG,UAAUw4H,mBAAqB,WAChC,GAAK14H,KAAKw6B,gBAAkBx6B,KAAKg0B,eAAe7E,QAAQxuB,QAAWX,KAAKyzB,eAAelzB,IAAII,OAAQ,CAC/F,IAAI2uB,EAAQtvB,KAAKk6G,aAAaruF,KAAKuK,eAAc,GACjD,OAAIp2B,KAAKovB,YAAcpvB,KAAKk6G,aAAaruF,KAAKyN,YAAct5B,KAAKovB,sBAAsB,OAC5EpvB,KAAKk6G,aAAaruF,KAAK+J,QAAQ51B,KAAKovB,WAAYE,GAGnDtvB,KAAKovB,sBAAsB,OACpBpvB,KAAKovB,WAAWyD,aAAavD,GAG7B,IAAI,OAAYtvB,KAAKovB,WAAYE,GAAOuD,aAAavD,GAIxE,MAAO,IAEX26E,EAAK/pG,UAAUy4H,aAAe,WAC1B,IAAIz8E,EAAY,OAAQA,UAAUr6B,cAClC,MAAO,6BAA6BpE,KAAKy+B,IAS7C+tD,EAAK/pG,UAAUwzH,SAAW,SAAUvmH,GAC5BnN,KAAK24H,iBACA,OAAOC,OAMR9rH,aAAa,OAAO8rH,OACpB,OAAOA,MAAQ,KACf54H,KAAKwzH,gBAAgBrmH,GACrBnN,KAAK4Z,OAAO,QAAkBzM,IAR9B,OAAOyrH,MAAQxrH,YAAW,WACtB,OAAOwrH,MAAQ,OAChB,OAef3uB,EAAK/pG,UAAU24H,UAAY,SAAUC,GACjC,MAAO,GAAKA,EAAS94H,KAAKysG,UAO9BxC,EAAK/pG,UAAU64H,mBAAqB,SAAU5kG,GAC1C,IAAI6kG,EACA7hG,EAAO,GACP8hG,EAAU,GAAGvrH,MAAMpK,KAAKtD,KAAKg6C,aAAa9tC,cAAc,QAAgB0U,UACxE5gB,KAAKo6C,YACLjjB,EAAO,GAAGzpB,MAAMpK,KAAKtD,KAAKq6C,mBAAmBnuC,cAAc,QAAgB0U,UAC3EuW,EAAOA,EAAK8X,OAAOgqF,IAGnB9hG,EAAO8hG,EAEX,IAAK,IAAIprH,EAAK,EAAGqrH,EAAS/hG,EAAMtpB,EAAKqrH,EAAOv4H,OAAQkN,IAAM,CACtD,IAAIwpB,EAAM6hG,EAAOrrH,GACjB,GAAIwpB,EAAI3sB,aAAa,cAAgBypB,EAAK,CACtC6kG,EAAS3hG,EACT,OAGR,OAAO2hG,GAOX/uB,EAAK/pG,UAAUi5H,iBAAmB,WAE9B,IADA,IAAI5hG,EAAO,GACF1pB,EAAK,EAAGhK,EAAK7D,KAAK4kG,YAAa/2F,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC1D,IAAIqrB,EAAMr1B,EAAGgK,IACO,IAAhBqrB,EAAItC,SACJW,EAAKlrB,KAAK6sB,GAGlB,OAAO3B,GAQX0yE,EAAK/pG,UAAUk5H,gCAAkC,SAAUC,GACvD,GAAIr5H,KAAKwyB,cACAxyB,KAAKujF,eAAoD,WAAnCvjF,KAAKwjF,iBAAiBC,WAA4BzjF,KAAKujF,eAAgB,CAC9F,IAAI+1C,EAAW,GACuB,IAAlCD,EAAgBr1H,QAAQ,OACxBq1H,EAAkB1nH,SAAS0nH,EAAiB,IAAM,IAAMr5H,KAAKoD,QAAQkG,cAEzE,IAAIiwH,EAAmBv5H,KAAKw5H,sBAAwBx5H,KAAKu6C,eACzD,GAAI8+E,EAAkBE,EAAkB,CACpC,IAAIle,EAAgB,EACpBA,EAAgBge,EAAkBr5H,KAAKw5H,sBACvCF,EAAYje,EAAgBr7G,KAAKu6C,eAErC,GAAI++E,EAAW,EACX,OAAOnwH,KAAKo3D,MAAM+4D,GAI9B,OAAO,GAEXrvB,EAAK/pG,UAAUs5H,oBAAsB,WACjC,IAAIn0H,EAAS,EAgBb,GAfK,eAAkBrF,KAAKq6C,mBAAmB/wC,gBAC3CjE,GAAUrF,KAAKq6C,mBAAmB/wC,cAElCtJ,KAAKi5C,UAAY,eAAkBj5C,KAAKoD,QAAQ8I,cAAc,cAAc5C,gBAC5EjE,GAAUrF,KAAKoD,QAAQ8I,cAAc,cAAc5C,cAEnDtJ,KAAKwyB,cAAgB,eAAkBxyB,KAAKoD,QAAQ8I,cAAc,gBAAgB5C,gBAClFjE,GAAUrF,KAAKoD,QAAQ8I,cAAc,gBAAgB5C,cAErDtJ,KAAK2uG,oBAAsB,eAAkB3uG,KAAKoD,QAAQ8I,cAAc,mBAAmB5C,gBAC3FjE,GAAUrF,KAAKoD,QAAQ8I,cAAc,mBAAmB5C,cAExDtJ,KAAK0yB,eAAiB1yB,KAAK2yB,cAAc8sB,eAAiB,eAAkBz/C,KAAKoD,QAAQ8I,cAAc,oBAAoB5C,gBAC3HjE,GAAUrF,KAAKoD,QAAQ8I,cAAc,oBAAoB5C,cAEzDtJ,KAAKo3B,WAAWz2B,OAAS,IAAM,eAAkBX,KAAKoD,QAAQ8I,cAAc,iBAAiB5C,cAC7F,IAAK,IAAItI,EAAI,EAAGA,EAAIhB,KAAKoD,QAAQ+U,uBAAuB,gBAAgBxX,OAAQK,IAC5EqE,GAAUrF,KAAKoD,QAAQ+U,uBAAuB,gBAAgBxG,SAAS3Q,EAAE4Q,WAAY,KAAKtI,aAGlG,OAAOjE,GAUX4kG,EAAK/pG,UAAUu5H,iBAAmB,SAAUC,EAAYC,GACpD,OAAO,OAASviG,WAAWsiG,EAAWlrH,KAAKqT,eAAe83G,EAAaD,EAAW7nG,QAStFo4E,EAAK/pG,UAAU05H,kBAAoB,SAAUx8F,GACzCp9B,KAAK65H,SAAU,EACf75H,KAAK85H,WAAW18F,IASpB6sE,EAAK/pG,UAAU65H,gBAAkB,SAAU38F,GACvCp9B,KAAK65H,SAAU,EACf75H,KAAK85H,WAAW18F,IASpB6sE,EAAK/pG,UAAU85H,gBAAkB,SAAU58F,GACvCp9B,KAAK65H,SAAU,EACf75H,KAAK85H,WAAW18F,IAOpB6sE,EAAK/pG,UAAU45H,WAAa,SAAU18F,GAElC,IAAIgpE,EAAOpmG,KACPsvB,EAAQ82E,EAAKv2E,gBAAgBuG,eAAc,GAC3C5G,GAAQ,IAAI,QAAaiO,aAAa,IAAI,OAAY,CAAEL,IAAK,KAAO9N,GACpEsI,EAAU8F,KAAKC,MAAMnO,EAAM3D,MAE3BouG,EAAYv8F,KAAKC,MAAM39B,KAAKgV,aAAa,CAAC,gBAAiB,cAAe,eAAgB,eAAgB,iBAAkB,mBAAoB,aAChJ,iBAAkB,gBAAiB,UAAW,SAAU,oBACxDklH,EAAU,CAAC,QAAS,aAAc,OAAQ,SAAU,UAAW,kBAAmB,kBAClF,WAAY,QAAS,QAAS,YAAa,kBAAmB,WAClED,EAAUjmG,eAAe7E,QAAUyI,EAAQzE,MAC3C8mG,EAAUxmG,eAAe9B,OAASiG,EAAQ/D,QAAU+D,EAAQ/D,OAAO,GAAG,WAAa,GACnFomG,EAAUjhG,aAAa7J,QAAUyI,EAAQuiG,OACzCF,EAAU9qG,QAAUnvB,KAAKo6H,cAAcH,EAAU9qG,QAAS+qG,GAC1D,IAAIjqF,EAAOjwC,KAAKuE,cAAc,OAAQ,CAAE+G,GAAI,aAAc4D,OAAQ,kBAC9DmrH,EAAYr6H,KAAKuE,cAAc,QAAS,CAAE+G,GAAI,YAAa0D,MAAO,CAAEgB,KAAM,eAC9EqqH,EAAU5hH,MAAQilB,KAAKkqC,UAAUqyD,GACjChqF,EAAK6rC,OAAS,OACd7rC,EAAKtvB,OAASyc,EACd6S,EAAKvrC,YAAY21H,GACjBzsH,SAAS6B,KAAK/K,YAAYurC,GAC1BA,EAAKqqF,SACLrqF,EAAK9qC,UAQT8kG,EAAK/pG,UAAUk6H,cAAgB,SAAUjrG,EAAS+qG,GAC9C,IAAK,IAAIl5H,EAAI,EAAGA,EAAImuB,EAAQxuB,OAAQK,IAAK,CACrC,IAAIuuB,EAASvvB,KAAK86B,eAAe3L,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKuiB,KACrEhF,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKswC,WAAa3yB,EAAO2yB,WACnD,eAAkB3yB,EAAOqnB,YAC1BznB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKglC,SAAW,QAE/CznB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK0K,SACpC6S,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK0K,OAAS,eAAgBtc,KAAKu6H,UAAUprG,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK0K,QAAS6S,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKpD,KAAMxO,KAAK65H,QAAS,SAEjL1qG,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKud,SACpCnvB,KAAKo6H,cAAcjrG,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKud,QAAS+qG,GAGpE,IADA,IAAI9kH,EAAO3V,OAAO2V,KAAK+Z,EAAQxd,SAAS3Q,EAAE4Q,WAAY,MAC7C0lB,EAAI,EAAGA,EAAIliB,EAAKzU,OAAQ22B,IACzB4iG,EAAQl2H,QAAQoR,EAAKzD,SAAS2lB,EAAE1lB,WAAY,MAAQ,UAC7Cud,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKwD,EAAKzD,SAAS2lB,EAAE1lB,WAAY,MAInF,OAAOud,GAEX86E,EAAK/pG,UAAUq6H,UAAY,SAAUj+G,GACjC,MAA2B,kBAAb,EAAyB,eAAkBA,EAAOA,QAC5CA,EAAOC,SAAvBD,EAAOA,OAA2BA,GAM1C2tF,EAAK/pG,UAAUqmH,uBAAyB,WACpC,IAAIiU,EAAa,aACjB,OAAiC,IAA1Bx6H,KAAK,GAAKw6H,IAOrBvwB,EAAK/pG,UAAUu6H,eAAiB,SAAUl6H,EAAKilH,GAC3C,IAAIz/F,EAAO,CACPgI,YAAa,OAAQlC,KAAM25F,GAE/BxlH,KAAKo9F,cACLp9F,KAAK4Z,OAAO,QAAmBmM,GAC/B/lB,KAAKsV,WAMT20F,EAAK/pG,UAAUqwB,kBAAoB,WAC/BvwB,KAAK+H,WACL,IAAI2yH,EAAa16H,KAAK6vB,gBAAgByN,yBAClCo9F,EAAWzqG,WACXjwB,KAAK6vB,gBAAgBG,uBAAuB,IAC5C0qG,EAAWxqG,aAGXlwB,KAAK6vB,gBAAgBG,uBAAuB,CAAED,eAAe,KACzD/vB,KAAKw8F,eAAiBx8F,KAAK+6G,eAC3B/6G,KAAKk6G,aAAavmG,WAS9Bs2F,EAAK/pG,UAAUy6H,uBAAyB,SAAU9oG,GAC9C,IAAIgqB,EAAS77C,KAAK67F,uBAAuBhqE,GACzC,GAAIgqB,EAAQ,CACR,IAAIv7C,EAASu7C,EAAO3vC,cAAc,oBAC9B0uH,EAAY56H,KAAKoD,QAAQ8I,cAAc,mBAC3C,GAAI5L,GAAUs6H,EAAW,CACrB,IAAIC,EAAU76H,KAAKoD,QAAQgE,wBACvB0zH,EAAUx6H,EAAO8G,wBACjBwzH,IACKA,EAAUpxH,YAAcsxH,EAAQloE,MAASioE,EAAQjoE,MAClDgoE,EAAU7zH,MAAM/B,MAAS81H,EAAQloE,MAAQgoE,EAAUpxH,YAAeqxH,EAAQ71H,MAAM4M,WAAa,KAG7FgpH,EAAU7zH,MAAM/B,MAAQ81H,EAAQloE,MAAQioE,EAAQ71H,MAAM4M,WAAa,SAYvFq4F,EAAK/pG,UAAUkhF,gBAAkB,SAAU25C,GACvC,IAAIj6C,EAAe9gF,KAAK+gF,eAAiB/gF,KAAK+gF,cAAcC,eAAiBhhF,KAAK+gF,cAAcC,cAAc74E,QAC9G,GAAI24E,GAAgB9gF,KAAK,WACrBA,KAAK+gF,cAAcC,cAAc,WAAahhF,KAAK+gF,cAAcC,cAAc,WAC1E/xC,OAAOjvC,KAAK,YACjBA,KAAK+gF,cAAcC,cAAcI,gBAAgB25C,GACjD/6H,KAAK,gBAAauL,MAEjB,CACD,IAAIqiD,EAAU,UACd5tD,KAAK4Z,OAAO,sBAAuB5Z,KAAK,GAAK4tD,IAC7C5tD,KAAK0L,qBAAqBqvH,KASlC9wB,EAAK/pG,UAAU86H,YAAc,SAAU9+F,GACnCl8B,KAAKi7H,kBAAkB/+F,IAQ3B+tE,EAAK/pG,UAAUg7H,iBAAmB,SAAUh/F,GACxCl8B,KAAKm7H,sBAAsBj/F,IAE/B+tE,EAAK/pG,UAAUi7H,sBAAwB,SAAUj/F,GAC7C,IAAIguE,EAAUlqG,KACd,GAAKA,KAAKo7H,gBAUN,IAFA,IAAIC,EAAa,CAAC,OAAuB,OAAyB,QAC9DC,EAAWt7H,KAAK87B,0BAA0B,GACrC96B,EAAI,EAAGA,EAAIq6H,EAAW16H,OAAQK,IAC/Bk7B,EAAQm/F,EAAW1pH,SAAS3Q,EAAE4Q,WAAY,OAC1C,eAAe5R,KAAMk8B,EAASm/F,EAAW1pH,SAAS3Q,EAAE4Q,WAAY,KAAM0pH,QAX9Et7H,KAAKo7H,gBAAkB37H,OAAOquG,OAAO,CAAE3xE,aAAc,GAAIE,eAAgB,GAAID,eAAgB,IAAMF,GACnG9uB,YAAW,WACP88F,EAAQ+wB,kBAAkB/wB,EAAQkxB,iBAClClxB,EAAQkxB,gBAAkB,OAC3Bp7H,KAAKktG,eAYhBjD,EAAK/pG,UAAU+6H,kBAAoB,SAAU/+F,GACzC,IAAIguE,EAAUlqG,KACVs7H,EAAWt7H,KAAK87B,0BAA0B,GAC9CI,EAAUz8B,OAAOquG,OAAO,CAAE3xE,aAAc,GAAIE,eAAgB,GAAID,eAAgB,IAAMF,GACtF,IAAI9L,EAAUpwB,KAAK6vB,gBAAgByM,YAAYJ,EAASo/F,EAAU,GAAIt7H,KAAK6vB,gBAAgBuG,gBAAgBmG,iBACvGv8B,KAAK6vB,gBAAgByJ,WACrBlJ,EAAQC,MAAK,WACT65E,EAAQqxB,gBAIZv7H,KAAKu7H,cAGbtxB,EAAK/pG,UAAUq7H,WAAa,WACxB,IAAIrxB,EAAUlqG,KACVw7H,EAAY99F,KAAKC,MAAMD,KAAKkqC,UAAU5nE,KAAKq8F,0BAC3CzmE,EAAU51B,KAAK6vB,gBAAgB+F,QAAQ,GAAI51B,KAAK6vB,gBAAgBuG,gBAAgBmG,iBACpF3G,EAAQvF,MAAK,SAAUljB,GACnB+8F,EAAQuxB,YAAYtuH,EAAE6jB,OAAQwqG,EAAWruH,EAAE49B,WAGnDk/D,EAAK/pG,UAAUw7H,iBAAmB,SAAUrkG,GACxC,IAAIioD,EAAKt/E,KAAK+4H,mBAAmB1hG,EAAIlD,KACrC,gBAAOmrD,IAEX2qB,EAAK/pG,UAAUu7H,YAAc,SAAUzqG,EAAQwqG,EAAWzwF,GAatD,IAZA,IAWmB4wF,EAXfzxB,EAAUlqG,KACVslH,EAAStlH,KAAKyhF,gBACd65C,EAAWt7H,KAAK87B,0BAA0B,GAC1C8/F,EAAU,SAAU56H,GACfgwB,EAAOiD,QAAO,SAAU9mB,GAAK,OAAOA,EAAE,GAAKmuH,KAAchW,EAAO3zG,SAAS3Q,EAAE4Q,WAAY,KAAKia,KAAK,GAAKyvG,MAAc36H,SACrHk7H,EAAOH,iBAAiBpW,EAAO3zG,SAAS3Q,EAAE4Q,WAAY,MACtD0zG,EAAO54G,OAAO1L,EAAG,GACjBA,KAEJ26H,EAAU36H,GAEV66H,EAAS77H,KACJgB,EAAI,EAAGA,EAAIskH,EAAO3kH,OAAQK,IAC/B46H,EAAQ56H,GACRA,EAAI26H,EAER,IAAIG,EAAU,SAAU96H,GACpB,IAAI+6H,EACJP,EAAUvnG,QAAO,SAAU9mB,GACnBA,EAAE,GAAKmuH,KAActqG,EAAOrf,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAK0pH,KACzDnuH,IAAM6jB,EAAOrf,SAAS3Q,EAAE4Q,WAAY,MACpCs4F,EAAQqY,WAAWvxF,EAAOrf,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAK0pH,GAAWtqG,EAAOrf,SAAS3Q,EAAE4Q,WAAY,MAExGmqH,GAAa,MAGhBA,GACDC,EAAOC,iBAAiBjrG,EAAOrf,SAAS3Q,EAAE4Q,WAAY,KAAM5Q,IAGhEg7H,EAASh8H,KACb,IAASgB,EAAI,EAAGA,EAAIgwB,EAAOrwB,OAAQK,IAC/B86H,EAAQ96H,GAEZhB,KAAKo8F,gBAAkBprE,EACvB,IAAImG,EAAO,GAAGzpB,MAAMpK,KAAKtD,KAAK4+C,kBAAkBzmC,uBAAuB,SACvE,gBAAcnY,KAAMA,KAAKyhF,gBAAiBtqD,GAC1C,gBAAen3B,MACXA,KAAKwyB,aACLxyB,KAAK4Z,OAAO,QAA4B,CAAEC,OAAQ,QAASmB,WAAY,CAAEmhF,kBAAmBpxD,MAGpGk/D,EAAK/pG,UAAU+7H,iBAAmB,SAAUpwG,EAAMpf,GAC9C,IAAI4qB,EAAM,IAAI,OAAYr3B,KAAK6uB,eAAgB,KAAM7uB,MACjDghB,EAAQ,IAAI,QAAkBhhB,MAC9Bk8H,EAAYl7G,EAAMs/B,aAAa,CAACz0B,IAChCyzD,EAAKjoD,EAAI1jB,OAAOuoH,EAAU,GAAIl8H,KAAK02B,cACvC12B,KAAKm8H,aAAaD,EAAU,GAAIzvH,GAChC,IAAI2lC,EAAQpyC,KAAK4+C,kBAAkB1yC,cAAc,QACjD,GAAIkmC,EAAMlmC,cAAc,eAAgB,CACpC,IAAIivF,EAAW/oD,EAAMlmC,cAAc,eACnCivF,EAAS1nD,WAAWoB,YAAYsmD,GAC5Bn7F,KAAKo6C,YAAcp6C,KAAKoD,QAAQ8I,cAAc,uBAC9ClM,KAAKoD,QAAQ8I,cAAc,sBAAsBhH,UAAUC,OAAO,qBAItEitC,EADApyC,KAAKo6C,YAAc3tC,EAAQzM,KAAKo6C,WACxBp6C,KAAKq6C,mBAAmBnuC,cAAc,QAGtClM,KAAKg6C,aAAa9tC,cAAc,QAE5CkmC,EAAQpyC,KAAKg6C,aAAa9tC,cAAc,QACxCkmC,EAAM1tC,YAAY46E,IAEtB2qB,EAAK/pG,UAAUi8H,aAAe,SAAU9kG,EAAK5qB,GACzCzM,KAAKyhF,gBAAgB/0E,OAAOD,EAAO,EAAG4qB,IAM1C4yE,EAAK/pG,UAAUk8H,gCAAkC,WAE7C,IADA,IAAIjlG,EAAOn3B,KAAKyhF,gBACPzgF,EAAI,EAAGiiB,EAAMkU,EAAKx2B,OAAQK,EAAIiiB,EAAKjiB,KACnCm2B,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAKkuE,WAAa3oD,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAK8vC,iBACG,SAAhF1hD,KAAK+4H,mBAAmB5hG,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAKuiB,KAAKptB,MAAMC,QACvEmwB,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAKglB,SAAU,EAG3CO,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAKglB,SAAU,GAWvDqzE,EAAK/pG,UAAUgL,SAAW,SAAUuN,GAChC,OAAIzY,KAAKgL,oBACE,OAAmBE,SAASuN,GAEhCA,GAOXwxF,EAAK/pG,UAAUm8H,UAAY,SAAUh3H,GAUjC,OAFIA,EAPC0rC,OAAOurF,UAAUj3H,KAAoC,IAAzBA,EAAOrB,QAAQ,KAGtC+sC,OAAOurF,UAAUj3H,IAA2B,SAAhBrF,KAAKqF,OAI9BrF,KAAKqF,OAHLsM,SAAStM,EAAQ,IAHjBsM,SAAStM,EAAQ,IAAM,IAAMrF,KAAKoD,QAAQkG,aAQhDjE,GAOX4kG,EAAK/pG,UAAUq8H,sBAAwB,WACnC,OAAOv8H,KAAKw8F,cAAcpL,YAO9B6Y,EAAK/pG,UAAUs8H,qBAAuB,WAClC,OAAOx8H,KAAK+6G,aAAa3pB,YAO7B6Y,EAAK/pG,UAAUu8H,sBAAwB,WACnC,OAAOz8H,KAAKq6C,mBAAmBnuC,cAAc,SAOjD+9F,EAAK/pG,UAAUw8H,uBAAyB,WACpC,OAAO18H,KAAKg6C,aAAa9tC,cAAc,SAO3C+9F,EAAK/pG,UAAUy8H,qBAAuB,WAClC,OAAO38H,KAAKq6C,mBAAmBnuC,cAAc,SAOjD+9F,EAAK/pG,UAAU08H,0BAA4B,WACvC,OAAO58H,KAAKg6C,aAAa9tC,cAAc,SAO3C+9F,EAAK/pG,UAAU28H,0BAA4B,WACvC,OAAO78H,KAAKq6C,mBAAmBnuC,cAAc,SAOjD+9F,EAAK/pG,UAAU48H,2BAA6B,WACxC,OAAO98H,KAAKg6C,aAAa9tC,cAAc,SAO3C+9F,EAAK/pG,UAAUy2F,2BAA6B,SAAUomC,GAC9C/8H,KAAKq7F,cACLr7F,KAAKq7F,aAAa2hC,iBAAiBD,GAAsC,aAA1B/8H,KAAKsjF,mBAQ5D2mB,EAAK/pG,UAAUw2F,yBAA2B,SAAUqmC,GAC5C/8H,KAAK4sH,YACL5sH,KAAK4sH,WAAWqQ,eAAeF,GAAsC,aAA1B/8H,KAAKsjF,mBAQxD2mB,EAAK/pG,UAAUg9H,kCAAoC,SAAUH,GACrD/8H,KAAKmxH,qBACLnxH,KAAKmxH,oBAAoBgM,wBAAwBJ,GAAsC,aAA1B/8H,KAAKsjF,mBAQ1E2mB,EAAK/pG,UAAUk9H,yBAA2B,WAClCp9H,KAAK45C,kBACL55C,KAAK22F,4BAA2B,IAQxCsT,EAAK/pG,UAAUm9H,uBAAyB,WAChCr9H,KAAK45C,kBACL55C,KAAK02F,0BAAyB,IAQtCuT,EAAK/pG,UAAUokH,yBAA2B,SAAUgZ,GAGhD,IAFA,IAAI/lG,EAAO,GACPgmG,EAAWD,EAAsBt9H,KAAK02B,aAAe12B,KAAK4kG,YACrD/2F,EAAK,EAAG2vH,EAAaD,EAAU1vH,EAAK2vH,EAAW78H,OAAQkN,IAAM,CAClE,IAAIqrB,EAAMskG,EAAW3vH,GACjBqrB,EAAItC,SACJW,EAAKlrB,KAAK6sB,GAGlB,OAAO3B,GAEX0yE,EAAK/pG,UAAUguG,uBAAyB,WAChCluG,KAAK63B,yBAA2B73B,KAAK2yB,cAAcxD,QAAQxuB,SAAWX,KAAK2yB,cAAcmL,4BACrF99B,KAAK2yB,cAAc6F,mBACvBx4B,KAAKiL,cAAc,CAAE0nB,cAAe,CAAEmL,2BAA2B,KAAU,IAInF,GAAW,CACP,eAAS,KACVmsE,EAAK/pG,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,iBAAa,GAChC,GAAW,CACP,eAAS,KACV+pG,EAAK/pG,UAAW,eAAW,GAC9B,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,oBAAgB,GACnC,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,mBAAe,GAClC,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,sBAAkB,GACrC,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,qBAAiB,GACpC,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,0BAAsB,GACzC,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,2BAAuB,GAC1C,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,qBAAiB,GACpC,GAAW,CACP,eAAQ,GAAI,KACb+pG,EAAK/pG,UAAW,wBAAoB,GACvC,GAAW,CACP,eAAQ,GAAI,KACb+pG,EAAK/pG,UAAW,sBAAkB,GACrC,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,mBAAe,GAClC,GAAW,CACP,eAAQ,GAAI,KACb+pG,EAAK/pG,UAAW,oBAAgB,GACnC,GAAW,CACP,eAAQ,GAAI,KACb+pG,EAAK/pG,UAAW,wBAAoB,GACvC,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,4BAAwB,GAC3C,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,4BAAwB,GAC3C,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,kCAA8B,GACjD,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,+BAA2B,GAC9C,GAAW,CACP,eAAQ,GAAI,KACb+pG,EAAK/pG,UAAW,sBAAkB,GACrC,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,oBAAgB,GACnC,GAAW,CACP,eAAS,aACV+pG,EAAK/pG,UAAW,gBAAY,GAC/B,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,yBAAqB,GACxC,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,wBAAoB,GACvC,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,sBAAkB,GACrC,GAAW,CACP,eAAQ,GAAI,KACb+pG,EAAK/pG,UAAW,oBAAgB,GACnC,GAAW,CACP,eAAQ,GAAI,KACb+pG,EAAK/pG,UAAW,8BAA0B,GAC7C,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,sBAAkB,GACrC,GAAW,CACP,gBAAU,IACX+pG,EAAK/pG,UAAW,wBAAoB,GACvC,GAAW,CACP,eAAQ,GAAI,KACb+pG,EAAK/pG,UAAW,yBAAqB,GACxC,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,sBAAkB,GACrC,GAAW,CACP,eAAS,eACV+pG,EAAK/pG,UAAW,wBAAoB,GACvC,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,wBAAoB,GACvC,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,uBAAmB,GACtC,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,qBAAiB,GACpC,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,2BAAuB,GAC1C,GAAW,CACP,eAAQ,GAAI,KACb+pG,EAAK/pG,UAAW,uBAAmB,GACtC,GAAW,CACP,eAAQ,GAAI,KACb+pG,EAAK/pG,UAAW,sBAAkB,GACrC,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,qBAAiB,GACpC,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,2BAAuB,GAC1C,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,sBAAkB,GACrC,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,eAAW,GAC9B,GAAW,CACP,eAAQ,GAAI,KACb+pG,EAAK/pG,UAAW,qBAAiB,GACpC,GAAW,CACP,eAAQ,GAAI,KACb+pG,EAAK/pG,UAAW,oBAAgB,GACnC,GAAW,CACP,eAAW,GAAI,KAChB+pG,EAAK/pG,UAAW,kBAAc,GACjC,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,yBAAqB,GACxC,GAAW,CACP,eAAQ,GAAI,KACb+pG,EAAK/pG,UAAW,6BAAyB,GAC5C,GAAW,CACP,gBAAS,IACV+pG,EAAK/pG,UAAW,yBAAqB,GACxC,GAAW,CACP,eAAS,SACV+pG,EAAK/pG,UAAW,cAAU,GAC7B,GAAW,CACP,eAAS,SACV+pG,EAAK/pG,UAAW,aAAS,GAC5B,GAAW,CACP,eAAS,YACV+pG,EAAK/pG,UAAW,iBAAa,GAChC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,mBAAe,GAClC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,2BAAuB,GAC1C,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,iBAAa,GAChC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,mBAAe,GAClC,GAAW,CACP,eAAS,aACV+pG,EAAK/pG,UAAW,iBAAa,GAChC,GAAW,CACP,eAAS,aACV+pG,EAAK/pG,UAAW,0BAAsB,GACzC,GAAW,CACP,eAAS,KACV+pG,EAAK/pG,UAAW,kBAAc,GACjC,GAAW,CACP,eAAS,OACV+pG,EAAK/pG,UAAW,iBAAa,GAChC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,aAAS,GAC5B,GAAW,CACP,eAAS,QACV+pG,EAAK/pG,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,mBAAe,GAClC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,eAAW,GAC9B,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,wBAAoB,GACvC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,qBAAiB,GACpC,GAAW,CACP,eAAS,IACV+pG,EAAK/pG,UAAW,kBAAc,GACjC,GAAW,CACP,eAAS,IACV+pG,EAAK/pG,UAAW,qBAAiB,GACpC,GAAW,CACP,eAAS,KACV+pG,EAAK/pG,UAAW,gBAAY,GAC/B,GAAW,CACP,eAAS,QACV+pG,EAAK/pG,UAAW,uBAAmB,GACtC,GAAW,CACP,eAAS,KACV+pG,EAAK/pG,UAAW,qBAAiB,GACpC,GAAW,CACP,eAAS,KACV+pG,EAAK/pG,UAAW,kCAA8B,GACjD,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,eAAW,GAC9B,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,iBAAa,GAChC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,YAAQ,GAC3B,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,mBAAe,GAClC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,iBAAa,GAChC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,mBAAe,GAClC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,mBAAe,GAClC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,wBAAoB,GACvC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,kBAAc,GACjC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,kBAAc,GACjC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,mBAAe,GAClC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,wBAAoB,GACvC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,8BAA0B,GAC7C,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,iCAA6B,GAChD,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,mCAA+B,GAClD,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,6BAAyB,GAC5C,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,4BAAwB,GAC3C,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,0BAAsB,GACzC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,gCAA4B,GAC/C,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,2BAAuB,GAC1C,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,0BAAsB,GACzC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,eAAW,GAC9B,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,eAAW,GAC9B,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,+BAA2B,GAC9C,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,gCAA4B,GAC/C,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,gBAAY,GAC/B,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,mBAAe,GAClC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,mBAAe,GAClC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,iBAAa,GAChC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,gBAAY,GAC/B,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,gBAAY,GAC/B,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,iBAAa,GAChC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,mBAAe,GAClC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,gBAAY,GAC/B,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,kBAAc,GACjC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,kBAAc,GACjC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,wBAAoB,GACvC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,kBAAc,GACjC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,mBAAe,GAClC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,6BAAyB,GAC5C,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,0BAAsB,GACzC,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,2BAAuB,GAC1C,GAAW,CACP,kBACD+pG,EAAK/pG,UAAW,6BAAyB,GAC5C+pG,EAAOqD,EAAS,GAAW,CACvB,QACDrD,GACIA,EAnvMc,CAovMvB,S,oCC/pNF,8DAAI5qG,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxCK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAM5D68H,EAAQ,UACRz+F,EAAW,sBACX0+F,EAAQ,UACRC,EAAgB,SAChBlrF,EAAQ,UACRC,EAAS,qBACTkrF,EAAc,iBACdC,EAAsB,gBACtBp8H,EAAM,QACNkxC,EAAU,qBACV97B,EAAgB,CAAC,QAAS,QAAS,QAAS,WAAY,WAAY,OAAQ,QAAS,MAYrFinH,EAA0B,SAAUj7H,GASpC,SAASi7H,EAAS36H,EAASC,GACvB,IAAIC,EAAQR,EAAOS,KAAKtD,KAAMmD,EAASC,IAAYpD,KAKnD,OAJAqD,EAAMoU,WAAY,EAClBpU,EAAM06H,cAAe,EACrB16H,EAAM26H,gBAAiB,EACvB36H,EAAM46H,YAAa,EACZ56H,EAqkBX,OAnlBAhE,EAAUy+H,EAAUj7H,GAgBpBi7H,EAAS59H,UAAUg+H,YAAc,SAAU1uG,EAAO2uG,GAC9C,IACI7pF,EACA8pF,EAAYp+H,KAAKg0C,aAAa77B,uBAAuBulH,GAAO,GAC5D,UACAppF,EAAat0C,KAAKg0C,aAAa77B,uBAAuBu6B,GAAQ,IAEpD,UAAVljB,GACI4uG,IACAA,EAAUl5H,UAAUC,OAAOw4H,GAC3BS,EAAUl5H,UAAU4G,IAAI2xH,IAExBnpF,IACAA,EAAWpvC,UAAUC,OAAO04H,GAC5BvpF,EAAWpvC,UAAU4G,IAAI8xH,IAEjB,OACZ59H,KAAKoD,QAAQ2vC,SAAU,GAClB/yC,KAAKoD,QAAQgmF,UAAY,eAAQppF,KAAKoD,QAAS,SAAW,eAAQpD,KAAKoD,QAAS,QAAQ8B,UAAUmB,SAAS,qBAAuBrG,KAAKi+H,aAAeE,GACvJn+H,KAAKoD,QAAQ2vC,SAAU,EACvB/yC,KAAKi+H,YAAa,IAEbj+H,KAAKoD,QAAQgmF,UAAY,eAAQppF,KAAKoD,QAAS,SAAW,eAAQpD,KAAKoD,QAAS,QAAQ8B,UAAUmB,SAAS,sBAChHrG,KAAKi+H,YAAa,IAGP,YAAVzuG,GACD4uG,GACA,gBAAY,CAACA,GAAY,CAACX,EAAOE,IAEjCrpF,GACA,gBAAY,CAACA,GAAa,CAACspF,EAAaC,IAEhC,QACZ79H,KAAKoD,QAAQ2vC,SAAU,GAClB/yC,KAAKoD,QAAQgmF,UAAY,eAAQppF,KAAKoD,QAAS,SAAW,eAAQpD,KAAKoD,QAAS,QAAQ8B,UAAUmB,SAAS,qBAAuBrG,KAAKi+H,aAAeE,GACvJn+H,KAAKoD,QAAQ2vC,SAAU,EACvB/yC,KAAKi+H,YAAa,IAEbj+H,KAAKoD,QAAQgmF,UAAY,eAAQppF,KAAKoD,QAAS,SAAW,eAAQpD,KAAKoD,QAAS,QAAQ8B,UAAUmB,SAAS,sBAChHrG,KAAKi+H,YAAa,KAIlBG,IACAA,EAAUl5H,UAAUC,OAAOs4H,GAC3BW,EAAUl5H,UAAU4G,IAAI6xH,IAExBrpF,IACAA,EAAWpvC,UAAUC,OAAOy4H,GAC5BtpF,EAAWpvC,UAAU4G,IAAI+xH,IAEjB,QACZ79H,KAAKoD,QAAQi7H,eAAgB,EAC7Br+H,KAAKq+H,eAAgB,IAG7BP,EAAS59H,UAAUooC,aAAe,SAAU55B,GACxC,GAA6B,UAAzBA,EAAMpO,OAAOoP,SAAuB1P,KAAKg+H,eAKzC,OAJIh+H,KAAKm2B,OACLn2B,KAAKk+H,YAAYl+H,KAAK+yC,QAAU,QAAU,gBAE9C/yC,KAAKg+H,gBAAiB,GAGG,SAAzBtvH,EAAMpO,OAAOoP,SAA+C,UAAzBhB,EAAMpO,OAAOoP,UAChD1P,KAAKg+H,gBAAiB,GAEtBh+H,KAAK+9H,eACL/9H,KAAK6zC,kBACL7zC,KAAK+9H,cAAe,GAEpB/9H,KAAKq+H,eACLr+H,KAAKk+H,YAAYl+H,KAAK+yC,QAAU,QAAU,WAC1C/yC,KAAKq+H,eAAgB,EACrBr+H,KAAKoD,QAAQi7H,eAAgB,GAExBr+H,KAAK+yC,SACV/yC,KAAKk+H,YAAY,WACjBl+H,KAAK+yC,SAAU,IAGf/yC,KAAKk+H,YAAY,SACjBl+H,KAAK+yC,SAAU,GAEnB,IAAIurF,EAAkB,CAAEvrF,QAAS/yC,KAAKu+H,qBAAoB,GAAQ7vH,MAAOA,GACzE1O,KAAKiI,QAAQ,SAAUq2H,GACvB5vH,EAAMuQ,mBAOV6+G,EAAS59H,UAAUsS,QAAU,WACzB,IAAInP,EAAQrD,KACRuzC,EAAUvzC,KAAKg0C,aACnBnxC,EAAO3C,UAAUsS,QAAQlP,KAAKtD,MAC1BA,KAAKuzC,UACLA,EAAUvzC,KAAKuzC,QACVvzC,KAAKoY,UACNpY,KAAKwzC,eAEY,UAAjBxzC,KAAK0P,SACD1P,KAAKg0C,cAAgBT,EAAQE,YAC7BF,EAAQE,WAAWjuB,aAAaxlB,KAAKoD,QAASmwC,GAElD,eAAOA,GACPvzC,KAAKoD,QAAQ2vC,SAAU,EACnB/yC,KAAKq+H,gBACLr+H,KAAKoD,QAAQi7H,eAAgB,GAEjC,CAAC,OAAQ,QAAS,YAAY3qF,SAAQ,SAAUnzC,GAC5C8C,EAAMD,QAAQwH,gBAAgBrK,QAIlC,CAAC,SAASmzC,SAAQ,SAAUnzC,GACxBgzC,EAAQ3oC,gBAAgBrK,MAE5BgzC,EAAQzoC,UAAY,GACpB9K,KAAKoD,QAAUmwC,EACXvzC,KAAK2zC,aACL,CAAC,YAAa,aAAc,SAASD,SAAQ,SAAUnzC,GACnD8C,EAAMD,QAAQ8B,UAAU4G,IAAIvL,MAEhC,gBAAS,gBAAiB,CAACP,MAAOA,KAAKoD,aAKvD06H,EAAS59H,UAAU0zC,aAAe,WAC9B5zC,KAAKyX,WAAY,GAErBqmH,EAAS59H,UAAU2zC,gBAAkB,WACjC,IAAIN,EAAUvzC,KAAKg0C,aACfT,GACAA,EAAQruC,UAAUC,OAAO,WAE7BnF,KAAKyX,WAAY,GAQrBqmH,EAAS59H,UAAU4U,cAAgB,WAC/B,MAAO,YAQXgpH,EAAS59H,UAAU6U,eAAiB,WAChC,OAAO/U,KAAKgV,aAAa,CAAC,UAAW,mBAEzC8oH,EAAS59H,UAAU8zC,WAAa,WAC5B,OAAIh0C,KAAKoD,SAAWpD,KAAKoD,QAAQue,cACtB3hB,KAAKoD,QAAQue,cAAcA,cAG3B,MAGfm8G,EAAS59H,UAAU6zC,SAAW,WAC1B,OAAI/zC,KAAKoD,QACEpD,KAAKoD,QAAQue,cAGb,MAGfm8G,EAAS59H,UAAUyD,WAAa,WACxB,eAAkB3D,KAAKk0C,uBACvBl0C,KAAKk0C,oBAAsBl0C,KAAK+yC,SAEhC/yC,KAAKgQ,MACLhQ,KAAKoD,QAAQuH,aAAa,OAAQ3K,KAAKgQ,MAEvChQ,KAAKyY,QACLzY,KAAKoD,QAAQuH,aAAa,QAAS3K,KAAKyY,OACpCzY,KAAKm2B,OAA+B,mBAAfn2B,KAAKyY,QAAsC,IAAfzY,KAAKyY,OACtDzY,KAAKiL,cAAc,CAAE,SAAW,IAAQ,IAG5CjL,KAAK+yC,SACL/yC,KAAKk+H,YAAY,SAAS,GAE1Bl+H,KAAKq+H,eACLr+H,KAAKk+H,cAELl+H,KAAKoY,UACLpY,KAAKq0C,eAGbypF,EAAS59H,UAAUi0C,YAAc,WAC7B,IAAIZ,EAAUvzC,KAAKoD,QAAQue,cACtB4xB,EAAQruC,UAAUmB,SAASssC,KAC5BY,EAAUvzC,KAAKuE,cAAc,MAAO,CAChCC,UAAWmuC,IAEf3yC,KAAKoD,QAAQqwC,WAAWjuB,aAAa+tB,EAASvzC,KAAKoD,UAEvD,IAAI0wC,EAAQ9zC,KAAKuE,cAAc,QAAS,CAAEyK,MAAO,CAAEulC,IAAKv0C,KAAKoD,QAAQkI,MACjE8yH,EAAYp+H,KAAKuE,cAAc,OAAQ,CAAEC,UAAW,WAAak5H,IAYrE,GAXAnqF,EAAQruC,UAAU4G,IAAI,aAClB9L,KAAKyF,WACL8tC,EAAQruC,UAAU4G,IAAIrK,GAEtBzB,KAAKyK,UACL,eAAS,CAAC8oC,GAAUvzC,KAAKyK,SAASoQ,QAAQ,OAAQ,KAAKtO,OAAOtI,MAAM,MAExEsvC,EAAQ7uC,YAAYovC,GACpBA,EAAMpvC,YAAY1E,KAAKoD,SACvB,eAAepD,KAAM8zC,GACrBA,EAAMpvC,YAAY05H,GACd,QAAiB,CACjB,IAAI9pF,EAAat0C,KAAKuE,cAAc,OAAQ,CAAEC,UAAWkuC,IAC9B,WAAvB1yC,KAAKi1C,cACLnB,EAAMpvC,YAAY4vC,GAGlBR,EAAMtuB,aAAa8uB,EAAY8pF,GAEnC,gBAAa9pF,EAAY,CAAEtxC,SAAU,IAAK4+B,gBAAgB,IAE1D5hC,KAAK8zC,OACL9zC,KAAKw0C,QAAQx0C,KAAK8zC,QAG1BgqF,EAAS59H,UAAUu0C,aAAe,WAC1Bz0C,KAAKyX,WACLzX,KAAKg0C,aAAa9uC,UAAU4G,IAAI,YAGxCgyH,EAAS59H,UAAUw0C,sBAAwB,SAAUvnC,GACjDnN,KAAK+9H,cAAe,EACpB,IAAIzpF,EAAat0C,KAAKg0C,aAAa77B,uBAAuBu6B,GAAQ,GAClE,eAAmBvlC,EAAGmnC,IAE1BwpF,EAAS59H,UAAUy0C,uBAAyB,SAAUxnC,GAClD,IAAImnC,EAAat0C,KAAK+zC,WAAW57B,uBAAuBu6B,GAAQ,GAChE,GAAI4B,EAAY,CAEZ,IADA,IAAIM,EAAaN,EAAW5xB,iBAAiB,qBACpC1hB,EAAI4zC,EAAWj0C,OAAS,EAAGK,EAAI,EAAGA,IACvCszC,EAAWO,YAAYP,EAAWQ,WAAW9zC,IAEjD,eAAmBmM,EAAGmnC,KAG9BwpF,EAAS59H,UAAU60C,oBAAsB,SAAU5nC,GAC/CnN,KAAK+9H,cAAe,EACpB,IAAIzpF,EAAat0C,KAAKg0C,aAAa77B,uBAAuBu6B,GAAQ,GAClE,GAAI4B,EAAY,CAEZ,IADA,IAAIM,EAAaN,EAAW5xB,iBAAiB,qBACpC1hB,EAAI,EAAGA,EAAI4zC,EAAWj0C,OAAS,EAAGK,IACvCszC,EAAWO,YAAYP,EAAWQ,WAAW9zC,IAEjD,eAAmBmM,EAAGmnC,KAY9BwpF,EAAS59H,UAAU+U,kBAAoB,SAAUC,EAASC,GAEtD,IADA,IAAIo+B,EAAUvzC,KAAKg0C,aACVnmC,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKF,GAAUrH,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC9D,IAAIwH,EAAOxR,EAAGgK,GACd,OAAQwH,GACJ,IAAK,UACDrV,KAAKq+H,eAAgB,EACrBr+H,KAAKoD,QAAQi7H,eAAgB,EAC7Br+H,KAAKk+H,YAAYhpH,EAAQ69B,QAAU,QAAU,WAC7C,MACJ,IAAK,gBACG79B,EAAQmpH,cACRr+H,KAAKk+H,eAGLl+H,KAAKoD,QAAQi7H,eAAgB,EAC7Br+H,KAAKk+H,YAAYl+H,KAAK+yC,QAAU,QAAU,YAE9C,MACJ,IAAK,WACG79B,EAAQkD,UACRpY,KAAKq0C,cACLr0C,KAAKuzC,QAAUvzC,KAAKg0C,aACpBh0C,KAAKwzC,iBAGLxzC,KAAKoD,QAAQgV,UAAW,EACxBm7B,EAAQruC,UAAUC,OAAO65B,GACzBuU,EAAQ5oC,aAAa,gBAAiB,SACtC3K,KAAK4T,cAET,MACJ,IAAK,WACGuB,EAAQ1K,UACR,gBAAY,CAAC8oC,GAAUp+B,EAAQ1K,SAASxG,MAAM,MAE9CiR,EAAQzK,UACR,eAAS,CAAC8oC,GAAUr+B,EAAQzK,SAASoQ,QAAQ,OAAQ,KAAKtO,OAAOtI,MAAM,MAE3E,MACJ,IAAK,YACGiR,EAAQzP,UACR8tC,EAAQruC,UAAU4G,IAAIrK,GAGtB8xC,EAAQruC,UAAUC,OAAO1D,GAE7B,MACJ,IAAK,QACDzB,KAAKw0C,QAAQt/B,EAAQ4+B,OACrB,MACJ,IAAK,gBACD,IAAIA,EAAQP,EAAQp7B,uBAAuBs6B,GAAO,GAC9C+rF,EAAYjrF,EAAQ8B,qBAAqB,SAAS,GACtD,eAAOvB,GACuB,UAA1B5+B,EAAQ+/B,cACRupF,EAAU95H,YAAYovC,GAGtB0qF,EAAUh5G,aAAasuB,EAAOP,EAAQp7B,uBAAuBulH,GAAO,IAExE,MAEJ,IAAK,OACD19H,KAAKoD,QAAQuH,aAAa,OAAQuK,EAAQlF,MAC1C,MACJ,IAAK,QACD,GAAIhQ,KAAKm2B,OAAkC,kBAAlBjhB,EAAQuD,MAC7B,MAEJzY,KAAKoD,QAAQuH,aAAa,QAASuK,EAAQuD,OAC3C,MACJ,IAAK,iBACDzY,KAAK+Z,+BACL,SAUhB+jH,EAAS59H,UAAU4T,UAAY,WAC3B,IAAI1Q,EAAUpD,KAAKoD,QACnBpD,KAAK0P,QAAU1P,KAAKoD,QAAQsM,QAC5BtM,EAAU,eAAkBpD,KAAKuE,cAAe,eAAgB,WAAYnB,EAASuvC,EAAS,YAC9F3yC,KAAKoD,QAAUA,EAC2B,aAAtCpD,KAAKoD,QAAQsH,aAAa,SAC1B1K,KAAKoD,QAAQuH,aAAa,OAAQ,YAEjC3K,KAAKoD,QAAQkI,KACdtL,KAAKoD,QAAQkI,GAAK,eAAY,KAAOtL,KAAK8U,mBASlDgpH,EAAS59H,UAAUyT,OAAS,WACxB3T,KAAKm0C,cACLn0C,KAAK2D,aACA3D,KAAKoY,UACNpY,KAAK4T,aAET5T,KAAK+Z,+BACL/Z,KAAKu+H,qBAAoB,GACzBv+H,KAAK6T,iBACL7T,KAAKuzC,QAAUvzC,KAAKg0C,cAExB8pF,EAAS59H,UAAUm0C,YAAc,WAC7B,IAAId,EAAUvzC,KAAKg0C,aACnBh0C,KAAKoD,QAAQgV,UAAW,EACxBm7B,EAAQruC,UAAU4G,IAAIkzB,GACtBuU,EAAQ5oC,aAAa,gBAAiB,SAG1CmzH,EAAS59H,UAAUs0C,QAAU,SAAU1iB,GACnC,IAAIyhB,EAAUvzC,KAAKg0C,aACnB,GAAKT,EAAL,CAGA,IAAIO,EAAQP,EAAQp7B,uBAAuBs6B,GAAO,GAClD,GAAIqB,EACAA,EAAM1uB,YAAc0M,MAEnB,CACDA,EAAQ9xB,KAAwB,oBAAI,OAAmBkL,SAAS4mB,GAAQA,EACxEgiB,EAAQ9zC,KAAKuE,cAAc,OAAQ,CAAEC,UAAWiuC,EAAO3nC,UAAWgnB,IAClE,IAAI0sG,EAAYjrF,EAAQ8B,qBAAqB,SAAS,GAC3B,WAAvBr1C,KAAKi1C,cACLupF,EAAUh5G,aAAasuB,EAAOP,EAAQp7B,uBAAuBulH,GAAO,IAGpEc,EAAU95H,YAAYovC,MAIlCgqF,EAAS59H,UAAUmwC,cAAgB,SAAUljC,GACzCA,EAAE8R,mBAEN6+G,EAAS59H,UAAUgwC,iBAAmB,WAClClwC,KAAK+yC,QAAU/yC,KAAKk0C,oBACpBl0C,KAAKoD,QAAQ2vC,QAAU/yC,KAAKk0C,qBAEhC4pF,EAAS59H,UAAUszC,aAAe,WAC9B,IAAID,EAAUvzC,KAAKuzC,QACnB,OAAapuC,OAAOouC,EAAS,QAASvzC,KAAKsoC,cAC3C,OAAanjC,OAAOnF,KAAKoD,QAAS,QAASpD,KAAKy0C,cAChD,OAAatvC,OAAOnF,KAAKoD,QAAS,QAASpD,KAAK4zC,cAChD,OAAazuC,OAAOnF,KAAKoD,QAAS,WAAYpD,KAAK6zC,iBACnD,IAAIC,EAAQP,EAAQ8B,qBAAqB,SAAS,GAClD,OAAalwC,OAAO2uC,EAAO,YAAa9zC,KAAK00C,uBAC7C,OAAavvC,OAAO2uC,EAAO,UAAW9zC,KAAK+0C,qBAC3C,OAAa5vC,OAAO2uC,EAAO,aAAc9zC,KAAK20C,wBAC9C,IAAI8pF,EAAW,eAAQz+H,KAAKoD,QAAS,QACjCq7H,GACA,OAAat5H,OAAOs5H,EAAU,QAASz+H,KAAKkwC,kBAE3B,iBAAjBlwC,KAAK0P,SACL,OAAavK,OAAOnF,KAAKoD,QAAS,SAAUpD,KAAKqwC,gBAGzDytF,EAAS59H,UAAU0T,WAAa,WAC5B,IAAI2/B,EAAUvzC,KAAKg0C,aACnB,OAAaloC,IAAIynC,EAAS,QAASvzC,KAAKsoC,aAActoC,MACtD,OAAa8L,IAAI9L,KAAKoD,QAAS,QAASpD,KAAKy0C,aAAcz0C,MAC3D,OAAa8L,IAAI9L,KAAKoD,QAAS,QAASpD,KAAK4zC,aAAc5zC,MAC3D,OAAa8L,IAAI9L,KAAKoD,QAAS,WAAYpD,KAAK6zC,gBAAiB7zC,MACjE,IAAI8zC,EAAQP,EAAQ8B,qBAAqB,SAAS,GAClD,OAAavpC,IAAIgoC,EAAO,YAAa9zC,KAAK00C,sBAAuB10C,MACjE,OAAa8L,IAAIgoC,EAAO,UAAW9zC,KAAK+0C,oBAAqB/0C,MAC7D,OAAa8L,IAAIgoC,EAAO,aAAc9zC,KAAK20C,uBAAwB30C,MACnE,IAAIy+H,EAAW,eAAQz+H,KAAKoD,QAAS,QACjCq7H,GACA,OAAa3yH,IAAI2yH,EAAU,QAASz+H,KAAKkwC,iBAAkBlwC,MAE1C,iBAAjBA,KAAK0P,SACL,OAAa5D,IAAI9L,KAAKoD,QAAS,SAAUpD,KAAKqwC,cAAerwC,OAGrE89H,EAAS59H,UAAUq+H,oBAAsB,SAAUG,GAC/C,GAAI1+H,KAAKm2B,OAA+B,kBAAfn2B,KAAKyY,MAAoB,CAC9C,IAAIA,EAAQzY,KAAKoD,QAAQqV,MACzB,GAAIA,GAASzY,KAAKyY,MAAO,CACrB,IAAIimH,EAQC,CACD,IAAIjyH,EAAQzM,KAAKyY,MAAMzU,QAAQyU,GAY/B,OAXIzY,KAAK+yC,QACDtmC,EAAQ,GACRzM,KAAKyY,MAAMpM,KAAKoM,GAIhBhM,GAAS,GACTzM,KAAKyY,MAAM/L,OAAOD,EAAO,GAI1BzM,KAAKyY,MApBZ,IAAK,IAAIzX,EAAI,EAAGA,EAAIhB,KAAKyY,MAAM9X,OAAQK,IAC/ByX,IAAUzY,KAAKyY,MAAMzX,KACrBhB,KAAKk+H,YAAY,SACjBl+H,KAAKiL,cAAc,CAAE,SAAW,IAAQ,KAqB5D,OAAOjL,KAAKi+H,WAAaj+H,KAAKoD,QAAQ2vC,SAAW/yC,KAAKoD,QAAQ2vC,SAElE+qF,EAAS59H,UAAU6Z,6BAA+B,WAC9C,IAAK,eAAkB/Z,KAAKggB,gBACxB,IAAK,IAAInS,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKpV,KAAKggB,gBAAiBnS,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC1E,IAAItN,EAAMsD,EAAGgK,GACT0lC,EAAUvzC,KAAKg0C,aACnB,GAAIn9B,EAAc7S,QAAQzD,IAAQ,EAC9B,GAAY,UAARA,EACA,eAAS,CAACgzC,GAAUvzC,KAAKggB,eAAe,GAAKzf,GAAK0D,MAAM,WAEvD,GAAY,UAAR1D,EACLgzC,EAAQ5oC,aAAapK,EAAKP,KAAKggB,eAAe,GAAKzf,SAElD,GAAY,UAARA,EAAiB,CACtB,IAAI69H,EAAYp+H,KAAKg0C,aAAa77B,uBAAuBulH,GAAO,GAChEU,EAAUzzH,aAAapK,EAAKP,KAAKggB,eAAe,GAAKzf,QAExC,aAARA,GACiC,SAAlCP,KAAKggB,eAAe,GAAKzf,IACzBP,KAAKq0C,cAETr0C,KAAKoD,QAAQuH,aAAapK,EAAKP,KAAKggB,eAAe,GAAKzf,KAGxDP,KAAKoD,QAAQuH,aAAapK,EAAKP,KAAKggB,eAAe,GAAKzf,SAI5DgzC,EAAQ5oC,aAAapK,EAAKP,KAAKggB,eAAe,GAAKzf,MAYnEu9H,EAAS59H,UAAU+0B,MAAQ,WACvBj1B,KAAKoD,QAAQ6xB,SASjB6oG,EAAS59H,UAAU+mB,QAAU,WACzBjnB,KAAKoD,QAAQ2c,SAEjB3f,EAAW,CACP,kBACD09H,EAAS59H,UAAW,cAAU,GACjCE,EAAW,CACP,kBACD09H,EAAS59H,UAAW,eAAW,GAClCE,EAAW,CACP,gBAAS,IACV09H,EAAS59H,UAAW,eAAW,GAClCE,EAAW,CACP,eAAS,KACV09H,EAAS59H,UAAW,gBAAY,GACnCE,EAAW,CACP,gBAAS,IACV09H,EAAS59H,UAAW,gBAAY,GACnCE,EAAW,CACP,gBAAS,IACV09H,EAAS59H,UAAW,qBAAiB,GACxCE,EAAW,CACP,eAAS,KACV09H,EAAS59H,UAAW,aAAS,GAChCE,EAAW,CACP,eAAS,UACV09H,EAAS59H,UAAW,qBAAiB,GACxCE,EAAW,CACP,eAAS,KACV09H,EAAS59H,UAAW,YAAQ,GAC/BE,EAAW,CACP,eAAS,KACV09H,EAAS59H,UAAW,aAAS,GAChCE,EAAW,CACP,gBAAS,IACV09H,EAAS59H,UAAW,2BAAuB,GAC9CE,EAAW,CACP,eAAS,KACV09H,EAAS59H,UAAW,sBAAkB,GACzC49H,EAAW19H,EAAW,CAClB,QACD09H,GACIA,EAplBkB,CAqlB3B,S,kCCloBF,8DAAIz+H,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxCK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAQ5DY,EAAO,8BACPm9H,EAAW,qBACXC,EAAS,YACTC,EAAW,cACX1oH,EAAQ,UACR2oH,EAAY,YACZC,EAAY,YACZC,EAAY,IAAI9mE,OAAO,gBACvB+mE,EAAmB,IACnBC,EAAY,mBACZtpH,EAAU,YACVupH,EAAgB,gBAChBC,EAAgB,mBAChBvzD,EAAoB,CAAC,QAAS,QAAS,SACvCwzD,EAAmB,EAanBC,EAAgC,SAAUz8H,GAQ1C,SAASy8H,EAAen8H,EAASC,GAC7B,IAAIC,EAAQR,EAAOS,KAAKtD,KAAMmD,EAASC,IAAYpD,KAMnD,OALAqD,EAAM8yB,OAAQ,EACd9yB,EAAMgU,eAAgB,EACtBhU,EAAM+T,WAAY,EAClB/T,EAAMk8H,iBAAkB,EACxBl8H,EAAMm8H,eAAiBr8H,EAChBE,EAizCX,OA/zCAhE,EAAUigI,EAAgBz8H,GAgB1By8H,EAAep/H,UAAU4T,UAAY,WACjC9T,KAAKy/H,eAAgB,EACrBz/H,KAAK0/H,iBAAmB,IAExB1/H,KAAK2/H,UAAY,IAAIznE,OAAO,gBAC5Bl4D,KAAK4/H,UAAW,EAChB,IAAIC,EAAa,eAAS,gBAAiB7/H,KAAKoD,SAKhD,GAJApD,KAAKgtE,aAAehtE,KAAKoD,QAAQskB,WAAU,GAC3C,gBAAY,CAAC1nB,KAAKgtE,cAAe,CAACp3D,EAASspH,EAAW,UACtDl/H,KAAK8/H,eAAiB,KACtB9/H,KAAK+/H,QAAU,eAAQ//H,KAAKoD,QAAS,QACR,uBAAzBpD,KAAKoD,QAAQsM,QAAkC,CAC/C1P,KAAK8/H,eAAiB9/H,KAAKoD,QAAQsM,QACnC,IAAIujC,EAAQjzC,KAAKuE,cAAc,SAC3BkI,EAAQ,EACZ,IAAKA,EAAOA,EAAQzM,KAAKoD,QAAQqkB,WAAW9mB,OAAQ8L,IAAS,CACzD,IAAIuzH,EAAgBhgI,KAAKoD,QAAQqkB,WAAWhb,GAAOwzH,SAC7B,OAAlBD,GAA4C,UAAlBA,GAC1B/sF,EAAMtoC,aAAa3K,KAAKoD,QAAQqkB,WAAWhb,GAAOwzH,SAAUjgI,KAAKoD,QAAQqkB,WAAWhb,GAAOyzH,WAC3FjtF,EAAMnoC,UAAY9K,KAAKoD,QAAQ0H,WAER,UAAlBk1H,GACL/sF,EAAMtoC,aAAaq1H,EAAehgI,KAAKoD,QAAQoB,UAAUP,MAAM,KAAKgwB,QAAO,SAAUs5B,GAAQ,OAA+B,IAAxBA,EAAKvpD,QAAQ,UAAiBsI,KAAK,MAG3ItM,KAAKoD,QAAQ0kB,aAAa,SAC1B9nB,KAAKoD,QAAQwH,gBAAgB,QAEjC5K,KAAKoD,QAAQ8B,UAAUC,OAAO,YAAa,oBAC3CnF,KAAKoD,QAAQsB,YAAYuuC,GACzBjzC,KAAKoD,QAAU6vC,EACf,gBAAS,gBAAiB4sF,EAAY7/H,KAAKoD,SAE/C,eAAWpD,KAAKoD,QAAS,CAAE,KAAQ,aAAc,SAAY,IAAK,aAAgB,QAClF,IAAIqrE,EAAa,CACb0xD,eAAgB,kBAAmBC,eAAgB,kBAAmBpmH,YAAaha,KAAKga,aAE5Fha,KAAKya,KAAO,IAAI,OAAK,iBAAkBg0D,EAAYzuE,KAAKwa,QACX,KAAzCxa,KAAKya,KAAKC,YAAY,gBACtB1a,KAAKiL,cAAc,CAAE+O,YAAaha,KAAKga,aAAeha,KAAKya,KAAKC,YAAY,iBAAkB,GAE7F1a,KAAKoD,QAAQ0kB,aAAa,OAC3B9nB,KAAKoD,QAAQuH,aAAa,KAAM,eAAY,mBAEhD3K,KAAKi5E,cAAe,EACpBj5E,KAAKkvE,WAAa,KAClBlvE,KAAKqtF,UAAY,KACjBrtF,KAAKqgI,YAAc,GACnBrgI,KAAKsgI,kBACLtgI,KAAKugI,kBACLvgI,KAAKs0E,UAAYt0E,KAAKyY,MACtBzY,KAAKwgI,0BACLxgI,KAAKwuE,iBAAgB,GACjBxuE,KAAK+/H,UACL//H,KAAK0tE,cAAgB1tE,KAAKyY,OAE9BzY,KAAK2yE,iBACL3yE,KAAKygI,eACoB,OAArBzgI,KAAKga,aACLha,KAAK0gI,qBASbpB,EAAep/H,UAAUyT,OAAS,WACa,UAAvC3T,KAAKoD,QAAQsM,QAAQmS,gBACrB7hB,KAAK2gI,gBACD3gI,KAAK4gI,gBACL5gI,KAAK6gI,kBAET7gI,KAAK8gI,gBAAgB9gI,KAAKsF,OACrBtF,KAAKwP,UAAUtK,UAAUmB,SAAS,kBACnCrG,KAAKwP,UAAUtK,UAAU4G,IAAI,iBAEjC9L,KAAK+gI,YAA2B,OAAf/gI,KAAKyY,OAAkBgD,MAAMzb,KAAKyY,OAC/C,KAAOzY,KAAK2b,WAAa3b,KAAKghI,UAAUhhI,KAAKyY,OAASzY,KAAKyY,OAC/DzY,KAAK4T,aACc,OAAf5T,KAAKyY,OAAmBgD,MAAMzb,KAAKyY,QAC/BzY,KAAKihI,UACLjhI,KAAKiL,cAAc,CAAEwN,MAAOzY,KAAKkhI,YAAYlhI,KAAKyY,MAAOzY,KAAKihI,YAAa,IAG/EjhI,KAAKoD,QAAQsH,aAAa,UAAY1K,KAAKyY,SAC3CzY,KAAKoD,QAAQuH,aAAa,QAAS3K,KAAKoD,QAAQqV,OAChDzY,KAAKmhI,YAAYx2H,aAAa,QAAS3K,KAAKmhI,YAAY1oH,QAE5DzY,KAAKohI,iBAAmBphI,KAAKoD,QAAQqV,MACjCzY,KAAKoD,QAAQ0kB,aAAa,aAC1B9nB,KAAKoD,QAAQuH,aAAa,WAAY,UAErC,eAAkB,eAAQ3K,KAAKoD,QAAS,cAAgB,eAAQpD,KAAKoD,QAAS,YAAYgV,WAC3FpY,KAAKqY,SAAU,GAEnBrY,KAAK6T,mBAGbyrH,EAAep/H,UAAUsuE,gBAAkB,SAAUnzD,GAGjD,IAFA,IAAIoM,EAAapM,EAAY,eAAkBrb,KAAKggB,gBAAkB,GAAKvgB,OAAO2V,KAAKpV,KAAKggB,gBACxF,CAAC,QAAS,MAAO,MAAO,OAAQ,WAAY,WAAY,QAAS,OAAQ,eACpEnS,EAAK,EAAG6b,EAAejC,EAAY5Z,EAAK6b,EAAa/oB,OAAQkN,IAAM,CACxE,IAAIwH,EAAOqU,EAAa7b,GACxB,IAAK,eAAkB7N,KAAKoD,QAAQsH,aAAa2K,IAC7C,OAAQA,GACJ,IAAK,WACD,GAAK,eAAkBrV,KAAKw/H,sBAAuDj0H,IAAnCvL,KAAKw/H,eAAe,YAA8BnkH,EAAW,CACzG,IAAIhD,EAA8C,aAApCrY,KAAKoD,QAAQsH,aAAa2K,IAA4D,KAApCrV,KAAKoD,QAAQsH,aAAa2K,IAC/C,SAApCrV,KAAKoD,QAAQsH,aAAa2K,GACjCrV,KAAKiL,cAAc,CAAEoN,QAASA,IAAYgD,GAE9C,MACJ,IAAK,WACD,GAAK,eAAkBrb,KAAKw/H,sBAAwDj0H,IAApCvL,KAAKw/H,eAAe,aAA+BnkH,EAAW,CAC1G,IAAI7B,EAA+C,aAApCxZ,KAAKoD,QAAQsH,aAAa2K,IAA4D,KAApCrV,KAAKoD,QAAQsH,aAAa2K,IAChD,SAApCrV,KAAKoD,QAAQsH,aAAa2K,GACjCrV,KAAKiL,cAAc,CAAEuO,SAAUA,IAAa6B,GAEhD,MACJ,IAAK,eACI,eAAkBrb,KAAKw/H,sBAA2Dj0H,IAAvCvL,KAAKw/H,eAAe,gBAAkCnkH,IAClGrb,KAAKiL,cAAc,CAAE+O,YAAaha,KAAKoD,QAAQ4W,cAAgBqB,GAEnE,MACJ,IAAK,QACD,GAAK,eAAkBrb,KAAKw/H,sBAAqDj0H,IAAjCvL,KAAKw/H,eAAe,UAA4BnkH,EAAW,CACvG,IAAIgmH,EAAYrhI,KAAKkzC,SAAS2rC,gBAAgB,CAAEviE,OAAQ,KAAxCtc,CAA+CA,KAAKoD,QAAQsH,aAAa2K,IACzFrV,KAAKiL,cAAc,gBAASoK,EAAMgsH,EAAW,KAAMhmH,GAEvD,MACJ,IAAK,MACD,GAAK,eAAkBrb,KAAKw/H,sBAAmDj0H,IAA/BvL,KAAKw/H,eAAe,QAA0BnkH,EAAW,CACrG,IAAI65D,EAAWl1E,KAAKkzC,SAAS2rC,gBAAgB,CAAEviE,OAAQ,KAAxCtc,CAA+CA,KAAKoD,QAAQsH,aAAa2K,IACvE,OAAb6/D,GAAsBz5D,MAAMy5D,IAC5Bl1E,KAAKiL,cAAc,gBAASoK,EAAM6/D,EAAU,KAAM75D,GAG1D,MACJ,IAAK,MACD,GAAK,eAAkBrb,KAAKw/H,sBAAmDj0H,IAA/BvL,KAAKw/H,eAAe,QAA0BnkH,EAAW,CACrG,IAAI45D,EAAWj1E,KAAKkzC,SAAS2rC,gBAAgB,CAAEviE,OAAQ,KAAxCtc,CAA+CA,KAAKoD,QAAQsH,aAAa2K,IACvE,OAAb4/D,GAAsBx5D,MAAMw5D,IAC5Bj1E,KAAKiL,cAAc,gBAASoK,EAAM4/D,EAAU,KAAM55D,GAG1D,MACJ,IAAK,OACD,GAAK,eAAkBrb,KAAKw/H,sBAAoDj0H,IAAhCvL,KAAKw/H,eAAe,SAA2BnkH,EAAW,CACtG,IAAIimH,EAAYthI,KAAKkzC,SAAS2rC,gBAAgB,CAAEviE,OAAQ,KAAxCtc,CAA+CA,KAAKoD,QAAQsH,aAAa2K,IACvE,OAAdisH,GAAuB7lH,MAAM6lH,IAC7BthI,KAAKiL,cAAc,gBAASoK,EAAMisH,EAAW,KAAMjmH,GAG3D,MACJ,IAAK,QACDrb,KAAKkvE,WAAalvE,KAAKoD,QAAQsH,aAAa2K,GAC5C,MACJ,IAAK,OACDrV,KAAKqtF,UAAYrtF,KAAKoD,QAAQsH,aAAa2K,GAC3C,MACJ,QAEQ,IAAIoD,EAAQzY,KAAKkzC,SAAS2rC,gBAAgB,CAAEviE,OAAQ,KAAxCtc,CAA+CA,KAAKoD,QAAQsH,aAAa2K,KACtE,OAAVoD,IAAmBgD,MAAMhD,IAAqB,UAATpD,IACtCrV,KAAKiL,cAAc,gBAASoK,EAAMoD,EAAO,KAAK,GAGtD,SAKpB6mH,EAAep/H,UAAUwgI,kBAAoB,WACzC1gI,KAAKiL,cAAc,CAAE+O,YAAaha,KAAKya,KAAKC,YAAY,iBAAkB,IAE9E4kH,EAAep/H,UAAUqgI,gBAAkB,WACvCvgI,KAAKkzC,SAAW,IAAI,OAAqBlzC,KAAKwa,SAElD8kH,EAAep/H,UAAUogI,gBAAkB,WACvCtgI,KAAKqgI,YAAY/jH,OAAStc,KAAKsc,OACI,OAA/B,eAAS,WAAYtc,QACrB,gBAAS,WAAYA,KAAKuhI,SAAUvhI,KAAKqgI,aACzCrgI,KAAKiL,cAAc,CAAEu2H,aAAcxhI,KAAKuhI,WAAY,KAI5DjC,EAAep/H,UAAUygI,cAAgB,WACrC,IAAIc,EAAuBzhI,KAAKyK,SAC3B,eAAkBzK,KAAKyK,WAA+B,KAAlBzK,KAAKyK,WAC1Cg3H,EAAuBzhI,KAAK0hI,yBAAyB1hI,KAAKyK,WAE9D,IAAIk3H,EAAW,OAAM7nH,YAAY,CAC7B1W,QAASpD,KAAKoD,QACd0U,eAAgB9X,KAAK8X,eACrBkD,WAAY,CACRxB,SAAUxZ,KAAKwZ,SACfQ,YAAaha,KAAKga,YAClBvP,SAAUg3H,EACVh8H,UAAWzF,KAAKyF,UAChBwV,gBAAiBjb,KAAKib,gBACtB5C,QAASrY,KAAKqY,UAEnBrY,KAAKuE,eACRvE,KAAKiY,aAAe0pH,EACpB3hI,KAAKwP,UAAYmyH,EAASnyH,UAC1BxP,KAAKwP,UAAU7E,aAAa,QAASnJ,EAAO,IAAMxB,KAAKwP,UAAU9E,aAAa,UAC9E1K,KAAK4hI,0BACD5hI,KAAKwZ,UACL,eAAWxZ,KAAKoD,QAAS,CAAE,gBAAiB,SAEhDpD,KAAKmhI,YAAenhI,KAAKuE,cAAc,QAAS,CAAEyK,MAAO,CAAER,KAAM,OACzD,eAAkB,OAAQ,aAAc,SAAU,MAAS4wH,KACnEp/H,KAAKqtF,UAA+B,OAAnBrtF,KAAKqtF,UAAqBrtF,KAAKqtF,UAAYrtF,KAAKoD,QAAQkI,GACzEtL,KAAKoD,QAAQwH,gBAAgB,QACzB5K,KAAKoX,WAAqC,uBAAxBpX,KAAK8/H,gBAA2C9/H,KAAKgtE,aAAa1hE,GAAG3K,OAAS,EAChG,eAAWX,KAAKmhI,YAAa,CAAE,KAAQnhI,KAAKgtE,aAAa1hE,KAGzD,eAAWtL,KAAKmhI,YAAa,CAAE,KAAQnhI,KAAKqtF,YAEhDrtF,KAAKwP,UAAUgW,aAAaxlB,KAAKmhI,YAAanhI,KAAKwP,UAAUslC,WAAW,IACxE90C,KAAK6hI,qBAAoB,GACD,OAApB7hI,KAAKkvE,YACL,eAAWlvE,KAAKwP,UAAW,CAAE,MAASxP,KAAKkvE,cAGnDowD,EAAep/H,UAAU2hI,oBAAsB,SAAUxmH,GACrD,IAAIgO,EAAO,GACX,GAAKhO,EAMDgO,EAAOrpB,KAAKggB,oBALZ,IAAK,IAAIwiC,EAAI,EAAGA,EAAIxiD,KAAKoD,QAAQqkB,WAAW9mB,OAAQ6hD,IAChDn5B,EAAKrpB,KAAKoD,QAAQqkB,WAAW+6B,GAAGxyC,MAAQhQ,KAAKoD,QAAQsH,aAAa1K,KAAKoD,QAAQqkB,WAAW+6B,GAAGxyC,MAMrG,IAAK,IAAInC,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKiU,GAAOxb,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC3D,IAAItN,EAAMsD,EAAGgK,GACe,IAAxBtN,EAAIyD,QAAQ,SACZhE,KAAKmhI,YAAYx2H,aAAapK,EAAK8oB,EAAK,GAAK9oB,MAIzD++H,EAAep/H,UAAUsgI,wBAA0B,WAC/C,IAAK,eAAkBxgI,KAAKggB,gBACxB,IAAK,IAAInS,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKpV,KAAKggB,gBAAiBnS,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC1E,IAAIi0H,EAAMj+H,EAAGgK,GACTg+D,EAAkB7nE,QAAQ89H,GAAO,GACjC9hI,KAAKoD,QAAQuH,aAAam3H,EAAK9hI,KAAKggB,eAAe,GAAK8hH,MAKxExC,EAAep/H,UAAUmgB,eAAiB,SAAU0hH,EAAUC,GAC1D,OAAMxhH,YAAYxgB,KAAK0hI,yBAAyBK,GAAW,CAAC/hI,KAAKwP,WAAYxP,KAAK0hI,yBAAyBM,KAE/G1C,EAAep/H,UAAUwhI,yBAA2B,SAAUO,GAC1D,IAAIjxG,EAASixG,EAIb,OAHK,eAAkBA,IAA0C,KAArBA,IACxCjxG,EAAUixG,EAAiBpnH,QAAQ,OAAQ,KAAMtO,QAE9CykB,GAEXsuG,EAAep/H,UAAU0hI,wBAA0B,WAC/C,IAAK,eAAkB5hI,KAAKggB,gBACxB,IAAK,IAAInS,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKpV,KAAKggB,gBAAiBnS,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC1E,IAAIi0H,EAAMj+H,EAAGgK,GACb,GAAIg+D,EAAkB7nE,QAAQ89H,IAAQ,EAClC,GAAY,UAARA,EAAiB,CACjB,IAAII,EAAoBliI,KAAK0hI,yBAAyB1hI,KAAKggB,eAAe,GAAK8hH,IACrD,KAAtBI,GACA,eAAS,CAACliI,KAAKwP,WAAY0yH,EAAkBj+H,MAAM,WAGtD,GAAY,UAAR69H,EAAiB,CACtB,IAAIK,EAAeniI,KAAKwP,UAAU9E,aAAao3H,GAC/CK,EAAgB,eAAkBA,GAC9BniI,KAAKggB,eAAe,GAAK8hH,GADsBK,EAAeniI,KAAKggB,eAAe,GAAK8hH,GAE3F9hI,KAAKwP,UAAU7E,aAAam3H,EAAKK,QAGjCniI,KAAKwP,UAAU7E,aAAam3H,EAAK9hI,KAAKggB,eAAe,GAAK8hH,MAM9ExC,EAAep/H,UAAU4gI,gBAAkB,SAAUx7H,GAC5C,eAAkBA,KACE,kBAAVA,EACPtF,KAAKwP,UAAUzI,MAAMzB,MAAQ,eAAWA,GAElB,kBAAVA,IACZtF,KAAKwP,UAAUzI,MAAMzB,MAASA,EAAMsB,MAAM,WAAc,EAAW,cAAD,CAAYtB,MAK1Fg6H,EAAep/H,UAAU2gI,gBAAkB,WACvC7gI,KAAKoiI,SAAW,OAAMhpD,WAAWulD,EAAW,IAAME,EAAU7+H,KAAKwP,UAAWxP,KAAKuE,eACjF,eAAWvE,KAAKoiI,SAAU,CACtB,MAASpiI,KAAKya,KAAKC,YAAY,oBAEnC1a,KAAKqiI,OAAS,OAAMjpD,WAAWulD,EAAW,IAAMC,EAAQ5+H,KAAKwP,UAAWxP,KAAKuE,eAC7E,eAAWvE,KAAKqiI,OAAQ,CACpB,MAASriI,KAAKya,KAAKC,YAAY,oBAEnC1a,KAAKsiI,qBAEThD,EAAep/H,UAAUyyE,eAAiB,YACV,kBAAd3yE,KAAQ,KAAmByb,MAAMzb,KAAKyc,OAChDzc,KAAKiL,cAAc,CAAEwR,KAAOs0B,OAAgB,YAAK,IAEzB,kBAAd/wC,KAAQ,KAAmByb,MAAMzb,KAAKqZ,OAChDrZ,KAAKiL,cAAc,CAAEoO,IAAK03B,OAAOwxF,YAAa,GAE5B,OAAlBviI,KAAKihI,WACDjhI,KAAKyc,OAAUs0B,OAAgB,WAC/B/wC,KAAKiL,cAAc,CAAEwR,IAAKzc,KAAKkzC,SAAS2rC,gBAAgB,CAAEviE,OAAQ,KAAxCtc,CAA+CA,KAAKwiI,eAAexiI,KAAKihI,SAAUjhI,KAAKyc,QAAS,GAE1Hzc,KAAKqZ,MAAS03B,OAAgB,WAC9B/wC,KAAKiL,cAAc,CAAEoO,IAAKrZ,KAAKkzC,SAAS2rC,gBAAgB,CAAEviE,OAAQ,KAAxCtc,CAA+CA,KAAKwiI,eAAexiI,KAAKihI,SAAUjhI,KAAKqZ,QAAS,IAGlIrZ,KAAKiL,cAAc,CAAEwR,IAAKzc,KAAKyc,IAAMzc,KAAKqZ,IAAMrZ,KAAKqZ,IAAMrZ,KAAKyc,MAAO,GACnEzc,KAAKyc,OAAUs0B,OAAgB,WAC/B,eAAW/wC,KAAKoD,QAAS,CAAE,gBAAiBpD,KAAKyc,IAAI7K,aAErD5R,KAAKqZ,MAAS03B,OAAgB,WAC9B,eAAW/wC,KAAKoD,QAAS,CAAE,gBAAiBpD,KAAKqZ,IAAIzH,cAG7D0tH,EAAep/H,UAAUsiI,eAAiB,SAAUvB,EAAUxoH,GAC1D,OAAOzY,KAAKkzC,SAASyrC,gBAAgB,CACjC8jD,sBAAuBxB,EACvByB,sBAAuBzB,EAAU0B,aAAa,GAF3C3iI,CAGJyY,IAEP6mH,EAAep/H,UAAUugI,aAAe,WACd,OAAlBzgI,KAAKihI,UACLjhI,KAAKiL,cAAc,CAAEmjB,KAAMpuB,KAAKkzC,SAAS2rC,gBAAgB,CAAEviE,OAAQ,KAAxCtc,CAA+CA,KAAKwiI,eAAexiI,KAAKihI,SAAUjhI,KAAKouB,SAAU,IAGpIkxG,EAAep/H,UAAUygB,OAAS,SAAUiiH,EAAWl0H,GACnD1O,KAAK6iI,YAAa,EAClB,IAAIpqH,EAAQzY,KAAKyX,UAAYzX,KAAKkzC,SAAS2rC,gBAAgB,CAAEviE,OAAQ,KAAxCtc,CAA+CA,KAAKoD,QAAQqV,OAASzY,KAAKyY,MACvGzY,KAAK+gI,YAAY/gI,KAAK8iI,cAAcrqH,EAAOzY,KAAKouB,KAAMw0G,IACtD5iI,KAAK+iI,iBAAiBr0H,IAE1B4wH,EAAep/H,UAAU8iI,gBAAkB,WACnChjI,KAAKi5E,aACL,gBAAY,CAACj5E,KAAKwP,WAAY2G,GAG9B,eAAS,CAACnW,KAAKwP,WAAY2G,GAE/B,eAAWnW,KAAKoD,QAAS,CAAE,eAAgBpD,KAAKi5E,aAAe,QAAU,UAE7EqmD,EAAep/H,UAAUgf,eAAiB,WAClClf,KAAKib,iBACL,OAAanP,IAAI9L,KAAKiY,aAAakG,YAAa,uBAAwBne,KAAKoe,aAAcpe,OAGnGs/H,EAAep/H,UAAUke,aAAe,SAAUjR,GAC9CA,EAAE+F,iBACIlT,KAAKiY,aAAakG,YAAYjZ,UAAUmB,SAAS,uBAAyBrG,KAAKiY,aAAazI,UAAUtK,UAAUmB,SAAS,mBAC3HrG,KAAKsI,MAAM6E,GAEfnN,KAAK6iI,YAAa,EAClB7iI,KAAK+iI,iBAAiB51H,IAG1BmyH,EAAep/H,UAAUoI,MAAQ,SAAUoG,GACvC1O,KAAKiL,cAAc,CAAEwN,MAAO,OAAQ,GACpCzY,KAAKijI,gBAAgB,IACrBjjI,KAAKmhI,YAAY1oH,MAAQ,GACzB,IAAI4F,EAAc,eAAQre,KAAKoD,QAAS,QACxC,GAAIib,EAAa,CACb,IAAIjb,EAAUpD,KAAKoD,QAAQ6wC,mBACvB30B,EAAa1R,SAAS2R,YAAY,iBACtCD,EAAWE,UAAU,SAAS,GAAO,GACrCpc,EAAQqc,cAAcH,KAG9BggH,EAAep/H,UAAUoe,iBAAmB,WACX,uBAAzBte,KAAKoD,QAAQsM,QACb1P,KAAKwzE,YAAY,MAGjBxzE,KAAKwzE,YAAYxzE,KAAK0tE,gBAG9B4xD,EAAep/H,UAAUgjI,cAAgB,WAChC,eAAkBljI,KAAKoiI,WACxB,eAAWpiI,KAAKoiI,SAAU,CACtB,MAASpiI,KAAKya,KAAKC,YAAY,kBAC/B,aAAc1a,KAAKya,KAAKC,YAAY,oBAGvC,eAAkB1a,KAAKqiI,SACxB,eAAWriI,KAAKqiI,OAAQ,CACpB,MAASriI,KAAKya,KAAKC,YAAY,kBAC/B,aAAc1a,KAAKya,KAAKC,YAAY,qBAIhD4kH,EAAep/H,UAAU0T,WAAa,WAClC,OAAa9H,IAAI9L,KAAKoD,QAAS,QAASpD,KAAK4zC,aAAc5zC,MAC3D,OAAa8L,IAAI9L,KAAKoD,QAAS,OAAQpD,KAAK6zC,gBAAiB7zC,MAC7D,OAAa8L,IAAI9L,KAAKoD,QAAS,UAAWpD,KAAKkmG,eAAgBlmG,MAC/D,OAAa8L,IAAI9L,KAAKoD,QAAS,QAASpD,KAAKy0C,aAAcz0C,MAC3D,OAAa8L,IAAI9L,KAAKoD,QAAS,QAASpD,KAAK2d,aAAc3d,MAC3D,OAAa8L,IAAI9L,KAAKoD,QAAS,WAAYpD,KAAKyzH,gBAAiBzzH,MACjE,OAAa8L,IAAI9L,KAAKoD,QAAS,SAAUpD,KAAKqwC,cAAerwC,MAC7D,OAAa8L,IAAI9L,KAAKoD,QAAS,QAASpD,KAAKmmG,aAAcnmG,MACvDA,KAAKqY,UACLrY,KAAKkf,iBACDlf,KAAK+/H,SACL,OAAaj0H,IAAI9L,KAAK+/H,QAAS,QAAS//H,KAAKse,iBAAkBte,QAI3Es/H,EAAep/H,UAAUoiI,kBAAoB,WAEzC,OAAax2H,IAAI9L,KAAKqiI,OAAQ,OAAQt2H,gBAAiB/L,KAAKmjI,mBAAoBnjI,MAChF,OAAa8L,IAAI9L,KAAKoiI,SAAU,OAAQr2H,gBAAiB/L,KAAKmjI,mBAAoBnjI,MAClF,OAAa8L,IAAI9L,KAAKqiI,OAAQ,OAAQ/tH,cAAetU,KAAKojI,iBAAkBpjI,MAC5E,OAAa8L,IAAI9L,KAAKoiI,SAAU,OAAQ9tH,cAAetU,KAAKojI,iBAAkBpjI,MAC9E,OAAa8L,IAAI9L,KAAKqiI,OAAQ,OAAQgB,eAAgBrjI,KAAKsjI,mBAAoBtjI,MAC/E,OAAa8L,IAAI9L,KAAKoiI,SAAU,OAAQiB,eAAgBrjI,KAAKsjI,mBAAoBtjI,OAErFs/H,EAAep/H,UAAUuU,aAAe,WACpC,OAAatP,OAAOnF,KAAKoD,QAAS,QAASpD,KAAK4zC,cAChD,OAAazuC,OAAOnF,KAAKoD,QAAS,OAAQpD,KAAK6zC,iBAC/C,OAAa1uC,OAAOnF,KAAKoD,QAAS,QAASpD,KAAKy0C,cAChD,OAAatvC,OAAOnF,KAAKoD,QAAS,QAASpD,KAAK2d,cAChD,OAAaxY,OAAOnF,KAAKoD,QAAS,UAAWpD,KAAKkmG,gBAClD,OAAa/gG,OAAOnF,KAAKoD,QAAS,WAAYpD,KAAKyzH,iBACnD,OAAatuH,OAAOnF,KAAKoD,QAAS,SAAUpD,KAAKqwC,eACjD,OAAalrC,OAAOnF,KAAKoD,QAAS,QAASpD,KAAKmmG,cAC5CnmG,KAAK+/H,SACL,OAAa56H,OAAOnF,KAAK+/H,QAAS,QAAS//H,KAAKse,mBAGxDghH,EAAep/H,UAAUqjI,oBAAsB,WAE3C,OAAap+H,OAAOnF,KAAKqiI,OAAQ,OAAQt2H,gBAAiB/L,KAAKmjI,oBAC/D,OAAah+H,OAAOnF,KAAKoiI,SAAU,OAAQr2H,gBAAiB/L,KAAKmjI,oBACjE,OAAah+H,OAAOnF,KAAKqiI,OAAQ,OAAQ/tH,cAAetU,KAAKojI,kBAC7D,OAAaj+H,OAAOnF,KAAKoiI,SAAU,OAAQ9tH,cAAetU,KAAKojI,kBAC/D,OAAaj+H,OAAOnF,KAAKqiI,OAAQ,OAAQgB,eAAgBrjI,KAAKsjI,oBAC9D,OAAan+H,OAAOnF,KAAKoiI,SAAU,OAAQiB,eAAgBrjI,KAAKsjI,qBAEpEhE,EAAep/H,UAAUmwC,cAAgB,SAAU3hC,GAC/CA,EAAMuQ,kBACDjf,KAAKoD,QAAQqV,MAAM9X,QACpBX,KAAKiL,cAAc,CAAEwN,MAAO,OAAQ,GAExC,IAAI+qH,EAAcxjI,KAAKkzC,SAAS2rC,gBAAgB,CAAEviE,OAAQ,KAAxCtc,CAA+CA,KAAKoD,QAAQqV,OAC9EzY,KAAKwzE,YAAYgwD,EAAa90H,IAElC4wH,EAAep/H,UAAU6iI,iBAAmB,SAAUr0H,GAElD,GADA1O,KAAKyjI,WAAc,eAAkBzjI,KAAKyjI,aAAehoH,MAAMzb,KAAKyjI,YAAe,KAAOzjI,KAAKyjI,WAC3FzjI,KAAKs0E,YAAct0E,KAAKyY,OAASzY,KAAKs0E,YAAct0E,KAAKyjI,WAAY,CACrE,IAAIn9G,EAAY,GAChBtmB,KAAKs+H,gBAAkB,CAAE7lH,MAAOzY,KAAKyY,MAAOi2B,cAAe1uC,KAAKs0E,UAAW3lE,aAAc3O,KAAK6iI,WAC1Fa,cAAe1jI,KAAK6iI,WAAYn0H,MAAOA,GACvCA,IACA1O,KAAKs+H,gBAAgB5vH,MAAQA,QAEEnD,IAA/BvL,KAAKs+H,gBAAgB5vH,QACrB1O,KAAKs+H,gBAAgB3vH,cAAe,EACpC3O,KAAKs+H,gBAAgBoF,eAAgB,GAEzC,gBAAMp9G,EAAWtmB,KAAKs+H,iBACtBt+H,KAAKs0E,UAAYt0E,KAAKyY,MACtBzY,KAAK6iI,YAAa,EAClB7iI,KAAKohI,iBAAmBphI,KAAKoD,QAAQqV,MACrCzY,KAAKqX,eAAgB,EACrBrX,KAAKiI,QAAQ,SAAUqe,KAG/Bg5G,EAAep/H,UAAUimG,aAAe,WACpC,IAAI9iG,EAAQrD,KACZ,GAAKA,KAAKqY,UAAWrY,KAAKwZ,SAA1B,CAGA,IAAImqH,EAAe3jI,KAAKoD,QAAQqV,MAChCrL,YAAW,WACF/J,EAAMugI,eAAenmH,KAAKpa,EAAMD,QAAQqV,QACzCpV,EAAM4/H,gBAAgBU,QAIlCrE,EAAep/H,UAAU2jI,eAAiB,WACtC,IAAIxgI,EAAQrD,KACR8jI,IAAQx9B,UAAUC,UAAY,mBAAmB9oF,KAAK6oF,UAAUC,UACpEn5F,YAAW,WACP,GAAI/J,EAAMD,QAAQyd,eAAiB,EAAG,CAClC,IAAIkjH,EAAa1gI,EAAMD,QAAQyd,eAC3BmjH,EAAU3gI,EAAMD,QAAQyd,eAAiB,EACzCqB,EAAQ,EACR+hH,EAAW5gI,EAAMD,QAAQqV,MAAMxU,MAAM,IACrCigI,EAAgB,eAAiB7gI,EAAMmX,QACvCklH,EAAmB,eAAS,UAAWwE,GACvCC,EAAgBzE,EAAiB0E,WAAW,GACX,MAAjC/gI,EAAMD,QAAQqV,MAAMurH,IAAoB3gI,EAAMD,QAAQyd,eAAiB,IAAMijH,GACzE,eAAkBzgI,EAAMghI,SACxBhhI,EAAMD,QAAQqV,MAAQpV,EAAMD,QAAQqV,MAAMlM,OAEzB,IAAZy3H,EACL3gI,EAAMD,QAAQqV,MAAQpV,EAAMghI,QAEX,IAAZL,IACL3gI,EAAMD,QAAQqV,MAAQpV,EAAMD,QAAQqV,MAAMlM,QAE9ClJ,EAAMD,QAAQkuE,kBAAkB0yD,EAASA,IAEpCvoH,MAAM3U,WAAWzD,EAAMD,QAAQqV,MAAMpV,EAAMD,QAAQyd,eAAiB,MACD,KAAxExd,EAAMD,QAAQqV,MAAMpV,EAAMD,QAAQyd,eAAiB,GAAGujH,WAAW,IAC5DH,EAASjgI,QAAQX,EAAMD,QAAQqV,MAAMpV,EAAMD,QAAQyd,eAAiB,MACrEojH,EAASK,YAAYjhI,EAAMD,QAAQqV,MAAMpV,EAAMD,QAAQyd,eAAiB,KACxExd,EAAMD,QAAQqV,MAAMpV,EAAMD,QAAQyd,eAAiB,GAAGujH,WAAW,KAAOD,GACxE9gI,EAAMD,QAAQqV,MAAMpV,EAAMD,QAAQyd,eAAiB,GAAGujH,WAAW,KAAOD,KACxE9gI,EAAMD,QAAQqV,MAAQpV,EAAMD,QAAQqV,MAAM8rH,UAAU,EAAGP,GACnD3gI,EAAMD,QAAQqV,MAAM8rH,UAAUR,EAAY1gI,EAAMD,QAAQqV,MAAM9X,QAClE0C,EAAMD,QAAQkuE,kBAAkB0yD,EAASA,GACrCvoH,MAAM3U,WAAWzD,EAAMD,QAAQqV,MAAMpV,EAAMD,QAAQyd,eAAiB,MAAQxd,EAAMD,QAAQyd,eAAiB,GACxGxd,EAAMD,QAAQqV,MAAM9X,QACvB0C,EAAMwgI,kBAITpoH,MAAM3U,WAAWzD,EAAMD,QAAQqV,MAAMpV,EAAMD,QAAQyd,eAAiB,MAAQxd,EAAMD,QAAQyd,eAAiB,GACxC,KAAxExd,EAAMD,QAAQqV,MAAMpV,EAAMD,QAAQyd,eAAiB,GAAGujH,WAAW,KAC5DH,EAASjgI,QAAQX,EAAMD,QAAQqV,MAAMpV,EAAMD,QAAQyd,eAAiB,MACrEojH,EAASK,YAAYjhI,EAAMD,QAAQqV,MAAMpV,EAAMD,QAAQyd,eAAiB,KACxExd,EAAMD,QAAQqV,MAAMpV,EAAMD,QAAQyd,eAAiB,GAAGujH,WAAW,KAAOD,GACxE9gI,EAAMD,QAAQqV,MAAMpV,EAAMD,QAAQyd,eAAiB,GAAGujH,WAAW,KAAOD,KACxE9gI,EAAMD,QAAQkuE,kBAAkB0yD,EAASA,GACzC3gI,EAAMu2D,QAAUv2D,EAAMD,QAAQqV,MAAMpV,EAAMD,QAAQyd,gBAClDxd,EAAMmhI,kBAAmB,EACzBnhI,EAAMwgI,mBAGiB,IAA3BxgI,EAAMmhI,kBAA6BnhI,EAAMD,QAAQqV,MAAMpV,EAAMD,QAAQyd,kBAAoBxd,EAAMu2D,SAC/Fn+C,MAAM3U,WAAWzD,EAAMD,QAAQqV,MAAMpV,EAAMD,QAAQyd,eAAiB,OACpExd,EAAMD,QAAQkuE,kBAAkBjuE,EAAMD,QAAQyd,eAAiB,EAAGxd,EAAMD,QAAQyd,eAAiB,GACjGxd,EAAMmhI,kBAAmB,EACzBnhI,EAAMu2D,QAAU,MAEe,KAA/Bv2D,EAAMD,QAAQqV,MAAMlM,QACpBlJ,EAAMD,QAAQkuE,kBAAkBpvD,EAAOA,GAEvC7e,EAAMD,QAAQyd,eAAiB,IAC8C,KAAxExd,EAAMD,QAAQqV,MAAMpV,EAAMD,QAAQyd,eAAiB,GAAGujH,WAAW,IAAc/gI,EAAMD,QAAQyd,eAAiB,IAC3G,eAAkBxd,EAAMghI,SAExBhhI,EAAMD,QAAQqV,MAAQpV,EAAMD,QAAQqV,MAGpCpV,EAAMD,QAAQqV,MAAQpV,EAAMghI,QAEhChhI,EAAMD,QAAQkuE,kBAAkBjuE,EAAMD,QAAQyd,eAAgBxd,EAAMD,QAAQyd,iBAE5Exd,EAAMD,QAAQqV,MAAMpV,EAAMD,QAAQyd,eAAiB,KAAO6+G,GAAuC,IAAnBr8H,EAAM49H,UAAkB59H,EAAMohI,wBAC5GphI,EAAMD,QAAQqV,MAAQpV,EAAMD,QAAQqV,MAAM8rH,UAAU,EAAGP,GACnD3gI,EAAMD,QAAQqV,MAAM8rH,UAAUR,EAAY1gI,EAAMD,QAAQqV,MAAM9X,UAG1E0C,EAAMghI,QAAUhhI,EAAMD,QAAQqV,WAI1C6mH,EAAep/H,UAAUu0C,aAAe,WACpC,GAAKz0C,KAAKqY,UAAWrY,KAAKwZ,SAA1B,CAGA,IAAIsqH,IAAQx9B,UAAUC,UAAY,mBAAmB9oF,KAAK6oF,UAAUC,WAC/Du9B,GAAO,OAAQn0H,UAChB3P,KAAK6jI,iBAET,IAAIa,EAAa1kI,KAAKkzC,SAAS2rC,gBAAgB,CAAEviE,OAAQ,KAAxCtc,CAA+CA,KAAKoD,QAAQqV,OAC7EisH,EAA4B,OAAfA,GAAuBjpH,MAAMipH,GAAc,KAAOA,EAC/D1kI,KAAKmhI,YAAY1oH,MAAQisH,GAA6B,IAAfA,EAAmBA,EAAW9yH,WAAa,KAClF,IAAIyM,EAAc,eAAQre,KAAKoD,QAAS,QACxC,GAAIib,EAAa,CACb,IAAIjb,EAAUpD,KAAKoD,QAAQ6wC,mBACvB30B,EAAa1R,SAAS2R,YAAY,iBACtCD,EAAWE,UAAU,SAAS,GAAO,GACrCpc,EAAQqc,cAAcH,MAG9BggH,EAAep/H,UAAUyd,aAAe,SAAUjP,GAE9C,IAAIi2H,EAAoB3kI,KACxB,GAAKA,KAAKqY,UAAWrY,KAAKwZ,SAA1B,CAGA,IAAIsqH,IAAQx9B,UAAUC,UAAY,mBAAmB9oF,KAAK6oF,UAAUC,UAChEq+B,EAAUt+B,UAAUpqD,UAAUr6B,cAAc7d,QAAQ,YAAc,EAKtE,IAJK4gI,GAAWd,IAAQ,OAAQn0H,UAC5B3P,KAAK6jI,iBAGL7jI,KAAKoX,WACFpX,KAAKoD,QAAQqV,QAAU,eAAS,UAAW,eAAiBzY,KAAKwa,UACjExa,KAAKoD,QAAQqV,QAAU,eAAS,YAAa,eAAiBzY,KAAKwa,SAAU,CAChF,IAAIqqH,EAAc7kI,KAAKkzC,SAAS2rC,gBAAgB,CAAEviE,OAAQ,KAAxCtc,CAA+CA,KAAKoD,QAAQqV,OAC9EosH,EAAcppH,MAAMopH,GAAe,KAAOA,EAC1CF,EAAkBG,YAAY,CAAErsH,MAAOosH,IACvC7kI,KAAKqX,eAAgB,EAEzB,GAAIrX,KAAKm2B,MAAO,CACZ,IAAI8rE,EAAUjiG,KAAKkzC,SAAS2rC,gBAAgB,CAAEviE,OAAQ,KAAxCtc,CAA+CA,KAAKoD,QAAQqV,OACtE60B,EAAWttC,KAAKkzC,SAAS2rC,gBAAgB,CAAEviE,OAAQ,KAAxCtc,CAA+CA,KAAKohI,kBAE/D2D,EAAe,IAAI7sE,OAAO,aAC1B6sE,EAAatnH,KAAKzd,KAAKoD,QAAQqV,UAAoD,IAAxCzY,KAAKohI,iBAAiBp9H,QAAQ,OAAuD,IAAxChE,KAAKohI,iBAAiBp9H,QAAQ,OAAsE,MAAtDhE,KAAKoD,QAAQqV,MAAMzY,KAAKoD,QAAQqV,MAAM9X,OAAS,MACrLshG,EAAUjiG,KAAKyY,OAEnB,IAAI6N,EAAY,CACZ5X,MAAOA,EACP+J,MAAoB,OAAZwpF,GAAoBxmF,MAAMwmF,GAAW,KAAOA,EACpDvzD,cAA6B,OAAbpB,GAAqB7xB,MAAM6xB,GAAY,KAAOA,GAElEttC,KAAKqX,eAAgB,EACrBrX,KAAKohI,iBAAmBphI,KAAKoD,QAAQqV,MACrCzY,KAAKiI,QAAQ,QAASqe,MAG9Bg5G,EAAep/H,UAAUgmG,eAAiB,SAAUx3F,GAChD,IAAK1O,KAAKwZ,SACN,OAAQ9K,EAAM8E,SACV,KAAK,GACD9E,EAAMwE,iBACNlT,KAAK2gB,OAAOm+G,EAAWpwH,GACvB,MACJ,KAAK,GACDA,EAAMwE,iBACNlT,KAAK2gB,OAAOo+G,EAAWrwH,GACvB,MACJ,QAAS,QAIrB4wH,EAAep/H,UAAU4iI,cAAgB,SAAUrqH,EAAO2V,EAAMw0G,IAC9C,OAAVnqH,GAAkBgD,MAAMhD,MACxBA,EAAQ,GAEZ,IAAIusH,EAAepC,IAAc9D,EAAYrmH,EAAQ2V,EAAO3V,EAAQ2V,EAEpE,OADA42G,EAAehlI,KAAKilI,gBAAgBxsH,EAAO2V,EAAM42G,GAC1ChlI,KAAK2b,WAAa3b,KAAKghI,UAAUgE,GAAgBA,GAE5D1F,EAAep/H,UAAU+kI,gBAAkB,SAAUxsH,EAAO2V,EAAM4C,GAC9D,IAAIk0G,EAAW,IAAIhtE,OAAO,YACtBitE,EAAaD,EAASznH,KAAKhF,EAAM7G,YACjCwzH,EAAYF,EAASznH,KAAK2Q,EAAKxc,YACnC,GAAIuzH,GAAcC,EAAW,CACzB,IAAIC,EAAaF,EAAaD,EAASI,KAAK7sH,EAAM7G,YAAY,GAAGjR,OAAS,EACtE4kI,EAAYH,EAAYF,EAASI,KAAKl3G,EAAKxc,YAAY,GAAGjR,OAAS,EACnE0Y,EAAMlQ,KAAKkQ,IAAIgsH,EAAYE,GAC/B,OAAevlI,KAAKwlI,WAAWx0G,EAAQ3X,GAE3C,OAAO2X,GAEXsuG,EAAep/H,UAAUslI,WAAa,SAAUx0G,EAAQy0G,GACpDA,EAAYA,GAAa,EACzB,IAAIC,EAASv8H,KAAKw8H,IAAI,GAAIF,GAC1B,OAAOz0G,GAAU00G,EAAiBv8H,KAAKC,MAAM4nB,GAAU00G,GAE3DpG,EAAep/H,UAAUszE,YAAc,SAAU/6D,EAAO/J,GAChDA,IACA1O,KAAK6iI,YAAa,GAER,OAAVpqH,GAAmBgD,MAAMhD,IACrBzY,KAAKihI,WACLxoH,EAAQzY,KAAKkhI,YAAYzoH,EAAOzY,KAAKihI,WAG7CjhI,KAAKyjI,WAAahrH,EAClBzY,KAAK+gI,YAAsB,OAAVtoH,GAAkBgD,MAAMhD,GAAS,KAAOzY,KAAK2b,WAAa3b,KAAKghI,UAAUvoH,GAASA,GAE9FzY,KAAKu/H,iBACNv/H,KAAK+iI,iBAAiBr0H,IAG9B4wH,EAAep/H,UAAU0lI,eAAiB,SAAUvwH,EAAMwwH,GACtD,gBAASxwH,EAAMwwH,EAAS7lI,KAAKqgI,aAC7BrgI,KAAKwzE,YAAYxzE,KAAKyY,QAE1B6mH,EAAep/H,UAAU6gI,YAAc,SAAUtoH,GAC7C,GAAMA,GAAmB,IAAVA,EAIV,CACD,IAAIqtH,EAAmB9lI,KAAK+lI,oBAAoBttH,GAChDzY,KAAKiL,cAAc,CAAEwN,MAAOzY,KAAKkhI,YAAYzoH,EAAOqtH,KAAqB,QALzErtH,EAAQ,KACRzY,KAAKiL,cAAc,CAAEwN,MAAOA,IAAS,GAMzCzY,KAAKgmI,aACAhmI,KAAK2b,YACN3b,KAAKkxE,iBAGbouD,EAAep/H,UAAU8lI,WAAa,WAClC,GAAIhmI,KAAKyY,OAAwB,IAAfzY,KAAKyY,MAAa,CAChC,IAAIA,EAAQzY,KAAKimI,eACb5vD,EAAer2E,KAAKyX,UAAYgB,EAAQzY,KAAKkzC,SAASyrC,gBAAgB3+E,KAAKqgI,YAAnCrgI,CAAgDA,KAAKyY,OACjGzY,KAAKijI,gBAAgB5sD,GACrB,eAAWr2E,KAAKoD,QAAS,CAAE,gBAAiBqV,IAC5CzY,KAAKmhI,YAAY1oH,MAAQzY,KAAKyY,MAAM7G,WACjB,OAAf5R,KAAKyY,OAAkBzY,KAAKkmI,yBAC5BlmI,KAAKmhI,YAAY1oH,MAAQzY,KAAKmhI,YAAY1oH,MAAMoC,QAAQ,IAAK7a,KAAKkmI,8BAItElmI,KAAKijI,gBAAgB,IACrBjjI,KAAKoD,QAAQwH,gBAAgB,iBAC7B5K,KAAKmhI,YAAY1oH,MAAQ,MAGjC6mH,EAAep/H,UAAU+iI,gBAAkB,SAAUpmH,EAAKzZ,GACtD,OAAMyc,SAAShD,EAAMzZ,GAAoBpD,KAAKoD,QAAUpD,KAAK8X,eAAgB9X,KAAKib,kBAEtFqkH,EAAep/H,UAAUgxE,cAAgB,WACrClxE,KAAKi5E,cAAe,GAChBj5E,KAAKyY,OAAwB,IAAfzY,KAAKyY,SACnBzY,KAAKi5E,eAAiBj5E,KAAKyY,MAAQzY,KAAKqZ,KAAOrZ,KAAKyY,MAAQzY,KAAKyc,MAErEzc,KAAKgjI,mBAET1D,EAAep/H,UAAU6lI,oBAAsB,SAAUttH,GACrD,IAAIqtH,EAEAK,EAAY,IAAIjuE,OAAO,qBACvB76C,EAAc5E,EAAM7G,WACxB,GAAIu0H,EAAU1oH,KAAKJ,GAAc,CAC7B,IAAI2T,EAASm1G,EAAUb,KAAKjoH,GACvB,eAAkB2T,KACnB3T,EAAc5E,EAAMu2G,QAAQ7lH,KAAKsT,IAAI9K,SAASqf,EAAO,GAAI,IAAK,MAGtE,IAAIo1G,EAAc/oH,EAAYpZ,MAAM,KAAK,GAKzC,OAJA6hI,EAAoBM,GAAgBA,EAAYzlI,OAAaylI,EAAYzlI,OAAhB,EACnC,OAAlBX,KAAKihI,WACL6E,EAAmBA,EAAmB9lI,KAAKihI,SAAW6E,EAAmB9lI,KAAKihI,UAE3E6E,GAEXxG,EAAep/H,UAAU+lI,aAAe,WACpC,IAAIH,EAAmB9lI,KAAK+lI,oBAAoB/lI,KAAKyY,OACrD,OAAOzY,KAAKkzC,SAASyrC,gBAAgB,CACjC8jD,sBAAuBqD,EACvBpD,sBAAuBoD,EAAkBnD,aAAa,GAFnD3iI,CAGJA,KAAKyY,QAEZ6mH,EAAep/H,UAAU8gI,UAAY,SAAUvoH,GAC3C,OAAIA,EAAQzY,KAAKqZ,IACNrZ,KAAKqZ,IAEZZ,EAAQzY,KAAKyc,IACNzc,KAAKyc,IAEThE,GAEX6mH,EAAep/H,UAAUghI,YAAc,SAAUzoH,EAAOgtH,GACpD,IAAIz0G,EAASvY,EACTwoH,EAAWwE,GAAa,EACxBY,EAAUr1G,EAAOpf,WAAW3N,MAAM,KACtC+sB,EAAS7nB,KAAKC,MAAM2nC,OAAOs1F,EAAQ,GAAK,KAAOA,EAAQ,GAAMt1F,OAAOs1F,EAAQ,IAAMpF,EAAYA,KAC9F,IAAIqF,EAAUt1G,EAAOpf,WAAW3N,MAAM,KAEtC,OADA+sB,EAAS+f,OAAOu1F,EAAQ,GAAK,KAAOA,EAAQ,GAAMv1F,OAAOu1F,EAAQ,IAAMrF,GAAaA,IAC7ElwF,OAAO/f,EAAOg+F,QAAQiS,KAEjC3B,EAAep/H,UAAUqmI,YAAc,SAAU73H,GAE7C,OADAA,EAAMwE,kBACC,GAEXosH,EAAep/H,UAAUuzH,gBAAkB,SAAU/kH,GACjD,IAAK1O,KAAKqY,SAAWrY,KAAKwZ,SACtB,OAAO,EAEX,IAAK,OAAQ7J,UAAqC,SAAzB,OAAQ+rC,KAAK8qF,SAAwC,KAAlB93H,EAAM8E,QAAgB,CAC9E,IAAIgwH,EAAcxjI,KAAKkzC,SAAS2rC,gBAAgB,CAAEviE,OAAQ,KAAxCtc,CAA+CA,KAAKoD,QAAQqV,OAE9E,OADAzY,KAAKwzE,YAAYgwD,EAAa90H,IACvB,EAEX,GAAoB,IAAhBA,EAAMm+E,OAAen+E,EAAMg4F,SAAWh4F,EAAMk4F,SAA6B,IAAlBl4F,EAAM8E,SAAmC,KAAlB9E,EAAM8E,QACpF,OAAO,EAEX,IAAIizH,EAAcC,OAAOC,aAAaj4H,EAAMm+E,OACxC6yC,EAAmB,eAAS,UAAW,eAAiB1/H,KAAKwa,SAC7DosH,EAA0C,kBAAfl4H,EAAMmQ,MAA4B4nH,IAAgB/G,EAE7EkH,IACAH,EAAc/G,GAElB,IAAI5tG,EAAO9xB,KAAKoD,QAAQqV,MAExB,GADAqZ,EAAOA,EAAKyyG,UAAU,EAAGvkI,KAAKoD,QAAQyd,gBAAkB4lH,EAAc30G,EAAKyyG,UAAUvkI,KAAKoD,QAAQ0d,cAC7F9gB,KAAK4jI,eAAenmH,KAAKqU,GAKzB,CAED,GAAI80G,EAA0B,CAC1B,IAAI1kH,EAAQliB,KAAKoD,QAAQyd,eAAiB,EAC1C7gB,KAAKoD,QAAQqV,MAAQqZ,EACrB9xB,KAAKoD,QAAQkuE,kBAAkBpvD,EAAOA,GACtCxT,EAAMwE,iBACNxE,EAAMuQ,kBAEV,OAAO,EAXP,OAFAvQ,EAAMwE,iBACNxE,EAAMuQ,mBACC,GAcfqgH,EAAep/H,UAAU0jI,aAAe,WACpC,IAAIM,EAAgB,eAAiBlkI,KAAKwa,QACtCklH,EAAmB,eAAS,UAAWwE,GACvC2C,EAAe,IAInB,OAHInH,IAAqBT,IACrBS,EAAmB,KAAOA,GAER,IAAlB1/H,KAAKihI,UAAkBjhI,KAAKykI,sBACrBzF,GAEPh/H,KAAKihI,UAAYjhI,KAAKykI,wBACtBoC,EAAe,MAAQ7mI,KAAKihI,SAAW,KAGpC,IAAI/oE,OAAO,gBAAkBwnE,EAAmB,MAAQmH,EAC3D,QAAUnH,EAAmB,MAAQmH,EAAe,WAE5DvH,EAAep/H,UAAU4mI,WAAa,SAAUp4H,GAE5C,IAAIq4H,EADJr4H,EAAMwE,iBAGN,IAAI8zH,EAAWt4H,EACXs4H,EAASC,WACTF,EAAQC,EAASC,WAAa,IAEzBD,EAASE,SACdH,GAASC,EAASE,OAAS,GAE3BH,EAAQ,EACR/mI,KAAK2gB,OAAOm+G,EAAWpwH,GAElBq4H,EAAQ,GACb/mI,KAAK2gB,OAAOo+G,EAAWrwH,GAE3B1O,KAAKumI,YAAY73H,IAErB4wH,EAAep/H,UAAU0zC,aAAe,SAAUllC,GAC9C,IAAIrL,EAAQrD,KAIZ,GAHA8M,aAAauyH,GACbr/H,KAAKmnI,eAAiB,CAAEz4H,MAAOA,EAAO+J,MAAOzY,KAAKyY,MAAOjJ,UAAWxP,KAAKwP,WACzExP,KAAKiI,QAAQ,QAASjI,KAAKmnI,gBACtBnnI,KAAKqY,UAAWrY,KAAKwZ,SAA1B,CAMA,GAHAxZ,KAAKyX,WAAY,EACjB,gBAAY,CAACzX,KAAKwP,WAAY2G,GAC9BnW,KAAKs0E,UAAYt0E,KAAKyY,MACjBzY,KAAKyY,OAAwB,IAAfzY,KAAKyY,MAAc,CAClC,IAAI2uH,EAAgBpnI,KAAKimI,eAEzB,GADAjmI,KAAKijI,gBAAgBmE,IAChBpnI,KAAKy/H,cACN,GAAK,OAAQ9vH,UAAqC,SAAzB,OAAQ+rC,KAAK8qF,QAGjC,CACD,IAAIvjI,EAAS,OAAQ0M,UAAY,OAAQ03H,MAAS,IAAM,EACxDhI,EAAmBjyH,YAAW,WAC1B/J,EAAMD,QAAQkuE,kBAAkB,EAAG81D,EAAczmI,UAClDsC,QANHjD,KAAKoD,QAAQkuE,kBAAkB,EAAG81D,EAAczmI,QAUvD,OAAQgP,UACT,OAAa7D,IAAI9L,KAAKoD,QAAS,4BAA6BpD,KAAK8mI,WAAY9mI,QAGrFs/H,EAAep/H,UAAU2zC,gBAAkB,SAAUnlC,GACjD,IAAIrL,EAAQrD,KAGZ,GAFAA,KAAKsnI,cAAgB,CAAE54H,MAAOA,EAAO+J,MAAOzY,KAAKyY,MAAOjJ,UAAWxP,KAAKwP,WACxExP,KAAKiI,QAAQ,OAAQjI,KAAKsnI,eACrBtnI,KAAKqY,UAAWrY,KAAKwZ,SAA1B,CAGA,GAAIxZ,KAAKy/H,eAEL,GADA/wH,EAAMwE,iBACF,OAAQvD,SAAU,CAClB,IAAImmE,EAAU91E,KAAKoD,QAAQqV,MAC3BzY,KAAKoD,QAAQ2c,QACb/f,KAAKy/H,eAAgB,EACrB,IAAIjzE,EAAQxsD,KAAKoD,QACjBgK,YAAW,WACP/J,EAAM4/H,gBAAgBntD,EAAStpB,KAChC,UAGN,CACDxsD,KAAKyX,WAAY,EACZzX,KAAKoD,QAAQqV,MAAM9X,QACpBX,KAAKiL,cAAc,CAAEwN,MAAO,OAAQ,GAExC,IAAI+qH,EAAcxjI,KAAKkzC,SAAS2rC,gBAAgB,CAAEviE,OAAQ,KAAxCtc,CAA+CA,KAAKoD,QAAQqV,OAC9EzY,KAAKwzE,YAAYgwD,GACZ,OAAQ7zH,UACT,OAAaxK,OAAOnF,KAAKoD,QAAS,4BAA6BpD,KAAK8mI,YAG5E,IAAIzoH,EAAc,eAAQre,KAAKoD,QAAS,QACxC,GAAIib,EAAa,CACb,IAAIjb,EAAUpD,KAAKoD,QAAQ6wC,mBACvBszF,EAAa35H,SAAS2R,YAAY,cACtCgoH,EAAW/nH,UAAU,YAAY,GAAO,GACxCpc,EAAQqc,cAAc8nH,MAG9BjI,EAAep/H,UAAUijI,mBAAqB,SAAUz0H,GACpD,IAAIrL,EAAQrD,KAKZ,GAJIA,KAAKyX,YACLzX,KAAKy/H,eAAgB,EACrB/wH,EAAMwE,kBAELlT,KAAKwnI,eAAe94H,GAAzB,CAIa1O,KAAKwnI,eAAe94H,GAAjC,IACIpO,EAASoO,EAAM8G,cACfmL,EAAUrgB,EAAO4E,UAAUmB,SAASu4H,GAAWE,EAAYC,EAC/D,OAAajzH,IAAIxL,EAAQ,aAAcN,KAAKynI,aAAcznI,MAC1DA,KAAK0nI,QAAUtpE,aAAY,WACvB/6D,EAAMu8H,UAAW,EACjBv8H,EAAMsd,OAAOA,EAAQjS,KACtB,KACH,OAAa5C,IAAI8B,SAAU,UAAW5N,KAAKynI,aAAcznI,QAE7Ds/H,EAAep/H,UAAUojI,mBAAqB,SAAU50H,GACpD,IAAIpO,EACJ,GAAmB,cAAfoO,EAAMF,KAAsB,CAC5B,IAAIm5H,EAAaj5H,EAAMyE,QACvB7S,EAASqnI,EAAWhnI,QAAUiN,SAASg6H,iBAAiBD,EAAW,GAAGv0H,MAAOu0H,EAAW,GAAGt0H,YAG3F/S,EAASsN,SAASg6H,iBAAiBl5H,EAAMm5H,QAASn5H,EAAMo5H,SAEtDxnI,EAAO4E,UAAUmB,SAASs4H,IAC5B3gE,cAAch+D,KAAK0nI,UAG3BpI,EAAep/H,UAAUkjI,iBAAmB,SAAU10H,GAWlD,GAVA1O,KAAKs0E,UAAYt0E,KAAKyY,MAClBzY,KAAKy/H,gBACLz/H,KAAKoD,QAAQ2c,QACR,OAAQpQ,WACT3P,KAAKy/H,eAAgB,IAGxB,OAAQ9vH,UACTjB,EAAMwE,iBAELlT,KAAKwnI,eAAe94H,GAAzB,CAGA,IAAIpO,EAASoO,EAAM8G,cACfmL,EAAUrgB,EAAO4E,UAAUmB,SAASu4H,GAAWE,EAAYC,EAC/D,OAAa55H,OAAO7E,EAAQ,aAAcN,KAAKynI,cAC1CznI,KAAK4/H,UACN5/H,KAAK2gB,OAAOA,EAAQjS,GAExB1O,KAAK4/H,UAAW,EAChB,OAAaz6H,OAAOyI,SAAU,UAAW5N,KAAKynI,cAC9C,IAAIppH,EAAc,eAAQre,KAAKoD,QAAS,QACxC,GAAIib,EAAa,CACb,IAAIjb,EAAUpD,KAAKoD,QAAQ6wC,mBACvB30B,EAAa1R,SAAS2R,YAAY,iBACtCD,EAAWE,UAAU,SAAS,GAAO,GACrCpc,EAAQqc,cAAcH,MAG9BggH,EAAep/H,UAAUsnI,eAAiB,SAAU94H,GAChD,QAAKA,EAAMm+E,OAAyB,IAAhBn+E,EAAMm+E,OAAiBn+E,EAAM6nF,QAA2B,IAAjB7nF,EAAM6nF,SACzDv2F,KAAKqY,SAAWrY,KAAKwZ,YAG7BwkD,cAAch+D,KAAK0nI,UACZ,IAEXpI,EAAep/H,UAAU6nI,qBAAuB,WAC5C,OAAMv9G,eAAexqB,KAAKiY,cAC1B,IAAIkpH,EAAcnhI,KAAKmhI,YACvBnhI,KAAKmhI,YAAYh8H,SACjB,OAAMslB,YAAYzqB,KAAKoD,QAASpD,KAAK8X,eAAgB9X,KAAKga,YAAaha,KAAKuE,eAC5EvE,KAAKwP,UAAUgW,aAAa27G,EAAanhI,KAAKwP,UAAUslC,WAAW,KAEvEwqF,EAAep/H,UAAUunI,aAAe,SAAU/4H,GAC9CA,EAAMuQ,kBACN++C,cAAch+D,KAAK0nI,SACnB1nI,KAAK4/H,UAAW,EACZ5/H,KAAKqiI,QACL,OAAal9H,OAAOnF,KAAKqiI,OAAQ,aAAcriI,KAAKynI,cAEpDznI,KAAKoiI,UACL,OAAaj9H,OAAOnF,KAAKoiI,SAAU,aAAcpiI,KAAKynI,eAU9DnI,EAAep/H,UAAUouB,UAAY,SAAUF,QAC9B,IAATA,IAAmBA,EAAOpuB,KAAKouB,MACnCpuB,KAAK6iI,YAAa,EAClB7iI,KAAK+gI,YAAY/gI,KAAK8iI,cAAc9iI,KAAKyY,MAAO2V,EAAM0wG,IACtD9+H,KAAK+iI,oBASTzD,EAAep/H,UAAUiuB,UAAY,SAAUC,QAC9B,IAATA,IAAmBA,EAAOpuB,KAAKouB,MACnCpuB,KAAK6iI,YAAa,EAClB7iI,KAAK+gI,YAAY/gI,KAAK8iI,cAAc9iI,KAAKyY,MAAO2V,EAAM2wG,IACtD/+H,KAAK+iI,oBASTzD,EAAep/H,UAAUsS,QAAU,WAC/BxS,KAAKyU,eACL,eAAOzU,KAAKmhI,aACRnhI,KAAK4gI,iBACL5gI,KAAKujI,sBACL,eAAOvjI,KAAKqiI,QACZ,eAAOriI,KAAKoiI,WAKhB,IAHA,IAAI4F,EAAY,CAAC,kBAAmB,OAAQ,eAAgB,gBACxD,gBAAiB,iBAAkB,aAAc,oBAAqB,WACtE,gBAAiB,gBAAiB,gBAAiB,gBAC9ChnI,EAAI,EAAGA,EAAIgnI,EAAUrnI,OAAQK,IAClChB,KAAKoD,QAAQwH,gBAAgBo9H,EAAUhnI,IAE3ChB,KAAKoD,QAAQ8B,UAAUC,OAAO,WAC9BnF,KAAKwP,UAAUgY,sBAAsB,WAAYxnB,KAAKoD,SACtD,eAAOpD,KAAKwP,WACZxP,KAAKqiI,OAAS,KACdriI,KAAKoiI,SAAW,KAChBpiI,KAAKwP,UAAY,KACjBxP,KAAKmhI,YAAc,KACnBnhI,KAAKs+H,gBAAkB,KACvBt+H,KAAKsnI,cAAgB,KACrBtnI,KAAKmnI,eAAiB,KACtBnnI,KAAKiY,aAAe,KACpB,OAAMzF,UACN3P,EAAO3C,UAAUsS,QAAQlP,KAAKtD,OAOlCs/H,EAAep/H,UAAUmuB,QAAU,WAC/B,OAAOruB,KAAKoD,QAAQqV,OAQxB6mH,EAAep/H,UAAU+mB,QAAU,WAC3BrZ,SAASyT,gBAAkBrhB,KAAKoD,SAAWpD,KAAKqY,UAChDrY,KAAKoD,QAAQ2c,QACb,eAAS,CAAC/f,KAAKwP,WAAY,CAAC2vH,MAQpCG,EAAep/H,UAAU6hB,SAAW,WAC5BnU,SAASyT,gBAAkBrhB,KAAKoD,SAAWpD,KAAKqY,UAChDrY,KAAKoD,QAAQ0c,OACb,gBAAY,CAAC9f,KAAKwP,WAAY,CAAC2vH,MASvCG,EAAep/H,UAAU6U,eAAiB,WACtC,IAAIi3B,EAAY,CAAC,SACjB,OAAOhsC,KAAKgV,aAAag3B,IAW7BszF,EAAep/H,UAAU+U,kBAAoB,SAAUC,EAASC,GAC5D,IAAK,IAAItH,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKF,GAAUrH,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC9D,IAAIwH,EAAOxR,EAAGgK,GACd,OAAQwH,GACJ,IAAK,QACDrV,KAAK8gI,gBAAgB5rH,EAAQ5P,OAC7B,OAAMyS,eAAe/X,KAAKoD,QAASpD,KAAKwP,WACxC,MACJ,IAAK,WACDxP,KAAKqgB,eAAenL,EAAQzK,SAAU0K,EAAQ1K,UAC9C,MACJ,IAAK,UACD,OAAM2f,WAAWlV,EAAQmD,QAASrY,KAAKoD,SACvCpD,KAAKkf,iBACL,MACJ,IAAK,YACD,OAAMoL,aAAapV,EAAQzP,UAAW,CAACzF,KAAKwP,YAC5C,MACJ,IAAK,WACD,OAAM2a,YAAYjV,EAAQsE,SAAUxZ,KAAKoD,SACrCpD,KAAKwZ,SACL,eAAWxZ,KAAKoD,QAAS,CAAE,gBAAiB,SAG5CpD,KAAKoD,QAAQwH,gBAAgB,iBAEjC,MACJ,IAAK,iBACD5K,KAAKwgI,0BACLxgI,KAAK4hI,0BACL5hI,KAAK6hI,qBAAoB,GACzB7hI,KAAKwuE,iBAAgB,GACrB,OAAMy5D,kBAAkBjoI,KAAKwP,UAAWxP,KAAKoD,SAC7C,MACJ,IAAK,cACD,OAAM8mB,eAAehV,EAAQ8E,YAAaha,KAAKoD,SAC/C,OAAM2U,eAAe/X,KAAKoD,QAASpD,KAAKwP,WACxC,MACJ,IAAK,OACDxP,KAAKouB,KAAOlZ,EAAQkZ,KACpBpuB,KAAKygI,eACL,MACJ,IAAK,iBACDzgI,KAAKkoI,iBAAiBhzH,GACtB,MACJ,IAAK,kBACDlV,KAAKmoI,kBAAkBjzH,GACvB,MACJ,IAAK,iBACDlV,KAAK8X,eAAiB5C,EAAQ4C,eAC9B9X,KAAK+nI,uBACL,MACJ,IAAK,QACD/nI,KAAKu/H,iBAAmBv/H,KAAKoX,WAAapX,KAAKm2B,QAAUn2B,KAAKqX,cAC9DrX,KAAKwzE,YAAYt+D,EAAQuD,OACrBzY,KAAKu/H,kBACLv/H,KAAKqX,eAAgB,EACrBrX,KAAKu/H,iBAAkB,GAE3B,MACJ,IAAK,MACL,IAAK,MACD,gBAASlqH,EAAM,eAASA,EAAMH,GAAUlV,MACxCA,KAAK2yE,iBACL3yE,KAAKwzE,YAAYxzE,KAAKyY,OACtB,MACJ,IAAK,aACDzY,KAAK2b,WAAazG,EAAQyG,WAC1B3b,KAAKwzE,YAAYxzE,KAAKyY,OACtBzY,KAAKkxE,gBACL,MACJ,IAAK,SACDlxE,KAAKugI,kBACLvgI,KAAKya,KAAK4P,UAAUrqB,KAAKwa,QACzBxa,KAAKkjI,gBACLljI,KAAK0gI,oBACL,OAAMx2G,eAAelqB,KAAKga,YAAaha,KAAKoD,SAC5CpD,KAAKwzE,YAAYxzE,KAAKyY,OACtB,MACJ,IAAK,WAEG,IAAIotH,EAAU,eAASxwH,EAAMH,GAC7BlV,KAAKiL,cAAc,CAAEu2H,aAAcqE,IAAW,GAC9C7lI,KAAK4lI,eAAevwH,EAAMwwH,GAE9B,MACJ,IAAK,eAEG,IAAIuC,EAAY,eAAS/yH,EAAMH,GAC/BlV,KAAKiL,cAAc,CAAEs2H,SAAU6G,IAAa,GAC5CpoI,KAAK4lI,eAAe,WAAYwC,GAEpC,MACJ,IAAK,SACD,gBAAS/yH,EAAM,eAASA,EAAMH,GAAUlV,MACxCA,KAAKsgI,kBACLtgI,KAAKwzE,YAAYxzE,KAAKyY,OACtB,MACJ,IAAK,WACDzY,KAAKihI,SAAW/rH,EAAQ+rH,SACxBjhI,KAAKwzE,YAAYxzE,KAAKyY,UAItC6mH,EAAep/H,UAAUioI,kBAAoB,SAAUjzH,GACnD,OAAMqV,eAAerV,EAAQ+F,gBAAiBjb,KAAKoD,QAASpD,KAAKiY,kBAAc1M,EAAWvL,KAAKuE,eAC/FvE,KAAKkf,kBAETogH,EAAep/H,UAAUgoI,iBAAmB,SAAUhzH,GAC9CA,EAAQ0rH,eACR5gI,KAAK6gI,mBAGL,eAAO7gI,KAAKqiI,QACZ,eAAOriI,KAAKoiI,YASpB9C,EAAep/H,UAAU4U,cAAgB,WACrC,MAAO,kBAEX1U,EAAW,CACP,eAAS,KACVk/H,EAAep/H,UAAW,gBAAY,GACzCE,EAAW,CACP,eAAS,OACVk/H,EAAep/H,UAAW,aAAS,GACtCE,EAAW,CACP,gBAAW2wC,OAAgB,YAC5BuuF,EAAep/H,UAAW,WAAO,GACpCE,EAAW,CACP,eAAS2wC,OAAOwxF,YACjBjD,EAAep/H,UAAW,WAAO,GACpCE,EAAW,CACP,eAAS,IACVk/H,EAAep/H,UAAW,YAAQ,GACrCE,EAAW,CACP,eAAS,OACVk/H,EAAep/H,UAAW,aAAS,GACtCE,EAAW,CACP,eAAS,OACVk/H,EAAep/H,UAAW,mBAAe,GAC5CE,EAAW,CACP,eAAS,KACVk/H,EAAep/H,UAAW,sBAAkB,GAC/CE,EAAW,CACP,gBAAS,IACVk/H,EAAep/H,UAAW,sBAAkB,GAC/CE,EAAW,CACP,gBAAS,IACVk/H,EAAep/H,UAAW,gBAAY,GACzCE,EAAW,CACP,gBAAS,IACVk/H,EAAep/H,UAAW,eAAW,GACxCE,EAAW,CACP,gBAAS,IACVk/H,EAAep/H,UAAW,uBAAmB,GAChDE,EAAW,CACP,gBAAS,IACVk/H,EAAep/H,UAAW,yBAAqB,GAClDE,EAAW,CACP,eAAS,OACVk/H,EAAep/H,UAAW,cAAU,GACvCE,EAAW,CACP,eAAS,OACVk/H,EAAep/H,UAAW,gBAAY,GACzCE,EAAW,CACP,eAAS,OACVk/H,EAAep/H,UAAW,gBAAY,GACzCE,EAAW,CACP,eAAS,OACVk/H,EAAep/H,UAAW,oBAAgB,GAC7CE,EAAW,CACP,gBAAS,IACVk/H,EAAep/H,UAAW,kBAAc,GAC3CE,EAAW,CACP,gBAAS,IACVk/H,EAAep/H,UAAW,6BAAyB,GACtDE,EAAW,CACP,eAAS,UACVk/H,EAAep/H,UAAW,sBAAkB,GAC/CE,EAAW,CACP,kBACDk/H,EAAep/H,UAAW,eAAW,GACxCE,EAAW,CACP,kBACDk/H,EAAep/H,UAAW,iBAAa,GAC1CE,EAAW,CACP,kBACDk/H,EAAep/H,UAAW,cAAU,GACvCE,EAAW,CACP,kBACDk/H,EAAep/H,UAAW,aAAS,GACtCE,EAAW,CACP,kBACDk/H,EAAep/H,UAAW,YAAQ,GACrCo/H,EAAiBl/H,EAAW,CACxB,QACDk/H,GACIA,EAh0CwB,CAi0CjC,S,kCCr3CF,0KAiBI+I,EAAoC,WAOpC,SAASA,EAAmBz5G,GACxB5uB,KAAKsoI,gBAAiB,EACtBtoI,KAAKuoI,kBAAoB,GACzBvoI,KAAKwoI,gBAAkB,IAAI,OAE3BxoI,KAAKyoI,aAAc,EACnBzoI,KAAK0mC,OAAS,GACd1mC,KAAK++F,aAAc,EACnB/+F,KAAK0oI,0BAA2B,EAChC1oI,KAAK2oI,mBAAoB,EAEzB3oI,KAAK4oI,qBAAsB,EAC3B5oI,KAAK6oI,yBAA0B,EAC/B7oI,KAAK8oI,2BAA6B,GAClC9oI,KAAK+oI,+BAAgC,EACrC/oI,KAAKgpI,gBAAkB,EACvBhpI,KAAKipI,yBAA2B,EAChCjpI,KAAKkpI,4BAA8B,GACnClpI,KAAKmpI,mBAAqB,GAC1BnpI,KAAKopI,kBAAoB,EACzBppI,KAAKqpI,wBAAyB,EAC9BrpI,KAAKspI,+BAAgC,EACrCtpI,KAAKupI,kCAAmC,EACxCvpI,KAAKwpI,iCAAmC,GACxCxpI,KAAK4uB,OAASA,EACd5uB,KAAKsL,GAAKtL,KAAK4uB,OAAOxrB,QAAQkI,GAC9BtL,KAAKm2C,eAAiB,IAAI,OAAen2C,KAAK4uB,OAAOpU,QACrDxa,KAAKypI,SAAW,eAAezpI,KAAK4uB,OAAOrqB,eAAe,EAAO,CAAEwuC,SAAS,EAAMe,MAAO,MACzF9zC,KAAK0pI,UAAY,eAAe1pI,KAAK4uB,OAAOrqB,eAAe,EAAO,CAAEwuC,SAAS,EAAOe,MAAO,MAC3F9zC,KAAKypI,SAASjkH,aAAaxlB,KAAK4uB,OAAOrqB,cAAc,QAAS,CAC1DC,UAAW,eAAgBwK,MAAO,CAAER,KAAM,cAC1CxO,KAAKypI,SAASptF,YAClBr8C,KAAK0pI,UAAUlkH,aAAaxlB,KAAK4uB,OAAOrqB,cAAc,QAAS,CAC3DC,UAAW,eAAgBwK,MAAO,CAAE,KAAQ,cAC5ChP,KAAK0pI,UAAUrtF,YACnBr8C,KAAK0pI,UAAUx9H,cAAc,YAAYhH,UAAU4G,IAAI,aACnD9L,KAAK4uB,OAAOnpB,WACZ,eAAS,CAACzF,KAAKypI,SAAUzpI,KAAK0pI,WAAY,CAAC,UAE3C1pI,KAAK4uB,OAAOnkB,YAC+B,IAAvCzK,KAAK4uB,OAAOnkB,SAASzG,QAAQ,KAC7B,eAAS,CAAChE,KAAKypI,SAAUzpI,KAAK0pI,WAAY1pI,KAAK4uB,OAAOnkB,SAASxG,MAAM,MAGrE,eAAS,CAACjE,KAAKypI,SAAUzpI,KAAK0pI,WAAY,CAAC1pI,KAAK4uB,OAAOnkB,YAwtDnE,OAhtDA49H,EAAmBnoI,UAAUsS,QAAU,WACnCxS,KAAK2pI,eAETtB,EAAmBnoI,UAAU0T,WAAa,WACtC,OAAa9H,IAAI9L,KAAK4pI,IAAK,QAAS5pI,KAAKsoC,aAActoC,MACvD,OAAa8L,IAAI9L,KAAK4pI,IAAK,QAAS5pI,KAAKge,aAAche,MACvDA,KAAK6pI,cAAgB,eAAS7pI,KAAK8pI,eAAgB,KACnD,IAAI/8E,EAAO/sD,KAAK+pI,UAAU3mI,QAAQ8I,cAAc,kBAC5C6gD,IACA,OAAajhD,IAAIihD,EAAM,QAAS/sD,KAAK6pI,cAAe7pI,MACpD,OAAa8L,IAAIihD,EAAM,QAAS/sD,KAAK6pI,cAAe7pI,QAG5DqoI,EAAmBnoI,UAAUszC,aAAe,WACxC,OAAaruC,OAAOnF,KAAK4pI,IAAK,QAAS5pI,KAAKsoC,cAC5C,OAAanjC,OAAOnF,KAAK4pI,IAAK,QAAS5pI,KAAKge,cAC5C,IAAI+uC,EAAO/sD,KAAK+pI,UAAU3mI,QAAQ8I,cAAc,kBAC5C6gD,IACA,OAAa5nD,OAAO4nD,EAAM,QAAS/sD,KAAK6pI,eACxC,OAAa1kI,OAAO4nD,EAAM,QAAS/sD,KAAK6pI,iBAGhDxB,EAAmBnoI,UAAU8pI,iBAAmB,SAAUjkH,EAAMkkH,EAAOC,GACnE,IAAI7mI,EAAQrD,KACR27B,EAAa,GACbwuG,EAAmB,GACnB76G,EAAQtvB,KAAKwoI,gBAAgBhyG,QACjCx2B,KAAKmD,QAAQosB,OAAOH,WAChBgC,aAAa9B,EAAM6D,MAAM+2G,IAAa75G,MAAK,SAAUljB,GACrD9J,EAAMF,QAAQosB,OAAOiC,WAAarkB,EAAE6jB,OACpC3tB,EAAMurB,OAAOhV,OAAO,QAAsB,CAAEuY,UAAWwJ,EAAYpM,OAAQlsB,EAAMF,QAAQosB,SACzFxJ,EAAKqkH,YAAczuG,EAAWxJ,UAAUI,WAExC,IADA,IAAI83G,EAAQ1uG,EAAWxJ,UAAUI,WACxBvxB,EAAI,EAAGA,EAAIqpI,EAAM1pI,OAAQK,IAC9BmpI,EAAiB99H,KAAK,CAClBwlB,MAAOw4G,EAAM14H,SAAS3Q,EAAE4Q,WAAY,KAAKigB,MACzCM,UAAW,KACXe,UAAWm3G,EAAM14H,SAAS3Q,EAAE4Q,WAAY,KAAKkiB,WAC7CoG,aAAcmwG,EAAM14H,SAAS3Q,EAAE4Q,WAAY,KAAKsoB,aAChDjH,SAAUo3G,EAAM14H,SAAS3Q,EAAE4Q,WAAY,KAAKqhB,SAC5Cxa,MAAO4xH,EAAM14H,SAAS3Q,EAAE4Q,WAAY,KAAK6G,MACzCjK,KAAMnL,EAAMF,QAAQqL,OAG5BuX,EAAKokH,iBAAmBA,EAAiBxpI,OAASwpI,EAC9CF,EAAMh2G,QAAO,SAAUiF,GAAO,OAAOA,EAAIrH,MAAQxuB,EAAMF,QAAQ0uB,SACnExuB,EAAMF,QAAQw1F,QAAQ5yE,OAG9BsiH,EAAmBnoI,UAAUoqI,cAAgB,SAAUvkH,EAAMtN,GACzD,IAAIwa,EAAWjzB,KAAKmD,QAAQm2B,SACM,WAA7Bt5B,KAAKmD,QAAQosB,OAAO/gB,KAAoB,WAAa,QAAYxO,KAAKmD,QAAQosB,OAAO/gB,KAAO,WAAa,QAC1G+7H,EAAkB,IAAI,OAAUvqI,KAAKmD,QAAQosB,OAAOwC,gBAAiBkB,EAAUxa,GAAO,EAAMzY,KAAKmD,QAAQ+2B,cAC7Gl6B,KAAKgqI,iBAAiBjkH,EAAM,CAACA,EAAKokH,kBAAmBI,IAEzDlC,EAAmBnoI,UAAUsqI,eAAiB,SAAUr9H,GACpD,IAAI7M,EAAS6M,EAAE7M,OACXA,EAAO4E,UAAUmB,SAAS,mBAC1BrG,KAAKyqI,OAAOhyH,MAAQnY,EAAO4E,UAAUmB,SAAS,oBAAsB,GAAKrG,KAAKyqI,OAAOhyH,MACjFzY,KAAK0oI,yBACL1oI,KAAK4uB,OAAOhV,OAAO,kBAAmB,CAAElL,MAAOvB,IAG/CnN,KAAK0qI,oBAET1qI,KAAK2qI,mBACL3qI,KAAKyqI,OAAO1qH,UAGpBsoH,EAAmBnoI,UAAU4pI,eAAiB,SAAU38H,IAChD,eAAkBA,KAAiB,YAAVA,EAAE5M,KAA+B,cAAV4M,EAAE5M,KAAiC,QAAV4M,EAAE5M,KAA6B,QAAV4M,EAAE5M,KAAiB4M,EAAEy9H,YAC9G,eAAkB5qI,KAAK4uB,OAAO6rB,mBAAoE,YAA/Cz6C,KAAK4uB,OAAO6rB,iBAAiBC,eACjF16C,KAAK4uB,OAAOyuE,iBAAY9xF,EAAWvL,KAAK+pI,UAAU3mI,SAElDpD,KAAK0oI,yBACL1oI,KAAK4uB,OAAOhV,OAAO,kBAAmB,CAAElL,MAAOvB,IAG/CnN,KAAK0qI,oBAET1qI,KAAK2qI,qBAGbtC,EAAmBnoI,UAAUyqI,iBAAmB,WACxC3qI,KAAKyqI,OAAOhyH,MAAM9X,QAClB,eAAUX,KAAK6qI,MAAO,CAAC,oBAAqB,CAAC,kBACxC,eAAkBj9H,SAAS6B,KAAKvD,cAAc,uBAC/C0B,SAAS6B,KAAKvD,cAAc,qBAAqBvB,aAAa,QAAS3K,KAAKqxH,UAAU32G,YAAY,YAItG,eAAU1a,KAAK6qI,MAAO,CAAC,iBAAkB,CAAC,qBACrC,eAAkBj9H,SAAS6B,KAAKvD,cAAc,kCAC/C0B,SAAS6B,KAAKvD,cAAc,gCAAgCvB,aAAa,QAAS3K,KAAKqxH,UAAU32G,YAAY,aAUzH2tH,EAAmBnoI,UAAU4qI,kBAAoB,SAAUvqI,GACvD,OAAOP,KAAKqxH,UAAU32G,YAAYna,IAEtC8nI,EAAmBnoI,UAAU6qI,iBAAmB,WAC5C,IAAI37G,EAAapvB,KAAKmD,QAAQisB,WAC1B+oE,EAAM,SACV,KAAM/oE,aAAsB,QACxB,IAAK,IAAIpuB,EAAI,EAAGA,EAAIouB,EAAWzuB,OAAQK,IAEnC,UAAWouB,IAAe+oE,EAAK,CAC3B,IAAIp1D,EAAM,GACVA,EAAI/iC,KAAKmD,QAAQ0uB,OAASzC,EAAWzd,SAAS3Q,EAAE4Q,WAAY,KAC5Dwd,EAAWzd,SAAS3Q,EAAE4Q,WAAY,KAAOmxB,IAKzDslG,EAAmBnoI,UAAU8qI,YAAc,SAAU7nI,GACjDnD,KAAKmD,QAAUA,EACfnD,KAAKuoI,kBAAoBplI,EAAQ8nI,iBAAmB,GACpDjrI,KAAKmD,QAAQisB,WAAajsB,EAAQisB,WAClCpvB,KAAKmD,QAAQ2yB,YAAc3yB,EAAQ2yB,YAAc3yB,EAAQ2yB,YAAc3yB,EAAQisB,WAC/EpvB,KAAK+qI,mBACL/qI,KAAKmD,QAAQqL,KAAOrL,EAAQqL,KAC5BxO,KAAKmD,QAAQmZ,OAASnZ,EAAQmZ,QAAU,GACxCtc,KAAKmD,QAAQ+2B,aAAe/2B,EAAQ+2B,eAAgB,EACpDl6B,KAAKmD,QAAQ+nI,gBAAkB/nI,EAAQ+nI,iBAAmBlrI,KAAK4uB,OAAOoF,eAAe7E,QACrFnvB,KAAKmD,QAAQmsB,MAAQnsB,EAAQmsB,OAAS,IAAI,OAC1CtvB,KAAKmD,QAAQgoI,mBAAqBhoI,EAAQgoI,qBAAsB,EAChEnrI,KAAKmD,QAAQgxB,IAAMhxB,EAAQosB,OAAO4E,IAClCn0B,KAAKmD,QAAQoyC,kBAAoBpyC,EAAQosB,OAAOgmB,oBAAqB,EACrEv1C,KAAK0mC,OAAS,GACd1mC,KAAKqxH,UAAYluH,EAAQkuH,UACzBrxH,KAAKszB,WAAanwB,EAAQ+nI,gBAAgBvqI,OAC1CX,KAAK2oI,qBAAoB3oI,KAAK4uB,OAAOoF,iBAAkBh0B,KAAK4uB,OAAOoF,eAAe6D,yBAClF73B,KAAKorI,8BAAgCprI,KAAK2oI,mBAAqB3oI,KAAKuoI,kBAAkBvoI,KAAKmD,QAAQosB,OAAOsC,OAAS7xB,KAAKuoI,kBAAkBvoI,KAAKmD,QAAQosB,OAAOsC,OAAOnkB,QAAU,IAEnL26H,EAAmBnoI,UAAUmrI,iBAAmB,SAAUloI,GAOtD,GANAnD,KAAK4pI,IAAM5pI,KAAK4uB,OAAOrqB,cAAc,MAAO,CACxC+G,GAAItL,KAAKsL,GAAKtL,KAAKmD,QAAQqL,KAAO,YAClCQ,MAAO,CAAEmlB,IAAKn0B,KAAKmD,QAAQosB,OAAO4E,KAClC3vB,UAAW,oCAEfxE,KAAKsrI,KAAOtrI,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,uBACrDrB,EAAQooI,cAAe,CACxBvrI,KAAKyqI,OAASzqI,KAAK4uB,OAAOrqB,cAAc,QAAS,CAC7C+G,GAAItL,KAAKsL,GAAK,aACd9G,UAAW,kBAEfxE,KAAK6qI,MAAQ7qI,KAAK4uB,OAAOrqB,cAAc,OAAQ,CAC3CC,UAAW,yDAA0DwK,MAAO,CACxER,KAAM,OAAQ02B,MAAOllC,KAAK8qI,kBAAkB,aAGpD9qI,KAAKwrI,UAAYxrI,KAAK4uB,OAAOrqB,cAAc,OAAQ,CAAEC,UAAW,yBAChExE,KAAKwrI,UAAU9mI,YAAY1E,KAAKyqI,QAChCzqI,KAAKsrI,KAAK5mI,YAAY1E,KAAKwrI,WAC3B,IAAIC,EAAY,CACZroI,QAASpD,KAAKyqI,OAAQ3yH,eAAgB,QAASkD,WAAY,CACvDhB,YAAaha,KAAK8qI,kBAAkB,UACpCrgI,SAAUzK,KAAK4uB,OAAOnkB,WAG9B,OAAMqP,YAAY2xH,EAAWzrI,KAAK4uB,OAAOrqB,eACzCvE,KAAKwrI,UAAUt/H,cAAc,kBAAkBxH,YAAY1E,KAAK6qI,OASpE,OAPA7qI,KAAK0rI,QAAU1rI,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,cAC7DxE,KAAK2rI,KAAO3rI,KAAK4uB,OAAOrqB,cAAc,MAAO,CACzC+G,GAAItL,KAAKsL,GAAKtL,KAAKmD,QAAQqL,KAAO,gBAClChK,UAAW,4BAEfxE,KAAK0rI,QAAQhnI,YAAY1E,KAAK2rI,MAC9B3rI,KAAKsrI,KAAK5mI,YAAY1E,KAAK0rI,SACpB1rI,KAAKsrI,MAEhBjD,EAAmBnoI,UAAU0rI,WAAa,SAAUzoI,GAChD,IAAI4iB,EAAO,CACPgI,YAAa,QACb4K,WAAY34B,KAAKmD,QAAQ0uB,MAAOg6G,WAAY7rI,KAAKmD,QAAQqL,KAAMC,QAAQ,GAEvEq9H,EAAc,cAGlB,GAFA/lH,EAAK,GAAK+lH,GAAe9rI,KACzBA,KAAK4uB,OAAOhV,OAAO,OAAsBmM,GACrCA,EAAKtX,OACLtL,EAAQsL,OAASsX,EAAKtX,WAD1B,CAIAzO,KAAK+pI,UAAY,IAAI,OAAO,CACxBnzG,SAAS,EAAO/rB,QAAS7K,KAAKsrI,KAC9BzlI,MAAO7F,KAAK2pI,YAAY/jI,KAAK5F,MAC7ByF,UAAWzF,KAAK4uB,OAAOnpB,UACvBH,OAAS,eAAkB,gBAAanC,EAAQ7C,OAAQ,cACjDN,KAAK4uB,OAAOxrB,QAAQ8B,UAAUmB,SAAS,YAAc,IAAM,IAClE/F,OAAQN,KAAK4uB,OAAOxrB,QAAS2oI,kBAAmB,CAAEhpI,OAAQ,QAC1DmV,QAAS,CAAC,CACF+c,MAAOj1B,KAAKgsI,SAASpmI,KAAK5F,MAC1BisI,YAAa,CACTphI,QAAS7K,KAAK8qI,kBAAkB9qI,KAAK65H,QAAU,WAAa,gBAC5DpvH,SAAUzK,KAAK4uB,OAAOnkB,SAAW,aAAoBzK,KAAK4uB,OAAOnkB,SAAW,YAC5EyhI,WAAW,IAGnB,CACIj3G,MAAOj1B,KAAKgsI,SAASpmI,KAAK5F,MAC1BisI,YAAa,CAAExhI,SAAUzK,KAAK4uB,OAAOnkB,SAAW,UAAiBzK,KAAK4uB,OAAOnkB,SAAW,SACpFI,QAAS7K,KAAK8qI,kBAAkB9qI,KAAK65H,QAAU,eAAiB,kBAE5EttG,QAASvsB,KAAKmsI,cAAcvmI,KAAK5F,MACjC0F,KAAM1F,KAAKosI,WAAWxmI,KAAK5F,MAC3ByK,SAAUzK,KAAK4uB,OAAOnkB,SAAWzK,KAAK4uB,OAAOnkB,SAAW,KAE5D,IAAI6tD,EAAmB,mBACvBt4D,KAAK+pI,UAAU,GAAKzxE,IAAoB,EACxCt4D,KAAKqsI,uBAAuBlpI,GAC5B,IAAImpI,EAActsI,KAAK4uB,OAAOoF,gBAAsD,aAApCh0B,KAAK4uB,OAAOoF,eAAexlB,KACvExO,KAAK8qI,kBAAkB,4BAA8B9qI,KAAK8qI,kBAAkB,yBAEhF,GADA9qI,KAAK4pI,IAAIj/H,aAAa,aAAc2hI,GAChCnpI,EAAQopI,mBAAoB,CAC5B,IAAIC,EAAgB5+H,SAAS1B,cAAc,4DAC3CsgI,EAAc9nI,YAAY1E,KAAK4pI,UAG/B5pI,KAAK4uB,OAAOxrB,QAAQsB,YAAY1E,KAAK4pI,KAEzC5pI,KAAK+pI,UAAU1jH,SAASrmB,KAAK4pI,KAC7B5pI,KAAK+pI,UAAU3mI,QAAQ2D,MAAM8qD,UAAY1uD,EAAQopI,mBAAqB,OAASvsI,KAAKmD,QAAQkC,OAAS,KACrGrF,KAAK+pI,UAAU75H,OACf,IAAIrF,EAAU7K,KAAK+pI,UAAU3mI,QAAQ8I,cAAc,kBACnDrB,EAAQnG,YAAY1E,KAAKsrI,MACzBtrI,KAAK4T,aACA,eAAkB5T,KAAK4uB,OAAO6rB,mBAAoE,YAA/Cz6C,KAAK4uB,OAAO6rB,iBAAiBC,eAC7E16C,KAAK2oI,kBAGJ3oI,KAAK2oI,mBAAqB3oI,KAAK4uB,OAAOoF,gBAAkE,YAAhDh0B,KAAK4uB,OAAOoF,eAAeymB,iBACxFz6C,KAAKysI,YAGDzsI,KAAK2oI,oBACL3oI,KAAK2rI,KAAK5kI,MAAMqoD,UAAYpvD,KAAK0sI,cAAc1sI,KAAK2rI,MAAQ,MAEhE,eAAc,CAAErrI,OAAQN,KAAK0rI,QAASjhI,SAAUzK,KAAK4uB,OAAOnkB,SAAWzK,KAAK4uB,OAAOnkB,SAAW,MAAQzK,KAAK4uB,OAAOrqB,eAClH,eAAYvE,KAAK0rI,UAVjB1rI,KAAK4uB,OAAOyuE,iBAAY9xF,EAAWvL,KAAK+pI,UAAU3mI,SAYtDpD,KAAK2sI,eAETtE,EAAmBnoI,UAAUmsI,uBAAyB,SAAUlpI,GACxDA,EAAQopI,qBACRvsI,KAAK+pI,UAAU7xH,QAAU,CAAC,IAC1BlY,KAAK+pI,UAAUhmI,SAAW,CAAEwB,EAAG,GAAIC,EAAG,IACtCxF,KAAK+pI,UAAUzpI,OAASsN,SAAS1B,cAAc,oDAC/ClM,KAAK+pI,UAAUzkI,MAAQ,SAG/B+iI,EAAmBnoI,UAAUisI,cAAgB,SAAUh/H,GAC/CnN,KAAKmD,QAAQopI,mBACbvsI,KAAK+pI,UAAU3mI,QAAQ2D,MAAM/B,KAAO,MAG/B,OAAQ2K,SAIT3P,KAAK+pI,UAAUhmI,SAAW,CAAEwB,EAAG,SAAUC,EAAG,UAH5C,eAAqBxF,KAAKmD,QAAQ7C,OAAQN,KAAK+pI,WAMnD/pI,KAAKmD,QAAQosB,OAAOmmB,gBACpB11C,KAAK4uB,OAAOhV,OAAO,QAA4BzM,IAGvDk7H,EAAmBnoI,UAAU0sI,WAAa,SAAUzpI,GAChDnD,KAAKgrI,YAAY7nI,GACjBnD,KAAKqrI,iBAAiBloI,GACtBnD,KAAK4rI,WAAWzoI,IAEpBklI,EAAmBnoI,UAAUypI,YAAc,WAIvC,GAHI3pI,KAAK2oI,mBAAqB3oI,KAAK8oI,2BAA2BnoI,SAAWX,KAAKmD,QAAQm2B,WAClFt5B,KAAKmD,QAAQisB,WAAWA,WAAW2G,KAAO/1B,KAAK8oI,4BAE/C9oI,KAAK+pI,YAAc/pI,KAAK+pI,UAAUj7G,YAAa,CAC/C9uB,KAAK6sI,UAAW,EAChB,IAAIC,EAAoB9sI,KAAKmD,QAAQgsB,QAAQ8E,QAAO,SAAUiF,GAAO,OAAOA,EAAImf,2BAE5EyhB,EAAqB95D,KAAK4uB,OAAOkrC,mBACjCgzE,EAAkBnsI,SAAW,eAAkBm5D,IAAuBA,EAAmBizE,oBACzF/sI,KAAK4uB,OAAOkxE,gBAAgB,CAAC,wBAE5B9/F,KAAK4uB,OAAOzmB,SAAWnI,KAAK4uB,OAAOuH,aAA0C5qB,IAAhCvL,KAAK4uB,OAAOkxE,iBAC1D,eAAuB9/F,KAAK4uB,OAAQ,CAAC,uBAEzC5uB,KAAK4uB,OAAOhV,OAAO,QAAwB,CAAEiY,MAAO7xB,KAAKmD,QAAQ0uB,QACjE7xB,KAAK+pI,UAAUv3H,UACfxS,KAAKwzC,eACL,gBAAOxzC,KAAK4pI,KACZ5pI,KAAK4pI,IAAM,KACX5pI,KAAK4uB,OAAOhV,OAAO,QAA0B,MAQrDyuH,EAAmBnoI,UAAU8sI,YAAc,SAAU9zG,GAEjD,IAAInT,EAAO,CAAEmtB,SAAUlzC,KAAM24F,QAAS34F,KAAKgtI,YAAav+H,QAAQ,GAChEzO,KAAK4uB,OAAOhV,OAAO,QAAoBmM,GACnCA,EAAKtX,QAGTzO,KAAKmD,QAAQw1F,QAAQ,CAAEh4E,OAAQ,eAAgBkR,MAAOqH,EAAMA,EAAIrH,MAAQ7xB,KAAKmD,QAAQ0uB,SAEzFw2G,EAAmBnoI,UAAU8rI,SAAW,SAAU7+H,GAC9C,GAAInN,KAAKyoI,YAAa,CAClB,GAAwC,UAAnCt7H,EAAE7M,OAAOoP,QAAQmS,eAA6B1U,EAAE7M,OAAO4E,UAAUmB,SAAS,kBAC7D,KAAd8G,EAAEqG,QACGxT,KAAK0oI,0BACN1oI,KAAKitI,qBAGR,CACD,IAAIn7G,EAAO3kB,EAAE7M,OAAO+7C,WAAWj3B,YAAYvD,cACvC7hB,KAAK8qI,kBAAkB9qI,KAAK65H,QAAU,WAAa,gBAAgBh4G,gBAAkBiQ,EAChF9xB,KAAK0oI,0BACN1oI,KAAKitI,iBAGJjtI,KAAK8qI,kBAAkB,eAAejpH,gBAAkBiQ,GAC7D9xB,KAAKgtI,cAGbhtI,KAAK2pI,mBAEAx8H,EAAE7M,QAAU6M,EAAE7M,OAAO+7C,YAC1BlvC,EAAE7M,OAAO+7C,WAAWj3B,YAAYvD,gBAAkB7hB,KAAK8qI,kBAAkB,gBAAgBjpH,cACzF7hB,KAAK2pI,cAEqC,UAAnCx8H,EAAE7M,OAAOoP,QAAQmS,gBACxB7hB,KAAKgtI,cACLhtI,KAAK2pI,eAEL3pI,KAAKmD,QAAQosB,OAAOmmB,gBACpB11C,KAAK4uB,OAAOhV,OAAO,OAAmC,KAO9DyuH,EAAmBnoI,UAAU+sI,eAAiB,WAC1C,IAAI5pI,EAAQrD,KACRA,KAAK2oI,oBACL3oI,KAAK2rI,KAAK7gI,UAAY,GACtB,eAAe9K,KAAK2rI,KAAM3rI,KAAKmpI,mBAAmBz7H,UAEtD,IAQIw/H,EARAn6F,EAAU,GAAGrlC,MAAMpK,KAAKtD,KAAK2rI,KAAKjpH,iBAAiB,mDACnDyqH,EAAQp6F,EACRq6F,EAAO,QACPC,EAAWrtI,KAAK+pI,UAAU3mI,QAAQ8I,cAAc,mBAChDmhI,IACArtI,KAAKmD,QAAQ8vB,SAAWm6G,EAAOC,EAAS1kF,cAAc,GAAGlwC,OAE7DzY,KAAKstI,eAA2C,aAA1BttI,KAAKmD,QAAQ8vB,SAE9BjzB,KAAKmD,QAAQooI,gBACd2B,EAAcltI,KAAKwrI,UAAUt/H,cAAc,mBAE/C,IAYIuM,EACAoE,EACAlc,EACA4sI,EAfAC,EAAUxtI,KAAKmD,QAAQgoI,mBACvBsC,EAAW,CACX57G,MAAO7xB,KAAKmD,QAAQ0uB,MAAOM,UAAWnyB,KAAKstI,eAAiB,MAAQ,KAAMn5G,IAAKn0B,KAAKmD,QAAQgxB,IAC5FlB,SAAUm6G,EAAM5+H,KAAMxO,KAAKmD,QAAQqL,KAAM0kB,UAAWs6G,EAAStzG,aAAcl6B,KAAKmD,QAAQ+2B,cAExFwzG,EAAa1tI,KAAK2tI,WAAa56F,EAAQpyC,QAAUX,KAAK2tI,SAAW56F,EAAQpyC,OAASoyC,EAAQpyC,OAC1F+sI,GAAcR,GAAqC,KAAtBA,EAAYz0H,QACzC20H,EAAOptI,KAAKstI,eAAiB,QAAU,WACvCv6F,EAAU,GAAGrlC,MAAMpK,KAAKtD,KAAK2rI,KAAKjpH,iBAAiB,iCACnD+qH,EAASt7G,UAAYnyB,KAAKstI,eAAiB,KAAO,MAClDG,EAASx6G,SAAWm6G,GAMxB,IAAIQ,EAAO,GACX,GAAK76F,EAAQpyC,SAAWX,KAAK2tI,UAAaT,GAAeA,EAAYz0H,OAA+B,KAAtBy0H,EAAYz0H,OACnFzY,KAAK2oI,kBAAmB,CAC3B,GAAK3oI,KAAK2oI,kBAgBD3oI,KAAK2oI,mBACV3oI,KAAK6tI,uBAAuBD,QAhB5B,IAAK,IAAI5sI,EAAI,EAAGA,EAAI+xC,EAAQpyC,OAAQK,IAChCyX,EAAQzY,KAAK0mC,OAAO,gBAAaqM,EAAQphC,SAAS3Q,EAAE4Q,WAAY,KAAM,YAAYlH,aAAa,QAC/F6iI,EAAO,eAAO,GAAI,CAAE90H,MAAOA,GAASg1H,GAChCh1H,IAAUA,EAAM7G,WAAWjR,SAC3B4sI,EAAKt6G,SAAWy6G,EAAa,WAAa,SAEhC,KAAVj1H,GAAgB,eAAkBA,GAClCm1H,EAAOA,EAAK3+F,OAAOo5F,EAAmByF,4BAA4BL,IAGlEG,EAAKvhI,KAAKkhI,GAEdvtI,KAAK+tI,sBAAsBR,GAMR,SAAtBvtI,KAAKmD,QAAQqL,MAAyC,aAAtBxO,KAAKmD,QAAQqL,OAAwB2+H,EAAMxsI,SAC5EA,EAASwsI,EAAMxsI,OAAS,EACxBkc,EAAM7c,KAAK0mC,OAAO,gBAAaymG,EAAMx7H,SAAShR,EAAOiR,WAAY,KAAM,YAAYlH,aAAa,QAC5F,eAAkBmS,IAAQ6wH,GAC1BE,EAAKvhI,KAAK,CACNwlB,MAAO47G,EAAS57G,MAAOqB,UAAWu6G,EAASv6G,UAAWD,SAAU,QAChEd,UAAW,MAAO1Z,MAAO,QAIrC,IAAIu1H,EAAmBhuI,KAAK2oI,kBAAoB3oI,KAAKsrI,KAAKp/H,cAAc,kBACpElM,KAAK2rI,KAAKz/H,cAAc,kBAC5B,GAAI8hI,GAAoBA,EAAiB9oI,UAAUmB,SAAS,WAAY,CACpE,IAAI4nI,EAAsBjuI,KAAKuoI,kBAAkBvoI,KAAKmD,QAAQ0uB,OAC9D,IAAIo8G,EAcA,OALA,IARA,IAAIt9G,EAAU,SAAU2G,GACfs2G,EAAK5zG,MAAK,SAAUnO,GACrB,OAAOA,EACFpT,QAAUw1H,EAAoBt8H,SAAS2lB,EAAE1lB,WAAY,KAAK6G,UAE/Dm1H,EAAKvhI,KAAK4hI,EAAoBt8H,SAAS2lB,EAAE1lB,WAAY,OAGpD0lB,EAAI,EAAGA,EAAI22G,EAAoBttI,OAAQ22B,IAC5C3G,EAAQ2G,GAOpB,GAAKt3B,KAAK2oI,mBAGL,GAAIiF,EAAKjtI,OACVX,KAAKkuI,eAAeN,QAEnB,GAAI5tI,KAAKsrI,KAAKp/H,cAAc,gBAAgBhH,UAAUmB,SAAS,aAAeunI,EAAKjtI,OAAQ,CAC5F,IAAIwtI,EAAgBnuI,KAAKmD,QAAQ+nI,gBAAgBlxG,MAAK,SAAUvhB,GAC5D,OAAOpV,EAAMF,QAAQ0uB,QAAUpZ,EAAMoZ,SAErCs8G,GACAnuI,KAAKgtI,oBAVThtI,KAAKkuI,eAAeN,OAcvB,CACGO,EAAgBnuI,KAAKmD,QAAQ+nI,gBAAgBlxG,MAAK,SAAUvhB,GAC5D,OAAOpV,EAAMF,QAAQ0uB,QAAUpZ,EAAMoZ,SAErCs8G,GACAnuI,KAAKgtI,gBAIjB3E,EAAmBnoI,UAAU2tI,uBAAyB,SAAUD,GAC5D,IAAIn1H,EACJ,GAAIzY,KAAKwpI,iCAAiC7oI,OACtC,IAAK,IAAIK,EAAI,EAAGA,EAAIhB,KAAKwpI,iCAAiC7oI,OAAQK,IAAK,CACnE,IAAIotI,EAAOpuI,KAAKwpI,iCAAiCxoI,GAEjD,GADAyX,EAAQ21H,EAAK31H,MAAQ,GACP,KAAVA,GAAgB,eAAkBA,GAAQ,CAC1C,IAAI41H,EAAgB,CAAEl8G,UAAWi8G,EAAKj8G,UAAWN,MAAOu8G,EAAKv8G,MAAOrjB,KAAM4/H,EAAK5/H,KAAM2lB,IAAKi6G,EAAKj6G,IAAKlB,SAAUm7G,EAAKn7G,SAC/GC,UAAWk7G,EAAKl7G,UAAWgH,aAAck0G,EAAKl0G,cAClD0zG,EAAKvhI,KAAKvJ,MAAM8qI,EAAMvF,EAAmByF,4BAA4BO,SAGrET,EAAKvhI,KAAKrM,KAAKwpI,iCAAiCxoI,IAEpDhB,KAAK+tI,sBAAsB/tI,KAAKwpI,iCAAiCxoI,IAGzE,IAAKhB,KAAKspI,+BAAuD,KAAtBtpI,KAAKyqI,OAAOhyH,QAAmBzY,KAAKmD,QAAQmrI,6BAA8BV,EAAKjtI,QACtH,IAASK,EAAI,EAAGA,EAAIhB,KAAKorI,8BAA8BzqI,OAAQK,IAC3D4sI,EAAKW,QAAQvuI,KAAKorI,8BAA8BpqI,IAChDhB,KAAK+tI,sBAAsB/tI,KAAKuoI,kBAAkBvoI,KAAKmD,QAAQ0uB,OAAO7wB,IAGpD,KAAtBhB,KAAKyqI,OAAOhyH,OAAkBzY,KAAKspI,gCAAiCtpI,KAAKqpI,yBACzErpI,KAAKwuI,mBAAmB,aAAe,KACvCZ,EAAKW,QAAQvuI,KAAKwuI,oBAClBxuI,KAAK+tI,sBAAsB/tI,KAAKwuI,sBAGxCnG,EAAmBnoI,UAAU6tI,sBAAwB,SAAU57G,GAC3D,IAAIpM,EAAO,CACPmtB,SAAUlzC,KAAM24F,QAAS34F,KAAKitI,eAAgBvpC,KAAMvxE,EAAUN,MAAO48G,KAAMt8G,EAAUA,UAAWu8G,KAAMv8G,EAAUc,SAChH07G,KAAMx8G,EAAUe,UAAW07G,KAAMz8G,EAAU+H,aAAc20G,KAAM18G,EAAU1Z,MAAOhK,QAAQ,GAE5FzO,KAAK4uB,OAAOhV,OAAO,QAAoBmM,GACnCA,EAAKtX,QAMb45H,EAAmByF,4BAA8B,SAAUL,GACvD,IAAIG,EAAO,GAeX,MAdsB,WAAlBH,EAASj/H,MACTo/H,EAAKvhI,KAAK,CACNwlB,MAAO47G,EAAS57G,MAAOqI,aAAcuzG,EAASvzG,aAAchH,UAAWu6G,EAASv6G,UAChFD,SAAUw6G,EAASx6G,SAAUd,UAAWs7G,EAASt7G,UAAW1Z,MAAO,KAG3Em1H,EAAKvhI,KAAK,CACNwlB,MAAO47G,EAAS57G,MAChBqB,UAAWu6G,EAASv6G,UAAWD,SAAUw6G,EAASx6G,SAAUd,UAAWs7G,EAASt7G,UAAW1Z,MAAO,OAEtGm1H,EAAKvhI,KAAK,CACNwlB,MAAO47G,EAAS57G,MAAOqB,UAAWu6G,EAASv6G,UAAWD,SAAUw6G,EAASx6G,SACzEd,UAAWs7G,EAASt7G,UAAW1Z,WAAOlN,IAEnCqiI,GAIXvF,EAAmBnoI,UAAUguI,eAAiB,SAAUjE,GACpD,IACI93G,EADA28G,EAAW7E,EAAM,GAErB,IAAK,eAAkB6E,GAAW,CAC9B38G,EAAY28G,EAAS1E,YAAc0E,EAAS1E,YACxC,IAAI,OAAU0E,EAASj9G,MAAOi9G,EAAS77G,SAAU67G,EAASr2H,OAAQq2H,EAAS57G,UAAW47G,EAAS50G,cACnG,IAAK,IAAI5C,EAAI,EAAGA,EAAI2yG,EAAMtpI,OAAQ22B,IAC9BnF,OAA8D5mB,IAAlD0+H,EAAMt4H,SAAS2lB,EAAE1lB,WAAY,KAAKw4H,YAC1Cj4G,EAAU83G,EAAMt4H,SAAS2lB,EAAE1lB,WAAY,KAAKugB,WAAW83G,EAAMt4H,SAAS2lB,EAAE1lB,WAAY,KAAKw4H,aACzFj4G,EAAU83G,EAAMt4H,SAAS2lB,EAAE1lB,WAAY,KAAKugB,WAAW83G,EAAMt4H,SAAS2lB,EAAE1lB,WAAY,KAAKigB,MAAOo4G,EAAMt4H,SAAS2lB,EAAE1lB,WAAY,KAAKqhB,SAAUg3G,EAAMt4H,SAAS2lB,EAAE1lB,WAAY,KAAK6G,OAAQwxH,EAAMt4H,SAAS2lB,EAAE1lB,WAAY,KAAKshB,UAAW+2G,EAAMt4H,SAAS2lB,EAAE1lB,WAAY,KAAKsoB,cAE7Q,IAAInU,EAAO,CACPpF,OAAQ,YAAawpH,iBAAkBF,EAAOp4G,MAAO7xB,KAAKmD,QAAQ0uB,MAClEu4G,YAAa,OAAUh3G,GAAGjB,IAE9BnyB,KAAKmD,QAAQw1F,QAAQ5yE,KAG7BsiH,EAAmBnoI,UAAUq5B,gBAAkB,SAAUL,GACrD,QAAOA,EAAIK,iBAAkBL,EAAIK,mBAErC8uG,EAAmBnoI,UAAUwqI,kBAAoB,WAC7C,IAAIrnI,EAAQrD,KACR6c,EAAM7c,KAAKyqI,OAAOhyH,MAClB8W,EAASvvB,KAAKmD,QAAQosB,OACtBD,EAAQtvB,KAAKu5B,gBAAgBhK,GAAUvvB,KAAKwoI,gBAAgBhyG,QAAUx2B,KAAKmD,QAAQmsB,MAAMkH,QACzFu4G,EAAe/uI,KAAKmD,QAAQmsB,MAAMkH,QAClC43G,EAAO9+G,EAAMsI,QAAQ3D,QAAO,SAAU9mB,GAAK,OAAOA,GAAc,YAATA,EAAEisB,MAAqB,GAClF9J,EAAMsI,QAAU,GAChBm3G,EAAan3G,QAAU,GACvB,IAAIo3G,EAAgC,WAAtBhvI,KAAKmD,QAAQqL,MAAqB1H,WAAW+V,GAAQ/V,WAAW+V,GAAOA,EACjFoW,EAAWjzB,KAAKmD,QAAQm2B,SACD,WAAtBt5B,KAAKmD,QAAQqL,KAAoB,WAAa,QAAYxO,KAAKmD,QAAQqL,KAAO,WAAa,QAC5F0kB,GAAY,EACZgH,EAAel6B,KAAKmD,QAAQ+2B,aAC5BrI,EAAQ7xB,KAAKu5B,gBAAgBhK,GAAUA,EAAOwC,gBAAkBxC,EAAOsC,MAC3Em9G,EAAqB,KAAXA,QAA4BzjI,IAAXyjI,OAAwBzjI,EAAYyjI,EAC/D,IAKIC,EALArB,EAAO,GACPH,EAAW,CACX57G,MAAOA,EAAOM,UAAW,KAAMgC,IAAKn0B,KAAKmD,QAAQgxB,IACjDlB,SAAU,QAASzkB,KAAMxO,KAAKmD,QAAQqL,KAAM0kB,UAAWA,EAAWgH,aAAcA,GAGhF1iB,EAAaxX,KAAKmD,QAAQ2yB,YAAYnC,QAAQ7e,cAsBlD,GArB0B,YAAtB9U,KAAKmD,QAAQqL,YACEjD,IAAXyjI,IACsF,IAAtFhvI,KAAK8qI,kBAAkB,cAAcjpH,cAAc7d,QAAQgrI,EAAOntH,eAClEmtH,EAAS,YAEOzjI,IAAXyjI,IACkF,IAAvFhvI,KAAK8qI,kBAAkB,eAAejpH,cAAc7d,QAAQgrI,EAAOntH,iBACnEmtH,EAAS,cAEEzjI,IAAXyjI,IACsF,IAAtFhvI,KAAK8qI,kBAAkB,cAAcjpH,cAAc7d,QAAQgrI,EAAOntH,gBAAyBrK,GAEjFA,IAAVw3H,GAAiE,QAEjDzjI,IAAXyjI,IACkF,IAAvFhvI,KAAK8qI,kBAAkB,eAAejpH,cAAc7d,QAAQgrI,EAAOntH,gBAAyBrK,IAElFA,IAAVw3H,GAAiE,GAErE/7G,EAAW,UAEY,SAAtBjzB,KAAKmD,QAAQqL,MAAyC,aAAtBxO,KAAKmD,QAAQqL,MAA6C,aAAtBxO,KAAKmD,QAAQqL,OAAwBxO,KAAKmD,QAAQmZ,OAAQ,CAC/H,IAAImiE,EAAO,IAAI,OACXniE,EAA0C,kBAAzBtc,KAAKmD,QAAc,OAAiBnD,KAAKmD,QAAQmZ,OAClEtc,KAAKmD,QAAQmZ,OAAOA,OAEpB0yH,EADA1yH,GACSmiE,EAAKthE,UAAUN,EAAK,CAAEP,OAAQA,KAG9B,IAAI3D,KAAKkE,GAEI,aAAtB7c,KAAKmD,QAAQqL,OACbwgI,EAASA,EAAO71H,cAAgB,IAAM,gBAAQ61H,EAAOhoG,WAAa,GAAK,IAAM,gBAAQgoG,EAAOnoG,YAGpG7mC,KAAK6oI,yBAA0B,EAC/B7oI,KAAKmpI,mBAAqB,GAC1BnpI,KAAKqpI,wBAAyB,EAC9BrpI,KAAKspI,+BAAgC,EACrCtpI,KAAKupI,kCAAmC,EACxCvpI,KAAKgpI,gBAAkB,EACvBhpI,KAAKopI,kBAAoB,EACzBppI,KAAKwpI,iCAAmC,GACd,KAAtBxpI,KAAKyqI,OAAOhyH,OACZzY,KAAKorI,8BAAgCprI,KAAK2oI,mBAAqB3oI,KAAKuoI,kBAAkBvoI,KAAKmD,QAAQosB,OAAOsC,OAAS7xB,KAAKuoI,kBAAkBvoI,KAAKmD,QAAQosB,OAAOsC,OAAOnkB,QAAU,GAC/K1N,KAAKmD,QAAQ+rI,qBAAuBlvI,KAAKmD,QAAQ+rI,sBAGjDlvI,KAAKorI,8BAAgC,GAEzCprI,KAAKmvI,YAAY7/G,GACjB,IAAIvJ,EAAO,CACPgI,YAAa,QACb+9G,YAAa9rI,KAAM24B,WAAY9G,EAAOtC,OAAQA,EAC9C0D,SAAUA,EAAUC,UAAWA,EAAWgH,aAAcA,EAAck1G,kBAAmB,KACzF9/G,MAAOA,EAAO7W,MAAOu2H,GAErBhvI,KAAK2oI,mBAAqB3oI,KAAK4uB,OAAOoF,eAAeq7G,aACrDtpH,EAAKqpH,kBAAoBpvI,KAAK4uB,OAAOoF,eAAeq7G,YAExDrvI,KAAK4uB,OAAO3mB,QAAQ,OAAoB8d,GAAM,SAAUupH,GAIpD,GAFAA,EAAWr8G,SAAWq8G,EAAWr8G,SACjCg8G,EAAW,IAAI,OAAUp9G,EAAOy9G,EAAWr8G,SAAUlN,EAAKtN,MAAO62H,EAAWp8G,UAAWo8G,EAAWp1G,cACvE,SAAvB72B,EAAMF,QAAQqL,MAA0C,aAAvBnL,EAAMF,QAAQqL,MAA8C,aAAvBnL,EAAMF,QAAQqL,KAAqB,CACzGykB,EAAW,QACX,IAAIs8G,EAAY,CACZ19G,MAAOA,EAAOoB,SAAUA,EAAUxa,MAAOu2H,EAAQ97G,UAAWA,EAC5DgH,aAAcA,GAEb,eAAkB80G,KACnBC,EAAW,eAAiBM,EAAWlsI,EAAMF,QAAQqL,OAG7D,GAAIqO,GAAsB,kBAARA,GAAoBxZ,EAAMwpI,UACxCxpI,EAAMynI,kBAAkB,UAAUjpH,cAAc7d,QAAQ6Y,EAAIgF,gBAAkB,EAAG,CACjF+rH,EAAOA,EAAK3+F,OAAOo5F,EAAmByF,4BAA4BL,IAClE,IAAI+B,EAAmBnH,EAAmBoH,kBAAkB7B,GAC5D4B,EAAiBj9G,WAAWlmB,KAAK4iI,GACjCA,EAAWO,EACXlgH,EAAM6D,MAAMq8G,QAEP3yH,EAAIlc,QACTsuI,EAAY,eAAkBb,GAA+Ba,EAAvBA,EAASvzG,IAAI0yG,EAAKjhI,GACxDmiB,EAAM6D,MAAM87G,IAEN,eAAkBb,KACxBa,EAAWb,EAAKjhI,EAChBmiB,EAAM6D,MAAMi7G,EAAKjhI,IAErB9J,EAAMmrI,mBAAqBS,EAC3BK,EAAWF,kBAAqB,eAAkBE,EAAWF,mBAAoD,IAA/BE,EAAWF,kBACzF/rI,EAAMslI,mBAAqBtlI,EAAMurB,OAAOoF,eAAeq7G,aAAeC,EAAWF,oBACjF/rI,EAAMurB,OAAOoF,eAAeq7G,WAAatpH,EAAKqpH,mBAElD,IAAIzzG,EAAa,GAGjB,GAFA,eAAYt4B,EAAMqoI,SAClBroI,EAAM07F,aAAc,EAChB17F,EAAMk2B,gBAAgBhK,IAAW1S,EAAIlc,OAAQ,CAC7C,IAAI+uI,EAAW,WAAYngH,EAAOH,WAAc,IAAI,OAAYG,EAAOH,WAAW4B,QAC9EzB,EAAOH,WAEXsgH,EAAQt+G,aAAa9B,GAAOe,MAAK,SAAUljB,GACvC,IAAIqkB,EAAanuB,EAAMF,QAAQosB,OAAOiC,WACtCnuB,EAAMF,QAAQosB,OAAOiC,WAAarkB,EAAE6jB,OACpC3tB,EAAMurB,OAAOhV,OAAO,QAAsB,CAAEuY,UAAWwJ,EAAYpM,OAAQA,IACvEoM,EAAWxJ,UAAUI,WAAW5xB,OAChCouI,EAAa57G,MAAMwI,EAAWxJ,WAG9B9uB,EAAM07F,aAAc,EAExB17F,EAAMF,QAAQosB,OAAOiC,WAAaA,EAC9BnuB,EAAMslI,mBACNtlI,EAAMulI,sBAAsB,eAAkBvlI,EAAMssI,UACpDtsI,EAAMusI,0BAA0Bb,GAChCA,EAAaxyG,iBAGbwyG,EAAac,KAAKP,EAAWF,mBAEjC/rI,EAAMwwB,OAAOy7G,EAAYP,WAIzB1rI,EAAMslI,mBAAqBtlI,EAAMurB,OAAOoF,eAAeq7G,YACvDhsI,EAAMulI,sBAAsB,eAAkBvlI,EAAMssI,UACpDtsI,EAAMusI,0BAA0BtgH,GAChCA,EAAMiN,iBAGNjN,EAAMugH,KAAKP,EAAWF,mBAE1B/rI,EAAMwwB,OAAOy7G,EAAYhgH,OAIrC+4G,EAAmBnoI,UAAU2zB,OAAS,SAAU9N,EAAMuJ,GAC9CtvB,KAAK4uB,OAAOQ,YAAc,WAAYpvB,KAAK4uB,OAAOQ,WAClDpvB,KAAK8vI,YAAY/pH,EAAMuJ,GAGvBtvB,KAAK+vI,cAAczgH,IAG3B+4G,EAAmBnoI,UAAU8vI,qBAAuB,SAAU7gH,EAASm5G,GAMnE,IALA,IAAI/1G,EAAa81G,EAAmBptG,aAAa9L,EAASm5G,GACtDxuG,EAAgB,GAChB6B,EAAa,GACbs0G,OAA8C1kI,IAArCvL,KAAK4uB,OAAO6B,qBACrB8J,EAAgB01G,EAASjwI,KAAK4uB,OAAO6B,uBAAyB,GACzD5iB,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKmd,GAAa1kB,EAAKhK,EAAGlD,OAAQkN,IAAM,CACjE,IAAIwH,EAAOxR,EAAGgK,GACVqrB,OAAM,EACN+2G,IAAWjwI,KAAK4uB,OAAO8J,iBAAiBrjB,KACxC6jB,EAAM,eAA2B7jB,EAAMklB,IAEvCrB,GACAl5B,KAAK4uB,OAAOhV,OAAO,QAAsB,CAAEuY,UAAWwJ,EAAYpM,OAAQ2J,IACtEyC,EAAWxJ,UAAUI,WAAW5xB,QAChCm5B,EAAcztB,KAAK,OAAU+mB,GAAGuI,EAAWxJ,UAAUI,cAIzDuH,EAAcztB,KAAKkmB,EAAW,GAAKld,IAG3C,OAAOykB,EAAcn5B,QAAU,OAAU+6B,IAAI5B,IAEjDuuG,EAAmBnoI,UAAUq2B,SAAW,WACpC,OAAOv2B,KAAK4uB,OAAO2H,SAAWv2B,KAAK4uB,OAAO2H,WAAWC,QAAU,IAAI,QAEvE6xG,EAAmBnoI,UAAUysI,WAAa,WACtC,IAAItpI,EAAQrD,KACZA,KAAKkwI,aAAc,EACnB,IAAI5gH,EAAQtvB,KAAKu2B,WACjBjH,EAAMiN,gBACNv8B,KAAKmvI,YAAY7/G,GACjB,IAAIvJ,EAAO,CACPgI,YAAa,QAA4BuB,MAAOA,EAAO8/G,kBAAmB,MAE1EtD,EAAc,cAClB/lH,EAAK,GAAK+lH,GAAe9rI,KACrBA,KAAK2oI,mBAAqB3oI,KAAK4uB,OAAOoF,eAAeq7G,aACrDtpH,EAAKqpH,kBAAoBpvI,KAAK4uB,OAAOoF,eAAeq7G,YAExDrvI,KAAK4uB,OAAO3mB,QAAQ,OAAoB8d,GAAM,SAAUA,GACpDA,EAAKqpH,kBAAqB,eAAkBrpH,EAAKqpH,mBAA8C,IAAzBrpH,EAAKqpH,kBACvE/rI,EAAMslI,mBAAqBtlI,EAAMurB,OAAOoF,eAAeq7G,aAAetpH,EAAKqpH,oBAC3E/rI,EAAMurB,OAAOoF,eAAeq7G,WAAatpH,EAAKqpH,mBAE7C/rI,EAAMslI,mBACPr5G,EAAMugH,KAAK9pH,EAAKqpH,mBAEfrpH,EAAKuJ,MAAM6gH,UAAUxvI,SAAU0C,EAAMslI,oBACtCtlI,EAAM6sI,aAAc,EACpB7sI,EAAM+sI,cAAc9gH,IAEpBjsB,EAAMslI,oBACNtlI,EAAMulI,sBAAsB,eAAkBvlI,EAAMssI,UACpDtsI,EAAMusI,0BAA0BtgH,IAEhCjsB,EAAMurB,OAAOQ,YAAc,WAAY/rB,EAAMurB,OAAOQ,WACpD/rB,EAAMysI,YAAY/pH,EAAMuJ,GAGxBjsB,EAAMgtI,qBAAqB/gH,GAAO,OAI9C+4G,EAAmBnoI,UAAUivI,YAAc,SAAU7/G,GACjD,IACIzrB,EADAR,EAAQrD,KAERswI,EAAiB,OAASv9G,SAAS/yB,KAAKmD,QAAQ+nI,gBAAiB,SAOrE,GANIoF,EAAetsI,QAAQhE,KAAKmD,QAAQosB,OAAOsC,SAAW,IACtDy+G,EAAiBA,EAAerhG,OAAOjvC,KAAKmD,QAAQosB,OAAOsC,QAE1D7xB,KAAK2oI,mBACNr5G,EAAMyD,SAASu9G,GAEftwI,KAAK2oI,oBAAsB3oI,KAAKmD,QAAQm2B,UAAkC,KAAtBt5B,KAAKyqI,OAAOhyH,MAChEzY,KAAKmD,QAAQisB,WAAapvB,KAAKmD,QAAQisB,sBAAsB,OACzDpvB,KAAKmD,QAAQisB,WAAa,IAAI,OAAYpvB,KAAKmD,QAAQisB,YAC3DpvB,KAAK8oI,2BAA6B9oI,KAAKmD,QAAQisB,WAAWA,WAAW2G,KAAKroB,QAC1E1N,KAAKmD,QAAQisB,WAAWA,WAAW2G,KAAO,OAAShD,UAAUlvB,EAAK7D,KAAKmD,QAAQotI,4BAA4BthG,OAAOnsC,MAAMe,EAAI7D,KAAK8oI,4BAA6B9oI,KAAKmD,QAAQosB,OAAOsC,OAAO,GACrL7xB,KAAKu5B,gBAAgBv5B,KAAKmD,QAAQosB,UAClCvvB,KAAKmD,QAAQosB,OAAOH,WAAapvB,KAAKmD,QAAQosB,OAAOH,sBAAsB,OACvEpvB,KAAKmD,QAAQosB,OAAOH,WAAa,IAAI,OAAYpvB,KAAKmD,QAAQosB,OAAOH,YACzEpvB,KAAKmD,QAAQisB,WAAWA,WAAW2G,KAAO/1B,KAAKmD,QAAQisB,WAAWA,WAAW2G,KAAKlvB,KAAI,SAAU0mD,EAAMvsD,GAClG,OAAOvB,OAAOquG,OAAO,GAAIvgD,EAAMlqD,EAAMF,QAAQosB,OAAOH,WAAWA,WAAW2G,KAAK/0B,aAItF,GAAIhB,KAAK2oI,mBAAqB3oI,KAAKmD,QAAQm2B,SAAU,CACtDhK,EAAM7G,OAAOzoB,KAAKmD,QAAQosB,OAAOsC,OACjCvC,EAAMmK,OAAOz5B,KAAKmD,QAAQosB,OAAOsC,MAAO,aACxC,IAAIra,EAAaxX,KAAKmD,QAAQ2yB,YAAYnC,QAAQ7e,cAC9C0C,GAAcA,MAAkC,mBAAjBA,KAAsD,kBAAjBA,KAChD,sBAAjBA,KAAyD,mBAAjBA,KAAsD,iBAAjBA,MAChF8X,EAAMyD,SAASu9G,GAGvB,OAAOhhH,GAEX+4G,EAAmBnoI,UAAU4vI,YAAc,SAAU/pH,EAAMuJ,GACvD,IAAIjsB,EAAQrD,KACRwwI,EAAS,eAAazqH,EAAMuJ,GAChCtvB,KAAK4uB,OAAO3mB,QAAQ,QAAwBuoI,EAAOhhH,OACnD,IAAIE,EAAM8gH,EAAO7yC,SACjBjuE,EAAIU,QAAQC,MAAK,SAAUljB,GACvB9J,EAAMotI,YAAYtjI,OAG1Bk7H,EAAmBnoI,UAAUwwI,kCAAoC,WAC7D,OAAavrI,OAAOnF,KAAK2rI,KAAM,SAAU3rI,KAAK2wI,wBAElDtI,EAAmBnoI,UAAU0wI,gCAAkC,SAAUzjI,GACrE,IAAI9J,EAAQrD,KACZ,OAAa8L,IAAI9L,KAAK2rI,KAAM,SAAU3rI,KAAK2wI,sBAAuB3wI,MAClE,IAAIM,EAASN,KAAK2rI,KACdrrI,EAAOsgB,SAASjgB,OAAS,IAAML,EAAO2Q,WAAa3Q,EAAO29C,aAAe39C,EAAOmJ,cAAgBnJ,EAAO2Q,WAAa,IACpHjR,KAAK2wI,wBAET,OAAO/X,MAAQxrH,YAAW,WAAc/J,EAAMilC,aAAan7B,GAAI,OAAOyrH,MAAQ,OAAS,IAE3FyP,EAAmBnoI,UAAUwsI,cAAgB,SAAUtpI,GACnD,IAAIytI,EAAU,eAAc,MAAO,CAAErsI,UAAW,WAAY0K,OAAQ,uBACpE2hI,EAAQ/lI,UAAY,4FACpB1H,EAAQsB,YAAYmsI,GACpB,IAAIC,EAAOD,EAAQzpI,wBACnBhE,EAAQyxC,YAAYg8F,GACpB,IAAI7+D,EAAa7oE,KAAKC,MAAM0nI,EAAKzrI,QACjC,OAAO2sE,GAEXq2D,EAAmBnoI,UAAUi7G,mBAAqB,WAC9C,MAAO,0EAEXktB,EAAmBnoI,UAAUusI,SAAW,WACpC,IACIsE,EADA91B,EAAe,EAEf+1B,EAAWhxI,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAE+G,GAAItL,KAAKsL,GAAKtL,KAAKmD,QAAQqL,KAAO,oBAChFhK,UAAW,qDAAsD0K,OAAQ,iBACzE+hI,EAAcjxI,KAAK2rI,KAEvB,GADA3rI,KAAKkxI,aACDD,EAAa,CACb,IAAI3qI,EAAgBE,iBAAiByqI,GACjC5rI,EAAS4rI,EAAYrwH,SAASjgB,OAASgR,SAASrL,EAAcjB,QAC9D8D,KAAKo3D,MAAM5uD,SAASrL,EAAcjB,OAAOpB,MAAM,MAAM,KAAO,EAC5DktI,GAAkBnxI,KAAK65H,SAAYoX,EAAYrwH,SAASjgB,QAAWX,KAAK4pI,IAAI1kI,UAAUmB,SAAS,iBAC1FG,iBAAiBxG,KAAK4pI,IAAI19H,cAAc,mBAAmBilI,gBAAhE,GACJH,EAASjqI,MAAMksH,QAAU,UAAY3sH,EAAchB,MAAQ,iBAAmBgB,EAAconD,UAAY,aACpGroD,EAAS,eAAiBiB,EAAc2vD,OAAS,mBAAqB3vD,EAAc8qI,YAAc,mBAChG9qI,EAAc+qI,YAAc,mBAAqB/qI,EAAcgrI,YAAc,2CAC/EH,EAAkB,IACtB,IAAIl/D,EAAWjyE,KAAK0sI,cAAcuE,GAClCh2B,EAAe9xG,KAAKo3D,MAAMl7D,EAAS4sE,GACnCgpC,EAAeg2B,EAAYrwH,SAASjgB,OAASs6G,EAAeg2B,EAAYrwH,SAASjgB,OAASs6G,EAC1F81B,EAAiB9+D,EAAW,KAEhC,IAAIipC,EAAe,kEAAoE61B,EAApE,uFAEb/wI,KAAKm7G,qBAAuBn7G,KAAKm7G,qBAAuB,eAE9D,GADA61B,EAASlmI,UAAY,IAChBmmI,EAAYrwH,SAASjgB,OAAQ,CAC9BX,KAAK0rI,QAAQ6F,mBAAmB,cAAer2B,GAC/C,IAAIE,EAAW,GAAG1tG,MAAMpK,KAAKtD,KAAK0rI,QAAQ/pH,cACrCe,iBAAiB,yFACtB04F,EAAS,GAAGl2G,UAAU4G,IAAI,iCAC1BsvG,EAAS,GAAGl2G,UAAU4G,IAAI,sCAE9B9L,KAAK0rI,QAAQlmH,aAAawrH,EAAUhxI,KAAK2rI,MACzC,IAAK,IAAI3qI,EAAI,EAAGi6G,GAAgBj6G,EAAIi6G,EAAcj6G,IAAK,CACnDgwI,EAASlmI,WAAaowG,EAClBE,EAAW,GAAG1tG,MAAMpK,KAAK0tI,EACxBtuH,iBAAiB,yFACtB04F,EAAS,GAAGl2G,UAAU4G,IAAI,iCAC1BsvG,EAAS,GAAGl2G,UAAU4G,IAAI,sCAE1B9L,KAAK2rI,OACLqF,EAAS//H,UAAYjR,KAAK2rI,KAAK16H,YAGvCo3H,EAAmBnoI,UAAUgxI,WAAa,WACtC,IAAIM,EAAYxxI,KAAK+pI,UAAU3mI,QAAQsf,iBAAiB,kBACxD,GAAI8uH,EAAU7wI,OACV,IAAK,IAAIK,EAAI,EAAGA,EAAIwwI,EAAU7wI,OAAQK,IAClC,gBAAOwwI,EAAUxwI,IAGzB,IAAIywI,EAAazxI,KAAK+pI,UAAU3mI,QAAQ8I,cAAc,8BAClDulI,GACA,gBAAOzxI,KAAK+pI,UAAU3mI,QAAQ8I,cAAc,gCAGpDm8H,EAAmBnoI,UAAUywI,sBAAwB,WACjD,IAAIrwI,EAASN,KAAK2rI,KACdrrI,EAAO2Q,WAAa3Q,EAAO29C,aAAe39C,EAAOmJ,eAAiBzJ,KAAK+oI,+BACpE/oI,KAAKmpI,mBAAmBxoI,QAAWX,KAAKgpI,gBAAkBhpI,KAAK4uB,OAAOoF,eAAeq7G,YACrFrvI,KAAK2rI,KAAK/qH,SAASjgB,SAAmD,EAAxCX,KAAK4uB,OAAOoF,eAAeq7G,cACvDrvI,KAAKopI,mBAAqBppI,KAAKopI,kBAAqBppI,KAAKgpI,gBAAkBhpI,KAAK4uB,OAAOoF,eAAeq7G,aAC3GrvI,KAAK4vI,4BACL5vI,KAAKkpI,4BAA8B,QAE9B5oI,EAAO2Q,WAAa3Q,EAAO29C,aAAe39C,EAAOmJ,eAAiBzJ,KAAK+oI,+BACzE/oI,KAAKmpI,mBAAmBxoI,OAAUX,KAAKgpI,gBAAkBhpI,KAAK4uB,OAAOoF,eAAeq7G,YACpFrvI,KAAK2rI,KAAK/qH,SAASjgB,SAAmD,EAAxCX,KAAK4uB,OAAOoF,eAAeq7G,YAC5DrvI,KAAK0xI,uBAAwB,GAAGhkI,MAAMpK,KAAKtD,KAAK2rI,KAAK/qH,UAAWlU,OAAO,EAAG1M,KAAK4uB,OAAOoF,eAAeq7G,aACrGrvI,KAAKgpI,iBAAwD,SAArChpI,KAAKkpI,4BAAyClpI,KAAK4uB,OAAOoF,eAAeq7G,WACpD,EAAxCrvI,KAAK4uB,OAAOoF,eAAeq7G,WAChC,eAAervI,KAAK2rI,KAAM3rI,KAAKmpI,mBAAmBz7H,MAAM1N,KAAKgpI,gBAAiBhpI,KAAK4uB,OAAOoF,eAAeq7G,WAAarvI,KAAKgpI,kBAC3HhpI,KAAKkpI,4BAA8B,QAET,IAArB5oI,EAAO2Q,YAAoBjR,KAAK4oI,sBAAwB5oI,KAAK6oI,yBAA2B7oI,KAAKgpI,iBAC/FhpI,KAAKmpI,mBAAmBxoI,QAAUX,KAAKmpI,mBAAmBxoI,OAAiD,EAAxCX,KAAK4uB,OAAOoF,eAAeq7G,YAC9FrvI,KAAK2rI,KAAK/qH,SAASjgB,SAAmD,EAAxCX,KAAK4uB,OAAOoF,eAAeq7G,YAC5DrvI,KAAK0xI,uBAAwB,GAAGhkI,MAAMpK,KAAKtD,KAAK2rI,KAAK/qH,UAAWlU,OAAgD,EAAxC1M,KAAK4uB,OAAOoF,eAAeq7G,WAAiBrvI,KAAK4uB,OAAOoF,eAAeq7G,aAC/IrvI,KAAKgpI,iBAAwD,OAArChpI,KAAKkpI,4BAAuClpI,KAAK4uB,OAAOoF,eAAeq7G,WAClD,EAAxCrvI,KAAK4uB,OAAOoF,eAAeq7G,WAChCrvI,KAAK2xI,uBAAuB,GAAGjkI,MAAMpK,KAAKtD,KAAKmpI,mBAAmBz7H,MAAM1N,KAAKgpI,gBAAiBhpI,KAAKgpI,gBAAkBhpI,KAAK4uB,OAAOoF,eAAeq7G,cAChJrvI,KAAK2rI,KAAK16H,UAAYjR,KAAKipI,yBAC3BjpI,KAAKkpI,4BAA8B,MAET,IAArB5oI,EAAO2Q,YAAoBjR,KAAK4oI,sBAAwB5oI,KAAK6oI,yBAA2B7oI,KAAKgpI,iBAC/FhpI,KAAKmpI,mBAAmBxoI,QAAUX,KAAK2rI,KAAK/qH,SAASjgB,OAAiD,EAAxCX,KAAK4uB,OAAOoF,eAAeq7G,aAC5FrvI,KAAK0xI,uBAAwB,GAAGhkI,MAAMpK,KAAKtD,KAAK2rI,KAAK/qH,UAAWlU,OAAgD,EAAxC1M,KAAK4uB,OAAOoF,eAAeq7G,WAAiBrvI,KAAKopI,kBAAoBppI,KAAK4uB,OAAOoF,eAAeq7G,aACxKrvI,KAAKgpI,iBAAmB7/H,KAAKo3D,MAAMvgE,KAAKopI,kBAAoBppI,KAAK4uB,OAAOoF,eAAeq7G,YAAc,GACjGrvI,KAAK4uB,OAAOoF,eAAeq7G,WAC/BrvI,KAAK2xI,uBAAuB,GAAGjkI,MAAMpK,KAAKtD,KAAKmpI,mBAAmBz7H,MAAM1N,KAAKgpI,gBAAiBhpI,KAAKgpI,gBAAkBhpI,KAAK4uB,OAAOoF,eAAeq7G,cAChJrvI,KAAK2rI,KAAK16H,UAAYjR,KAAKipI,yBAC3BjpI,KAAKkpI,4BAA8B,OAG3Cb,EAAmBnoI,UAAUwxI,uBAAyB,SAAUE,GAC5D,IAAK,IAAI5wI,EAAI,EAAGA,EAAI4wI,EAAWjxI,OAAQK,IACnC,gBAAO4wI,EAAW5wI,KAG1BqnI,EAAmBnoI,UAAUyxI,uBAAyB,SAAUE,GAC5D,IAAK,IAAI7wI,EAAI,EAAGA,EAAI6wI,EAAWlxI,OAAQK,IACnChB,KAAK2rI,KAAKnmH,aAAaqsH,EAAW7wI,GAAIhB,KAAK2rI,KAAK/qH,SAAS5f,KAGjEqnI,EAAmBnoI,UAAU0vI,0BAA4B,SAAUtgH,GAC/D,IAAIjsB,EAAQrD,MACPA,KAAK4oI,qBAAuB5oI,KAAK4uB,OAAOoF,gBAAkE,YAAhDh0B,KAAK4uB,OAAOoF,eAAeymB,iBACtFrtC,YAAW,WACH/J,EAAM0lI,+BACN1lI,EAAMopI,aAEX,KAEGzsI,KAAK4oI,sBACX,eAAc,CAAEtoI,OAAQN,KAAK0rI,QAASjhI,SAAUzK,KAAK4uB,OAAOnkB,SAAWzK,KAAK4uB,OAAOnkB,SAAW,MAAQzK,KAAK4uB,OAAOrqB,eAClH,eAAYvE,KAAK0rI,UAErB,IAAI/zG,EAAQ,KACZ,GAAI33B,KAAK8xI,eAAiB9xI,KAAK8xI,cAAcl6G,SAAW53B,KAAK8xI,cAAcl6G,QAAQj3B,OAC/E,IAAK,IAAIK,EAAI,EAAGA,EAAIhB,KAAK8xI,cAAcl6G,QAAQj3B,OAAQK,IACD,WAA9ChB,KAAK8xI,cAAcl6G,QAAQ52B,GAAG,GAAK22B,IACc,WAA9C33B,KAAK8xI,cAAcl6G,QAAQ52B,GAAG,GAAK22B,KACtC33B,KAAK8xI,cAAcl6G,QAAQlrB,OAAO1L,EAAG,GACrCA,KAIZ,IAAI+wI,IAAaziH,EACjBA,EAAQA,GAAgBtvB,KAAK8xI,cACzB9xI,KAAK4oI,qBAAuB5oI,KAAK6oI,wBACjC7oI,KAAKgpI,gBAAkB,EAGvBhpI,KAAKgpI,iBAAmBhpI,KAAK4uB,OAAOoF,eAAeq7G,WAEvD//G,EAAMmnB,KAAKz2C,KAAKgpI,iBACZhpI,KAAK4oI,qBAAuB5oI,KAAK6oI,yBACjCv5G,EAAMugH,KAA6C,EAAxC7vI,KAAK4uB,OAAOoF,eAAeq7G,YACtCrvI,KAAKgpI,iBAA2D,EAAxChpI,KAAK4uB,OAAOoF,eAAeq7G,YAGnD//G,EAAMugH,KAAK7vI,KAAK4uB,OAAOoF,eAAeq7G,YAErC0C,IACD/xI,KAAKqwI,qBAAqB/gH,GAC1BtvB,KAAK+oI,+BAAgC,IAG7CV,EAAmBnoI,UAAUmwI,qBAAuB,SAAU/gH,EAAOy/E,GACjE,IAAI1rG,EAAQrD,KACZA,KAAKmD,QAAQisB,WAAapvB,KAAKmD,QAAQisB,sBAAsB,OACzDpvB,KAAKmD,QAAQisB,WAAa,IAAI,OAAYpvB,KAAKmD,QAAQisB,YAC3D,IAAIsB,EAAa,GACbshH,EAAW,GACf,GAAIhyI,KAAKu5B,gBAAgBv5B,KAAKmD,QAAQosB,SAAWw/E,EAAW,CACxD,IAAI2gC,EAAW,WAAY1vI,KAAKmD,QAAQosB,OAAOH,WAC3C,IAAI,OAAYpvB,KAAKmD,QAAQosB,OAAOH,WAAW4B,QAC/ChxB,KAAKmD,QAAQosB,OAAOH,WACxBpvB,KAAKwoI,gBAAgBv3G,OAAS3B,EAAM2B,OACpCP,EAAWrkB,KAAKqjI,EAAQt+G,aAAapxB,KAAKwoI,kBAC1CwJ,EAAS3lI,MAAK,SAAUwf,GAAQ,OAAOxoB,EAAMw4B,eAAiBhQ,KAclE,GAZI7rB,KAAK2oI,oBACL3oI,KAAK8xI,cAAgBxiH,EAAMkH,QACvBx2B,KAAK4oI,qBACL5oI,KAAK2rI,KAAKzmI,UAAU4G,IAAI,6BACxB,OAAaA,IAAI9L,KAAK2rI,KAAM,SAAU3rI,KAAK2wI,sBAAuB3wI,MAClE,OAAa8L,IAAI9L,KAAK2rI,KAAM,UAAW3rI,KAAK4wI,gCAAiC5wI,MAC7E,OAAa8L,IAAI9L,KAAK2rI,KAAM,YAAa3rI,KAAK0wI,kCAAmC1wI,OAE5EA,KAAK6oI,0BACV7oI,KAAK2rI,KAAK7gI,UAAY,KAG1B9K,KAAK2oI,mBAAqB3oI,KAAK4oI,sBAAwB5oI,KAAKmD,QAAQm2B,SAAU,CAC9E,IAAIzH,EAAQ7xB,KAAKu5B,gBAAgBv5B,KAAKmD,QAAQosB,QAAUvvB,KAAKmD,QAAQ4uB,gBACjE/xB,KAAKmD,QAAQosB,OAAOsC,MACxB7xB,KAAKmD,QAAQisB,WAAWgC,cAAa,IAAI,QAAQqI,OAAO5H,EAAO,OAAS8lB,cAActnB,MAAK,SAAUljB,GACjG9J,EAAMF,QAAQisB,WAAWA,WAAW2G,KAAO5oB,EAAE6jB,OAC7C3tB,EAAM4uI,uBAAuB3iH,EAAOoB,EAAYshH,WAIpDhyI,KAAKiyI,uBAAuB3iH,EAAOoB,EAAYshH,IAGvD3J,EAAmBnoI,UAAU+xI,uBAAyB,SAAU3iH,EAAOoB,EAAYshH,GAC/E,IAAI3uI,EAAQrD,KACZ0wB,EAAWrkB,KAAKrM,KAAKmD,QAAQisB,WAAWgC,aAAa9B,IACrD0iH,EAAS3lI,KAAKrM,KAAKywI,YAAY7qI,KAAK5F,OACpC,IAAIgB,EAAI,EACRqwB,QAAQC,IAAIZ,GAAYL,MAAK,SAAUljB,GACnC9J,EAAM0lI,+BAAgC1lI,EAAMslI,mBAA4BtlI,EAAM0lI,8BAC9E,IAAK,IAAIzxG,EAAI,EAAGA,EAAInqB,EAAExM,OAAQ22B,IAC1Bj0B,EAAM+lI,kBAAoB/lI,EAAMslI,oBAAsBtlI,EAAM+lI,kBAAoBj8H,EAAEmqB,GAAGyT,MAAQ1nC,EAAM+lI,kBACnG4I,EAAShxI,KAAKmM,EAAEwE,SAAS2lB,EAAE1lB,WAAY,KAAKof,WAEjDgB,OAAM,WACD3uB,EAAMslI,mBAAqBtlI,EAAMurB,OAAOoF,gBAAmE,YAAjD3wB,EAAMurB,OAAOoF,eAAeymB,kBACtFp3C,EAAMurB,OAAOyuE,iBAAY9xF,EAAWlI,EAAM0mI,UAAU3mI,aAIhEilI,EAAmBnoI,UAAUuwI,YAAc,SAAUtjI,GACjD,GAAKnN,KAAK4oI,sBAAuB5oI,KAAKopI,qBAAuBppI,KAAKgpI,iBAAmBhpI,KAAKopI,oBAClFppI,KAAK6oI,yBAA0C,IAAb17H,EAAExM,QAD5C,CAIAX,KAAK2vI,SAAWxiI,EAChB,IAAI+kI,EAAQ,CAAE9iH,WAAYpvB,KAAK2vI,SAAUv+G,cAAc,EAAMS,MAAO7xB,KAAKmD,QAAQ0uB,OAEjF,GADA7xB,KAAK4uB,OAAOhV,OAAO,OAA+Bs4H,GAC9CA,EAAM9gH,aAAc,CACpB,IAAI9B,EAAQ,IAAI,OACXtvB,KAAKkwI,cACNlwI,KAAKsoI,gBAAiB,EACtBtoI,KAAKowI,cAAc9gH,GACnBtvB,KAAKsoI,gBAAiB,GAG1B,IAAIt3G,EAAS,IAAI,OAAYkhH,EAAM9iH,YAAYyD,aAAavD,GACxD4J,EAAMl5B,KAAKmD,QAAQosB,OACvBvvB,KAAKmyI,aAAe9J,EAAmB+J,YAAYphH,EAAQhxB,KAAKmD,QAAQ0uB,MAAOqH,EAAKl5B,KAAK67B,eAAgB77B,MAAM4yB,SAAW,GAE9H,IAAI/G,EAAOqmH,EAAM9gH,aAAepxB,KAAKmyI,aAAeD,EAAM9iH,WAC1DpvB,KAAKqyI,kBAAkB,MAAM,EAAMxmH,EAAMqmH,GACrClyI,KAAKyqI,SAAYzqI,KAAK2oI,mBAAqB3oI,KAAK4oI,sBAAyB5oI,KAAK2oI,oBAC9E3oI,KAAKyqI,OAAO1qH,SAEZ/f,KAAK4oI,qBAAuB5oI,KAAK6oI,2BACjC7oI,KAAK4oI,qBAAsB,EAC3B5oI,KAAK6oI,yBAA0B,GAEnC,IAAI9iH,EAAO,CACPgI,YAAa,QACb4K,WAAY34B,KAAKmD,QAAQ0uB,MAAOg6G,WAAY7rI,KAAKmD,QAAQqL,MAEzDs9H,EAAc,cAClB/lH,EAAK,GAAK+lH,GAAe9rI,KACzBA,KAAK4uB,OAAOhV,OAAO,OAAyBmM,GACxC/lB,KAAK0oI,0BACL,eAAY1oI,KAAK0rI,WAGzBrD,EAAmBnoI,UAAUkwI,cAAgB,SAAU9gH,GACnD,GAAItvB,KAAK4uB,OAAO6E,gBAAkBzzB,KAAK4uB,OAAO6E,eAAelzB,IAAII,OAAQ,CACrE,IAAI+yB,EAAY1zB,KAAK4uB,OAAO6E,eACxB9B,EAAS+B,EAAU/B,OAAOhxB,OAAS+yB,EAAU/B,OAAS3xB,KAAKmD,QAAQgsB,QAAQtoB,KAAI,SAAUyrI,GAAK,OAAOA,EAAEzgH,SAC3GvC,EAAMuE,OAAOH,EAAUnzB,IAAKoxB,EAAQ+B,EAAUT,SAAUS,EAAUI,WAAYJ,EAAUwG,cAE5F,GAAKl6B,KAAKmD,QAAQ+nI,gBAAsB,OAAG,CAEvC,IADA,IAAI3zG,EAAO,GACFv2B,EAAI,EAAGA,EAAIhB,KAAKmD,QAAQ+nI,gBAAgBvqI,OAAQK,IAAK,CAC1D,IAAI+yB,EAAe/zB,KAAKmD,QAAQ+nI,gBAAgBv5H,SAAS3Q,EAAE4Q,WAAY,KACnE5R,KAAKmD,QAAQgxB,KACbJ,EAAaI,IAAMJ,EAAaI,KAAOn0B,KAAK4uB,OAAO8J,iBAAiB3E,EAAalC,OAAOsC,IACpFJ,EAAaI,MAAQn0B,KAAKmD,QAAQgxB,KAClCoD,EAAKlrB,KAAKrM,KAAKmD,QAAQ+nI,gBAAgBv5H,SAAS3Q,EAAE4Q,WAAY,OAI9DmiB,EAAalC,QAAU7xB,KAAKmD,QAAQ0uB,OACpC0F,EAAKlrB,KAAKrM,KAAKmD,QAAQ+nI,gBAAgBv5H,SAAS3Q,EAAE4Q,WAAY,MAI1E,IAAIugB,EAAYnyB,KAAKgwI,qBAAqBz4G,EAAMv3B,KAAKsoI,gBACjDn2G,GACA7C,EAAM6D,MAAMhB,KAIxBk2G,EAAmBnoI,UAAUmyI,kBAAoB,SAAU/iH,EAAOy/E,EAAW3/E,EAAYrJ,GACrF,eAAY/lB,KAAK0rI,SAKjB1rI,KAAKsoI,gBAAiB,EACtBtoI,KAAKuyI,eACLvyI,KAAKsoI,gBAAiB,EACtB,IAAI4J,EAAQ,CAAE9iH,WAAYpvB,KAAK2vI,SAAUjH,0BAA0B,EAAOn5G,OAAQvvB,KAAKmD,QAAQosB,OAC3FnsB,QAASpD,KAAK2rI,KAAMn9H,KAAMxO,KAAKmD,QAAQqL,KAAM8N,OAAQtc,KAAKmD,QAAQqL,KAAMwqD,OAAQh5D,KAAKmD,QAAQopI,mBAAqB,KAC9GvsI,KAAK+pI,UAAU/wE,OAAO,GAAIwyE,UAAWxrI,KAAKwrI,WAClDxrI,KAAK4uB,OAAOhV,OAAO,OAAqCs4H,GACxDlyI,KAAK0oI,yBAA2BwJ,EAAMxJ,yBACjC1oI,KAAK0oI,yBAGD1oI,KAAK2oI,mBAAqB3oI,KAAK4uB,OAAOoF,gBAAkE,YAAhDh0B,KAAK4uB,OAAOoF,eAAeymB,kBACxFz6C,KAAKkxI,aAHLlxI,KAAKwyI,kBAAkBpjH,EAAY2/E,EAAWhpF,IAMtDsiH,EAAmBnoI,UAAU6vI,cAAgB,SAAUzgH,GACnDtvB,KAAKqwI,qBAAqB/gH,IAE9B+4G,EAAmBnoI,UAAUqyI,aAAe,WACxCvyI,KAAKgxB,OAAS,GACd,IAAImB,EAAYnyB,KAAK2oI,mBAAqB3oI,KAAKuoI,kBAAkBvoI,KAAKmD,QAAQ0uB,OAC1E7xB,KAAKgwI,qBAAqBhwI,KAAKuoI,kBAAkBvoI,KAAKmD,QAAQ0uB,OAAQ7xB,KAAKsoI,gBAC3EtoI,KAAKgwI,qBAAqBhwI,KAAKmD,QAAQ+nI,gBAAiBlrI,KAAKsoI,gBAC7Dh5G,EAAQ,IAAI,OACZ6C,GACA7C,EAAM6D,MAAMhB,GAEhBnyB,KAAK4uB,OAAOhV,OAAO,OAAoC,CAAE0V,MAAOA,IAEhE,IADA,IAAI0B,EAAS,IAAI,OAAYhxB,KAAK2vI,UAAU98G,aAAavD,GAChDzhB,EAAK,EAAG4kI,EAAWzhH,EAAQnjB,EAAK4kI,EAAS9xI,OAAQkN,IAAM,CAC5D,IAAI6kI,EAAMD,EAAS5kI,GACnB7N,KAAKgxB,OAAO,eAAUhxB,KAAKmD,QAAQ0uB,MAAO6gH,KAAQ,IAG1DrK,EAAmBnoI,UAAUooC,aAAe,SAAUn7B,GAClD,IAAItJ,EACC,eAAkB,OAAO+0H,QAC1B9rH,aAAa,OAAO8rH,OAExB,IAAIt4H,EAAS6M,EAAE7M,OACf,GAAK,eAAkBN,KAAK4uB,OAAO6rB,mBAAoE,YAA/Cz6C,KAAK4uB,OAAO6rB,iBAAiBC,gBAC9E,gBAAap6C,EAAQ,iBAD5B,CAIA,IAAIysD,EAAO,gBAAazsD,EAAQ,sBAIhC,GAHI,gBAAaA,EAAQ,gBACrBN,KAAKwqI,eAAer9H,GAEpB4/C,IAAS/sD,KAAK0oI,yBAA0B,CACxC,IAAIiK,EAAY5lF,EAAK7gD,cAAc,gBACnC,GAAIymI,EACA3yI,KAAK4yI,iBAAiBD,EAAUztI,UAAUmB,SAAS,iBAInD,GADA,gBAAe0mD,EAAKprC,eAChB3hB,KAAK2oI,oBAAsB57E,EAAKprC,cAAczV,cAAc,kBAAmB,CAC/ElM,KAAKupI,kCAAmC,EACxC,IAAIiE,EAAUxtI,KAAKmD,QAAQgoI,mBACvB30C,EAAOzpC,EAAKprC,cAAczV,cAAc,YACxC+mC,EAAQujD,EAAKq8C,gBACbzF,EAAOn6F,EAAMF,QAAU,QAAU,WACjCq7F,EAAOn7F,EAAMF,QAAU,KAAO,MAC9B06F,EAAW,CAAE57G,MAAO7xB,KAAKmD,QAAQ0uB,MAAOM,UAAWi8G,EAAMj6G,IAAKn0B,KAAKmD,QAAQgxB,IAC3ElB,SAAUm6G,EAAM5+H,KAAMxO,KAAKmD,QAAQqL,KAAM0kB,UAAWs6G,EAAStzG,aAAcl6B,KAAKmD,QAAQ+2B,cAExFzhB,EAAQzY,KAAK0mC,OAAO,gBAAauM,EAAO,YAAYvoC,aAAa,QAErE,GADA1K,KAAK8yI,+BAA+BrF,EAAUh1H,GAC1CzY,KAAK2oI,oBAAsB3oI,KAAKmD,QAAQm2B,UAAYt5B,KAAKmD,QAAQ+rI,sBAC9DlvI,KAAKorI,8BAA8BzqI,OAAQ,CAC9C,IAAIwxB,EAAYnyB,KAAKgwI,sBAAsBnsI,EAAK7D,KAAKmD,QAAQ+nI,iBAAiBj8F,OAAOnsC,MAAMe,EAAI7D,KAAKwpI,mCAAmC,GACnIl6G,EAAQ,IAAI,OACZ6C,GACA7C,EAAM6D,MAAMhB,GAEhB,IAAInB,EAAS,IAAI,OAAYhxB,KAAK8oI,4BAA4Bj2G,aAAavD,GACvEtvB,KAAKmD,QAAQ+rI,uBAAyBl+G,EAAOrwB,SAC7CX,KAAKmD,QAAQ+rI,qBAAuBl+G,EAAOrwB,SAE1CX,KAAKmD,QAAQ+rI,sBAAwBlvI,KAAKorI,8BAA8BzqI,SACzEX,KAAKorI,8BAAgC,KAGzCprI,KAAKorI,8BAA8BzqI,QAAWX,KAAKmD,QAAQ+rI,uBAAyBlvI,KAAKopI,mBACrFppI,KAAKmD,QAAQ+rI,uBACjBlvI,KAAKorI,8BAAgC,IAIjDprI,KAAK+yI,0BACLhmF,EAAK7gD,cAAc,iBAAiB6T,QAExC/f,KAAKgzI,SAAS,gBAAajmF,EAAM,eAErCs7E,EAAmBnoI,UAAU4yI,+BAAiC,SAAUrF,EAAUh1H,GAC9E,IAAK,IAAIzX,EAAI,EAAGA,EAAIhB,KAAKwpI,iCAAiC7oI,OAAQK,IAAK,CACnE,IAAIiyI,EAAUjzI,KAAKwpI,iCAAiCxoI,GACpD,GAAIiyI,EAAQx6H,MAAQ,KAAOA,EAAQ,KAA4B,UAArBw6H,EAAQhgH,UAA6C,aAArBggH,EAAQhgH,UAA0B,CACxGjzB,KAAKwpI,iCAAiC98H,OAAO1L,EAAG,GAChD,QAGoB,OAAvBysI,EAASt7G,WAAwBnyB,KAAKspI,+BAAkCtpI,KAAKqpI,0BACnD,QAAvBoE,EAASt7G,WAAyBnyB,KAAKspI,gCAAiCtpI,KAAKqpI,0BACjFrpI,KAAKwpI,iCAAiCn9H,KAAK,eAAO,GAAI,CAAEoM,MAAOA,GAASg1H,IAC7C,OAAvBA,EAASt7G,UACTnyB,KAAKmD,QAAQ+rI,uBAGblvI,KAAKmD,QAAQ+rI,yBAQzB7G,EAAmBnoI,UAAUgzI,gBAAkB,SAAU/lI,EAAGgmI,GACxD,IAAIC,EAAuB,YAAVjmI,EAAE5M,IAAqB4yI,EAAkBnvI,QAAQ4J,SAASyT,eAAiB,EACtF8xH,EAAkBnvI,QAAQ4J,SAASyT,eAAiB,EACtD25D,EAAcm4D,GAAoBC,EAAYD,EAAkBxyI,QAAUwyI,EAAkBxyI,QAEhG,GAAIq6E,EAAa,CACbA,EAAYj7D,QACZ,IAAIzf,EAAS06E,EAAY91E,UAAUmB,SAAS,gBAAkB,gBAAa20E,EAAa,YAAcA,EACtGh7E,KAAKgzI,SAAS1yI,KAGtB+nI,EAAmBnoI,UAAU8d,aAAe,SAAU7Q,GAIlD,IAHe,QAAVA,EAAE5M,KAAiB4M,EAAEy9H,UAAuB,QAAVz9H,EAAE5M,MAA6B,YAAV4M,EAAE5M,KAA+B,cAAV4M,EAAE5M,OAAyB4M,EAAE8nH,SAC5Gj1H,KAAKgzI,SAAS,gBAAa7lI,EAAE7M,OAAQ,cAE1B,YAAV6M,EAAE5M,KAA+B,cAAV4M,EAAE5M,OAAyB4M,EAAE8nH,QAA8C,aAApCj1H,KAAK4uB,OAAOoF,eAAexlB,KAAqB,CAC/GrB,EAAE+F,iBACF,IAAIigI,EAAoBvzI,MAAMyzI,KAAKrzI,KAAK4pI,IAAIlnH,iBAAiB,mDAC7D1iB,KAAKkzI,gBAAgB/lI,EAAGgmI,KAGhC9K,EAAmBnoI,UAAU8yI,SAAW,SAAUjmF,GAC9C,IAAIumF,EAAWtzI,KAAK4pI,IAAI19H,cAAc,eAClConI,GACAA,EAASpuI,UAAUC,OAAO,cAE1B4nD,GAAQA,IAASumF,GACjBvmF,EAAK7nD,UAAU4G,IAAI,eAG3Bu8H,EAAmBnoI,UAAU0yI,gBAAkB,SAAU7/F,GACjD/yC,KAAK2oI,oBACL3oI,KAAKspI,+BAAgC,EACrCtpI,KAAKqpI,uBAAyBt2F,EAC9B/yC,KAAKorI,8BAAgC,GACrCprI,KAAKwpI,iCAAmC,IAM5C,IAJA,IAAI+J,EAASvzI,KAAK2oI,kBACd3oI,KAAKmpI,mBAAmBtiI,KAAI,SAAUghE,GAClC,OAAOA,EAAI37D,cAAc,eACxB,GAAGwB,MAAMpK,KAAKtD,KAAK2rI,KAAKjpH,iBAAiB,iCACzC7U,EAAK,EAAG2lI,EAAWD,EAAQ1lI,EAAK2lI,EAAS7yI,OAAQkN,IAAM,CAC5D,IAAI89H,EAAO6H,EAAS3lI,GACpB,gBAAqB89H,EAAM54F,GAC3B,gBAAW44F,EAAKkH,gBAAiB9/F,KAGzCs1F,EAAmBnoI,UAAUksI,WAAa,WAClCpsI,KAAK4uB,OAAOxrB,QAAQ8B,UAAUmB,SAAS,cACvCrG,KAAK+pI,UAAU3mI,QAAQ8I,cAAc,kBAAkBhH,UAAUC,OAAO,iBACnEnF,KAAKmD,QAAQopI,oBACdvsI,KAAK+pI,UAAU3mI,QAAQ8I,cAAc,UAAU6T,UAI3DsoH,EAAmBnoI,UAAUuzI,eAAiB,SAAUh7H,EAAOs6B,EAASlnB,GACpE,IAAIkhC,EAAOha,EAAU/yC,KAAKypI,SAAS/hH,WAAU,GACzC1nB,KAAK0pI,UAAUhiH,WAAU,GAC7B,gBAAWqlC,EAAK7gD,cAAc,SAAU6mC,GACxC,IAAIe,EAAQiZ,EAAK7gD,cAAc,YAC3BwnI,EAAY,eAAgB,GAAI7nH,EAAM,CAAE0D,OAAQvvB,KAAKmD,QAAQosB,OAAQX,OAAQ5uB,KAAK4uB,SAClF6Z,EAAYzoC,KAAKmD,QAAQoyC,kBAAoB,cAAgB,YACjEzB,EAAM,GAAKrL,IAAc,eAAkBhwB,IAAUA,EAAM7G,WAAWjR,OAClEX,KAAK4uB,OAAO5jB,oBAAsB,OAAmBE,SAASuN,GAASA,EAAQzY,KAAK8qI,kBAAkB,UAC1G,IAAI6I,EAAc,eAAO,QAUzB,GATA7/F,EAAMnpC,aAAa,KAAMgpI,EAAc,aACvC5mF,EAAK7gD,cAAc,SAASvB,aAAa,kBAAmBmpC,EAAMxoC,IAC9DwoC,EAAMhpC,YAAc9K,KAAK8qI,kBAAkB,YAC3C9qI,KAAK6sI,UAAW,GAEC,mBAAVp0H,IACPq7B,EAAMhpC,WAAsB,IAAV2N,EAAiBzY,KAAK8qI,kBAAkB,cAAgB9qI,KAAK8qI,kBAAkB,gBAErG,eAAS,CAACh3F,GAAQ,CAAC,yBACf9zC,KAAKmD,QAAQyzC,UAAY/qB,EAAK7rB,KAAKmD,QAAQosB,OAAOsC,SAAW7xB,KAAK8qI,kBAAkB,cACjFj/G,EAAK7rB,KAAKmD,QAAQosB,OAAOsC,SAAW7xB,KAAK8qI,kBAAkB,uBAAwB,CACtFh3F,EAAMhpC,UAAY,GAClB,IAAImlF,EAAkBjwF,KAAK4uB,OAAOzmB,SAAWnI,KAAKmD,QAAQosB,OAAO0E,QACL,kBAA7Cj0B,KAAKmD,QAAQosB,OAAO0E,OAAmB,aAElD6sD,EAAe9gF,KAAK4uB,OAAOmyD,eAAiB/gF,KAAK4uB,OAAOmyD,cAAcC,eAEtEhhF,KAAK4uB,OAAOmyD,cAAcC,cAAc74E,QACxC8nF,GAAmBnP,GACnB9gF,KAAKmD,QAAQyzC,SAAS88F,EAAW1zI,KAAK4uB,OAAQ,qBAAsB,KAAM,KAAM,KAAMklB,GACtF9zC,KAAK4uB,OAAOwyD,mBAGZ,eAAettC,EAAO9zC,KAAKmD,QAAQyzC,SAAS88F,EAAW1zI,KAAK4uB,OAAQ,uBAG5E,OAAOm+B,GAEXs7E,EAAmBnoI,UAAU6yI,wBAA0B,WACnD,IASIp9E,EATAmgC,EAAM91F,KAAK2oI,kBAAoB3oI,KAAKmpI,mBAAmBxoI,OAASX,KAAK2rI,KAAK/qH,SAASjgB,OAAS,EAC5F6D,EAAY,GACZ4T,GAAW,EACX20C,EAAO/sD,KAAK2oI,kBAAoB3oI,KAAKsrI,KAAKp/H,cAAc,gBAAkBlM,KAAK2rI,KAAKz/H,cAAc,gBAClGk5C,EAAWplD,KAAK2oI,kBAAoB3oI,KAAKmpI,mBAAmBl1G,QAAO,SAAU4zC,GAAO,OAAOA,EAAI37D,cAAc,eAAgBvL,OAC7HX,KAAK2rI,KAAKjpH,iBAAiB,kDAAkD/hB,OAC7EX,KAAK2rI,KAAKz/H,cAAc,oBACxB4pF,GAAO,GAGN91F,KAAKmD,QAAQopI,qBACd52E,EAAM31D,KAAK+pI,UAAU/wE,OAAO,GAC5BrD,EAAIv9C,UAAW,GAEnB,IAAI66B,EAAQ8Z,EAAK8lF,gBACjB,gBAAW5/F,GAAO,GAClBA,EAAMorF,eAAgB,GAClBr+H,KAAK2oI,mBAA2C,KAAtB3oI,KAAKyqI,OAAOhyH,OAAiBzY,KAAKmD,QAAQmrI,4BAA+BtuI,KAAKupI,kCACnGvpI,KAAKspI,gCAAmCtpI,KAAKqpI,wBAA2BjkF,IAAe0wC,IAAQ1wC,GAAY0wC,IAAQ1wC,EAGnHplD,KAAK2oI,mBAAqB3oI,KAAKmpI,mBAAmBxoI,OAASX,KAAKopI,mBAClEppI,KAAKorI,8BAA8BzqI,UAAYykD,GAAY0wC,IAAQ1wC,IAAaplD,KAAKqpI,yBACnFjkF,EAID0wC,GAAO91F,KAAKorI,8BAA8BzqI,OAH1CykD,GAAYplD,KAAKorI,8BAA8BzqI,QALnDykD,EAAW,EAWX0wC,IAAQ1wC,GACJplD,KAAK2oI,oBACL3oI,KAAKqpI,wBAAyB,EAC9BrpI,KAAKspI,+BAAgC,EACrCtpI,KAAKwpI,iCAAmC,IAE5ChlI,EAAY,CAAC,WACb,gBAAWyuC,GAAO,IAEbmS,GACL5gD,EAAY,CAAC,UACbyuC,EAAMorF,eAAgB,IAGlBr+H,KAAK2oI,oBACL3oI,KAAKqpI,wBAAyB,EAC9BrpI,KAAKspI,+BAAgC,EACrCtpI,KAAKwpI,iCAAmC,IAE5ChlI,EAAY,CAAC,aACb4T,GAAW,EACPu9C,IACAA,EAAIv9C,UAAW,IAGnBu9C,IACA31D,KAAKyoI,aAAe9yE,EAAIv9C,SACxBu9C,EAAI5tD,YAER,gBAAY,CAACglD,GAAO,CAAC,UAAW,SAAU,cAC1C,eAAS,CAACA,GAAOvoD,GACjBxE,KAAK4uB,OAAOhV,OAAO,QAAiC,CAAExB,SAAUA,KAEpEiwH,EAAmBnoI,UAAUsyI,kBAAoB,SAAU3mH,EAAMkjF,EAAWmjC,GACxE,IAAIruI,EAAIC,EAAIo3B,EAERy6B,EADA49E,EAASvzI,KAAK4uB,OAAOrqB,cAAc,OAEnC6T,GAAW,EACVpY,KAAKmD,QAAQopI,qBACd52E,EAAM31D,KAAK+pI,UAAU/wE,OAAO,IAEhC,IAAI46E,GAAe,EACfrzI,EAAM,UACL2xI,EAAM9gH,eACP7wB,EAAM2xI,EAAMrgH,OAEhB,IAAK,IAAI7wB,EAAI,EAAGA,EAAI6qB,EAAKlrB,OAAQK,IAAK,CAClC,IAAI6b,EAAM,eAAStc,EAAKsrB,EAAKla,SAAS3Q,EAAE4Q,WAAY,OACxC,KAARiL,GAAc,eAAkBA,MAChC+2H,GAA4B,GASpC,GANK5zI,KAAK2oI,oBACN3oI,KAAK2tI,UAA4B,IAAjBiG,EAAqB/nH,EAAKlrB,OAASizI,EAAc/nH,EAAKlrB,QAEtEX,KAAK2oI,mBAAqB3oI,KAAK4uB,OAAOoF,gBAAkE,YAAhDh0B,KAAK4uB,OAAOoF,eAAeymB,kBACnFz6C,KAAKkxI,aAELrlH,EAAKlrB,SAAWX,KAAK++F,YAAa,CAClC,IAAI80C,EAAiB7zI,KAAK8qI,kBAAkB,aACxC95C,EAAWhxF,KAAK2rI,KAAKz/H,cAAc,qBACnC8kF,GACAA,EAAS9rF,UAAUC,OAAO,oBAE9B,IAAI2uI,EAAW9zI,KAAKyzI,eAAeI,GAAgB,GAAQhwI,EAAK,GAAIA,EAAG7D,KAAKmD,QAAQ0uB,OAASgiH,EAAgBhwI,IAS7G,GARI7D,KAAK4uB,OAAOnkB,YAC+B,IAAvCzK,KAAK4uB,OAAOnkB,SAASzG,QAAQ,KAC7B,eAAS,CAAC8vI,GAAW9zI,KAAK4uB,OAAOnkB,SAASxG,MAAM,MAGhD,eAAS,CAAC6vI,GAAW,CAAC9zI,KAAK4uB,OAAOnkB,YAGtCzK,KAAK4oI,sBAAwB5oI,KAAK2oI,kBAAmB,CACrD,IAAIgK,EAAY,eAAmB,eAAO,QAASmB,EAAU,YAC7DnB,EAAUzmI,cAAc,YAAYhH,UAAU4G,IAAI,eAC9C9L,KAAK2oI,kBACL3oI,KAAKsrI,KAAK9lH,aAAamtH,EAAW3yI,KAAK0rI,SAGvC6H,EAAO7uI,YAAYiuI,QAGlB3yI,KAAKsrI,KAAKp/H,cAAc,4BAC7BlM,KAAKsrI,KAAKp/H,cAAc,0BAA0B2mI,gBAAgBz6H,UAAW,EAC7EpY,KAAKsrI,KAAKp/H,cAAc,0BAA0ByV,cAAczc,UAAUC,OAAO,wBAErF,IAAIgtB,EAAY,IAAI,OAAU,QAAS,QAASnyB,KAAKmD,QAAQ0uB,OACzD7xB,KAAKmD,QAAQ4uB,kBACbI,EAAYA,EAAUiB,GAAG,QAAS,QAASpzB,KAAKmD,QAAQ4uB,kBAE5D,IAAIgiH,EAAgB,IAAI,OAAY/zI,KAAKmD,QAAQ+nI,iBAAiBr4G,cAAa,IAAI,QAAQM,MAAMhB,IAAYxxB,OAC7G,GAAIX,KAAKyqI,OAAOhyH,MAAO,CACnB,IAAIu7H,EAAoBh0I,KAAKyzI,eAAezzI,KAAK8qI,kBAAkB,wBAAwB,GAAQhnI,EAAK,GACpGA,EAAG9D,KAAKmD,QAAQ0uB,OAAS7xB,KAAK8qI,kBAAkB,uBAChDhnI,IASJ,GARI9D,KAAK4uB,OAAOnkB,YAC+B,IAAvCzK,KAAK4uB,OAAOnkB,SAASzG,QAAQ,KAC7B,eAAS,CAACgwI,GAAoBh0I,KAAK4uB,OAAOnkB,SAASxG,MAAM,MAGzD,eAAS,CAAC+vI,GAAoB,CAACh0I,KAAK4uB,OAAOnkB,YAG9CzK,KAAK2oI,oBAAuB,eAAkB3oI,KAAKsrI,KAAK1qH,SAAS,KAC3B,oCAApC5gB,KAAKsrI,KAAK1qH,SAAS,GAAG6nB,YAAsDzoC,KAAK2oI,kBAAmB,CACvG,IAAIsL,EAAmB,eAAmB,eAAO,QAASD,EAAmB,YAE7E,GADAC,EAAiB/nI,cAAc,YAAYhH,UAAU4G,IAAI,iBACrD9L,KAAK2oI,kBAAmB,CACxB3oI,KAAKsrI,KAAK9lH,aAAayuH,EAAkBj0I,KAAK0rI,SAC9C,IAAIwI,EAAmBl0I,KAAK0rI,QAAQx/H,cAAc,mBAC9CioI,EAAehrI,KAAK2kC,KAAKmmG,EAAiB7sI,wBAAwB/B,QACtE6uI,EAAiBntI,MAAM1B,OAAUsM,SAASnL,iBAAiB0tI,GAAkB7uI,OAAOpB,MAAM,MAAM,IAAMkwI,EAChG,KACND,EAAiBntI,MAAM2mD,UAAYwmF,EAAiBntI,MAAM1B,YAG1DkuI,EAAO7uI,YAAYuvI,QAGlBj0I,KAAKsrI,KAAKp/H,cAAc,8BAC7BlM,KAAKsrI,KAAKp/H,cAAc,4BAA4B2mI,gBAAgBz6H,UAAW,EAC/EpY,KAAKsrI,KAAKp/H,cAAc,4BAA4ByV,cAAczc,UAAUC,OAAO,6BAGtF,GAAInF,KAAK2oI,oBAAsB,eAAkB3oI,KAAKsrI,KAAK1qH,SAAS,KAC9B,oCAApC5gB,KAAKsrI,KAAK1qH,SAAS,GAAG6nB,UAAiD,CACtEyrG,EAAmBl0I,KAAK0rI,QAAQx/H,cAAc,mBAAlD,IACIkoI,EAAiBjrI,KAAK2kC,KAAK9tC,KAAKsrI,KAAK1qH,SAAS,GAAGxZ,wBAAwB/B,QAC7E6uI,EAAiBntI,MAAM1B,OAAUsM,SAASnL,iBAAiB0tI,GAAkB7uI,OAAOpB,MAAM,MAAM,IAAMmwI,EAChG,KACNF,EAAiBntI,MAAM2mD,UAAYwmF,EAAiBntI,MAAM1B,OAC1D,gBAAOrF,KAAKsrI,KAAK1qH,SAAS,IAE9B,IAAIyzH,OAAW,EACf,IAASrzI,EAAI,EAAGA,EAAI6qB,EAAKlrB,OAAQK,IAAK,CAClC,IAAImzB,EAAM,eAAO,QACjBn0B,KAAK0mC,OAAO,GAAKvS,GAAO,eAAS5zB,EAAKsrB,EAAKla,SAAS3Q,EAAE4Q,WAAY,MAClE,IAAI6G,EAAQ,eAASzY,KAAKmD,QAAQ0uB,MAAOhG,EAAKla,SAAS3Q,EAAE4Q,WAAY,MACjE5R,KAAKmD,QAAQ60C,WACbv/B,EAAQzY,KAAKm2C,eAAetZ,OAAOpkB,EAAOzY,KAAKmD,QAAQ60C,WAE3D,IAAIs8F,EAAS,CAAE77H,MAAOA,EAAO8W,OAAQvvB,KAAKmD,QAAQosB,OAAQ1D,KAAMA,EAAKla,SAAS3Q,EAAE4Q,WAAY,MAG5F,GAFA5R,KAAK4uB,OAAOhV,OAAO,QAAwB06H,GAC3C77H,EAAQ67H,EAAO77H,MACA,KAAVA,GAAgB,eAAkBA,GAAS,CAC5C,GAAI47H,EACA,SAEJA,GAAW,EAEXr0I,KAAK2oI,mBACL3oI,KAAKu0I,wCAAwC97H,EAAOzY,KAAKorI,+BAE7D,IAAIoJ,EAAWx0I,KAAKspI,8BAChBtpI,KAAKyzI,eAAeh7H,EAAOzY,KAAKqpI,uBAAwB,eAAS,UAAWx9G,EAAK7qB,KACjFhB,KAAKyzI,eAAeh7H,EAAOzY,KAAKy0I,gBAAgBV,EAAe/zI,KAAK0mC,OAAO,GAAKvS,IAAO,eAAS,UAAWtI,EAAK7qB,KACpHuyI,EAAO7uI,YAAY,eAAmByvB,EAAKqgH,EAAU,aACjDx0I,KAAK2oI,oBACL4K,EAAOmB,UAAU3tI,MAAM1B,OAASrF,KAAK0sI,cAAc1sI,KAAK2rI,MAAQ,MAGxE,IAAI16H,EAAYjR,KAAK2rI,KAAK16H,WACrBjR,KAAK2oI,mBAAqB3oI,KAAK6oI,wBAChC7oI,KAAK2rI,KAAK7gI,UAAY,GAEjB9K,KAAK2oI,mBAAqB3oI,KAAK2rI,KAAK/qH,SAASjgB,QAClDX,KAAK0xI,uBAAwB,GAAGhkI,MAAMpK,KAAKtD,KAAK2rI,KAAK/qH,UAAWlU,OAAO,EAAG1M,KAAK4uB,OAAOoF,eAAeq7G,aAErGrvI,KAAK2oI,qBACJztG,EAAKl7B,KAAKmpI,oBAAoB98H,KAAKvJ,MAAMo4B,EAAI,GAAGxtB,MAAMpK,KAAKiwI,EAAO3yH,WACnE5gB,KAAK2tI,UAA4B,IAAjBiG,EAAqB5zI,KAAKmpI,mBAAmBxoI,OAASizI,EAAc5zI,KAAKmpI,mBAAmBxoI,QAE5GX,KAAKorI,8BAA8BzqI,SAAWX,KAAKmpI,mBAAmBxoI,QAAUX,KAAKopI,oBACjFppI,KAAKmD,QAAQmrI,4BAA+BtuI,KAAKmD,QAAQ+rI,uBAAyBlvI,KAAKopI,mBACxFppI,KAAKmD,QAAQmrI,8BAChBtuI,KAAKorI,8BAAgC,IAEzC,eAAeprI,KAAK2rI,KAAM,GAAGj+H,MAAMpK,KAAKiwI,EAAO3yH,WAC3C5gB,KAAK2oI,oBAAsB3oI,KAAKipI,2BAChCjpI,KAAKipI,yBAA2B9/H,KAAKC,MAAM6H,EAAYjR,KAAK2rI,KAAK16H,YAErEjR,KAAK+yI,0BACA/yI,KAAK2oI,kBAQFvwH,IADAu9C,EAAIv9C,UANJu9C,IACAA,EAAIv9C,UAAW,GAEnBA,GAAW,OAWd,CAGD,GAFAm7H,EAAO7uI,YAAY1E,KAAK4uB,OAAOrqB,cAAc,OAAQ,CAAEuG,UAAW9K,KAAK8qI,kBAAkB,eACzF9qI,KAAK2rI,KAAK7gI,UAAY,GAClB9K,KAAK2oI,kBAAmB,CACpBgK,EAAY3yI,KAAKsrI,KAAKp/H,cAAc,0BACxC,GAAIymI,EAAW,CACX,IAAIgC,EAAkBhC,EAAUhxH,cAAcA,cAC1CgxH,EAAUztI,UAAUmB,SAAS,WAC7B,gBAAesuI,GAEVhC,EAAUztI,UAAUmB,SAAS,YAClC,gBAAesuI,GACfhC,EAAUztI,UAAUC,OAAO,UAC3B,gBAAewvI,IAEnBhC,EAAUE,gBAAgBz6H,UAAW,EACrCu6H,EAAUhxH,cAAczc,UAAU4G,IAAI,uBAE1C,IAAIkiI,EAAmBhuI,KAAKsrI,KAAKp/H,cAAc,4BAC/C,GAAI8hI,EAAkB,CAClB,IAAI4G,EAAyB5G,EAAiBrsH,cAAcA,cACxDqsH,EAAiB9oI,UAAUmB,SAAS,YACpC,gBAAeuuI,GAEnB5G,EAAiB6E,gBAAgBz6H,UAAW,EAC5C41H,EAAiBrsH,cAAczc,UAAU4G,IAAI,wBAGrD9L,KAAK2rI,KAAKjnI,YAAY1E,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,sBACpE,eAAexE,KAAK2rI,KAAK/qH,SAAS,GAAI,GAAGlT,MAAMpK,KAAKiwI,EAAO3yH,WACvD+0C,IACAA,EAAIv9C,UAAW,GAEnBA,GAAW,EACXpY,KAAKyoI,aAAerwH,EAEpBu9C,GAAO9pC,EAAKlrB,SACZX,KAAKyoI,aAAe9yE,EAAIv9C,SACxBu9C,EAAI5tD,YAER,IAAIge,EAAO,CAAEgI,YAAa,QAA4BqB,WAAYpvB,KAAK++F,YAAc,GAAKlzE,GACtFigH,EAAc,cAClB/lH,EAAK,GAAK+lH,GAAe9rI,KACzBA,KAAK4uB,OAAOhV,OAAO,OAAyBmM,GAC5C/lB,KAAK4uB,OAAOhV,OAAO,QAAiC,CAAExB,SAAUA,IAC5DpY,KAAK2oI,mBAAqB3oI,KAAK4oI,sBAC/B5oI,KAAK2rI,KAAK5kI,MAAMqoD,UAAY,OAEhC,eAAYpvD,KAAK0rI,UAErBrD,EAAmBnoI,UAAUq0I,wCAA0C,SAAU97H,EAAOo8H,GACpF,IAAK,IAAIv9G,EAAI,EAAGA,EAAIu9G,EAAcl0I,OAAQ22B,IAAK,CAC3C,IAAI82G,EAAOyG,EAAcv9G,GACrB7e,IAAU21H,EAAK31H,OAA4B,UAAlB21H,EAAKn7G,UAA0C,aAAlBm7G,EAAKn7G,WAC3DjzB,KAAKwpI,iCAAiCn9H,KAAKwoI,EAAcv9G,IACzDu9G,EAAcnoI,OAAO4qB,EAAG,GACxBA,OAIZ+wG,EAAmBnoI,UAAUu0I,gBAAkB,SAAUV,EAAet7H,GACpE,GAAKzY,KAAKszB,YAAeygH,EAGpB,CACD,IAAIe,IAAa90I,KAAKyqI,OAAOhyH,OAAezY,KAAKgxB,OAAO,GAAKvY,GAC7D,OAAIzY,KAAK2oI,kBACEmM,EAG0B,aAA1B90I,KAAKmD,QAAQ8vB,UAA2B6hH,EAAaA,EARhE,OAAO,GAYfzM,EAAmB+J,YAAc,SAAUr8G,EAAMlE,EAAOtC,EAAQsM,EAAgBk5G,GAC5E,IAEIt8H,EAFAwK,EAAM8S,EAAKp1B,OACXqwB,EAAS,GAETgkH,EAAU,UACVC,EAAS,GACTr7G,KAAerK,IAAUA,EAAOgK,kBAAkBhK,EAAOgK,kBAC7D,MAAOtW,IAAO,CAEV,GADAxK,EAAQsd,EAAKpkB,SAASsR,EAAIrR,WAAY,KAClC2d,GAA0B,aAAhBA,EAAO/gB,MAAoD,kBAAtBiK,EAAM,GAAKoZ,IAAuBpZ,EAAM,GAAKoZ,GAAQ,CACpG,IAAIg2C,EAAMpvD,EAAM,GAAKoZ,GAAO5tB,MAAM,WAClCwU,EAAM,GAAKoZ,GAAS,IAAIlZ,KAAKhH,SAASk2D,EAAI,GAAI,IAAKl2D,SAASk2D,EAAI,GAAI,IAAM,EAAGl2D,SAASk2D,EAAI,GAAI,KAElGpvD,EAAQ,eAAUoZ,EAAOpZ,GACzB,IAAIy8H,EAAuC,kBAAVz8H,GAAyB,cAAD,CAAmBs8H,IAEtE,cAAD,CAAmBA,EAAenmH,SAAc,cAAD,CAAmBmmH,EAAenmH,OAAOoF,iBAEvF,cAAD,CAAmB+gH,EAAenmH,OAAOoF,eAAemhH,uBAAgD18H,EAAtBA,EAAMoJ,cAC7F,KAAMqzH,KAAsBD,GAAS,CACjC,IAAIlyG,EAAM,GAGV,GAFAA,EAAI,GAAKiyG,GAAWv8H,EACpBw8H,EAAO,GAAKC,IAAsB,EAC9Bt7G,EAAc,CACd,IAAIw7G,EAAiB,eAAe7lH,EAAQ,GAAI9W,EAAOojB,GAAgB,GACvE,gBAAS,QAAuBu5G,EAAgBr/G,EAAKpkB,SAASsR,EAAIrR,WAAY,MAC9E6G,EAAQ,eAAS8W,EAAOwC,gBAAiBqjH,GAE7C,gBAASvjH,EAAO,eAAkBpZ,GAAS,KAAOA,EAAOsqB,GACzD,gBAAS,UAAWhN,EAAKpkB,SAASsR,EAAIrR,WAAY,KAAMmxB,GACxD/R,EAAO3kB,KAAK02B,IAGpB,OAAO,OAASzN,MAAM,OAASmvB,KAAKzzB,EAAQa,EAAO,OAAS8lB,aAAc,YAE9E0wF,EAAmBptG,aAAe,SAAU9L,EAASm5G,GAIjD,IAHA,IAAI/wG,EAAO,OAASxE,SAAS5D,EAAS,SAAS,IAAS,GACpDsb,EAAa,GACb2jG,EAAO,GACFptI,EAAI,EAAGA,EAAIu2B,EAAK52B,OAAQK,IAC7BypC,EAAa,IAAI,OAAYtb,GAAS0D,cAAa,IAAI,QAAQM,MAAM,QAAS,QAASoE,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKigB,QAC9F,IAAtB4Y,EAAW9pC,SACXytI,EAAK72G,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKigB,OAASw2G,EAAmBoH,kBAAkBhlG,EAAY69F,IAGxG,OAAO8F,GAEX/F,EAAmBoH,kBAAoB,SAAUl4G,EAAM+wG,GACnD,IACIn2G,EADAlP,EAAMsU,EAAOA,EAAK52B,OAAS,EAE3B00I,EAAU,KACVC,EAAQjN,EAAmBkN,iBAAiBh+G,EAAK,IACrD+9G,EAAMp7G,cAAgB,eAAkBo7G,EAAMp7G,eAAgBo7G,EAAMp7G,aAEhE/H,EADe,SAAfmjH,EAAM9mI,MAAkC,aAAf8mI,EAAM9mI,MAAsC,aAAf8mI,EAAM9mI,KAChD,eAAiB8mI,EAAOA,EAAM9mI,KAAM85H,GAGpCgN,EAAMlL,YAAckL,EAAMlL,YAClC,IAAI,OAAUkL,EAAMzjH,MAAOyjH,EAAMriH,SAAUqiH,EAAM78H,OAAQ4vH,EAAmBmN,aAAaF,GAAQA,EAAMp7G,cAE/G,IAAK,IAAIr6B,EAAI,EAAGA,EAAIojB,EAAKpjB,IACrB03B,EAAK5lB,SAAS9R,EAAE+R,WAAY,KAAOy2H,EAAmBkN,iBAAiBh+G,EAAK5lB,SAAS9R,EAAE+R,WAAY,MAC/FqR,EAAM,GAAKpjB,EAAI,IAA6B,OAAtB03B,EAAK13B,GAAGsyB,WAAgD,OAA1BoF,EAAK13B,EAAI,GAAGsyB,WACtC,QAAtBoF,EAAK13B,GAAGsyB,WAAiD,QAA1BoF,EAAK13B,EAAI,GAAGsyB,WAC1B,SAAjBoF,EAAK13B,GAAG2O,MAAoC,aAAjB+oB,EAAK13B,GAAG2O,MAAwC,aAAjB+oB,EAAK13B,GAAG2O,KAClE2jB,EAAUI,WAAWlmB,KAAK,eAAiBkrB,EAAK5lB,SAAS9R,EAAE+R,WAAY,KAAM2lB,EAAK13B,GAAG2O,KAAM85H,IAG3Fn2G,EAAUI,WAAWlmB,KAAK,IAAI,OAAUkrB,EAAK13B,GAAGgyB,MAAO0F,EAAK5lB,SAAS9R,EAAE+R,WAAY,KAAKqhB,SAAUsE,EAAK5lB,SAAS9R,EAAE+R,WAAY,KAAK6G,OAAQ4vH,EAAmBmN,aAAaj+G,EAAK5lB,SAAS9R,EAAE+R,WAAY,MAAO2lB,EAAK5lB,SAAS9R,EAAE+R,WAAY,KAAKsoB,eAM3O/H,EAFa,SAAjBoF,EAAK13B,GAAG2O,MAAoC,aAAjB+oB,EAAK13B,GAAG2O,MAAwC,aAAjB+oB,EAAK13B,GAAG2O,KACf,QAA/C+oB,EAAK5lB,SAAS9R,EAAE+R,WAAY,KAAKugB,WAAqE,UAA9CoF,EAAK5lB,SAAS9R,EAAE+R,WAAY,KAAKqhB,SAC7Ed,EAAU,GAAKkjH,GAAS,eAAiB99G,EAAK5lB,SAAS9R,EAAE+R,WAAY,KAAM2lB,EAAK5lB,SAAS9R,EAAE+R,WAAY,KAAKpD,KAAM85H,GAAiB/wG,EAAK5lB,SAAS9R,EAAE+R,WAAY,KAAKpD,KAAM+oB,EAAK5lB,SAAS9R,EAAE+R,WAAY,KAAKsoB,cAG3M/H,EAAWoF,EAAK5lB,SAAS9R,EAAE+R,WAAY,KAAc,WAAG,eAAiB2lB,EAAK5lB,SAAS9R,EAAE+R,WAAY,KAAM2lB,EAAK5lB,SAAS9R,EAAE+R,WAAY,KAAKpD,KAAM85H,GAAiB/wG,EAAK5lB,SAAS9R,EAAE+R,WAAY,KAAKpD,KAAM+oB,EAAK5lB,SAAS9R,EAAE+R,WAAY,KAAKsoB,cAI/O3C,EAAK5lB,SAAS9R,EAAE+R,WAAY,KAAKw4H,YACzCj4G,EAAUoF,EAAK5lB,SAAS9R,EAAE+R,WAAY,KACjCugB,WAAWoF,EAAK5lB,SAAS9R,EAAE+R,WAAY,KAAKw4H,aACjDj4G,EAAWoF,EAAK5lB,SAAS9R,EAAE+R,WAAY,KAAc,WAAG2lB,EAAK5lB,SAAS9R,EAAE+R,WAAY,KAAKigB,MAAO0F,EAAK5lB,SAAS9R,EAAE+R,WAAY,KAAKqhB,SAAUsE,EAAK5lB,SAAS9R,EAAE+R,WAAY,KAAK6G,OAAQ4vH,EAAmBmN,aAAaj+G,EAAK5lB,SAAS9R,EAAE+R,WAAY,MAAO2lB,EAAK5lB,SAAS9R,EAAE+R,WAAY,KAAKsoB,cAIxS,OAAO/H,GAAa,MAExBk2G,EAAmBmN,aAAe,SAAUvhH,GACxC,OAAI,eAAkBA,EAAOf,aACL,WAAhBe,EAAOzlB,MAAqB,eAAkBylB,EAAOzlB,OAAmC,kBAAlBylB,EAAY,OAQ/EA,EAAOf,WAGtBm1G,EAAmBkN,iBAAmB,SAAUthH,GAI5C,OAHqB,SAAhBA,EAAOzlB,MAAmC,aAAhBylB,EAAOzlB,MAAuC,aAAhBylB,EAAOzlB,MAAuBylB,EAAOxb,iBAAiBE,QAC/Gsb,EAAOzlB,KAAOylB,EAAOzlB,MAAQ,QAE1BylB,GAEJo0G,EA3wD4B,I,kCCjBvC,8GAYIoN,EAA8B,WAC9B,SAASA,EAAa7mH,EAAQ8rE,GAC1B16F,KAAKk3F,UAAYwD,EAAQta,WAAW,gBACpCpgF,KAAK01I,UAAYh7C,EAAQta,WAAW,kBACpCpgF,KAAK4uB,OAASA,EACd5uB,KAAKoD,QAAUpD,KAAK4uB,OAAOrqB,cAAc,KAAM,CAAEC,UAAW,OAAkBwK,MAAO,CAAEC,KAAM,WAAYqzE,SAAU,QACnHtiF,KAAK21I,UAAY31I,KAAK4uB,OAAOrqB,cAAc,QAAS,CAAEC,UAAW,gBAAiBwK,MAAO,CAAE,KAAQ,WAAY,aAAchP,KAAKk3F,UAAUx8E,YAAY,gBA8S5J,OAvSA+6H,EAAav1I,UAAUi3F,OAAS,WAC5B,MAAO,IAWXs+C,EAAav1I,UAAUoc,OAAS,SAAUiT,EAAQ9W,EAAOoT,GACrD,IAAK,eAAkB0D,EAAOjT,QAAS,CAInC,GAHoB,WAAhBiT,EAAO/gB,MAAqBiN,MAAM9J,SAAS8G,EAAO,OAClDA,EAAQ,MAEQ,aAAhB8W,EAAO/gB,MAAwC,kBAAViK,GAAsBA,EAAO,CAClE,IAAIovD,EAAMpvD,EAAMxU,MAAM,WACtBwU,EAAQ,IAAIE,KAAKhH,SAASk2D,EAAI,GAAI,IAAKl2D,SAASk2D,EAAI,GAAI,IAAM,EAAGl2D,SAASk2D,EAAI,GAAI,KAEtFpvD,EAAQzY,KAAK01I,UAAU74G,OAAOpkB,EAAO8W,EAAOoN,gBAEhD,OAAO,eAAkBlkB,GAAS,GAAKA,EAAM7G,YAGjD6jI,EAAav1I,UAAU01I,SAAW,SAAUxnG,EAAMuT,EAAM91B,EAAMpE,EAAYouH,EAAO94F,GAC7E,IAAIl5C,EACAmtB,EACJ,GAAI2wB,EAAKpyB,OAAOqnB,SAAU,CACtB,IAAIq5C,EAAkBjwF,KAAK4uB,OAAOzmB,SAA6C,kBAA1Bw5C,EAAKpyB,OAAe,UAAkBoyB,EAAKpyB,OAAOqnB,SAAS12C,YAAeyhD,EAAKpyB,OAAOqnB,SAAkB,UAAEk/F,YAC3Jh1D,EAAe9gF,KAAK4uB,OAAOmyD,eAAiB/gF,KAAK4uB,OAAOmyD,cAAcC,eACtEhhF,KAAK4uB,OAAOmyD,cAAcC,cAAc74E,QACxC4tI,EAAa,CAAC,SACdrC,EAAY,eAAgB,GAAI7nH,GAAOhoB,EAAK,GAAIA,EAAG,SAAkBgyI,EAAOhyI,EAAG0rB,OAASoyB,EAAKpyB,OAAQ1rB,IACrGmyI,EAAah2I,KAAK4uB,OAAOxrB,QAAQkI,GAAKq2C,EAAKpyB,OAAO4E,IAClDgkE,EAAM,mBACV,GAAIlI,GAAmBnP,EAAc,CACjC,IAAIuX,EAAS,CAAE,MAAS5wE,EAAWsuH,EAAW,KAC9Cp0F,EAAKpyB,OAAO4oB,mBAAZwJ,CAAgC,eAAO02C,EAAQq7C,GAAY1zI,KAAK4uB,OAAQ,iBAAkBonH,EAAYh2I,KAAK4uB,OAAO,GAAKupE,GAAM,KAAM/pD,QAGnIpd,EAAS2wB,EAAKpyB,OAAO4oB,mBAAZwJ,CAAgC,eAAO,CAAE,MAASl6B,EAAWsuH,EAAW,KAAOrC,GAAY1zI,KAAK4uB,OAAQ,WAAYonH,EAAYh2I,KAAK4uB,OAAO,GAAKupE,QAAM5sF,OAAWA,EAAWvL,KAAK4uB,OAAO,SAStM,OAPKqhE,GAAoBnP,GACrB,eAAe1yC,EAAMpd,GAEzBhxB,KAAK4uB,OAAOhV,OAAO,kBAAmB,CAAEg9B,SAAU5lB,IAClDA,EAAS,KACTod,EAAKzjC,aAAa,aAAcyjC,EAAK3F,UAAYzoC,KAAKk3F,UAAUx8E,YAAY,gBACxE1a,KAAKk3F,UAAUx8E,YAAY,gBAAkBinC,EAAKpyB,OAAO2yB,aACtD,EAEX,OAAO,GAUXuzF,EAAav1I,UAAU+1I,gBAAkB,SAAU1mH,EAAQ9W,EAAOoT,GAC9D,IAAK,eAAkB0D,EAAOmmH,WAC1B,GAAI,eAAuBnmH,EAAOmmH,UAAW,YAAa,CACtD,IAAIA,EAAYnmH,EAAOmmH,UACvBj9H,GAAQ,IAAIi9H,GAAYtjE,SAAS7iD,EAAQ1D,QAGzCpT,EADiC,oBAArB8W,EAAOmmH,UACXnmH,EAAOmmH,UAAUnmH,EAAQ1D,GAGzB0D,EAAOmmH,UAAUtjE,SAAS7iD,EAAQ1D,GAGlD,OAAOpT,GAYXg9H,EAAav1I,UAAUyT,OAAS,SAAUguC,EAAM91B,EAAMpE,EAAYg5D,EAAU1jC,GACxE,OAAO/8C,KAAKk2I,YAAYv0F,EAAM91B,EAAMpE,EAAYs1B,IAWpD04F,EAAav1I,UAAUqnH,UAAY,SAAU5mC,EAAIh/B,EAAM91B,EAAMpE,GACzD,IAAIs1B,EAA2C,UAAlC/8C,KAAK4uB,OAAOi3C,aAAaihC,MAAoBnmB,EAAGz7E,UAAUmB,SAAS,qBAChF,GAAIrG,KAAK4uB,OAAOzmB,QAAS,CACrB,IAAI2/F,EAAYnnB,EAAGmnB,UACfquC,EAAYx1D,EAAGh/D,cACnB,gBAAOg/D,GACP,IAAIy1D,EAAQp2I,KAAKk2I,YAAYv0F,EAAM91B,EAAMpE,EAAYs1B,GACrD/8C,KAAKq2I,gBAAgBD,EAAOz1D,GACxBw1D,EAAU10F,MAAM9gD,SAAWmnG,EAAY,EACvCquC,EAAU3wH,aAAa4wH,EAAOD,EAAU10F,MAAM9vC,SAASm2F,EAAUl2F,WAAY,MAG7EukI,EAAUzxI,YAAY0xI,OAGzB,CACD,IAAIhoG,EAAOpuC,KAAKk2I,YAAYv0F,EAAM91B,EAAMpE,EAAYs1B,GACpD4jC,EAAG71E,UAAY,GACf,IAAIwrI,EAAgBloG,EAAK1jC,aAAa,cACtC4rI,GAAgB31D,EAAGh2E,aAAa,aAAc2rI,GAE9C,IADA,IAAIxrG,EAAW,GAAGp9B,MAAMpK,KAAK8qC,EAAK0G,YACzBjnC,EAAK,EAAGo9E,EAAangD,EAAUj9B,EAAKo9E,EAAWtqF,OAAQkN,IAAM,CAClE,IAAIk/C,EAAOk+B,EAAWp9E,GACtB8yE,EAAGj8E,YAAYqoD,MAK3B0oF,EAAav1I,UAAUm2I,gBAAkB,SAAU/1I,EAAQi2I,GAEvD,IAIIltH,EAJAra,EAAQunI,EAAO9uH,WAEfzmB,EAAIgO,EAAMrO,OAGd,MAAOK,IACHqoB,EAAOra,EAAM2C,SAAS3Q,EAAE4Q,WAAY,KACpCtR,EAAOqK,aAAa0e,EAAKrZ,KAAMqZ,EAAK5Q,QAG5Cg9H,EAAav1I,UAAUg2I,YAAc,SAAUv0F,EAAM91B,EAAMpE,EAAYs1B,GACnE,IAAIl5C,EAGAgyI,EAFAznG,EAAOpuC,KAAKoD,QAAQskB,YACpB6H,EAASoyB,EAAKpyB,OAEdoyB,EAAK/nB,eACLi8G,EAAQl0F,EAAK9lB,eAAe,KAAOh4B,EAAK,GAAIA,EAAG0rB,EAAOwC,iBAAmBxC,EAAOjT,OAAS,KAAO,GAAIzY,IAGxG,IAAI+0F,EAAY54F,KAAKm3F,SACjB1+E,EAAQkpC,EAAK/nB,aAAe55B,KAAKoyE,SAAS7iD,EAAOwC,gBAAiB8jH,EAAOtmH,GACzEvvB,KAAKoyE,SAAS7iD,EAAOsC,MAAOhG,EAAM0D,GAItC,GAHqB,SAAhBA,EAAO/gB,MAAmC,aAAhB+gB,EAAO/gB,MAAyB,eAAkBiK,KAC7EA,EAAQ,IAAIE,KAAKF,IAED,aAAhB8W,EAAO/gB,OAAwB,eAAkBiK,IAA2B,kBAAVA,EAAoB,CACtF,IAAIovD,EAAMpvD,EAAMxU,MAAM,WACtBwU,EAAQ,IAAIE,KAAKhH,SAASk2D,EAAI,GAAI,IAAKl2D,SAASk2D,EAAI,GAAI,IAAM,EAAGl2D,SAASk2D,EAAI,GAAI,KAItF,GAFApvD,EAAQzY,KAAKsc,OAAOiT,EAAQ9W,EAAOoT,GACnC+sE,EAAYngF,EAAM7G,WACE,YAAhB2d,EAAO/gB,OAAuB+gB,EAAOuuF,kBAAmB,CACxD,IAAI04B,EAAuB,SAAV/9H,GAA8B,UAAVA,EAAqB,KAAiB,SAAVA,EAAmB,OAAS,QAC7FmgF,EAAY49C,EAAYx2I,KAAKk3F,UAAUx8E,YAAY87H,GAAa59C,EAEpE,IAAI69C,EAAgBz2I,KAAKi2I,gBAAgB1mH,EAAQ9W,EAAOoT,GAExD,GADA+sE,EAAa,eAAkBrpE,EAAOmmH,WAAgF98C,EAAnE,eAAkB69C,GAAiB,GAAKA,EAAc7kI,WACrG5R,KAAK41I,SAASxnG,EAAMuT,EAAM91B,EAAMpE,EAAYouH,EAAO94F,IAA2B,aAAhBxtB,EAAO/gB,KACrExO,KAAK63F,WAAWzpD,EAAMpuC,KAAK4uB,OAAO1jB,SAAS0tF,GAAYrpE,EAAO+oB,aAAe/oB,EAAO+oB,eAAiB,kBAEpG,GAAoB,aAAhB/oB,EAAO/gB,KAAqB,CACjC4/B,EAAKlpC,UAAU4G,IAAI,QAEf2M,IADAzY,KAAK4uB,OAAOk0D,kBAAkBC,kBACZ,SAAVtqE,EAKZ,IAAIi+H,EAAY,eAAe12I,KAAK4uB,OAAOrqB,eAAe,EAAO,CAAEwuC,QAASt6B,EAAOq7B,MAAO,MACtF9zC,KAAK4uB,OAAOnkB,UACZ,eAAS,CAACisI,GAAY,CAAC12I,KAAK4uB,OAAOnkB,WAEvCzK,KAAK21I,UAAUrqI,GAAK,YAAcq2C,EAAKg1F,MACvCD,EAAUlxH,aAAaxlB,KAAK21I,UAAUjuH,YAAagvH,EAAUr6F,YAC7DjO,EAAK1pC,YAAYgyI,GAMrB,GAJiC,UAA7B12I,KAAK4uB,OAAOqxD,cAA4BjgF,KAAK4uB,OAAO6D,uBACpDkvB,EAAKo+B,YAAa,GAEtB//E,KAAK42I,cAAcxoG,EAAMuT,EAAMl6B,GACX,YAAhB8H,EAAO/gB,MAAsB+gB,EAAOuuF,kBAAmB,CACvD,IAAI/qE,EAAUt3B,MAAM9J,SAAS8G,EAAM7G,WAAY,KAAiB,SAAV6G,EAAmB9G,SAAS8G,EAAM7G,WAAY,IAAM,EACtG8kI,EAAY,eAAe12I,KAAK4uB,OAAOrqB,eAAe,EAAO,CAAEwuC,QAASA,EAASe,MAAO,MAC5F1F,EAAKtjC,UAAY,GACjBsjC,EAAKlpC,UAAU4G,IAAI,qBACnB4qI,EAAUxxI,UAAU4G,IAAI,uBACpB9L,KAAK4uB,OAAOnkB,UACZ,eAAS,CAACisI,GAAY,CAAC12I,KAAK4uB,OAAOnkB,WAEvC2jC,EAAK1pC,YAAYgyI,GAErB,GAAItoG,EAAKlpC,UAAUmB,SAAS,mBAAqBwlB,EAAKtrB,IAAK,CACvD,IAAI4zB,EAAMia,EAAK1jC,aAAa,gBAC5B6kB,EAASvvB,KAAK4uB,OAAOkM,eAAe3G,GACpCia,EAAKzjC,aAAa,aAAciuF,EAAY54F,KAAKk3F,UAAUx8E,YAAY,gBAAkBinC,EAAKpyB,OAAO2yB,YAKzG,OAHIliD,KAAK4uB,OAAOsrB,kBAAoBruB,GAASA,IAASA,EAAKtrB,MACvD,eAAwBP,KAAK4uB,OAAQW,EAAQ6e,GAE1CA,GAUXqnG,EAAav1I,UAAU23F,WAAa,SAAUzpD,EAAMwqD,EAAWr+B,GAG3D,YAFiB,IAAbA,IAAuBA,EAAW,aACtCnsB,EAAK,GAAKmsB,GAAYq+B,EACfxqD,GASXqnG,EAAav1I,UAAU02I,cAAgB,SAAUxoG,EAAMuT,EAAMl6B,GACzD,IAAI8H,EAASoyB,EAAKpyB,OAClBvvB,KAAK43F,uBAAuBxpD,EAAMuT,EAAsB,aAAhBpyB,EAAO/gB,MAC/C,gBAAsB4/B,EAAM3mB,GAC5B,gBAAsB2mB,EAAMuT,EAAKl6B,YAC7B8H,EAAOwoE,kBACP,gBAAsB3pD,EAAM7e,EAAOwoE,kBAEF,aAAjC/3F,KAAK4uB,OAAO00D,kBACZ,gBAAsBl1C,EAAM,CAAE,YAAa7e,EAAO2yB,aAElD3yB,EAAOonB,YACPvI,EAAKrnC,MAAM4vC,UAAYpnB,EAAOonB,WAEV,SAApBpnB,EAAOipE,WAAyBjpE,EAAOipE,UAAqC,SAAzBx4F,KAAK4uB,OAAO4pE,SAC/DpqD,EAAKlpC,UAAU4G,IAAI,cAEM,wBAApByjB,EAAOipE,WAAwCjpE,EAAOipE,UAAqC,wBAAzBx4F,KAAK4uB,OAAO4pE,UAC9Ex4F,KAAK4uB,OAAO20D,gBAA4D,YAA1CvjF,KAAK4uB,OAAO40D,iBAAiBC,UACf,SAA1CzjF,KAAK4uB,OAAO40D,iBAAiBC,YAChB,aAAhBl0D,EAAO/gB,MACP4/B,EAAKlpC,UAAU4G,IAAI,sBAI/B2pI,EAAav1I,UAAU03F,uBAAyB,SAAUxpD,EAAMuT,EAAMk1F,GAClE,IAAIxtH,EAAO,GACPhU,EAAO,CAAE,SAAY,QACrBkvE,EAAU,GACV5iC,EAAKgpB,UACLthD,EAAKshD,QAAUhpB,EAAKgpB,SAEpBhpB,EAAK0/B,UACLh4D,EAAKg4D,QAAU1/B,EAAK0/B,SAEpB1/B,EAAKu/B,YACLqD,EAAQl4E,KAAK,kBAEbs1C,EAAKo+B,aACLwE,EAAQl4E,KAAKvJ,MAAMyhF,EAAS,CAAC,wBAAyB,aAClDsyD,GACAzoG,EAAKliC,cAAc,YAAYhH,UAAU4G,IAAI,YAGjD61C,EAAK2+B,kBACLiE,EAAQl4E,KAAKvJ,MAAMyhF,EAAS,CAAC,sBAE7B5iC,EAAKE,WAAa,OAASmxC,QAC3B3pE,EAAKhU,EAAKyhI,UAAYn1F,EAAKouC,SAC3B1mE,EAAK,QAAyBs4B,EAAKouC,SAAW,GAExC,eAAkBpuC,EAAKl1C,SAC7B4c,EAAKhU,EAAKyhI,UAAYn1F,EAAKl1C,MAC3B4c,EAAK,QAAyBs4B,EAAKl1C,MAAQ,GAE1Ck1C,EAAK/qB,SACN2tD,EAAQl4E,KAAK,UAEjBgd,EAAKm4B,MAAQ+iC,EACb,gBAAsBn2C,EAAM/kB,IAEhCosH,EAAav1I,UAAUkyE,SAAW,SAAUvgD,EAAOhG,EAAM0D,GACrD,OAAOA,EAAO8pE,cAAcxnE,EAAOhG,EAAM0D,IAEtCkmH,EApTsB,I,yHCJ7B,EAAkC,WAMlC,SAASsB,EAAiBnoH,GACtB5uB,KAAK4uB,OAASA,EA0JlB,OAxJAmoH,EAAiB72I,UAAU82I,OAAS,SAAUlsG,EAAU/kB,GAEpD,IAAIqsB,EAQJ,GATApyC,KAAK+8C,QAAS,EAGV3K,EADApyC,KAAK4uB,OAAOwrB,YAA0D,QAA5Cp6C,KAAK4uB,OAAOi3C,aAAaoxE,eAC3Cj3I,KAAK4uB,OAAO8kE,iBAAiBxnF,cAAc,QAG3ClM,KAAK4uB,OAAOgwB,kBAAkB1yC,cAAc,QAExD6Z,EAAKsR,IAAMr3B,KAAK4uB,OAAOrqB,cAAc,KAAM,CAAEC,UAAW,qBACpDxE,KAAK4uB,OAAOgwB,kBAAkB1yC,cAAc,eAAgB,CAC5D,IAAIivF,EAAWn7F,KAAK4uB,OAAOgwB,kBAAkB1yC,cAAc,eAC3DivF,EAAS1nD,WAAWoB,YAAYsmD,GAC5Bn7F,KAAK4uB,OAAOwrB,YAAcp6C,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,uBAC5DlM,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,sBAAsBhH,UAAUC,OAAO,qBAGjC,QAA5CnF,KAAK4uB,OAAOi3C,aAAaoxE,eACzB7kG,EAAM5sB,aAAaO,EAAKsR,IAAK+a,EAAMiK,YAGnCjK,EAAM1tC,YAAYqhB,EAAKsR,KAE3BtR,EAAKsR,IAAI3yB,YAAY1E,KAAKk3I,eAAepsG,GAAU,OAAOv/B,EAAWwa,GAAM,IAC3E/lB,KAAK4uB,OAAO+4E,WAAWwvC,aAAapxH,EAAKsR,IAAKtR,IAElDgxH,EAAiB72I,UAAU68B,OAAS,SAAU+N,EAAU/kB,GACpD/lB,KAAK+8C,QAAS,EACd,IAAIq6F,EAAY,GAAG1pI,MAAMpK,KAAKyiB,EAAKsR,IAAI3U,iBAAiB,iBACxDqD,EAAKsR,IAAIvsB,UAAY,GACrBib,EAAKsR,IAAI3yB,YAAY1E,KAAKk3I,eAAepsG,GAAU,EAAMssG,EAAWrxH,GAAM,IAC1EA,EAAKsR,IAAInyB,UAAU4G,IAAI,QACvB9L,KAAK4uB,OAAO+4E,WAAWwvC,aAAapxH,EAAKsR,IAAKtR,IAGlDgxH,EAAiB72I,UAAUg3I,eAAiB,SAAUpsG,EAAUiS,EAAQq6F,EAAWrxH,EAAMw3B,GACrF,IAAIjrB,EAAOtyB,KAAK4uB,OACZyoH,EAAO,EACP/yD,EAAY,eAAkBhyD,EAAK6tB,iBAAoB,eAAkB7tB,EAAK8tB,WAAiB,EAAJ,EAC3F9tB,EAAKI,gBACL2kH,EAAO/kH,EAAKK,cAAcxD,QAAQxuB,QAEtC,IAAIggF,EAAK3gF,KAAK4uB,OAAOrqB,cAAc,KAAM,CACrCC,UAAW,0BACXwK,MAAO,CACHqzE,SAAU/vD,EAAKgyF,yBAAyBtkH,KAAK4uB,OAAOqrB,4BAA4Bt5C,OAC5EX,KAAK4uB,OAAOsyB,kBAAkBtvC,cAGtCq+B,EAAOlqB,EAAKkqB,KACZjwC,KAAK4uB,OAAOrqB,cAAc,OAAQ,CAAE+G,GAAIgnB,EAAKlvB,QAAQkI,GAAK,WAAY9G,UAAW,eACrF,GAAIxE,KAAK4uB,OAAOi3C,aAAajvB,SAGzB,OAFA52C,KAAKs3I,eAAernG,EAAMlqB,EAAKy/F,QAASjoE,GACxCojC,EAAGj8E,YAAYurC,GACR0wC,EAEX,IAAI3+C,EAAQhiC,KAAK4uB,OAAOrqB,cAAc,QAAS,CAAEC,UAAW,wBAAyBwK,MAAO,CAAEqjF,YAAa,OAAQpjF,KAAM,UACzH+yB,EAAMt9B,YAAY4tB,EAAKssB,kBAAkB1yC,cAAc,QAAmBwb,WAAU,IACpF,IAAI0qB,EAAQpyC,KAAK4uB,OAAOrqB,cAAc,OAAgB,CAAEyK,MAAO,CAAEC,KAAM,cACnEqwE,EAAKt/E,KAAK4uB,OAAOrqB,cAAc,MAC/BvD,EAAI,EACJsjF,GACAhF,EAAG95D,aAAaxlB,KAAK4uB,OAAOrqB,cAAc,KAAM,CAAEC,UAAW,wBAA0B86E,EAAGjjC,YAE1F/pB,EAAK+tB,iBACLi/B,EAAG56E,YAAY1E,KAAK4uB,OAAOrqB,cAAc,KAAM,CAAEC,UAAW,sBAEhE,MAAOxD,EAAIq2I,EACP/3D,EAAG56E,YAAY1E,KAAK4uB,OAAOrqB,cAAc,KAAM,CAAEC,UAAW,kBAC5DxD,IAEJ,IAEIyiI,EAFAl7B,EAAI,EACRvnG,EAAI,EAEJ,IAAIu2B,EAAOxR,EAAKwxH,uBAAyBv3I,KAAK4uB,OAAOg2E,YAActyE,EAAKoE,aACxE,MAAQqmB,GAAUwrD,EAAI6uC,EAAUz2I,QAAUK,EAAIu2B,EAAK52B,QAAWK,EAAIu2B,EAAK52B,OAAQ,CAC3E,IAAI61F,EAAOz5C,EAASq6F,EAAUzlI,SAAS42F,EAAE32F,WAAY,KAAKlH,aAAa,WAAa,KAChFwuB,EAAM3B,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KACtC6xH,EAAc34F,EAAS5R,EAAI/E,KAAM1b,MACjC,IAAI++H,EAAOx3I,KAAK4uB,OAAOrqB,cAAc,KAAM,CACvCC,UAAW,OAAkBwK,MAAO,CAAEjI,MAAO,eAAiBmyB,EAAIyd,UAAYzd,EAAIyd,UAAY,IAAK,QAAW6/C,GAAc,MAE5Ht9D,EAAItC,SACJ4gH,EAAK9yI,YAAYomC,EAAS5R,EAAI/E,MACO,aAAjCn0B,KAAK4uB,OAAO00D,mBACZ,gBAAsBk0D,EAAM,CAAE,YAAat+G,EAAIgpB,aACrC,IAANlhD,GACAw2I,EAAKtyI,UAAU4G,IAAI,0BAGN,gBAAjBotB,EAAIzH,SACJ+lH,EAAKtyI,UAAU4G,IAAI,eAEdotB,EAAIwd,UAAYxd,EAAI2d,mBACzB,eAAS,CAAC2gG,GAAO,kBAIrBA,EAAKtyI,UAAU4G,IAAI,UAEnB9L,KAAK4uB,OAAOsrB,iBACZ,eAAwBl6C,KAAK4uB,OAAQsK,EAAKs+G,GACtCx3I,KAAK4uB,OAAOqrB,6BACO,SAAf/gB,EAAIowC,QAAsB,eAAkBpwC,EAAIwjF,QAG5B,UAAfxjF,EAAIowC,QAAuB,eAAkBpwC,EAAIwjF,QAGlC,UAAfxjF,EAAIowC,SACTkuE,EAAKzwI,MAAM/B,KAAQhF,KAAK4uB,OAAO60F,qBAAqB,QAAUzjH,KAAK4uB,OAAO89E,WAAc,KACxF8qC,EAAKzwI,MAAM6rD,MAAS5yD,KAAK4uB,OAAO60F,qBAAqB,SAAWzjH,KAAK4uB,OAAO89E,WAAc,MAJ1F8qC,EAAKzwI,MAAM6rD,MAAS15B,EAAIwjF,OAAS18G,KAAK4uB,OAAO89E,WAAc,KAH3D8qC,EAAKzwI,MAAM/B,KAAQk0B,EAAIwjF,OAAS18G,KAAK4uB,OAAO89E,WAAc,OAWtE8qC,EAAK7sI,aAAa,aAAc84H,EAAazjI,KAAK4uB,OAAOyiG,UAAU32G,YAAY,gBAAkBwe,EAAIgpB,YACrGo9B,EAAG56E,YAAY8yI,GACfx2I,EAAIw1F,EAAOx1F,EAAI2Q,SAAS6kF,EAAM,IAAMx1F,EAAI,EACxCunG,IAOJ,OALA,eAAqBjpB,GACrBltC,EAAM1tC,YAAY46E,GAClBt9C,EAAMt9B,YAAY0tC,GAClBnC,EAAKvrC,YAAYs9B,GACjB2+C,EAAGj8E,YAAYurC,GACR0wC,GAEXo2D,EAAiB72I,UAAU07C,oBAAsB,aAGjDm7F,EAAiB72I,UAAUo3I,eAAiB,SAAUrnG,EAAMpkB,EAAM0xB,GAC9D,IACIm2F,EAAY,eAAO,GAAI7nH,EAAM,CAAEsyB,OAAQn+C,KAAK+8C,OAAQQ,SAAUA,IAAY,GAC1Ek6F,EAAiBz3I,KAAK4uB,OAAOxrB,QAAQkI,GAAK,uBAC1CtL,KAAK4uB,OAAOzmB,SAA0D,kBAAvCnI,KAAK4uB,OAAOi3C,aAAqB,UAChE7lE,KAAK4uB,OAAOmnB,iBAAZ/1C,CAA8B0zI,EAAW1zI,KAAK4uB,OAAQ,uBAAwB6oH,EAAgB,KAAM,KAAMxnG,GAC1GjwC,KAAK4uB,OAAOwyD,mBAGZ,eAAenxC,EAAMjwC,KAAK4uB,OAAOmnB,iBAAZ/1C,CAA8B0zI,EAAW1zI,KAAK4uB,OAAQ,uBAAwB6oH,KAapGV,EAjK0B,GCDjC,EAAiC,WAMjC,SAASW,EAAgB9oH,GACrB5uB,KAAK4uB,OAASA,EAiClB,OA/BA8oH,EAAgBx3I,UAAU68B,OAAS,SAAU+N,EAAU/kB,GACnD,GAAI/lB,KAAK4uB,OAAOzmB,SAAW4d,EAAK4xH,cAAgB5xH,EAAK4xH,aAAa/gG,SAAU,CACxE,IAAIu/F,EAAYpwH,EAAK47B,KAAKhgC,cACtBi2H,EAAQ7xH,EAAK47B,KAAKj6B,WAAU,GAChCyuH,EAAU3wH,aAAaoyH,EAAO7xH,EAAK47B,MACnCi2F,EAAM73H,QACNgG,EAAK47B,KAAKx8C,SACV4gB,EAAK47B,KAAOi2F,EAEhB7xH,EAAK47B,KAAKh3C,aAAa,aAAcob,EAAK47B,KAAK72C,UAAY9K,KAAK4uB,OAAOyiG,UAAU32G,YAAY,gBAAkBqL,EAAK4xH,aAAa9lH,OACjI9L,EAAK47B,KAAK72C,UAAY,GACtBib,EAAK47B,KAAKj9C,YAAY1E,KAAKk3I,eAAepsG,EAAU/kB,IACpDA,EAAK47B,KAAKz8C,UAAU4G,IAAI,qBACxB,eAAUia,EAAKsR,IAAK,CAAC,OAAoB,cAAe,KAE5DqgH,EAAgBx3I,UAAUg3I,eAAiB,SAAUpsG,EAAU/kB,GAC3D,IAAIuM,EAAOtyB,KAAK4uB,OACZqhB,EAAOjwC,KAAK4uB,OACXrqB,cAAc,OAAQ,CAAE+G,GAAIgnB,EAAKlvB,QAAQkI,GAAK,WAAY9G,UAAW,eAQ1E,OAPAyrC,EAAKvrC,YAAYomC,EAAS/kB,EAAK4xH,aAAaxjH,MACT,gBAA/BpO,EAAK4xH,aAAalmH,UAClB1L,EAAK47B,KAAKz8C,UAAU4G,IAAI,cAEvBia,EAAK4xH,aAAalmH,UACnB1L,EAAK47B,KAAKz8C,UAAU4G,IAAI,cAErBmkC,GAEXynG,EAAgBx3I,UAAU07C,oBAAsB,aAGzC87F,EAxCyB,G,oCCKhC,EAAkC,WAOlC,SAASG,EAAiBjpH,EAAQC,GAC9B7uB,KAAK4uB,OAASA,EACd5uB,KAAK6uB,eAAiBA,EAClB7uB,KAAK4uB,OAAOE,cAGhB9uB,KAAK4uB,OAAOG,GAAG,QAAsB/uB,KAAKwS,QAASxS,MACnDA,KAAK4uB,OAAOG,GAAG,QAAgB/uB,KAAKwS,QAASxS,OA8MjD,OA5MA63I,EAAiB33I,UAAU43I,aAAe,WACtC93I,KAAKya,KAAOza,KAAK6uB,eAAeuxD,WAAW,iBAE/Cy3D,EAAiB33I,UAAU82I,OAAS,SAAUlsG,EAAU/kB,GACpD/lB,KAAK+8C,QAAS,EACd/8C,KAAK+3I,aAAajtG,EAAU/kB,IAEhC8xH,EAAiB33I,UAAU68B,OAAS,SAAU+N,EAAU/kB,GACpD/lB,KAAK+8C,QAAS,EACd/8C,KAAK+3I,aAAajtG,EAAU/kB,IAEhC8xH,EAAiB33I,UAAU83I,mBAAqB,SAAUjyH,GACtD,IAEI81B,EAFAx4C,EAAQrD,KACRsyB,EAAOtyB,KAAK4uB,OAEhB,GAAI5uB,KAAK4uB,OAAOgrB,iBAAkB,CAC9B,IAAIq+F,EAAwB,IAAI,OAAyBj4I,KAAK4uB,OAAQ5uB,KAAK6uB,gBAE3E,OADAopH,EAAsBt3H,OAAS3gB,KAAK+8C,OAAS,OAAuBA,OAAS,OAAuBoB,MAC7F85F,EAAsBC,4BAAuB3sI,EAAWwa,GAgBnE,OAZQ81B,EADAvpB,EAAKuzC,aAAa9uB,eACT,gBAAsB,WAC3B,OAAO1zC,EAAM80I,6BAA6B,iBAAkBpyH,GAAMiB,aAIjEhnB,KAAK+8C,OACD/8C,KAAKya,KAAKC,YAAY,iBAAmBqL,EAAKqyH,gBAAgB,GAG9Dp4I,KAAKya,KAAKC,YAAY,gBAGhCmhC,GAEXg8F,EAAiB33I,UAAU63I,aAAe,SAAUjtG,EAAU/kB,GAC1D,IAAI1iB,EAAQrD,KACRsyB,EAAOtyB,KAAK4uB,OAChB5uB,KAAKq4I,OAASr4I,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAE+G,GAAIgnB,EAAKlvB,QAAQkI,GAAK,sBAAuB4D,OAAQ,gBAClGojB,EAAKsnB,kBACL55C,KAAKq4I,OAAOnzI,UAAU4G,IAAI,uBAE9BwmB,EAAKlvB,QAAQsB,YAAY1E,KAAKq4I,QAC9Br4I,KAAK83I,eACL93I,KAAKq4I,OAAO1tI,aAAa,aAAc3K,KAAKya,KAAKC,YAAY,eAG7D1a,KAAK+pI,UAAY,IAAI,OAAO,eAAO,CAC/BluF,OAAQ77C,KAAKg4I,mBAAmBjyH,GAAOuyH,SAAS,EAAM1hH,SAAS,EAC/DnsB,SAAUzK,KAAK4uB,OAAOnkB,SAAW,iBAAwBzK,KAAK4uB,OAAOnkB,SAAW,gBAChFI,QAAS7K,KAAKk3I,eAAepsG,EAAU/kB,GACvCwyH,eAAe,EACfC,eAAe,EAEf3yI,MAAO7F,KAAKy4I,YAAY7yI,KAAK5F,MAC7BusB,QAASvsB,KAAKmsI,cAAcvmI,KAAK5F,MACjC04I,eAAe,EAAMpzI,MAAOgtB,EAAKuzC,aAAajvB,SAAW,OAAS,QAClEt2C,OAAQylB,EAAKzlB,OAASylB,EAAKzlB,OAASsN,SAAS6B,KAAMs8H,kBAAmB,CAAEhpI,OAAQ,QAChFg9C,eAAgBztB,EAAKuzC,aAAa9lB,eAAiB,gBAAsB,WACrE,OAAO18C,EAAM80I,6BAA6B,iBAAkBpyH,GAAMiB,aACjE,KACL9O,QAAS,CAAC,CACF+c,MAAOj1B,KAAKgsI,SAASpmI,KAAK5F,MAC1BisI,YAAa,CAAEphI,QAAS7K,KAAKya,KAAKC,YAAY,cAC1CjQ,SAAUzK,KAAK4uB,OAAOnkB,SAAW,aAAoBzK,KAAK4uB,OAAOnkB,SAAW,YAC5EyhI,WAAW,IAEnB,CAAEj3G,MAAOj1B,KAAKgsI,SAASpmI,KAAK5F,MACxBisI,YAAa,CACTxhI,SAAUzK,KAAK4uB,OAAOnkB,SAAW,UAAiBzK,KAAK4uB,OAAOnkB,SAAW,SACzEI,QAAS7K,KAAKya,KAAKC,YAAY,oBAE5C4X,EAAKuzC,aAAawyE,QAAU/lH,EAAKuzC,aAAawyE,OAAOpnH,QAAgB,KACxElL,EAAKsyH,OAASr4I,KAAK+pI,UACnB,IAAIzxE,EAAmB,mBACvBt4D,KAAK+pI,UAAU,GAAKzxE,IAAoB,EACxCt4D,KAAK24I,yBACL34I,KAAK+pI,UAAU1jH,SAASrmB,KAAKq4I,QAC7B,eAAiBr4I,KAAK4uB,OAAOxrB,QAASpD,KAAK+pI,UAAU3mI,QAAQue,eACzD2Q,EAAKsnB,kBACL55C,KAAK+pI,UAAU75H,MAAK,IAG5B2nI,EAAiB33I,UAAUisI,cAAgB,WACvC,eAAgBnsI,KAAK4uB,SAEzBipH,EAAiB33I,UAAUy4I,uBAAyB,WAChD,IAAIt1I,EAAQrD,KACRA,KAAK4uB,OAAOgrB,mBACR55C,KAAK4uB,OAAOgqH,oBACZ54I,KAAK+pI,UAAUzpI,OAASN,KAAK4uB,OAAOgqH,mBAExC54I,KAAK+pI,UAAU7xH,QAAU,CAAC,IAC1BlY,KAAK+pI,UAAUwO,eAAgB,EAC/Bv4I,KAAK+pI,UAAUnzG,SAAU,EACzB52B,KAAK+pI,UAAUzkI,MAAQ,OACvBtF,KAAK+pI,UAAUrkI,KAAO,WAClBrC,EAAM0mI,UAAU3mI,QAAQ2D,MAAM8qD,UAAY,UAItDgmF,EAAiB33I,UAAU8rI,SAAW,SAAU7+H,GACxCnN,KAAKya,KAAKC,YAAY,gBAAgBmH,gBAAkB1U,EAAE7M,OAAOmoC,UAAUl8B,OAAOsV,cAClF7hB,KAAKy4I,cAGLz4I,KAAK4uB,OAAOsO,WAGpB26G,EAAiB33I,UAAUu4I,YAAc,WACrCz4I,KAAK4uB,OAAOm2E,aAGhB8yC,EAAiB33I,UAAUsS,QAAU,SAAUuT,GAE3C,IADA,IAAI8yH,EAAsB,CAAC,WAAY,iBAAkB,kBAChD73I,EAAI,EAAGA,EAAI63I,EAAoBl4I,OAAQK,IAC5C,GAAIhB,KAAK4uB,OAAOi3C,aAAagzE,EAAoBlnI,SAAS3Q,EAAE4Q,WAAY,MAAO,CAC3E,IAAIknI,EAAeD,EAAoBlnI,SAAS3Q,EAAE4Q,WAAY,KAAKuO,OAAO,GAAG8iB,cACvE41G,EAAoBlnI,SAAS3Q,EAAE4Q,WAAY,KAAKlE,MAAM,GACxD+pI,EAAiBz3I,KAAK4uB,OAAOxrB,QAAQkI,GAAK,eAAiBwtI,EAC/D,gBAAqBrB,EAAgBqB,EAAc94I,KAAK4uB,OAAOi3C,cAGvE7lE,KAAK4uB,OAAOhV,OAAO,QAAoB,IACvC5Z,KAAK4uB,OAAOmuB,QAAS,EACrB/8C,KAAK4uB,OAAOhV,OAAO,QAAuB,IACtC5Z,KAAKq4I,SAAWr4I,KAAK+pI,UAAUj7G,cAC/B9uB,KAAK+pI,UAAUv3H,UACf,gBAAOxS,KAAKq4I,UAGpBR,EAAiB33I,UAAUi4I,6BAA+B,SAAUY,EAAYhzH,GAC5E,IAAIizH,EAAUh5I,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,WAAau0I,IACrErF,EAAY,eAAO,GAAI3tH,EAAKy/F,QAAS,CAAErnE,OAAQn+C,KAAK+8C,SAAU,GAC9Di5F,EAAah2I,KAAK4uB,OAAOxrB,QAAQkI,GAAK,eAAiBytI,EAI3D,OAHA,eAAeC,GAAyB,mBAAfD,EAAkC/4I,KAAK4uB,OAAO06F,wBACnEtpH,KAAK4uB,OAAO46F,yBAAyBkqB,EAAW1zI,KAAK4uB,OAAQ,eAAiBmqH,EAAY/C,IAC9F,gBAAqBA,EAAY+C,EAAY/4I,KAAK4uB,OAAOi3C,cAClDmzE,GAEXnB,EAAiB33I,UAAUg3I,eAAiB,SAAUpsG,EAAU/kB,GAC5D,IAAI1iB,EAAQrD,KACRsyB,EAAOtyB,KAAK4uB,OACZ2vB,EAAMv+C,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAWxE,KAAK+8C,OAAS,OAAqB,kBACvF9M,EAAOlqB,EAAKkqB,KACZjwC,KAAK4uB,OAAOrqB,cAAc,OAAQ,CAAE+G,GAAIgnB,EAAKlvB,QAAQkI,GAAK,WAAY9G,UAAW,eACrF,GAAIxE,KAAK4uB,OAAOi3C,aAAajvB,SAAU,CACnC,IAAI6gG,EAAiBz3I,KAAK4uB,OAAOxrB,QAAQkI,GAAK,uBAC1CooI,EAAY,eAAO,GAAI3tH,EAAKy/F,QAAS,CAAErnE,OAAQn+C,KAAK+8C,SAAU,GAC9DkzC,EAAkBjwF,KAAK4uB,OAAOzmB,SAA0D,kBAAvCnI,KAAK4uB,OAAOi3C,aAAqB,SAClFib,EAAe9gF,KAAK4uB,OAAOmyD,eAAiB/gF,KAAK4uB,OAAOmyD,cAAcC,eACtEhhF,KAAK4uB,OAAOmyD,cAAcC,cAAc74E,QACxC8nF,GAAmBnP,GACnB9gF,KAAK4uB,OAAOmnB,iBAAZ/1C,CAA8B0zI,EAAW1zI,KAAK4uB,OAAQ,uBAAwB6oH,EAAgB,KAAM,KAAMxnG,GAC1GjwC,KAAK4uB,OAAOwyD,mBAGZ,eAAenxC,EAAMjwC,KAAK4uB,OAAOmnB,iBAAZ/1C,CAA8B0zI,EAAW1zI,KAAK4uB,OAAQ,uBAAwB6oH,IAEvG,IAAIwB,EAAW,WAEX,IADA,IAAI9pH,EAAU9rB,EAAMurB,OAAO8H,aAClB11B,EAAI,EAAGA,EAAImuB,EAAQxuB,OAAQK,IAC5BmuB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKytF,kBACpCh8F,EAAMurB,OAAO+4E,WAAWuxC,QAAQhvD,MAAM/6D,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKigB,OACtE1C,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKytF,kBAMpD,OAFA,gBAAqBo4C,EAAgB,WAAYz3I,KAAK4uB,OAAOi3C,cAAc,EAAMozE,GACjF16F,EAAI75C,YAAYurC,GACTsO,EAKX,IAHA,IAAIvc,EAAQhiC,KAAK4uB,OAAOrqB,cAAc,QAAS,CAAEC,UAAW,OAAgBwK,MAAO,CAAEqjF,YAAa,MAAOpjF,KAAM,UAC3GmjC,EAAQpyC,KAAK4uB,OAAOrqB,cAAc,OAAgB,CAAEyK,MAAO,CAAEC,KAAM,cACnEsoB,EAAOjF,EAAKoE,aACP11B,EAAI,EAAGA,EAAIu2B,EAAK52B,OAAQK,IAC7B,KAAIhB,KAAK4uB,OAAO+4E,WAAWwxC,qBAAqB5hH,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,OAAS2lB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK8kC,UAC/Gnf,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKilC,kBAA8D,aAA1Ctf,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKpD,MAD7F,CAIA,IAAI8wE,EAAKt/E,KAAK4uB,OAAOrqB,cAAc,KAAM,CAAEyK,MAAO,CAAEC,KAAM,SACtDmqI,EAAWp5I,KAAK4uB,OAAOrqB,cAAc,KAAM,CAC3CC,UAAW,OAAkBwK,MAAO,CAChCjI,MAAO,eAAiB/G,KAAK4uB,OAAOnpB,UAAY,QAAU,QAAU,kBAG5EqlC,EAASvT,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKuiB,KAAKjvB,UAAUC,OAAO,WAChEi0I,EAAS10I,YAAYomC,EAASvT,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKuiB,MAC/DmrD,EAAG56E,YAAY00I,GACfhnG,EAAM1tC,YAAY46E,GAKtB,OAHAt9C,EAAMt9B,YAAY0tC,GAClBnC,EAAKvrC,YAAYs9B,GACjBuc,EAAI75C,YAAYurC,GACTsO,GAEXs5F,EAAiB33I,UAAU07C,oBAAsB,WACzC57C,KAAK4uB,OAAOE,cAGhB9uB,KAAK4uB,OAAOyF,IAAI,QAAsBr0B,KAAKwS,SAC3CxS,KAAK4uB,OAAOyF,IAAI,QAAgBr0B,KAAKwS,WAElCqlI,EA5N0B,G,YCGjC,EAA4B,WAO5B,SAASwB,EAAWzqH,EAAQC,GAExB7uB,KAAKyxB,SAAW,CACZ,OAAU,EACV,OAAU,EAAkB,MAAS,EAAiB,OAAU,GAEpEzxB,KAAK4uB,OAASA,EACd5uB,KAAK6uB,eAAiBA,EACtB7uB,KAAK66F,SAAW,IAAI76F,KAAKyxB,SAASzxB,KAAK4uB,OAAOi3C,aAAaihC,MAAMl4E,EAAQC,GACzE7uB,KAAK+f,MAAQ8O,EAAeuxD,WAAW,SA2K3C,OAzKAi5D,EAAWn5I,UAAU82I,OAAS,SAAUjxH,GACpC/lB,KAAK66F,SAASm8C,OAAOh3I,KAAKs5I,gBAAgBvzH,GAAOA,GACjD/lB,KAAKu5I,cAAcxzH,IAEvBszH,EAAWn5I,UAAU68B,OAAS,SAAUhX,GACpC/lB,KAAK66F,SAAS99D,OAAO/8B,KAAKs5I,gBAAgBvzH,GAAOA,GACjD,IAAIwxH,EAAyBxxH,EAAKwxH,uBAC7BA,IACDv3I,KAAK4uB,OAAOhV,OAAO,OAAwBmM,GAC3C/lB,KAAKu5I,cAAcxzH,KAG3BszH,EAAWn5I,UAAUq5I,cAAgB,SAAUxzH,GAS3C,IARA,IACItO,EACAkqC,EAFArvB,EAAOtyB,KAAK4uB,OAIZqhB,EAAkC,WAA3B3d,EAAKuzC,aAAaihC,KACzB,gBAAO,IAAMx0E,EAAKlvB,QAAQkI,GAAK,kCAAmCsC,UAClE0kB,EAAKlvB,QAAQ+U,uBAAuB,cAAc,GAClDof,EAAkC,UAA3BjF,EAAKuzC,aAAaihC,KAAmBx0E,EAAKoE,aAAe,CAACpE,EAAKoG,iBAAiB3S,EAAK4S,aACvF9qB,EAAK,EAAG2rI,EAASjiH,EAAM1pB,EAAK2rI,EAAO74I,OAAQkN,IAAM,CACtD,IAAIqrB,EAAMsgH,EAAO3rI,GACjB,IAAI7N,KAAK4uB,OAAOi3C,aAAajvB,UAAa,eAAkB1d,EAAIrH,QAWhE,IAAI7xB,KAAK4uB,OAAO+4E,WAAWwxC,qBAAqBjgH,KAAQA,EAAIwd,SAA5D,CAISxd,EAAImgE,cAAcngE,EAAIrH,MAAO9L,EAAKy/F,QAAStsF,GACpDyoB,EAAO1R,EAAK/jC,cAAc,iBAAmBgtB,EAAI/E,IAAM,KACvD,IAAIuuE,EAAOxpE,EAAIxH,KAAK+nH,MACf,eAAkB93F,KACC,kBAAT+gD,GACPA,EAAO,eAAUA,EAAMn8F,QACvBm8F,EAAK,CACD8iB,QAASz/F,EAAKy/F,QAASpiH,QAASu+C,EAAMpyB,OAAQ2J,EAAKnL,YAAahI,EAAKgI,YAAasJ,IAAKtR,EAAKsR,IAC5FwE,eAAgB3C,EAAIK,mBAAqB,eAAUL,EAAIrH,MAAO9L,EAAK8V,mBAIvE3C,EAAIxH,KAAK+nH,MAAM,CACXj0B,QAASz/F,EAAKy/F,QAASpiH,QAASu+C,EAAMpyB,OAAQ2J,EAAKnL,YAAahI,EAAKgI,YAAasJ,IAAKtR,EAAKsR,IAC5FwE,eAAgB3C,EAAIK,mBAAqB,eAAUL,EAAIrH,MAAO9L,EAAK8V,kBAGtEpkB,GAAckqC,EAAKj3C,aAAa,aAAgB,gBAAai3C,EAAM,yBACpE3hD,KAAK05I,aAAa/3F,EAAM57B,EAAKvX,MAC7BiJ,GAAY,SAlCpB,CACI,IAAIioE,EAAW,eAAO,GAAI35D,GAC1B25D,EAASt8E,QAAU6sC,EAAK/jC,cAAc,SAAW,eAAkBgtB,EAAIrH,OAAS,KAClD,kBAAnBqH,EAAIxH,KAAK+nH,MAChB,eAAUvgH,EAAIxH,KAAK+nH,MAAOlzI,OAA1B,CAAkCm5E,GAGlCxmD,EAAIxH,KAAK+nH,MAAM/5D,MAiC/B25D,EAAWn5I,UAAUw5I,aAAe,SAAU3sF,EAAMv+C,GAChD,IAAI21E,EAASnkF,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,uBAI/C,IAHK,eAAkBi4E,IAAWA,EAAOlwC,oBACrCkwC,EAAOlwC,mBAAmB/uC,UAAU4G,IAAI,WAEN,UAAlC9L,KAAK4uB,OAAOi3C,aAAaihC,KACzB9mG,KAAK+f,MAAM45H,QAAQ,CAAEr5I,OAAQ,eAAQysD,EAAM,QAAS,OAEnD,CACD,IAAI6sF,GAAW55I,KAAK4uB,OAAO6D,uBAAwBzyB,KAAK4uB,OAAOqrB,4BAAiE,WAAlCj6C,KAAK4uB,OAAOi3C,aAAaihC,KACnH8yC,IAAa55I,KAAK4uB,OAAO6D,sBAAwBzyB,KAAK4uB,OAAOqrB,6BAA2E,WAA5Cj6C,KAAK4uB,OAAOi3C,aAAaoxE,gBAClH,gBAAalqF,EAAM,QACtBA,EAAKhtC,QAILgtC,EAAKhtC,MAAM,CAAE85H,eAAe,IAGhC9sF,EAAK7nD,UAAUmB,SAAS,kBACxB0mD,EAAKukB,kBAAkBvkB,EAAKt0C,MAAM9X,OAAQosD,EAAKt0C,MAAM9X,SAG7D04I,EAAWn5I,UAAUo5I,gBAAkB,SAAUvzH,GAC7C,IAAIuM,EAAOtyB,KAAK4uB,OACZkc,EAAW,GACXvT,EAAkC,UAA3BjF,EAAKuzC,aAAaihC,KAAmBx0E,EAAKoE,aAAe,CAACpE,EAAKoG,iBAAiB3S,EAAK4S,aAIhG,GAHI5S,EAAKwxH,yBACLhgH,EAAOv3B,KAAK4uB,OAAOg2E,aAEnB5kG,KAAK4uB,OAAOi3C,aAAajvB,SACzB,MAAO,GAEX,IAAK,IAAI51C,EAAI,EAAGiiB,EAAMsU,EAAK52B,OAAQK,EAAIiiB,EAAKjiB,IAAK,CAC7C,IAAIk4B,EAAM3B,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KACtC,GAAIsnB,EAAIwd,UAAYxd,EAAI2d,iBAAxB,CACI,IAAIspC,EAAmBngF,KAAK6uB,eAAeuxD,WAAW,uBAClDp/D,EAAQ,IAAI,OAAkBhhB,KAAK4uB,QACnC2xD,EAAeJ,EAAiBK,gBAAgB,OAASK,eACzDp/B,EAAQzgC,EAAMs/B,aAAav6B,EAAKy/F,SAAS,GAAG/jE,MAC5CE,EAAOF,EAAMxtB,QAAO,SAAU0tB,GAAQ,OAAOA,EAAKg1F,SAClDh2D,EAAKJ,EAAa5sE,OAAOguC,EAAKhwC,SAAS3Q,EAAE4Q,WAAY,KAAMmU,EAAKy/F,QAAS,CAAE,MAASz/F,EAAKsR,IAAMtR,EAAKsR,IAAI3sB,aAAa,QAAyB,GAAK1K,KAAK4uB,OAAO6D,sBAC/J8rB,EAAMoiC,EAAGl/D,kBACb88B,EAAI5zC,aAAa,YAAag2E,EAAGj2E,aAAa,cAC9CogC,EAAS5R,EAAI/E,KAAOoqB,MATxB,CAYA,GAAiB,aAAbrlB,EAAI1qB,MAAuBuX,EAAKy/F,QAAQtsF,EAAIrH,iBAAkBlZ,KAAM,CACpE,IAAImhI,EAAY/zH,EAAKy/F,QAAQtsF,EAAIrH,OACjC9L,EAAKy/F,QAAQtsF,EAAIrH,OAASioH,EAAU3gI,cAAgB,IAAM,gBAAQ2gI,EAAU9yG,WAAa,GAAK,IAAM,gBAAQ8yG,EAAUjzG,WAE1H,IAAIpuB,EAASygB,EAAImgE,cAAcngE,EAAIrH,MAAO9L,EAAKy/F,QAAStsF,GACpD6gH,EAAQ,CAAExqH,OAAQ2J,EAAKzgB,MAAOA,EAAOjK,KAAMuX,EAAKgI,YAAalC,KAAM9F,EAAKy/F,SACxE9iB,EAAOxpE,EAAIxH,KAAKvxB,OAChB8yC,OAAQ,EACZ,GAAI/Z,EAAIie,aAAc,CAClBlE,EAAQjzC,KAAK4uB,OAAOrqB,cAAc,OAAQ,CAAEyK,MAAO,CAAE,eAAgBkqB,EAAI/E,OACzE,IAAIwlE,EAAS35F,KAAK4uB,OAAOxrB,QAAQkI,GAAK4tB,EAAI/E,IAAM,eAC5C6lH,EAAW,eAAgB,GAAIj0H,EAAKy/F,QAAS,CAAEj2F,OAAQ2J,IACvD+2D,EAAkBjwF,KAAK4uB,OAAOzmB,SAAyC,kBAAtB+wB,EAAgB,aACjE4nD,EAAe9gF,KAAK4uB,OAAOmyD,eAAiB/gF,KAAK4uB,OAAOmyD,cAAcC,eACtEhhF,KAAK4uB,OAAOmyD,cAAcC,cAAc74E,QAC5C,GAAI8nF,GAAmBnP,EACnB5nD,EAAI6c,iBAAJ7c,CAAsB,eAAO,CAAE,MAASnT,EAAKivE,UAAYglD,GAAWh6I,KAAK4uB,OAAQ,eAAgB+qE,EAAQ,KAAM,KAAM1mD,GACrHjzC,KAAK4uB,OAAOwyD,sBAEX,CACD,IAAIxqC,EAAW1d,EAAI6c,iBAAJ7c,CAAsB,eAAO,CAAE,MAASnT,EAAKivE,UAAYglD,GAAWh6I,KAAK4uB,OAAQ,eAAgB+qE,GAChH,eAAe1mD,EAAO2D,QAGzB,CAQD,GAPoB,kBAAT8rD,GACPA,EAAO,eAAUA,EAAMn8F,QACvB0sC,EAAQyvD,EAAKq3C,IAGb9mG,EAAQ/Z,EAAIxH,KAAKvxB,OAAO45I,GAEP,kBAAV9mG,EAAoB,CACvBsL,EAAMv+C,KAAK4uB,OAAOrqB,cAAc,OACpCg6C,EAAIzzC,UAAYmoC,EAChBA,EAAQsL,EAAIlC,WAEhB,IAAI49F,EAA4B,UAAlBhnG,EAAMvjC,SAAuBujC,EAAMvwB,iBAAiB,SAAS/hB,OACvEu5I,EAAmB,eAAkBhhH,EAAIrH,OAC7C,eAAWooH,EAAUhnG,EAAM/mC,cAAc,SAAW+mC,EAAO,CACvDjjC,KAAMkqI,EAAkB,eAAgBhhH,EAAI/E,IAC5C7oB,GAAIgnB,EAAKlvB,QAAQkI,GAAK4uI,IAE1B,eAAUjnG,EAAO,CAAC,UAAW,WAAY,IACnB,UAAlB/Z,EAAIyd,WACJ1D,EAAM/tC,UAAU4G,IAAI,cAEnBotB,EAAIvC,cAAgBuC,EAAIihH,aAAoC,cAArBp0H,EAAKgI,aAC5CmL,EAAIihH,YAAmC,QAArBp0H,EAAKgI,cACxBklB,EAAMtoC,aAAa,WAAY,IAGvCmgC,EAAS5R,EAAI/E,KAAO8e,GAExB,OAAOnI,GAEXuuG,EAAWn5I,UAAUsS,QAAU,WAC3BxS,KAAK66F,SAASj/C,uBAEXy9F,EA3LoB,G,YCT3B,EAA8B,WAC9B,SAASe,EAAaxrH,GAClB5uB,KAAK4uB,OAASA,EAgBlB,OAdAwrH,EAAal6I,UAAUC,OAAS,SAAU4lB,GACtC,OAAO,eAAkB/lB,KAAK4uB,OAAQ7I,EAAKwJ,OAAQ,UAAW,CAAE/gB,KAAM,UAE1E4rI,EAAal6I,UAAUm6I,KAAO,SAAUj3I,GACpC,OAAOA,EAAQulD,cAAc,GAAGlwC,OAEpC2hI,EAAal6I,UAAUsS,QAAU,WACzBxS,KAAK+iC,MAAQ/iC,KAAK+iC,IAAIjU,cAClB9uB,KAAKs6I,oBACLt6I,KAAKs6I,qBAETt6I,KAAK+iC,IAAIvwB,YAGV4nI,EAlBsB,GCN7B/6I,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAwBxC,EAAiC,SAAU8C,GAE3C,SAAS03I,IACL,IAAIl3I,EAAmB,OAAXR,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAEhE,OADAqD,EAAMm3I,cAAgB,CAAC,wBAAyB,YACzCn3I,EAgEX,OApEAhE,EAAUk7I,EAAiB13I,GAM3B03I,EAAgBr6I,UAAUC,OAAS,SAAU4lB,GACzC,IAAImT,EAAMnT,EAAKwJ,OACXkrH,EAAa,qBAKjB,MAJiB,aAAbvhH,EAAI1qB,OACJisI,EAAa,yCAEjBz6I,KAAKs6I,mBAAqBt6I,KAAK47C,oBACxB,eAAkB57C,KAAK4uB,OAAQ7I,EAAKwJ,OAAQkrH,EAAY,CAAEjsI,KAAM,WAAYiK,MAAOsN,EAAKtN,SAEnG8hI,EAAgBr6I,UAAUm6I,KAAO,SAAUj3I,GACvC,OAAOA,EAAQ2vC,SAEnBwnG,EAAgBr6I,UAAUu5I,MAAQ,SAAU1zH,GACxC,IAAI20H,EACAC,EAOJ,GANK,eAAkB50H,EAAKsR,OACxBqjH,EAAe30H,EAAKsR,IAAInrB,cAAc,wBAEtC,eAAU6Z,EAAKwJ,OAAOsC,MAAO9L,EAAKy/F,WAClCm1B,EAAWj9G,KAAKC,MAAM,eAAU5X,EAAKwJ,OAAOsC,MAAO9L,EAAKy/F,SAAS5zG,WAAWiQ,iBAE3E,eAAkB64H,IAAsC,aAArB30H,EAAKwJ,OAAO/gB,KAAqB,CAGrE,GAFAxO,KAAKyxB,SAAWzxB,KAAK4uB,OAAOi3C,aAAaihC,KACzC9mG,KAAK46I,QAAU70H,EAAKsR,IACK,QAArBtR,EAAKgI,YAAuB,CAC5B,IAAIsJ,EAAMr3B,KAAK4uB,OAAO22F,oBAAoBx/F,EAAKsR,IAAI3sB,aAAa,aAChEiwI,IAAWtjH,GAAMA,EAAI0oD,WAEzB,OAAuBj9E,WAAM,EAAQ,CAAC,GAAG4K,MAAMpK,KAAKyiB,EAAKsR,IAAIlf,uBAAuB,SAAoBwiI,GAAU1rG,OAAOjvC,KAAKw6I,gBAElIx6I,KAAK+iC,IAAM,IAAI,OAAS,eAAO,CAC3B+Q,MAAyC,WAAlC9zC,KAAK4uB,OAAOi3C,aAAaihC,KAAoB,IAAM/gF,EAAKwJ,OAAO2yB,WACtEnP,QAAS4nG,EACTviI,UAAW,gBAAW2N,EAAKwJ,OAAQxJ,EAAKgI,YAAahI,EAAK3iB,SAAUqC,UAAWzF,KAAK4uB,OAAOnpB,UAC3FgF,SAAUzK,KAAK4uB,OAAOnkB,SAAWzK,KAAK4uB,OAAOnkB,SAAW,IACzDsb,EAAKwJ,OAAOmC,KAAKT,SACpBjxB,KAAK64C,mBACL74C,KAAK+iC,IAAI1c,SAASN,EAAK3iB,UAE3Bm3I,EAAgBr6I,UAAU24C,iBAAmB,WACzC74C,KAAK66I,SAAW76I,KAAK86I,eAAel1I,KAAK5F,MACzCA,KAAK+iC,IAAI8V,iBAAiB,OAAiB74C,KAAK66I,WAEpDN,EAAgBr6I,UAAU07C,oBAAsB,WACxC57C,KAAK+iC,IAAIjU,aAGb9uB,KAAK+iC,IAAI6Y,oBAAoB,OAAiB57C,KAAK66I,WAEvDN,EAAgBr6I,UAAU46I,eAAiB,SAAU/0H,GACjD,GAAI/lB,KAAK46I,SAA6B,WAAlB56I,KAAKyxB,SAAuB,CAC5C,IAAI3lB,GAAM,EACLia,EAAKgtB,SAINjnC,GAAM,EACN9L,KAAK46I,QAAQjwI,aAAa,gBAAiBmB,EAAI8F,aAJ/C5R,KAAK46I,QAAQhwI,gBAAgB,iBAMjC,OAAuB9H,WAAM,EAAQ,CAAC,GAAG4K,MAAMpK,KAAKtD,KAAK46I,QAAQziI,uBAAuB,SAAoBrM,GAAKmjC,OAAOjvC,KAAKw6I,kBAG9HD,EArEyB,CAsElC,G,gDC9FE,EAAwC,WACxC,IAAIj7I,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GA0BxC,EAAkC,SAAU8C,GAE5C,SAASk4I,EAAiBnsH,GACtB,IAAIvrB,EAEJR,EAAOS,KAAKtD,OAASA,KAIrB,OAHAqD,EAAMurB,OAASA,EACfvrB,EAAMkuH,MAAO,EACbluH,EAAMi3I,mBAAqBj3I,EAAMu4C,oBAC1Bv4C,EAuGX,OA/GA,EAAU03I,EAAkBl4I,GAU5Bk4I,EAAiB76I,UAAUu5I,MAAQ,SAAU1zH,GACzC,IAAIi1H,EAA6C,WAAlCh7I,KAAK4uB,OAAOi3C,aAAaihC,KACxC9mG,KAAKuvB,OAASxJ,EAAKwJ,OACnB,IAAI6+G,EAAO,IAAI,OAAUroH,EAAKwJ,OAAOsC,MAAO,WAAY,MAAM,GAAM,GAChEZ,EAAS,GACb,GAAIlL,EAAKwJ,OAAOmC,KAAKT,OAEjB,IADA,IAAI7b,EAAO3V,OAAO2V,KAAK2Q,EAAKwJ,OAAOmC,KAAKT,QAC/BjwB,EAAI,EAAGA,EAAIoU,EAAKzU,OAAQK,IAC7BiwB,EAAO7b,EAAKzD,SAAS3Q,EAAE4Q,WAAY,MAA6C,UAArCwD,EAAKzD,SAAS3Q,EAAE4Q,WAAY,KACnEmU,EAAKwJ,OAAOmC,KAAKT,OAAO7b,EAAKzD,SAAS3Q,EAAE4Q,WAAY,MAAM4kB,QAC1DzQ,EAAKwJ,OAAOmC,KAAKT,OAAO7b,EAAKzD,SAAS3Q,EAAE4Q,WAAY,MAGhE5R,KAAK+iC,IAAM,IAAI,OAAa,eAAO,CAC/B3T,WAAYpvB,KAAK4uB,OAAOQ,sBAAsB,OAC1CpvB,KAAK4uB,OAAOQ,WAAa,IAAI,OAAYpvB,KAAK4uB,OAAOQ,YACzDE,OAAO,IAAI,QAAQ6D,MAAMi7G,GAAM3lH,OAAO1C,EAAKwJ,OAAOsC,OAAQxZ,QAAS,gBAAW0N,EAAKwJ,OAAQxJ,EAAKgI,YAAahI,EAAK3iB,SAClHuuB,OAAQ,CAAElZ,MAAOsN,EAAKwJ,OAAOsC,OAC7BpZ,MAAO,eAAUsN,EAAKwJ,OAAOsC,MAAO9L,EAAKy/F,SACzC//G,UAAWzF,KAAK4uB,OAAOnpB,UACvBuU,YAAaghI,EAAW,GAAKj1H,EAAKwJ,OAAO2yB,WAAYkuB,YAAa,QAClEt4D,eAAgBkjI,EAAW,QAAU,SACrCC,UAAW,YACXxwI,SAAUzK,KAAK4uB,OAAOnkB,SAAWzK,KAAK4uB,OAAOnkB,SAAW,KACxD5E,MAAO7F,KAAKk7I,cAAct1I,KAAK5F,OAChCixB,IACCjxB,KAAK4uB,OAAO6D,uBACRxB,EAAO7B,WACPpvB,KAAK+iC,IAAI3T,WAAa6B,EAAO7B,WAG7BpvB,KAAK+iC,IAAI3T,WAAarJ,EAAKwJ,OAAOgK,kBAAoB,CAACxT,EAAK8V,eAAe,IAAM,CAAC9V,EAAKy/F,UAG/FxlH,KAAK64C,mBACL74C,KAAK+iC,IAAIzT,MAAM2B,OAASjxB,KAAK4uB,OAAOU,MAAM2B,OAC1CjxB,KAAK+iC,IAAI1c,SAASN,EAAK3iB,SAEvB2iB,EAAK3iB,QAAQuH,aAAa,OAAQ,eAAkBob,EAAKwJ,OAAOsC,SAEpEkpH,EAAiB76I,UAAUg7I,cAAgB,SAAUn1H,GAC7CA,EAAKrX,OAA+B,WAAtBqX,EAAKrX,MAAMiS,SACzB3gB,KAAK4uB,OAAO+4E,WAAWwzC,qBAAsB,IAGrDJ,EAAiB76I,UAAU24C,iBAAmB,WAC1C74C,KAAKo7I,UAAYp7I,KAAKq7I,gBAAgBz1I,KAAK5F,MAC3CA,KAAKs7I,OAASt7I,KAAKu7I,aAAa31I,KAAK5F,MACrCA,KAAKw7I,aAAex7I,KAAKy7I,mBAAmB71I,KAAK5F,MACjDA,KAAK07I,WAAa17I,KAAK27I,iBAAiB/1I,KAAK5F,MAC7CA,KAAK+iC,IAAI8V,iBAAiB,OAAiB74C,KAAKo7I,WAChDp7I,KAAK+iC,IAAI8V,iBAAiB,OAAkB74C,KAAKs7I,QACjDt7I,KAAK+iC,IAAI8V,iBAAiB,OAAqB74C,KAAKw7I,cACpDx7I,KAAK+iC,IAAI8V,iBAAiB,OAAuB74C,KAAK07I,aAE1DX,EAAiB76I,UAAU07C,oBAAsB,WACzC57C,KAAK+iC,IAAIjU,cAGb9uB,KAAK+iC,IAAI6Y,oBAAoB,OAAiB57C,KAAKo7I,WACnDp7I,KAAK+iC,IAAI6Y,oBAAoB,OAAkB57C,KAAKs7I,QACpDt7I,KAAK+iC,IAAI6Y,oBAAoB,OAAqB57C,KAAKw7I,cACvDx7I,KAAK+iC,IAAI6Y,oBAAoB,OAAuB57C,KAAK07I,cAG7DX,EAAiB76I,UAAUm7I,gBAAkB,SAAUluI,GACnDnN,KAAKuxH,MAAO,GAEhBwpB,EAAiB76I,UAAUu7I,mBAAqB,WACxCz7I,KAAK4uB,OAAO6D,uBACRzyB,KAAKuvB,OAAOmC,KAAKT,QAAUjxB,KAAKuvB,OAAOmC,KAAKT,OAAO7B,WACnDpvB,KAAK+iC,IAAI3T,WAAapvB,KAAKuvB,OAAOmC,KAAKT,OAAO7B,WAG9CpvB,KAAK+iC,IAAI3T,WAAcpvB,KAAKuvB,OAAOgK,kBAE7Bv5B,KAAKuvB,OAAOH,sBAAsB,OAChCpvB,KAAKuvB,OAAOH,WAAa,IAAI,OAAYpvB,KAAKuvB,OAAOH,YAHLpvB,KAAK4uB,OAAOQ,sBAAsB,OACtFpvB,KAAK4uB,OAAOQ,WAAa,IAAI,OAAYpvB,KAAK4uB,OAAOQ,cAMrE2rH,EAAiB76I,UAAUy7I,iBAAmB,SAAUxuI,GACpDA,EAAE6jB,OAAS,OAAS+B,SAAS5lB,EAAE6jB,OAAQhxB,KAAK+iC,IAAIpR,OAAOlZ,OAAO,IAC1DzY,KAAKuxH,OAAQvxH,KAAKuvB,OAAOH,YAAgBpvB,KAAKuvB,OAAOmC,KAAKT,QAC1DjxB,KAAKuvB,OAAOmC,KAAKT,OAAOomB,eACpB,WAAYr3C,KAAKuvB,OAAOH,WACxBpvB,KAAKuvB,OAAOH,WAAW4B,OAAS7jB,EAAE6jB,OAE7BhxB,KAAKuvB,OAAOH,sBAAsB,SACvCpvB,KAAKuvB,OAAOH,WAAWA,WAAW2G,KAAO5oB,EAAE6jB,SAGnDhxB,KAAKuxH,MAAO,GAEhBwpB,EAAiB76I,UAAUq7I,aAAe,SAAUx1H,GAChD,IAAI61H,EAAa,gBAAa57I,KAAK+iC,IAAI3/B,QAAS,YAChD,GAAsC,WAAlCpD,KAAK4uB,OAAOi3C,aAAaihC,OAAsB,eAAkB80C,GAAa,CAC9E,IAAIC,EAAS,gBAAO,IAAMD,EAAWtwI,GAAIsC,UAAU+6C,cAAc,GACjE5iC,EAAKK,MAAMhjB,QAAQ2D,MAAMgd,QAAU83H,EAAO93H,OAAS,GAAGnS,aAGvDmpI,EAhH0B,CAiHnC,G,YCnIE,EAAiC,WACjC,SAASe,EAAgBltH,GACrB5uB,KAAK4uB,OAASA,EAwClB,OAtCAktH,EAAgB57I,UAAU67I,gBAAkB,SAAUh2H,GAClD,GAAqB,KAAjBA,EAAKvS,SAAmC,IAAjBuS,EAAKvS,QAAe,CAC3C,IAAI3G,EAAMe,SAAS2R,YAAY,cAC/B1S,EAAI2S,UAAU,UAAU,GAAO,GAE/Bxf,KAAKyf,cAAc5S,KAG3BivI,EAAgB57I,UAAUC,OAAS,SAAU4lB,GAEzC,OADA/lB,KAAKg8I,UAAY,IAAI,OAAqBh8I,KAAK4uB,OAAOpU,QAC/C,eAAkBxa,KAAK4uB,OAAQ7I,EAAKwJ,OAAQ,UAAW,KAGlEusH,EAAgB57I,UAAUm6I,KAAO,SAAUj3I,GACvC,OAAOpD,KAAK+iC,IAAItqB,OAEpBqjI,EAAgB57I,UAAUu5I,MAAQ,SAAU1zH,GACxC,IAAImT,EAAMnT,EAAKwJ,OACXyrH,EAA6C,WAAlCh7I,KAAK4uB,OAAOi3C,aAAaihC,KACxC9mG,KAAK+iC,IAAM,IAAI,OAAe,eAAO,CACjCtqB,MAAO3R,WAAW,eAAUif,EAAKwJ,OAAOsC,MAAO9L,EAAKy/F,UACpD//G,UAAWzF,KAAK4uB,OAAOnpB,UACvBuU,YAAaghI,EAAW,GAAKj1H,EAAKwJ,OAAO2yB,WACzC7pC,QAAS,gBAAW0N,EAAKwJ,OAAQxJ,EAAKgI,YAAahI,EAAK3iB,SACxD0U,eAAkD,WAAlC9X,KAAK4uB,OAAOi3C,aAAaihC,KAAoB,QAAU,SACvEtsF,OAAQxa,KAAK4uB,OAAOpU,OACpB/P,SAAUzK,KAAK4uB,OAAOnkB,SAAWzK,KAAK4uB,OAAOnkB,SAAW,MACzDyuB,EAAIxH,KAAKT,SACZlL,EAAK3iB,QAAQuH,aAAa,OAAQ,eAAkBob,EAAKwJ,OAAOsC,QAChE7xB,KAAK+iC,IAAI1c,SAASN,EAAK3iB,SACvBpD,KAAK+iC,IAAI3/B,QAAQy1C,iBAAiB,UAAW74C,KAAK+7I,kBAEtDD,EAAgB57I,UAAUsS,QAAU,WAC5BxS,KAAK+iC,MAAQ/iC,KAAK+iC,IAAIjU,cACtB9uB,KAAK+iC,IAAI3/B,QAAQw4C,oBAAoB,UAAW57C,KAAK+7I,iBACrD/7I,KAAK+iC,IAAIvwB,YAGVspI,EA1CyB,G,YCRhC,EAAwC,WACxC,IAAIx8I,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAsBxC,EAAiC,SAAU8C,GAE3C,SAASo5I,IACL,OAAkB,OAAXp5I,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAsC/D,OAxCA,EAAUi8I,EAAiBp5I,GAI3Bo5I,EAAgB/7I,UAAUC,OAAS,SAAU4lB,GACzC,IAAIsD,EAAO,CACP7a,KAAM,OAAQiK,MAAQ,eAAkBsN,EAAKtN,OAAsB,GAAbsN,EAAKtN,MAAY1R,MAAO,cAAgBgf,EAAKwJ,OAAOonB,WAE9G,OAAO,eAAkB32C,KAAK4uB,OAAQ7I,EAAKwJ,OAAQ,gCAAiClG,IAExF4yH,EAAgB/7I,UAAUm6I,KAAO,SAAUj3I,GACvC,OAAOA,EAAQqV,OAEnBwjI,EAAgB/7I,UAAUu5I,MAAQ,SAAU1zH,GACxC,IAAImT,EAAMnT,EAAKwJ,OACXyrH,EAA6C,WAAlCh7I,KAAK4uB,OAAOi3C,aAAaihC,KACxC9mG,KAAK+iC,IAAM,IAAI,OAAQ,eAAO,CAC1B3/B,QAAS2iB,EAAK3iB,QAAS0U,eAAkD,WAAlC9X,KAAK4uB,OAAOi3C,aAAaihC,KAAoB,QAAU,SAC9FrhG,UAAWzF,KAAK4uB,OAAOnpB,UAAW4S,QAAS,gBAAW0N,EAAKwJ,OAAQxJ,EAAKgI,YAAahI,EAAK3iB,SAC1F4W,YAAaghI,EAAW,GAAKj1H,EAAKwJ,OAAO2yB,WACzCz3C,SAAUzK,KAAK4uB,OAAOnkB,SAAWzK,KAAK4uB,OAAOnkB,SAAW,IACzDyuB,EAAIxH,KAAKT,SACZjxB,KAAK+iC,IAAI1c,SAASN,EAAK3iB,SACe,UAAlCpD,KAAK4uB,OAAOi3C,aAAaihC,MACzB9mG,KAAK+iC,IAAI3/B,QAAQy1C,iBAAiB,UAAW74C,KAAK+7I,kBAG1DE,EAAgB/7I,UAAU67I,gBAAkB,SAAUh2H,GAClD,GAAiB,UAAbA,EAAKxlB,KAAgC,QAAbwlB,EAAKxlB,IAAe,CAC5C,IAAIsM,EAAM,IAAIqvI,MAAM,SAAU,CAAEC,SAAS,EAAOC,YAAY,IAE5Dp8I,KAAKyf,cAAc5S,KAG3BovI,EAAgB/7I,UAAUsS,QAAU,WAC5BxS,KAAK+iC,MAAQ/iC,KAAK+iC,IAAIjU,cACtB9uB,KAAK+iC,IAAI3/B,QAAQw4C,oBAAoB,UAAW57C,KAAK+7I,iBACrD/7I,KAAK+iC,IAAIvwB,YAGVypI,EAzCyB,CA0ClC,G,YCnDE,EAA4B,WAC5B,SAASI,EAAWztH,EAAQC,EAAgBgsE,GACxC76F,KAAK+lB,KAAO,GACZ/lB,KAAKs8I,mBAAqB,GAC1Bt8I,KAAK4uB,OAASA,EACd5uB,KAAK66F,SAAWA,EAChB76F,KAAK6uB,eAAiBA,EACtB7uB,KAAK64C,mBA8lBT,OA5lBAwjG,EAAWn8I,UAAUooC,aAAe,SAAUn7B,GAC1C,IAAI7M,EAAS6M,EAAE7M,OACXgyB,EAAOtyB,KAAK4uB,QACT,gBAAatuB,EAAQ,SACxB,gBAAa,gBAAaA,EAAQ,QAAuB,UAAUgL,KAAOgnB,EAAKlvB,QAAQkI,IAASgnB,EAAK8nB,YAClG,gBAAa95C,EAAQ,WAA8B,gBAAaA,EAAQ,sBAC3EN,KAAKg1F,SAAW,gBAAa10F,EAAQ,QAC/BqR,SAASrR,EAAOqhB,cAAcjX,aAAa,QAAwB,KAAO,EAC5E4nB,EAAKyqB,QACLzqB,EAAKq1E,WAAWzqE,YAI5Bm/G,EAAWn8I,UAAUszH,gBAAkB,SAAUrmH,GACzC,gBAAaA,EAAE7M,OAAQ,SAAqBN,KAAK4uB,OAAOi3C,aAAa02E,qBACrEv8I,KAAK4uB,OAAO+4E,WAAWqmB,UAAU,gBAAa7gH,EAAE7M,OAAQ,UAUhE+7I,EAAWn8I,UAAUs8I,aAAe,SAAUrvI,GAC1CnN,KAAK4uB,OAAOmuB,QAAS,EACrB,IAAIp8B,EAAS,SACb,OAAQxT,EAAE4gB,aACN,IAAK,QACK/tB,KAAK4uB,OAAOoxD,qBAA8D,aAAvChgF,KAAK4uB,OAAOk0D,kBAAkBt0E,OAC9DxO,KAAK4uB,OAAOwgF,oBACM,SAAnBjiG,EAAE,GAAKwT,IACP3gB,KAAK4uB,OAAOg0F,UAAUz1G,EAAE,UAGhCnN,KAAK4uB,OAAO3mB,QAAQ,OAAuB,eAAOkF,EAAG,CACjD4gB,YAAa,OACbvf,KAAM,UAEV,MACJ,IAAK,SACDxO,KAAK4uB,OAAO3mB,QAAQ,OAAuB,eAAOkF,EAAG,CACjD4gB,YAAa,SACbvf,KAAM,UAELxO,KAAK4uB,OAAOoxD,qBACbhgF,KAAK4uB,OAAOg0F,UAAU5iH,KAAKy8I,cAE/B,QAGZJ,EAAWn8I,UAAUw8I,YAAc,SAAUC,EAAYr3B,EAAQs3B,GAG7D,IAFA,IAAIC,EAAc78I,KAAK4uB,OAAOkN,0BAC1BghH,EAAmB,GACd97I,EAAI,EAAGA,EAAI67I,EAAYl8I,OAAQK,IACpC87I,EAAiBzwI,KAAK,eAAUwwI,EAAYlrI,SAAS3Q,EAAE4Q,WAAY,KAAM+qI,IAE7E,IAAI52H,EAAO,CACPg3H,WAAYF,EAAazE,gBAAiB0E,EAAkB/uH,YAAa,YACzEy3F,QAASm3B,EAAY3nD,SAAUh1F,KAAKg1F,SAAUxmF,KAAM,OAAQC,QAAQ,EACpEotB,eAAgBypF,GAAUA,EAAOzpF,eAAgBv7B,YAAQiL,EAAWqxI,SAAUA,GAElF,OAAO72H,GAEXs2H,EAAWn8I,UAAU8tH,UAAY,SAAU1uC,GACvC,IAAIj8E,EAAQrD,KACRsyB,EAAOtyB,KAAK4uB,OAEhB,GADA5uB,KAAKg1F,SAAWh1F,KAAKy8I,aAAe9qI,SAAS2tE,EAAG50E,aAAa,QAAwB,IACjF4nB,EAAKG,sBAAwBH,EAAK2nB,4BAA8B3nB,EAAKuF,wBAAyB,CAC9F,IAAI8J,EAAW,yBAA2B3hC,KAAKg1F,SAAW,KACtDgoD,EAAah9I,KAAK4uB,OAAOxrB,QAAQ8I,cAAcy1B,GACnD,IAAKq7G,EACD,OAGR,IAAI7vI,EAAI,CAAE0e,UAAMtgB,EAAWkB,MAAOzM,KAAKg1F,SAAU4nD,UAAU,GAE3D,GADA58I,KAAK4uB,OAAOhV,OAAO,QAAqCzM,GACpD,gBAAgBmlB,GAAO,CACvB,IAAI2qH,EAAO3qH,EAAKizF,oBAAoBjmC,EAAG50E,aAAa,aACpD1K,KAAKg9B,aAAeigH,EAAKpxH,UAEpB7rB,KAAK4uB,OAAO6D,sBAAwBzyB,KAAK4uB,OAAOqrB,4BACpDj6C,KAAK4uB,OAAOiJ,0BAA4B73B,KAAKg9B,aAC9Ch9B,KAAKg9B,aAAe7vB,EAAE0e,KAEhB7rB,KAAK4uB,OAAO6D,uBAClBzyB,KAAKg9B,aAAe,eAAO,GAAI,GAAI1K,EAAK+pE,wBAAwBr8F,KAAKg1F,WAAW,IAEpF,IAAI2nD,EAAa,eAAO,GAAI,GAAIxvI,EAAE0e,MAAQ7rB,KAAKg9B,cAAc,GAC7Dh9B,KAAKm0B,IAAMmrD,EAAG50E,aAAa,YAC3B,IAAI46G,EAAShzF,EAAKizF,oBAAoBvlH,KAAKm0B,KACvCpO,EAAO/lB,KAAK08I,YAAYC,EAAYr3B,EAAQn4G,EAAEyvI,UAClD72H,EAAKsR,IAAMioD,EACNv5D,EAAK62H,SAYN58I,KAAKk9I,kBAAkBn3H,EAAMu5D,IAX7Bt/E,KAAK4uB,OAAOhV,OAAO,QAAoC,CAAEua,IAAKn0B,KAAKm0B,IAAKgpH,SAAUn9I,KAAKg9B,aAAcogH,YAAap9I,KAAK08I,YAAY92I,KAAK5F,MAAO66F,SAAU76F,KAAK66F,WAC9JvoE,EAAKrqB,QAAQ,OAAkB8d,GAAM,SAAUs3H,GAC3CA,EAAc7uI,KAAO,cACrB8jB,EAAKrqB,QAAQ,OAAoBo1I,GAAe,SAAUC,GACjDA,EAAS7uI,QACVpL,EAAM65I,kBAAkBI,EAAUh+D,WAStD+8D,EAAWn8I,UAAUg9I,kBAAoB,SAAUI,EAAUh+D,GACzD,IAAIhtD,EAAOtyB,KAAK4uB,OAChB0D,EAAKyqB,QAAS,EACdugG,EAASjmH,IAAMimH,EAASjmH,IAAMimH,EAASjmH,IAAMioD,EACd,WAA3BhtD,EAAKuzC,aAAaihC,MAClBx0E,EAAKgzE,iBAEsB,WAA3BhzE,EAAKuzC,aAAaihC,MAAqBx0E,EAAK0xD,kBAC5C1xD,EAAK0xD,gBAAgBu5D,cAAe,EACpCD,EAASjmH,IAAInyB,UAAU4G,IAAI,iBAE/B9L,KAAK66F,SAAS99D,OAAOugH,GACrBt9I,KAAKm0B,IAAMmrD,EAAG50E,aAAa,YAC3B4nB,EAAKq1E,WAAW61C,sBAChBF,EAAS9uI,KAAO,iBAChB8jB,EAAKrqB,QAAQ,OAAuBq1I,GAChChrH,EAAKuzC,aAAajvB,UAClBtkB,EAAKq1E,WAAW61C,yBAAoBjyI,EAAW+xI,EAASrtG,KAAK0Y,cAAc,GAAGuhC,OAElFlqF,KAAK+lB,KAAOu3H,EACRt9I,KAAK4uB,OAAO20D,eACZvjF,KAAK4uB,OAAOhV,OAAO,QAAqB,CAAEsoG,KAAM,cAGxDm6B,EAAWn8I,UAAUmuH,UAAY,SAAU5hH,EAAOof,GAC9C,IAAIxoB,EAAQrD,KACRsyB,EAAOtyB,KAAK4uB,OAChB5uB,KAAKy8I,aAAehwI,EACpB,IAAIsZ,EAAO,CACPgI,YAAa,OAAQpN,OAAQ,OAAQnS,KAAM,OAAoBqd,KAAMA,EAAMpd,QAAQ,EACnFuuB,aAAc1K,EAAK+pE,wBAAwB1qF,SAASlF,EAAMmF,WAAY,KACtEylB,IAAK/E,EAAKk1E,cAAc/6F,IAG5B,GADA6lB,EAAK8qE,cACD9qE,EAAKuF,wBAAyB,CAC9B73B,KAAKm0B,IAAMpO,EAAKsR,IAAI3sB,aAAa,YACjC,IAAI+yI,EAAU9rI,SAASoU,EAAKsR,IAAI3sB,aAAa,iBAAkB,IAC/D1K,KAAK4uB,OAAOhV,OAAO,QAAoC,CAAEnN,MAAOgxI,IAEpEnrH,EAAK1Y,OAAO,QAAmBmM,GAC3BA,EAAKqK,QACLrK,EAAKqK,QAAQC,MAAK,WAAc,OAAOiC,EAAKhd,aAAc0c,OAAM,SAAU7kB,GAAK,OAAO9J,EAAMq6I,OAAOvwI,MAG9FmlB,EAAKuF,yBACNvF,EAAKhd,WAIjB+mI,EAAWn8I,UAAUg0H,iBAAmB,WACpC,IAAI5hG,EAAOtyB,KAAK4uB,OACZ0+D,EAAUh7D,EAAKq1E,WAAWusB,mBAC1BypB,EAAiB,CACjBR,SAAUn9I,KAAKg9B,aAAcswD,SAAS,EAAMswD,QAAS59I,KAAKy8I,aAAcoB,OAAQ79I,KAAK89I,eAGzF,OADAxrH,EAAK1Y,OAAO,QAA4B+jI,GAChCrwD,GAAWqwD,EAAerwD,SAEtC+uD,EAAWn8I,UAAUg9B,QAAU,WAC3B,IAAI75B,EAAQrD,KACRsyB,EAAOtyB,KAAK4uB,OAChB,GAAK5uB,KAAK4uB,OAAOmuB,QAAW/8C,KAAKk0H,mBAAjC,CAGA,IAAIyoB,EAAa,eAAO,GAAI,GAAI38I,KAAKg9B,cAAc,GAC/CjX,EAAO,eAAO/lB,KAAK+lB,KAAM,CACzBgI,YAAa,OAAQvf,KAAM,OAAoBqd,KAAM8wH,EAAYluI,QAAQ,EACzEuuB,aAAch9B,KAAKg9B,aAAcoqF,YAAa90F,EAAKo7E,iBAAkB7xE,eAAgB,KAErFkiH,EAAmC,WAA3BzrH,EAAKuzC,aAAaihC,KAC1Bk3C,EAAa,gBAAO,IAAM1rH,EAAKlvB,QAAQkI,GAAK,sBAAuBsC,UACnEqwI,EAAUF,EAAQC,EAAW9xI,cAAc,eAAiBomB,EAAKlvB,QAAQ+U,uBAAuB,cAAc,GAC9G0T,EAAO,CACPqyH,YAAa,eAAO,GAAI,GAAIl+I,KAAKg9B,cAAc,GAAOmhB,OAAO,EAAOy+F,UAAU,EAAO1/G,SAAS,GAElGl9B,KAAK4uB,OAAOhV,OAAO,QAAuBiS,IACrC7rB,KAAK4uB,OAAO6D,sBAAwBzyB,KAAK4uB,OAAOqrB,4BAA8Bj6C,KAAK4uB,OAAOiJ,0BACtD,WAAlC73B,KAAK4uB,OAAOi3C,aAAaihC,MAAqBrnG,OAAO2V,KAAKyW,EAAKqyH,aAAav9I,OAC3EX,KAAK4uB,OAAOmuB,SACZ/8C,KAAKs8I,mBAAqBK,EAAa52H,EAAK8F,KAAOA,EAAKqyH,aAI5DvB,EAAarqH,EAAKq1E,WAAWw2C,qBAAqBF,EAAStB,GAE/D,IAAIyB,EAAY,GAAG1wI,MAAMpK,KAAKgvB,EAAKlvB,QAAQ+U,uBAAuB,SAAqBxX,OAIvF,GAHKkrB,EAAKsyB,QAAS1+C,OAAO2V,KAAKpV,KAAKs8I,oBAAoB37I,QAAWy9I,IAC/DA,EAAY,GAEZL,EAAQC,EAAW7lI,uBAAuB,QAAoBxX,OAASy9I,EACvEr4H,EAAKpF,OAAS,OACd2R,EAAKrqB,QAAQ,OAAoB8d,GAAM,SAAUs4H,GACzCA,EAAY5vI,SAGoC,YAAhDpL,EAAMurB,OAAO6rB,iBAAiBC,eAC9BpoB,EAAK8qE,cAE2C,YAAhD/5F,EAAMurB,OAAO6rB,iBAAiBC,eAC9Br3C,EAAMurB,OAAOyuE,cAEjB/qE,EAAK1Y,OAAO,QAAmBykI,YAUnC,GANAt4H,EAAKpF,OAAS,MACdoF,EAAKqhG,YAAc,EACnBrhG,EAAKtZ,MAAQzM,KAAK89I,cAClBxrH,EAAK1Y,OAAO,QAAiC,IAC7C0Y,EAAK1Y,OAAO,QAAqBmM,GACjC/lB,KAAK89I,cAAgB,KACjB/3H,EAAKtX,OACL,SAIZ4tI,EAAWn8I,UAAUo+I,gBAAkB,WACnC,IAAIhsH,EAAOtyB,KAAK4uB,OAChB0D,EAAKq1E,WAAW42C,iBAChBjsH,EAAKq1E,WAAW62C,cAChBx+I,KAAK4uB,OAAOhV,OAAO,QAAsB,KAE7CyiI,EAAWn8I,UAAUu+I,YAAc,SAAU14H,GACzC,IAAI1iB,EAAQrD,KACR+lB,EAAKqK,QACLrK,EAAKqK,QAAQC,MAAK,SAAUljB,GAAK,OAAO9J,EAAMq7I,OAAOvxI,EAAG4Y,MAAUiM,OAAM,SAAU7kB,GAAK,OAAO9J,EAAMq6I,OAAOvwI,MAG3GnN,KAAK2+I,YAAY54H,EAAK8F,KAAM9F,IAGpCs2H,EAAWn8I,UAAUw+I,OAAS,SAAUvxI,EAAG4Y,GACvC/lB,KAAK2+I,YAAYxxI,EAAG4Y,IAExBs2H,EAAWn8I,UAAUw9I,OAAS,SAAUvwI,GACpCnN,KAAK4+I,YAAYzxI,IAErBkvI,EAAWn8I,UAAU2+I,sBAAwB,SAAUhzH,GAC9C7rB,KAAK4uB,OAAO6D,sBAAyBzyB,KAAK4uB,OAAOiJ,0BAClD73B,KAAK4uB,OAAOytE,wBAAwBr8F,KAAKy8I,cAAgB5wH,IAGjEwwH,EAAWn8I,UAAU4+I,eAAiB,SAAU/4H,GACxC/lB,KAAK4uB,OAAO+4E,WAAWuxC,UAAYl5I,KAAK4uB,OAAO+4E,WAAWuxC,QAAQpqH,cAClE9uB,KAAKs+I,kBACLt+I,KAAK++I,iBACiC,WAAlC/+I,KAAK4uB,OAAOi3C,aAAaihC,MAAqC,QAAhB/gF,EAAKpF,QACnD3gB,KAAK4uB,OAAOo1D,iBACZhkF,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,iBAAiBhH,UAAUC,OAAO,kBAIhFk3I,EAAWn8I,UAAUy+I,YAAc,SAAUxxI,EAAG4Y,GAC5C,IAAK,eAAkB5Y,MAAQA,aAAavN,OAAQ,CAChD,IAAI4lH,EAAU,UACdz/F,EAAK8F,KAAO,eAAO,GAAI,eAAO,GAAI9F,EAAK,GAAKy/F,GAAUz/F,EAAK8F,MAAO1e,GAatE,GAXAnN,KAAK8+I,eAAe/4H,GACpB/lB,KAAK4uB,OAAO3mB,QAAQ,OAAwB8d,GAC5CA,EAAKvX,KAAO,OACZxO,KAAK4uB,OAAOmuB,QAAS,EACrB/8C,KAAKm/E,WAAWp5D,EAAK8F,MACrB7rB,KAAK4uB,OAAOhV,OAAO,QAAiCmM,GACpD/lB,KAAK4uB,OAAO+4E,WAAWwvC,aAAapxH,EAAKsR,KACzCr3B,KAAK4uB,OAAO+4E,WAAWq3C,WAAY,EACnCh/I,KAAK6+I,sBAAsB94H,EAAK8F,MAChC7rB,KAAKi/I,iBACLj/I,KAAKy8I,aAAe,KAChBz8I,KAAK4uB,OAAO8D,eAAiB1yB,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,QAC5DX,KAAK4uB,OAAO+D,cAAcm/F,kBAAmB,CA4BhD,IA3BA,IAAIotB,EAAUn5H,EAAKsR,IACfF,EAAOn3B,KAAK4uB,OAAO6yD,gBACnB09D,EAAaD,EAAQx0I,aAAa,YAClC00I,EAAkBp/I,KAAK4uB,OAAO22F,oBAAoB45B,GAClDxuH,EAAU,SAAU3vB,GAEpB,IAAI8iF,EAAUjzD,EACdsG,EAAOA,EAAKlD,QAAO,SAAUpI,GACzB,IAAI0lG,EAAO1lG,EAAKi0D,WAAaj0D,IAASuzH,EACtC,GAAI7tB,EAAM,CAMN,IALA,IAAI8tB,EAAgBv7D,EAAQl1D,OAAO+D,cAAcxD,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK3N,MAAM,KAEvFq7I,EAAYzzH,EAAKA,KAAKwzH,EAAc,IAEpCE,EAAYx5H,EAAK8F,KAAKwzH,EAAc,IAC/B/nH,EAAI,EAAGA,EAAI+nH,EAAc1+I,OAAQ22B,IACtCgoH,EAAYA,EAAUD,EAAc/nH,IACpCioH,EAAYA,EAAUF,EAAc/nH,IAExC,OAAOi6F,GAAQ+tB,IAAcC,EAG7B,OAAOhuB,MAIf1gG,EAAS7wB,KACJgB,EAAI,EAAGA,EAAIhB,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,OAAQK,IAC1D2vB,EAAQ3vB,GAEZ,IAAIw+I,EAAgBroH,EAAK,GACpB,eAAkBioH,IAAqB,eAAkBI,IAC1DJ,EAAgB1+F,YAAc8+F,EAAc9+F,UAGvC1gD,KAAK4uB,OAAOwI,WAAWz2B,QAC5BX,KAAK4uB,OAAO6wH,gBAAgBnqI,QAAQyQ,EAAK8F,KAAM7rB,KAAK4uB,OAAO+D,cAAc6F,kBAAoBzS,EAAKsR,SAAM9rB,GAHxGvL,KAAK4uB,OAAO,eAAe8wH,kBAAkBN,EAAiBI,QAM7Dx/I,KAAK4uB,OAAOwI,WAAWz2B,QAC5BX,KAAK4uB,OAAO6wH,gBAAgBnqI,QAAQyQ,EAAK8F,KAAM7rB,KAAK4uB,OAAO+D,cAAc6F,kBAAoBzS,EAAKsR,SAAM9rB,GAE5GvL,KAAK4uB,OAAO3mB,QAAQ,OAAuB8d,KACrC/lB,KAAK4uB,OAAOoxD,qBAA8D,aAAvChgF,KAAK4uB,OAAOk0D,kBAAkBt0E,OAC9DxO,KAAK4uB,OAAOwgF,qBAAwBpvG,KAAK4uB,OAAOk0D,kBAAkB68D,eACjC,WAAlC3/I,KAAK4uB,OAAOi3C,aAAaihC,MACzB9mG,KAAK4uB,OAAOg0F,UAAU5iH,KAAKg1F,UAAY,EAAIh1F,KAAKg1F,SAAWh1F,KAAKy8I,cAGpEz8I,KAAK4uB,OAAOwI,WAAWz2B,QAAUX,KAAK4uB,OAAO+D,cAAc6F,mBAAqBx4B,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,SAC9GX,KAAK4uB,OAAOo2E,YAAY46C,4BAA2B,GAAMj/I,QACtDX,KAAK4uB,OAAOo2E,YAAY46C,4BAA2B,GAAOj/I,UAGrEX,KAAK4uB,OAAOgxE,gBACZ5/F,KAAK4uB,OAAOyxE,gBAEhBg8C,EAAWn8I,UAAU2/I,UAAY,YACxB7/I,KAAK8/I,UAAY9/I,KAAK4uB,OAAOmuB,QAC9B/8C,KAAK++I,iBAEL/+I,KAAK8/I,WACL9/I,KAAK8/I,SAAS36I,SACdnF,KAAK8/I,SAAW,KAChB9/I,KAAK+/I,YAAY76I,UAAUC,OAAO,gBAElCnF,KAAKggJ,cACLhgJ,KAAKggJ,YAAY76I,SACbnF,KAAKigJ,QACLjgJ,KAAKigJ,OAAO/6I,UAAUC,OAAO,iBAIzCk3I,EAAWn8I,UAAU++I,eAAiB,WAClC,IAAI1nH,EAAOv3B,KAAK4uB,OAAO8H,aACnB12B,KAAK4uB,OAAOi3C,aAAajvB,UAA8C,WAAlC52C,KAAK4uB,OAAOi3C,aAAaihC,MAC9D,gBAAqB9mG,KAAK4uB,OAAOxrB,QAAQkI,GAAK,uBAAwB,WAAYtL,KAAK4uB,OAAOi3C,cAElG,IAAK,IAAI7kE,EAAI,EAAGA,EAAIu2B,EAAK52B,OAAQK,IAAK,CAClC,IAAIk4B,EAAM3B,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAClCsnB,EAAI0d,UACJ,gBAAqB52C,KAAK4uB,OAAOxrB,QAAQkI,GAAK4tB,EAAI/E,IAAK,WAAY+E,GAAK,GAExEA,EAAIie,cACJ,gBAAqBn3C,KAAK4uB,OAAOxrB,QAAQkI,GAAK4tB,EAAI/E,IAAM,eAAgB,eAAgB+E,KAIpGmjH,EAAWn8I,UAAU0+I,YAAc,SAAUzxI,GACzCnN,KAAK4uB,OAAOgxE,gBACZ5/F,KAAK4uB,OAAO3mB,QAAQ,OAAsB,CAAGs4F,MAAOpzF,IACpDnN,KAAK4uB,OAAOyxE,cACZrgG,KAAK4uB,OAAOqD,IAAI,gBAAiB,CAAEsuE,MAAOpzF,KAE9CkvI,EAAWn8I,UAAUggJ,YAAc,WAC/B,IAAI5qI,GAAU,EACVq8B,EAAY3xC,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,eAKlD,OAJKlM,KAAK4uB,OAAO6D,uBAAwBzyB,KAAK4uB,OAAOorE,uBAAuBC,aACnC,WAAlCj6F,KAAK4uB,OAAOi3C,aAAaihC,MAAsBn1D,IAClDr8B,GAAU,GAEPA,GAEX+mI,EAAWn8I,UAAUi/E,WAAa,SAAUtzD,GACxC,IAAIwL,EAAM,IAAI,OAAYr3B,KAAK6uB,eAAgB,KAAM7uB,KAAK4uB,QACtD02F,EAAStlH,KAAK4uB,OAAO22F,oBAAoBvlH,KAAKm0B,KAClD,GAAImxF,EAAQ,CACRA,EAAOppF,QAAUrQ,EACjB7rB,KAAK4uB,OAAOhV,OAAO,QAA4B,CAAEiS,KAAMA,IACvD,gBAAmBy5F,EAAQtlH,KAAK4uB,OAAO6B,uBAAwB60F,EAAOppF,SAClEl8B,KAAKkgJ,eACL7oH,EAAI/hB,QAAQgwG,EAAQtlH,KAAK4uB,OAAO8H,cAAc,GAGlD,IADA,IAAI4oD,EAAK,GAAG5xE,MAAMpK,KAAKtD,KAAK4uB,OAAOxrB,QAAQsf,iBAAiB,mBAAqB4iG,EAAO74G,MAAQ,OACvFzL,EAAI,EAAGA,EAAIs+E,EAAG3+E,OAAQK,IAE3B,GADA,eAAqBs+E,EAAG3tE,SAAS3Q,EAAE4Q,WAAY,MAC3C5R,KAAK4uB,OAAOqrB,4BACZqlC,EAAG3tE,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,iBAAiB,+CAA+C/hB,OAG/F,IAFA,IAAI42B,EAAOv3B,KAAK4uB,OAAO8H,aACnBypH,EAAiB,GAAGzyI,MAAMpK,KAAKg8E,EAAG3tE,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,iBAAiB,+CAC1E4U,EAAI,EAAGA,EAAI6oH,EAAex/I,OAAQ22B,IACvC,GAAI6oH,EAAexuI,SAAS2lB,EAAE1lB,WAAY,KAAK1M,UAAUmB,SAAS,gBAC9D85I,EAAexuI,SAAS2lB,EAAE1lB,WAAY,KAAK7K,MAAM/B,KAAQuyB,EAAK5lB,SAAS2lB,EAAE1lB,WAAY,KAAK8qG,OAAS18G,KAAK4uB,OAAO89E,WAAc,UAE5H,GAAIyzC,EAAexuI,SAAS2lB,EAAE1lB,WAAY,KAAK1M,UAAUmB,SAAS,iBAAkB,CACrF,IAAI6uF,EAAMvjF,SAASwuI,EAAexuI,SAAS2lB,EAAE1lB,WAAY,KAAKlH,aAAa,iBAAkB,IAC7Fy1I,EAAexuI,SAAS2lB,EAAE1lB,WAAY,KAAK7K,MAAM6rD,MAAUr7B,EAAK5lB,SAASujF,EAAItjF,WAAY,KAAK8qG,OAAS18G,KAAK4uB,OAAO89E,WAAe,UAGlIyzC,EAAexuI,SAAS2lB,EAAE1lB,WAAY,KAAK7K,MAAM/B,KAAQhF,KAAK4uB,OAAO60F,qBAAqB,QACtFzjH,KAAK4uB,OAAO89E,WAAc,KAC9ByzC,EAAexuI,SAAS2lB,EAAE1lB,WAAY,KAAK7K,MAAM6rD,MAAS5yD,KAAK4uB,OAAO60F,qBAAqB,SACvFzjH,KAAK4uB,OAAO89E,WAAc,OAOtD2vC,EAAWn8I,UAAU6kG,UAAY,WAC7B,IAAI1hG,EAAQrD,KACZ,GAAKA,KAAK4uB,OAAOmuB,OAAjB,CAGA,IAAIzqB,EAAOtyB,KAAK4uB,OACZ7I,EAAO,eAAO/lB,KAAK+lB,KAAM,CACzBgI,YAAa,SAAUvf,KAAM,OAAoBC,QAAQ,EAAOod,KAAM7rB,KAAKg9B,aAAcoqF,YAAa90F,EAAKo7E,mBAE/Gp7E,EAAK1Y,OAAO,QAAgCmM,GAC5C/lB,KAAKi/I,iBACL3sH,EAAKrqB,QAAQ,OAAoB8d,GAAM,SAAUq6H,GAC7C,IAAIA,EAAc3xI,OAAlB,CAGuC,WAAnCpL,EAAMurB,OAAOi3C,aAAaihC,MAC1BzjG,EAAMurB,OAAOhV,OAAO,QAAsB,IAE9C0Y,EAAKyqB,QAAS,EACd15C,EAAM07I,iBACNqB,EAAc5xI,KAAO,OACU,WAA3B8jB,EAAKuzC,aAAaihC,MAClBzjG,EAAM87E,WAAWihE,EAAcv0H,MAEnC,IAAIw0H,EAAa/tH,EAAKK,cAAc6F,mBAAqBlG,EAAKK,cAAcxD,QAAQxuB,SAC5E2xB,EAAKssB,kBAAkB1yC,cAAc,iBACxComB,EAAKssB,kBAAkB1yC,cAAc,kBACrComB,EAAKssB,kBAAkB1yC,cAAc,aAAgBm0I,GACtD/tH,EAAK4nF,aAAa/e,WAES,WAA3B7oE,EAAKuzC,aAAaihC,MAClBx0E,EAAKswF,UAAUv/G,EAAM2xF,UAEzB1iE,EAAKrqB,QAAQ,OAAuBm4I,SAG5C/D,EAAWn8I,UAAU+tH,UAAY,SAAUpiG,EAAMpf,GAC7C,IAAIpJ,EAAQrD,KACRsyB,EAAOtyB,KAAK4uB,OAEhB,GADA5uB,KAAK89I,cAAgBrxI,EAAS,eAAkBA,GAAiB,EAARA,EACrDof,EACAyG,EAAK1Y,OAAO,QAAqB,CAC7BmU,YAAa,OAAQvf,KAAM,OAAoBqd,KAAMA,EAAMu7F,YAAa,EAAGzmG,OAAQ,MAAOlU,MAAOA,SAIzG,IAAI6lB,EAAKyqB,OAAT,CAGA/8C,KAAKg9B,aAAe,GACpBh9B,KAAKm0B,IAAM,GACX,IAAIoD,EAAOjF,EAAKoE,aACZ8uF,EAAU,CAAE04B,YAAa,GAAItB,UAAU,GAC3C58I,KAAK4uB,OAAOhV,OAAO,QAAuB4rG,GAC1C,IAAK,IAAIxkH,EAAI,EAAGA,EAAIu2B,EAAK52B,OAAQK,IACzBwkH,EAAQo3B,UAGRrlH,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKigB,QACa,WAA1C0F,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKpD,OACjC+oB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK0uI,aAAetgJ,KAAK4uB,OAAO1jB,SAASqsB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK0uI,eAE1G,OAASzgI,SAAS0X,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKigB,MAAO0F,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK0uI,aAActgJ,KAAKg9B,eAGtH,IAAIjX,EAAO,CACPtX,QAAQ,EAAOotB,eAAgB,GAC/B9N,YAAa,MAAOlC,KAAM7rB,KAAKg9B,aAAcxuB,KAAM,OAAoB/B,MAAOA,EAC9E+4G,QAASxlH,KAAKg9B,aAAc18B,YAAQiL,EAAWqxI,SAAUp3B,EAAQo3B,WAEhE58I,KAAK4uB,OAAO6D,sBAAwBzyB,KAAK4uB,OAAOqrB,4BAA8Bj6C,KAAK4uB,OAAOorE,uBAAuBC,cAC/Gx6F,OAAO2V,KAAKowG,EAAQ04B,aAAav9I,SACpColB,EAAK8F,KAAO9F,EAAKy/F,QAAUA,EAAQ04B,aAElCn4H,EAAK62H,SAUN58I,KAAKugJ,iBAAiBx6H,IATtB/lB,KAAK4uB,OAAOhV,OAAO,QAAoC,CAAEua,IAAKn0B,KAAKm0B,IAAKgpH,SAAUn9I,KAAKg9B,aAAcogH,YAAap9I,KAAK08I,YAAY92I,KAAK5F,MAAO66F,SAAU76F,KAAK66F,WAC9JvoE,EAAKrqB,QAAQ,OAAoB8d,GAAM,SAAUy6H,GACzCA,EAAQ/xI,QAGZpL,EAAMk9I,iBAAiBC,SAOnCnE,EAAWn8I,UAAUqgJ,iBAAmB,SAAUC,GAC9C,IAAIluH,EAAOtyB,KAAK4uB,OAChB0D,EAAKyqB,QAAS,EACiB,WAA3BzqB,EAAKuzC,aAAaihC,MAClBx0E,EAAKgzE,iBAETtlG,KAAK66F,SAASm8C,OAAOwJ,GACrBluH,EAAKq1E,WAAW61C,sBAChBgD,EAAQhyI,KAAO,OACfgyI,EAAQnpH,IAAM/E,EAAKlvB,QAAQ8I,cAAc,IAAM,QAC/ComB,EAAKrqB,QAAQ,OAAuBu4I,GAChCluH,EAAKuzC,aAAajvB,UAClBtkB,EAAKq1E,WAAW61C,yBAAoBjyI,EAAWi1I,EAAQvwG,KAAK0Y,cAAc,GAAGuhC,OAEjFlqF,KAAK+lB,KAAOy6H,GAEhBnE,EAAWn8I,UAAU4tH,aAAe,SAAUC,EAAWliG,GAErD,GADA7rB,KAAKy8I,aAAez8I,KAAK4uB,OAAO8+E,iBAC5B7hF,EAAM,CACNA,EAAQA,aAAgBjsB,MAASisB,EAAO,CAACA,GACzC,IAAIyG,EAAOtyB,KAAK4uB,OACZ6xH,EAAUhhJ,OAAO2V,KAAKyW,GAAMlrB,OAChCotH,EAAYA,GAAa/tH,KAAK4uB,OAAOkN,0BAA0B,GAW/D,IAVA,IAAIukD,EAAU,SAAUr/E,GACpB,IAAI6C,EACA68I,EACAC,EAAYruH,EAAK8pE,gBAAgBpiE,MAAK,SAAUklE,GAEhD,OADAwhD,EAAYxhD,EACLrzE,EAAKla,SAAS3Q,EAAE4Q,WAAY,OAAS,eAAUm8G,EAAW7uB,IAAWrzE,EAAKla,SAAS3Q,EAAE4Q,WAAY,OAASstF,KAErHrzE,EAAKla,SAAS3Q,EAAE4Q,WAAY,KAAO+uI,EAAYD,EAAY70H,EAAKla,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAKm8G,GAC7FliG,EAAKla,SAAS3Q,EAAE4Q,WAAY,MAAQ/N,EAAK,GAAIA,EAAGkqH,GAAaliG,EAAKla,SAAS3Q,EAAE4Q,WAAY,KAAM/N,IAE9F7C,EAAI,EAAGA,EAAIy/I,EAASz/I,IACzBq/E,EAAQr/E,GAGhB,IAAI+kB,EAAO,CACPgI,YAAa,SAAUvf,KAAM,OAAoBqtB,eAAgB,GACjEhQ,KAAMA,GAAc7rB,KAAK4uB,OAAOy2E,qBAAsB/lB,GAAIt/E,KAAK4uB,OAAO86F,kBAAmBj7G,QAAQ,GAMrG,GAJK,eAAkBzO,KAAK4uB,OAAOq+E,mBAC/BlnF,EAAK8F,KAAK,GACN7rB,KAAK4uB,OAAO22F,oBAAoBvlH,KAAK4uB,OAAO44E,cAAcxnG,KAAK4uB,OAAOq+E,iBAAiBviG,aAAa,aAAamhB,OAEpH7rB,KAAK4uB,OAAO6D,sBAAwBzyB,KAAK4uB,OAAOqrB,6BAA+Bl0B,EAAK8F,KAAKlrB,OAAS,EAAG,CACtG,IAAIwzB,EAAMn0B,KAAK4uB,OAAO86F,kBAAkB,GAAGh/G,aAAa,YACxDqb,EAAK8F,KAAO,CAAC7rB,KAAK4uB,OAAO22F,oBAAoBpxF,GAAKtI,MAEtD7rB,KAAK4uB,OAAOhV,OAAO,QAAqBmM,IAE5Cs2H,EAAWn8I,UAAU6+I,eAAiB,WAIlC,IAHA,IAAIzsH,EAAOtyB,KAAK4uB,OACZgyH,EAAc,GAAGlzI,MAAMpK,KAAKgvB,EAAKlvB,QAAQ+U,uBAAuB,SAChE0oI,EAAe,GAAGnzI,MAAMpK,KAAKgvB,EAAKlvB,QAAQ+U,uBAAuB,SAC5DnX,EAAI,EAAGA,EAAI4/I,EAAYjgJ,OAAQK,IACpC,gBAAO4/I,EAAYjvI,SAAS3Q,EAAE4Q,WAAY,MAE9C,IAAS5Q,EAAI,EAAGA,EAAI6/I,EAAalgJ,OAAQK,IACrC6/I,EAAalvI,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAUC,OAAO,SAOlEk3I,EAAWn8I,UAAU24C,iBAAmB,WAChC74C,KAAK4uB,OAAOE,cAGhB9uB,KAAKmkG,YAAc,CAAC,CAAEz1F,MAAO,QAAmBiqF,QAAS34F,KAAKy+I,aAC1D,CAAE/vI,MAAO,QAAkBiqF,QAAS34F,KAAKwzH,iBACzC,CAAE9kH,MAAO,OAAciqF,QAAS34F,KAAKsoC,cACrC,CAAE55B,MAAO,QAAoBiqF,QAAS34F,KAAK8+I,gBAC3C,CAAEpwI,MAAO,QAAiBiqF,QAAS34F,KAAKwzH,iBACxC,CAAE9kH,MAAO,QAAuBiqF,QAAS34F,KAAKw8I,cAC9C,CAAE9tI,MAAO,QAAqBiqF,QAAS34F,KAAKw8I,cAC5C,CAAE9tI,MAAO,QAAsBiqF,QAAS34F,KAAK+kG,WAC7C,CAAEr2F,MAAO,QAAoBiqF,QAAS34F,KAAK6/I,YAC/C,eAAuB7/I,KAAK4uB,OAAQ5uB,KAAKmkG,aAAa,EAAMnkG,QAMhEq8I,EAAWn8I,UAAU07C,oBAAsB,WACnC57C,KAAK4uB,OAAOE,aAGhB,eAAuB9uB,KAAK4uB,OAAQ5uB,KAAKmkG,aAAa,IAM1Dk4C,EAAWn8I,UAAUsS,QAAU,WAC3BxS,KAAK47C,sBACL57C,KAAK66F,SAASroF,WAEX6pI,EArmBoB,GCb3B,EAAwC,WACxC,IAAI/8I,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAmBxC+gJ,EAA4B,SAAUj+I,GAEtC,SAASi+I,EAAWlyH,EAAQC,EAAgBgsE,GACxC,IAAIx3F,EAAQR,EAAOS,KAAKtD,KAAM4uB,EAAQC,IAAmB7uB,KAIzD,OAHAqD,EAAMurB,OAASA,EACfvrB,EAAMwrB,eAAiBA,EACvBxrB,EAAMw3F,SAAWA,EACVx3F,EAoBX,OA1BA,EAAUy9I,EAAYj+I,GAQtBi+I,EAAW5gJ,UAAU6kG,UAAY,WAC7BliG,EAAO3C,UAAU6kG,UAAUzhG,KAAKtD,OAEpC8gJ,EAAW5gJ,UAAU+tH,UAAY,SAAUpiG,EAAMpf,GAC7C5J,EAAO3C,UAAU+tH,UAAU3qH,KAAKtD,KAAM6rB,EAAMpf,IAEhDq0I,EAAW5gJ,UAAUg9B,QAAU,WAC3Br6B,EAAO3C,UAAUg9B,QAAQ55B,KAAKtD,OAElC8gJ,EAAW5gJ,UAAUmuH,UAAY,SAAU5hH,EAAOof,GAC9ChpB,EAAO3C,UAAUmuH,UAAU/qH,KAAKtD,KAAMyM,EAAOof,IAEjDi1H,EAAW5gJ,UAAU4tH,aAAe,SAAUC,EAAWliG,GACrDhpB,EAAO3C,UAAU4tH,aAAaxqH,KAAKtD,KAAM+tH,EAAWliG,IAExDi1H,EAAW5gJ,UAAU8tH,UAAY,SAAU1uC,GACvCz8E,EAAO3C,UAAU8tH,UAAU1qH,KAAKtD,KAAMs/E,IAEnCwhE,EA3BoB,CA4B7B,G,oCC5BE,EAA2B,WAC3B,SAASC,EAAUnyH,EAAQC,EAAgBgsE,GACvC76F,KAAKghJ,YAAc,GACnBhhJ,KAAKihJ,aAAe,GACpBjhJ,KAAKkhJ,UAAY,GACjBlhJ,KAAKmhJ,UAAW,EAChBnhJ,KAAKohJ,iBAAkB,EACvBphJ,KAAKqhJ,eAAgB,EACrBrhJ,KAAKshJ,iBAAmB,GAExBthJ,KAAKuhJ,aAAc,EACnBvhJ,KAAKwhJ,qBAAsB,EAC3BxhJ,KAAK4uB,OAASA,EACd5uB,KAAK6uB,eAAiBA,EACtB7uB,KAAK66F,SAAWA,EAChB76F,KAAK+f,MAAQ8O,EAAeuxD,WAAW,SACvCpgF,KAAK64C,mBA0iCT,OApiCAkoG,EAAU7gJ,UAAU24C,iBAAmB,WAC/B74C,KAAK4uB,OAAOE,cAGhB9uB,KAAKmkG,YAAc,CAAC,CAAEz1F,MAAO,OAAciqF,QAAS34F,KAAKsoC,cACrD,CAAE55B,MAAO,QAAiBiqF,QAAS34F,KAAKwzH,iBACxC,CAAE9kH,MAAO,OAA0BiqF,QAAS34F,KAAKyhJ,qBACjD,CAAE/yI,MAAO,OAAoBiqF,QAAS34F,KAAK0hJ,eAC3C,CAAEhzI,MAAO,QAAkBiqF,QAAS34F,KAAKwzH,iBACzC,CAAE9kH,MAAO,QAAmBiqF,QAAS34F,KAAKkmG,gBAC1C,CAAEx3F,MAAO,QAAwBiqF,QAAS34F,KAAK2hJ,iBAC/C,CAAEjzI,MAAO,QAAgBiqF,QAAS34F,KAAKwS,UAC3C,eAAuBxS,KAAK4uB,OAAQ5uB,KAAKmkG,aAAa,EAAMnkG,MAC5D,OAAa8L,IAAI9L,KAAK4uB,OAAOxrB,QAAS,YAAapD,KAAKizE,iBAAkBjzE,MAC1EA,KAAK4zH,kBAAoB5zH,KAAK4hJ,UAAUh8I,KAAK5F,MAC7CA,KAAK6hJ,oBAAsB7hJ,KAAK8hJ,YAAYl8I,KAAK5F,MACjDA,KAAK4uB,OAAOiqB,iBAAiB,QAAkB74C,KAAK4zH,mBACpD5zH,KAAK4uB,OAAOiqB,iBAAiB,OAAoB74C,KAAK6hJ,uBAM1Dd,EAAU7gJ,UAAU07C,oBAAsB,WAClC57C,KAAK4uB,OAAOE,cAGhB,eAAuB9uB,KAAK4uB,OAAQ5uB,KAAKmkG,aAAa,GACtD,OAAah/F,OAAOnF,KAAK4uB,OAAOxrB,QAAS,YAAapD,KAAKizE,kBAC3DjzE,KAAK4uB,OAAOgtB,oBAAoB,QAAkB57C,KAAK4zH,mBACvD5zH,KAAK4uB,OAAOgtB,oBAAoB,OAAoB57C,KAAK6hJ,uBAE7Dd,EAAU7gJ,UAAU4hJ,YAAc,WAC9B9hJ,KAAK4uB,OAAO4xE,YAAYuhD,gBAE5BhB,EAAU7gJ,UAAU0hJ,UAAY,WAC5B5hJ,KAAK4uB,OAAOhV,OAAO,QAAuB,KAM9CmnI,EAAU7gJ,UAAUsS,QAAU,WAC1BxS,KAAK47C,uBAETmlG,EAAU7gJ,UAAU+yE,iBAAmB,SAAU9lE,GACxC,eAAkBnN,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,gBAIrDlM,KAAKgiJ,sBAAmBz2I,EAHxBvL,KAAKgiJ,iBAAmB70I,EAAE7M,QAMlCygJ,EAAU7gJ,UAAUooC,aAAe,SAAUn7B,GACpC,gBAAaA,EAAE7M,OAAQN,KAAK4uB,OAAOxrB,QAAQkI,GAAK,QAAQ,MACpDtL,KAAK4uB,OAAOmuB,QAAU,eAAQ/8C,KAAKiwC,KAAM,QAAU,eAAQ9iC,EAAE7M,OAAQ,OACnE,eAAkBN,KAAKgiJ,mBAAqBhiJ,KAAKgiJ,mBAAqB70I,EAAE7M,UAC3EN,KAAKouH,WACLpuH,KAAK2hJ,mBAEL,gBAAax0I,EAAE7M,OAAQ,UAAsBN,KAAK4uB,OAAOmuB,QACzD/8C,KAAKiiJ,WAAW90I,EAAE7M,UAI9BygJ,EAAU7gJ,UAAUszH,gBAAkB,SAAUrmH,GAC5C,IAAI7M,EAAS,gBAAa6M,EAAE7M,OAAQ,QAChCg/E,EAAK,gBAAanyE,EAAE7M,OAAQ,QAC5B00F,EAAW1V,GAAM3tE,SAAS2tE,EAAG50E,aAAa,QAAwB,IAClEqlF,EAAWzvF,GAAUqR,SAASrR,EAAOoK,aAAa,QAAwB,IACzE,eAAkBpK,IAAY,eAAkB00F,IAAcv5E,MAAMs0E,IACjEzvF,EAAOqhB,cAAczc,UAAUmB,SAAS,UAC5CrG,KAAK4uB,OAAO8H,aAAa/kB,SAASo+E,EAASn+E,WAAY,KAAK+jC,cAC5D31C,KAAKmuH,SAASn5B,EAAUh1F,KAAK4uB,OAAO8H,aAAa/kB,SAASo+E,EAASn+E,WAAY,KAAKigB,MAAO7xB,KAAKkiJ,SAASltD,KAGjH+rD,EAAU7gJ,UAAUuhJ,oBAAsB,SAAUt0I,GAC5CnN,KAAK4uB,OAAOmuB,QAAU/8C,KAAKmiJ,oBAC1Bh1I,EAAEi1I,SAAY,CAAC,MAAO,WAAY,QAAS,cAAcp+I,QAAQmJ,EAAEk1I,QAAQ1hI,SAAW,KACvFxT,EAAEsB,QAAS,EACPtB,EAAEi1I,QACFj1I,EAAEm1I,UAAUpvI,iBAGZ/F,EAAEk1I,QAAQnvI,mBAItB6tI,EAAU7gJ,UAAUwhJ,cAAgB,SAAUv0I,GAC1C,IAAI7E,IAAU6E,EAAEqC,UAAU+yI,YAAcp1I,EAAEqC,UAAUoyC,eAAiB5hD,KAAK4uB,OAAOwrB,YAAcjtC,EAAEqC,UAAUgtC,UAM3G,GALIx8C,KAAK4uB,OAAO4xE,YAAYgiD,SACxBxiJ,KAAKwhJ,oBAAsBxhJ,KAAK4uB,OAAO4xE,YAAYgiD,OAAOC,OAAOxgD,QAAQrwF,aAAe5R,KAAK0iJ,4BACxF9wI,WACL5R,KAAK2iJ,YAAc,GAAGj1I,MAAMpK,KAAKtD,KAAK4uB,OAAO4xE,YAAYgiD,OAAO7wD,WAAWx6D,MAAMnzB,QAAQ,eAAQmJ,EAAE/J,QAAS,QAE3G+J,EAAEy1I,QAASt6I,EAAhB,CAMA,IAAIzE,EAAKsJ,EAAEqC,UAAU6jF,QAAS2B,EAAWnxF,EAAG,GAAIikG,EAAYjkG,EAAG,GAC3Dg/I,EAAc11I,EAAE/J,QAAQsH,aAAa,iBAAmBiH,SAASxE,EAAE/J,QAAQsH,aAAa,kBAAoBo9F,EAC5G+6C,IAAgB/6C,IAChBA,EAAY+6C,GAEZ7iJ,KAAK4uB,OAAOwrB,YAAcjtC,EAAEqC,UAAU+yI,YACtCvtD,IAAch1F,KAAK4uB,OAAOorB,aAAa9tC,cAAc,gBAAkB,EAAIlM,KAAK4uB,OAAOwrB,YACnFp6C,KAAK4uB,OAAOyrB,mBAAmB33B,iBAAiB,kBAAkB/hB,QAE1E,IAAIo8C,EAAS/8C,KAAK4uB,OAAOmuB,OACzB,IAAK/8C,KAAK4uB,OAAOxrB,QAAQ+U,uBAAuB,gBAAgBxX,OAE5D,OADAo8C,EAASA,IAAW/8C,KAAKmiJ,kBACjBh1I,EAAEk1I,QAAQ1hI,QACd,IAAK,MACL,IAAK,WAED,IAAImhC,EAAS9hD,KAAK4uB,OAAOyxB,iBAAmBrgD,KAAK4uB,OAAO01D,WAAa,EACjEtkF,KAAK4uB,OAAOyxB,iBAAmBrgD,KAAK4uB,OAAO01D,WAAa,EAAI,EAE5DprD,EAAMl5B,KAAK4uB,OAAO8H,aAAaoxE,EAAYhmD,GAC3C5oB,IAAQl5B,KAAK4uB,OAAOmuB,QACpB/8C,KAAKmuH,SAASn5B,EAAU97D,EAAIrH,QAE5BkrB,GAAU/8C,KAAK4uB,OAAOk0H,uBACtB9iJ,KAAK+iJ,kBAAkB/tD,EAAU8S,GAErC,MACJ,IAAK,QACL,IAAK,aACD36F,EAAEk1I,QAAQnvI,iBAEV,IAAI6S,EAAO,CAAEtX,QAAQ,EAAO4zI,QAASl1I,EAAEk1I,SACvCriJ,KAAK4uB,OAAOhV,OAAO,sBAAuBmM,IACrCA,EAAKtX,QAAUsuC,GAChB/8C,KAAKmuH,SAASn5B,EAAUh1F,KAAKghJ,YAAYzxH,OAAOsC,OAEpD,MACJ,IAAK,KACD7xB,KAAK+iJ,kBAAkB/tD,EAAU8S,GACjC9nG,KAAK+f,MAAMA,QACX,YA7CH/f,KAAK4uB,OAAOmuB,QAAUz0C,GACvBtI,KAAKouH,YAgDjB2yB,EAAU7gJ,UAAUgiJ,SAAW,SAAUz1I,GACrC,OAAOzM,KAAK4uB,OAAOs5E,cAAcv2F,SAASlF,EAAMmF,WAAY,KAAK1M,UAAUmB,SAAS,kBAExF06I,EAAU7gJ,UAAU6iJ,kBAAoB,SAAUh8B,EAAQ1iC,GACtDrkF,KAAKghJ,YAAYhsD,SAAW+xB,EAC5B/mH,KAAKghJ,YAAYl5C,UAAYzjB,EAC7BrkF,KAAKmuH,SAASpH,EAAQ/mH,KAAK4uB,OAAO8H,aAAa/kB,SAAS0yE,EAAQzyE,WAAY,KAAKigB,MAAO7xB,KAAKkiJ,SAASn7B,KAE1Gg6B,EAAU7gJ,UAAU6kG,UAAY,WAC5B,IAAIzyE,EAAOtyB,KAAK4uB,OACZuI,EAAOn3B,KAAK4uB,OAAO6yD,gBACnB15C,EAAW,CAAEt5B,QAAQ,EAAO21F,aAAcpkG,KAAKsuH,mBAEnD,GADAh8F,EAAK1Y,OAAO,OAA0BmuB,IAClCA,EAASt5B,OAAb,CAGI6jB,EAAKyqB,QACL/8C,KAAKouH,UAAS,GAElBpuH,KAAKgjJ,SAAU,EACf1wH,EAAKgzE,iBACL,IAAK,IAAItkG,EAAI,EAAGA,EAAIm2B,EAAKx2B,OAAQK,IAAK,CAClC,IAAIiiJ,GAAW,EACXC,EAAU/rH,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAKsxI,QAC/CD,EAAWjjJ,KAAKmjJ,0BAA0BhsH,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAMsxI,GACxED,GACA9rH,EAAKzqB,OAAO1L,EAAG,GAEfiiJ,GACAjiJ,IAGHsxB,EAAKssB,kBAAkB1yC,cAAc,aACtComB,EAAK4nF,aAAa3b,iBAEtB,IAAIx4E,EAAO,CACPgI,YAAa,cAAeoJ,KAAMn3B,KAAK4uB,OAAO6yD,iBAElDnvD,EAAK1Y,OAAO,OAAoB,CAC5Bud,KAAMn3B,KAAK4uB,OAAO6yD,gBAAgB9gF,OAASX,KAAK4uB,OAAO6yD,gBACnD,CAAC,IAAI,OAAI,CAAE3B,WAAW,EAAMr+B,MAAO,CAAC,IAAI,OAAK,CAAEG,YAAY,EAAMhrB,SAAS,UAElFtE,EAAKswF,UAAU5iH,KAAKghJ,YAAYhsD,UAChCh1F,KAAKojJ,gBACL9wH,EAAK1Y,OAAO,QAAuB,IACnC5Z,KAAK4uB,OAAOhV,OAAO,QAAuB,IAC1CmM,EAAO,CAAEgI,YAAa,cAAeoJ,KAAMn3B,KAAK4uB,OAAO6yD,iBACvDnvD,EAAKrqB,QAAQ,OAAoB8d,KAErCg7H,EAAU7gJ,UAAUijJ,0BAA4B,SAAU9rH,EAAK6rH,GAC3D,IAAI5wH,EAAOtyB,KAAK4uB,OACZmkE,EAAc,IAAI,OAAY/yF,KAAK6uB,eAAgB,KAAM7uB,KAAK4uB,QAC9Dy0H,GAAqB,EACzB,GAAIH,EAAS,CACT7rH,EAAI6rH,QAAUA,EACd,IAAI5jE,EAAKhtD,EAAKymG,mBAAmB1hG,EAAIlD,KACrC,GAAImrD,IACIA,EAAGp6E,UAAUmB,SAAS,kBACtB,gBAAOi5E,GACP+jE,GAAqB,IAGrB,gBAAmBhsH,EAAKr3B,KAAK4uB,OAAO6B,uBAAwB4G,EAAIxL,aACzDwL,EAAI6E,eACJ7E,EAAI3F,KACX2F,EAAI6rH,SAAU,EACd,eAAU5jE,EAAI,GAAI,CAAC,cAAe,gBAClCyT,EAAYz9E,QAAQ+hB,EAAK/E,EAAKoE,cAAc,IAE5C12B,KAAK4uB,OAAOwI,WAAWz2B,OAAS,GAAG,CACnC,IAAI6N,EAAO,OACPijB,EAAW,GACfA,EAAS,GAAKjjB,GAAQ,SACtBxO,KAAK4uB,OAAOhV,OAAO,QAA8B6X,GAC7CzxB,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,OAAS,GAC3CX,KAAK4uB,OAAOhV,OAAO,QAAwB6X,IAK3D,OAAO4xH,GAEXtC,EAAU7gJ,UAAU4tH,aAAe,SAAUC,EAAWliG,GACpD7rB,KAAKouH,WACDpuH,KAAKmiJ,mBACLniJ,KAAKouH,UAAS,GAElBpuH,KAAKgjJ,SAAU,EACfhjJ,KAAKsjJ,WAAWv1B,EAAWliG,GACvB7rB,KAAK4uB,OAAOwI,WAAWz2B,OAAS,IAChCX,KAAK4uB,OAAOhV,OAAO,QAA8B,IAC7C5Z,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,OAAS,GAC3CX,KAAK4uB,OAAOhV,OAAO,QAAwB,MAIvDmnI,EAAU7gJ,UAAU+tH,UAAY,SAAUpiG,GACtC7rB,KAAKujJ,WAAW13H,IAEpBk1H,EAAU7gJ,UAAUg9B,QAAU,WACtBl9B,KAAK4uB,OAAOmuB,QAAU/8C,KAAKmiJ,mBAG/BniJ,KAAKwjJ,aAETzC,EAAU7gJ,UAAUiiJ,gBAAkB,WAClC,OAAOniJ,KAAK4uB,OAAO+4E,WAAWuxC,UAAYl5I,KAAK4uB,OAAO+4E,WAAWuxC,QAAQ1xE,YAE7Eu5E,EAAU7gJ,UAAUsjJ,UAAY,WAC5B,IAAIlxH,EAAOtyB,KAAK4uB,OACZwN,EAAiB,iBACrB,GAAI9J,EAAK0tD,oBAAqB,CAC1B,IAAIyjE,EAAcnxH,EAAKlvB,QAAQ8I,cAAc,qBAAqByV,cAC9D8hI,EAAYv+I,UAAUmB,SAAS,wBAC/BisB,EAAKwF,aAAaqkE,kBAAoB7pE,EAAK8pE,gBAAgBz7F,QAC3D,gBAAY,CAAC8iJ,GAAc,CAAC,wBAIpC,GADAzjJ,KAAKouH,aACD97F,EAAKyqB,QAAU/8C,KAAK2hJ,mBAAqBrvH,EAAKyqB,QAAlD,CAGA,IAAI7gB,EAAUl8B,KAAKsuH,kBACwB,aAAvCtuH,KAAK4uB,OAAOk0D,kBAAkBt0E,MAAuB0tB,EAAQ,GAAKE,GAAgBz7B,QAClFX,KAAK4uB,OAAOk0D,kBAAkBC,mBAC9B7mD,EAAQ,GAAKE,GAAkBp8B,KAAK0jJ,mBACpC1jJ,KAAK0jJ,mBAAqB,IAE9B,IAAIzmH,EAAW,CACXZ,eAAgBr8B,KAAK4uB,OAAO6yD,gBACvBxtD,QAAO,SAAUoD,GAAO,OAAOA,EAAI6rH,UAAoD,IAAzC,CAAC,MAAO,UAAUl/I,QAAQqzB,EAAI3F,SAC5E7qB,KAAI,SAAUwwB,GAAO,OAAOA,EAAIxL,SAErC9F,EAAO,CAAEq+E,aAAcloE,EAASztB,QAAQ,GAC5C6jB,EAAKrqB,QAAQ,OAAwB8d,GAAM,SAAU49H,GAC7CA,EAAoBl1I,SAGxB6jB,EAAK8qE,cACL9qE,EAAK1Y,OAAO,OAAiB,CAAEsiB,QAASA,EAASe,SAAUA,UAGnE8jH,EAAU7gJ,UAAUouH,gBAAkB,WAOlC,IANA,IAAIpyF,EAAU,CACVC,aAAc,GACdC,eAAgB,GAChBC,eAAgB,IAEhBlF,EAAOn3B,KAAK4uB,OAAO6yD,gBACd5zE,EAAK,EAAG4nF,EAASt+D,EAAMtpB,EAAK4nF,EAAO90F,OAAQkN,IAAM,CACtD,IAAIwpB,EAAMo+D,EAAO5nF,GACjB,GAAIwpB,EAAI6rH,QACJ,OAAQ7rH,EAAI3F,MACR,IAAK,MACDwK,EAAQC,aAAa9vB,KAAKgrB,EAAI6E,SAC9B,MACJ,IAAK,SACDA,EAAQE,eAAe/vB,KAAKgrB,EAAIxL,MAChC,MACJ,QACIqQ,EAAQG,eAAehwB,KAAKgrB,EAAI6E,UAIhD,OAAOA,GAOX6kH,EAAU7gJ,UAAU0jJ,uBAAyB,SAAUzvH,GAGnD,IAFA,IAAIgD,EAAOn3B,KAAK4uB,OAAO6yD,gBACnBzgF,EAAI,EACCiiB,EAAMkU,EAAKx2B,OAAQK,EAAIiiB,EAAKjiB,IACjC,GAAIm2B,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAKuiB,MAAQA,EACzC,MAGRgD,EAAKzqB,OAAO1L,EAAG,IAQnB+/I,EAAU7gJ,UAAUi8H,aAAe,SAAU9kG,GACzC,IAAI/E,EAAOtyB,KAAK4uB,OACZi1H,EAA6C,QAArCvxH,EAAKuzC,aAAaoxE,eAC1B6M,EAAWzsH,EAAIb,QACfqtH,EACAvxH,EAAKmvD,gBAAgB8sD,QAAQuV,GAG7BxxH,EAAKmvD,gBAAgBp1E,KAAKy3I,IAIlC/C,EAAU7gJ,UAAUojJ,WAAa,SAAUv1B,EAAWliG,GAClD,IAAIxoB,EAAQrD,KACZA,KAAK0jJ,mBAAqB,GAC1B,IAAIpxH,EAAOtyB,KAAK4uB,OACZniB,EAAQ6lB,EAAKo7E,iBACb7jC,EAAev3C,EAAKo3F,kBACpB3jG,EAAO,CACPg3H,WAAY/8I,KAAK4uB,OAAOkN,0BACxBk5D,SAAUvoF,EACV+4G,QAAS35F,GAAcyG,EAAK+yE,qBAAqB,GACjD52F,QAAQ,GAGRsX,EAAKsR,IADLxL,EACWyG,EAAKq1E,WAAWo8C,aAAezxH,EAAKymG,mBAAmBzmG,EAAKq1E,WAAWo8C,cAC5EzxH,EAAK0/D,UAAU1/D,EAAK+pE,wBAAwBr4F,QAAQ6nB,IAG/Cg+C,EAAa,GAEvB9jD,EAAKsR,KAIV/E,EAAKrqB,QAAQ,OAA0B8d,GAAM,SAAUi+H,GACnD,IAAIA,EAAsBv1I,OAA1B,CAOA,GAJApL,EAAMqgJ,mBAAqBpxH,EAAK+yE,qBAChC/yE,EAAKgzE,iBACL0+C,EAAsB3sH,IAAM2sH,EAAsB3sH,IAC9C2sH,EAAsB3sH,IAAMxL,EAAOyG,EAAK0/D,UAAUrgF,SAASlF,EAAMmF,WAAY,KAAOi4D,EAAa,GACzE,IAAxBA,EAAalpE,QAAgBkrB,EAAM,CACnC,IAAIsI,EAAM6vH,EAAsB3sH,IAAI3sB,aAAa,YAEjD,GADAypB,EAAMtI,GAAQxoB,EAAMurB,OAAO+4E,WAAWo8C,aAAe5vH,EAAM9wB,EAAMurB,OAAO+4E,WAAWo8C,aAAe5vH,EAC9F6vH,EAAsB3sH,IAAInyB,UAAUmB,SAAS,iBAC7ChD,EAAMugJ,uBAAuBzvH,GAC7B,gBAAO6vH,EAAsB3sH,SAE5B,CACD,IAAIiuF,EAAShzF,EAAKizF,oBAAoBpxF,GACtCmxF,EAAO49B,SAAU,EACjB59B,EAAO5zF,KAAO,SACd,eAAUsyH,EAAsB3sH,IAAK,CAAC,cAAe,eAAgB,IACjE/E,EAAK8nB,YAAc3tC,EAAQ6lB,EAAK8nB,YAAc9nB,EAAK41E,cAAcvnG,QAAU2xB,EAAK8nB,YAChF9nB,EAAKohE,iBAAiBxnF,cAAc,QAAgBxH,YAAY4tB,EAAKk1E,cAAcl1E,EAAK8nB,WAAa,WAGtG4pG,EAAsB3sH,QAE5B,CACGxL,IACApf,EAAQkF,SAASqyI,EAAsB3sH,IAAI3sB,aAAa,QAAwB,KAEpF,IAAK,IAAI1J,EAAI,EAAGA,EAAI6oE,EAAalpE,OAAQK,IAAK,CAC1C,IAAIijJ,EAAWp6E,EAAal4D,SAAS3Q,EAAE4Q,WAAY,KAAKlH,aAAa,YACrE,GAAIm/D,EAAal4D,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAUmB,SAAS,iBAC5DhD,EAAMugJ,uBAAuBK,GAC7B,gBAAOp6E,EAAal4D,SAAS3Q,EAAE4Q,WAAY,UAE1C,CACD,eAAUi4D,EAAal4D,SAAS3Q,EAAE4Q,WAAY,KAAM,CAAC,cAAe,eAAgB,IACpF,IAAIw1G,EAAc90F,EAAKizF,oBAAoB0+B,GAC3C78B,EAAY87B,SAAU,EACtB97B,EAAY11F,KAAO,gBACZm4C,EAAal4D,SAAS3Q,EAAE4Q,WAAY,KACvC0gB,EAAK8nB,YAAc3tC,EAAQ6lB,EAAK8nB,YAAc9nB,EAAK41E,cAAcvnG,QAAU2xB,EAAK8nB,YAChF9nB,EAAKohE,iBAAiBxnF,cAAc,QAAgBxH,YAAY4tB,EAAKk1E,cAAcl1E,EAAK8nB,WAAa,MAKrH/2C,EAAM+/I,gBACFv3H,IACAyG,EAAKq1E,WAAWo8C,kBAAex4I,GAE9B+mB,EAAK0tD,qBACN1tD,EAAKswF,UAAUn2G,GAEnB6lB,EAAKrqB,QAAQ,OAAoB+7I,GACjC1xH,EAAK1Y,OAAO,OAAoB,CAAEud,KAAM9zB,EAAMurB,OAAO6yD,kBACrDnvD,EAAK1Y,OAAO,QAAuB,SAG3CmnI,EAAU7gJ,UAAUkjJ,cAAgB,WAIhC,IAHA,IAAI9wH,EAAOtyB,KAAK4uB,OACZuI,EAAO7E,EAAKszF,gBAAe,GAC3Bs+B,EAAc5xH,EAAKmvD,gBAAgBxtD,QAAO,SAAUoD,GAAO,OAAQA,EAAImhG,eAClEx3H,EAAI,EAAGs2B,EAAI,EAAGrU,EAAMkU,EAAKx2B,OAAQK,EAAIiiB,EAAKjiB,IAC3Cm2B,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAUmB,SAAS,UAAkB8wB,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAUmB,SAAS,gBAC1H8wB,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAKjH,aAAa,OAAuB2sB,EAAE1lB,YACvEulB,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAKjH,aAAa,QAAwB2sB,EAAI,GAAG1lB,YAC7EsyI,EAAYvyI,SAAS3Q,EAAE4Q,WAAY,KAAKnF,MAAQ6qB,EAChDA,MAGAH,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAKhH,gBAAgB,QACjDusB,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAKhH,gBAAgB,QACjDs5I,EAAYvyI,SAAS3Q,EAAE4Q,WAAY,KAAKnF,OAAS,IAI7Ds0I,EAAU7gJ,UAAUqjJ,WAAa,SAAU13H,GACvC,IAAIxoB,EAAQrD,KACRsyB,EAAOtyB,KAAK4uB,OAChB,GAAK0D,EAAKuzC,aAAa0oC,YAAvB,CAUA,GAJIj8E,EAAKyqB,SACL/8C,KAAKouH,WACLpuH,KAAK4uB,OAAOhV,OAAO,QAAwB,KAE3C5Z,KAAKqhJ,cAAe,CAEpB,IADA,IAAI8C,EAAiB7xH,EAAKgnE,oBACjBt4F,EAAI,EAAGA,EAAImjJ,EAAexjJ,OAAQK,IACvC,GAAImjJ,EAAexyI,SAAS3Q,EAAE4Q,WAAY,KAAKytF,iBAC3C8kD,EAAexyI,SAAS3Q,EAAE4Q,WAAY,KAAKytF,gBAAgB,YAAa,CACxE,IAAIt8D,EAAM,CAAElR,MAAQsyH,EAAexyI,SAAS3Q,EAAE4Q,WAAY,KAAK,SAAUlE,QAAS22E,QAASrjF,GAC3FhB,KAAKshJ,iBAAiBj1I,KAAK02B,GAGnC/iC,KAAKqhJ,eAAgB,EAEzBrhJ,KAAK4uB,OAAOxrB,QAAQ8B,UAAU4G,IAAI,aAClC,IAAIs4I,EAAcv4H,GAAc7rB,KAAKqkJ,iBACjCt+H,EAAO,CACPq+H,YAAaA,EACbrH,WAAYzqH,EAAKwJ,0BACjBrtB,QAAQ,GAEZ6jB,EAAKrqB,QAAQ,OAAuB8d,GAAM,SAAUu+H,GAChD,IAAIA,EAAmB71I,OAAvB,CAGApL,EAAM2/I,SAAU,EAChB1wH,EAAKgzE,iBACL,IAKIpsE,EACAzsB,EANA4qB,EAAM,IAAI,OAAYh0B,EAAMwrB,eAAgB,KAAMxrB,EAAMurB,QACxD5N,EAAQ,IAAI,OAAkB3d,EAAMurB,QACpCstG,EAAYl7G,EAAMs/B,aAAa,CAACgkG,EAAmBF,cACnD9kE,EAAKjoD,EAAI1jB,OAAOuoH,EAAU,GAAI5pG,EAAKoE,cACvC,eAAqB4oD,GAGrB,IAAK,IAAIt+E,EAAI,EAAGA,EAAIqC,EAAMurB,OAAO+D,cAAcxD,QAAQxuB,OAAQK,IAC3Ds+E,EAAG95D,aAAaniB,EAAMurB,OAAOrqB,cAAc,KAAM,CAAEC,UAAW,iBAAmB86E,EAAGjjC,YACpF6/E,EAAU,GAAGz6E,MAAM8sF,QAAQ,IAAI,OAAK,CAAE1sF,SAAU,OAASN,UAE7D,IAAInP,EAAQ9f,EAAKssB,kBAAkB1yC,cAAc,QAEjD,GADAozE,EAAGp6E,UAAU4G,IAAI,iBACbsmC,EAAMlmC,cAAc,eAAgB,CACpC,IAAIivF,EAAW/oD,EAAMlmC,cAAc,eACnCivF,EAAS1nD,WAAWoB,YAAYsmD,GAC5B7oE,EAAK8nB,YAAc9nB,EAAKlvB,QAAQ8I,cAAc,uBAC9ComB,EAAKlvB,QAAQ8I,cAAc,sBAAsBhH,UAAUC,OAAO,qBAItEitC,EADA9f,EAAK8nB,YAAmD,QAArC9nB,EAAKuzC,aAAaoxE,eAC7B3kH,EAAKohE,iBAAiBxnF,cAAc,QAGpComB,EAAKssB,kBAAkB1yC,cAAc,QAEA,QAA7C7I,EAAMurB,OAAOi3C,aAAaoxE,eAC1B7kG,EAAM5sB,aAAa85D,EAAIltC,EAAMiK,YAG7BjK,EAAM1tC,YAAY46E,GAEtB,eAAS,GAAG5xE,MAAMpK,KAAKg8E,EAAGnnE,uBAAuB,SAAoB,CAAC,gBACtE+jH,EAAU,GAAGgnB,SAAU,EACvBhnB,EAAU,GAAGhgG,QAAU,eAAO,GAAI,GAAIggG,EAAU,GAAGrwG,MAAM,GACzDqwG,EAAU,GAAGxqG,KAAO,MACpBruB,EAAM84H,aAAaD,EAAU,IAC7B74H,EAAM+/I,gBACN//I,EAAM0c,MAAMwkI,iBACZjyH,EAAK1Y,OAAO,OAAiB,CAAEud,KAAM9zB,EAAMurB,OAAO6yD,kBAClD,IAAIvlD,EAAU74B,EAAMirH,kBAChBk2B,EAASnhJ,EAAMohJ,iBAC8B,QAA7CphJ,EAAMurB,OAAOi3C,aAAaoxE,eAC1B3kH,EAAKswF,UAAU,GAGftwF,EAAKswF,UAAU4hC,GAEd34H,IACDpf,EAAQpJ,EAAMqhJ,qBAAqB,GAAG,GACtCxrH,EAAM5G,EAAKoE,aAAa/kB,SAASlF,EAAMmF,WAAY,KACF,QAA7CvO,EAAMurB,OAAOi3C,aAAaoxE,eAC1B5zI,EAAM8qH,SAAS,EAAGj1F,EAAIrH,OAAO,GAG7BxuB,EAAM8qH,SAASq2B,EAAQtrH,EAAIrH,OAAO,IAGtCxuB,EAAMurB,OAAOwI,WAAWz2B,OAAS,IAAMkrB,GAAQqQ,EAAQ,QAAuBv7B,SAC9E0C,EAAMurB,OAAOhV,OAAO,QAA8B,IAEtD,IAAIs4H,EAAQ,CACRkS,YAAaE,EAAmBF,YAAa/sH,IAAKioD,EAClDq4D,aAAcz+G,EAAKwlF,YAAajyG,EAAOswI,WAAYuH,EAAmBvH,WACtEp7F,KAAO,eAAkBl1C,QAAoDlB,EAA3C+zE,EAAG79B,MAAM9vC,SAASlF,EAAMmF,WAAY,MAE1E0gB,EAAKrqB,QAAQ,OAAiBiqI,YAnG1B5/G,EAAKyqB,QACL/8C,KAAKouH,YAqGjB2yB,EAAU7gJ,UAAUwkJ,qBAAuB,SAAUhmC,EAAavgE,EAAOwmG,GAIrE,IAHA,IAEIC,EAFArtH,EAAOv3B,KAAK4uB,OAAO8H,aACnBm3F,EAAWt2F,EAAK52B,OAEXK,EAAI09G,EAAa19G,EAAI6sH,EAAU7sH,IAKpC,GAJA4jJ,IAAaD,GAAY,eAAkBptH,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKytF,iBAIxElhD,KAAW5mB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKglC,UAAYrf,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKigB,QACtF0F,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK+jC,cAAgBpe,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKglB,WACnFW,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKuoI,aAAc5iH,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK+kB,gBAAkBiuH,EACpG,OAAO5jJ,EAGf,OAAQ,GAEZ+/I,EAAU7gJ,UAAUmkJ,eAAiB,WAIjC,IAHA,IAAI/xH,EAAOtyB,KAAK4uB,OACZ/C,EAAO,GACPg5H,EAAU,CAAE,OAAU,EAAG,OAAU,KAAM,SAAW,EAAO,KAAQ,KAAM,SAAY,MAChFh3I,EAAK,EAAGhK,EAAMyuB,EAAgB,YAAGzkB,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC5D,IAAIqrB,EAAMr1B,EAAGgK,GACTqrB,EAAIrH,OACJ,gBAASqH,EAAIrH,MAAOpyB,OAAO2V,KAAK8jB,GAAKl1B,QAAQ,iBAAmB,EAAIk1B,EAAIonH,aAAeuE,EAAQ3rH,EAAI1qB,MAAOqd,GAGlH,OAAOA,GAEXk1H,EAAU7gJ,UAAU+hJ,WAAa,SAAU3hJ,GACvC,IAAI+2I,EAAO,EACPr3I,KAAK4uB,OAAO8D,gBACZ2kH,EAAOr3I,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,QAE7CX,KAAKghJ,YAAYl5C,UAAYxnG,EAAOwnG,UAAYuvC,EAChDr3I,KAAKghJ,YAAYhsD,SAAWrjF,SAASrR,EAAOoK,aAAa,SAAU,KAEvEq2I,EAAU7gJ,UAAUiuH,SAAW,SAAU1hH,EAAOolB,EAAOssB,GACnD,IAAI7rB,EAAOtyB,KAAK4uB,OACZsK,EAAM5G,EAAKoG,iBAAiB7G,GAChC7xB,KAAKyM,MAAQA,EACbzM,KAAK6xB,MAAQA,EACb7xB,KAAKm+C,MAAQA,EACb,IAAI01E,EAAYvhG,EAAKyqB,UAAY/8C,KAAKghJ,YAAYzxH,OAAOsC,QAAUA,GAC3D7xB,KAAKghJ,YAAYhsD,WAAavoF,GAASzM,KAAK4uB,OAAOs5E,cAAcvnG,OAAS,IAAM8L,GAASzM,KAAKwhJ,qBAClGlvH,EAAKuzC,aAAalwB,gBACbk+E,IAAc36F,EAAIyc,eAAkBzc,EAAIyc,cAAgBrjB,EAAKkuE,YAAYgiD,QACvElwH,EAAKkuE,YAAYgiD,OAAO7wD,WAAWx6D,KAAKn3B,KAAK2iJ,cAC7CrwH,EAAKkuE,YAAYgiD,OAAO7wD,WAAWx6D,KAAKn3B,KAAK2iJ,aAAaz9I,UAAUmB,SAAS,kBAChFrG,KAAK8kJ,eAAer4I,EAAOolB,EAAOssB,GAE7B01E,IACL7zH,KAAKmhJ,UAAW,EAChBnhJ,KAAKouH,cAIjB2yB,EAAU7gJ,UAAU4kJ,eAAiB,SAAUr4I,EAAOolB,EAAOssB,GACzD,IAAI96C,EAAQrD,KACRsyB,EAAOtyB,KAAK4uB,OACZsK,EAAM5G,EAAKoG,iBAAiB7G,GAC5Bzc,EAAOkd,EAAKwJ,0BAChB,IAAIxJ,EAAKyqB,OAAT,CAGA,IAAIyoE,EAAU,eAAO,GAAI,GAAIxlH,KAAK+kJ,eAAet4I,IAAQ,GACrD4qB,EAAM/E,EAAK41E,cAAcv2F,SAASlF,EAAMmF,WAAY,KAExD,GADA4zG,EAAU,eAAO,GAAI,GAAIxlH,KAAK+kJ,eAAet4I,IAAQ,GAChD2I,EAAK,KAAO8jB,EAAIrH,QAAUwF,EAAInyB,UAAUmB,SAAS,kBAAqB6yB,EAAI/J,SAC1E+J,EAAIvC,cAAgBuC,EAAIihH,YAAejhH,EAAIwd,SAC5C12C,KAAK4uB,OAAOk0H,sBAAuB,MAFvC,CAKA9iJ,KAAK4uB,OAAOk0H,sBAAuB,EACnC9iJ,KAAK4uB,OAAOxrB,QAAQ8B,UAAU4G,IAAI,aAClC,IAAIw5G,EAAShzF,EAAKizF,oBAAoBluF,EAAI3sB,aAAa,aACnD+2C,EAAQ,GAAG/zC,MAAM5K,MAAMu0B,EAAIoqB,OAC3B17B,EAAO,CACP4S,WAAYO,EAAIrH,MAAO+H,cAAe,eAAkBV,EAAInH,iBAC5DgrH,WAAY3nI,EAAMowG,QAASA,EAC3BnmB,gBAAiB,eAAO,GAAInmE,EAAImmE,gBAAkBnmE,EAAImmE,gBAAkB,IACxE5mF,MAAO,eAAUygB,EAAIrH,MAAO2zF,GAC5Bh3G,KAAO2vC,EAAiB,MAAT,OAAgB1vC,QAAQ,EACvCotB,eAAgBypF,GAAUA,EAAOzpF,gBAErC9V,EAAK47B,KAAOF,EAAMzhD,KAAKglJ,YAAYvjG,EAAOzhD,KAAKilJ,WAAW/rH,EAAI/E,OAC9DpO,EAAKsR,IAAMA,EACXtR,EAAK4xH,aAAez+G,EACfnT,EAAK47B,MAGVrvB,EAAKrqB,QAAQ,OAAiB8d,GAAM,SAAUm/H,GACtCA,EAAaz2I,SAGjBy2I,EAAavjG,KAAOujG,EAAavjG,KAAOujG,EAAavjG,KAAOF,EAAMp+C,EAAM2hJ,YAAYvjG,EAAOp+C,EAAM4hJ,WAAW/rH,EAAI/E,OAChH+wH,EAAa7tH,IAAM6tH,EAAa7tH,IAAM6tH,EAAa7tH,IAAMA,EACzD6tH,EAAavN,aAAeuN,EAAavN,aAAeuN,EAAavN,aAAez+G,EAEpF71B,EAAM29I,YAAc,CAChBx7B,QAASA,EAASj2F,OAAQ2J,EAAKzgB,MAAOysI,EAAazsI,MAAOmhB,aAAcsrH,EAAatrH,aAAco7D,SAAUvoF,EAC7Gq7F,UAAWn2F,SAASuzI,EAAavjG,KAAKj3C,aAAa,QAAwB,IAC3EmxB,eAAgBqpH,EAAarpH,gBAE7BqpH,EAAavjG,KAAKz8C,UAAUmB,SAAS,iBACrChD,EAAM8hJ,WAAY,EAClBD,EAAavjG,KAAKz8C,UAAUC,OAAO,gBAEvCmtB,EAAKyqB,QAAS,EACdzqB,EAAKgzE,iBACAhzE,EAAK0tD,qBAAwB1tD,EAAK88E,oBACnC98E,EAAKswF,UAAUv/G,EAAM29I,YAAYhsD,UAAU,GAE/C3xF,EAAMw3F,SAAS99D,OAAOmoH,GACtB7hJ,EAAMurB,OAAOhV,OAAO,OAA8BsrI,GAClD7hJ,EAAM4sC,KAAO,gBAAO,IAAM3d,EAAKlvB,QAAQkI,GAAK,WAAYgnB,EAAKlvB,SAC7DkvB,EAAKq1E,WAAW61C,oBAAoB,CAACtkH,IACrC71B,EAAMurB,OAAOxrB,QAAQ8I,cAAc,gBAAgBnF,MAAMC,QAAU,cAG3E+5I,EAAU7gJ,UAAU0nG,WAAa,SAAU5S,EAAUnjE,EAAOpZ,GACxD,IAAI6Z,EAAOtyB,KAAK4uB,OACZsK,EAAM5G,EAAKoG,iBAAiB7G,GAC5BplB,EAAQ6lB,EAAK09D,sBAAsBn+D,GACvC,GAAIqH,IAAQA,EAAIvC,cAAgBuC,EAAIyc,aAAc,CAC9C,IAAI6hG,EAAO,eAAwBx3I,KAAK4uB,OAAQsK,EAAK87D,EAAUvoF,GAC3D24I,EAAW9yH,EAAKizF,oBAAoBiyB,EAAK71H,cAAcjX,aAAa,aACxE,GAAI4nB,EAAKyqB,SACHqoG,EAASlpH,YAAezjB,aAAiBE,OAASysI,EAASv5H,KAAK,GAAKgG,KAAWpZ,GAC5EA,aAAiBE,MAAS,IAAIA,KAAKysI,EAASv5H,KAAK,GAAKgG,IAAQjgB,aAAe,IAAI+G,KAAKF,GAAO7G,aAClGwzI,EAASlpH,YAAezjB,aAAiBE,OAASysI,EAASlpH,QAAQ,GAAKrK,KAAWpZ,GAC9EA,aAAiBE,MAAS,IAAIA,KAAKysI,EAASlpH,QAAQ,GAAKrK,IAAQjgB,aAAe,IAAI+G,KAAKF,GAAO7G,YAAe,CACrH5R,KAAKunH,UAAUiwB,EAAMt+G,EAAKksH,EAAU3sI,GACpC,IAAIqoE,EAAe9gF,KAAK4uB,OAAOmyD,eAAiB/gF,KAAK4uB,OAAOmyD,cAAcC,eACtEhhF,KAAK4uB,OAAOmyD,cAAcC,cAAc74E,QAC5C,IAAMnI,KAAK4uB,OAAOzmB,SAAWnI,KAAK4uB,OAAOqyD,oBAAwBH,GAC7D9gF,KAAK4uB,OAAOmyD,cAAcC,cAAcC,qBAAwB/nD,EAAI0d,SAAU,CAC9E,IAAIuqC,EAAYnhF,KACZqlJ,EAAerlJ,KAAKslJ,WACxBnkE,EAAUvyD,OAAOwyD,iBAAgB,WAC7BD,EAAUvyD,OAAO3mB,QAAQ,QAAsB,CAC3C05C,KAAM0jG,GAAgB7N,EAAMjoH,OAAQ2J,EAAKrN,KAAMu5H,EAASlpH,kBAI1Dl8B,KAAK4uB,OAAOzmB,SAAW24E,IAAiB5nD,EAAI0d,UAClD52C,KAAK4uB,OAAOwyD,kBACZphF,KAAK4uB,OAAO3mB,QAAQ,QAAsB,CACtC05C,KAAM3hD,KAAKslJ,YAAc9N,EAAMjoH,OAAQ2J,EAAKrN,KAAMu5H,EAASlpH,WAI/Dl8B,KAAK4uB,OAAO3mB,QAAQ,QAAsB,CACtC05C,KAAM3hD,KAAKslJ,YAAc9N,EAAMjoH,OAAQ2J,EAAKrN,KAAMu5H,EAASlpH,aAM/E6kH,EAAU7gJ,UAAUqlJ,WAAa,SAAUjgC,EAAQzzF,EAAOpZ,GAUtD,GATK6sG,EAAOppF,UACRopF,EAAOppF,QAAU,eAAO,GAAI,GAAIopF,EAAOz5F,MAAM,IAE5C,eAAkBgG,KACE,kBAAVpZ,IACPA,EAAQzY,KAAK4uB,OAAO1jB,SAASuN,IAEjC,OAASoH,SAASgS,EAAOpZ,EAAO6sG,EAAOppF,UAEvCopF,EAAOz5F,KAAK,GAAKgG,KAAWpZ,EAAO,CACnC,IAAIjK,EAAOxO,KAAK4uB,OAAO8J,iBAAiB7G,GAAOrjB,KACjC,SAATA,GAA4B,aAATA,EAChB,IAAImK,KAAK2sG,EAAOz5F,KAAK,GAAKgG,IAAQjgB,aAAe,IAAI+G,KAAKF,GAAO7G,aACjE0zG,EAAO49B,SAAU,GAIrB59B,EAAO49B,SAAU,IAI7BnC,EAAU7gJ,UAAUmuH,UAAY,SAAU5hH,EAAOof,GAE7C,IADA,IAAIzW,EAAO3V,OAAO2V,KAAKyW,GACdhe,EAAK,EAAG0mH,EAASn/G,EAAMvH,EAAK0mH,EAAO5zH,OAAQkN,IAAM,CACtD,IAAIqrB,EAAMq7F,EAAO1mH,GACjB7N,KAAK4nG,WAAWn7F,EAAOysB,EAAKrN,EAAK,GAAKqN,MAG9C6nH,EAAU7gJ,UAAU+kJ,WAAa,SAAU9wH,GACvC,IAAImzE,EAAOtnG,KAAK4uB,OAAOimE,oBAAoB1gE,GAAOn0B,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,OAOpF,OANK,eAAkBX,KAAK4uB,OAAOuxB,iBAAoB,eAAkBngD,KAAK4uB,OAAOwxB,YACjFknD,IAEAtnG,KAAK4uB,OAAOyxB,iBACZinD,IAEGA,GAEXy5C,EAAU7gJ,UAAUqnH,UAAY,SAAU5mC,EAAIpxD,EAAQ+1F,EAAQ7sG,GAC1D,IAAIkpC,EAAO,IAAI,OAAa3hD,KAAK4uB,OAAQ5uB,KAAK6uB,gBAC9CpW,EAAwB,WAAhB8W,EAAO/gB,MAAsB,eAAkBiK,GAA6BA,EAApB3R,WAAW2R,GACvE6sG,IACAtlH,KAAKulJ,WAAWjgC,EAAQ/1F,EAAOsC,MAAOpZ,GACtC,gBAAmB6sG,EAAQtlH,KAAK4uB,OAAO6B,uBAAwB60F,EAAOppF,UAE1E,IACIva,EACAmmF,EAFA09C,EAAUlgC,EAASA,EAAO7jE,WAAQl2C,EAGlCvL,KAAK4uB,OAAOzmB,UACZwZ,EAAgBg/D,EAAGh/D,cACnBmmF,EAAYnnB,EAAGmnB,WAEnB,IAAIr7F,EAAQ,EACR64G,GACA3jE,EAAK4lE,UAAU5mC,EAAI6kE,EAAQxlJ,KAAKilJ,WAAW11H,EAAO4E,KAAO1nB,GAAQ64G,EAAOppF,QAAS,CAAE,MAASl8B,KAAKilJ,WAAW11H,EAAO4E,OAEnHn0B,KAAK4uB,OAAOzmB,SACZnI,KAAKslJ,WAAa3jI,EAAc8/B,MAAM9vC,SAASm2F,EAAUl2F,WAAY,KACrE+P,EAAc8/B,MAAM9vC,SAASm2F,EAAUl2F,WAAY,KAAK1M,UAAU4G,IAAI,gBAGtE60E,EAAGz7E,UAAU4G,IAAI,eAErB60E,EAAGz7E,UAAU4G,IAAI,eACjB9L,KAAK4uB,OAAOhV,OAAO,QAAuB,KAE9CmnI,EAAU7gJ,UAAU8kJ,YAAc,SAAUvjG,EAAOh1C,GAC/C,IAAI66F,EAAO,EACPtnG,KAAK4uB,OAAO8D,eAAiB1yB,KAAK4uB,OAAO+D,cAAcxD,UACvDm4E,EAAOtnG,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,QAExC,eAAkBX,KAAK4uB,OAAOuxB,iBAAoB,eAAkBngD,KAAK4uB,OAAOwxB,YACjFknD,IAEAtnG,KAAK4uB,OAAOyxB,iBACZinD,IAEJ,IAAK,IAAIiB,EAAI,EAAGA,EAAI9mD,EAAM9gD,OAAQ4nG,IAAK,CACnC,IAAIxY,EAAWp+E,SAAS8vC,EAAM9vC,SAAS42F,EAAE32F,WAAY,KAAKlH,aAAa,QAAwB,IAC/F,GAAIqlF,IAAatjF,EAAQ66F,EACrB,OAAOiB,EAGf,OAAQ,GAEZw4C,EAAU7gJ,UAAUyhJ,gBAAkB,WAClC,IAAIrvH,EAAOtyB,KAAK4uB,OACZ62H,EAAenzH,EAAKlvB,QAAQsf,iBAAiB,kBAC7CgjI,EAAyC,IAAxBD,EAAa9kJ,OAClC,GAAI+kJ,GAAkB1lJ,KAAKgjJ,UAAY1wH,EAAKyqB,OAAQ,CAEhD,IADA,IAAIynG,EAASxkJ,KAAKykJ,iBACTzjJ,EAAIhB,KAAKghJ,YAAYl5C,UAAW9mG,EAAIsxB,EAAKoE,aAAa/1B,OAAQK,IAAK,CACxE,GAAIsxB,EAAKyqB,OACL,OAEJ,IAAItwC,EAAQzM,KAAK0kJ,qBAAqB1kJ,KAAKghJ,YAAYl5C,UAAY,GAAG,GAAM,GACxE5uE,EAAM5G,EAAKoE,aAAa/kB,SAASlF,EAAMmF,WAAY,KACvD,GAAIsnB,EAAK,CACL,GAAgD,WAA5Cl5B,KAAK4uB,OAAOi3C,aAAaoxE,eACzBj3I,KAAKmuH,SAASq2B,EAAQtrH,EAAIrH,OAAO,OAEhC,CACD,IAAI9L,EAAO,CAAEtZ,MAAO,EAAG8iB,OAAQ2J,GAC/Bl5B,KAAK4uB,OAAOhV,OAAO,QAAsBmM,GACzC/lB,KAAKmuH,SAASpoG,EAAKtZ,MAAOysB,EAAIrH,OAAO,GAEzC7xB,KAAKouH,YAGR97F,EAAKyqB,SACN/8C,KAAKgjJ,SAAU,QAGlB,IAAK0C,GAAkB1lJ,KAAKgjJ,UAAY1wH,EAAKyqB,OAAQ,CAEtD,GAAyC,WAArCzqB,EAAKuzC,aAAaoxE,eAA6B,CAC/C,IAAI/6G,EAAUl8B,KAAKsuH,kBACNh8F,EAAK+pE,wBAAwB17F,OAASu7B,EAAQ,QAAyBv7B,OAExF,IAASK,EAAI,EAAGA,EAAIykJ,EAAa9kJ,OAAQK,IAAK,CAC1C,GAAKsxB,EAAKyqB,OAcN,MAbA,IAAK,IAAIzlB,EAAI,EAAGA,EAAIt3B,KAAKshJ,iBAAiB3gJ,OAAQ22B,IAAK,CACnD,GAAIhF,EAAKyqB,OACL,MAE2J,KAAtJ0oG,EAAa9zI,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,iBAAiB,mBAAmB1iB,KAAKshJ,iBAAiB3vI,SAAS2lB,EAAE1lB,WAAY,KAAKyyE,SAASv5E,YAC7I9K,KAAKmuH,SAASx8G,SAAS8zI,EAAa9zI,SAAS3Q,EAAE4Q,WAAY,KAAKlH,aAAa,iBAAkB,IAAK1K,KAAKshJ,iBAAiB3vI,SAAS2lB,EAAE1lB,WAAY,KAAKigB,OAClJ7xB,KAAKmiJ,mBACLniJ,KAAKouH,aASpB97F,EAAKyqB,SACN/8C,KAAKgjJ,SAAU,KAI3BjC,EAAU7gJ,UAAUylJ,eAAiB,WACjC,IAAI5/H,EAAO/lB,KAAK4lJ,mBAChB7/H,EAAKtN,MAAQsN,EAAK2oB,eACd3oB,EAAKtN,OAAUzY,KAAKghJ,YAAYzxH,OAAO8vE,iBACvCr/F,KAAK6lJ,gBAAgB9/H,EAAMA,EAAK47B,KAAKhgC,cAAeoE,EAAKwJ,QAAQ,EAAjEvvB,CAAuE+lB,IAG/Eg7H,EAAU7gJ,UAAU0lJ,iBAAmB,WACnC,IAAItzH,EAAOtyB,KAAK4uB,OAChB5uB,KAAK4uB,OAAOxrB,QAAQ8B,UAAUC,OAAO,aACrC,IAAIoqB,EAASvvB,KAAKghJ,YAAYzxH,OAC1BwT,EAAM,GACVA,EAAIxT,EAAOsC,OAAS,eAAUtC,EAAOsC,MAAO7xB,KAAKghJ,YAAYx7B,SAC7D,IAAIm3B,EAAarqH,EAAKq1E,WAAWw2C,qBAAqBn+I,KAAKiwC,KAAMlN,GAC7D+iH,EAAkB,eAAO,GAAInJ,GACjCA,EAAa,eAAO,GAAIA,EAAY38I,KAAKghJ,YAAYx7B,SACrD,IAAI/sG,EAAQ,eAAU8W,EAAOsC,MAAOi0H,GAC/B,eAAkBv2H,EAAOsC,QAAW,gBAAYpZ,IACjD,gBAAS8W,EAAOsC,MAAOpZ,EAAOkkI,GAElC,IAAI52H,EAAO,CACP4S,WAAYpJ,EAAOsC,MACnBpZ,MAAO,eAAU8W,EAAOsC,MAAO8qH,GAC/Bn3B,QAASxlH,KAAKghJ,YAAYx7B,QAC1Bj2F,OAAQA,EACRmf,cAAe1uC,KAAKghJ,YAAYvoI,MAChCmhB,aAAc55B,KAAKghJ,YAAYpnH,aAC/BnrB,QAAQ,GAIZ,OAFAsX,EAAK47B,KAAO3hD,KAAKiwC,KAAKtuB,cACtBoE,EAAK4xH,aAAepoH,EACbxJ,GAEXg7H,EAAU7gJ,UAAUkuH,SAAW,SAAU23B,GACrC,IAAI/lJ,KAAKohJ,iBAAoBphJ,KAAKiwC,KAAlC,CAGA,IAAI3d,EAAOtyB,KAAK4uB,OAChB,GAAKm3H,GAAiBzzH,EAAKyqB,SAAU/8C,KAAKmiJ,kBAA1C,CAGAniJ,KAAKohJ,iBAAkB,EACvB,IAAIr7H,EAAO/lB,KAAK4lJ,mBACZtmE,EAAKv5D,EAAK47B,KAAKhgC,cACfuX,EAAMnT,EAAKwJ,OACfxJ,EAAK47B,KAAK/2C,gBAAgB,cACrBm7I,EAKD/lJ,KAAK6lJ,gBAAgB9/H,EAAMu5D,EAAIpmD,EAA/Bl5B,CAAoC+lB,IAJpCuM,EAAKrqB,QAAQ,OAAiB8d,EAAM/lB,KAAK6lJ,gBAAgB9/H,EAAMu5D,EAAIpmD,IACnE5G,EAAK1Y,OAAO,OAAkB,CAAEs/H,QAASl5I,KAAKiwC,WAMtD8wG,EAAU7gJ,UAAU2lJ,gBAAkB,SAAUG,EAAc1mE,EAAI/vD,EAAQ02H,GACtE,IAAI5iJ,EAAQrD,KACZ,OAAO,SAAUgmJ,GACb,IAAI1zH,EAAOjvB,EAAMurB,OAIjB,GAHAo3H,EAAarkG,KAAOqkG,EAAarkG,KAAOqkG,EAAarkG,KAAOt+C,EAAM4sC,KAAKtuB,cACvEqkI,EAAarO,aAAeqO,EAAarO,aAAeqO,EAAarO,aAAepoH,EAEhFy2H,EAAav3I,QAEb,GADApL,EAAM+9I,iBAAkB,EACpB/9I,EAAM89I,SAAU,CAEhB,GADA99I,EAAM89I,UAAW,EACb99I,EAAM29I,YAAYhsD,WAAa3xF,EAAMoJ,OAASpJ,EAAM29I,YAAYzxH,OAAOsC,QAAUxuB,EAAMwuB,MACvF,OAEJxuB,EAAMyhJ,eAAezhJ,EAAMoJ,MAAOpJ,EAAMwuB,MAAOxuB,EAAM86C,YAP7D,CAWA7rB,EAAKq1E,WAAW42C,eAAe,CAAChvH,IAChC+C,EAAKyqB,QAAS,EACdzqB,EAAKq1E,WAAW62C,cAChBn7I,EAAMurB,OAAOhV,OAAO,QAAuB,IAC3C,IAAI0rG,EAAShzF,EAAKizF,oBAAoBjmC,EAAG50E,aAAa,aAatD,GAZArH,EAAMkkH,UAAUy+B,EAAarkG,KAAMpyB,EAAQ+1F,EAAQ0gC,EAAavtI,OAC5DpV,EAAMurB,OAAOzmB,UACb69I,EAAarkG,KAAOt+C,EAAMiiJ,YAE9B,gBAAY,CAAChmE,GAAK,CAAC,OAAoB,eACvC,gBAAY,CAAC0mE,EAAarkG,MAAO,CAAC,oBAAqB,iBAClD,eAAkBqkG,EAAavtI,QAAUutI,EAAavtI,MAAM7G,cAC3D,eAAkBvO,EAAM29I,YAAYvoI,OAAmC,GAA1BpV,EAAM29I,YAAYvoI,OAAY7G,aAAevO,EAAM8hJ,WAC9F,eAAkBa,EAAavtI,QAAU,eAAkB6sG,EAAOz5F,KAAK0D,EAAOsC,SAC9E,eAAkBxuB,EAAM29I,YAAYvoI,SAAWutI,EAAarkG,KAAKhgC,cAAczc,UAAUmB,SAAS,mBACtG2/I,EAAarkG,KAAKz8C,UAAUC,OAAO,eAEnC,eAAkB8gJ,GAAmB,CACrC,IAAIh2D,EAAkB39D,EAAKnqB,SAAWonB,EAAOqnB,UAAyC,kBAArBrnB,EAAe,SAC5EuxD,EAAexuD,EAAKyuD,eAAiBzuD,EAAKyuD,cAAcC,eACrD1uD,EAAKyuD,cAAcC,cAAc74E,QACpC8nF,GAAmBnP,EACfxuD,EAAK2uD,mBACL3uD,EAAK8uD,iBAAgB,WACjB9uD,EAAKrqB,QAAQ,OAAkB+9I,OAInC1zH,EAAK8uD,kBACL9uD,EAAKrqB,QAAQ,OAAkB+9I,IAInC1zH,EAAKrqB,QAAQ,OAAkB+9I,GAiBvC,GAdA1zH,EAAK1Y,OAAO,QAAuB,IACnCvW,EAAM8hJ,WAAY,EACd9hJ,EAAMurB,OAAOwI,WAAWz2B,OAAS,IAC3B0C,EAAMurB,OAAOzmB,SAAW9E,EAAMurB,OAAOuH,OACvC9yB,EAAMurB,OAAOhV,OAAO,QAA8B,IAElDvW,EAAMurB,OAAO+D,cAAcxD,QAAQxuB,OAAS,IAAM0C,EAAM6+I,SAAS7+I,EAAM29I,YAAYhsD,WACnF3xF,EAAMurB,OAAOhV,OAAO,QAAwB,KAE5CvW,EAAMurB,OAAOzmB,SAAW9E,EAAMurB,OAAOuH,QACrC9yB,EAAMurB,OAAOhV,OAAO,QAA8B,KAG1DvW,EAAM+9I,iBAAkB,EACpB/9I,EAAM89I,SAAU,CAEhB,GADA99I,EAAM89I,UAAW,EACb99I,EAAM29I,YAAYhsD,WAAa3xF,EAAMoJ,OAASpJ,EAAM29I,YAAYzxH,OAAOsC,QAAUxuB,EAAMwuB,OAASxuB,EAAMm+I,oBACtG,OAEJ,IAAItoH,EAAM5G,EAAKoG,iBAAiBr1B,EAAMwuB,OAClCqH,IAAQA,EAAIyc,eAAkBzc,EAAIyc,cAAgBrjB,EAAKkuE,YAAYgiD,QAChElwH,EAAKkuE,YAAYgiD,OAAO7wD,WAAWx6D,KAAK9zB,EAAMs/I,cAC9CrwH,EAAKkuE,YAAYgiD,OAAO7wD,WAAWx6D,KAAK9zB,EAAMs/I,aAAaz9I,UAAUmB,SAAS,mBACjFhD,EAAMyhJ,eAAezhJ,EAAMoJ,MAAOpJ,EAAMwuB,MAAOxuB,EAAM86C,OAGzD8nG,GACA3zH,EAAK1Y,OAAO,QAAqB,OAI7CmnI,EAAU7gJ,UAAUwiJ,0BAA4B,WAC5C,IAAIwD,EAAwB,GACxB5zH,EAAOtyB,KAAK4uB,OACZu3H,EAAkB7zH,EAAKkuE,YAAYgiD,OAAO7wD,WAAWzlF,cAAc,sBACvE,GAAIi6I,EAAiB,CACjB,IAAI7mE,EAAK6mE,EAAgBxkI,cACrBqzE,EAAW,GAAGtnF,MAAMpK,KAAKtD,KAAK4uB,OAAO4xE,YAAYgiD,OAAO7wD,WAAWx6D,MAAMnzB,QAAQs7E,GACjFwoB,EAAY,GAAGp6F,MAAMpK,KAAKg8E,EAAG79B,OAAOz9C,QAAQmiJ,GAChDD,EAAwB,CAAClxD,EAAU8S,GAEvC,OAAOo+C,GAEXnF,EAAU7gJ,UAAU6kJ,eAAiB,SAAUt4I,GAC3C,IAAI4qB,EAAMr3B,KAAK4uB,OAAO22F,oBAAoBvlH,KAAK4uB,OAAOs5E,cAAcv2F,SAASlF,EAAMmF,WAAY,KAAKlH,aAAa,aACjH,OAAO2sB,EAAI6E,QAAU7E,EAAI6E,QAAU7E,EAAIxL,MAE3Ck1H,EAAU7gJ,UAAUgmG,eAAiB,SAAU/4F,GAC3C,GAAInN,KAAKuhJ,cAA8B,QAAbp0I,EAAEwT,QAAiC,aAAbxT,EAAEwT,SAA0B3gB,KAAK4uB,OAAOmuB,OAAS,CAC7F,IAAIzqB,EAAOtyB,KAAK4uB,OACZ41H,EAASxkJ,KAAKykJ,iBACde,EAAU,gBAAar4I,EAAE7M,OAAQ,QACrC,GAAIN,KAAKuhJ,aAAgBiE,IAAYxlJ,KAAK4uB,OAAOzmB,QAAU,CACvD,IAAIw5C,OAAO,EAIX,GAHI6jG,IACA7jG,EAAO6jG,EAAQt5I,cAAc,aAE7BlM,KAAKuhJ,aAAe5/F,EAAM,CAC1B,IAAIwiG,EAAiBnkJ,KAAK4uB,OAAO0qE,oBAC7BolB,EAA2B,QAAbvxG,EAAEwT,OAAmBwjI,EAAexjJ,OAAS,EAAI,GAC/DX,KAAKuhJ,aACF4C,EAAexyI,SAAS+sG,EAAY9sG,WAAY,KAAKigB,QAAU8vB,EAAKj3C,aAAa,MAAMgD,MAAM1N,KAAK4uB,OAAOxrB,QAAQkI,GAAG3K,WACnHX,KAAKghJ,YAAYhsD,WAAawvD,GAAuB,QAAbr3I,EAAEwT,QACD,QAArC2R,EAAKuzC,aAAaoxE,gBAClB3kH,EAAKuzC,aAAaoxE,eAAiB,SACnCj3I,KAAKiuH,YACL37F,EAAKuzC,aAAaoxE,eAAiB,OAGnCj3I,KAAKiuH,YAETjuH,KAAKuhJ,aAAc,GAGnBvhJ,KAAKouH,gBAW7B2yB,EAAU7gJ,UAAUkmJ,qBAAuB,WACnCpmJ,KAAKmiJ,oBACLniJ,KAAK4uB,OAAOhV,OAAO,QAAoB,IACvC5Z,KAAK4uB,OAAOmuB,QAAS,EACrB/8C,KAAKmhJ,UAAW,EAChBnhJ,KAAKgiJ,sBAAmBz2I,EACxBvL,KAAKmlJ,WAAY,IAGzBpE,EAAU7gJ,UAAUukJ,eAAiB,WACjC,IAAIvoH,EAAUl8B,KAAKsuH,kBACnB,OAAOtuH,KAAK4uB,OAAOytE,wBAAwB17F,OAASu7B,EAAQ,QAAuBv7B,OAC/Eu7B,EAAQ,QAAyBv7B,OAAS,GAE3CogJ,EA1jCmB,GCnB1B,EAAwC,WACxC,IAAIzhJ,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAmBxCg4G,EAA4B,SAAUl1G,GAEtC,SAASk1G,EAAWnpF,EAAQC,EAAgBgsE,GACxC,IAAIx3F,EAEJR,EAAOS,KAAKtD,KAAM4uB,EAAQC,IAAmB7uB,KAI7C,OAHAqD,EAAMurB,OAASA,EACfvrB,EAAMwrB,eAAiBA,EACvBxrB,EAAMw3F,SAAWA,EACVx3F,EAwBX,OAhCA,EAAU00G,EAAYl1G,GAUtBk1G,EAAW73G,UAAU6kG,UAAY,WAE7BliG,EAAO3C,UAAU6kG,UAAUzhG,KAAKtD,OAEpC+3G,EAAW73G,UAAU+tH,UAAY,SAAUpiG,EAAMpf,GAE7C5J,EAAO3C,UAAU+tH,UAAU3qH,KAAKtD,KAAM6rB,EAAMpf,IAEhDsrG,EAAW73G,UAAUg9B,QAAU,WAE3Br6B,EAAO3C,UAAUg9B,QAAQ55B,KAAKtD,OAElC+3G,EAAW73G,UAAUmuH,UAAY,SAAU5hH,EAAOof,GAC9ChpB,EAAO3C,UAAUmuH,UAAU/qH,KAAKtD,KAAMyM,EAAOof,IAEjDksF,EAAW73G,UAAU4tH,aAAe,SAAUC,EAAWliG,GAErDhpB,EAAO3C,UAAU4tH,aAAaxqH,KAAKtD,KAAM+tH,EAAWliG,IAExDksF,EAAW73G,UAAU8tH,UAAY,SAAU1uC,GACvCz8E,EAAO3C,UAAU8tH,UAAU1qH,KAAKtD,KAAMs/E,IAEnCy4B,EAjCoB,CAkC7B,G,wBCpDEsuC,EAAY,YACZC,EAAa,aACbC,EAAU,UACVC,EAAY,YACZC,EAAM,MACNC,EAAW,WACXC,EAAM,MACNC,EAAO,OACP,EAAgC,WAChC,SAASC,EAAej4H,GACpB5uB,KAAK8mJ,KAAO,GACZ9mJ,KAAK+mJ,gBAAkB,CACnBr8H,IAAK,MACLC,MAAO,QACPC,KAAM,OACNC,KAAM,OACNC,OAAQ,SACRC,OAAQ,SACRC,aAAc,mBAElBhrB,KAAKgnJ,WAAa,GAClBhnJ,KAAKinJ,gBAAkB,aACvBjnJ,KAAKknJ,WAAY,EACjBlnJ,KAAKmnJ,aAAc,EACnBnnJ,KAAKonJ,YAAa,EAClBpnJ,KAAKqnJ,YAAa,EAClBrnJ,KAAKsnJ,cAAe,EACpBtnJ,KAAKunJ,eAAgB,EACrBvnJ,KAAKwnJ,oBAAqB,EAC1BxnJ,KAAKynJ,eAAiB,GACtBznJ,KAAK0nJ,gBAAkB,GACvB1nJ,KAAK2nJ,cAAe,EACpB3nJ,KAAK4nJ,YAAa,EAClB5nJ,KAAK0uE,YAAa,EAClB1uE,KAAK6nJ,WAAY,EACjB7nJ,KAAK0X,QAAS,EACd1X,KAAKg4E,YAAc,6HACnBh4E,KAAK8nJ,YAAa,EAClB9nJ,KAAK+nJ,aAAc,EACnB/nJ,KAAKgoJ,aAAc,EACnBhoJ,KAAKioJ,YAAa,EAClBjoJ,KAAKkoJ,aAAc,EACnBloJ,KAAKmoJ,YAAa,EAClBnoJ,KAAKooJ,eAAgB,EACrBpoJ,KAAKqoJ,aAAe,EACpBroJ,KAAKsoJ,eAAiB,EACtBtoJ,KAAKuoJ,cAAgB,EACrBvoJ,KAAKwoJ,gBAAkB,EACvBxoJ,KAAKyoJ,gBAAkB,EACvBzoJ,KAAK4uB,OAASA,EACd5uB,KAAK0oJ,WAAa1oJ,KAAK2oJ,oBACvB3oJ,KAAK4oJ,cAAqC,MAArB5oJ,KAAK4uB,OAAOnW,MAAgB,IAAIE,MAAM3Y,KAAK4uB,OAAOnW,OAAS,IAAIE,KACpF3Y,KAAK4oJ,cAAch/G,SAAS,GAC5B5pC,KAAK4oJ,cAAcvlI,SAAS,GAC5BrjB,KAAK4oJ,cAAcx4G,WAAW,GAC9BpwC,KAAK4oJ,cAAcloH,WAAW,GAC9B1gC,KAAKma,aAAe,IAAIxB,KAAK3Y,KAAK4oJ,cAAczvI,cAAenZ,KAAK4oJ,cAAc5hH,WAAYhnC,KAAK4oJ,cAAc/hH,UAAW7mC,KAAK4oJ,cAActlI,WAAYtjB,KAAK4oJ,cAAcrlI,aAAcvjB,KAAK4oJ,cAAcplI,cAC/MxjB,KAAK47C,sBACL57C,KAAK64C,mBAixBT,OA/wBAguG,EAAe3mJ,UAAU4U,cAAgB,WACrC,MAAO,kBAEX+xI,EAAe3mJ,UAAU24C,iBAAmB,WACpC74C,KAAK4uB,OAAOE,cAGhB9uB,KAAK4uB,OAAOG,GAAG,aAAc/uB,KAAK0zE,WAAY1zE,MAC9CA,KAAK4uB,OAAOG,GAAG,mBAAoB/uB,KAAK6oJ,oBAAqB7oJ,MAC7DA,KAAK4uB,OAAOG,GAAG,eAAgB/uB,KAAK8oJ,iBAAkB9oJ,MACtDA,KAAK4uB,OAAOG,GAAG,iBAAkB/uB,KAAK+oJ,mBAAoB/oJ,MAC1DA,KAAK4uB,OAAOG,GAAG,eAAgB/uB,KAAKo1E,aAAcp1E,QAEtD6mJ,EAAe3mJ,UAAU07C,oBAAsB,WACvC57C,KAAK4uB,OAAOE,cAGhB9uB,KAAK4uB,OAAOyF,IAAI,aAAcr0B,KAAK0zE,YACnC1zE,KAAK4uB,OAAOyF,IAAI,mBAAoBr0B,KAAK6oJ,qBACzC7oJ,KAAK4uB,OAAOyF,IAAI,eAAgBr0B,KAAK8oJ,kBACrC9oJ,KAAK4uB,OAAOyF,IAAI,iBAAkBr0B,KAAK+oJ,oBACvC/oJ,KAAK4uB,OAAOyF,IAAI,eAAgBr0B,KAAKo1E,gBAEzCyxE,EAAe3mJ,UAAUwzE,WAAa,SAAUozE,GAC5C9mJ,KAAKknJ,UAAYlnJ,KAAKmnJ,YAAcnnJ,KAAKonJ,WAAapnJ,KAAKqnJ,WAAarnJ,KAAKsnJ,aAAetnJ,KAAKunJ,eAAgB,EACjHvnJ,KAAK0oJ,WAAa1oJ,KAAK2oJ,oBACnB3oJ,KAAK4uB,OAAOo6H,gBAAgBt+H,MAC5B1qB,KAAK+mJ,gBAAgB,OAAS/mJ,KAAK4uB,OAAOo6H,gBAAgBt+H,KAE1D1qB,KAAK4uB,OAAOo6H,gBAAgBr+H,QAC5B3qB,KAAK+mJ,gBAAgB,SAAW/mJ,KAAK4uB,OAAOo6H,gBAAgBr+H,OAE5D3qB,KAAK4uB,OAAOo6H,gBAAgBp+H,OAC5B5qB,KAAK+mJ,gBAAgB,QAAU/mJ,KAAK4uB,OAAOo6H,gBAAgBp+H,MAE3D5qB,KAAK4uB,OAAOo6H,gBAAgBn+H,OAC5B7qB,KAAK+mJ,gBAAgB,QAAU/mJ,KAAK4uB,OAAOo6H,gBAAgBn+H,MAE3D7qB,KAAK4uB,OAAOo6H,gBAAgBl+H,SAC5B9qB,KAAK+mJ,gBAAgB,UAAY/mJ,KAAK4uB,OAAOo6H,gBAAgBl+H,QAE7D9qB,KAAK4uB,OAAOo6H,gBAAgBj+H,SAC5B/qB,KAAK+mJ,gBAAgB,UAAY/mJ,KAAK4uB,OAAOo6H,gBAAgBj+H,QAE7D/qB,KAAK4uB,OAAOo6H,gBAAgBh+H,eAC5BhrB,KAAK+mJ,gBAAgB,gBAAkB/mJ,KAAK4uB,OAAOo6H,gBAAgBh+H,aAAapZ,YAEpF5R,KAAKipJ,uBACL,IAAIxlB,EAAazjI,KAAK0oJ,WAAW7tI,QAAQ7a,KAAKg4E,YAAah4E,KAAKkpJ,eAChElpJ,KAAK2nJ,cAAe,EACpB3nJ,KAAKgnJ,WAAahnJ,KAAK0oJ,WAAW7tI,QAAQ7a,KAAKg4E,YAAah4E,KAAKkpJ,eACjElpJ,KAAK2nJ,cAAe,EACpB3nJ,KAAKmpJ,mBAAqBnpJ,KAAKgnJ,WAC/BhnJ,KAAK8mJ,KAAO9mJ,KAAK0uC,cAAgB+0F,EACjCzjI,KAAK4uB,OAAOzX,gBAAkBnX,KAAK8mJ,KAC/B9mJ,KAAK4uB,OAAOnW,QACZzY,KAAK6nJ,WAAY,EACjB7nJ,KAAK0X,OAASovI,EAAKpvI,OACnB1X,KAAKopJ,oBAGbvC,EAAe3mJ,UAAU+oJ,qBAAuB,WAC5CjpJ,KAAKya,KAAO,IAAI,OAAKza,KAAK4uB,OAAOpX,WAAYxX,KAAK+mJ,gBAAiB/mJ,KAAK4uB,OAAOpU,QAC/Exa,KAAKqpJ,aAAe5pJ,OAAO2V,KAAKpV,KAAK+mJ,iBACrC,IAAK,IAAI/lJ,EAAI,EAAGA,EAAIhB,KAAKqpJ,aAAa1oJ,OAAQK,IAC1ChB,KAAK+mJ,gBAAgB/mJ,KAAKqpJ,aAAaroJ,GAAG4Q,YACtC5R,KAAKya,KAAKC,YAAY1a,KAAKqpJ,aAAaroJ,GAAG4Q,aAGvDi1I,EAAe3mJ,UAAU2oJ,oBAAsB,WAC3C,IAAI3mI,EAAQliB,KAAK4uB,OAAO5W,aAAa6I,eACN,eAA3B7gB,KAAK4uB,OAAOpX,YACR0K,IAAUliB,KAAKgnJ,WAAWrmJ,QAAUX,KAAK8mJ,OAAS9mJ,KAAK4uB,OAAO5W,aAAaS,QAC3EyJ,EAAQ,GAGhB,IAAK,IAAIlhB,EAAIkhB,EAAOoV,EAAIpV,EAAQ,EAAGlhB,EAAIhB,KAAKgnJ,WAAWrmJ,QAAU22B,GAAK,EAAGt2B,IAAKs2B,IAAK,CAC/E,GAAIt2B,EAAIhB,KAAKgnJ,WAAWrmJ,SAAgE,IAAtDX,KAAKinJ,gBAAgBjjJ,QAAQhE,KAAKgnJ,WAAWhmJ,IAE3E,YADAhB,KAAK8zE,aAAa9zE,KAAKgnJ,WAAWhmJ,IAGtC,GAAIs2B,GAAK,IAA2D,IAAtDt3B,KAAKinJ,gBAAgBjjJ,QAAQhE,KAAKgnJ,WAAW1vH,IAEvD,YADAt3B,KAAK8zE,aAAa9zE,KAAKgnJ,WAAW1vH,MAK9CuvH,EAAe3mJ,UAAUkpJ,gBAAkB,WACvCppJ,KAAK4oJ,cAAgB,IAAIjwI,MAAM3Y,KAAK4uB,OAAOnW,OAC3CzY,KAAKknJ,UAAYlnJ,KAAKmnJ,YAAcnnJ,KAAKonJ,WAAapnJ,KAAKqnJ,WAAarnJ,KAAKsnJ,aAAetnJ,KAAKunJ,eAAgB,EACjHvnJ,KAAKwzE,cACAxzE,KAAK0X,QACN1X,KAAK6oJ,uBAGbhC,EAAe3mJ,UAAU4zE,aAAe,SAAUw1E,GAG9C,IAFA,IAAIpnI,GAAS,EACTC,EAAM,EACDnhB,EAAI,EAAGA,EAAIhB,KAAKgnJ,WAAWrmJ,OAAQK,IACpChB,KAAKgnJ,WAAWhmJ,KAAOsoJ,IACvBnnI,EAAMnhB,EAAI,GACK,IAAXkhB,IACAA,EAAQlhB,IAIhBkhB,EAAQ,IACRA,EAAQ,GAEZliB,KAAK4uB,OAAO5W,aAAas5D,kBAAkBpvD,EAAOC,IAEtD0kI,EAAe3mJ,UAAU6oJ,mBAAqB,SAAUhjI,GAEpD,GADA/lB,KAAKqoJ,aAAeroJ,KAAKsoJ,eAAiBtoJ,KAAKuoJ,cAAgBvoJ,KAAKwoJ,gBAAkBxoJ,KAAKyoJ,gBAAkB,EAC1F,WAAf1iI,EAAK5Y,EAAE5M,IAAX,CAIA,IAAMwlB,EAAK5Y,EAAE8nH,SAAWlvG,EAAK5Y,EAAEy5F,UAAa7gF,EAAK5Y,EAAE5M,MAAQ8lJ,GAAatgI,EAAK5Y,EAAE5M,MAAQ+lJ,GAChFvgI,EAAK5Y,EAAE5M,MAAQmmJ,GAAY3gI,EAAK5Y,EAAE5M,MAAQkmJ,GAAO1gI,EAAK5Y,EAAEwT,SAAW+lI,GACtE3gI,EAAK5Y,EAAE5M,MAAQomJ,GAAO5gI,EAAK5Y,EAAE5M,MAAQqmJ,GAAO,CAC5C,IAAI1kI,EAAQliB,KAAK4uB,OAAO5W,aAAa6I,eACjCsB,EAAMniB,KAAK4uB,OAAO5W,aAAa8I,aAC/BsB,EAAWpiB,KAAK4uB,OAAO5W,aAAaS,MAAM9X,OAC9C,GAAe,IAAVuhB,GAAeC,IAAQC,IAAc2D,EAAK5Y,EAAE5M,MAAQkmJ,GAAO1gI,EAAK5Y,EAAEwT,SAAW+lI,GAAW,CACzF,IAAIj6I,EAAQsZ,EAAK5Y,EAAEwT,SAAW+lI,EAAWvkI,EAAM,EAC/CniB,KAAK4uB,OAAO5W,aAAa6I,eAAiB7gB,KAAK4uB,OAAO5W,aAAa8I,aAAerU,EAEtF,GAAIsZ,EAAK5Y,EAAE5M,MAAQomJ,GAAO5gI,EAAK5Y,EAAE5M,MAAQqmJ,EAAM,CAC3C,IAAI/qE,EAAQ91D,EAAK5Y,EAAE5M,MAAQomJ,EAAMvkI,EAAW,EAC5CpiB,KAAK4uB,OAAO5W,aAAa6I,eAAiB7gB,KAAK4uB,OAAO5W,aAAa8I,aAAe+6D,EAEtF77E,KAAKupJ,kBAAkBxjI,EAAK5Y,EAAE5M,MAAQ8lJ,GAAatgI,EAAK5Y,EAAEwT,SAAW+lI,GAAY3gI,EAAK5Y,EAAE5M,MAAQomJ,GAEpG,IAAM5gI,EAAK5Y,EAAE8nH,SAAWlvG,EAAK5Y,EAAEy5F,UAAa7gF,EAAK5Y,EAAE5M,MAAQgmJ,GAAWxgI,EAAK5Y,EAAE5M,MAAQimJ,GAAY,CACzFtkI,EAAQliB,KAAK4uB,OAAO5W,aAAa6I,eAArC,IACI2oI,EAAa,IAC6C,IAA1DxpJ,KAAKinJ,gBAAgBjjJ,QAAQhE,KAAKgnJ,WAAW9kI,MAC7CsnI,EAAaxpJ,KAAKgnJ,WAAW9kI,IAEjCliB,KAAKypJ,eAAe1jI,EAAK5Y,EAAE5M,MAAQimJ,GACnC,IAAI/iB,EAAazjI,KAAK0oJ,WAAW7tI,QAAQ7a,KAAKg4E,YAAah4E,KAAKkpJ,eAChElpJ,KAAK2nJ,cAAe,EACpB3nJ,KAAKgnJ,WAAahnJ,KAAK0oJ,WAAW7tI,QAAQ7a,KAAKg4E,YAAah4E,KAAKkpJ,eACjElpJ,KAAK2nJ,cAAe,EACpB3nJ,KAAKmpJ,mBAAqBnpJ,KAAKgnJ,WAC/BhnJ,KAAK0uC,cAAgB+0F,EACrBzjI,KAAK4uB,OAAO5W,aAAaS,MAAQgrH,EACjC,IAAK,IAAIziI,EAAI,EAAGA,EAAIhB,KAAKgnJ,WAAWrmJ,OAAQK,IACxC,GAAIwoJ,IAAexpJ,KAAKgnJ,WAAWhmJ,GAAI,CACnCkhB,EAAQlhB,EACR,MAGRhB,KAAK4uB,OAAO5W,aAAa6I,eAAiBqB,EAC1CliB,KAAK6oJ,4BAxCL7oJ,KAAKgoJ,aAAc,GA2C3BnB,EAAe3mJ,UAAUwpJ,UAAY,WACjC,IAAIA,EAAY1pJ,KAAK4uB,OAAOnX,WAAazX,KAAK6nJ,UAC9C,OAAO6B,GAEX7C,EAAe3mJ,UAAUypJ,gBAAkB,WACvC,IAAIznI,EAAQliB,KAAK4uB,OAAO5W,aAAa6I,eACjC4iH,EAAazjI,KAAK4uB,OAAO5W,aAAaS,MACtCmxI,EAAc5pJ,KAAK0uC,cAAc61F,UAAU,EAAGriH,EAAQliB,KAAK0uC,cAAc/tC,OAAS8iI,EAAW9iI,QAC7FkpJ,EAASpmB,EAAWc,UAAU,EAAGriH,GACjC4nI,EAAe,IAAInxI,MAAM3Y,KAAK4oJ,eAC9B1iH,EAAU,IAAIvtB,KAAKmxI,EAAa3wI,cAAe2wI,EAAa9iH,WAAa,EAAG,GAAGH,UACnF,GAAoC,IAAhC+iH,EAAY5lJ,QAAQ6lJ,KAAoC,IAAlBA,EAAOlpJ,QAC7CX,KAAKmpJ,mBAAmBU,EAAOlpJ,OAAS,KAAOX,KAAKmpJ,mBAAmBU,EAAOlpJ,SAAU,CACxF,IAAK,IAAIK,EAAI6oJ,EAAOlpJ,OAAQK,EAAI4oJ,EAAYjpJ,OAAQK,IACb,KAA/BhB,KAAKmpJ,mBAAmBnoJ,IAAahB,KAAKinJ,gBAAgBjjJ,QAAQhE,KAAKmpJ,mBAAmBnoJ,KAAO,IACjGhB,KAAK8nJ,WAAa9nJ,KAAK+pJ,eAAe/pJ,KAAKmpJ,mBAAmBnoJ,IAAI,IAG1E,GAAIhB,KAAK8nJ,WACL,OAGR,OAAQ9nJ,KAAKmpJ,mBAAmBjnI,EAAQ,IACpC,IAAK,IAEG,IAAIY,GAAQ9iB,KAAKknJ,WAAa4C,EAAajjH,UAAUj1B,WAAWjR,OAAS,IACpEX,KAAK0pJ,YAAuC,GAAzBI,EAAajjH,UAAiB,GAAKl1B,SAASk4I,EAAO3nI,EAAQ,GAAI,IAIvF,GAHAliB,KAAKioJ,WAAoC,MAAtB4B,EAAO3nI,EAAQ,GAClCliB,KAAK4uB,OAAOnX,WAAYzX,KAAK4uB,OAAOnX,WAAoBzX,KAAK4uB,OAAOnX,UACpEzX,KAAK6nJ,WAAY7nJ,KAAK6nJ,WAAoB7nJ,KAAK6nJ,UAC3CpsI,MAAMqH,GACN,OAEJ,IAAS9hB,EAAI,EAAG8hB,EAAOojB,EAASllC,IAC5B8hB,EAAOnR,SAASmR,EAAKlR,WAAWlE,MAAM,GAAI,IAE9C,GAAIoV,GAAQ,EAAG,CAIX,GAHAgnI,EAAajgH,QAAQ/mB,GACrB9iB,KAAK0uE,WAAwC,IAA3B5rD,EAAKlR,WAAWjR,OAClCX,KAAKma,aAAe,IAAIxB,KAAKmxI,EAAa3wI,cAAe2wI,EAAa9iH,WAAY8iH,EAAajjH,WAC3FijH,EAAa9iH,aAAehnC,KAAK4oJ,cAAc5hH,WAC/C,OAEJhnC,KAAKknJ,WAAY,EACjBlnJ,KAAKqoJ,aAAeroJ,KAAKqoJ,aAAe,OAGxCroJ,KAAKknJ,WAAY,EACjBlnJ,KAAKqoJ,aAAeroJ,KAAKioJ,WAAajoJ,KAAKqoJ,aAAe,EAAIroJ,KAAKqoJ,aAEvE,MAER,IAAK,IAEG,IAAI19H,OAAQ,EAUZ,GARIA,EADAm/H,EAAa9iH,WAAWp1B,WAAWjR,OAAS,IAAMX,KAAK0pJ,aAC9C1pJ,KAAKmnJ,YAA8C,IAA/B2C,EAAa9iH,WAAa,GAAU,GAAKr1B,SAASk4I,EAAO3nI,EAAQ,GAAI,IAG1FvQ,SAASk4I,EAAO3nI,EAAQ,GAAI,IAExCliB,KAAK4uB,OAAOnX,WAAYzX,KAAK4uB,OAAOnX,WAAoBzX,KAAK4uB,OAAOnX,UACpEzX,KAAK6nJ,WAAY7nJ,KAAK6nJ,WAAoB7nJ,KAAK6nJ,UAC/C7nJ,KAAKkoJ,YAAqC,MAAtB2B,EAAO3nI,EAAQ,GAC9BzG,MAAMkP,GAwCN,CACD,IAAIq/H,EAAehqJ,KAAKiqJ,iBAAiB,4BACrCC,EAAazqJ,OAAO2V,KAAK40I,GAC7BhqJ,KAAKynJ,gBAAkBoC,EAAO3nI,EAAQ,GAAGL,cACzC,MAAO7hB,KAAKynJ,eAAe9mJ,OAAS,EAAG,CAC/BK,EAAI,EACR,IADA,IACS6M,EAAK,EAAGs8I,EAAeD,EAAYr8I,EAAKs8I,EAAaxpJ,OAAQkN,IAAM,CAC3Ds8I,EAAat8I,GAC1B,GAAkE,IAA9Dm8I,EAAYhpJ,GAAG6gB,cAAc7d,QAAQhE,KAAKynJ,gBAI1C,OAHAqC,EAAalgH,SAAS5oC,EAAI,GAC1BhB,KAAKmnJ,aAAc,OACnBnnJ,KAAK4oJ,cAAgBkB,GAGzB9oJ,IAEJhB,KAAKynJ,eAAiBznJ,KAAKynJ,eAAeljB,UAAU,EAAGvkI,KAAKynJ,eAAe9mJ,aAxDhE,CACf,MAAOgqB,EAAQ,GACXA,EAAQhZ,SAASgZ,EAAM/Y,WAAWlE,MAAM,GAAI,IAEhD,GAAIid,GAAS,EAAG,CAkBZ,GAjBAm/H,EAAalgH,SAASjf,EAAQ,GAC1BA,GAAS,IAAe,GAATA,EACX3qB,KAAKooJ,eAA0B,GAATz9H,GACtB3qB,KAAK0uE,WAAyC,IAA5B/jD,EAAM/Y,WAAWjR,OACnCX,KAAKooJ,eAAgB,GAGrBpoJ,KAAK0uE,WAAyC,IAA5B/jD,EAAM/Y,WAAWjR,OAIvCX,KAAK0uE,WAAyC,IAA5B/jD,EAAM/Y,WAAWjR,OAEnCmpJ,EAAa9iH,aAAerc,EAAQ,IACpCm/H,EAAajgH,QAAQ,GACrBigH,EAAalgH,SAASjf,EAAQ,IAE9B3qB,KAAKknJ,UAAW,CAChB,IAAIkD,EAAkB,IAAIzxI,KAAK3Y,KAAKma,aAAahB,cAAenZ,KAAKma,aAAa6sB,WAAa,EAAG,GAAGH,UACjGwjH,EAAiB,IAAI1xI,KAAKmxI,EAAa3wI,cAAe2wI,EAAa9iH,WAAa,EAAG,GAAGH,UACtF7mC,KAAKma,aAAa0sB,YAAcujH,GAAmBC,GAAkBD,GACrEN,EAAajgH,QAAQwgH,GAG7BrqJ,KAAKma,aAAe,IAAIxB,KAAKmxI,EAAa3wI,cAAe2wI,EAAa9iH,WAAY8iH,EAAajjH,WAC/F7mC,KAAKmnJ,aAAc,EACnBnnJ,KAAKsoJ,eAAiBtoJ,KAAKsoJ,eAAiB,OAG5CwB,EAAalgH,SAAS,GACtB5pC,KAAKooJ,eAAgB,EACrBpoJ,KAAKmnJ,aAAc,EACnBnnJ,KAAKsoJ,eAAiBtoJ,KAAKkoJ,YAAcloJ,KAAKsoJ,eAAiB,EAAItoJ,KAAKsoJ,eAsBhF,MAER,IAAK,IAEG,IAAI19H,GAAQ5qB,KAAKonJ,YAAe0C,EAAa3wI,cAAcvH,WAAWjR,OAAS,IACvEX,KAAK+nJ,YAA4C,GAA7B+B,EAAa3wI,cAAqB,GAAKxH,SAASk4I,EAAO3nI,EAAQ,GAAI,IAC3FooI,GAAatqJ,KAAK0oJ,WAAW9hJ,MAAM,OAAS,IAAIjG,OAGpD,GAFAX,KAAK+nJ,aAAc,EACnB/nJ,KAAKmoJ,WAAoC,MAAtB0B,EAAO3nI,EAAQ,GAC9BzG,MAAMmP,GACN,OAEJ,MAAOA,EAAO,KACVA,EAAOjZ,SAASiZ,EAAKhZ,WAAWlE,MAAM,GAAI,IAE1Ckd,EAAO,EACP5qB,KAAKonJ,YAAa,GAGlB0C,EAAa1mI,YAAYwH,GACrBA,EAAKhZ,WAAWjR,SAAW2pJ,IAC3BtqJ,KAAK0uE,YAAa,GAEtB1uE,KAAKma,aAAe,IAAIxB,KAAKmxI,EAAa3wI,cAAe2wI,EAAa9iH,WAAY8iH,EAAajjH,WAC/F7mC,KAAKonJ,YAAa,GAEtB,MAER,IAAK,IAKD,GAJApnJ,KAAK6qB,MAAQ7qB,KAAKqnJ,aAAeyC,EAAaxmI,WAAa,IAAM,IAAI1R,WAAWjR,OAAS,IACjFX,KAAK0pJ,YAAqD,IAAtCI,EAAaxmI,WAAa,IAAM,IAAW,GAAK3R,SAASk4I,EAAO3nI,EAAQ,GAAI,IACxGliB,KAAK4uB,OAAOnX,WAAYzX,KAAK4uB,OAAOnX,WAAoBzX,KAAK4uB,OAAOnX,UACpEzX,KAAK6nJ,WAAY7nJ,KAAK6nJ,WAAoB7nJ,KAAK6nJ,UAC3CpsI,MAAMzb,KAAK6qB,MACX,OAEJ,MAAO7qB,KAAK6qB,KAAO,GACf7qB,KAAK6qB,KAAOlZ,SAAS3R,KAAK6qB,KAAKjZ,WAAWlE,MAAM,GAAI,IAExDo8I,EAAazmI,SAAoD,GAA3Cla,KAAKo3D,MAAMupF,EAAaxmI,WAAa,IAAYtjB,KAAK6qB,KAAO,IACnF7qB,KAAK0uE,WAA6C,IAAhC1uE,KAAK6qB,KAAKjZ,WAAWjR,OACvCX,KAAKqnJ,YAAa,EAClBrnJ,KAAKuoJ,cAAgBvoJ,KAAKuoJ,cAAgB,EAC1C,MACJ,IAAK,IAKD,GAJAvoJ,KAAK6qB,MAAQ7qB,KAAKqnJ,YAAcyC,EAAaxmI,WAAW1R,WAAWjR,OAAS,IACvEX,KAAK0pJ,YAAwC,GAA1BI,EAAaxmI,WAAkB,GAAK3R,SAASk4I,EAAO3nI,EAAQ,GAAI,IACxFliB,KAAK4uB,OAAOnX,WAAYzX,KAAK4uB,OAAOnX,WAAoBzX,KAAK4uB,OAAOnX,UACpEzX,KAAK6nJ,WAAY7nJ,KAAK6nJ,WAAoB7nJ,KAAK6nJ,UAC3CpsI,MAAMzb,KAAK6qB,MACX,OAEJ,IAAS7pB,EAAI,EAAGhB,KAAK6qB,KAAO,GAAI7pB,IAC5BhB,KAAK6qB,KAAOlZ,SAAS3R,KAAK6qB,KAAKjZ,WAAWlE,MAAM,GAAI,IAExDo8I,EAAazmI,SAASrjB,KAAK6qB,MAC3B7qB,KAAK0uE,WAA6C,IAAhC1uE,KAAK6qB,KAAKjZ,WAAWjR,OACvCX,KAAKqnJ,YAAa,EAClBrnJ,KAAKuoJ,cAAgBvoJ,KAAKuoJ,cAAgB,EAC1C,MACJ,IAAK,IAEG,IAAIjtE,GAAWt7E,KAAKsnJ,cAAgBwC,EAAavmI,aAAa3R,WAAWjR,OAAS,IAC1EX,KAAK0pJ,YAA0C,GAA5BI,EAAavmI,aAAoB,GAAK5R,SAASk4I,EAAO3nI,EAAQ,GAAI,IAG7F,GAFAliB,KAAK4uB,OAAOnX,WAAYzX,KAAK4uB,OAAOnX,WAAoBzX,KAAK4uB,OAAOnX,UACpEzX,KAAK6nJ,WAAY7nJ,KAAK6nJ,WAAoB7nJ,KAAK6nJ,UAC3CpsI,MAAM6/D,GACN,OAEJ,IAASt6E,EAAI,EAAGs6E,EAAU,GAAIt6E,IAC1Bs6E,EAAU3pE,SAAS2pE,EAAQ1pE,WAAWlE,MAAM,GAAI,IAEpDo8I,EAAa15G,WAAWkrC,GACxBt7E,KAAK0uE,WAA2C,IAA9B4M,EAAQ1pE,WAAWjR,OACrCX,KAAKsnJ,cAAe,EACpBtnJ,KAAKwoJ,gBAAkBxoJ,KAAKwoJ,gBAAkB,EAC9C,MAER,IAAK,IAEG,IAAIjtE,GAAWv7E,KAAKunJ,eAAiBuC,EAAatmI,aAAa5R,WAAWjR,OAAS,IAC9EX,KAAK0pJ,YAA0C,GAA5BI,EAAatmI,aAAoB,GAAK7R,SAASk4I,EAAO3nI,EAAQ,GAAI,IAG1F,GAFAliB,KAAK4uB,OAAOnX,WAAYzX,KAAK4uB,OAAOnX,WAAoBzX,KAAK4uB,OAAOnX,UACpEzX,KAAK6nJ,WAAY7nJ,KAAK6nJ,WAAoB7nJ,KAAK6nJ,UAC3CpsI,MAAM8/D,GACN,OAEJ,IAASv6E,EAAI,EAAGu6E,EAAU,GAAIv6E,IAC1Bu6E,EAAU5pE,SAAS4pE,EAAQ3pE,WAAWlE,MAAM,GAAI,IAEpDo8I,EAAappH,WAAW66C,GACxBv7E,KAAK0uE,WAA2C,IAA9B6M,EAAQ3pE,WAAWjR,OACrCX,KAAKunJ,eAAgB,EACrBvnJ,KAAKyoJ,gBAAkBzoJ,KAAKyoJ,gBAAkB,EAC9C,MAER,IAAK,IAEGzoJ,KAAK0nJ,iBAAmBmC,EAAO3nI,EAAQ,GAAGL,cAE1C,IAAI0oI,EAAgBvqJ,KAAKiqJ,iBAAiB,0BACtCO,EAAa/qJ,OAAO2V,KAAKm1I,GAC7B,IAASvpJ,EAAI,EAAGhB,KAAK0nJ,gBAAgB/mJ,OAAS,EAAGK,KACoC,IAA5EupJ,EAAaC,EAAW,IAAI3oI,cAAc7d,QAAQhE,KAAK0nJ,kBACrDoC,EAAaxmI,YAAc,IACI,IADIinI,EAAaC,EAAW,IAAI3oI,cAClE7d,QAAQhE,KAAK0nJ,kBAA0BoC,EAAaxmI,WAAa,MACjEwmI,EAAazmI,UAAUymI,EAAaxmI,WAAa,IAAM,IACvDtjB,KAAK4oJ,cAAgBkB,GAEzB9pJ,KAAK0nJ,gBAAkB1nJ,KAAK0nJ,gBAAgBnjB,UAAU,EAAGvkI,KAAK0nJ,gBAAgB/mJ,QAElF,MAER,QACI,MAERX,KAAK4oJ,cAAgBkB,GAGzBjD,EAAe3mJ,UAAUgpJ,YAAc,WAEnC,IAAI9sE,EAAQp8E,KACZ,SAASq8E,EAAqBC,GAC1B,IAAItrD,EAeAgrD,EACAn5D,EAdA4nI,EAAkBruE,EAAM6tE,iBAAiB,iCACzCS,EAAoBjrJ,OAAO2V,KAAKq1I,GAEhCE,EAAYvuE,EAAM6tE,iBAAiB,0BACnCW,EAAanrJ,OAAO2V,KAAKu1I,GAEzBE,EAAczuE,EAAM6tE,iBAAiB,4BACrCa,EAAerrJ,OAAO2V,KAAKy1I,GAC3BE,EAAoB3uE,EAAM6tE,iBAAiB,mCAC3Ce,EAAa5uE,EAAM6tE,iBAAiB,4BAEpCM,EAAgBnuE,EAAM6tE,iBAAiB,0BACvCO,EAAa/qJ,OAAO2V,KAAKm1I,GAG7B,OAAQjuE,GACJ,IAAK,MACL,IAAK,OACL,IAAK,IACDtrD,EAASorD,EAAM8qE,UAAY9qE,EAAMwsE,cAAc/hH,UAAUj1B,WAAawqE,EAAM2qE,gBAAgB,OAAOn1I,WACnGof,EAASorD,EAAM6uE,UAAU7uE,EAAM6rE,WAAY7rE,EAAM8qE,UAAWl2H,GACjC,IAAvBorD,EAAMisE,eACNjsE,EAAM1N,YAAa,EACnB0N,EAAMisE,aAAe,GAEzB,MACJ,IAAK,KACDr3H,EAASorD,EAAM8qE,UAAY9qE,EAAM8uE,SAAS9uE,EAAMwsE,cAAc/hH,UAAW,GAAKu1C,EAAM2qE,gBAAgB,OAAOn1I,WAC3Gof,EAASorD,EAAM6uE,UAAU7uE,EAAM6rE,WAAY7rE,EAAM8qE,UAAWl2H,GACjC,IAAvBorD,EAAMisE,eACNjsE,EAAM1N,YAAa,EACnB0N,EAAMisE,aAAe,GAEzB,MACJ,IAAK,IACL,IAAK,KACL,IAAK,MACDr3H,EAASorD,EAAM8qE,WAAa9qE,EAAM+qE,aAAe/qE,EAAMgrE,WAAaqD,EAAgBC,EAAkBtuE,EAAMwsE,cAAc51H,WAAWphB,WAAawqE,EAAM2qE,gBAAgB,gBAAgBn1I,WACxL,MACJ,IAAK,OACDof,EAASorD,EAAM8qE,WAAa9qE,EAAM+qE,aAAe/qE,EAAMgrE,WAAauD,EAASC,EAAWxuE,EAAMwsE,cAAc51H,WAAWphB,WAAawqE,EAAM2qE,gBAAgB,gBAAgBn1I,WAC1K,MACJ,IAAK,QACDof,EAASorD,EAAM8qE,WAAa9qE,EAAM+qE,aAAe/qE,EAAMgrE,WAAayD,EAAWC,EAAa1uE,EAAMwsE,cAAc51H,WAAWphB,WAAawqE,EAAM2qE,gBAAgB,gBAAgBn1I,WAC9K,MACJ,IAAK,IACDof,EAASorD,EAAM+qE,aAAe/qE,EAAMwsE,cAAc5hH,WAAa,GAAGp1B,WAAawqE,EAAM2qE,gBAAgB,SAASn1I,WAC9Gof,EAASorD,EAAM6uE,UAAU7uE,EAAM8rE,YAAa9rE,EAAM+qE,YAAan2H,GAClC,IAAzBorD,EAAMksE,iBACNlsE,EAAM1N,YAAa,EACnB0N,EAAMksE,eAAiB,GAE3B,MACJ,IAAK,KACDt3H,EAASorD,EAAM+qE,YAAc/qE,EAAM8uE,SAAS9uE,EAAMwsE,cAAc5hH,WAAa,EAAG,GAAKo1C,EAAM2qE,gBAAgB,SAASn1I,WACpHof,EAASorD,EAAM6uE,UAAU7uE,EAAM8rE,YAAa9rE,EAAM+qE,YAAan2H,GAClC,IAAzBorD,EAAMksE,iBACNlsE,EAAM1N,YAAa,EACnB0N,EAAMksE,eAAiB,GAE3B,MACJ,IAAK,MACDt3H,EAASorD,EAAM+qE,YAAc4D,EAAiB3uE,EAAMwsE,cAAc5hH,WAAa,GAAKo1C,EAAM2qE,gBAAgB,SAASn1I,WACnH,MACJ,IAAK,OACDof,EAASorD,EAAM+qE,YAAc6D,EAAU5uE,EAAMwsE,cAAc5hH,WAAa,GAAKo1C,EAAM2qE,gBAAgB,SAASn1I,WAC5G,MACJ,IAAK,KACDof,EAASorD,EAAMgrE,WAAahrE,EAAM8uE,SAAS9uE,EAAMwsE,cAAczvI,cAAgB,IAAK,GAAKijE,EAAM2qE,gBAAgB,QAAQn1I,WACvHof,EAASorD,EAAM6uE,UAAU7uE,EAAM+rE,WAAY/rE,EAAMgrE,WAAYp2H,GAC7D,MACJ,IAAK,IACL,IAAK,OACDA,EAASorD,EAAMgrE,WAAahrE,EAAM8uE,SAAS9uE,EAAMwsE,cAAczvI,cAAe,GAAKijE,EAAM2qE,gBAAgB,QAAQn1I,WACjHof,EAASorD,EAAM6uE,UAAU7uE,EAAM+rE,WAAY/rE,EAAMgrE,WAAYp2H,GAC7D,MACJ,IAAK,IACDA,EAASorD,EAAMirE,YAAcjrE,EAAMwsE,cAActlI,WAAa,IAAM,IAAI1R,WAAawqE,EAAM2qE,gBAAgB,QAAQn1I,WACvF,IAAxBwqE,EAAMmsE,gBACNnsE,EAAM1N,YAAa,EACnB0N,EAAMmsE,cAAgB,GAE1B,MACJ,IAAK,KACDv3H,EAASorD,EAAMirE,WAAajrE,EAAM8uE,SAAS9uE,EAAMwsE,cAActlI,WAAa,IAAM,GAAI,GAAK84D,EAAM2qE,gBAAgB,QAAQn1I,WAC7F,IAAxBwqE,EAAMmsE,gBACNnsE,EAAM1N,YAAa,EACnB0N,EAAMmsE,cAAgB,GAE1B,MACJ,IAAK,IACDv3H,EAASorD,EAAMirE,WAAajrE,EAAMwsE,cAActlI,WAAW1R,WAAawqE,EAAM2qE,gBAAgB,QAAQn1I,WAC1E,IAAxBwqE,EAAMmsE,gBACNnsE,EAAM1N,YAAa,EACnB0N,EAAMmsE,cAAgB,GAE1B,MACJ,IAAK,KACDv3H,EAASorD,EAAMirE,WAAajrE,EAAM8uE,SAAS9uE,EAAMwsE,cAActlI,WAAY,GAAK84D,EAAM2qE,gBAAgB,QAAQn1I,WAClF,IAAxBwqE,EAAMmsE,gBACNnsE,EAAM1N,YAAa,EACnB0N,EAAMmsE,cAAgB,GAE1B,MACJ,IAAK,IACDv3H,EAASorD,EAAMkrE,aAAelrE,EAAMwsE,cAAcrlI,aAAa3R,WAAawqE,EAAM2qE,gBAAgB,UAAUn1I,WAC9E,IAA1BwqE,EAAMosE,kBACNpsE,EAAM1N,YAAa,EACnB0N,EAAMosE,gBAAkB,GAE5B,MACJ,IAAK,KACDx3H,EAASorD,EAAMkrE,aAAelrE,EAAM8uE,SAAS9uE,EAAMwsE,cAAcrlI,aAAc,GAAK64D,EAAM2qE,gBAAgB,UAAUn1I,WACtF,IAA1BwqE,EAAMosE,kBACNpsE,EAAM1N,YAAa,EACnB0N,EAAMosE,gBAAkB,GAE5B,MACJ,IAAK,IACDx3H,EAASorD,EAAMmrE,cAAgBnrE,EAAMwsE,cAAcplI,aAAa5R,WAAawqE,EAAM2qE,gBAAgB,UAAUn1I,WAC/E,IAA1BwqE,EAAMqsE,kBACNrsE,EAAM1N,YAAa,EACnB0N,EAAMqsE,gBAAkB,GAE5B,MACJ,IAAK,KACDz3H,EAASorD,EAAMmrE,cAAgBnrE,EAAM8uE,SAAS9uE,EAAMwsE,cAAcplI,aAAc,GAAK44D,EAAM2qE,gBAAgB,UAAUn1I,WACvF,IAA1BwqE,EAAMqsE,kBACNrsE,EAAM1N,YAAa,EACnB0N,EAAMqsE,gBAAkB,GAE5B,MACJ,IAAK,IACDz3H,EAAS7nB,KAAKo3D,MAAM6b,EAAMwsE,cAAcnlI,kBAAoB,KAAK7R,WACjE,MACJ,IAAK,KACDoqE,EAAeI,EAAMwsE,cAAcnlI,kBAC/B24D,EAAMwsE,cAAcnlI,kBAAoB,KACxCu4D,EAAe7yE,KAAKo3D,MAAM6b,EAAMwsE,cAAcnlI,kBAAoB,KAEtEuN,EAASorD,EAAM8uE,SAASlvE,EAAc,GACtC,MACJ,IAAK,MACDhrD,EAASorD,EAAM8uE,SAAS9uE,EAAMwsE,cAAcnlI,kBAAmB,GAC/D,MACJ,IAAK,IACL,IAAK,KACDuN,EAASorD,EAAMwsE,cAActlI,WAAa,GAAKinI,EAAaC,EAAW,IAAMD,EAAaC,EAAW,IACrG,MACJ,IAAK,IACL,IAAK,KACL,IAAK,MACL,IAAK,OACD3nI,EAAc,CACVvG,OAAQggE,EACR9tE,KAAM,WAAY+N,SAAU,MAAOC,SAAU4/D,EAAMxtD,OAAOxS,cAE9D4U,EAASorD,EAAMxtD,OAAOrU,UAAU8B,WAAW+/D,EAAMwsE,cAAe/lI,GAChE,MAGR,GADAmO,OAAoBzlB,IAAXylB,EAAuBA,EAASsrD,EAAW5uE,MAAM,EAAG4uE,EAAW37E,OAAS,GAC7Ey7E,EAAMurE,aAAc,CAEpB,IADA,IAAIwD,EAAa,GACRnqJ,EAAI,EAAGA,EAAIgwB,EAAOrwB,OAAQK,IAC/BmqJ,GAAc7uE,EAAW,GAE7B,OAAO6uE,EAGP,OAAOn6H,EAGf,OAAOqrD,GAEXwqE,EAAe3mJ,UAAU4oJ,iBAAmB,WACxC,IAAI5mI,EAAQliB,KAAK4uB,OAAO5W,aAAa6I,eACjC2oI,EAAa,IAC6C,IAA1DxpJ,KAAKinJ,gBAAgBjjJ,QAAQhE,KAAKgnJ,WAAW9kI,MAC7CsnI,EAAaxpJ,KAAKgnJ,WAAW9kI,IAEjCliB,KAAK2pJ,kBACL,IAAIlmB,EAAazjI,KAAK0oJ,WAAW7tI,QAAQ7a,KAAKg4E,YAAah4E,KAAKkpJ,eAChElpJ,KAAK2nJ,cAAe,EACpB3nJ,KAAKgnJ,WAAahnJ,KAAK0oJ,WAAW7tI,QAAQ7a,KAAKg4E,YAAah4E,KAAKkpJ,eACjElpJ,KAAKioJ,WAAajoJ,KAAKkoJ,YAAcloJ,KAAKmoJ,YAAa,EACvDnoJ,KAAK2nJ,cAAe,EACpB3nJ,KAAKmpJ,mBAAqBnpJ,KAAKgnJ,WAC/BhnJ,KAAK0uC,cAAgB+0F,EACrBzjI,KAAK4uB,OAAO5W,aAAaS,MAAQgrH,EACjCzjI,KAAK4uB,OAAO5W,aAAaS,MAAQgrH,EACjC,IAAK,IAAIziI,EAAI,EAAGA,EAAIhB,KAAKgnJ,WAAWrmJ,OAAQK,IACxC,GAAIwoJ,IAAexpJ,KAAKgnJ,WAAWhmJ,GAAI,CACnCkhB,EAAQlhB,EACR,MAKR,GAFAhB,KAAK4uB,OAAO5W,aAAa6I,eAAiBqB,EAC1CliB,KAAK6oJ,uBACA7oJ,KAAK0uE,YAAc1uE,KAAK8nJ,cAAgB9nJ,KAAKgoJ,YAAa,CAC3D,IAAIoD,GAAaprJ,KAAK0uE,WACtB1uE,KAAK0uE,WAAa1uE,KAAK8nJ,YAAa,EACpC9nJ,KAAKupJ,kBAAkB6B,GAEvBprJ,KAAKgoJ,cACLhoJ,KAAK8nJ,YAAa,GAEtB9nJ,KAAKgoJ,aAAc,GAEvBnB,EAAe3mJ,UAAUqpJ,kBAAoB,SAAU6B,GACnD,IAAIlpI,EAAQliB,KAAK4uB,OAAO5W,aAAa6I,eACjCsB,EAAMniB,KAAK4uB,OAAO5W,aAAa8I,aAC/BuqI,EAAcD,EAAalpI,EAAQ,EAAIC,EAC3CniB,KAAK6nJ,WAAY,EACjB,MAAOwD,EAAcrrJ,KAAKgnJ,WAAWrmJ,QAAU0qJ,GAAe,EAAG,CAC7D,GAAIrrJ,KAAKinJ,gBAAgBjjJ,QAAQhE,KAAKgnJ,WAAWqE,KAAiB,EAAG,CACjErrJ,KAAK8zE,aAAa9zE,KAAKgnJ,WAAWqE,IAClC,MAEJA,GAA6BD,GAAc,EAAI,IAGvDvE,EAAe3mJ,UAAUgrJ,SAAW,SAAUruI,EAAKkuB,GAI/C,IAHA,IAAIugH,EAAYzuI,EAAIjL,WAChBjR,EAASoqC,EAAQugH,EAAU3qJ,OAC3BqwB,EAAS,GACJhwB,EAAI,EAAGA,EAAIL,EAAQK,IACxBgwB,GAAU,IAEd,OAAOA,EAASs6H,GAEpBzE,EAAe3mJ,UAAU+qJ,UAAY,SAAUM,EAAQrE,EAAWsE,GAC9D,IAAIx6H,EAASw6H,EAIb,OAHID,IAAWrE,IACXl2H,EAAS,KAENA,GAEX61H,EAAe3mJ,UAAU6pJ,eAAiB,SAAUztI,EAAQmvI,GACxD,OAAQnvI,GACJ,IAAK,IACDtc,KAAKknJ,UAAYuE,EACjB,MACJ,IAAK,IACDzrJ,KAAKmnJ,YAAcsE,EACdA,IACDzrJ,KAAK4oJ,cAAch/G,SAAS,GAC5B5pC,KAAKynJ,eAAiB,IAE1B,MACJ,IAAK,IACDznJ,KAAKonJ,WAAaqE,EAClB,MACJ,IAAK,IACL,IAAK,IACDzrJ,KAAKqnJ,WAAaoE,EACbA,IACDzrJ,KAAK0nJ,gBAAkB,IAE3B,MACJ,IAAK,IACD1nJ,KAAKsnJ,aAAemE,EACpB,MACJ,IAAK,IACDzrJ,KAAKunJ,cAAgBkE,EACrB,MACJ,QACI,OAAO,EAEf,OAAO,GAEX5E,EAAe3mJ,UAAUupJ,eAAiB,SAAUiC,GAChD,IAAIxpI,EAAQliB,KAAK4uB,OAAO5W,aAAa6I,eACjC2oI,EAAa,GACjB,IAA8D,IAA1DxpJ,KAAKinJ,gBAAgBjjJ,QAAQhE,KAAKgnJ,WAAW9kI,IAAjD,CACIsnI,EAAaxpJ,KAAKgnJ,WAAW9kI,GAKjC,IAAI4nI,EAAe,IAAInxI,KAAK3Y,KAAK4oJ,cAAczvI,cAAenZ,KAAK4oJ,cAAc5hH,WAAYhnC,KAAK4oJ,cAAc/hH,UAAW7mC,KAAK4oJ,cAActlI,WAAYtjB,KAAK4oJ,cAAcrlI,aAAcvjB,KAAK4oJ,cAAcplI,cAC9MxjB,KAAKma,aAAe,IAAIxB,KAAK3Y,KAAK4oJ,cAAczvI,cAAenZ,KAAK4oJ,cAAc5hH,WAAYhnC,KAAK4oJ,cAAc/hH,UAAW7mC,KAAK4oJ,cAActlI,WAAYtjB,KAAK4oJ,cAAcrlI,aAAcvjB,KAAK4oJ,cAAcplI,cAC/M,IAAImoI,EAAiBD,GAAe,EAAI,EACxC,OAAQlC,GACJ,IAAK,IACDM,EAAajgH,QAAQigH,EAAajjH,UAAY8kH,GAC9C,MACJ,IAAK,IAEG,IAAIC,EAAW9B,EAAa9iH,WAAa2kH,EAGzC,GAFA7B,EAAajgH,QAAQ,GACrBigH,EAAalgH,SAASgiH,GAClB5rJ,KAAKknJ,UAAW,CAChB,IAAIkD,EAAkB,IAAIzxI,KAAK3Y,KAAKma,aAAahB,cAAenZ,KAAKma,aAAa6sB,WAAa,EAAG,GAAGH,UACjGwjH,EAAiB,IAAI1xI,KAAKmxI,EAAa3wI,cAAe2wI,EAAa9iH,WAAa,EAAG,GAAGH,UACtF7mC,KAAKma,aAAa0sB,YAAcujH,GAAmBC,GAAkBD,EACrEN,EAAajgH,QAAQwgH,GAGrBP,EAAajgH,QAAQ7pC,KAAKma,aAAa0sB,gBAI3CijH,EAAajgH,QAAQ7pC,KAAKma,aAAa0sB,WAE3C7mC,KAAKma,aAAe,IAAIxB,KAAKmxI,EAAa3wI,cAAe2wI,EAAa9iH,WAAY8iH,EAAajjH,WAC/F,MAER,IAAK,IACDijH,EAAa1mI,YAAY0mI,EAAa3wI,cAAgBwyI,GACtD,MACJ,IAAK,IACL,IAAK,IACD7B,EAAazmI,SAASymI,EAAaxmI,WAAaqoI,GAChD,MACJ,IAAK,IACD7B,EAAa15G,WAAW05G,EAAavmI,aAAeooI,GACpD,MACJ,IAAK,IACD7B,EAAappH,WAAWopH,EAAatmI,aAAemoI,GACpD,MACJ,IAAK,IACD7B,EAAazmI,UAAUymI,EAAaxmI,WAAa,IAAM,IACvD,MACJ,QACI,MAERtjB,KAAK4oJ,cAAgBkB,EAAa3wI,cAAgB,EAAI2wI,EAAe9pJ,KAAK4oJ,eACZ,IAA1D5oJ,KAAKinJ,gBAAgBjjJ,QAAQhE,KAAKgnJ,WAAW9kI,KAC7CliB,KAAK+pJ,eAAe/pJ,KAAKgnJ,WAAW9kI,IAAQ,KAGpD2kI,EAAe3mJ,UAAU+pJ,iBAAmB,SAAU3tI,GAClD,IACI0U,EADAxW,EAASxa,KAAK4uB,OAAOpU,OAQzB,OALIwW,EADW,OAAXxW,GAA8B,UAAXA,EACV,eAAS8B,EAAQ,kBAGjB,eAAS,QAAe9B,EAAU,8BAAgC8B,EAAS,QAEjF0U,GAEX61H,EAAe3mJ,UAAUyoJ,kBAAoB,WACzC,IAAIzsI,EAAgBlc,KAAKiqJ,iBAAiB,yCAA0Cr4I,WAgBpF,MAf+B,eAA3B5R,KAAK4uB,OAAOpX,aACZ0E,EAAgBlc,KAAKiqJ,iBAAiB,yCAA0Cr4I,WAC5E5R,KAAK4uB,OAAOtS,QAAUtc,KAAK4uB,OAAO1S,eAClCA,EAAelc,KAAK4uB,OAAO1S,eAGJ,mBAA3Blc,KAAK4uB,OAAOpX,aACZ0E,EAAgBlc,KAAKiqJ,iBAAiB,yCAA0Cr4I,WAC5E5R,KAAK4uB,OAAOzS,iBACZD,EAAelc,KAAK4uB,OAAOzS,iBAGJ,eAA3Bnc,KAAK4uB,OAAOpX,aACZ0E,EAAelc,KAAK4uB,OAAOyjD,kBAExBn2D,GAEX2qI,EAAe3mJ,UAAUk1E,aAAe,WACpCp1E,KAAKknJ,UAAYlnJ,KAAKmnJ,YAAcnnJ,KAAKonJ,WAAapnJ,KAAKqnJ,WAAarnJ,KAAKsnJ,aAAetnJ,KAAKunJ,eAAgB,EACjHvnJ,KAAKwzE,eAETqzE,EAAe3mJ,UAAUszE,YAAc,WACnCxzE,KAAKynJ,eAAiBznJ,KAAK0nJ,gBAAkB,GAC7C,IAAIjkB,EAAazjI,KAAK0oJ,WAAW7tI,QAAQ7a,KAAKg4E,YAAah4E,KAAKkpJ,eAChElpJ,KAAK2nJ,cAAe,EACpB3nJ,KAAKgnJ,WAAahnJ,KAAK0oJ,WAAW7tI,QAAQ7a,KAAKg4E,YAAah4E,KAAKkpJ,eACjElpJ,KAAK2nJ,cAAe,EACpB3nJ,KAAKmpJ,mBAAqBnpJ,KAAKgnJ,WAC/BhnJ,KAAK0uC,cAAgB+0F,EACrBzjI,KAAK4uB,OAAO3U,iBAAiBwpH,IAEjCojB,EAAe3mJ,UAAUsS,QAAU,WAC/BxS,KAAK47C,uBAEFirG,EAn0BwB,G,YCT/B,EAAwC,WACxC,IAAIvnJ,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAiB5C,OAAWwtG,OAAO,GAMlB,IAAI,EAAoC,SAAU1qG,GAE9C,SAASgpJ,IACL,OAAkB,OAAXhpJ,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAY/D,OAdA,EAAU6rJ,EAAoBhpJ,GAI9BgpJ,EAAmB3rJ,UAAUu5I,MAAQ,SAAU1zH,GAC3C/lB,KAAK0xB,KAAO1xB,KAAK4uB,OAAO+4E,WACK,mBAAzB5hF,EAAKwJ,OAAOkC,SACZzxB,KAAK+iC,IAAM,IAAI,OAAW,eAAO+oH,GAAsB/lI,EAAM/lB,KAAK4uB,OAAOi3C,aAAaihC,KAAM9mG,KAAK4uB,OAAOnpB,UAAWzF,KAAK4uB,OAAOnkB,SAAUzK,MAAO+lB,EAAKwJ,OAAOmC,KAAKT,SAEnI,uBAAzBlL,EAAKwJ,OAAOkC,WACjBzxB,KAAK+iC,IAAM,IAAI,OAAe,eAAO+oH,GAAsB/lI,EAAM/lB,KAAK4uB,OAAOi3C,aAAaihC,KAAM9mG,KAAK4uB,OAAOnpB,UAAWzF,KAAK4uB,OAAOnkB,SAAUzK,MAAO+lB,EAAKwJ,OAAOmC,KAAKT,UAEzKjxB,KAAK+iC,IAAI1c,SAASN,EAAK3iB,UAEpByoJ,EAf4B,CAgBrC,GAGF,SAASC,GAAsB/lI,EAAM+gF,EAAM1rD,EAAK0D,EAAKitG,GACjD,IAAI/Q,EAAoB,WAATl0C,EACXxqF,EAAS,eAAoByJ,EAAKwJ,OAAOjT,OAAQyJ,EAAKwJ,OAAO/gB,MAC7DiK,EAAQ,eAAUsN,EAAKwJ,OAAOsC,MAAO9L,EAAKy/F,SAE9C,OADA/sG,EAAQA,EAAQ,IAAIE,KAAKF,GAAS,KAC3B,CACHX,eAAgBkjI,EAAW,QAAU,SACrCviI,MAAOA,EACP6D,OAAQA,EACRtC,YAAaghI,EACT,GAAKj1H,EAAKwJ,OAAO2yB,WAAYz8C,UAAW21C,EAC5C/iC,QAAS,gBAAW0N,EAAKwJ,OAAQxJ,EAAKgI,YAAahI,EAAK3iB,SACxDqH,SAAUq0C,GAAY,KACtBj5C,MAAOmmJ,GAAgBpmJ,KAAKmmJ,IAIpC,SAASC,GAAgBjmI,GACjBA,EAAKrX,OAA+B,WAAtBqX,EAAKrX,MAAMiS,SACzB3gB,KAAK0xB,KAAKypH,qBAAsB,G,iBCxDpC8Q,GAAkC,WAClC,SAASA,EAAiBr9H,GACtB5uB,KAAK4uB,OAASA,EAWlB,OATAq9H,EAAiB/rJ,UAAUm6I,KAAO,SAAUj3I,EAASqV,GACjD,OAAOA,GAEXwzI,EAAiB/rJ,UAAUu5I,MAAQ,aAGnCwS,EAAiB/rJ,UAAUsS,QAAU,aAG9By5I,EAb0B,GCoBjC,GAAsB,WAQtB,SAASn7C,EAAKliF,EAAQC,GAClB7uB,KAAKyxB,SAAW,CAAE,OAAUqvH,EAAY,OAAUA,EAAY,MAAS,EAAW,OAAU/oC,GAC5F/3G,KAAK+tH,UAAY,GACjB/tH,KAAK6rB,KAAO,GAEZ7rB,KAAKm7I,qBAAsB,EAC3Bn7I,KAAK4uB,OAASA,EACd5uB,KAAK6uB,eAAiBA,EACtB7uB,KAAKya,KAAOza,KAAK6uB,eAAeuxD,WAAW,gBAC3CpgF,KAAK64C,mBACL74C,KAAKksJ,gBACLlsJ,KAAKmsJ,iBACLnsJ,KAAKosJ,mBAwmCT,OAtmCAt7C,EAAK5wG,UAAUmsJ,iBAAmB,WAE9B,IADA,IAAI90H,EAAOv3B,KAAK4uB,OAAOg2E,YACd5jG,EAAI,EAAGA,EAAIu2B,EAAK52B,OAAQK,IAC7B,GAAIhB,KAAK4uB,OAAOi3C,aAAajvB,UAAYrf,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKulC,aAAc,CACpF,IAAIm1G,EAAc,eAClB/0H,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK8f,KAAO,eAAO,IAAIo/E,EAAKy7C,aAAa,GAAKD,GAAatsJ,KAAK4uB,QAAS2I,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK8f,MAAQ,SAG9I6F,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK8f,KAAO,eAAO,IAAIo/E,EAAKy7C,aAAah1H,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK6f,UAC/Fq/E,EAAKy7C,aAAah1H,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK6f,UACtD8F,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK6f,SAAW,gBAAezxB,KAAK4uB,OAAQ5uB,KAAK6uB,gBAAiB0I,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK8f,MAAQ,IAGnJ1xB,KAAK4uB,OAAOqD,IAAI,2BAQpB6+E,EAAK5wG,UAAU4U,cAAgB,WAC3B,MAAO,QAOXg8F,EAAK5wG,UAAU+U,kBAAoB,SAAU9H,GACzC,GAAIA,EAAE0M,SAAW7Z,KAAK8U,gBAItB,IADA,IAAIwd,EAAOtyB,KAAK4uB,OACP/gB,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKjI,EAAE6N,YAAanN,EAAKhK,EAAGlD,OAAQkN,IAAM,CACnE,IAAIwH,EAAOxR,EAAGgK,GACd,OAAQwH,GACJ,IAAK,cACL,IAAK,gBACL,IAAK,gBACGid,EAAKuzC,aAAa0oC,aAAej8E,EAAKuzC,aAAalwB,cAAgBrjB,EAAKuzC,aAAa2oC,gBACrFxuG,KAAKimG,aAET,MACJ,IAAK,OACDjmG,KAAKksJ,gBACL55H,EAAKyqB,QAAS,EACdzqB,EAAKhd,UACL,SAIhBw7F,EAAK5wG,UAAUgsJ,cAAgB,WACvBlsJ,KAAK2nG,YACL3nG,KAAK2nG,WAAWn1F,UAEpBxS,KAAK66F,SAAW,IAAI,EAAW76F,KAAK4uB,OAAQ5uB,KAAK6uB,gBACjD7uB,KAAK2nG,WAAa,IAAI3nG,KAAKyxB,SAASzxB,KAAK4uB,OAAOi3C,aAAaihC,MAAM9mG,KAAK4uB,OAAQ5uB,KAAK6uB,eAAgB7uB,KAAK66F,WAE9GiW,EAAK5wG,UAAU+lG,WAAa,WACxBjmG,KAAKqsJ,oBAQTv7C,EAAK5wG,UAAU8tH,UAAY,SAAU1uC,GACjC,IAAIhtD,EAAOtyB,KAAK4uB,OAChB,GAAK0D,EAAKuzC,aAAalwB,eAAgBrjB,EAAKyqB,QAAqC,UAA3BzqB,EAAKuzC,aAAaihC,KAAxE,CAIA,GADA9mG,KAAK4uB,OAAOxrB,QAAQ8B,UAAU4G,IAAI,cAC7BwmB,EAAKo3F,kBAAkB/oH,QAAU,eAAkBX,KAAK4uB,OAAO44E,cAAc71F,SAAS3R,KAAK4uB,OAAO86F,kBAAkB,GAAGh/G,aAAa,iBAAkB,OACvJ,IAAK40E,EAED,YADAt/E,KAAK4rI,WAAW,qBAAsB5rI,KAAKwsJ,gBAIzCltE,IACNA,EAAKhtD,EAAKo3F,kBAAkB,IAEhC,GAAI1pH,KAAK4uB,OAAO6D,sBAA0D,WAAlCzyB,KAAK4uB,OAAOi3C,aAAaihC,KAAmB,CAChF,IAAI5R,EAAMvjF,SAAS2tE,EAAG50E,aAAa,iBAAkB,IACrD40E,EAAKt/E,KAAK4uB,OAAO44E,cAActS,GAEnC,IAAIu3D,EAASn6H,EAAK0nB,aAAa9tC,cAAc,iBACzC45G,EAAWxzF,EAAK+nB,mBAAmBnuC,cAAc,SACjDomB,EAAK8nB,YAAc,eAAkBqyG,IAAW3mC,GAAYA,EAAS55G,cAAc,iBACnFlM,KAAKg/I,UAAY1/D,EAAG0V,WAAarjF,SAAS2gB,EAAK+nB,mBAAmBnuC,cAAc,SAASA,cAAc,iBAAiBxB,aAAa,iBAAkB,IAElJ+hJ,IACLzsJ,KAAKg/I,UAAY1/D,EAAG0V,WAAay3D,EAAOz3D,UAEnB,SAArB1V,EAAGv4E,MAAMC,UAGbhH,KAAK2nG,WAAWqmB,UAAU1uC,GAC1Bt/E,KAAK0sJ,iBACLp6H,EAAKlvB,QAAQ8I,cAAc,gBAAgBnF,MAAMC,QAAU,OAC3DhH,KAAK4uB,OAAOhV,OAAO,aAAc,OAUrCk3F,EAAK5wG,UAAUi3I,aAAe,SAAU73D,EAAIv5D,GACxC,IAAIoxH,EAAen3I,KAAKg/I,UACG,SAAvBh/I,KAAK4uB,OAAOvpB,QAAiE,WAA5CrF,KAAK4uB,OAAOi3C,aAAaoxE,gBAA+BlxH,GAA6B,QAArBA,EAAKgI,aACtG/tB,KAAK4uB,OAAOorB,aAAav4B,kBAAkBhY,aAAezJ,KAAK4uB,OAAOgwB,kBAAkBX,aACxF,eAAS,GAAGvwC,MAAMpK,KAAKg8E,EAAGnnE,uBAAuB,SAAoB,kBAEhEg/H,GAAgB73D,GAAMA,EAAGp6E,WAC9B,eAAS,GAAGwI,MAAMpK,KAAKg8E,EAAGnnE,uBAAuB,SAAoB,kBAQ7E24F,EAAK5wG,UAAU6kG,UAAY,WACe,UAAlC/kG,KAAK4uB,OAAOi3C,aAAaihC,MAAoB9mG,KAAK4uB,OAAOi3C,aAAa8mF,mBACnE3sJ,KAAK4uB,OAAOxrB,QAAQ+U,uBAAuB,eAAexX,OAC7DX,KAAK4rI,WAAW,aAAc5rI,KAAK+pI,YAGvC/pI,KAAK4uB,OAAOxrB,QAAQ8B,UAAUC,OAAO,aACrCnF,KAAK2nG,WAAW5C,YAChB/kG,KAAK0sJ,iBACL1sJ,KAAK4uB,OAAOhV,OAAO,QAAkB,MAEzCk3F,EAAK5wG,UAAUwsJ,eAAiB,WAC5B1sJ,KAAK4uB,OAAOhV,OAAO,QAAuB,KAU9Ck3F,EAAK5wG,UAAU+tH,UAAY,SAAUpiG,EAAMpf,GACvC,GAAKzM,KAAK4uB,OAAOi3C,aAAa0oC,YAA9B,CAGA,IAAIxoF,EAAO,CAAEioG,WAAW,GACnBniG,GACD7rB,KAAK4uB,OAAOhV,OAAO,QAAoCmM,GAEvDA,EAAKioG,YACLhuH,KAAK4uB,OAAOxrB,QAAQ8B,UAAU4G,IAAI,aAClC9L,KAAK2nG,WAAWsmB,UAAUpiG,EAAMpf,GAChCzM,KAAK0sJ,iBACL1sJ,KAAK4uB,OAAOhV,OAAO,YAAa,OAWxCk3F,EAAK5wG,UAAU4tH,aAAe,SAAUC,EAAWliG,GAC/C,IAAIyG,EAAOtyB,KAAK4uB,OAChB,GAAK0D,EAAKuzC,aAAa2oC,cAAvB,CAGA,GAAK3iF,GACIyG,EAAK+yE,qBAAqB1kG,SAAU,eAAkB2xB,EAAK26E,iBAKpE,OAAI36E,EAAKuzC,aAAa+mF,yBAClB5sJ,KAAK+tH,UAAYA,EACjB/tH,KAAK6rB,KAAOA,OACZ7rB,KAAK4rI,WAAW,gBAAiB5rI,KAAK+pI,iBAG1C/pI,KAAK2nG,WAAWmmB,aAAaC,EAAWliG,GAVhC7rB,KAAK4rI,WAAW,uBAAwB5rI,KAAKwsJ,aAkBzD17C,EAAK5wG,UAAUguH,UAAY,SAAU5uC,GACjCt/E,KAAK+jJ,aAAezkE,EAAG50E,aAAa,YACpC,IAAI46G,EAAStlH,KAAK4uB,OAAO22F,oBAAoBvlH,KAAK+jJ,cAC7C,eAAkBz+B,IACnBtlH,KAAK8tH,aAAa,KAAMxI,EAAOz5F,OAQvCilF,EAAK5wG,UAAUg9B,QAAU,WACiB,UAAlCl9B,KAAK4uB,OAAOi3C,aAAaihC,MAAoB9mG,KAAK4uB,OAAOi3C,aAAa8mF,oBACrE,eAAkB3sJ,KAAKk5I,UAAYl5I,KAAKk5I,QAAQ1xE,cACjDxnE,KAAK4uB,OAAO+4E,WAAWymB,WACvBpuH,KAAK4uB,OAAOhV,OAAO,QAAwB,IACvC,eAAkB5Z,KAAKk5I,UAAYl5I,KAAKk5I,QAAQ1xE,YAChDxnE,KAAK4rI,WAAW,mBAAoB5rI,KAAK+pI,WAIjD/pI,KAAK6sJ,cAUT/7C,EAAK5wG,UAAU0nG,WAAa,SAAU5S,EAAUnjE,EAAOpZ,GACnDzY,KAAK2nG,WAAWC,WAAW5S,EAAUnjE,EAAOpZ,IAShDq4F,EAAK5wG,UAAUmuH,UAAY,SAAU5hH,EAAOof,GACxC7rB,KAAK2nG,WAAW0mB,UAAU5hH,EAAOof,IAOrCilF,EAAK5wG,UAAU4hJ,YAAc,WACzB9hJ,KAAK+kG,aAOT+L,EAAK5wG,UAAUsjJ,UAAY,WACvBxjJ,KAAKk9B,WAST4zE,EAAK5wG,UAAUiuH,SAAW,SAAU1hH,EAAOolB,GACvC7xB,KAAK2nG,WAAWwmB,SAAS1hH,EAAOolB,IAOpCi/E,EAAK5wG,UAAUg0H,iBAAmB,WAC9B,IAAI44B,GAAQ9sJ,KAAKk5I,SAAUl5I,KAAKk5I,QAAQ1xE,WACpCulF,GAAQ/sJ,KAAKgtJ,UAAWhtJ,KAAKgtJ,SAASxlF,WACtCylF,GAAQjtJ,KAAKktJ,WAAYltJ,KAAKktJ,UAAU1lF,WAC5C,OAAOslF,GAASC,GAASE,GAO7Bn8C,EAAK5wG,UAAUouH,gBAAkB,WAC7B,OAAOtuH,KAAK2nG,WAAW2mB,gBAAkBtuH,KAAK2nG,WAAW2mB,kBAAoB,IAOjFxd,EAAK5wG,UAAUitJ,uBAAyB,WACpC,IAAIpqH,EAAM/iC,KAAKm+I,qBAAqBn+I,KAAKk5I,QAAQ91I,QAAS,IAC1D,OAAO2/B,EAAItjC,OAAO2V,KAAK2tB,GAAK,KAOhC+tE,EAAK5wG,UAAUkuH,SAAW,WACtBpuH,KAAK2nG,WAAWymB,YAEpBtd,EAAK5wG,UAAU2sJ,WAAa,WACxB7sJ,KAAK4uB,OAAOxrB,QAAQ8B,UAAUC,OAAO,aACrCnF,KAAK2nG,WAAWzqE,UAChBl9B,KAAK0sJ,kBAET57C,EAAK5wG,UAAU0rI,WAAa,SAAU/gI,EAASk4B,GAC3CA,EAAIl4B,QAAU,QAAU7K,KAAKya,KAAKC,YAAY7P,GAAW,SACzDk4B,EAAIh7B,WACJg7B,EAAI7yB,QAER4gG,EAAK5wG,UAAUktJ,iBAAmB,SAAUl0H,EAAKzgB,GAC7C,IAAIoE,EAAMpE,EACV,OAAQygB,EAAI1qB,MACR,IAAK,SACDqO,EAAOpB,MAAM3U,WAAW2R,IAA8B,KAApB3R,WAAW2R,GAC7C,MACJ,IAAK,UACoB,gBAAjBygB,EAAIzH,WACJ5U,EAAMpE,IAAUzY,KAAKya,KAAKC,YAAY,UAAqB,IAAVjC,GAErD,MACJ,IAAK,OACL,IAAK,WACoB,mBAAjBygB,EAAIzH,UAAkD,uBAAjByH,EAAIzH,UACtChZ,GAASA,EAAM9X,OAClBkc,EAAM,IAAIlE,KAAKF,GAEA,KAAVA,IACLoE,EAAM,MAEV,MACJ,IAAK,WACDA,EAAMpE,IAAUA,EAAQ,IAAIE,KAAKF,IAC7BA,EAAMU,cAAgB,IAAM,gBAAQV,EAAMuuB,WAAa,GAAK,IAAM,gBAAQvuB,EAAMouB,WAAa,KACjG,MAER,OAAOhqB,GAEXi0F,EAAK5wG,UAAUmtJ,eAAiB,WAE5B,IADA,IAAIviH,EAAW,GAAGp9B,MAAMpK,KAAKtD,KAAK4uB,OAAOxrB,QAAQ+U,uBAAuB,gBAC/DtK,EAAK,EAAGo9E,EAAangD,EAAUj9B,EAAKo9E,EAAWtqF,OAAQkN,IAAM,CAClE,IAAIk/C,EAAOk+B,EAAWp9E,GACtB,gBAAOk/C,GAEX/sD,KAAK4uB,OAAOorB,aAAav4B,kBAAkB1a,MAAMhD,SAAW,WACxD/D,KAAK4uB,OAAOsrB,iBACRl6C,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,mBAClClM,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,iBAAiBnF,MAAMhD,SAAW,IAExE/D,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,kBAAkBnF,MAAMhD,SAAW,KAG7E+sG,EAAK5wG,UAAUksJ,iBAAmB,WAC9BpsJ,KAAK+pI,UAAY/pI,KAAKstJ,UAAU,CAC5B,CACIr4H,MAAOj1B,KAAKutJ,MAAM3nJ,KAAK5F,MACvBisI,YAAa,CAAEphI,QAAS7K,KAAKya,KAAKC,YAAY,YAC1CjQ,SAAUzK,KAAK4uB,OAAOnkB,SAAW,aAAoBzK,KAAK4uB,OAAOnkB,SAAW,YAC5EyhI,WAAW,IAEnB,CACIj3G,MAAOj1B,KAAKwtJ,UAAU5nJ,KAAK5F,MAC3BisI,YAAa,CAAExhI,SAAUzK,KAAK4uB,OAAOnkB,SAAW,UAAiBzK,KAAK4uB,OAAOnkB,SAAW,SACpFI,QAAS7K,KAAKya,KAAKC,YAAY,mBAExC,gBAEPo2F,EAAK5wG,UAAUisJ,eAAiB,WAC5BnsJ,KAAKwsJ,UAAYxsJ,KAAKstJ,UAAU,CAC5B,CACIr4H,MAAOj1B,KAAKytJ,WAAW7nJ,KAAK5F,MAC5BisI,YAAa,CAAEphI,QAAS7K,KAAKya,KAAKC,YAAY,YAC1CjQ,SAAUzK,KAAK4uB,OAAOnkB,SAAW,UAAiBzK,KAAK4uB,OAAOnkB,SAAW,SACzEyhI,WAAW,KAEpB,cAEPp7B,EAAK5wG,UAAUutJ,WAAa,WACxBztJ,KAAKwsJ,UAAUt6I,QAEnB4+F,EAAK5wG,UAAUotJ,UAAY,SAAUI,EAAY19I,GAC7C,IAAIuuC,EAAMv+C,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAE+G,GAAItL,KAAK4uB,OAAOxrB,QAAQkI,GAAK0E,IAC1EhQ,KAAK4uB,OAAOxrB,QAAQsB,YAAY65C,GAChC,IAAIp7C,EAAU,CACVo1I,eAAe,EACfD,SAAS,EACT1hH,SAAS,EACT8hH,eAAe,EACfp4I,OAAQN,KAAK4uB,OAAOxrB,QACpBkC,MAAO,QACPymI,kBAAmB,CAAEhpI,OAAQ,QAC7B0H,SAAUzK,KAAK4uB,OAAOnkB,SAAWzK,KAAK4uB,OAAOnkB,SAAW,IAE5DtH,EAAQ+U,QAAUw1I,EAClB,IAAI3qH,EAAM,IAAI,OAAO5/B,GACjBm1D,EAAmB,mBAGvB,OAFAv1B,EAAI,GAAKu1B,IAAoB,EAC7Bv1B,EAAI1c,SAASk4B,GACNxb,GAEX+tE,EAAK5wG,UAAUstJ,UAAY,WACnBxtJ,KAAK4uB,OAAOwJ,cACZp4B,KAAK4uB,OAAOwJ,YAAYu1H,eAAgB,GAE5C3tJ,KAAK4uB,OAAO4xE,YAAYotD,iBACxB5tJ,KAAK4uB,OAAO4xE,YAAYuhD,eACxB/hJ,KAAK+pI,UAAU73H,OACflS,KAAK4uB,OAAOhV,OAAO,iBAAkB,KAEzCk3F,EAAK5wG,UAAUqtJ,MAAQ,WACnB,OAAQvtJ,KAAK+pI,UAAU3mI,QAAQ8I,cAAc,kBAAkBuV,kBAAkBgnB,WAC7E,KAAKzoC,KAAKya,KAAKC,YAAY,iBACvB1a,KAAK2nG,WAAWmmB,aAAa9tH,KAAK+tH,UAAW/tH,KAAK6rB,MAClD,MACJ,KAAK7rB,KAAKya,KAAKC,YAAY,cACvB1a,KAAK2nG,WAAW5C,YAChB,MACJ,KAAK/kG,KAAKya,KAAKC,YAAY,oBACvB1a,KAAK6sJ,aACL,MACJ,KAAK7sJ,KAAKya,KAAKC,YAAY,wBACe,UAAlC1a,KAAK4uB,OAAOi3C,aAAaihC,MACzB9mG,KAAK2nG,WAAWy+C,uBAEhBpmJ,KAAK4uB,OAAOwJ,cACZp4B,KAAK4uB,OAAOwJ,YAAYu1H,eAAgB,GAE5C3tJ,KAAK6tJ,gBACL,MAER7tJ,KAAKwtJ,aAET18C,EAAK5wG,UAAU4tJ,sBAAwB,WAC/B9tJ,KAAK4uB,OAAOmuB,SACZ/8C,KAAKu+I,iBACLv+I,KAAKw+I,eAETx+I,KAAKwS,WAMTs+F,EAAK5wG,UAAU24C,iBAAmB,WAC1B74C,KAAK4uB,OAAOE,cAGhB9uB,KAAK+tJ,aAAe,CAAC,CAAEr/I,MAAO,QAA4BiqF,QAAS34F,KAAKiV,mBACpE,CAAEvG,MAAO,QAAmBiqF,QAAS34F,KAAKimG,YAC1C,CAAEv3F,MAAO,QAAmBiqF,QAAS34F,KAAKyzH,iBAC1C,CAAE/kH,MAAO,OAAgBiqF,QAAS34F,KAAKqsJ,kBACvC,CAAE39I,MAAO,QAAuBiqF,QAAS34F,KAAKqtJ,gBAC9C,CAAE3+I,MAAO,QAAqBiqF,QAAS34F,KAAKguJ,cAC5C,CAAEt/I,MAAO,QAAoBiqF,QAAS34F,KAAKw+I,aAC3C,CAAE9vI,MAAO,QAAgBiqF,QAAS34F,KAAK8tJ,wBAC3C,eAAuB9tJ,KAAK4uB,OAAQ5uB,KAAK+tJ,cAAc,EAAM/tJ,MAC7DA,KAAKyoE,oBAAsBzoE,KAAKiuJ,cAAcroJ,KAAK5F,MACnDA,KAAKkuJ,uBAAyBluJ,KAAKmuJ,eAAevoJ,KAAK5F,MACvDA,KAAK4uB,OAAOiqB,iBAAiB,OAAoB74C,KAAKyoE,qBACtDzoE,KAAK4uB,OAAOiqB,iBAAiB,OAAuB74C,KAAKkuJ,0BAM7Dp9C,EAAK5wG,UAAU07C,oBAAsB,WAC7B57C,KAAK4uB,OAAOE,cAGhB,eAAuB9uB,KAAK4uB,OAAQ5uB,KAAK+tJ,cAAc,GACvD/tJ,KAAK4uB,OAAOgtB,oBAAoB,OAAuB57C,KAAKkuJ,wBAC5DluJ,KAAK4uB,OAAOgtB,oBAAoB,OAAoB57C,KAAKyoE,uBAE7DqoC,EAAK5wG,UAAUiuJ,eAAiB,SAAUhhJ,GACtC,IAAIihJ,EAAU,CAAC,MAAO,YAAa,OAAQ,SAAU,SAAU,kBAAmB,uBAC9EA,EAAQpqJ,QAAQmJ,EAAE4gB,aAAe,IACjC/tB,KAAK4uB,OAAOmuB,QAAS,GAEH,cAAlB5vC,EAAE4gB,aACF/tB,KAAK4uB,OAAO4xE,YAAYuhD,eAE5B/hJ,KAAK0sJ,kBAQT57C,EAAK5wG,UAAUi+I,qBAAuB,SAAUluG,EAAM0sG,GAClD,IAAIrqH,EAAOtyB,KAAK4uB,OAChB,GAAI0D,EAAKuzC,aAAajvB,SAAU,CAE5B,IADA,IAAI9L,EAAW,GAAGp9B,MAAMpK,KAAK2sC,EAAKnF,UACzBrT,EAAI,EAAGA,EAAIqT,EAASnqC,OAAQ82B,IACjC,IAAMqT,EAASn5B,SAAS8lB,EAAE7lB,WAAY,KAAKkW,aAAa,SAA+D,mBAAnDgjB,EAASn5B,SAAS8lB,EAAE7lB,WAAY,KAAKpN,WACrGsmC,EAASn5B,SAAS8lB,EAAE7lB,WAAY,KAAK1M,UAAUmB,SAAS,oBAAqE,WAA9CykC,EAASn5B,SAAS8lB,EAAE7lB,WAAY,KAAKpD,OACnH,gBAAas8B,EAASn5B,SAAS8lB,EAAE7lB,WAAY,KAAM,sBAAuB,gBAAak5B,EAASn5B,SAAS8lB,EAAE7lB,WAAY,KAAM,uBAAyB,CACvJ,IAAIigB,EAASiZ,EAASn5B,SAAS8lB,EAAE7lB,WAAY,KAAKkW,aAAa,QAAW,gBAAkBgjB,EAASn5B,SAAS8lB,EAAE7lB,WAAY,KAAKlH,aAAa,SAC1I,gBAAkBogC,EAASn5B,SAAS8lB,EAAE7lB,WAAY,KAAKlH,aAAa,OACpE6kB,EAAS+C,EAAKoG,iBAAiB7G,IAAU,CAAEA,MAAOA,EAAOrjB,KAAMs8B,EAASn5B,SAAS8lB,EAAE7lB,WAAY,KAAKlH,aAAa,SACjH+N,OAAQ,EACQ,aAAhB8W,EAAO/gB,MAAuC,YAAhB+gB,EAAO/gB,KACrCiK,EAAQqyB,EAASn5B,SAAS8lB,EAAE7lB,WAAY,KAAKmhC,QAExCjI,EAASn5B,SAAS8lB,EAAE7lB,WAAY,KAAK6G,OAC1CA,EAAQqyB,EAASn5B,SAAS8lB,EAAE7lB,WAAY,KAAK6G,MACzCqyB,EAASn5B,SAAS8lB,EAAE7lB,WAAY,KAAK+2C,eACrC7d,EAASn5B,SAAS8lB,EAAE7lB,WAAY,KAAK+2C,cAAchoD,SAClD,eAAkBmqC,EAASn5B,SAAS8lB,EAAE7lB,WAAY,KAAK+2C,cAAc,GAAGlwC,SACzEqyB,EAASn5B,SAAS8lB,EAAE7lB,WAAY,KAAKkO,OACrCrH,EAAQqyB,EAASn5B,SAAS8lB,EAAE7lB,WAAY,KACnC+2C,cAAc,GAAGlwC,QAGrBqyB,EAASn5B,SAAS8lB,EAAE7lB,WAAY,KAAK+2C,gBAC1ClwC,EAAQqyB,EAASn5B,SAAS8lB,EAAE7lB,WAAY,KACnC+2C,cAAc,GAAGlwC,OAEtB8W,EAAOmC,MAAoC,kBAArBnC,EAAOmC,KAAK2oH,KAClC5hI,EAAQ,eAAS8W,EAAOmC,KAAK2oH,KAAM9zI,OAA3B,CAAmCukC,EAASn5B,SAAS8lB,EAAE7lB,WAAY,KAAM6G,GAE5E8W,EAAOmC,MAAQnC,EAAOmC,KAAK2oH,OAChC5hI,EAAQ8W,EAAOmC,KAAK2oH,KAAKvvG,EAASn5B,SAAS8lB,EAAE7lB,WAAY,KAAM6G,IAEnEA,EAAQ6Z,EAAKq1E,WAAWylD,iBAAiB79H,EAAQ9W,GACC,UAA9CqyB,EAASn5B,SAAS8lB,EAAE7lB,WAAY,KAAKpD,KACjCs8B,EAASn5B,SAAS8lB,EAAE7lB,WAAY,KAAKmhC,SACrC,OAASlzB,SAAS0P,EAAOsC,MAAOpZ,EAAOkkI,IAItB,kBAAVlkI,GACPzY,KAAK4uB,OAAO1jB,SAASuN,GAEzB,OAASoH,SAAS0P,EAAOsC,MAAOpZ,EAAOkkI,IAInD,OAAOA,EAGX,IADA,IAAIzjH,EAAM5G,EAAKsyE,YAAY3wE,QAAO,SAAUiF,GAAO,OAAOA,EAAIie,gBACrD7f,EAAI,EAAGA,EAAI4B,EAAIv4B,OAAQ22B,IAC5B,GAAI2Y,EAAK,eAAkB/W,EAAIvnB,SAAS2lB,EAAE1lB,WAAY,KAAKigB,QAAS,CAChE,IAAIw4D,EAAgB,GAAG38E,MAAMpK,KAAK2sC,EAAK,eAAkB/W,EAAIvnB,SAAS2lB,EAAE1lB,WAAY,KAAKigB,SACzFw4D,EAAgBA,EAAc1pF,OAAS0pF,EAAgB,CAACp6C,EAAK,eAAkB/W,EAAIvnB,SAAS2lB,EAAE1lB,WAAY,KAAKigB,SAC/G,IAAI6wE,EAAOrY,EAAcp2D,QAAO,SAAU9mB,GACtC,OAAQ,eAAmBA,EAAe,kBAE1B,IAAhBu1F,EAAK/hG,SACL+hG,EAAOrY,EAAcp2D,QAAO,SAAU9mB,GAAK,OAAOA,EAAE2a,aAAa,YAErE,IAAS2P,EAAI,EAAGA,EAAIirE,EAAK/hG,OAAQ82B,IAAK,CAC9Bhf,EAAQzY,KAAKoyE,SAASl5C,EAAIvnB,SAAS2lB,EAAE1lB,WAAY,KAAM8wF,EAAK/wF,SAAS8lB,EAAE7lB,WAAY,KAAM+qI,GAChD,WAAzCzjH,EAAIvnB,SAAS2lB,EAAE1lB,WAAY,KAAKpD,OAChCiK,EAAQzY,KAAK4uB,OAAO1jB,SAASuN,IAEjC,OAASoH,SAASqZ,EAAIvnB,SAAS2lB,EAAE1lB,WAAY,KAAKigB,MAAOpZ,EAAOkkI,IAK5E,IADA,IAAI0R,EAAS,GAAG3gJ,MAAMpK,KAAK2sC,EAAK93B,uBAAuB,YAC9CnX,EAAI,EAAGiiB,EAAMorI,EAAO1tJ,OAAQK,EAAIiiB,EAAKjiB,IAAK,CAC/C,IAAIstJ,EAAQh8H,EAAKwI,eAAeuzH,EAAO18I,SAAS3Q,EAAE4Q,WAAY,KAAKlH,aAAa,iBAChF,GAAI4jJ,GAASA,EAAMz8H,MAAO,CAClBpZ,EAAQzY,KAAKoyE,SAASk8E,EAAOD,EAAO18I,SAAS3Q,EAAE4Q,WAAY,KAAM+qI,GAClD,WAAf2R,EAAM9/I,OACNiK,EAAQzY,KAAK4uB,OAAO1jB,SAASuN,IAEjC,OAASoH,SAASyuI,EAAMz8H,MAAOpZ,EAAOkkI,IAG9C,OAAOA,GAEX7rC,EAAK5wG,UAAUkyE,SAAW,SAAUl5C,EAAK+Z,EAAO0pG,GAC5C,IAAIlkI,EAAQw6B,EAAM0V,cACd1V,EAAM0V,cAAc,GAAGlwC,MAAQw6B,EAAMx6B,MACrC6Z,EAAOtyB,KAAK4uB,OACZ8zE,EAAOxpE,EAAIxH,KAAK2oH,KAcpB,MAbiB,aAAbnhH,EAAI1qB,MAAoC,YAAb0qB,EAAI1qB,OAC/BiK,EAAQw6B,EAAMF,SAEE,kBAAT2vD,GACPA,EAAO,eAASA,EAAMn8F,QACtBkS,EAAQ6Z,EAAKq1E,WAAWylD,iBAAiBl0H,EAAK,EAAO+Z,EAAOx6B,KAG5DA,EAAQ6Z,EAAKq1E,WAAWylD,iBAAiBl0H,EAAKA,EAAIxH,KAAK2oH,KAAKpnG,EAAOx6B,IAEnE,eAAkBkkI,EAAWzjH,EAAIrH,SAAqB,KAAVpZ,IAC5CA,EAAQkkI,EAAWzjH,EAAIrH,QAEpBpZ,GAOXq4F,EAAK5wG,UAAU+tJ,cAAgB,SAAU9gJ,GACrC,GAAsB,gBAAlBA,EAAE4gB,aAAiC/tB,KAAK4uB,OAAOmuB,QACV,UAAlC/8C,KAAK4uB,OAAOi3C,aAAaihC,KAC5B9mG,KAAK+kG,gBAEJ,CACD,IAAI61C,EAAU56I,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,IAAM,QAClDqiJ,EAASvuJ,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,IAAM,QACrD,GAAI0uI,GAAW56I,KAAK4uB,OAAOwrB,YAAgC,kBAAlBjtC,EAAE4gB,aACpCpc,SAAS,gBAAaipI,EAAS,QAAclwI,aAAa,QAAwB,IAAM1K,KAAK4uB,OAAOwrB,WACvG,OAEJ,IAAIo0G,EAAyB,CAAC,kBAAmB,mBAAoB,sBAAuB,oBAAqB,OAAQ,iBAAkB,iBACvIC,GAAgE,IAAnDD,EAAuBxqJ,QAAQmJ,EAAE4gB,aAC9C2gI,EAAuB1uJ,KAAK4uB,OAAO6D,sBAAwBzyB,KAAKk5I,UAC5Dl5I,KAAKk5I,QAAQpqH,cAAgB8rH,GAAW2T,GAA4B,WAAlBphJ,EAAE4gB,cAA6B0gI,IACnFzuJ,KAAK4uB,OAAO6D,sBAA0D,UAAlCzyB,KAAK4uB,OAAOi3C,aAAaihC,MAAoB9mG,KAAKk5I,UAAYl5I,KAAKk5I,QAAQpqH,aAC9G2/H,IAAethJ,EAAEsB,QAAWigJ,KAC/B1uJ,KAAKu+I,iBACLv+I,KAAKw+I,iBASjB1tC,EAAK5wG,UAAUq+I,eAAiB,SAAUhnH,GACtC,IAAIjF,EAAOtyB,KAAK4uB,OACZ0D,EAAKuzC,aAAajvB,WAClB52C,KAAK4uB,OAAOkxE,gBAAgB,CAAC,yBACzB9/F,KAAK4uB,OAAOzmB,SACZnI,KAAK4uB,OAAOwyD,mBAGpB7pD,EAAOA,GAAcv3B,KAAK4uB,OAAO01F,yBAAyBtkH,KAAK4uB,OAAOqrB,4BAClE1iB,EAAKyC,MAAK,SAAUzK,GAAU,OAAQ,eAAkBA,EAAO4nB,mBAC/Dn3C,KAAK4uB,OAAOkxE,gBAAgB,CAAC,iBACzB9/F,KAAK4uB,OAAOzmB,SACZnI,KAAK4uB,OAAOwyD,mBAGpB,IAAK,IAAIvzE,EAAK,EAAG2rI,EAASjiH,EAAM1pB,EAAK2rI,EAAO74I,OAAQkN,IAAM,CACtD,IAAIqrB,EAAMsgH,EAAO3rI,GACb60F,EAAOxpE,EAAIxH,KAAKlf,QAChB0mB,EAAIxH,KAAKlf,UACW,kBAATkwF,GACPA,EAAO,eAASA,EAAMn8F,QACtBm8F,KAGAxpE,EAAIxH,KAAKlf,WAKrB,IADA,IAAIs4B,EAAW,GAAGp9B,MAAMpK,KAAKtD,KAAKk5I,QAAQ91I,QAAQ0nC,UACzC9pC,EAAI,EAAGA,EAAI8pC,EAASnqC,OAAQK,IAC7B8pC,EAASn5B,SAAS3Q,EAAE4Q,WAAY,KAAKkW,aAAa,SAC9CgjB,EAASn5B,SAAS3Q,EAAE4Q,WAAY,KAAK+2C,eACrC7d,EAASn5B,SAAS3Q,EAAE4Q,WAAY,KAAK+2C,cAAchoD,SAClDmqC,EAASn5B,SAAS3Q,EAAE4Q,WAAY,KAAK+2C,cAAc,GAAG75B,aACvDgc,EAASn5B,SAAS3Q,EAAE4Q,WAAY,KAAK+2C,cAAc,GAAGn2C,WAStEs+F,EAAK5wG,UAAUs+I,YAAc,WACzBx+I,KAAKqtJ,iBAEL,IADA,IAAIsB,EAAc,CAAC3uJ,KAAKk5I,QAASl5I,KAAKgtJ,SAAUhtJ,KAAKktJ,UAAWltJ,KAAK4uJ,gBAC5D5tJ,EAAI,EAAGA,EAAI2tJ,EAAYhuJ,OAAQK,IAChC2tJ,EAAYh9I,SAAS3Q,EAAE4Q,WAAY,MAAQ+8I,EAAYh9I,SAAS3Q,EAAE4Q,WAAY,KAAKxO,UAC/EurJ,EAAYh9I,SAAS3Q,EAAE4Q,WAAY,KAAKkd,aAC5C6/H,EAAYh9I,SAAS3Q,EAAE4Q,WAAY,KAAKY,UAGhDxS,KAAKqtJ,kBAQTv8C,EAAK5wG,UAAUsS,QAAU,WACrB,IAAIqtC,EAAc7/C,KAAK4uB,OAAOxrB,QAC9B,GAAKy8C,EAAL,CAGA,IAAIy/D,KAAez/D,EAAY3zC,cAAc,IAAM,UAC/C2zC,EAAY3zC,cAAc,IAAM,SAChCozG,GACAt/G,KAAKw+I,cAETx+I,KAAK47C,sBACL,IAAImR,EAAO/sD,KAAK+pI,UAAU3mI,QACtB2pD,EAAKmB,kBAAoB,IACzBluD,KAAK+pI,UAAUv3H,UACf,gBAAOu6C,IAEXA,EAAO/sD,KAAKwsJ,UAAUppJ,QAClB2pD,EAAKmB,kBAAoB,IACzBluD,KAAKwsJ,UAAUh6I,UACf,gBAAOu6C,IAENuyD,GAGDt/G,KAAK2nG,YACL3nG,KAAK2nG,WAAWn1F,YAGxBs+F,EAAK5wG,UAAUuzH,gBAAkB,SAAUtmH,GACvC,IAAIk5F,EAAY,SAAS5oF,KAAK6oF,UAAUC,UAIxC,OAHIF,GAAal5F,EAAEu5F,SAAwB,cAAbv5F,EAAEwT,SAC5BxT,EAAEwT,OAAS,UAEPxT,EAAEwT,QACN,IAAK,SACD3gB,KAAKiuH,YACL,MACJ,IAAK,SACyB,UAArB9gH,EAAE7M,OAAOoP,UAAuBvC,EAAE7M,OAAO4E,UAAUmB,SAAS,kBACzDuH,SAAS1B,cAAc,gCAC3BlM,KAAK8tH,eAET,MACJ,IAAK,KACD9tH,KAAKguH,YACL,MACJ,IAAK,QACI,gBAAa7gH,EAAE7M,OAAQ,qBAAyD,UAAlCN,KAAK4uB,OAAOi3C,aAAaihC,QACvE,gBAAa35F,EAAE7M,OAAQ,SAA0BN,KAAK4uB,OAAOwrB,YACvD,gBAAajtC,EAAE7M,OAAQ,UAC1BsN,SAASuK,uBAAuB,gBAAgBxX,SACpDwM,EAAE+F,iBACFlT,KAAKk9B,WAET,MACJ,IAAK,SACGl9B,KAAK4uB,OAAOmuB,SAAW/8C,KAAKm7I,sBACU,UAAlCn7I,KAAK4uB,OAAOi3C,aAAaihC,KACzB9mG,KAAK2nG,WAAWg+C,iBAGhB3lJ,KAAK6uJ,eAAe1hJ,IAGxBnN,KAAKm7I,sBACLn7I,KAAKm7I,qBAAsB,GAE/B,MACJ,IAAK,MACL,IAAK,WACDn7I,KAAK6uJ,eAAe1hJ,GACpB,QAGZ2jG,EAAK5wG,UAAU2uJ,eAAiB,SAAU1hJ,GACtC,GAAInN,KAAK4uB,OAAOmuB,QAA4C,UAAlC/8C,KAAK4uB,OAAOi3C,aAAaihC,KAAkB,CACjE,IAAIn1D,EAAY,gBAAaxkC,EAAE7M,OAAQ,gBAAkB,gBAAa6M,EAAE7M,OAAQ,cAChF,GAAIqxC,EAAW,CACX,IAAIm9G,EAAqB,GAAGphJ,MAAMpK,KAAKquC,EAAUjvB,iBAAiB,8BAC9DqsI,EAAiB,GAAGrhJ,MAAMpK,KAAKquC,EAAUjvB,iBAAiB,mBAC9D,GAAIqsI,EACA,IAAK,IAAI/tJ,EAAI,EAAGA,EAAI+tJ,EAAepuJ,OAAQK,IACvC8tJ,EAAqBA,EAAmB7/G,OAAO,GAAGvhC,MAC7CpK,KAAKyrJ,EAAep9I,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,iBAAiB,yBAG9E,IAAIuuB,EAAU,gBAAa9jC,EAAE7M,OAAQ,aACrC,GAAK2wC,IAAY,gBAAa69G,EAAmBA,EAAmBnuJ,OAAS,GAAI,cAC7D,QAAbwM,EAAEwT,SAAqBswB,EAAQ/rC,UAAUmB,SAAS,kBACjD4qC,IAAY,gBAAa69G,EAAmB,GAAI,cAA6B,aAAb3hJ,EAAEwT,QACtD,WAAbxT,EAAEwT,OAAqB,CAC1B,IAAIwT,EAAMwd,EAAUjnC,aAAa,YAC7BysB,EAAOn3B,KAAK4uB,OAAOojE,UACnBgD,EAAW79D,EAAKtwB,KAAI,SAAU0hG,GAAK,OAAOA,EAAE79F,aAAa,eAAgB1G,QAAQmwB,GACjFn0B,KAAK4uB,OAAOwrB,YAAc,gBAAazI,EAAW,eAClDqjD,GAAsBh1F,KAAK4uB,OAAOwrB,YAElCzI,EAAUzsC,UAAUmB,SAAS,gBAC7B2uF,EAAW,GAEE,WAAb7nF,EAAEwT,OACF3gB,KAAK+kG,YAGL/kG,KAAKk9B,UAELl9B,KAAK4uB,OAAO4xE,YAAYgiD,SACxBxiJ,KAAK4uB,OAAO4xE,YAAYgiD,OAAOC,OAAOxgD,QAAU,CAACjN,EAAU,QAM/E8b,EAAK5wG,UAAU8tJ,aAAe,SAAUjoI,GACpC/lB,KAAKgvJ,WAAajpI,EAClB/lB,KAAK4rI,WAAW,uBAAwB5rI,KAAK+pI,YAEjDj5B,EAAK5wG,UAAU2tJ,cAAgB,WAC3B7tJ,KAAKgvJ,WAAWr2D,QAAQr1F,KAAKtD,KAAKgvJ,WAAW97G,SAAUlzC,KAAKgvJ,WAAWtrD,KAAM1jG,KAAKgvJ,WAAWvgB,KAAMzuI,KAAKgvJ,WAAWtgB,KAAM1uI,KAAKgvJ,WAAWrgB,KAAM3uI,KAAKgvJ,WAAWpgB,KAAM5uI,KAAKgvJ,WAAWngB,KAAM7uI,KAAKgvJ,WAAWC,KAAMjvJ,KAAKgvJ,WAAWE,OAQrOp+C,EAAK5wG,UAAUs9I,oBAAsB,SAAUjmH,EAAM43H,GACjD,IAAI78H,EAAOtyB,KAAK4uB,OACZsmE,EAAM,EACNjlD,EAAyC,WAAlCjwC,KAAK4uB,OAAOi3C,aAAaihC,KAChCx0E,EAAKlvB,QAAQ+U,uBAAuB,cAAcxG,SAASujF,EAAItjF,WAAY,KAC3E,gBAAO,IAAM0gB,EAAKlvB,QAAQkI,GAAK,kCAAmCsC,UAClEnB,EAAQ,EACRy9E,EAAQ,GACRklE,EAAS,GACTC,EAAU,GACd93H,EAAOA,GAAcjF,EAAKoE,aAC1B,IAAK,IAAI11B,EAAI,EAAGA,EAAIu2B,EAAK52B,OAAQK,KACxBu2B,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKglB,SAAuC,WAA3BtE,EAAKuzC,aAAaihC,QAAsG,IAAhFx0E,EAAKK,cAAcxD,QAAQnrB,QAAQuzB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKigB,QAC5H,WAA3BS,EAAKuzC,aAAaihC,QAGrBvvE,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKytF,iBAAmB,eAAkB8vD,IACtE,gBAAmB53H,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAMnF,EAAOy9E,EAAOklE,EAAQC,EAAS93H,EAAK52B,QAGjGupF,EAAQ,eAAOA,EAAOklE,EAAQC,GAC9BrvJ,KAAK4uB,OAAO+4E,WAAWuxC,QAAUl5I,KAAKsvJ,cAAcr/G,EAAMk/G,GAAoBjlE,IAQlF4mB,EAAK5wG,UAAUovJ,cAAgB,SAAUr/G,EAAMi6C,GAC3C,IAAI7mF,EAAQrD,KACZ,OAAO,IAAI,OAAciwC,EAAM,CAC3Bi6C,MAAOA,EACP1vE,OAAQxa,KAAK4uB,OAAOpU,OACpB+0I,mBAAoB,SAAUxpI,GAC1B1iB,EAAMksJ,mBAAmBxpI,IAE7B0oE,gBAAiB,SAAUz2E,EAAcuoF,GACrC,IAAIpsE,EAAMnc,EAAatN,aAAa,gBAChCqb,EAAO,CACPwJ,OAAQlsB,EAAMurB,OAAOkM,eAAe3G,GACpCosE,MAAOA,EACPvoF,aAAcA,EACdS,MAAOT,EAAaS,OAElB/J,OAASA,MAAM,kBAAoBA,MAAM,iBAAiBxJ,UAAUmB,SAAS,mBAC/EhD,EAAMmsJ,kBAAkBx3I,EAAcuoF,GAE1Cl9F,EAAMurB,OAAOhV,OAAO,QAA2BmM,OAI3D+qF,EAAK5wG,UAAUsvJ,kBAAoB,SAAUx3I,EAAcuoF,GACvD,GAAIvgG,KAAK4uB,OAAOmuB,OAAQ,CACpB,IAAIzxC,EAAKi1F,EAAM71F,aAAa,OACxBqiD,EAAO/sD,KAAKyvJ,aAAaz3I,GAAc9L,cAAc,IAAM,eAAiBZ,GAAM,UACjFyhD,EAIDA,EAAK7gD,cAAc,kBAAkBpB,UAAYy1F,EAAMv5E,UAHvDhnB,KAAKoyH,cAAcp6G,EAAcuoF,EAAOj1F,EAAI,MAOxDwlG,EAAK5wG,UAAUuvJ,aAAe,SAAUz3I,GACpC,IAAI03I,EAEA1tH,EADA1P,EAAOtyB,KAAK4uB,OAEhB,GAA+B,WAA3B0D,EAAKuzC,aAAaihC,KAAmB,CACrC4oD,EAAUp9H,EAAK8nB,YAAc9nB,EAAK8nB,YAC3BzoC,SAAS,eAAQqG,EAAc,IAAM,QAActN,aAAa,QAAwB,KAAO,GAC1FsN,EAAahI,KACzBgyB,EAAQhiC,KAAK4uB,OAAOsrB,eAAiB5nB,EAAKlvB,QAAUssJ,EAASp9H,EAAKohE,iBAAmBphE,EAAKssB,uBAG1F5c,EAAQ,gBAAO,IAAM1P,EAAKlvB,QAAQkI,GAAK,sBAAuBsC,UAElE,OAAOo0B,GAEX8uE,EAAK5wG,UAAUyvJ,kBAAoB,SAAU5iG,EAAMhnC,GAC/C,IAAI46D,EAAK,gBAAa56D,EAAK3iB,QAAS,QACpC,GAAIu9E,EAAI,CACJ,IAAIivE,EAAUjvE,EAAGv5E,wBAAwBwrD,MACrCi9F,EAAY9iG,EAAK3lD,wBAAwBwrD,MAC7C,GAAIi9F,EAAYD,EAAS,CACrB,IAAIE,EAASD,EAAYD,EACzB7iG,EAAKhmD,MAAM/B,KAAQ+nD,EAAKn8C,WAAak/I,EAAU,QAI3Dh/C,EAAK5wG,UAAUqvJ,mBAAqB,SAAUxpI,GAC1C,GAAI/lB,KAAK4uB,OAAOmuB,OAAQ,CACpB,IAAIgQ,EAAO/sD,KAAKyvJ,aAAa1pI,EAAK3iB,SAAS8I,cAAc,IAAM,eAAiB6Z,EAAKsnE,WAAa,UAC9FtgC,IACoB,YAAhBhnC,EAAK6nE,QACL7gC,EAAKhmD,MAAMC,QAAU,GACrBhH,KAAK2vJ,kBAAkB5iG,EAAMhnC,IAG7BgnC,EAAKhmD,MAAMC,QAAU,UAKrC8pG,EAAK5wG,UAAUkyH,cAAgB,SAAUhvH,EAASm9F,EAAOvwF,EAAMhJ,GAC3D,IAAIkyI,EAAUl5I,KAAKk5I,QAAQ91I,QACvB2sJ,EAAa,gBAAa3sJ,EAAS,wBACnC2sJ,IACA7W,EAAUl5I,KAAK4uJ,eAAexrJ,SAElC,IAKIssJ,EAEAM,EAPAC,EAAWjwJ,KAAK4uB,OAAOorB,aAAav4B,kBACpCm7H,EAAWqT,EAAShyG,aAAegyG,EAAS3mJ,cAAgB2mJ,EAASp1G,YAAco1G,EAAS1mJ,YAC5FyxI,EAA6C,WAAlCh7I,KAAK4uB,OAAOi3C,aAAaihC,KACpCnmB,EAAK,eAAQv9E,EAAS,IAAM,QAC5Bi0B,EAAM,eAAQj0B,EAAS,IAAM,QAE7B8sJ,GAAgB,EAEhBC,GAAqB,EACrBC,EAAmBjnJ,KAAKC,MAAMpJ,KAAK4uB,OAAOorB,aAAa1wC,aAAetJ,KAAK4uB,OAAO2rB,gBAAkB,EACpGpjB,EAAO,GAAGzpB,MAAMpK,KAAKtD,KAAK4uB,OAAOorB,aAAa7hC,uBAAuB,SAQzE,GAPsC,UAAlCnY,KAAK4uB,OAAOi3C,aAAaihC,OACzB3vE,EAAO,GAAGzpB,MAAMpK,KAAKtD,KAAK4uB,OAAOorB,aAAat3B,iBAAiB,6BAC3D0tI,GAAoB,GAAKj5H,EAAKx2B,QAAUyvJ,GACrCj5H,EAAKA,EAAKx2B,OAAS,GAAG+J,aAAa,UAA2B2sB,EAAI3sB,aAAa,UAClFylJ,GAAqB,IAGzBnV,EAAU,CACV,GAAIh7I,KAAK4uB,OAAOwrB,WAAY,CACxB,IAAIi2G,EAAe,GAAG3iJ,MAAMpK,KAAKtD,KAAK4uB,OAAO8kE,iBAAiBxnF,cAAc,QAAgBwW,iBAAiB,6BAC7GgtI,EAASW,EAAa1vJ,QAAUgR,SAAS0lB,EAAI3sB,aAAa,QAAwB,KAAO,GACzFwlJ,EAAgBR,GAAU/9I,SAAS0lB,EAAI3sB,aAAa,QAAwB,MAAQ2lJ,EAAa1vJ,OAAS,EAC1G,IAAI2vJ,EAAY,GAAG5iJ,MAAMpK,KAAKtD,KAAK4uB,OAAO8kE,iBAAiBxnF,cAAc,QAAgBwW,iBAAiB,6BACjF,IAArB4tI,EAAU3vJ,SAAiB2vJ,EAAU,GAAGprJ,UAAUmB,SAAS,eAAiBiqJ,EAAU,GAAGprJ,UAAUmB,SAAS,oBAC5G6pJ,GAAgB,IAGpBA,GAAkBE,GAAoB,GAAKj5H,EAAKx2B,QAAUyvJ,IACT,WAA5CpwJ,KAAK4uB,OAAOi3C,aAAaoxE,gBAAgCj3I,KAAK2nG,WAAW5hF,MAClC,QAArC/lB,KAAK2nG,WAAW5hF,KAAKgI,aAA4B4yD,EAAGz7E,UAAUmB,SAAS,mBACtEgxB,EAAInyB,UAAUmB,SAAS,UAAyB8pJ,KACxDH,GAA4B,GAGpC,IAAIhuH,EAAQg5G,EACP0U,EAAS1vJ,KAAK4uB,OAAO8kE,iBAAmB1zF,KAAK4uB,OAAOgwB,kBACrD,gBAAO,IAAM5+C,KAAK4uB,OAAOxrB,QAAQkI,GAAK,qCAAsCsC,UAC5E2iJ,EAASvuH,EAAM56B,wBACfpC,EAAOg2I,EACPh7I,KAAK4uB,OAAOxrB,QAAQgE,wBAAwBpC,KAAOurJ,EAAOvrJ,KAC1DiuC,EAAQ,eAAQ7vC,EAAS,MACzBotJ,EAAcv9G,EAAQA,EAAM7rC,wBAA0BhE,EAAQue,cAAcva,wBAC5Em3C,EAAMv+C,KAAK4uB,OAAOrqB,cAAc,MAAO,CACvCC,UAAW,qDACX8G,GAAI0E,EAAO,SACXd,OAAQ,WAAalI,EAAU,UACzB0oJ,EAASc,EAAYzrJ,IAAMyrJ,EAAYnrJ,OAASmrJ,EAAYjxG,OAASgxG,EAAOxrJ,KAAOi9B,EAAM/wB,UAAY,GAAK,YAC3Gu/I,EAAYxrJ,KAAOA,EAAOg9B,EAAMlxB,WAAa0/I,EAAYlrJ,MAAQ,GAF9D,gBAGWkrJ,EAAYlrJ,MAAQ,0BAEvCtF,KAAK4uB,OAAOnkB,UACZ8zC,EAAIr5C,UAAU4G,IAAI9L,KAAK4uB,OAAOnkB,UAE9BuwI,GAAYuV,EAAOvrJ,KAAOA,IAC1Bu5C,EAAIx3C,MAAM/B,KAAO2M,SAAS4sC,EAAIx3C,MAAM/B,KAAM,IAAMurJ,EAAOvrJ,KAAOA,EAAO,MAEzE,IAEIyrJ,EAFA5lJ,EAAU7K,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,kBAe5D,GAdAqG,EAAQnG,YAAY67F,GAEhByvD,GACAS,EAAQzwJ,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,6BACtDisJ,EAAM/rJ,YAAY1E,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,oCAChEisJ,EAAM/rJ,YAAY1E,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,sCAGhEisJ,EAAQzwJ,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,0BACtDisJ,EAAM/rJ,YAAY1E,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,iCAChEisJ,EAAM/rJ,YAAY1E,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,kCAEpE+5C,EAAI75C,YAAYmG,GAChB0zC,EAAI75C,YAAY+rJ,IACXV,GAAe/vJ,KAAK4uB,OAAiB,YAAuC,WAAlC5uB,KAAK4uB,OAAOi3C,aAAaihC,KAAmB,CACvF,IAAI4pD,EAAgD,WAAlC1wJ,KAAK4uB,OAAOi3C,aAAaihC,KACvC,eAAQ1jG,EAAS,eAAiB,eAAQA,EAAS,IAAM,QAG7D,GAFAstJ,EAAY3pJ,MAAMhD,SAAW,WAC7Bw6C,EAAIx3C,MAAMhD,SAAW,WACiB,UAAlC/D,KAAK4uB,OAAOi3C,aAAaihC,MACxB,eAAQ1jG,EAAS,IAAM,SAA2B,eAAQA,EAAS,IAAM,SACtEpD,KAAK4uB,OAAiB,WAC1B,GAAI5uB,KAAK4uB,OAAOsrB,eACZ,GAAIymC,EAAGz7E,UAAUmB,SAAS,cACtB,eAAS,CAACk4C,GAAM,cAChB26F,EAAQx0I,YAAY65C,OAEnB,CACD,IAAIwO,EAAO,eAAQ4zB,EAAI,iBAAmB3gF,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,iBACxD,IAAhBirB,EAAKx2B,OAAeX,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,kBAAkBA,cAAc,cAClFlM,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,kBAC1C6gD,EAAKroD,YAAY65C,GACjBwO,EAAKhmD,MAAMhD,SAAW,gBAI1Bm1I,EAAQx0I,YAAY65C,QAIxBv+C,KAAKgtJ,SAAS5pJ,QAAQsB,YAAY65C,QAItC,GAAIwxG,EACA/vJ,KAAK4uJ,eAAexrJ,QAAQsB,YAAY65C,QAGxC,GAAIv+C,KAAK4uB,OAAOsrB,eACZ,GAAIymC,EAAGz7E,UAAUmB,SAAS,cACtB,eAAS,CAACk4C,GAAM,cAChBv+C,KAAKk5I,QAAQ91I,QAAQsB,YAAY65C,OAEhC,CACGwO,EAAO,eAAQ4zB,EAAI,iBAAmB3gF,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,iBACxD,IAAhBirB,EAAKx2B,OAAeX,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,kBAAkBA,cAAc,cAClFlM,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,kBAC1C6gD,EAAKroD,YAAY65C,GACjBwO,EAAKhmD,MAAMhD,SAAW,gBAI1B/D,KAAKk5I,QAAQ91I,QAAQsB,YAAY65C,GAY7C,GARK,eAAkBoiC,KACfA,EAAGz7E,UAAUmB,SAAS,iBACtBk4C,EAAIr5C,UAAU4G,IAAI,iBAEb60E,EAAGz7E,UAAUmB,SAAS,iBAAmBs6E,EAAGz7E,UAAUmB,SAAS,mBACpEk4C,EAAIr5C,UAAU4G,IAAI,mBAGrBkkJ,GAA6BhV,GAAYiV,EAAS7oJ,wBAAwBm4C,OAASixG,EAAYjxG,OAASixG,EAAYnrJ,OAAQ,CAC7H,IAAIykE,EAAa9pE,KAAK4uB,OAAOorB,aAAa9tC,cAAc,cACb,IAAvClM,KAAK4uB,OAAOwtE,gBAAgBz7F,QAAyC,IAAzBmpE,EAAW74D,UACvD64D,EAAW74D,UAAYstC,EAAI90C,aAAegnJ,EAAMxyG,aAGhDgyG,EAASh/I,UAAYg/I,EAASh/I,UAAYstC,EAAI90C,aAAegnJ,EAAMxyG,aAG3E,IAAIg9B,EAAatpE,SAAS/D,SAASowC,YAAYx3C,iBAAiB+3C,EAAK,MAAM73C,iBAAiB,aAAc,IAW1G,GAVI63C,EAAIn3C,wBAAwB9B,MAAQkrJ,EAAYlrJ,OAChDi5C,EAAIryC,cAAc,SAAS9E,wBAAwB/B,QAAuB,IAAb41E,IAAqB,IAClF18B,EAAIx3C,MAAMzB,MAAQi5C,EAAIx3C,MAAM6I,UAE5B5P,KAAK4uB,OAAOwrB,YAAgD,WAAlCp6C,KAAK4uB,OAAOi3C,aAAaihC,KACnDvoD,EAAIx3C,MAAM/B,KAAOiuC,EAAMriC,YAAcqiC,EAAMzpC,YAAc,EAAI+0C,EAAI/0C,YAAc,GAAK,KAGpF+0C,EAAIx3C,MAAM/B,KAAQ2M,SAAS4sC,EAAIx3C,MAAM/B,KAAM,IAAMu5C,EAAI/0C,YAAc,EAAK,KAExEwxI,IAAa4B,IAAa58I,KAAK4uB,OAAO4D,aAAexyB,KAAK4uB,OAAOwrB,WAAY,CAE7E,IAAIjzC,EAAM,gBAA+B8rC,EAAOsL,GAChDA,EAAIx3C,MAAMhC,IAAMoC,EAAIpC,IAAMyrJ,EAAYnrJ,OAAS,EAAI,KAEvD,GAAI2qJ,EAA2B,CAC3B,IAAIpT,GAAmC,SAAvB58I,KAAK4uB,OAAOvpB,QAAsBrF,KAAK4uB,OAAOwrB,YACtDp6C,KAAK4uB,OAAO6D,sBAA0B8rB,EAAIr5C,UAAUmB,SAAS,kBAAoBk4C,EAAIr5C,UAAUmB,SAAS,gBAQ5Gk4C,EAAIx3C,MAAMw4C,OAASixG,EAAYnrJ,OAAS,EAAI,SARkF,CAC9H,IAAIw1C,EAAco1G,EAASp1G,YAAco1G,EAASzmJ,YAAc,iBAAsB,EAClFmnJ,GAA0D,IAAhD3wJ,KAAK4uB,OAAOvpB,OAAOuM,WAAW5N,QAAQ,KAChD2N,SAAS3R,KAAK4uB,OAAOvpB,OAAQ,IAAM4qJ,EAASxmJ,aAChD80C,EAAIx3C,MAAMw4C,OAAUoxG,EAAUV,EAAS/jJ,cAAc,SAASzC,aACxDoxC,EAAe21G,EAAYnrJ,OAAS,EAAI,KAKlD,GAAI8xB,EAAKx2B,OAASyvJ,GAAgE,WAA5CpwJ,KAAK4uB,OAAOi3C,aAAaoxE,gBAAgCj3I,KAAK2nG,WAAW5hF,MACnE,QAArC/lB,KAAK2nG,WAAW5hF,KAAKgI,YAAwB,CAChD,IAAI6iI,EAAY5wJ,KAAK4uB,OAAOwrB,WAAap6C,KAAK4uB,OAAOwrB,YAAcjjB,EAAKx2B,OAAS,GAAKw2B,EAAKx2B,OAAS,EAChGkwJ,EAAaD,EAAY5wJ,KAAK4uB,OAAO2rB,eACrCx2C,EAAW/D,KAAK4uB,OAAOorB,aAAa1wC,aAAeunJ,EACvDtyG,EAAIx3C,MAAMw4C,OAASx7C,EAAW,EAAI,KAEtCw6C,EAAIx3C,MAAMhC,IAAM,OAQxB+rG,EAAK5wG,UAAUi5I,qBAAuB,SAAUjgH,GAC5C,OAAQA,EAAItC,WAAa52B,KAAK4uB,OAAO+D,cAAcxD,QAAQnrB,QAAQk1B,EAAIrH,QAAU,IAOrFi/E,EAAKggD,WAAa,SAAUC,GACxBjgD,EAAKy7C,aAAe,eAAOz7C,EAAKy7C,aAAcwE,IAElDjgD,EAAKy7C,aAAe,CAChB,aAAgB,EAAkB,YAAe,EACjD,eAAkB,EAAoB,mBAAsB,EAC5D,YAAe,EAAiB,YAAe,EAC/C,aAAgBN,IAEbn7C,EA5nCc,I,kCCzBzB,8GAUIkgD,EAA0C,WAC1C,SAASA,EAAyBpiI,EAAQC,GACtC7uB,KAAKixJ,WAAa,GAClBjxJ,KAAKkxJ,cAAgB,GAErBlxJ,KAAKmxJ,gBAAiB,EACtBnxJ,KAAK4uB,OAASA,EACd5uB,KAAK6uB,eAAiBA,EACtB7uB,KAAK64C,mBAutBT,OArtBAm4G,EAAyB9wJ,UAAU24C,iBAAmB,WAClD74C,KAAKmkG,YAAc,CAAC,CAAEz1F,MAAO,QAA0BiqF,QAAS34F,KAAKoxJ,mBACjE,CAAE1iJ,MAAO,QAAiCiqF,QAAS34F,KAAKqxJ,0BACxD,CAAE3iJ,MAAO,QAA8BiqF,QAAS34F,KAAKsxJ,6BACrD,CAAE5iJ,MAAO,QAA0BiqF,QAAS34F,KAAKuxJ,uBACjD,CAAE7iJ,MAAO,QAA0BiqF,QAAS34F,KAAKwxJ,qBACjD,CAAE9iJ,MAAO,QAAoCiqF,QAAS34F,KAAKyxJ,8BAC/D,eAAuBzxJ,KAAK4uB,OAAQ5uB,KAAKmkG,aAAa,EAAMnkG,MAC5DA,KAAK0xJ,mBAAqB1xJ,KAAK2xJ,aAAa/rJ,KAAK5F,MACjDA,KAAK4uB,OAAOiqB,iBAAiB,OAAuB74C,KAAK0xJ,qBAE7DV,EAAyB9wJ,UAAUsxJ,oBAAsB,WACrDxxJ,KAAK4xJ,mBAAoB,GAE7BZ,EAAyB9wJ,UAAUqxJ,sBAAwB,WACvD,IAAI11G,EAAS77C,KAAK6xJ,oBAAoBzuJ,QAAQ8I,cAAc,yBACxDg5B,EAAQ2W,EAAO3vC,cAAc,wBAC7B4lJ,EAAWj2G,EAAO3vC,cAAc,wBACpClM,KAAK4xJ,mBAAoB,EACzB5xJ,KAAK4uB,OAAOysE,aAAaA,aAAasuC,cACtC3pI,KAAK+xJ,QAAQ3uJ,QAAQ2D,MAAMC,QAAU,GACrChH,KAAKqxJ,yBAAyB,CAAEj5I,UAAU,IAC1CpY,KAAKgyJ,QAAQ5uJ,QAAQ2D,MAAMC,QAAU,OACrC8qJ,EAAS/qJ,MAAMC,QAAU,GACzBk+B,EAAMp6B,UAAY9K,KAAK4uB,OAAOyiG,UAAU32G,YAAY,gBACpD,IAAI7P,EAAU7K,KAAK6xJ,oBAAoBzuJ,QAAQ8I,cAAc,kBAC7DlM,KAAKiyJ,wBAA0BjyJ,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,0CAC7EqG,EAAQnG,YAAY1E,KAAKiyJ,0BAE7BjB,EAAyB9wJ,UAAUoxJ,4BAA8B,SAAUvrI,GACvE,GAAI/lB,KAAK2gB,SAAW,OAAuBuxI,SAAU,CACjD,IAAIrnJ,EAAU7K,KAAK6xJ,oBAAoBzuJ,QAAQ8I,cAAc,kBACzD2vC,EAAS77C,KAAK6xJ,oBAAoBzuJ,QAAQ8I,cAAc,yBACxD4lJ,EAAWj2G,EAAO3vC,cAAc,wBAChC4lB,EAAO+pB,EAAO3vC,cAAc,wBAChC,GAAI6Z,EAAKmsC,OAAQ,CACbrnD,EAAQwxC,WAAWt1C,MAAMC,QAAU,OACnC6D,EAAQnG,YAAYqhB,EAAKzlB,QACzBwxJ,EAAS/qJ,MAAMC,QAAU,OACzBhH,KAAK+xJ,QAAQ3uJ,QAAQ2D,MAAMC,QAAU,OACrChH,KAAKmyJ,eAAe/uJ,QAAQ2D,MAAMC,QAAU,OAC5C8qB,EAAKhnB,UAAYib,EAAK81B,OACtB,IAAIm2G,EAAUhyJ,KAAK4uB,OAAOrqB,cAAc,UACpCiyF,EAAOx2F,KAAK4uB,OAAOrqB,cAAc,OAAQ,CAAEC,UAAW,uCAC1DwtJ,EAAQttJ,YAAY8xF,GACpBx2F,KAAKgyJ,QAAU,IAAI,OAAO,CACtBvnJ,SAAUzK,KAAK4uB,OAAOnkB,SAAW,kBAAyBzK,KAAK4uB,OAAOnkB,SAAW,mBAErFzK,KAAKgyJ,QAAQ3rI,SAAS2rI,GACtBlgI,EAAKnQ,cAAc6D,aAAawsI,EAASlgI,QAEpC9xB,KAAKgyJ,UAAYhyJ,KAAK4xJ,oBAC3B/mJ,EAAQwxC,WAAWt1C,MAAMC,QAAU,GACnC,gBAAOhH,KAAKgyJ,QAAQ5uJ,SACpB0uJ,EAAS/qJ,MAAMC,QAAU,GACzBhH,KAAK+xJ,QAAQ3uJ,QAAQ2D,MAAMC,QAAU,GACjChH,KAAKszB,aACLtzB,KAAKmyJ,eAAe/uJ,QAAQ2D,MAAMC,QAAU,IAEhD8qB,EAAKhnB,UAAY9K,KAAKoyJ,eAAe,CAAEzxI,OAAQ,OAAuBuxI,UAAYnsI,EAAKmT,QAInG83H,EAAyB9wJ,UAAUuxJ,4BAA8B,SAAU1rI,GACnE/lB,KAAKmyJ,iBACLnyJ,KAAKszB,WAAavN,EAAKuN,WACvBtzB,KAAKmyJ,eAAe/uJ,QAAQ2D,MAAMC,QAAU+e,EAAKuN,WAAa,GAAK,SAG3E09H,EAAyB9wJ,UAAUmxJ,yBAA2B,SAAUtrI,GAChE/lB,KAAK+xJ,UACL/xJ,KAAK+xJ,QAAQ35I,SAAW2N,EAAK3N,UAE7BpY,KAAK4uB,OAAOuiG,qBAAuBnxH,KAAK4uB,OAAOuiG,oBAAoBhuB,yBAAyB4uD,UAC5F/xJ,KAAK4uB,OAAOuiG,oBAAoBhuB,yBAAyB4uD,QAAQ35I,SAAW2N,EAAK3N,WAGzF44I,EAAyB9wJ,UAAUmyJ,4BAA8B,SAAUl6D,EAAK39E,EAAQpC,GACpF,IAAIk6I,EAAOtyJ,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,kCAAoC2zF,EAAIt2E,cAAgB,OAASzJ,EAAW,cAAgB,MACjJo+E,EAAOx2F,KAAK4uB,OAAOrqB,cAAc,OAAQ,CAAEC,UAAW,gBAAkB2zF,EAAIt2E,cAAgB,qBAC5Fu8D,EAAOp+E,KAAK4uB,OAAOrqB,cAAc,OAAQ,CAAEuG,UAAW0P,EAAQhW,UAAW,uCAC7E8tJ,EAAK5tJ,YAAY8xF,GACjB87D,EAAK5tJ,YAAY05E,GACjBp+E,KAAKuyJ,gBAAgB7tJ,YAAY4tJ,IAErCtB,EAAyB9wJ,UAAUsyJ,wBAA0B,SAAUt5H,EAAK3J,GACxE,IAAIlsB,EAAQrD,KACRsyB,EAAOtyB,KAAK4uB,OACZ6jI,EAAkBzyJ,KAAK2gB,SAAW,OAAuB8xI,gBAC7D,GAAIv5H,GAAOu5H,EAGP,OAFAzyJ,KAAK0yJ,aAAe1yJ,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,WAAYiuJ,EAAkB,0BAA4B,IAAM,mCACnHnnJ,IAAKmnJ,EAAkB,eAAiBv5H,EAAI/E,KAAO,iBAChDn0B,KAAK0yJ,aAIZ,GADA1yJ,KAAKuyJ,gBAAkBjgI,EAAK/tB,cAAc,MAAO,CAAEC,UAAW,0BAA2B0K,OAAQ,gBAC7FlP,KAAK4uB,OAAO8mB,gBAAmD,eAAjC11C,KAAK4uB,OAAO00D,kBAAqCtjF,KAAK2gB,SAAW,OAAuBgyI,UAAW,CAOjI,GANA3yJ,KAAKqyJ,4BAA4B,aAAc//H,EAAK++F,UAAU32G,YAAY,eAC1E1a,KAAKqyJ,4BAA4B,UAAW//H,EAAK++F,UAAU32G,YAAY,YACnE6U,EAAOmD,eAAiBJ,EAAKI,gBAC7B1yB,KAAKqyJ,4BAA4B,QAAS//H,EAAK++F,UAAU32G,YAAY,SAAU4X,EAAKK,cAAcxD,QAAQnrB,QAAQurB,EAAOsC,QAAU,GACnI7xB,KAAKqyJ,4BAA4B,UAAW//H,EAAK++F,UAAU32G,YAAY,WAAY4X,EAAKK,cAAcxD,QAAQnrB,QAAQurB,EAAOsC,OAAS,IAEtItC,EAAOwJ,cAAgBzG,EAAKyG,aAAc,CAG1C,IAFA,IAAIrU,EAAY,OACZkuI,EAAc5yJ,KAAK4uB,OAAOoK,aAAa7J,QAClCnuB,EAAI,EAAGA,EAAI4xJ,EAAYjyJ,OAAQK,IACpC,GAAI4xJ,EAAYjhJ,SAAS3Q,EAAE4Q,WAAY,KAAKigB,QAAUtC,EAAOsC,MAAO,CAChEnN,EAAYkuI,EAAYjhJ,SAAS3Q,EAAE4Q,WAAY,KAAK8S,UACpD,MAGR1kB,KAAKqyJ,4BAA4B,YAAa//H,EAAK++F,UAAU32G,YAAY,iBAAgC,cAAdgK,GAC3F1kB,KAAKqyJ,4BAA4B,aAAc//H,EAAK++F,UAAU32G,YAAY,kBAAiC,eAAdgK,GAE7F4N,EAAKq8E,mBACL3uG,KAAKqyJ,4BAA4B,SAAU//H,EAAK++F,UAAU32G,YAAY,kBAEtE6U,EAAOiL,gBAAkBlI,EAAKkI,gBAC9Bx6B,KAAKqyJ,4BAA4B,SAAU//H,EAAK++F,UAAU32G,YAAY,mBAGzE,CACD,IAAI6c,EAAOjF,EAAKoE,aACZm8H,EAAgBvgI,EAAK/tB,cAAc,MAAO,CAAEC,UAAW,2BACvDsuJ,EAAe,GACfC,EAAS/yJ,KAAK2gB,SAAW,OAAuBoyI,OAChDb,EAAWlyJ,KAAK2gB,SAAW,OAAuBuxI,SACtD,GAAIA,EACA,IAASlxJ,EAAI,EAAGA,EAAIsxB,EAAK0B,eAAe7E,QAAQxuB,OAAQK,IACpD8xJ,EAAazmJ,KAAKimB,EAAK0B,eAAe7E,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKigB,OAGlF,IAAS7wB,EAAI,EAAGA,EAAIu2B,EAAK52B,OAAQK,IAC7B,MAAKu2B,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKglB,UAAaW,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKmnB,cAAgBg6H,IAC3Fx7H,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK4oB,gBAAkB03H,GAD5D,CAIA,IAAII,EAAOhgI,EAAK/tB,cAAc,MAAO,CAAEC,UAAW,uBAClD8tJ,EAAK3nJ,aAAa,qBAAsB4sB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKigB,OACzEygI,EAAK3nJ,aAAa,oBAAqB4sB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKuiB,KACxE,IAAIqiE,EAAOlkE,EAAK/tB,cAAc,OAAQ,CAAEuG,UAAWysB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKswC,WAAY19C,UAAW,sBAG3G,GAFA8tJ,EAAK5tJ,YAAY8xF,GACjBx2F,KAAKuyJ,gBAAgB7tJ,YAAY4tJ,GAC7BS,EAAQ,CACR,IAAIphI,EAAS3xB,KAAKgzJ,6BAA6B,SAC3CvmJ,EAAQklB,EAAO3tB,QAAQuzB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKigB,OACxD0kE,EAASjkE,EAAK/tB,cAAc,SAAU,CAAE+G,GAAIgnB,EAAKlvB,QAAQkI,GAAKisB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKigB,MAAQ,eACvG2E,EAAQq8H,EAAcnrI,YAC1B8O,EAAM9xB,YAAY6xF,GAClB+7D,EAAK5tJ,YAAY8xB,GACjB,IAAIwiC,EAAS,IAAI,OAAO,CACpBvuD,SAAUzK,KAAK4uB,OAAOnkB,SAAW,mBAA0BzK,KAAK4uB,OAAOnkB,SAAW,oBAEtFuuD,EAAO3yC,SAASkwE,GAChB,IAAI08D,OAAkB,EAChB,eAAkBjzJ,KAAK4uB,OAAOoK,aAAa7J,QAAQxd,SAASlF,EAAMmF,WAAY,QAChFqhJ,EAAkG,cAA/EjzJ,KAAK4uB,OAAOoK,aAAa7J,QAAQxd,SAASlF,EAAMmF,WAAY,KAAK8S,UAChF1kB,KAAK4uB,OAAOyiG,UAAU32G,YAAY,iBAAmB1a,KAAK4uB,OAAOyiG,UAAU32G,YAAY,mBAE/F67E,EAAOzrF,UAAY2B,GAAS,EAAIwmJ,EAAkBjzJ,KAAK4uB,OAAOyiG,UAAU32G,YAAY,YACpF67E,EAAOE,QAAU,SAAUtpF,GACvB9J,EAAM6vJ,uBAAuB/lJ,EAAE7M,SAGvC,GAAI4xJ,GAAYY,EAAa9uJ,QAAQuzB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKigB,QAAU,EAAG,CAC/E,IAAIshI,EAAU7gI,EAAK/tB,cAAc,MAAO,CAAEC,UAAW,sCACjD4uJ,EAAW9gI,EAAK/tB,cAAc,OAAQ,CAAEC,UAAW,mCACvD4uJ,EAASzoJ,aAAa,UAAW4sB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKpD,MAClE2kJ,EAAQzuJ,YAAY0uJ,GACpBd,EAAK5tJ,YAAYyuJ,KAK7B,OADA,OAAarnJ,IAAI9L,KAAKuyJ,gBAAiB,OAAQ5iJ,SAAW,WAAa,QAAS3P,KAAKqzJ,+BAAgCrzJ,MAC9GA,KAAKuyJ,iBAGpBvB,EAAyB9wJ,UAAU8yJ,6BAA+B,SAAUhjJ,GAExE,IADA,IAAI2hB,EAAS,GACJ3wB,EAAI,EAAGA,EAAIhB,KAAK4uB,OAAOoK,aAAa7J,QAAQxuB,OAAQK,IACzD2wB,EAAOtlB,KAAKrM,KAAK4uB,OAAOoK,aAAa7J,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAK5B,IAElF,OAAO2hB,GAEXq/H,EAAyB9wJ,UAAUgzJ,uBAAyB,SAAU5yJ,GAClE,GAAIA,EAAQ,CACR,IAAIgzJ,EAAY,gBAAahzJ,EAAQ,sBACjCuxB,EAAQyhI,EAAU5oJ,aAAa,sBAC9B1K,KAAK4uB,OAAO2kI,oBACbvzJ,KAAKkxJ,cAAgB,GACrBlxJ,KAAKixJ,WAAa,GAClBjxJ,KAAKwzJ,eAAgB,EACrBxzJ,KAAKyzJ,iBAAiBnzJ,IAE1B,IAAIozJ,EAAMpzJ,EAAO8kB,YACbuuI,EAAeD,IAAQ1zJ,KAAK4uB,OAAOyiG,UAAU32G,YAAY,YAAc1a,KAAK4uB,OAAOyiG,UAAU32G,YAAY,iBACvGg5I,IAAQ1zJ,KAAK4uB,OAAOyiG,UAAU32G,YAAY,iBAAmB1a,KAAK4uB,OAAOyiG,UAAU32G,YAAY,kBAC3F1a,KAAK4uB,OAAOyiG,UAAU32G,YAAY,YACxCgK,EAAYivI,IAAiB3zJ,KAAK4uB,OAAOyiG,UAAU32G,YAAY,iBAAmB,YAChFi5I,IAAiB3zJ,KAAK4uB,OAAOyiG,UAAU32G,YAAY,kBAAoB,aAAe,OAC5Fpa,EAAOwK,UAAY6oJ,EACnB3zJ,KAAK4zJ,cAAc/hI,EAAOnN,KAGlCssI,EAAyB9wJ,UAAUuzJ,iBAAmB,SAAUnzJ,GAE5D,IADA,IAAI4X,EAAU,GAAGxK,MAAMpK,KAAKtD,KAAKuyJ,gBAAgBp6I,uBAAuB,oBAC/DnX,EAAI,EAAGA,EAAIkX,EAAQvX,OAAQK,IAC5BkX,EAAQvG,SAAS3Q,EAAE4Q,WAAY,OAAStR,IACxC4X,EAAQvG,SAAS3Q,EAAE4Q,WAAY,KAAK9G,UAAY,SAI5DkmJ,EAAyB9wJ,UAAU0zJ,cAAgB,SAAU/hI,EAAOnN,GAChE,IAAIiN,EAAS3xB,KAAK6zJ,yBACdpnJ,EAAQklB,EAAO3tB,QAAQ6tB,GACvB7xB,KAAK4uB,OAAO2kI,mBAAqB9mJ,GAAS,IAC1CzM,KAAKixJ,WAAWvkJ,OAAOD,EAAO,GAC9BzM,KAAKkxJ,cAAcxkJ,OAAOD,EAAO,IAErCzM,KAAKwzJ,eAAgB,EACH,SAAd9uI,IACA1kB,KAAKixJ,WAAW5kJ,KAAKwlB,GACrB7xB,KAAKkxJ,cAAc7kJ,KAAK,CAAEwlB,MAAOA,EAAOnN,UAAWA,MAG3DssI,EAAyB9wJ,UAAU2zJ,uBAAyB,WAExD,IADA,IAAIliI,EAAS,GACJ3wB,EAAI,EAAGA,EAAIhB,KAAKixJ,WAAWtwJ,OAAQK,IACxC2wB,EAAOtlB,KAAKrM,KAAKixJ,WAAWt/I,SAAS3Q,EAAE4Q,WAAY,MAEvD,OAAO+f,GAEXq/H,EAAyB9wJ,UAAUmzJ,+BAAiC,SAAUlmJ,GAC1E,IAAImlB,EAAOtyB,KAAK4uB,OACZtuB,EAAS6M,EAAE7M,OACf,GAAI,gBAAaA,EAAQ,kBAAoBN,KAAK2gB,SAAW,OAAuBgyI,YAAc,gBAAaryJ,EAAQ,cAAe,CAClI,IAAIivB,EAASvvB,KAAK8zJ,QAAU9zJ,KAAK8zJ,QAAU9zJ,KAAK+zJ,YAC5C,gBAAazzJ,EAAQ,8BACrBgyB,EAAK69F,eAAe,IACpBnwH,KAAKg0J,qBAEA,gBAAa1zJ,EAAQ,2BAC1BgyB,EAAK69F,eAAe5gG,EAAOsC,OAC3B7xB,KAAKg0J,qBAEA,gBAAa1zJ,EAAQ,yBAC1BgyB,EAAKykG,YAAYxnG,EAAOsC,OACxB7xB,KAAKg0J,qBAEA,gBAAa1zJ,EAAQ,2BAC1BgyB,EAAK+kG,cAAc9nG,EAAOsC,OAC1B7xB,KAAKg0J,qBAEA,gBAAa1zJ,EAAQ,6BAC1BgyB,EAAKo6F,WAAWn9F,EAAOsC,MAAO,aAC9B7xB,KAAKg0J,qBAEA,gBAAa1zJ,EAAQ,8BAC1BgyB,EAAKo6F,WAAWn9F,EAAOsC,MAAO,cAC9B7xB,KAAKg0J,qBAEA,gBAAa1zJ,EAAQ,0BAC1BgyB,EAAK1Y,OAAO,QAAqC,CAAE+G,OAAQ,IAC3D2R,EAAK4qG,qCAEA,gBAAa58H,EAAQ,2BAC1BgyB,EAAK1Y,OAAO,QAAqC,CAAE+G,OAAQ,IAC3D3gB,KAAKi0J,iBAAkB,EACvBj0J,KAAKmxJ,gBAAiB,EAClB7+H,EAAK+oE,cACL/oE,EAAK+oE,aAAa8H,yBAAyB+wD,qBAAqB3kI,IAGxEpiB,EAAE+F,iBAEN,GAAIlT,KAAK2gB,SAAW,OAAuBuxI,UAGV,cAA7B5/H,EAAK0B,eAAexlB,KACpB,GAAIlO,EAAO4E,UAAUmB,SAAS,uBAAyB/F,EAAOqhB,cAAczc,UAAUmB,SAAS,sBAAuB,CAClH,IAAIwrB,EAAQvxB,EAAOoK,aAAa,sBAIhC,GAHKmnB,IACDA,EAAQvxB,EAAOqhB,cAAcjX,aAAa,uBAE1CmnB,EAAO,CACP,IAAIqH,EAAM5G,EAAKoG,iBAAiB7G,GAChC7xB,KAAKi0J,iBAAkB,EACvBj0J,KAAKk0J,qBAAqBh7H,SAG7B,GAAI54B,EAAO4E,UAAUmB,SAAS,gBAAkB/F,EAAOqhB,cAAczc,UAAUmB,SAAS,kBAAmB,CAC5G,IAAI8tJ,EAAS,gBAAa7zJ,EAAQ,sBAClC,GAAI6zJ,EAAQ,CACJtiI,EAAQsiI,EAAOzpJ,aAAa,sBAC5BwuB,EAAM5G,EAAKoG,iBAAiB7G,IACR,SAApBqH,EAAIjF,OAAOzlB,OAAqB0qB,EAAIjF,OAAOzlB,MAAqC,SAA7B8jB,EAAK0B,eAAexlB,QACvExO,KAAKo0J,eAAgB,GAEzBp0J,KAAK4uB,OAAOysE,aAAaA,aAAag5D,kBAAkBn7H,GACxDl5B,KAAKs0J,yBAAyBh0J,MAY9C0wJ,EAAyB9wJ,UAAUg0J,qBAAuB,SAAUh7H,EAAK3J,GACrE,GAAKvvB,KAAKmxJ,gBAAkBnxJ,KAAK2gB,SAAW,OAAuBuxI,WAAalyJ,KAAKi0J,iBAChF1kI,GAAUvvB,KAAK2gB,SAAW,OAAuBgyI,UAClD3yJ,KAAK8zJ,QAAUvkI,EACfvvB,KAAKu0J,yBAAyB,KAAMhlI,OAEnC,CAUD,GATAvvB,KAAK+zJ,YAAc76H,EACnBl5B,KAAK24I,uBAAuBz/G,GACxBl5B,KAAK4uB,OAAOgrB,kBAAoB1gB,IAChCl5B,KAAK4uB,OAAOysE,aAAam5D,eAAet7H,GACxCl5B,KAAK4uB,OAAOysE,aAAaA,aAAauxC,WAAW5sI,KAAK4uB,OAAOysE,aAAao5D,cAAcv7H,OAAK3tB,KAE7FvL,KAAK2gB,SAAW,OAAuB8xI,iBACvCzyJ,KAAK4uB,OAAOhV,OAAO,QAAyC,CAAE+G,OAAQ,SAEtE3gB,KAAK2gB,SAAW,OAAuBoyI,OAAQ,CAC/C,IAAIhtI,EAAO,CACPtX,QAAQ,EAAOs7H,UAAW/pI,KAAK6xJ,oBAAqB9jI,YAAa,8BAGrE,GADA/tB,KAAK4uB,OAAO3mB,QAAQ,OAAiC8d,GACjDA,EAAKtX,OACL,OAGRzO,KAAK6xJ,oBAAoB3hJ,MAAK,GAC9BlQ,KAAK6xJ,oBAAoBzuJ,QAAQ2D,MAAM8qD,UAAY,OACnD7xD,KAAK00J,oBAAoB10J,KAAK6xJ,oBAAoBzuJ,WAG1D4tJ,EAAyB9wJ,UAAUw0J,oBAAsB,SAAUC,GAC/D,IAAIC,EAAQD,EAAUzoJ,cAAc,aACpC,GAAI0oJ,EAAO,CACP,IAAIv1G,EAAQs1G,EAAUzoJ,cAAc,yBAAyB9E,wBAAwB/B,OACrFuvJ,EAAM7tJ,MAAMhC,IAAMs6C,EAAQ,OAGlC2xG,EAAyB9wJ,UAAUq0J,yBAA2B,SAAUr7H,EAAK3J,GACzE,IAAI+C,EAAOtyB,KAAK4uB,OACZ+jI,EAAY3yJ,KAAK2gB,SAAW,OAAuBgyI,UACvD,GAAI3yJ,KAAK2gB,SAAW,OAAuBuxI,UAAyC,cAA7B5/H,EAAK0B,eAAexlB,KAA3E,CAGA,IAAIqmJ,EAAUlC,EAAY,yBAA2B,GACjDmC,EAAW90J,KAAK4uB,OAAOrqB,cAAc,MAAO,CAC5C+G,GAAIgnB,EAAKlvB,QAAQkI,IAAMqnJ,EAAY,mBAAqB,gBACxDnuJ,UAAWxE,KAAK4uB,OAAOnkB,SAAWoqJ,EAC9B,yCAA2C70J,KAAK4uB,OAAOnkB,SAAWoqJ,EAAU,0CAEpF70J,KAAK4uB,OAAOxrB,QAAQsB,YAAYowJ,GAChC90J,KAAK+0J,gBAAkB/0J,KAAKg1J,iBAAiB97H,GAAK,EAAM,KAAM3J,GAC9D,IAAIxJ,EAAO,CACPtX,QAAQ,EAAOs7H,UAAW/pI,KAAK+0J,gBAAiBhnI,YAAa,gCAEjE/tB,KAAK4uB,OAAO3mB,QAAQ,OAAiC8d,GACjDA,EAAKtX,SAGTzO,KAAK+0J,gBAAgB1uI,SAASyuI,GAC9B90J,KAAK+0J,gBAAgB7kJ,MAAK,GAC1BlQ,KAAK+0J,gBAAgB3xJ,QAAQ2D,MAAM8qD,UAAY,UAEnDm/F,EAAyB9wJ,UAAU80J,iBAAmB,SAAU97H,EAAK+7H,EAAgB3pJ,EAAIikB,GACrF,IAAIpsB,EAAU,IAAI,OAAO,CACrBm1I,SAAS,EACTC,eAAe,EACfG,eAAe,EACfl+H,OAAQxa,KAAK4uB,OAAOpU,OACpBla,OAAQN,KAAK4uB,OAAOgqH,kBAAoB54I,KAAK4uB,OAAOgqH,kBAAoBhrI,SAAS6B,KACjFmnB,SAAS,EACTnxB,UAAWzF,KAAK4uB,OAAOnpB,UACvBoF,QAAS7K,KAAKwyJ,wBAAwBt5H,EAAK3J,GAC3C7pB,KAAM1F,KAAKosI,WAAWxmI,KAAK5F,MAC3BusB,QAASvsB,KAAKmsI,cAAcvmI,KAAK5F,MACjC6F,MAAO7F,KAAKk1J,kBAAkBtvJ,KAAK5F,MACnCsF,MAAO,OACPD,OAAQ,OACR0mI,kBAAmB,CAAEhpI,OAAQ,QAC7B0H,SAAUzK,KAAK4uB,OAAOnkB,SAAWzK,KAAK4uB,OAAOnkB,SAAW,KAExD6tD,EAAmB,mBAEvB,GADAn1D,EAAQ,GAAKm1D,IAAoB,EAC7B28F,EAAgB,CAChB9xJ,EAAQ04C,OAAS77C,KAAKk4I,uBAAuBh/G,OAAK3tB,GAAW,GAC7D,IAAIspJ,EAAU70J,KAAK2gB,SAAW,OAAuBgyI,UAAY,sBAAwB,GACzFxvJ,EAAQsH,SAAWoqJ,EAAU,sBAG7B1xJ,EAAQ04C,OAAS77C,KAAKk4I,uBAAuBh/G,GAC7C/1B,EAAQsH,SAA4C,aAAjCzK,KAAK4uB,OAAO00D,kBAAmCtjF,KAAK2gB,SAAW,OAAuBuxI,SACnG,QAAU5mJ,EAAK,2BAA6B,QAAUA,EAEhE,OAAOnI,GAEX6tJ,EAAyB9wJ,UAAUy4I,uBAAyB,SAAUz/G,GAClE,IAAI5G,EAAOtyB,KAAK4uB,OAChB,GAAI5uB,KAAK2gB,SAAW,OAAuBuxI,UAAyC,cAA7B5/H,EAAK0B,eAAexlB,KAA3E,CAGA,IAAIlD,EAAKtL,KAAK2gB,SAAW,OAAuBuxI,SAAW,SAAW,OACtE5mJ,EAAKtL,KAAK2gB,SAAW,OAAuB8xI,gBAAkB,gBAAkBnnJ,EAChF,IAAIwpJ,EAAW90J,KAAK4uB,OAAOrqB,cAAc,MAAO,CAC5C+G,GAAIgnB,EAAKlvB,QAAQkI,GAAK,aAAeA,EACrC9G,UAAWxE,KAAK4uB,OAAOnkB,SACnB,QAAUa,EAAK,2BAA6BtL,KAAK4uB,OAAOnkB,SAAW,QAAUa,EAAK,4BAE1FtL,KAAK4uB,OAAOxrB,QAAQsB,YAAYowJ,GAChC90J,KAAK6xJ,oBAAsB7xJ,KAAKg1J,iBAAiB97H,GAAK,EAAO5tB,GAC7DtL,KAAK6xJ,oBAAoBxrI,SAASyuI,KAEtC9D,EAAyB9wJ,UAAUisI,cAAgB,WAC/C,eAAgBnsI,KAAK4uB,SAEzBoiI,EAAyB9wJ,UAAUksI,WAAa,WAC5C,GAAIpsI,KAAK2gB,SAAW,OAAuBoyI,QAAU/yJ,KAAK4uB,OAAO2kI,kBAC7D,IAAK,IAAIvyJ,EAAI,EAAGA,EAAIhB,KAAK4uB,OAAOoK,aAAa7J,QAAQxuB,OAAQK,IAAK,CAC9DhB,KAAKixJ,WAAW5kJ,KAAKrM,KAAK4uB,OAAOoK,aAAa7J,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKigB,OAClF,IAAIsjI,EAAYn1J,KAAK4uB,OAAOoK,aAAa7J,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKigB,MACzEikB,EAAgB91C,KAAK4uB,OAAOoK,aAAa7J,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK8S,UACjF1kB,KAAKkxJ,cAAc7kJ,KAAK,CAAEwlB,MAAOsjI,EAAWzwI,UAAWoxB,MAInEk7G,EAAyB9wJ,UAAUg1J,kBAAoB,SAAUnvI,GAG7D,GAFA/lB,KAAKo0J,cAAgBruI,EAAK3iB,UAAY2iB,EAAK3iB,QAAQ8I,cAAc,0BAC1D6Z,EAAK3iB,QAAQ8B,UAAUmB,SAAS,kBACnCrG,KAAK2gB,SAAW,OAAuBuxI,UAOvC,GANInsI,EAAK3iB,QAAQ8B,UAAUmB,SAAS,kBAChCrG,KAAK4uB,OAAOysE,aAAaA,aAAa+5D,sBAAsBp1J,KAAK4xJ,mBAE5D7rI,EAAK3iB,QAAQ8B,UAAUmB,SAAS,sBACrCrG,KAAKg0J,oBAE4B,eAAjCh0J,KAAK4uB,OAAO00D,kBAAqCtjF,KAAK4uB,OAAO8mB,eAAgB,CAC7E11C,KAAK4uB,OAAOhV,OAAO,QAAqC,CAAE+G,OAAQ,IAClE,IAAIiL,EAAShe,SAAS1B,cAAc,gBAChC0f,GACA,gBAAOA,SAId,GAAI5rB,KAAK2gB,SAAW,OAAuBoyI,OAC5C/yJ,KAAKoxJ,yBAEJ,GAAIpxJ,KAAK2gB,SAAW,OAAuBgyI,UAAW,CACvD3yJ,KAAKg0J,oBACDpoI,EAAShe,SAAS1B,cAAc,mBAChC0f,GACA,gBAAOA,QAGV,GAAI5rB,KAAK2gB,SAAW,OAAuB8xI,gBAAiB,CAC7DzyJ,KAAK4uB,OAAOhV,OAAO,QAAyC,CAAE+G,OAAQ,UAClEiL,EAAShe,SAAS1B,cAAc,uBAChC0f,GACA,gBAAOA,GAE0B,eAAjC5rB,KAAK4uB,OAAO00D,kBAAqCtjF,KAAK4uB,OAAO8mB,gBAC7D11C,KAAK4uB,OAAOhV,OAAO,QAAqC,CAAE+G,OAAQ,IAEtE3gB,KAAKmxJ,gBAAiB,EACtBnxJ,KAAKo0J,eAAgB,EAEzBp0J,KAAK4uB,OAAOyF,IAAI,QAAwBr0B,KAAKuzE,aAEjDy9E,EAAyB9wJ,UAAUwsH,WAAa,WAC5C,GAAK1sH,KAAKwzJ,cAAV,CAIIxzJ,KAAKkxJ,cAAcvwJ,QACnBX,KAAK4uB,OAAO3jB,cAAc,CAAE+tB,aAAc,CAAE7J,QAAS,MAAQ,GAEjE,IAAK,IAAInuB,EAAI,EAAGA,EAAIhB,KAAKkxJ,cAAcvwJ,OAAQK,IAC3ChB,KAAK4uB,OAAO89F,WAAW1sH,KAAKkxJ,cAAcv/I,SAAS3Q,EAAE4Q,WAAY,KAAKigB,MAAO7xB,KAAKkxJ,cAAcv/I,SAAS3Q,EAAE4Q,WAAY,KAAK8S,UAAW1kB,KAAK4uB,OAAO2kI,mBAElJvzJ,KAAKkxJ,cAAcvwJ,QACpBX,KAAK4uB,OAAOk+F,eAEhB9sH,KAAKoxJ,yBAZDpxJ,KAAKoxJ,qBAcbJ,EAAyB9wJ,UAAUkyJ,eAAiB,SAAUrsI,EAAMmT,GAChE,IACIgM,EADA5S,EAAOtyB,KAAK4uB,OAoBhB,OAlBI5uB,KAAK2gB,SAAW,OAAuBo8B,OACvC7X,EAAQ5S,EAAK++F,UAAU32G,YAAY,iBAAmBqL,EAAKqyH,gBAAgB,GAEtEp4I,KAAK2gB,SAAW,OAAuBw9B,MAC5CjZ,EAAQ5S,EAAK++F,UAAU32G,YAAY,gBAE9B1a,KAAK2gB,SAAW,OAAuBuxI,SAC5ChtH,EAAQhM,EAAMA,EAAIgpB,YAAchpB,EAAIrH,MAAQS,EAAK++F,UAAU32G,YAAY,gBAElE1a,KAAK2gB,SAAW,OAAuBoyI,OAC5C7tH,EAAQ5S,EAAK++F,UAAU32G,YAAY,QAE9B1a,KAAK2gB,SAAW,OAAuBgyI,UAC5CztH,EAAQ5S,EAAK++F,UAAU32G,YAAY,cAE9B1a,KAAK2gB,SAAW,OAAuB8xI,kBAC5CvtH,EAAQ5S,EAAK++F,UAAU32G,YAAY,kBAEhCwqB,GAEX8rH,EAAyB9wJ,UAAUm1J,cAAgB,SAAU10I,GACzD,IAAI3Q,EAUJ,OATI2Q,IAAW,OAAuBw9B,OAASx9B,IAAW,OAAuBo8B,OAC7E/sC,EAAO,2BAEF2Q,IAAW,OAAuBuxI,SACvCliJ,EAAO,mCAEF2Q,IAAW,OAAuB8xI,kBACvCziJ,EAAO,4CAEJA,GAEXghJ,EAAyB9wJ,UAAUo1J,cAAgB,SAAU30I,GACzD,IAAImR,EAQJ,OAPInR,IAAW,OAAuBw9B,OAASx9B,IAAW,OAAuBo8B,OAC7EjrB,EAAO,OAEFnR,IAAW,OAAuBuxI,UAAYlyJ,KAAK2gB,SAAW,OAAuBoyI,QAC1FpyI,IAAW,OAAuB8xI,iBAAmBzyJ,KAAK2gB,SAAW,OAAuB8xI,kBAC5F3gI,EAAO,YAEJA,GAUXk/H,EAAyB9wJ,UAAUg4I,uBAAyB,SAAUh/G,EAAKnT,EAAMkvI,GAC7E,IAAI5xJ,EAAQrD,KACRsyB,EAAOtyB,KAAK4uB,OAChB0D,EAAKvD,GAAG,QAAwB/uB,KAAKuzE,WAAYvzE,MACjD,IAAIsL,EAAKgnB,EAAKlvB,QAAQkI,GAAKtL,KAAKq1J,cAAcr1J,KAAK2gB,QAC/Ck7B,EAASvpB,EAAK/tB,cAAc,MAAO,CAAEC,UAAW,yBAChD+wJ,EAAWjjI,EAAK/tB,cAAc,MAAO,CAAEC,UAAW,sBAAuB8G,GAAIA,IACjFiqJ,EAASzqJ,UAAY9K,KAAKoyJ,eAAersI,EAAMmT,GAC/C2iB,EAAOn3C,YAAY6wJ,GACnB,IAAIxD,EAAUz/H,EAAK/tB,cAAc,UAC5B0wJ,IACDj1J,KAAK+xJ,QAAU,IAAI,OAAO,CACtBtnJ,SAAUzK,KAAK4uB,OAAOnkB,SAClB,oCAA2CzK,KAAK4uB,OAAOnkB,SAAW,qCAE1EsnJ,EAAQjnJ,UAAYwnB,EAAK++F,UAAU32G,YAAY1a,KAAKs1J,cAAct1J,KAAK2gB,SACvE3gB,KAAK+xJ,QAAQ1rI,SAAS0rI,GAEtBA,EAAQt7D,QAAU,SAAUtpF,GACxB9J,EAAMmyJ,6BAGd,IAAIzC,EAAS/yJ,KAAK2gB,SAAW,OAAuBoyI,OAChDb,EAAWlyJ,KAAK2gB,SAAW,OAAuBuxI,SACtD,GAAIA,GAAYa,EAAQ,CACpB,IAAI0C,EAAO1C,EAAS,OAAS,SACzB2C,EAAWpjI,EAAK/tB,cAAc,UAKlC,GAJAvE,KAAKmyJ,eAAiB,IAAI,OAAO,CAC7B1nJ,SAAUzK,KAAK4uB,OAAOnkB,SAAW,0BAA4BgrJ,EAA5B,cAAwDz1J,KAAK4uB,OAAOnkB,SAC/F,0BAA4BgrJ,EAAO,eAEzCvD,EAAU,CACV,IAAI17D,EAAOlkE,EAAK/tB,cAAc,OAAQ,CAAEC,UAAW,2CACnDkxJ,EAAShxJ,YAAY8xF,QAGrBk/D,EAAS5qJ,UAAYwnB,EAAK++F,UAAU32G,YAAY,SAEpDmhC,EAAOn3C,YAAYgxJ,GACnB11J,KAAKmyJ,eAAe9rI,SAASqvI,GAC7BA,EAASj/D,QAAU,SAAUtpF,GACpB,eAAD,CAAcA,EAAE7M,OAAQ,mBACxB+C,EAAMurB,OAAOysE,aAAakyB,iBAC1BlqH,EAAMixJ,4BAGFpC,EACA7uJ,EAAM0wH,eAGN1wH,EAAMowJ,mBACNpwJ,EAAM4tJ,WAAa,GACnB5tJ,EAAM6tJ,cAAgB,GACtB7tJ,EAAMmwJ,eAAgB,IAIlC33G,EAAOn3C,YAAYgxJ,GAKvB,OAHKT,GACDp5G,EAAOn3C,YAAYqtJ,GAEhBl2G,GAEXm1G,EAAyB9wJ,UAAU6zH,YAAc,WAC7C/zH,KAAK4uB,OAAOysE,aAAaA,aAAag5D,kBAAkBr0J,KAAK+zJ,aAC7D/zJ,KAAK4uB,OAAOysE,aAAaA,aAAa+5D,yBAE1CpE,EAAyB9wJ,UAAUy1J,0BAA4B,WAC3D,IAAI5oG,EAAOn/C,SAASgpH,eAAe52H,KAAK4uB,OAAOxrB,QAAQkI,GAAK,oBAC5D,GAAIyhD,EAAM,CACN,gBAAOA,GACP,IAAInhC,EAAShe,SAAS1B,cAAc,mBAChC0f,GACA,gBAAOA,GAGf,IAAIgqI,EAAahoJ,SAAS1B,cAAc,uBACpC0pJ,GACA,gBAAOA,IAGf5E,EAAyB9wJ,UAAUs1J,yBAA2B,WACtDx1J,KAAK2gB,SAAW,OAAuBo8B,QAAU/8C,KAAK2gB,SAAW,OAAuBw9B,MACxFn+C,KAAK4uB,OAAOsO,UAEPl9B,KAAK2gB,SAAW,OAAuBuxI,UAC5ClyJ,KAAK4uB,OAAOysE,aAAaA,aAAaw6D,kBAAkB,CAAE38H,IAAKl5B,KAAK+zJ,YAAakB,eAAgBj1J,KAAK4xJ,oBACtG5xJ,KAAK21J,6BAEA31J,KAAK2gB,SAAW,OAAuBoyI,QAC5C/yJ,KAAK0sH,aACL1sH,KAAK21J,6BAEA31J,KAAK2gB,SAAW,OAAuB8xI,kBAC5CzyJ,KAAK4uB,OAAOhV,OAAO,QAAyC,CAAE+G,OAAQ,YACtE3gB,KAAK21J,4BACL31J,KAAKmxJ,gBAAiB,EACtBnxJ,KAAKo0J,eAAgB,IAG7BpD,EAAyB9wJ,UAAUkxJ,kBAAoB,WACnD,GAAIpxJ,KAAK4xJ,kBAAT,CACI,IAAIkE,EAAgB91J,KAAK6xJ,oBAAoBzuJ,QAAQ8I,cAAc,oBACnE,gBAAO4pJ,QAGX91J,KAAKi0J,iBAAkB,EACvBj0J,KAAK4xJ,mBAAoB,EACzB5xJ,KAAK+1J,6BAET/E,EAAyB9wJ,UAAU61J,0BAA4B,WAC3D,GAAK/1J,KAAK6xJ,oBAAV,CAGA,IAAI9kG,EAAOn/C,SAASgpH,eAAe52H,KAAK6xJ,oBAAoBzuJ,QAAQkI,IAChEtL,KAAK6xJ,sBAAwB7xJ,KAAK6xJ,oBAAoB/iI,aAAei+B,IACrE/sD,KAAK6xJ,oBAAoBr/I,UACzB,gBAAOu6C,IAEX/sD,KAAKg0J,oBACDh0J,KAAK2gB,SAAW,OAAuBoyI,SACvC/yJ,KAAKkxJ,cAAgB,GACrBlxJ,KAAKixJ,WAAa,GAClBjxJ,KAAKwzJ,eAAgB,KAG7BxC,EAAyB9wJ,UAAU8zJ,kBAAoB,WACnD,IAAKh0J,KAAKo0J,eAAiBp0J,KAAK+0J,gBAAiB,CAC7C,IAAIiB,EAAYpoJ,SAASgpH,eAAe52H,KAAK+0J,gBAAgB3xJ,QAAQkI,IACjEtL,KAAK+0J,kBAAoB/0J,KAAK+0J,gBAAgBjmI,aAAeknI,IAC7Dh2J,KAAK+0J,gBAAgBviJ,UACrB,gBAAOwjJ,IAGfh2J,KAAKmxJ,gBAAiB,EACtBnxJ,KAAKo0J,eAAgB,GAEzBpD,EAAyB9wJ,UAAUo0J,yBAA2B,SAAUh0J,GACpE,GAAIA,EACIA,EAAOqhB,cAAczc,UAAUmB,SAAS,kBACxC,gBAAO/F,EAAOqhB,eAGd,gBAAOrhB,QAKX,IADA,IAAIs0J,EAAQ50J,KAAKuyJ,gBAAgB3xI,SACxB5f,EAAI,EAAGA,EAAI4zJ,EAAMj0J,OAAQK,IAC9BV,EAASs0J,EAAMjjJ,SAAS3Q,EAAE4Q,WAAY,KAAK1F,cAAc,mBACrD5L,IACA,gBAAOA,GACPU,MAKhBgwJ,EAAyB9wJ,UAAUqzE,WAAa,SAAUpmE,GACpC,KAAdA,EAAEqG,UAAoBxT,KAAK2gB,SAAW,OAAuBuxI,UAC1D/kJ,EAAE7M,OAAO4E,UAAUmB,SAAS,kBAC3BrG,KAAK2gB,SAAW,OAAuBo8B,QAAU/8C,KAAK2gB,SAAW,OAAuBw9B,QAC5Fn+C,KAAKw1J,4BAGbxE,EAAyB9wJ,UAAUyxJ,aAAe,SAAU5rI,GAC/B,SAArBA,EAAKgI,aAA+C,WAArBhI,EAAKgI,aACpC/tB,KAAK4uB,OAAOyF,IAAI,QAAwBr0B,KAAKuzE,aAGrDy9E,EAAyB9wJ,UAAU07C,oBAAsB,WACjD57C,KAAKuyJ,iBACL,OAAaptJ,OAAOnF,KAAKuyJ,gBAAiB,OAAQ5iJ,SAAW,WAAa,QAAS3P,KAAKqzJ,gCAE5F,eAAuBrzJ,KAAK4uB,OAAQ5uB,KAAKmkG,aAAa,EAAMnkG,MAC5DA,KAAK4uB,OAAOgtB,oBAAoB,OAAuB57C,KAAK0xJ,qBAEzDV,EA/tBkC,I,qFCJzC,EAAkC,WAOlC,SAASiF,EAAiB79H,GACtBp4B,KAAKo4B,YAAcA,EAqavB,OA7ZA69H,EAAiB/1J,UAAUyT,OAAS,WAChC3T,KAAKk2J,aAAel2J,KAAKo4B,YAAYh1B,QACrCpD,KAAKm2J,yBACLn2J,KAAKo2J,sBACLp2J,KAAK4T,cAOTqiJ,EAAiB/1J,UAAUoV,QAAU,WACjCtV,KAAKo4B,YAAYi+H,mBACbr2J,KAAKs2J,MAAM31J,QACXX,KAAKu2J,kBAETv2J,KAAKw2J,uBACLx2J,KAAKy2J,gBAQTR,EAAiB/1J,UAAUk2J,oBAAsB,WAC7C,IAAIM,EACAr+H,EAAWr4B,KAAKo4B,YAChBmmB,EAAMlmB,EAASj1B,QAAQ8I,cAAc,uBACrCyqJ,EAAO/oJ,SAASgpJ,yBACpBr4G,EAAIzzC,UAAY,GAChB,IAAK,IAAI9J,EAAI,EAAGA,GAAKq3B,EAASL,UAAWh3B,IACrC01J,EAAO,eAAc,IAAK,CACtBlyJ,UAAW,iDACXwK,MAAO,CAAEszE,SAAU,KAAM,aAAcjqD,EAASyyG,kBAAkB,QAAU9pI,EAAIq3B,EAASyyG,kBAAkB,MACnGzyG,EAASw+H,WAAax+H,EAASyyG,kBAAkB,SAAU5wC,KAAM,OAEzE7hE,EAASN,cAAgB/2B,IACzB,eAAU01J,EAAM,CAAC,gBAAiB,YAAa,CAAC,oBAChDA,EAAK/rJ,aAAa,eAAgB,SAEtCgsJ,EAAKjyJ,YAAYgyJ,GAErBn4G,EAAI75C,YAAYiyJ,GAChB32J,KAAKs2J,MAAQ,GAAG5oJ,MAAMpK,KAAKi7C,EAAIzJ,aAQnCmhH,EAAiB/1J,UAAU0T,WAAa,WACpC,OAAa9H,IAAI9L,KAAKk2J,aAAc,QAASl2J,KAAKsoC,aAActoC,MAChE,OAAa8L,IAAI9L,KAAKk2J,aAAc,WAAYl2J,KAAK82J,sBAAuB92J,OAQhFi2J,EAAiB/1J,UAAUuU,aAAe,WACtC,OAAatP,OAAOnF,KAAKo4B,YAAYh1B,QAAS,QAASpD,KAAKsoC,cAC5D,OAAanjC,OAAOnF,KAAKo4B,YAAYh1B,QAAS,WAAYpD,KAAK82J,wBASnEb,EAAiB/1J,UAAUsS,QAAU,WACjCxS,KAAKyU,gBAETwhJ,EAAiB/1J,UAAUs2J,qBAAuB,WAI9C,IAHA,IAAIn+H,EAAWr4B,KAAKo4B,YAChB2+H,EAAmB1+H,EAASj1B,QAAQ8I,cAAc,uBAClDoqJ,EAAQS,EAAiBr0I,iBAAiB,KACrC1hB,EAAI,EAAGA,EAAIs1J,EAAM31J,OAAQK,IAC1Bs1J,EAAM3kJ,SAAS3Q,EAAE4Q,WAAY,KAAKkW,aAAa,eAAiBwuI,EAAM3kJ,SAAS3Q,EAAE4Q,WAAY,KAAKkW,aAAa,UAC/GwuI,EAAM3kJ,SAAS3Q,EAAE4Q,WAAY,KAAKjH,aAAa,aAAc0tB,EAASyyG,kBAAkB,QAAUwrB,EAAM3kJ,SAAS3Q,EAAE4Q,WAAY,KAAKlH,aAAa,SAC3I2tB,EAASyyG,kBAAkB,MAAQzyG,EAASw+H,WAAax+H,EAASyyG,kBAAkB,WAItGmrB,EAAiB/1J,UAAUi2J,uBAAyB,WAChDn2J,KAAKoD,QAAU,eAAc,MAAO,CAChCoB,UAAW,mBAAoBwK,MAAO,CAAE,KAAQ,gBAEpDhP,KAAKg3J,iBAAiBh3J,KAAKoD,SAC3BpD,KAAKi3J,mBAAmBj3J,KAAKoD,SAC7BpD,KAAKoD,QAAQsB,YAAY,eAAc,MAAO,CAAEF,UAAW,wBAC3DxE,KAAKk3J,mBAAmBl3J,KAAKoD,SAC7BpD,KAAKm3J,gBAAgBn3J,KAAKoD,SAC1BpD,KAAKo4B,YAAYh1B,QAAQsB,YAAY1E,KAAKoD,UAE9C6yJ,EAAiB/1J,UAAU82J,iBAAmB,SAAUI,GACpDp3J,KAAKs1I,MAAQ,eAAc,MAAO,CAC9B9wI,UAAW,+BACXwK,MAAO,CACHk2B,MAAOllC,KAAKo4B,YAAY0yG,kBAAkB,oBAC1CxoD,SAAU,KAAMrzE,KAAM,YAG9BjP,KAAKkjD,KAAO,eAAc,MAAO,CAC7B1+C,UAAW,6BACXwK,MAAO,CACHk2B,MAAOllC,KAAKo4B,YAAY0yG,kBAAkB,uBAC1CxoD,SAAU,KAAMrzE,KAAM,YAG9B,eAAO,CAACjP,KAAKs1I,MAAOt1I,KAAKkjD,MAAOk0G,IAEpCnB,EAAiB/1J,UAAU+2J,mBAAqB,SAAUG,GACtD,IAAIC,EAAY,eAAc,OAC9Br3J,KAAKs3J,GAAK,eAAc,IAAK,CACzB9yJ,UAAW,wBAAyBsG,UAAW,MAC/CkE,MAAO,CACHk2B,MAAOllC,KAAKo4B,YAAY0yG,kBAAkB,wBAC1C,aAAc9qI,KAAKo4B,YAAY0yG,kBAAkB,wBACjDxoD,SAAU,KACV4X,KAAM,OAGdm9D,EAAU3yJ,YAAY1E,KAAKs3J,IAC3BF,EAAe1yJ,YAAY2yJ,IAE/BpB,EAAiB/1J,UAAUg3J,mBAAqB,SAAUE,GACtD,IAAIG,EAAY,eAAc,OAC9Bv3J,KAAKw3J,GAAK,eAAc,IAAK,CACzBhzJ,UAAW,wBACXsG,UAAW,MAAOkE,MAAO,CACrBk2B,MAAOllC,KAAKo4B,YAAY0yG,kBAAkB,oBAC1C,aAAc9qI,KAAKo4B,YAAY0yG,kBAAkB,oBACjDxoD,SAAU,KACV4X,KAAM,OAGdq9D,EAAU7yJ,YAAY1E,KAAKw3J,IAC3BJ,EAAe1yJ,YAAY6yJ,IAE/BtB,EAAiB/1J,UAAUi3J,gBAAkB,SAAUC,GACnDp3J,KAAKwtC,KAAO,eAAc,MAAO,CAC7BhpC,UAAW,6BACXwK,MAAO,CACHk2B,MAAOllC,KAAKo4B,YAAY0yG,kBAAkB,mBAC1CxoD,SAAU,KAAMrzE,KAAM,YAG9BjP,KAAKy3J,KAAO,eAAc,MAAO,CAC7BjzJ,UAAW,6BACXwK,MAAO,CACHk2B,MAAOllC,KAAKo4B,YAAY0yG,kBAAkB,mBAC1CxoD,SAAU,KAAMrzE,KAAM,YAG9B,eAAO,CAACjP,KAAKwtC,KAAMxtC,KAAKy3J,MAAOL,IAEnCnB,EAAiB/1J,UAAUooC,aAAe,SAAUn7B,GAChD,IAAIkrB,EAAWr4B,KAAKo4B,YAUpB,OATAp4B,KAAKM,OAAS6M,EAAE7M,OACZN,KAAKM,OAAO4E,UAAUmB,SAAS,kBAC/B8G,EAAE+F,iBAENmlB,EAASq/H,eAAiBr/H,EAASN,YAC9B/3B,KAAKM,OAAO4E,UAAUmB,SAAS,cAAiB,eAAkBrG,KAAKM,OAAOoK,aAAa,YAC5F2tB,EAASN,YAAcpmB,SAAS3R,KAAKM,OAAOoK,aAAa,SAAU,IACnE2tB,EAAStwB,aAEN,GAEXkuJ,EAAiB/1J,UAAU42J,sBAAwB,SAAU3pJ,GACzDnN,KAAKM,OAAS6M,EAAE7M,OACZN,KAAKM,OAAO4E,UAAUmB,SAAS,kBAAkC,IAAb8G,EAAEopF,QACtDppF,EAAE+F,kBAGV+iJ,EAAiB/1J,UAAUq2J,gBAAkB,WACzC,IACIoB,EACAC,EACAprC,EAHAn0F,EAAWr4B,KAAKo4B,YAIhBy/H,EAAW73J,KAAKk2J,aAAaxzI,iBAAiB,mFAClD2V,EAASN,YAAsC,IAAxBM,EAASw+H,WAAmB,EAAIx+H,EAASN,YAC5DM,EAASN,YAAcM,EAASw+H,YAAcx+H,EAASw+H,aACvDx+H,EAASN,YAAcM,EAASw+H,YAEpCc,EAAiBhmJ,UAAU0mB,EAASN,YAAcM,EAASL,WAAWpmB,WAAY,IAC9EymB,EAASN,YAAcM,EAASL,YAAc,GAAK2/H,EAAiB,IACpEA,GAAkC,GAEtC,IAAK,IAAI32J,EAAI,EAAGA,EAAIq3B,EAASL,UAAWh3B,IAAK,CACzC,GAAIq3B,EAASy/H,eAAgB,CACzB,IAAIC,EAAc/3J,KAAKk2J,aAAahqJ,cAAc,YAC9C8rJ,EAAkBh4J,KAAKM,OAASN,KAAKM,OAASy3J,GAA4B,KAC1EE,GAAc,EACdC,GAAc,EACdC,GAAe,EACfC,GAAc,EACdC,GAAiB,EACjBC,GAAY,EACZC,GAAY,EAChB,GAAIP,EAAiB,CACjB,IAAIQ,EAAcR,EAAgB9yJ,UAClC,GAAIszJ,EAAYnyJ,SAAS,WACrB,QAAQ,GACJ,KAAKmyJ,EAAYnyJ,SAAS,UACtB4xJ,GAAc,EACd,MACJ,KAAKO,EAAYnyJ,SAAS,UACtB6xJ,GAAc,EACd,MACJ,KAAKM,EAAYnyJ,SAAS,WACtB8xJ,GAAe,EACf,MACJ,KAAKK,EAAYnyJ,SAAS,UACtB+xJ,GAAc,EACd,WAGP,GAAII,EAAYnyJ,SAAS,iBAC1B,QAAQ,GACJ,KAAKmyJ,EAAYnyJ,SAAS,QACtBiyJ,GAAY,EACZ,MACJ,KAAKE,EAAYnyJ,SAAS,QACtBkyJ,GAAY,EACZ,MACJ,QACIF,EAAiBG,EAAYnyJ,SAAS,iBACtC,OAIhBuxJ,EAAYQ,GAA+C,QAA/Bp4J,KAAKo4B,YAAYzZ,UAC7Ck5I,EAAW73J,KAAKk2J,aAAaxzI,iBAAiB,mFAC9C,IAAI+1I,EAAkB74J,MAAMyzI,KAAKwkB,GAAU79H,MAAK,SAAUuzB,GAAQ,OAAO57C,SAAS47C,EAAK7iD,aAAa,SAAU,MAAQ2tB,EAASN,eAG3Hy0F,EADA2rC,GAA+C,SAA/Bn4J,KAAKo4B,YAAYzZ,UACxB,EAAI3d,EAERo3J,GAA8C,QAA/Bp4J,KAAKo4B,YAAYzZ,UAC3Bg5I,EAAiBt/H,EAASL,UAAa,EAAIh3B,EAEhDk3J,GAA8C,eAA/Bl4J,KAAKo4B,YAAYzZ,WAA8Bs5I,GAA8C,cAA/Bj4J,KAAKo4B,YAAYzZ,UAC/F85I,EACS9mJ,SAASkmJ,EAAS,GAAGntJ,aAAa,SAAU,IAAM1J,EAEtDi3J,GAA8C,cAA/Bj4J,KAAKo4B,YAAYzZ,UAC5BhN,SAAS3R,KAAKs3J,GAAG5sJ,aAAa,SAAU,IAAM1J,EAG9Cq3B,EAASN,YAAc/2B,EAG/Bs3J,GAAaC,EACTlgI,EAASN,YAAc/2B,EAE3Bq3J,EACK1mJ,SAASkmJ,EAAS,GAAGntJ,aAAa,SAAU,IAAM1J,EAGlD22J,EAAiBt/H,EAASL,UAAa,EAAIh3B,OAIzDwrH,EAAUmrC,EAAiBt/H,EAASL,UAAa,EAAIh3B,EAErDwrH,GAAUn0F,EAASw+H,YACnB72J,KAAKs2J,MAAM3kJ,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAUC,OAAO,UACxDnF,KAAKs2J,MAAM3kJ,SAAS3Q,EAAE4Q,WAAY,KAAK7K,MAAMC,QAAU,GACvDhH,KAAKs2J,MAAM3kJ,SAAS3Q,EAAE4Q,WAAY,KAAKjH,aAAa,QAAS6hH,EAAO56G,YACpE5R,KAAKs2J,MAAM3kJ,SAAS3Q,EAAE4Q,WAAY,KAAK9G,UAAautB,EAASqgI,WAAiCrgI,EAASqgI,WAAalsC,EAA1CA,EAAO56G,WAC7EymB,EAASN,cAAgBy0F,EACzBxsH,KAAKs2J,MAAM3kJ,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,mBAGrD9L,KAAKs2J,MAAM3kJ,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAUC,OAAO,qBAI5DnF,KAAKs2J,MAAM3kJ,SAAS3Q,EAAE4Q,WAAY,KAAK9G,UAAautB,EAASqgI,WAAiCrgI,EAASqgI,WAAalsC,EAA1CA,EAAO56G,WACjF5R,KAAKs2J,MAAM3kJ,SAAS3Q,EAAE4Q,WAAY,KAAK7K,MAAMC,QAAU,QAE3D,eAAUhH,KAAKs2J,MAAM3kJ,SAAS3Q,EAAE4Q,WAAY,KAAM,GAAI,CAAC,gBAAiB,aACxE5R,KAAKs2J,MAAM3kJ,SAAS3Q,EAAE4Q,WAAY,KAAKhH,gBAAgB,gBAE3D,eAAW5K,KAAKs1I,MAAO,CACnB,MAAS,IACT,MAASt1I,KAAKo4B,YAAY0yG,kBAAkB,sBAEhD,eAAW9qI,KAAKk2J,aAAahqJ,cAAc,aAAc,CACrD,MAAS,IACT,MAASlM,KAAKo4B,YAAY0yG,kBAAkB,sBAEhD,eAAW9qI,KAAKy3J,KAAM,CAClB,MAASp/H,EAASw+H,WAAWjlJ,WAC7B,MAAS5R,KAAKo4B,YAAY0yG,kBAAkB,qBAEhD,eAAW9qI,KAAKk2J,aAAahqJ,cAAc,YAAa,CACpD,MAASmsB,EAASw+H,WAAWjlJ,WAC7B,MAAS5R,KAAKo4B,YAAY0yG,kBAAkB,qBAEhD,eAAW9qI,KAAKkjD,KAAM,CAClB,OAAU7qB,EAASN,YAAc,GAAGnmB,WACpC,MAAS5R,KAAKo4B,YAAY0yG,kBAAkB,yBAEhD,eAAW9qI,KAAKk2J,aAAahqJ,cAAc,YAAa,CACpD,OAAUmsB,EAASN,YAAc,GAAGnmB,WACpC,MAAS5R,KAAKo4B,YAAY0yG,kBAAkB,yBAEhD,eAAW9qI,KAAKwtC,KAAM,CAClB,OAAUnV,EAASN,YAAc,GAAGnmB,WACpC,MAAS5R,KAAKo4B,YAAY0yG,kBAAkB,qBAEhD,eAAW9qI,KAAKk2J,aAAahqJ,cAAc,YAAa,CACpD,OAAUmsB,EAASN,YAAc,GAAGnmB,WACpC,MAAS5R,KAAKo4B,YAAY0yG,kBAAkB,qBAEhD,IAAI6tB,EAAW34J,KAAKo4B,YAAY0/H,gBAAkBD,EAASl3J,OACrDi3J,EACIjmJ,SAASkmJ,EAAS,GAAGntJ,aAAa,SAAU,IAAM2tB,EAASugI,YAC3DjnJ,SAASkmJ,EAAS,GAAGntJ,aAAa,SAAU,IAAMmtJ,EAASl3J,OAC/DgR,SAAS3R,KAAKs2J,MAAM,GAAG5rJ,aAAa,SAAU,IAAM2tB,EAASL,UACnE,eAAWh4B,KAAKs3J,GAAI,CAChB,MAAWqB,EAAU,EAAK,IAAMA,EAAQ/mJ,WACxC,MAAS5R,KAAKo4B,YAAY0yG,kBAAkB,wBAC5C,aAAc9qI,KAAKo4B,YAAY0yG,kBAAkB,0BAErD,IAAI+tB,EAAW74J,KAAKo4B,YAAY0/H,gBAAkBD,EAASl3J,OACrDgR,SAASkmJ,EAASA,EAASl3J,OAAS,GAAG+J,aAAa,SAAU,IAC9DiH,SAAS3R,KAAKs2J,MAAMt2J,KAAKs2J,MAAM31J,OAAS,GAAG+J,aAAa,SAAU,IACxE,eAAW1K,KAAKw3J,GAAI,CAChB,OAAUqB,EAAU,GAAGjnJ,WACvB,MAAS5R,KAAKo4B,YAAY0yG,kBAAkB,oBAC5C,aAAc9qI,KAAKo4B,YAAY0yG,kBAAkB,sBAErD9qI,KAAKM,YAASiL,GAElB0qJ,EAAiB/1J,UAAUu2J,aAAe,WACtC,IAAIpzJ,EAAQrD,KAKZ,GAJAA,KAAK84J,yBACL94J,KAAK+4J,2BACL/4J,KAAKg5J,2BACLh5J,KAAKi5J,wBACDj5J,KAAKs2J,MAAM31J,OAAQ,CACnB,IAAIu4J,EAAmBl5J,KAAKs2J,MAAMruC,WAAU,SAAUyuC,GAAQ,OAAOA,EAAKhsJ,aAAa,WAAarH,EAAM+0B,YAAYL,YAAYnmB,cAC9HmmB,EAAe/3B,KAAKo4B,YAAY0/H,iBAAwC,IAAtBoB,EAA2BA,GACzEl5J,KAAKo4B,YAAYL,YAAc,GAAK/3B,KAAKo4B,YAAYJ,UAC7D,eAAUh4B,KAAKs2J,MAAM3kJ,SAASomB,EAAYnmB,WAAY,KAAM,CAAC,gBAAiB,YAAa,IAC3F5R,KAAKs2J,MAAM3kJ,SAASomB,EAAYnmB,WAAY,KAAKjH,aAAa,eAAgB,UAGtFsrJ,EAAiB/1J,UAAU44J,uBAAyB,WAChD,IAAIK,EAAY,CAAC,cAAe,mBAC5BC,EAAoB,CAAC,sBAAuB,aAC5CC,EAAW,CAAC,aAAc,mBAC1BC,EAAmB,CAAC,qBAAsB,aAC1Ct5J,KAAKo4B,YAAYy+H,WAAa,GAAK72J,KAAKo4B,YAAYL,YAAc,GAClE,eAAU/3B,KAAKkjD,KAAMm2G,EAAUC,GAC/B,eAAUt5J,KAAKs1I,MAAO6jB,EAAWC,GACjC,eAAUp5J,KAAKk2J,aAAahqJ,cAAc,aAAcitJ,EAAWC,GACnE,eAAUp5J,KAAKk2J,aAAahqJ,cAAc,YAAamtJ,EAAUC,KAGjE,eAAUt5J,KAAKkjD,KAAMo2G,EAAkBD,GACvC,eAAUr5J,KAAKs1I,MAAO8jB,EAAmBD,GACzC,eAAUn5J,KAAKk2J,aAAahqJ,cAAc,YAAaotJ,EAAkBD,GACzE,eAAUr5J,KAAKk2J,aAAahqJ,cAAc,aAAcktJ,EAAmBD,KAGnFlD,EAAiB/1J,UAAU64J,yBAA2B,WAC9C/4J,KAAKo4B,YAAYL,YAAc/3B,KAAKo4B,YAAYJ,WAAch4B,KAAKo4B,YAAY0/H,gBAC5E93J,KAAKs2J,MAAMruC,WAAU,SAAUyuC,GAAQ,OAAoD,IAA7C/kJ,SAAS+kJ,EAAKhsJ,aAAa,SAAU,OACtF,eAAU1K,KAAKs3J,GAAI,CAAC,gBAAiB,mBAAoB,CAAC,yBAA0B,cAGpF,eAAUt3J,KAAKs3J,GAAI,CAAC,yBAA0B,aAAc,CAAC,gBAAiB,qBAGtFrB,EAAiB/1J,UAAU84J,yBAA2B,WAClD,IAAI3gI,EAAWr4B,KAAKo4B,YAChB+gI,EAAYn5J,KAAKs2J,MAAM,GAAGxrJ,UAAU+P,QAAQwd,EAASqgI,WAAY,IACjEb,EAAW73J,KAAKk2J,aAAaxzI,iBAAiB,oFAC7Cy2I,EAAUx4J,SAAWX,KAAKs2J,MAAM31J,QAAWgR,SAASwnJ,EAAW,IAAM9gI,EAASL,UAAYK,EAASw+H,YAChGx+H,EAASy/H,gBAAkBl4J,MAAMyzI,KAAKwkB,GAAU79H,MAAK,SAAUuzB,GAAQ,OAAO57C,SAAS47C,EAAK7iD,aAAa,SAAU,MAAQ2tB,EAASw+H,cACxI,eAAU72J,KAAKw3J,GAAI,CAAC,yBAA0B,aAAc,CAAC,gBAAiB,oBAG9E,eAAUx3J,KAAKw3J,GAAI,CAAC,gBAAiB,mBAAoB,CAAC,yBAA0B,eAG5FvB,EAAiB/1J,UAAU+4J,sBAAwB,WAC/C,IAAIM,EAAW,CAAC,aAAc,mBAC1BC,EAAmB,CAAC,qBAAsB,aAC1CC,EAAW,CAAC,aAAc,mBAC1BC,EAAmB,CAAC,qBAAsB,aAC1CrhI,EAAWr4B,KAAKo4B,YAChBC,EAASN,cAAgBM,EAASw+H,YAA6C,IAA/Bx+H,EAAS8jE,mBACzD,eAAUn8F,KAAKy3J,KAAM+B,EAAkBD,GACvC,eAAUv5J,KAAKwtC,KAAMksH,EAAkBD,GACvC,eAAUz5J,KAAKk2J,aAAahqJ,cAAc,YAAastJ,EAAkBD,GACzE,eAAUv5J,KAAKk2J,aAAahqJ,cAAc,YAAawtJ,EAAkBD,KAGzE,eAAUz5J,KAAKy3J,KAAM8B,EAAUC,GAC/B,eAAUx5J,KAAKwtC,KAAMisH,EAAUC,GAC/B,eAAU15J,KAAKk2J,aAAahqJ,cAAc,YAAaqtJ,EAAUC,GACjE,eAAUx5J,KAAKk2J,aAAahqJ,cAAc,YAAautJ,EAAUC,KAGlEzD,EA7a0B,GCFjC,EAA8B,WAO9B,SAAS0D,EAAavhI,GAClBp4B,KAAKo4B,YAAcA,EAiFvB,OAzEAuhI,EAAaz5J,UAAUyT,OAAS,WAC5B,IAAI4qC,EAAM,eAAc,MAAO,CAAE/5C,UAAW,mBAC5CxE,KAAK45J,cAAgB,eAAc,OAAQ,CAAEp1J,UAAW,cAAe0K,OAAQ,oBAC/ElP,KAAK65J,iBAAmB,eAAc,OAAQ,CAAEr1J,UAAW,iBAAkB0K,OAAQ,oBACrF,eAAO,CAAClP,KAAK45J,cAAe55J,KAAK65J,kBAAmBt7G,GACpDv+C,KAAKo4B,YAAYh1B,QAAQsB,YAAY65C,GACrCv+C,KAAKsV,WAOTqkJ,EAAaz5J,UAAUoV,QAAU,WAC7B,IAAI+iB,EAAWr4B,KAAKo4B,YACpBp4B,KAAK45J,cAAcx0I,YAAcplB,KAAKsc,OAAO+b,EAASyyG,kBAAkB,mBAAoB,CAAgC,IAA/BzyG,EAAS8jE,kBAA0B,EACxH9jE,EAASN,YAAaM,EAASw+H,YAAc,EAAGx+H,EAAS8jE,mBAAqB,IAAM,IAC5Fn8F,KAAK65J,iBAAiBz0I,YAAcplB,KAAKsc,OAAO+b,EAASyyG,kBAAkBzyG,EAAS8jE,mBAAqB,EAAI,gBAAkB,kBAAmB,CAAC9jE,EAAS8jE,mBAAqB,EAAG9jE,EAAS8jE,kBAAqB9jE,EAASJ,UAAYI,EAASN,YAAc,GAAM,EAAI,EACpQM,EAASJ,SAAWI,EAASN,YAAcM,EAAS8jE,kBAAoB9jE,EAAS8jE,kBAC7E9jE,EAASJ,SAAWI,EAASN,cACrC/3B,KAAK45J,cAAcj4I,cAAczc,UAAUC,OAAO,WAOtDw0J,EAAaz5J,UAAUorF,YAAc,WAC7BtrF,KAAK45J,gBACL55J,KAAK45J,cAAc7yJ,MAAMC,QAAU,QAEnChH,KAAK65J,mBACL75J,KAAK65J,iBAAiB9yJ,MAAMC,QAAU,SAQ9C2yJ,EAAaz5J,UAAUutF,YAAc,WAC5BztF,KAAK45J,eACN55J,KAAK2T,SAET3T,KAAK45J,cAAc7yJ,MAAMC,QAAU,GACnChH,KAAK65J,iBAAiB9yJ,MAAMC,QAAU,IAS1C2yJ,EAAaz5J,UAAUsS,QAAU,aAUjCmnJ,EAAaz5J,UAAUoc,OAAS,SAAU67E,EAAKpyE,GAE3C,IADA,IAAI+zI,EACK94J,EAAI,EAAGA,EAAI+kB,EAAKplB,OAAQK,IAE7B84J,EAAO,IAAI5hG,OAAO,MAAQ,EAAM,MAAO,MACvCigC,EAAMA,EAAIt9E,QAAQi/I,EAAM/zI,EAAKpU,SAAS3Q,EAAE4Q,WAAY,KAAKA,YAE7D,OAAOumF,GAEJwhE,EAzFsB,G,wBCJ7Bt6J,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxCK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAsB5D,EAAuB,SAAUiC,GAUjC,SAASk3J,EAAM52J,EAASC,EAASwrB,GAC7B,IAAIvrB,EAAQR,EAAOS,KAAKtD,KAAMmD,EAASC,IAAYpD,KASnD,OAPAqD,EAAM22J,WAAY,EAClB32J,EAAM44F,UAAW,EACjB54F,EAAM42J,YAAc,gBACpB52J,EAAM62J,iBAAkB,EAExB72J,EAAMk9G,UAAW,EACjBl9G,EAAMurB,OAASA,EACRvrB,EA8jCX,OAjlCAhE,EAAU06J,EAAOl3J,GA2BjBk3J,EAAM75J,UAAU2lB,gBAAkB,WAC9B,IAAIC,EAAU,GAad,OAZI9lB,KAAKm6J,uBACLr0I,EAAQzZ,KAAK,CACT2Z,OAAQ,kBACRD,KAAM,CAAC/lB,QAGXA,KAAKo6J,kBACLt0I,EAAQzZ,KAAK,CACT2Z,OAAQ,gBACRD,KAAM,CAAC/lB,QAGR8lB,GAQXi0I,EAAM75J,UAAU4T,UAAY,WAExB9T,KAAKq6J,iBAAmB,CACpBC,gBAAiB,mBACjBC,eAAgB,cAChBC,cAAe,aACfC,iBAAkB,mBAClBC,gBAAiB,kBACjBC,gBAAiB,kBACjBC,oBAAqB,sBACrBC,iBAAkB,yBAClBC,qBAAsB,6BACtBC,cAAe,iBACfC,iBAAkB,QAClBC,gBAAiB,mBACjBC,eAAgB,cAChBC,iBAAkB,mBAClBC,gBAAiB,kBACjBC,gBAAiB,kBACjBC,oBAAqB,sBACrBC,iBAAkB,yBAClBC,qBAAsB,6BACtBC,cAAe,iBACfC,iBAAkB,QAClBC,IAAK,MACLC,UAAW,kBACXC,YAAa,oBACbC,YAAa,yBACbC,KAAM,QACNC,GAAI,OACJC,MAAO,UAEXj8J,KAAKk8J,gBAAkB,IAAI,EAAiBl8J,MAC5CA,KAAKm8J,mBAAqB,IAAI,EAAan8J,OAO/C+5J,EAAM75J,UAAUyT,OAAS,WACrB3T,KAAKoD,QAAQuH,aAAa,YAAa,SACvC3K,KAAKoD,QAAQuH,aAAa,WAAY,MACtC3K,KAAKo8J,mBACDp8J,KAAKyK,YAC+B,IAAhCzK,KAAKyK,SAASzG,QAAQ,KACtB,eAAS,CAAChE,KAAKoD,SAAUpD,KAAKyK,SAASxG,MAAM,MAG7C,eAAS,CAACjE,KAAKoD,SAAU,CAACpD,KAAKyK,YAGlCzK,KAAKg6J,WACNh6J,KAAKoD,QAAQuH,aAAa,WAAY,KAEtC3K,KAAK42C,SACD52C,KAAKq8J,mBACLr8J,KAAK+uB,GAAG/uB,KAAKi6J,YAAaj6J,KAAK+tG,cAAe/tG,MAC9CA,KAAK4Z,OAAO5Z,KAAKi6J,YAAa,KAG9Bj6J,KAAK+tG,iBAIT/tG,KAAKshH,YACLthH,KAAKm8F,kBAAoBn8F,KAAKm8F,mBAAqB,EACnDn8F,KAAKs8J,8BACLt8J,KAAKk8J,gBAAgBvoJ,SACjB3T,KAAKu8J,oBACLv8J,KAAKm8J,mBAAmBxoJ,SAE5B3T,KAAKw8J,6BACDx8J,KAAKo6J,kBAAoBp6J,KAAKy8J,qBAC9Bz8J,KAAKy8J,oBAAoB9oJ,SAE7B3T,KAAK08J,eACD18J,KAAKm6J,uBAAyBn6J,KAAK28J,uBACnC38J,KAAK28J,sBAAsBhpJ,SAE/B3T,KAAKsV,UACLtV,KAAKiI,QAAQ,UAAW,CAAE,YAAejI,KAAK+3B,YAAa,kBAAqB/3B,KAAKm8F,qBAEzFn8F,KAAK4T,aACL5T,KAAK06G,eAQTq/C,EAAM75J,UAAU6U,eAAiB,WAC7B,IAAIi3B,EAAY,CAAC,cAAe,YAChC,OAAOhsC,KAAKgV,aAAag3B,IAQ7B+tH,EAAM75J,UAAUsS,QAAU,WAClBxS,KAAK8uB,cAGL9uB,KAAKq8J,oBACLr8J,KAAKq0B,IAAIr0B,KAAKi6J,YAAaj6J,KAAK+tG,eAC3B/tG,KAAKg6J,WACNh6J,KAAK8/F,gBAAgB,CAAC,cAG9B9/F,KAAKo/G,iBACLp/G,KAAKyU,eACL5R,EAAO3C,UAAUsS,QAAQlP,KAAKtD,MAC9BA,KAAKk8J,gBAAgB1pJ,UACrBxS,KAAKm8J,mBAAmB3pJ,UACnBxS,KAAKq8J,oBACNr8J,KAAKoD,QAAQ0H,UAAY,MAUjCivJ,EAAM75J,UAAU4/F,gBAAkB,SAAUm4B,EAAexrH,GACvDzM,KAAKqI,cAAc4vH,EAAexrH,IAQtCstJ,EAAM75J,UAAU4U,cAAgB,WAC5B,MAAO,SAUXilJ,EAAM75J,UAAU+U,kBAAoB,SAAUC,EAASC,GACnD,IAAInV,KAAK8uB,YAGT,GAAK5Z,EAAQ+iB,WAAaj4B,KAAK8qI,kBAAkB,QAAW31H,EAAQ8iB,WAAaj4B,KAAKm8F,kBAAtF,CAIIjnF,EAAQ8iB,YAAc7iB,EAAQ6iB,YAC9Bh4B,KAAKk8J,gBAAgB9F,sBACrBp2J,KAAKk8J,gBAAgB5mJ,WAEzB,IAAK,IAAIzH,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKF,GAAUrH,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC9D,IAAIwH,EAAOxR,EAAGgK,GACd,OAAQwH,GACJ,IAAK,cACGrV,KAAK48J,cAAc1nJ,EAAQ6iB,YAAa5iB,EAAQ4iB,cAChD/3B,KAAK68J,mBAAmB3nJ,EAASC,GAErC,MACJ,IAAK,WACL,IAAK,oBACL,IAAK,aACGnV,KAAKo6J,kBAAoBp6J,KAAKy8J,sBAC1BtnJ,EAAQ8iB,WAAa/iB,EAAQ+iB,WAC7Bj4B,KAAK+3B,YAAc,GAEvB/3B,KAAKy8J,oBAAoBK,iBAAiB,QAAS98J,KAAKi4B,WAExD/iB,EAAQ+iB,WAAa9iB,EAAQ8iB,UAC7Bj4B,KAAKi4B,SAAW/iB,EAAQ+iB,SACxBj4B,KAAK68J,mBAAmB3nJ,EAASC,GAC7BnV,KAAKugH,UAAYvgH,KAAKg6J,WACtBh6J,KAAK4uB,OACA3jB,cAAc,CAAE6sB,aAAc,CAAEG,SAAU9iB,EAAQ8iB,YAAc,IAIzEj4B,KAAKsV,UAET,MACJ,IAAK,YACGtV,KAAKo6J,kBAAoBp6J,KAAKy8J,sBAC9Bz8J,KAAKy8J,oBAAoBjqJ,UACzBxS,KAAKy8J,oBAAoB9oJ,UAE7B3T,KAAKsV,UACL,MACJ,IAAK,WACDtV,KAAK82C,WAAa92C,KAAK+8J,QAAQ/8J,KAAK42C,UACpC52C,KAAKsV,UACL,MACJ,IAAK,SACDtV,KAAKo8J,mBACLp8J,KAAKsV,UACL,MACJ,IAAK,wBACGtV,KAAKm6J,uBAAyBn6J,KAAK28J,uBACnC38J,KAAK28J,sBAAsBhpJ,SAE/B,MACJ,IAAK,kBACG3T,KAAK28J,uBACL38J,KAAK28J,sBAAsBrnJ,UAE/B,MACJ,IAAK,YACDtV,KAAKshH,YACL,MACJ,IAAK,qBACGthH,KAAKu8J,mBACLv8J,KAAKm8J,mBAAmB1uE,cAGxBztF,KAAKm8J,mBAAmB7wE,cAE5B,OAGZtrF,KAAKg9J,mBA1EDh9J,KAAKi4B,SAAWj4B,KAAKm8F,mBA4E7B49D,EAAM75J,UAAU0T,WAAa,WACpB5T,KAAKg6J,YACN,OAAaluJ,IAAI9L,KAAKoD,QAAS,UAAWpD,KAAKyzH,gBAAiBzzH,MAChE,OAAa8L,IAAI8B,SAAS6B,KAAM,UAAWzP,KAAKkmG,eAAgBlmG,OAEpE,OAAa8L,IAAI9L,KAAKoD,QAAS,UAAWpD,KAAKi9J,UAAWj9J,MAC1D,OAAa8L,IAAI9L,KAAKoD,QAAS,WAAYpD,KAAKk9J,WAAYl9J,MAE5D,OAAa8L,IAAIvF,OAAQ,SAAUvG,KAAKg9J,YAAah9J,MAErD,OAAa8L,IAAIvF,OAAQ,OAAQvG,KAAKg9J,YAAah9J,OAEvD+5J,EAAM75J,UAAUuU,aAAe,WACtBzU,KAAKg6J,YACN,OAAa70J,OAAOnF,KAAKoD,QAAS,UAAWpD,KAAKyzH,iBAClD,OAAatuH,OAAOyI,SAAS6B,KAAM,UAAWzP,KAAKkmG,iBAEvD,OAAa/gG,OAAOnF,KAAKoD,QAAS,UAAWpD,KAAKi9J,WAClD,OAAa93J,OAAOnF,KAAKoD,QAAS,WAAYpD,KAAKk9J,YAEnD,OAAa/3J,OAAOoB,OAAQ,SAAUvG,KAAKg9J,aAE3C,OAAa73J,OAAOoB,OAAQ,OAAQvG,KAAKg9J,cAE7CjD,EAAM75J,UAAU+8J,UAAY,SAAU9vJ,GAClC,IAAIgwJ,EAAyBn9J,KAAKo9J,4BAClC,GAAI,eAAkBD,GAAyB,CAC3C,IAAI78J,EAAS6M,EAAE7M,OACX+8J,EAAer9J,KAAKs9J,kBAIxB,GAHKt9J,KAAKg6J,YACNh6J,KAAKoD,QAAQ+X,UAAY,GAEzB7a,IAAWN,KAAKoD,UAAYpD,KAAKg6J,UAAW,CAC5C,IAAIuD,EAAyBv9J,KAAKw9J,0BAA0Bx9J,KAAKoD,QAAS,IAE1E,YADApD,KAAKy9J,SAASF,EAAuB,IAAI,GAG7C,GAAIj9J,IAAWN,KAAKoD,QAEhB,YADApD,KAAKoD,QAAQ+X,SAAW,GAGxB7a,IAAW+8J,GAAiB/8J,EAAO4E,UAAUmB,SAAS,cACtDrG,KAAKy9J,SAASn9J,GAAQ,KAKlCy5J,EAAM75J,UAAUg9J,WAAa,SAAU/vJ,GACnC,IAAIuwJ,EAAiB19J,KAAK29J,oBACtBN,EAAer9J,KAAKs9J,kBACnB,eAAkBI,IACnB19J,KAAK49J,YAAYF,GAAgB,GAEjC19J,KAAKg8F,WAAaqhE,GAAgBA,EAAan4J,UAAUmB,SAAS,kBAClErG,KAAK49J,YAAYP,GAAc,GAEnCr9J,KAAK69J,iCACA79J,KAAKg6J,YACNh6J,KAAKoD,QAAQ+X,SAAW,GAExBnb,KAAKg6J,YACLh6J,KAAKoD,QAAQ+X,UAAY,IAGjC4+I,EAAM75J,UAAUgmG,eAAiB,SAAU/4F,GACvC,GAAIA,EAAE8nH,QACgB,KAAd9nH,EAAEqG,QAAgB,CAClB,IAAI+pJ,EAAyBv9J,KAAKw9J,0BAA0Bx9J,KAAKoD,QAAS,IACtEm6J,EAAuB58J,OAAS,GAChC48J,EAAuB,GAAGx9I,UAK1Cg6I,EAAM75J,UAAUuzH,gBAAkB,SAAUtmH,GACxC,IAAI4nH,EAAW,eAAO5nH,EAAG,CAAEsB,QAAQ,IACnCzO,KAAK4Z,OAAO,QAAmBm7G,IACP,IAApBA,EAAStmH,QACTtB,EAAE6nH,4BAGV+kC,EAAM75J,UAAUw6G,YAAc,WACtB16G,KAAK8uB,aAGJ9uB,KAAKg6J,WACNh6J,KAAK+uB,GAAG,QAAmB/uB,KAAKu9D,WAAYv9D,OAGpD+5J,EAAM75J,UAAUk/G,eAAiB,WACzBp/G,KAAK8uB,aAGJ9uB,KAAKg6J,WACNh6J,KAAKq0B,IAAI,QAAmBr0B,KAAKu9D,aAGzCw8F,EAAM75J,UAAUq9D,WAAa,SAAUpwD,GAC9BnN,KAAKg6J,YACFh6J,KAAK89J,qBACL99J,KAAK+9J,iBAAiB5wJ,IAGtBA,EAAE+F,iBACFlT,KAAKg+J,mBAOjBjE,EAAM75J,UAAU49J,mBAAqB,WACjC,QAAO99J,KAAKo9J,6BAKhBrD,EAAM75J,UAAU+9J,uBAAyB,WACrCj+J,KAAKoD,QAAQ2c,SAKjBg6I,EAAM75J,UAAU89J,cAAgB,WAC5B,IAAIT,EAAyBv9J,KAAKw9J,0BAA0Bx9J,KAAKoD,QAAS,IACtEm6J,EAAuB58J,OAAS,GAChC48J,EAAuB,GAAGx9I,SAGlCg6I,EAAM75J,UAAUg+J,8BAAgC,WAC5C,IAAIC,EAAoBn+J,KAAK2xE,mBACzBwsF,GACAA,EAAkBp+I,SAG1Bg6I,EAAM75J,UAAU29J,+BAAiC,WAC7C,IAAIN,EAAyBv9J,KAAKw9J,0BAA0Bx9J,KAAKoD,QAAS,IACtEi6J,EAAer9J,KAAKs9J,kBACpBt9J,KAAKg8F,WAAaqhE,IAAiB,eAAkBA,EAAae,cAClEf,EAAaliJ,SAAW,EAEnBoiJ,EAAuB58J,OAAS,IACrC48J,EAAuBA,EAAuB58J,OAAS,GAAGwa,SAAW,IAO7E4+I,EAAM75J,UAAU69J,iBAAmB,SAAU5wJ,GACzCnN,KAAK2e,UAAYxR,EAAE5M,IACf4M,EAAEy9H,UAA0B,IAAdz9H,EAAEqG,QAChBxT,KAAKq+J,sBAAsBlxJ,GAER,IAAdA,EAAEqG,QACPxT,KAAKs+J,iBAAiBnxJ,GAEH,KAAdA,EAAEqG,SAAgC,KAAdrG,EAAEqG,QAC3BxT,KAAKu+J,6BAA6BpxJ,GAEf,KAAdA,EAAEqG,SAAgC,KAAdrG,EAAEqG,SAAgC,KAAdrG,EAAEqG,SAAgC,KAAdrG,EAAEqG,SACnExT,KAAKw+J,oBAAoBrxJ,GAE7BnN,KAAK2e,UAAY,IAErBo7I,EAAM75J,UAAUk9J,0BAA4B,WAGxC,IAFA,IAAID,EACAsB,EAAmBz+J,KAAKoD,QAAQsf,iBAAiB,mCAC5C1hB,EAAI,EAAGA,EAAIy9J,EAAiB99J,OAAQK,IAAK,CAC9C,IAAIoC,EAAUq7J,EAAiB9sJ,SAAS3Q,EAAE4Q,WAAY,KACtD,GAAIxO,IAAYA,EAAQ8B,UAAUmB,SAAS,cAAgBjD,EAAQ8B,UAAUmB,SAAS,kBAAmB,CACrG82J,EAAyB/5J,EACzB,OAGR,OAAO+5J,GAEXpD,EAAM75J,UAAUo+J,iBAAmB,SAAUnxJ,GACzC,IAAIuxJ,EAAwB1+J,KAAKo9J,4BAC7BG,EAAyBv9J,KAAKw9J,0BAA0Bx9J,KAAKoD,QAAS,IACtEi6J,EAAer9J,KAAKs9J,kBACxB,GAAIC,EAAuB58J,OAAS,EAChC,GAAIX,KAAKg8F,WAAaqhE,GAAgBqB,IAA0BnB,EAAuBA,EAAuB58J,OAAS,GACnH08J,EAAaliJ,SAAW,OAGxB,IAAK,IAAIna,EAAI,EAAGA,EAAIu8J,EAAuB58J,OAAQK,IAC/C,GAAI09J,IAA0BnB,EAAuB5rJ,SAAS3Q,EAAE4Q,WAAY,KAAM,CAC9E,IAAI+sJ,EAAkB39J,EAAI,EACtB29J,EAAkBpB,EAAuB58J,SACzCwM,EAAE+F,iBACFqqJ,EAAuB5rJ,SAASgtJ,EAAgB/sJ,WAAY,KAAKmO,SAErE,QAMpBg6I,EAAM75J,UAAUm+J,sBAAwB,SAAUlxJ,GAC9C,IAAIuxJ,EAAwB1+J,KAAKo9J,4BAC7BG,EAAyBv9J,KAAKw9J,0BAA0Bx9J,KAAKoD,QAAS,IACtEi6J,EAAer9J,KAAKs9J,kBACxB,GAAIt9J,KAAKg8F,WAAaqhE,GAAgBA,EAAan4J,UAAUmB,SAAS,iBAClEg3J,EAAaliJ,UAAY,EACzBnb,KAAKy9J,SAASF,EAAuBA,EAAuB58J,OAAS,IAAI,QAExE,GAAI48J,EAAuB58J,OAAS,EACrC,IAAK,IAAIK,EAAI,EAAGA,EAAIu8J,EAAuB58J,OAAQK,IAC/C,GAAI09J,IAA0BnB,EAAuB5rJ,SAAS3Q,EAAE4Q,WAAY,KAAM,CAC9E,IAAIgtJ,EAAkB59J,EAAI,EAC1B,GAAI49J,GAAmB,EACnBzxJ,EAAE+F,iBACFqqJ,EAAuB5rJ,SAASitJ,EAAgBhtJ,WAAY,KAAKmO,aAEhE,GAAI/f,KAAKg6J,UAAW,CACrB,IAAI7iI,EAAOn3B,KAAK4uB,OAAOojE,UACnB6sE,EAAU1nI,EAAKA,EAAKx2B,OAAS,GAC7Bm+J,EAAWD,EAAQnqB,UACvBvnI,EAAE+F,iBACF4rJ,EAAS/+I,QACT/f,KAAKk6J,iBAAkB,EAE3B,QAQhBH,EAAM75J,UAAU6+J,qBAAuB,WACnC,QAAI/+J,KAAKk6J,kBACLl6J,KAAKk6J,iBAAkB,GAChB,IAKfH,EAAM75J,UAAUq+J,6BAA+B,SAAUpxJ,GACrD,IAAIuxJ,EAAwB1+J,KAAK29J,oBACjC,GAAIe,EAAuB,CACvB1+J,KAAKusH,SAAS56G,SAAS+sJ,EAAsBh0J,aAAa,SAAU,KACpE,IAAIyzJ,EAAoBn+J,KAAK2xE,mBACzBqtF,EAAgBh/J,KAAKi/J,SAASP,GAC9BQ,EAAel/J,KAAKm/J,kBAAkBH,GACnB,YAAlBA,GAAiD,WAAlBA,GAAgD,WAAlBA,GACzC,WAAlBA,GAAgD,SAAlBA,GAA8C,SAAlBA,IAC1DE,GAAiBA,EAAah6J,UAAUmB,SAAS,aAG/CrG,KAAKo/J,yBAAyBV,GACnC1+J,KAAKq/J,0BAA0BX,GAG3BP,GACAA,EAAkBp+I,QAPtBm/I,EAAan/I,UAYzBg6I,EAAM75J,UAAUs+J,oBAAsB,SAAUrxJ,GAC5C,IAAImyJ,EAA4B,KAAdnyJ,EAAEqG,QAAiB,UAA0B,KAAdrG,EAAEqG,QAAiB,UAChD,KAAdrG,EAAEqG,QAAiB,UAA0B,KAAdrG,EAAEqG,QAAiB,WAAa,GACjE+rJ,EAAav/J,KAAKoD,QAAQ8I,cAAcozJ,GACxCZ,EAAwB1+J,KAAK29J,oBACjC,IAAK,eAAkB4B,IAAeA,EAAWz3I,aAAa,WACtDrM,MAAM9J,SAAS4tJ,EAAW70J,aAAa,SAAU,KAAM,CAC3D1K,KAAKusH,SAAS56G,SAAS4tJ,EAAW70J,aAAa,SAAU,KACzD,IAAIyzJ,EAAoBn+J,KAAK2xE,mBACzB3xE,KAAKo/J,yBAAyBV,GAC9B1+J,KAAKq/J,0BAA0BX,GAG3BP,GACAA,EAAkBp+I,UAKlCg6I,EAAM75J,UAAUk/J,yBAA2B,SAAUh8J,GACjD,IAAI47J,EAAgBh/J,KAAKi/J,SAAS77J,GAClC,MAAyB,aAAlB47J,GAAkD,YAAlBA,GAAiD,YAAlBA,GAC7C,YAAlBA,GAEXjF,EAAM75J,UAAUm/J,0BAA4B,SAAUj8J,GAClD,IAAI47J,EAAgBh/J,KAAKi/J,SAAS77J,GAC9B87J,EAAel/J,KAAKm/J,kBAAkBH,GAC1C,GAAIE,GAAgBA,EAAah6J,UAAUmB,SAAS,aAChD,GAAsB,YAAlB24J,GAAiD,YAAlBA,EAA6B,CAC5D,IAAIQ,EAAQx/J,KAAKoD,QAAQ8I,cAAc,YACvCszJ,EAAMz/I,aAGN/f,KAAKg+J,iBAIjBjE,EAAM75J,UAAUu/J,2BAA6B,WACzC,IAAIC,EAAmB1/J,KAAKoD,QAAQsf,iBAAiB,mCACrD,GAAIg9I,EAAiB/+J,OAAS,EAC1B,IAAK,IAAIK,EAAI,EAAGA,EAAI0+J,EAAiB/+J,OAAQK,IAAK,CAC9C,IAAIoC,EAAUs8J,EAAiB/tJ,SAAS3Q,EAAE4Q,WAAY,KAClDxO,IACAA,EAAQ+X,UAAY,KAKpC4+I,EAAM75J,UAAUyxE,iBAAmB,WAC/B,OAAO3xE,KAAKoD,QAAQ8I,cAAc,cAKtC6tJ,EAAM75J,UAAUo9J,gBAAkB,WAC9B,IACID,EADAsC,EAAqB3/J,KAAKoD,QAAQ8I,cAAc,oBAKpD,OAHIyzJ,IACAtC,EAAesC,EAAmB/+I,SAAS,IAExCy8I,GAEXtD,EAAM75J,UAAUy9J,kBAAoB,WAChC,OAAO39J,KAAKoD,QAAQ8I,cAAc,eAEtC6tJ,EAAM75J,UAAU++J,SAAW,SAAU77J,GAIjC,IAHA,IAAIw8J,EACA16J,EAAY,CAAC,WAAY,UAAW,UAAW,SAAU,OACzD,OAAQ,SAAU,SAAU,UAAW,WAClClE,EAAI,EAAGA,EAAIkE,EAAUvE,OAAQK,IAClC,GAAIoC,GAAWA,EAAQ8B,UAAUmB,SAASnB,EAAUyM,SAAS3Q,EAAE4Q,WAAY,MAEvE,OADAguJ,EAAe16J,EAAUyM,SAAS3Q,EAAE4Q,WAAY,KACzCguJ,EAGf,OAAOA,GAEX7F,EAAM75J,UAAUi/J,kBAAoB,SAAU36J,GAC1C,OAAOxE,KAAKoD,QAAQ8I,cAAc,IAAM1H,IAO5Cu1J,EAAM75J,UAAUs9J,0BAA4B,SAAUp6J,EAASy8J,GAI3D,IAHA,IAAIv/J,EAAS8C,EACT08J,EAAkBx/J,EAAOsgB,SACzBm/I,EAAgBF,EACX7+J,EAAI,EAAGA,EAAI8+J,EAAgBn/J,OAAQK,IAAK,CAC7C,IAAIg/J,EAAYF,EAAgBnuJ,SAAS3Q,EAAE4Q,WAAY,KACvD,GAAIouJ,EAAUp/I,SAASjgB,OAAS,IAAMq/J,EAAU96J,UAAUmB,SAAS,eAC/D05J,EAAgB//J,KAAKw9J,0BAA0BwC,EAAWD,OAEzD,CACD,IAAIE,EAAkBH,EAAgBnuJ,SAAS3Q,EAAE4Q,WAAY,MACzDquJ,EAAgBn4I,aAAa,aAAgBk4I,EAAU96J,UAAUmB,SAAS,cAC3C,SAA5B25J,EAAUj5J,MAAMC,SACf,eAAkBg5J,EAAU5B,eAChC2B,EAAc1zJ,KAAK4zJ,IAI/B,OAAOF,GAEXhG,EAAM75J,UAAUu9J,SAAW,SAAUr6J,EAAS88J,GACtCA,GACA,eAAS,CAAC98J,GAAU,CAAC,YAAa,YAEtCA,EAAQ+X,SAAW,GAEvB4+I,EAAM75J,UAAU09J,YAAc,SAAUx6J,EAAS+8J,GACzCA,GACA,gBAAY,CAAC/8J,GAAU,CAAC,YAAa,YAEzCA,EAAQ+X,UAAY,GAQxB4+I,EAAM75J,UAAU4qI,kBAAoB,SAAUvqI,GAC1C,OAAOP,KAAKqxH,UAAU32G,YAAYna,IAQtCw5J,EAAM75J,UAAUqsH,SAAW,SAAUC,GAC7BxsH,KAAK48J,cAAcpwC,KACnBxsH,KAAK+3B,YAAcy0F,EACnBxsH,KAAK+H,aAQbgyJ,EAAM75J,UAAUkgK,YAAc,SAAUnoI,GACpCj4B,KAAKi4B,SAAWA,EAChBj4B,KAAK+H,YAETgyJ,EAAM75J,UAAUk6J,eAAiB,WAC7B,SAAuB,IAAnBp6J,KAAKg8F,YAAsBh8F,KAAKg8F,UAAUr7F,SAKlDo5J,EAAM75J,UAAU08J,cAAgB,SAAUyD,EAAWC,GAOjD,OANID,IAAcrgK,KAAK+3B,cACnB/3B,KAAK03J,eAAiB13J,KAAK+3B,aAE1B,eAAkBuoI,KACnBtgK,KAAK03J,eAAiB4I,GAEtBtgK,KAAK03J,iBAAmB2I,GAAcA,GAAa,GAAKA,GAAargK,KAAK62J,YAKlFkD,EAAM75J,UAAU28J,mBAAqB,SAAU3nJ,EAASC,GAIpD,GAHInV,KAAKugK,mBACLvgK,KAAKwgK,kBAAkBxgK,KAAK+3B,aAE5B7iB,EAAQ6iB,cAAgB5iB,EAAQ4iB,aAAe7iB,EAAQ+iB,WAAa9iB,EAAQ8iB,SAAU,CACtF,IAAIlS,EAAO,CACPgS,YAAa/3B,KAAK+3B,YAClB7iB,QAASA,EAASC,QAASA,EAAS1G,QAAQ,GAEhDzO,KAAKiI,QAAQ,QAAS8d,GACjBA,EAAKtX,QAKNzO,KAAKugH,UAAW,EACZprG,GAAWA,EAAQ8iB,WACnBj4B,KAAKiL,cAAc,CAAEgtB,SAAU9iB,EAAQ8iB,WAAY,GAC/Cj4B,KAAKy8J,sBACLz8J,KAAKy8J,oBAAoBK,iBAAiB,QAAS3nJ,EAAQ8iB,UAC3Dj4B,KAAKy8J,oBAAoB,sBAAsB3qI,KAAO3c,EAAQ8iB,SAAW,OATjFj4B,KAAKugH,UAAW,EAChBvgH,KAAKsV,aAcjBykJ,EAAM75J,UAAU6tG,cAAgB,WAC5B,IAAI/tG,KAAKq8J,oBAAqBr8J,KAAKg6J,UAAnC,CAGA,IAAIhpI,EACJhxB,KAAKoD,QAAQ8B,UAAU4G,IAAI,mBAC3B9L,KAAK+8J,QAAQ/8J,KAAK42C,UAClB,IAAI/qB,EAAO,CACPkM,YAAa/3B,KAAK+3B,YAAaE,SAAUj4B,KAAKi4B,SAAUD,UAAWh4B,KAAKg4B,UACxEmkE,kBAAmBn8F,KAAKm8F,kBAAmB06D,WAAY72J,KAAK62J,YAE5DjuG,EAAS5oD,KAAKoD,QAAQue,cAAcrW,GAAK,YACzCtL,KAAKq8J,oBAAsBr8J,KAAKm2B,OAChCn2B,KAAKygK,kBAALzgK,CAAwB6rB,EAAM7rB,KAAM,WAAY4oD,EAAQ,KAAM,KAAM5oD,KAAKoD,SACzEpD,KAAK0L,yBAGLslB,EAAShxB,KAAKm2B,MAAQn2B,KAAKygK,kBAALzgK,CAAwB6rB,EAAM7rB,KAAM,YAAcA,KAAKygK,kBAALzgK,CAAwB6rB,GAChG,eAAe7rB,KAAKoD,QAAS4tB,MAOrC+oI,EAAM75J,UAAUm2J,iBAAmB,WAC/Br2J,KAAK62J,WAAa72J,KAAKs4B,UAAY,EAAKt4B,KAAKm8F,kBAAoBn8F,KAAKi4B,WAAa,EAAMj4B,KAAKm8F,kBAAoBn8F,KAAKi4B,SAClHtmB,UAAU3R,KAAKm8F,kBAAoBn8F,KAAKi4B,UAAUrmB,WAAY,IAAM,GAM7EmoJ,EAAM75J,UAAUugK,iBAAmB,WAC/B,OAAOzgK,KAAK82C,YAOhBijH,EAAM75J,UAAU68J,QAAU,SAAUnmH,GAChC,GAAIA,EACA,IAC4B,oBAAbA,EACP52C,KAAK82C,WAAa,eAAiBF,GAG/BhpC,SAAS8U,iBAAiBk0B,GAAUj2C,SACpCX,KAAK82C,WAAa,eAAiBlpC,SAAS1B,cAAc0qC,GAAU9rC,UAAUyB,SAI1F,MAAOY,GACHnN,KAAK82C,WAAa,eAAiBF,KAU/CmjH,EAAM75J,UAAUoV,QAAU,WACtB,GAAItV,KAAK42C,SACD52C,KAAKq8J,mBACLr8J,KAAKq2J,mBACLr2J,KAAK4Z,OAAO5Z,KAAKi6J,YAAa,MAG9Bj6J,KAAKoD,QAAQ0H,UAAY,GACzB9K,KAAKq2J,mBACLr2J,KAAK+tG,qBAGR,CACD/tG,KAAKshH,YACL,IAAI67C,EAAyBn9J,KAAKo9J,4BAClCp9J,KAAKk8J,gBAAgB5mJ,UACrBtV,KAAKy/J,6BACDtC,GAA0BA,EAAuBj4J,UAAUmB,SAAS,eAChErG,KAAKo/J,yBAAyBjC,GAC9Bn9J,KAAKq/J,0BAA0BlC,GAG/Bn9J,KAAKk+J,iCAGTl+J,KAAKu8J,oBACLv8J,KAAKm8J,mBAAmB7mJ,UAExBtV,KAAKy8J,qBACLz8J,KAAKy8J,oBAAoBnnJ,UAEzBtV,KAAKm6J,uBAAyBn6J,KAAK28J,uBACnC38J,KAAK28J,sBAAsBrnJ,UAE/BtV,KAAK69J,iCACL79J,KAAKg9J,gBAGbjD,EAAM75J,UAAUohH,UAAY,WACpBthH,KAAKyF,UACLzF,KAAKoD,QAAQ8B,UAAU4G,IAAI,SAG3B9L,KAAKoD,QAAQ8B,UAAUC,OAAO,UAGtC40J,EAAM75J,UAAUk8J,iBAAmB,WAC/Bp8J,KAAKqxH,UAAY,IAAI,OAAKrxH,KAAK8U,gBAAiB9U,KAAKq6J,iBAAkBr6J,KAAKwa,SAEhFu/I,EAAM75J,UAAUsgK,kBAAoB,SAAU/nJ,GAC1C,IAAIioJ,EAAa1gK,KAAK2gK,cAAcp6J,OAAOq6J,SAAS1mE,KAAM,OAAQzhF,EAAM7G,YACxErL,OAAOs6J,QAAQC,UAAU,CAAEr6F,KAAMi6F,GAAc,GAAIA,IAEvD3G,EAAM75J,UAAUygK,cAAgB,SAAUI,EAAKxgK,EAAKkY,GAEhD,IAAIqhJ,EAAO,IAAI5hG,OAAO,UAAY33D,EAAM,cAAe,KACvD,GAAIwgK,EAAIn6J,MAAMkzJ,GACV,OAAOiH,EAAIlmJ,QAAQi/I,EAAM,KAAOv5J,EAAM,IAAMkY,EAAQ,MAGpD,IAAIuoJ,EAAO,GAKX,OAJ0B,IAAtBD,EAAI/8J,QAAQ,OACZg9J,EAAOD,EAAIlmJ,QAAQ,MAAO,KAC1BkmJ,EAAMA,EAAIlmJ,QAAQ,MAAO,KAEtBkmJ,IAA6B,IAAtBA,EAAI/8J,QAAQ,KAAc,IAAM,KAAOzD,EAAM,IAAMkY,EAAQuoJ,GAGjFjH,EAAM75J,UAAUo8J,4BAA8B,WAC1Ct8J,KAAKoD,QAAQsB,YAAY,eAAc,MAAO,CAC1CF,UAAW,gCACXwK,MAAO,CAAEk2B,MAAOllC,KAAK8qI,kBAAkB,oBAAqBxoD,SAAU,SAE1EtiF,KAAKoD,QAAQsB,YAAY,eAAc,MAAO,CAC1CF,UAAW,8BACXwK,MAAO,CAAEk2B,MAAOllC,KAAK8qI,kBAAkB,uBAAwBxoD,SAAU,UAGjFy3E,EAAM75J,UAAUs8J,2BAA6B,WACzCx8J,KAAKoD,QAAQsB,YAAY,eAAc,MAAO,CAC1CF,UAAW,8BACXwK,MAAO,CAAEk2B,MAAOllC,KAAK8qI,kBAAkB,mBAAoBxoD,SAAU,SAEzEtiF,KAAKoD,QAAQsB,YAAY,eAAc,MAAO,CAC1CF,UAAW,8BACXwK,MAAO,CAAEk2B,MAAOllC,KAAK8qI,kBAAkB,mBAAoBxoD,SAAU,UAG7Ey3E,EAAM75J,UAAUw8J,aAAe,WAC3B,IAAIx3J,EAAY,CAAC,YAAa,WAAY,WAAY,YACtD,IAAK,OAAQyK,SACT,IAAK,IAAI3O,EAAI,EAAGA,EAAIkE,EAAUvE,OAAQK,IAAK,CACvC,IAAIoC,EAAUpD,KAAKoD,QAAQ8I,cAAchH,EAAUyM,SAAS3Q,EAAE4Q,WAAY,MAC1ExO,EAAQuH,aAAa,aAAcvH,EAAQsH,aAAa,YAIpEqvJ,EAAM75J,UAAUm8J,gBAAkB,WAC9B,OAAQr8J,KAAKmI,SAAWnI,KAAKm2B,QAAUn2B,KAAK42C,UAAuC,kBAAnB52C,KAAa,UAOjF+5J,EAAM75J,UAAU+gK,qBAAuB,WAKnC,IAJA,IAAIlB,EAAgB//J,KAAKoD,QAAQsf,iBAEjC,oQACIw+I,EAAc,EACTlgK,EAAI,EAAGA,EAAI++J,EAAcp/J,OAAQK,IACsC,SAAxEwF,iBAAiBu5J,EAAcpuJ,SAAS3Q,EAAE4Q,WAAY,MAAM5K,UAC5Dk6J,GAAenB,EAAcpuJ,SAAS3Q,EAAE4Q,WAAY,KAAKpI,YACnD1C,WAAWN,iBAAiBu5J,EAAcpuJ,SAAS3Q,EAAE4Q,WAAY,MAAM09C,YACvExoD,WAAWN,iBAAiBu5J,EAAcpuJ,SAAS3Q,EAAE4Q,WAAY,MAAMsS,cAGrF,IAAIkzI,EAAiBp3J,KAAKoD,QAAQ8I,cAAc,qBAGhD,OAFAg1J,GAAep6J,WAAWN,iBAAiB4wJ,GAAgB9nG,YACrDxoD,WAAWN,iBAAiB4wJ,GAAgBlzI,aAC3Cg9I,GAOXnH,EAAM75J,UAAU88J,YAAc,WAC1B,IAAI35J,EAAQrD,KACRmhK,EAAiBnhK,KAAKoD,QAAQ8B,UAAUmB,SAAS,WAAaG,iBAAiBxG,KAAKoD,SAASsD,iBAAiB,gBAAgB8yF,SAAS,SAAW,KACtJ,IAAMx5F,KAAa,UAAKmhK,EAAgB,CACpC,IAAI/J,EAAiBp3J,KAAKoD,QAAQ8I,cAAc,qBAC5Cg1J,EAAclhK,KAAKihK,uBACnBG,EAAaphK,KAAKoD,QAAQmG,YACxBzC,WAAWN,iBAAiBxG,KAAKoD,SAAS46E,aAC1Cl3E,WAAWN,iBAAiBxG,KAAKoD,SAAS66E,cAC1Cn3E,WAAWN,iBAAiBxG,KAAKoD,SAASksD,YAC1CxoD,WAAWN,iBAAiBxG,KAAKoD,SAAS8gB,aAC5C2zI,EAAWT,EAAe10I,iBAAiB,mFAC3C2+I,EAAiBjK,EAAe10I,iBAAiB,uDACjD4+I,EAAWzJ,EAASl3J,OACpB4gK,EAAW,EACXC,EAAgB,eAAkB,gBAAaxhK,KAAKoD,QAAS,aAAqB,EAAL,GAC7Eo0J,EAAKJ,EAAelrJ,cAAc,SAClCorJ,EAAKF,EAAelrJ,cAAc,SAClCu1J,EAAczhK,KAAKoD,QAAQsf,iBAAiB,uHAC5Cg/I,EAAmB,EACnBD,EAAY9gK,SACZ8gK,EAAY/tH,SAAQ,SAAU6Z,GAC1Bm0G,GAAoBn0G,EAAK/jD,eAE7BxJ,KAAK2hK,mBAAqBD,EAAmBD,EAAY9gK,QAM7D,IAJA,IAAIihK,EAAa,EAIR5gK,EAAI,EAAGA,EAAI62J,EAASl3J,OAAQK,IACjC4gK,GAAc/J,EAASlmJ,SAAS3Q,EAAE4Q,WAAY,KAAKpI,YAC7C1C,WAAWN,iBAAiBqxJ,EAASlmJ,SAAS3Q,EAAE4Q,WAAY,MAAM09C,YAClExoD,WAAWN,iBAAiBqxJ,EAASlmJ,SAAS3Q,EAAE4Q,WAAY,MAAMsS,aAE5E,IAAI29I,EAAmBD,EAAa/J,EAASl3J,OAI7C,GAAIygK,EAAa,GAAMF,GAAgBE,GAAcS,GAAsC,GAAM,CAC7F7hK,KAAK83J,gBAAiB,EAClB93J,KAAK+3B,cAAgB/3B,KAAK62J,YAC1B,eAAUW,EAAI,CAAC,gBAAiB,mBAAoB,CAAC,yBAA0B,cAEnF0J,EAAclhK,KAAKihK,uBACnB,IAAIa,EAAO34J,KAAKyhC,IAAI,EAAgBw2H,GAEhCW,EAAY54J,KAAK2kC,KAAKg0H,EAAO,GACjCC,EAA2B,IAAdA,EAAmB,EAAKA,EAAYlK,EAASl3J,OAAWk3J,EAASl3J,OAAS,EAAKohK,EAC5F,IAAS/gK,EAAI,EAAGA,GAAK+gK,EAAW/gK,IAAK,CACjC,IAAIghK,EAAYV,EAAW3vJ,SAAS3Q,EAAE4Q,WAAY,IAClDimJ,EAAWT,EAAe10I,iBAAiB,mFAClB,IAArB1iB,KAAK+3B,aAAuBpmB,SAASkmJ,EAAS1uJ,KAAKyhC,IAAIo3H,IAAYt3J,aAAa,SAAU,MAAQ1K,KAAK+3B,aACpGpmB,SAASkmJ,EAASA,EAASl3J,OAAS,GAAG+J,aAAa,SAAU,MAAQ1K,KAAK+3B,cAC9EiqI,EAAY,EACZ,eAAU1K,EAAI,CAAC,gBAAiB,mBAAoB,CAAC,yBAA0B,eAE/EO,EAAS1uJ,KAAKyhC,IAAIo3H,MAAiBnK,EAAS1uJ,KAAKyhC,IAAIo3H,IAAY98J,UAAUmB,SAAS,kBACpFwxJ,EAAS1uJ,KAAKyhC,IAAIo3H,IAAY98J,UAAU4G,IAAI,UAKpD,GAFA+rJ,EAAWT,EAAe10I,iBAAiB,mFAEvCm1I,EAASl3J,QAAU,GAAK8gK,EAAY9gK,QAAU4F,OAAO07J,YAAc,IAAK,CACxE,IAAIC,EAAwBliK,KAAKihK,uBACjC,GAAI,EAA2BG,EAAaI,EAAc,CACtD,IAAIW,EAAeh5J,KAAKo3D,OAAO6gG,GAAcc,EAAwBR,IAC/D1hK,KAAK2hK,oBACXQ,EAAeV,EAAY9gK,OAASwhK,EACpC,IAASnhK,EAAI,EAAGA,GAAKmhK,EAAeV,EAAY9gK,OAAS8gK,EAAY9gK,OAASwhK,GAAenhK,IACzFygK,EAAY9vJ,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,iBAQjE,GAAIo1J,EAAc,GAAgBG,EAAe1gK,OAAQ,CACtDmhK,EAAO34J,KAAKyhC,IAAIw2H,EAAa,GAAjC,IACIgB,EAAoBpiK,KAAKoD,QAAQsf,iBAAiB,+CAKtD,GAHI0/I,EAAkBzhK,QAAWmhK,EAAQ9hK,KAAK2hK,mBAAsB3hK,KAAK2hK,mBAAqB,GAC1FS,EAAmBA,EAAkBzhK,OAAS,GAAIuE,UAAUC,OAAO,UAElE28J,EAA2B,EAAnBD,IAA0BO,EAAkBzhK,QAAU4F,OAAO07J,YAAc,IAAM,CAE1F,IAAII,EAAYl5J,KAAKo3D,MAAM,GAAUshG,EAAmBL,IACxDa,EAAaA,EAAYhB,EAAe1gK,OAAU0gK,EAAe1gK,OAAU0hK,EAAY,EAEvF,IAAIC,EAAmB1iK,MAAMyzI,KAAKguB,GAAgBptI,QAAO,SAAUs5B,GAAQ,OAAO57C,SAAS47C,EAAK7iD,aAAa,SAAU,IAAMrH,EAAM00B,eAAgB0sB,MAAK,SAAUjC,EAAGhjD,GAAK,OAAOmS,SAASnS,EAAEkL,aAAa,SAAU,IAAMiH,SAAS6wC,EAAE93C,aAAa,SAAU,OACvP63J,EAAoB3iK,MAAMyzI,KAAKguB,GAAgBptI,QAAO,SAAUs5B,GAAQ,OAAO57C,SAAS47C,EAAK7iD,aAAa,SAAU,IAAMrH,EAAM00B,eAChIyqI,EAAaF,EAAiB3hK,QAAU2hK,GACpCC,EAAkB5hK,QAAU4hK,EACpC,IAASvhK,EAAI,EAAGA,GAAKqhK,EAAWrhK,IAAK,CACjC,IAAIyhK,EAAWD,GAAaA,EAAUr5J,KAAKyhC,IAAI22H,EAAWvgK,IACtDyhK,IACAA,EAASv9J,UAAUC,OAAO,UACtBs9J,IAAaD,EAAUA,EAAU7hK,OAAS,KAC1C6hK,EAAY,SAOhC,GADA3K,EAAWT,EAAe10I,iBAAiB,mFACvCm1I,EAASl3J,OAAQ,CACbgR,SAASkmJ,EAASA,EAASl3J,OAAS,GAAG+J,aAAa,SAAU,MAAQ1K,KAAK62J,YAC3E,eAAUW,EAAI,CAAC,yBAA0B,aAAc,CAAC,gBAAiB,oBAErB,IAApD7lJ,SAASkmJ,EAAS,GAAGntJ,aAAa,SAAU,KAC5C,eAAU4sJ,EAAI,CAAC,yBAA0B,aAAc,CAAC,gBAAiB,oBAE7E,IAAIM,EAAYh4J,MAAMyzI,KAAKwkB,GAAU79H,MAAK,SAAUuzB,GAAQ,OAAO57C,SAAS47C,EAAK7iD,aAAa,SAAU,MAAQrH,EAAMwzJ,cAClH8B,EAAWhnJ,SAASkmJ,EAAS,GAAGntJ,aAAa,SAAU,KAAOktJ,EAAY53J,KAAK44J,YAAcf,EAASl3J,QAC1G22J,EAAG3sJ,aAAa,QAAUguJ,EAAU,EAAK,IAAMA,EAAQ/mJ,YACvD4lJ,EAAG7sJ,aAAa,SAAUgH,SAASkmJ,EAASA,EAASl3J,OAAS,GAAG+J,aAAa,SAAU,IAAM,GAAGkH,YACjG5R,KAAK44J,YAAchB,EAAY53J,KAAK44J,YAAcf,EAASl3J,OAKzDX,KAAKoD,QAAQoG,YAAc,KAAyG,SAAjGjD,OAAOC,iBAAiBxG,KAAKoD,QAAQ8I,cAAc,cAAcxF,iBAAiB,YAA0B1G,KAAKg8F,WACtJh8F,KAAKoD,QAAQ8I,cAAc,gBAAgBhH,UAAUC,OAAO,UAC5DnF,KAAKoD,QAAQ8I,cAAc,mBAAmBhH,UAAUC,OAAO,UAC/DnF,KAAKoD,QAAQ8B,UAAU4G,IAAI,cAC3B9L,KAAKoD,QAAQ8I,cAAc,gBAAgBpB,UAAY9K,KAAKoD,QAAQoG,YAAc,IAAOxJ,KAAK+3B,YAAc,MAAQ/3B,KAAK62J,WAAc72J,KAAKm8J,mBAAmB7/I,OAAOtc,KAAK8qI,kBAAkB,mBAAoB,CAA4B,IAA3B9qI,KAAKm8F,kBAA0B,EACzOn8F,KAAK+3B,YAAa/3B,KAAK62J,YAAc,EAAG72J,KAAKm8F,mBAAqB,IAAM,MAGhFn8F,KAAKoD,QAAQ8B,UAAUC,OAAO,cAC9BnF,KAAKoD,QAAQ8I,cAAc,gBAAgBpB,UAAY9K,KAAKm8J,mBAAmB7/I,OAAOtc,KAAK8qI,kBAAkB,mBAAoB,CAA4B,IAA3B9qI,KAAKm8F,kBAA0B,EACzJn8F,KAAK+3B,YAAa/3B,KAAK62J,YAAc,EAAG72J,KAAKm8F,mBAAqB,IAAM,OAI5F/7F,EAAW,CACP,gBAAS,IACV25J,EAAM75J,UAAW,yBAAqB,GACzCE,EAAW,CACP,gBAAS,IACV25J,EAAM75J,UAAW,6BAAyB,GAC7CE,EAAW,CACP,gBAAS,IACV25J,EAAM75J,UAAW,0BAAsB,GAC1CE,EAAW,CACP,eAAS,KACV25J,EAAM75J,UAAW,gBAAY,GAChCE,EAAW,CACP,eAAS,KACV25J,EAAM75J,UAAW,iBAAa,GACjCE,EAAW,CACP,eAAS,IACV25J,EAAM75J,UAAW,mBAAe,GACnCE,EAAW,CACP,kBACD25J,EAAM75J,UAAW,yBAAqB,GACzCE,EAAW,CACP,kBACD25J,EAAM75J,UAAW,uBAAmB,GACvCE,EAAW,CACP,gBAAS,IACV25J,EAAM75J,UAAW,iBAAa,GACjCE,EAAW,CACP,kBACD25J,EAAM75J,UAAW,gBAAY,GAChCE,EAAW,CACP,eAAS,KACV25J,EAAM75J,UAAW,kBAAc,GAClCE,EAAW,CACP,kBACD25J,EAAM75J,UAAW,aAAS,GAC7BE,EAAW,CACP,eAAS,KACV25J,EAAM75J,UAAW,gBAAY,GAChCE,EAAW,CACP,kBACD25J,EAAM75J,UAAW,uBAAmB,GACvCE,EAAW,CACP,kBACD25J,EAAM75J,UAAW,eAAW,GAC/B65J,EAAQ35J,EAAW,CACf,QACD25J,GACIA,EAllCe,CAmlCxB,Q,YCrnCE,EAA+B,WAO/B,SAAS0B,EAAcrjI,GACnBp4B,KAAKo4B,YAAcA,EA0JvB,OAjJAqjI,EAAcv7J,UAAU4U,cAAgB,WACpC,MAAO,iBAQX2mJ,EAAcv7J,UAAUyT,OAAS,WAC7B,IAAI0kB,EAAWr4B,KAAKo4B,YACpBp4B,KAAK0iK,iBAAmB,eAAc,MAAO,CAAEl+J,UAAW,gBAC1D,IAAIm+J,EAAc,eAAc,MAAO,CAAEn+J,UAAW,oBAChDo+J,EAAiB,eAAc,MAAO,CAAEp+J,UAAW,oBACnDyuC,EAAQ,eAAc,QAAS,CAAEjkC,MAAO,CAAER,KAAM,OAAQ8zE,SAAU,QACtEtiF,KAAK6iK,UAAY,eAAc,OAAQ,CACnCr+J,UAAW,aAAcsG,UAAW9K,KAAKo4B,YAAY0yG,kBAAkB,mBAE3E63B,EAAYj+J,YAAYuuC,GACxB2vH,EAAel+J,YAAY1E,KAAK6iK,WAChC7iK,KAAK0iK,iBAAiBh+J,YAAYi+J,GAClC3iK,KAAK0iK,iBAAiBh+J,YAAYk+J,GAClC5iK,KAAKo4B,YAAYh1B,QAAQsB,YAAY1E,KAAK0iK,kBAC1C,IAAII,EAAkB9iK,KAAKo4B,YAAY4jE,UACnC+mE,EAAkBD,EAAgBniK,OAASX,KAAKgjK,aAAaF,GAC7D,CAAC9iK,KAAKo4B,YAAY0yG,kBAAkB,OAAQ,IAAK,KAAM,KAAM,MAC7DwV,EAAetgJ,KAAKo4B,YAAYH,SACpCj4B,KAAKijK,mBAAqB,IAAI,OAAa,CACvC7zI,WAAY2zI,EACZtqJ,MAAO6nI,EAAa1uI,WACpB0gC,OAAQtyC,KAAKkjK,SAASt9J,KAAK5F,MAC3Bga,YAAaha,KAAKo4B,YAAY0yG,kBAAkB,iBAChDrgI,SAAUzK,KAAKo4B,YAAY3tB,SAAW,aAAoBzK,KAAKo4B,YAAY3tB,SAAW,cAE1FzK,KAAKijK,mBAAmB58I,SAAS4sB,GAC7B6vH,EAAgBniK,SAChBX,KAAKijK,mBAAmB7/J,QAAQqV,MAAQzY,KAAKo4B,YAAYH,SAASrmB,YAEtEymB,EAASJ,SAAWqoH,EACpBjoH,EAAStwB,WACTswB,EAASpwB,QAAQ,kBAAmB,CAAEgwB,SAAUqoH,IAChDtgJ,KAAK64C,oBAUT4iH,EAAcv7J,UAAUgjK,SAAW,SAAU/1J,GACrCnN,KAAKijK,mBAAmBxqJ,QAAUzY,KAAKo4B,YAAY0yG,kBAAkB,QACrE9qI,KAAKo4B,YAAYH,SAAWj4B,KAAKo4B,YAAY+jE,kBAC7Cn8F,KAAKo4B,YAAYE,WAAY,EAC7Bt4B,KAAKsV,UACLnI,EAAEsL,MAAQzY,KAAKo4B,YAAYH,SACvBrqB,SAASuK,uBAAuB,0BAA0BxX,SAC1DiN,SAASuK,uBAAuB,0BAA0B,GAAGpR,MAAMC,QAAU,UAIjFhH,KAAKo4B,YAAYH,SAAWtmB,SAAS3R,KAAKijK,mBAAmBxqJ,MAAO,IACpEzY,KAAKo4B,YAAYE,WAAY,EACzBt4B,KAAK6iK,UAAU/3J,YAAc9K,KAAKo4B,YAAY0yG,kBAAkB,kBAChE9qI,KAAKsV,WAGbtV,KAAKo4B,YAAYrwB,WACZ/H,KAAKo4B,YAAYmoF,UAClBvgH,KAAKo4B,YAAYnwB,QAAQ,kBAAmB,CACxCgwB,SAAUj4B,KAAKo4B,YAAYE,gBACS/sB,IAA/BvL,KAAKo4B,YAAYE,WAA2Bt4B,KAAKijK,mBAAmBxqJ,QAAUzY,KAAKo4B,YAAY0yG,kBAAkB,OAClH9qI,KAAKo4B,YAAY+jE,kBAAoBxqF,SAAS3R,KAAKijK,mBAAmBxqJ,MAAO,OAI7FgjJ,EAAcv7J,UAAUoV,QAAU,WAC1BtV,KAAK6iK,YACD7iK,KAAKmjK,cAAcnjK,KAAKo4B,YAAYH,WACpCj4B,KAAK6iK,UAAU/3J,UAAY9K,KAAKo4B,YAAY0yG,kBAAkB,oBAC9D9qI,KAAK6iK,UAAUlhJ,cAAczc,UAAU4G,IAAI,gBAG3C9L,KAAK6iK,UAAU/3J,UAAY9K,KAAKo4B,YAAY0yG,kBAAkB,iBAC9D9qI,KAAK6iK,UAAUlhJ,cAAczc,UAAUC,OAAO,eAElDnF,KAAK0iK,iBAAiBx9J,UAAUC,OAAO,YAG/Cs2J,EAAcv7J,UAAUkjK,kBAAoB,SAAU/tJ,GAClD,GAAkC,kBAAvBA,EAAKH,QAAQuD,MAAoB,CACxC,IAAIoE,EAAMxH,EAAKH,QAAQuD,MAAM7G,WAC7ByD,EAAKH,QAAQuD,MAAQoE,IAG7B4+I,EAAcv7J,UAAU8iK,aAAe,SAAUK,GAE7C,IADA,IAAI91G,EAAO81G,EACFriK,EAAI,EAAGA,EAAIusD,EAAK5sD,OAAQK,IAC7BusD,EAAK57C,SAAS3Q,EAAE4Q,WAAY,KAAOD,SAAS47C,EAAK57C,SAAS3Q,EAAE4Q,WAAY,KAAM,IAC1E27C,EAAK57C,SAAS3Q,EAAE4Q,WAAY,KAAKA,WAAuF,KAAzE5R,KAAKo4B,YAAY0yG,kBAAkBv9E,EAAK57C,SAAS3Q,EAAE4Q,WAAY,MAC5G5R,KAAKo4B,YAAY0yG,kBAAkBv9E,EAAK57C,SAAS3Q,EAAE4Q,WAAY,MAAQ27C,EAAK57C,SAAS3Q,EAAE4Q,WAAY,KAE7G,OAAO27C,GAEXkuG,EAAcv7J,UAAUijK,cAAgB,SAAU1qJ,GAC9C,IAAI6qJ,EAAiC,kBAAZ,GAAwB7qJ,IAAUzY,KAAKo4B,YAAY0yG,kBAAkB,OAC1Fn5H,SAAS8G,EAAO,IAAMA,EAC1B,OAAI6qJ,IAAgBtjK,KAAKo4B,YAAY+jE,mBAAqB1jF,IAAUzY,KAAKo4B,YAAY0yG,kBAAkB,QAO3G2wB,EAAcv7J,UAAU48J,iBAAmB,SAAUznJ,EAAMoD,GACvD,GAAIzY,KAAKijK,mBAAoB,CACzB,IAAIM,EAAcvjK,KAAKo4B,YAAYE,UACnCt4B,KAAKo4B,YAAYE,UAAYt4B,KAAKmjK,cAAc1qJ,GAChDzY,KAAKo4B,YAAY6jE,YAAYsnE,IAAevjK,KAAKo4B,YAAYE,WAC7Dt4B,KAAKijK,mBAAmB,GAAK5tJ,GAAQrV,KAAKo4B,YAAYE,UAAYt4B,KAAKo4B,YAAY0yG,kBAAkB,OAASryH,IAGtHgjJ,EAAcv7J,UAAU24C,iBAAmB,WACvC74C,KAAKijK,mBAAmBl0I,GAAG,oBAAqB/uB,KAAKojK,kBAAmBpjK,OAE5Ey7J,EAAcv7J,UAAU07C,oBAAsB,WAC1C57C,KAAKijK,mBAAmB5uI,IAAI,oBAAqBr0B,KAAKojK,oBAW1D3H,EAAcv7J,UAAUsS,QAAU,SAAUuT,GACpC/lB,KAAKijK,qBAAuBjjK,KAAKijK,mBAAmBn0I,cACpD9uB,KAAK47C,sBACL57C,KAAKijK,mBAAmBzwJ,UACxB,gBAAOxS,KAAK0iK,oBAGbjH,EAlKuB,GCD9B,EAAiC,WAOjC,SAAS+H,EAAgBprI,GACrBp4B,KAAKo4B,YAAcA,EAkEvB,OA1DAorI,EAAgBtjK,UAAU4U,cAAgB,WACtC,MAAO,mBAQX0uJ,EAAgBtjK,UAAUyT,OAAS,WAC/B3T,KAAKoD,QAAU,eAAc,MAAO,CAAEoB,UAAW,qBAAsBwK,MAAO,CAAE,aAAchP,KAAKo4B,YAAY0yG,kBAAkB,kBACjI9qI,KAAKo4B,YAAYh1B,QAAQsB,YAAY1E,KAAKoD,SAC1CpD,KAAKsV,WAOTkuJ,EAAgBtjK,UAAUoV,QAAU,WAC5BtV,KAAKo4B,YAAYqrI,iBAAmBzjK,KAAKo4B,YAAYqrI,gBAAgB7xJ,WAAWjR,QAChFX,KAAKytF,cACLztF,KAAKoD,QAAQ0H,UAAY9K,KAAKo4B,YAAYqrI,iBAG1CzjK,KAAKsrF,eAQbk4E,EAAgBtjK,UAAUorF,YAAc,WAC/B,eAAkBtrF,KAAKoD,WACxBpD,KAAKoD,QAAQ2D,MAAMC,QAAU,SAQrCw8J,EAAgBtjK,UAAUutF,YAAc,WACpCztF,KAAKoD,QAAQ2D,MAAMC,QAAU,IASjCw8J,EAAgBtjK,UAAUsS,QAAU,WAC5BxS,KAAKoD,SAAWpD,KAAKoD,QAAQue,eAC7B,gBAAO3hB,KAAKoD,UAGbogK,EA1EyB,G,YCOhC,EAAsB,WAQtB,SAASzH,EAAKntI,EAAQkJ,GAClB93B,KAAK0jK,iBAAkB,EAEvB1jK,KAAKugH,UAAW,EAChB,EAAMhT,OAAO,EAAiB,GAC9BvtG,KAAK4uB,OAASA,EACd5uB,KAAK83B,aAAeA,EACpB93B,KAAK64C,mBA0UT,OAlUAkjH,EAAK77J,UAAU4U,cAAgB,WAC3B,MAAO,SAQXinJ,EAAK77J,UAAUyT,OAAS,WACpB,IAAI2e,EAAOtyB,KAAK4uB,OAChB5uB,KAAK2jK,eACA,eAAkB3jK,KAAK4uB,OAAOm/E,iBAC/B/tG,KAAK83B,aAAa8e,SAAW52C,KAAK4uB,OAAOm/E,cACzC/tG,KAAK4uB,OAAOk+E,oBAAqB,GAErC9sG,KAAKoD,QAAUpD,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,gBAC7D,IAAI6zB,EAAW,eAAW,GAAI,eAAO,GAAI,eAAoBr4B,KAAK83B,eAAgB,CAC9E7C,MAAOj1B,KAAKsoC,aAAa1iC,KAAK5F,MAC9B4jK,gBAAiB5jK,KAAK6jK,SAASj+J,KAAK5F,MACpCyF,UAAW6sB,EAAK7sB,UAAW+U,OAAQ8X,EAAK9X,OACxC+R,QAASvsB,KAAK8jK,YAAYl+J,KAAK5F,OAChC,CAAC,YAAa,aACjBq4B,EAAS5tB,SAAWzK,KAAK4uB,OAAOnkB,SAAWzK,KAAK4uB,OAAOnkB,SAAW,GAClEzK,KAAKq4B,SAAW,IAAI,EAAMA,OAAU9sB,EAAWvL,KAAK4uB,QACpD5uB,KAAKq4B,SAAS2hI,WAAY,EAC1Bh6J,KAAKq4B,SAAStJ,GAAG,QAAqB/uB,KAAK+jK,yBAA0B/jK,MACrEA,KAAKq4B,SAAS42E,wBAAyB,GAE3C8sD,EAAK77J,UAAU2jK,SAAW,SAAU12J,GAChCnN,KAAK83B,aAAaG,SAAW9qB,EAAE8qB,SAC1Bj4B,KAAKw6C,gBACNx6C,KAAK83B,aAAaC,YAAc,IAGxCgkI,EAAK77J,UAAU4jK,YAAc,WACzB,IAAM9jK,KAAK83B,aAAqB,SAAG,CAM/B,IALA,IAAIksI,EAAsBhkK,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,uBACpE4yJ,EAAiBp3J,KAAKoD,QAAQ8I,cAAc,qBAC5CyqJ,EAAO/oJ,SAASgpJ,yBAChBG,EAAmB/2J,KAAKoD,QAAQ8I,cAAc,uBAC9CoqJ,EAAQS,EAAiBr0I,iBAAiB,KACrC1hB,EAAI,EAAGA,EAAIs1J,EAAM31J,OAAQK,IAAK,CAC/BhB,KAAK4uB,OAAOgwB,kBACZ03G,EAAM3kJ,SAAS3Q,EAAE4Q,WAAY,KAAKjH,aAAa,YAAa3K,KAAK4uB,OAAOgwB,kBAAkBtzC,IAG1FgrJ,EAAM3kJ,SAAS3Q,EAAE4Q,WAAY,KAAKjH,aAAa,YAAa3K,KAAK4uB,OAAOxrB,QAAQsH,aAAa,MAAQ,kBAEzG,IAAIu5J,EAAsBjkK,KAAK4uB,OAAOrqB,cAAc,OACpD0/J,EAAoBv/J,YAAY4xJ,EAAM3kJ,SAAS3Q,EAAE4Q,WAAY,MAC7D+kJ,EAAKjyJ,YAAYu/J,GAErBD,EAAoBt/J,YAAYiyJ,GAChCS,EAAe8M,aAAaF,EAAqBjN,GAEjD,IADA,IAAI7xJ,EAAY,CAAC,YAAa,WAAY,WAAY,UAAW,UAAW,UAAW,WAAY,YAC1FoyB,EAAI,EAAGA,EAAIpyB,EAAUvE,OAAQ22B,IAAK,CACvC,IAAIl0B,EAAUpD,KAAKoD,QAAQ8I,cAAchH,EAAUyM,SAAS2lB,EAAE1lB,WAAY,MACtE5R,KAAK4uB,OAAOgwB,mBACZx7C,EAAQuH,aAAa,YAAa3K,KAAK4uB,OAAOgwB,kBAAkBtzC,OAKhFywJ,EAAK77J,UAAUmyH,UAAY,SAAUllH,GACjCnN,KAAKgrI,YAAY79H,IAOrB4uJ,EAAK77J,UAAUoV,QAAU,WACrBtV,KAAKq4B,SAAS/iB,WAQlBymJ,EAAK77J,UAAUqsH,SAAW,SAAUC,GAChCxsH,KAAKq4B,SAASk0F,SAASC,IAO3BuvC,EAAK77J,UAAUkgK,YAAc,SAAUnoI,GACnCj4B,KAAKq4B,SAAS+nI,YAAYnoI,IAS9B8jI,EAAK77J,UAAU8qI,YAAc,SAAU79H,GACnCnN,KAAK4uB,OAAOkJ,aAAaqkE,kBAAoBhvF,EAAE49B,MAC3C/qC,KAAKq4B,SAASC,YACdt4B,KAAK4uB,OAAOkJ,aAAaG,SAAWj4B,KAAK4uB,OAAOkJ,aAAaqkE,oBAE/C,QAAbhvF,EAAEwT,QAAsC,SAAlBxT,EAAE4gB,aAA8C,cAAlB5gB,EAAE4gB,cACnD/tB,KAAKq4B,SAASC,WAAcnrB,EAAE49B,QAAU/qC,KAAK83B,aAAaG,UAC1Dj4B,KAAKq4B,SAASptB,cAAc,CAAEgtB,SAAU9qB,EAAE49B,QAAS,GAG3D/qC,KAAK4uB,OAAO7mB,YAShBg0J,EAAK77J,UAAU4jG,iBAAmB,SAAU32F,GACxCnN,KAAK4uB,OAAO3mB,QAAQ,OAAuB,eAAOkF,EAAG,CACjD4qB,YAAa/3B,KAAK4uB,OAAOkJ,aAAaC,YAAahK,YAAa,SAChEvf,KAAM,WAQdutJ,EAAK77J,UAAU+U,kBAAoB,SAAU9H,GACzC,GAAIA,EAAE0M,SAAW7Z,KAAK8U,gBAAtB,CAIA,IADA,IAAII,EAAU/H,EAAE6N,WACPnN,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKF,GAAUrH,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC9D,IAAIwH,EAAOxR,EAAGgK,GACd7N,KAAKq4B,SAAS,GAAKhjB,GAAQH,EAAQ,GAAKG,GAE5CrV,KAAKq4B,SAAStwB,aAElBg0J,EAAK77J,UAAUooC,aAAe,SAAUn7B,GACpC,IAAImlB,EAAOtyB,KAAK4uB,OAChB,GAAI5uB,KAAK2tJ,eAAiB,eAAgBr7H,KAAUA,EAAKgqE,iBAAmBt8F,KAAKugH,SAuB7E,OAtBKvgH,KAAK2tJ,cAmBN3tJ,KAAK2tJ,eAAgB,GAlBhB,eAAkBxgJ,EAAE+H,UAAa,eAAkB/H,EAAE+H,QAAQ+iB,UASzD9qB,EAAE4qB,cACPzF,EAAK1Y,OAAO,QAAqB,CAAEs5B,SAAUlzC,KAAM24F,QAAS34F,KAAKusH,SAAU7oB,KAAMv2F,EAAE4qB,cACnF/3B,KAAKq4B,SAASN,YAAczF,EAAKwF,aAAaC,cAAgB/3B,KAAKq4B,SAASN,YACxE/3B,KAAKq4B,SAASq/H,eAAiBplI,EAAKwF,aAAaC,cAXrDzF,EAAK1Y,OAAO,QAAqB,CAAEs5B,SAAUlzC,KAAM24F,QAAS34F,KAAKogK,YAAa18D,KAAMv2F,EAAE+H,QAAQ+iB,WAC9Fj4B,KAAKq4B,SAASptB,cAAc,CAAEgtB,SAAU9qB,EAAEgI,QAAQ8iB,WAAY,GAC9D3F,EAAKrnB,cAAc,CAAE6sB,aAAc,CAAEG,SAAU9qB,EAAEgI,QAAQ8iB,YAAc,GACvEj4B,KAAKq4B,SAASptB,cAAc,CACxB8sB,YAAazF,EAAKwF,aAAaC,cAAgB/3B,KAAKq4B,SAASN,YACzD/3B,KAAKq4B,SAASq/H,eAAiBplI,EAAKwF,aAAaC,cACtD,IAOP/3B,KAAK2tJ,eAAgB,EACrB3tJ,KAAKq4B,SAAStwB,iBAKlBoF,EAAEsB,QAAS,GAGf6jB,EAAKwF,aAAaG,SAAWj4B,KAAKq4B,SAASJ,SAC3C3F,EAAKgqE,gBAAiB,EACtB,IAAI+8D,EAAWr5J,KAAK83B,aAAaC,YAC7BhS,EAAO,CACPtX,QAAQ,EAAOsf,YAAa,SAAUo2I,aAAc9K,EACpDthI,YAAa5qB,EAAE4qB,YAAaE,SAAU3F,EAAKwF,aAAaG,SAAUzpB,KAAM,QAM5E,GAJKxO,KAAKugH,WACNvgH,KAAK83B,aAAaC,YAAc5qB,EAAE4qB,YAClC/3B,KAAK4uB,OAAOhV,OAAO,QAAqBmM,IAExCA,EAAKtX,OAKL,OAJAtB,EAAEsB,QAAS,EACXzO,KAAK4uB,OAAO3jB,cAAc,CAAE6sB,aAAc,CAAEC,YAAashI,KAAc,GACvEr5J,KAAKq4B,SAASptB,cAAc,CAAE8sB,YAAashI,IAAY,QACvDr5J,KAAKugH,UAAW,GAGpBvgH,KAAKugH,UAAW,EAChBvgH,KAAK4uB,OAAO0yD,kBAAoB,UAEpCy6E,EAAK77J,UAAUuzH,gBAAkB,SAAUtmH,GACnCA,EAAEwT,UAAUyjJ,IACZj3J,EAAE+F,iBACFlT,KAAKoD,QAAQ8I,cAAck4J,EAAWj3J,EAAEwT,SAASsU,UASzD8mI,EAAK77J,UAAUusH,sBAAwB,SAAUngC,GACxCtsF,KAAKq4B,SAAS8hI,wBACfn6J,KAAKq4B,SAAS8hI,uBAAwB,EACtCn6J,KAAKq4B,SAAStwB,YAElB/H,KAAKq4B,SAASorI,gBAAkBn3E,EAChCtsF,KAAKq4B,SAAStwB,YAElBg0J,EAAK77J,UAAUmkK,gBAAkB,WAC7BrkK,KAAKw6C,eAAgB,EACrBx6C,KAAK4uB,OAAOxrB,QAAQsB,YAAY1E,KAAKoD,SACrCpD,KAAK4uB,OAAOm2F,aAAa/kH,KAAKoD,SAC9BpD,KAAKq4B,SAASlwB,QAAUnI,KAAK4uB,OAAOzmB,QACpCnI,KAAKq4B,SAASlC,MAAQn2B,KAAK4uB,OAAOuH,MAClCn2B,KAAKq4B,SAAShS,SAASrmB,KAAKoD,SAC5BpD,KAAKw6C,eAAgB,GAEzBuhH,EAAK77J,UAAUokK,kBAAoB,SAAUn3J,GACrCA,EAAE0M,SAAW7Z,KAAK8U,iBAAmB3H,EAAEgjC,SACvCnwC,KAAK2T,SACL3T,KAAKqkK,kBACDrkK,KAAKq8J,oBACLr8J,KAAKq4B,SAASg+H,mBACdr2J,KAAKusB,aAQjBwvI,EAAK77J,UAAU24C,iBAAmB,WAC9B74C,KAAKukK,SAAW,CACZh7F,KAAMvpE,KAAK2T,OACXwO,IAAKniB,KAAKqkK,gBACVnzI,MAAOlxB,KAAKqyH,UACZmyC,SAAUxkK,KAAK8jG,iBACf2gE,aAAczkK,KAAKskK,kBACnBI,cAAe1kK,KAAKiV,kBACpBg/G,SAAUj0H,KAAKyzH,gBACflnG,QAASvsB,KAAKusB,SAEdvsB,KAAK4uB,OAAOE,eAGZ9uB,KAAK4uB,OAAOzmB,SAAWnI,KAAK4uB,OAAOuH,QACnCn2B,KAAK4uB,OAAOiqB,iBAAiB,OAAiB74C,KAAKukK,SAASh4I,QAAQ3mB,KAAK5F,OAE7EA,KAAKmkG,YAAc,CAAC,CAAEz1F,MAAO,QAAoBiqF,QAAS34F,KAAKukK,SAASh7F,MACpE,CAAE76D,MAAO,QAAmBiqF,QAAS34F,KAAKukK,SAASpiJ,KACnD,CAAEzT,MAAO,QAAkBiqF,QAAS34F,KAAKukK,SAASrzI,OAClD,CAAExiB,MAAO,QAAqBiqF,QAAS34F,KAAKukK,SAASC,UACrD,CAAE91J,MAAO,QAAiBiqF,QAAS34F,KAAKukK,SAASE,cACjD,CAAE/1J,MAAO,QAA4BiqF,QAAS34F,KAAKukK,SAASG,eAC5D,CAAEh2J,MAAO,QAAmBiqF,QAAS34F,KAAKukK,SAAStwC,UACnD,CAAEvlH,MAAO,QAAgBiqF,QAAS34F,KAAKwS,UAC3C,eAAuBxS,KAAK4uB,OAAQ5uB,KAAKmkG,aAAa,EAAMnkG,QAEhE+7J,EAAK77J,UAAUqsB,QAAU,WACjBvsB,KAAK0jK,iBAAmB1jK,KAAKq8J,oBAC7Br8J,KAAK0jK,iBAAkB,EACvB1jK,KAAK+jK,6BAGbhI,EAAK77J,UAAUm8J,gBAAkB,WAC7B,OAAQr8J,KAAK4uB,OAAOzmB,SAAWnI,KAAK4uB,OAAOuH,QAAUn2B,KAAKq4B,SAASue,UAAgD,kBAA5B52C,KAAKq4B,SAAiB,UAEjH0jI,EAAK77J,UAAU6jK,yBAA2B,WACtC,IAAK/jK,KAAK0jK,iBAAmB1jK,KAAKq8J,kBAAmB,CACjD,IAAIrrI,OAAS,EACbhxB,KAAK4uB,OAAOkxE,gBAAgB,CAAC,kBAC7B9/F,KAAKoD,QAAQ8B,UAAU4G,IAAI,mBAC3B9L,KAAKq4B,SAAS0kI,QAAQ/8J,KAAKq4B,SAASue,UACpC,IAAIze,EAAOn4B,KAAK4uB,OAAOkJ,aACnBjM,EAAO,CACPkM,YAAaI,EAAKJ,YAAaE,SAAUE,EAAKF,SAAUD,UAAWG,EAAKH,UACxEmkE,kBAAmBhkE,EAAKgkE,kBAAmB06D,WAAY72J,KAAKq4B,SAASw+H,YAErEjuG,EAAS5oD,KAAK4uB,OAAOtjB,GAAK,iBAC1BtL,KAAK4uB,OAAOzmB,SACZnI,KAAKq4B,SAASye,WAAWjrB,EAAM7rB,KAAK4uB,OAAQ,gBAAiBg6B,EAAQ,KAAM,KAAM5oD,KAAKq4B,SAASj1B,SAC/FpD,KAAK4uB,OAAOwyD,oBAGZpwD,EAAShxB,KAAKq4B,SAASye,WAAWjrB,EAAM7rB,KAAK4uB,OAAQ,iBACrD,eAAe5uB,KAAKq4B,SAASj1B,QAAS4tB,MAQlD+qI,EAAK77J,UAAU07C,oBAAsB,WAC7B57C,KAAK4uB,OAAOE,eAGZ9uB,KAAK4uB,OAAOzmB,SAAWnI,KAAK4uB,OAAOuH,QACnCn2B,KAAK4uB,OAAOgtB,oBAAoB,OAAiB57C,KAAKukK,SAASh4I,SAEnEvsB,KAAK4uB,OAAOyF,IAAI,QAAqBr0B,KAAK+jK,0BAC1C,eAAuB/jK,KAAK4uB,OAAQ5uB,KAAKmkG,aAAa,KAQ1D43D,EAAK77J,UAAUsS,QAAU,WACrBxS,KAAK47C,sBACD57C,KAAKq8J,mBACLr8J,KAAK4uB,OAAOkxE,gBAAgB,CAAC,kBAEjC9/F,KAAKq4B,SAAS7lB,WAElBupJ,EAAK77J,UAAUyjK,aAAe,WACtB3jK,KAAKq4B,WAAar4B,KAAKq4B,SAASvJ,cAChC9uB,KAAKq4B,SAAS7lB,UACd,gBAAOxS,KAAKoD,WAGb24J,EAzVc,GA+VrBqI,EAAa,CACbz7I,OAAQ,UACRC,SAAU,UACVqwF,gBAAiB,UACjBD,cAAe,WACfE,UAAW,QACXC,YAAa,U,kCChXjB,0HAcIwrD,EAA2B,WAS3B,SAASA,EAAU/1I,EAAQk0D,EAAmB4X,GAK1C16F,KAAK4pH,mBAAqB,GAI1B5pH,KAAKwmG,uBAAyB,GAI9BxmG,KAAK2pH,gBAAkB,GAIvB3pH,KAAKu9I,cAAe,EAIpBv9I,KAAK8pH,uBAAyB,GAC9B9pH,KAAK4kK,eAAgB,EACrB5kK,KAAK6kK,qBAAsB,EAC3B7kK,KAAK8kK,oBAAqB,EAC1B9kK,KAAK+kK,wBAAyB,EAC9B/kK,KAAKglK,wBAAyB,EAC9BhlK,KAAKilK,eAAgB,EACrBjlK,KAAKklK,gBAAiB,EACtBllK,KAAKmlK,iBAAmB,GACxBnlK,KAAKolK,mBAAqB,GAC1BplK,KAAKm8F,kBAAoB,EACzBn8F,KAAKqlK,aAAe,GACpBrlK,KAAKslK,gBAAiB,EACtBtlK,KAAKulK,oBAAsB,GAC3BvlK,KAAKwlK,eAAiB,GACtBxlK,KAAKylK,uBAAwB,EAC7BzlK,KAAK0lK,qBAAsB,EAC3B1lK,KAAK2lK,kBAAmB,EACxB3lK,KAAK4lK,qBAAsB,EAC3B5lK,KAAK6lK,WAAY,EACjB7lK,KAAK8lK,aAAc,EACnB9lK,KAAK+lK,eAAgB,EACrB/lK,KAAKgmK,cAAe,EACpBhmK,KAAK0vC,kBAAmB,EACxB1vC,KAAKimK,sBAAuB,EAC5BjmK,KAAKkmK,qBAAsB,EAC3BlmK,KAAKmmK,oBAAqB,EAC1BnmK,KAAK2X,aAAc,EACnB3X,KAAKomK,mBAAoB,EACzBpmK,KAAKikF,oBAAqB,EAC1BjkF,KAAKqmK,oBAAqB,EAC1BrmK,KAAKsmK,iBAAkB,EAIvBtmK,KAAKumK,qBAAsB,EAC3BvmK,KAAKu/C,OAAS,YACdv/C,KAAK+E,IAAM,YAEX/E,KAAKwmK,aAAe,cACpBxmK,KAAKymK,YAAc,cACnBzmK,KAAK0mK,UAAY,cACjB1mK,KAAK2mK,SAAW,cAChB3mK,KAAK4mK,WAAa,cAClB5mK,KAAK6mK,iBAAmB,gBACxB7mK,KAAK8mK,gBAAkB,gBACvB9mK,KAAK+mK,eAAiB,gBACtB/mK,KAAKgnK,kBAAoB,gBACzBhnK,KAAKinK,WAAa,MAClBjnK,KAAK4uB,OAASA,EACd5uB,KAAK8iF,kBAAoBA,EACzB9iF,KAAKknK,QAAUxsE,EAAQta,WAAW,mBAClCpgF,KAAK+f,MAAQ26E,EAAQta,WAAW,SAChCpgF,KAAK64C,mBACL74C,KAAK4T,aAq0HT,OAn0HA+wJ,EAAUzkK,UAAUinK,oBAAsB,WACtCnnK,KAAK4uB,OAAOqD,IAAI,yBAChBjyB,KAAK2T,UAUTgxJ,EAAUzkK,UAAU+tJ,cAAgB,SAAUloI,EAAMvX,GAChDxO,KAAK4uB,OAAO3mB,QAAQuG,EAAMxO,KAAKonK,YAAYrhJ,KAE/C4+I,EAAUzkK,UAAUknK,YAAc,SAAUrhJ,GACxC,IAAK/lB,KAAK0vC,oBAAsB,eAAkB3pB,EAAK+hF,aAAe,eAAkB/hF,EAAKivE,WAAY,CACrG,IAAIswB,EAAStlH,KAAKqnK,UAAU,eAAkBthJ,EAAKivE,UAAY,eAAkBjvE,EAAK+hF,WAClF9nG,KAAKsnK,aAAevhJ,EAAK+hF,UAAU9S,SAAWjvE,EAAKivE,UACvDjvE,EAAK8V,eAAiBypF,EAAOzpF,eAEjC,OAAO9V,GAUX4+I,EAAUzkK,UAAU4jG,iBAAmB,SAAU/9E,EAAMvX,GACnDxO,KAAK4uB,OAAO3mB,QAAQuG,EAAMxO,KAAKonK,YAAYrhJ,IAC3C/lB,KAAK0vC,kBAAmB,GAQ5Bi1H,EAAUzkK,UAAU4U,cAAgB,WAChC,MAAO,aAQX6vJ,EAAUzkK,UAAUsS,QAAU,WAC1B,IAAIqtC,EAAc7/C,KAAK4uB,OAAOxrB,QACzBy8C,IAAiBA,EAAY3zC,cAAc,IAAM,SAAyB2zC,EAAY3zC,cAAc,IAAM,WAG/GlM,KAAKunK,YACLvnK,KAAKslG,iBACLtlG,KAAK47C,sBACL57C,KAAKwzC,eACL,OAAaruC,OAAOnF,KAAK4uB,OAAOorB,aAAc,YAAah6C,KAAKizE,kBAChE,OAAa9tE,OAAOnF,KAAK4uB,OAAOyrB,mBAAoB,YAAar6C,KAAKizE,oBAE1E0xF,EAAUzkK,UAAU4hE,UAAY,WAC5B,OAA0C,WAAlC9hE,KAAK4uB,OAAOi3C,aAAaihC,MAAwD,UAAlC9mG,KAAK4uB,OAAOi3C,aAAaihC,MAAoB9mG,KAAK4uB,OAAO+4E,YAC5G3nG,KAAK4uB,OAAO+4E,WAAWuxC,UAAYl5I,KAAK4uB,OAAO+4E,WAAWuxC,QAAQ1xE,aAClExnE,KAAK4uB,OAAOmuB,SAAW/8C,KAAK4uB,OAAOwgF,oBAE3Cu1D,EAAUzkK,UAAUsnK,6BAA+B,WAC/C,IAAIl1I,EAAOtyB,KAAK4uB,OAChB,GAA+B,UAA3B0D,EAAKuzC,aAAaihC,MAAoBx0E,EAAKq1E,WAAY,CACvD,IAAI8/D,EAAiB,gBAAcznK,KAAK4uB,OAAOytE,yBAC/CorE,EAAsD,WAArCn1I,EAAKuzC,aAAaoxE,eAC/BwwB,EAAex4H,OAAOjvC,KAAK4uB,OAAO+4E,WAAW2mB,kBAAkB,SAC/DtuH,KAAK4uB,OAAO+4E,WAAW2mB,kBAAkB,QAAuBr/E,OAAOw4H,GAG3E,IAFA,IAAIrrI,EAAiBp8B,KAAK4uB,OAAO+4E,WAAW2mB,kBAAkB,QAC1DyuB,EAAa/8I,KAAK4uB,OAAOkN,0BAA0B,GAC9C96B,EAAI,EAAGA,EAAKo7B,EAAqB,OAAGp7B,IACzC,IAAK,IAAIs2B,EAAI,EAAGA,EAAImwI,EAAe9mK,OAAQ22B,IACvC,GAAI8E,EAAezqB,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAKmrI,KAAgB0qB,EAAe91J,SAAS2lB,EAAE1lB,WAAY,KAAK,GAAKmrI,GAAa,CAC7H0qB,EAAe/6J,OAAO4qB,EAAG,GACzB,MAIZ,OAAOmwI,EAEN,GAAIznK,KAAK4uB,OAAO6D,sBAAwBzyB,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,SAAWX,KAAK4uB,OAAOwgF,mBAAoB,CACtH,IAAIs4D,EAAsBp1I,EAAK+pE,wBAAwBpoE,QAAO,SAAUiF,GAAO,YAAsB3tB,IAAf2tB,EAAI,UAC1F,OAAOwuI,EAGP,OAAOp1I,EAAK+pE,yBAUpBsoE,EAAUzkK,UAAU0iH,UAAY,SAAUn2G,EAAOihH,GAC7C,GAAI1tH,KAAK4pH,mBAAmBjpH,QAAUX,KAAK8iF,kBAAkB6kF,8BACzD3nK,KAAK4nK,mBAAmB,CAACn7J,QAD7B,CAIA,IAAI6lB,EAAOtyB,KAAK4uB,OACZw4F,EAAc90F,EAAKk1E,cAAc/6F,GACjC64G,EAAS8B,GAAe90F,EAAKizF,oBAAoB6B,EAAY18G,aAAa,aAC9E,KAAI1K,KAAKikF,oBAAsBqhC,GAAUA,EAAOxlC,YAAcwlC,EAAO7iC,aAArE,CAGA,IAAIolF,EACAC,GAAY,EAChB,GAAIx1I,EAAKG,sBAAwBhmB,GAAS,EAAG,CACzC,IAAIU,EAAI,CAAE46J,cAAet7J,EAAOu7J,aAAa,GAE7C,GADAhoK,KAAK4uB,OAAOhV,OAAO,QAAyBzM,IACxCi6G,IAAgB90F,EAAKizF,oBAAoB6B,EAAY18G,aAAa,aAGjE,CACD,GAAIyC,EAAE66J,cAAgB11I,EAAKwwD,kBAAkBC,iBAAkB,CAC3D,IAAIklF,EAAmBjoK,KAAK4uB,OAAOy2E,qBAC/B4iE,EAAiBtnK,OAAS,GAC1BX,KAAK23H,oBAGb,OATAkwC,EAAav1I,EAAKizF,oBAAoB6B,EAAY18G,aAAa,aAAamhB,UAahFg8I,EAAa7nK,KAAKqnK,UAAU56J,GAAOof,KAEvC,GAAK7rB,KAAKkoK,aAAgB9gD,IAAepnH,KAAK8hE,YAA9C,CAMA,IAOI/7C,EAPAoiJ,EAAgB/gD,EAAYt/F,aAAa,iBAC7C9nB,KAAKooK,eACL16C,EAAYA,IACP1tH,KAAK4pH,mBAAmBjpH,SACe,IAAnCX,KAAK4pH,mBAAmBjpH,WAAgBX,KAAK2X,cAAe3X,KAAK4uB,OAAOoxD,sBAC7DvzE,IAAUzM,KAAK4pH,mBAAmB,KAH/B8D,EAIvB1tH,KAAK2X,aAAc,EAEnB,IAAI0wJ,EAAM,SACL36C,EAWD1tH,KAAKsoK,qBAAqBviJ,EAAM2nG,EAAUjhH,EAAOo7J,EAAYC,EAAWK,EAAeE,EAAvFroK,CAA4F+lB,IAV5FA,EAAO,CACH8F,KAAMg8I,EAAY7yE,SAAUvoF,EAAO87J,cAAevoK,KAAK8kK,mBACvD0D,eAAgBxoK,KAAK6kK,oBAAqBxtI,IAAK+vF,EAC/CqhD,YAAan2I,EAAKk1E,cAAcxnG,KAAK0oK,cACrCC,iBAAkB3oK,KAAK0oK,aAAcpoK,OAAQN,KAAK4oK,aAAcn6J,QAAQ,EAAOE,aAAc3O,KAAK2O,aAClGk6J,wBAAyB7oK,KAAK6oK,yBAElC7oK,KAAK4uB,OAAO3mB,QAAQ,QAAqBjI,KAAKonK,YAAYrhJ,GAAO/lB,KAAKsoK,qBAAqBviJ,EAAM2nG,EAAUjhH,EAAOo7J,EAAYC,EAAWK,EAAeE,SAMhK1D,EAAUzkK,UAAUooK,qBAAuB,SAAUviJ,EAAM2nG,EAAUjhH,EAAOo7J,EAAYC,EAAWK,EAAeE,GAC9G,IAAIhlK,EAAQrD,KACZ,OAAO,SAAU+lB,GACR,eAAkBA,KAA4B,IAAnBA,EAAK,GAAKsiJ,IAI1ChlK,EAAMoJ,MAAQA,EACdpJ,EAAMs2E,OAAS+zC,EACfrqH,EAAMwoB,KAAOg8I,EACbxkK,EAAMylK,QAAUhB,EACZK,GAAiB9kK,EAAMy/E,kBAAkBC,kBAA+D,oBAAzC1/E,EAAMy/E,kBAAkBm8B,cACvF57G,EAAM0lK,iBAAiBt8J,GACvBpJ,EAAM2lK,sBAEAb,GAAiB9kK,EAAMy/E,kBAAkBC,kBACN,oBAAzC1/E,EAAMy/E,kBAAkBm8B,cACxB57G,EAAM2lK,oBAEmC,oBAAzC3lK,EAAMy/E,kBAAkBm8B,eACxB57G,EAAMijK,iBAAkB,EACxBjjK,EAAMiiG,oBAELjiG,EAAMy/E,kBAAkBC,kBAA6D,oBAAzC1/E,EAAMy/E,kBAAkBm8B,eACnE57G,EAAMurB,OAAOoxD,qBAAuB38E,EAAMy/E,kBAAkBC,oBAC9D1/E,EAAM6hK,gBAAiB,EACvB7hK,EAAM4lK,aAtBN5lK,EAAM6lK,sBA0BlBvE,EAAUzkK,UAAU8oK,kBAAoB,WACpC,IACIjjJ,EADAuM,EAAOtyB,KAAK4uB,OAEZniB,EAAQzM,KAAKyM,MACbihH,EAAW1tH,KAAK25E,OAChBkuF,EAAa7nK,KAAK6rB,KAClBi8I,EAAY9nK,KAAK8oK,QACjB1hD,EAAc90F,EAAKk1E,cAAc/6F,GAChCihH,GAAao6C,IACV9nK,KAAK4pH,mBAAmB5lH,QAAQyI,KAAW,GAC3CzM,KAAKmpK,mBAAmB/hD,EAAa36G,GAEzCzM,KAAKopK,eAAe38J,IAEnBihH,IACD3nG,EAAO,CACH8F,KAAMg8I,EAAY7yE,SAAUvoF,EAC5B4qB,IAAK+vF,EAAaqhD,YAAan2I,EAAKk1E,cAAcxnG,KAAK0oK,cACvDC,iBAAkB3oK,KAAK0oK,aAAcpoK,OAAQN,KAAK4oK,aAAcj6J,aAAc3O,KAAK2O,aACnF06J,wBAAyBrpK,KAAK6oK,wBAAyBjgE,WAAYn8F,GAEvEzM,KAAK8jG,iBAAiB/9E,EAAM,UAEhC/lB,KAAK2O,cAAe,EACpB3O,KAAKspK,eAAe78J,IASxBk4J,EAAUzkK,UAAU43H,kBAAoB,SAAUhzC,EAAY+oC,GAC1D7tH,KAAK2tH,WAAW3tH,KAAKupK,yBAAyBzkF,EAAY+oC,IAC1D7tH,KAAKopK,eAAev7C,IAExB82C,EAAUzkK,UAAUspK,mBAAqB,SAAUC,EAAc5tI,EAAgBguC,EAAc++B,EAAY8gE,GACvG,IAAK,IAAI1oK,EAAI,EAAGiiB,EAAM2lF,EAAWjoG,OAAQK,EAAIiiB,EAAKjiB,IAAK,CACnD,IAAI2oK,EAAa3pK,KAAK4uB,OAAOs5E,cAAcU,EAAWj3F,SAAS3Q,EAAE4Q,WAAY,MACzE5R,KAAK4uB,OAAO6D,uBACZk3I,EAAa3pK,KAAK4uB,OAAO44E,cAAcoB,EAAWj3F,SAAS3Q,EAAE4Q,WAAY,OAE7E,IAAI0zG,EAAStlH,KAAKqnK,UAAUsC,GACxBrkD,GAAUA,EAAOxlC,WAAawlC,EAAO7iC,cACrCgnF,EAAap9J,KAAKi5G,EAAOz5F,MACzBg+C,EAAax9D,KAAKs9J,GAClB9tI,EAAexvB,KAAKi5G,EAAOzpF,iBAGvB77B,KAAKikF,oBAAsBylF,GAC3BA,EAAmBh9J,OAAOg9J,EAAmB1lK,QAAQ4kG,EAAWj3F,SAAS3Q,EAAE4Q,WAAY,MAAO,KAW9G+yJ,EAAUzkK,UAAUytH,WAAa,SAAU/kB,GACvC,IAAIvlG,EAAQrD,KACRsyB,EAAOtyB,KAAK4uB,OACZ86I,EAAqB9gE,EAAWl7F,QAChCsnF,EAAYh1F,KAAK4pK,cAAgChhE,EAAWA,EAAWjoG,OAAS,GAA/CioG,EAAW,GAChD5oG,KAAK0vC,kBAAmB,EACxB,IAAIm6B,EAAe,GACfhuC,EAAiB,GACjBwsI,EAAM,SACNoB,EAAe,GACnB,GAAKzpK,KAAKkoK,cAAeloK,KAAK8hE,YAA9B,CAGA9hE,KAAKwpK,mBAAmBC,EAAc5tI,EAAgBguC,EAAc++B,EAAY8gE,GAChF1pK,KAAKooK,eACL,IAAIriJ,EAAO,CACPtX,QAAQ,EACRm6F,WAAY8gE,EAAoBryI,IAAKwyC,EAAcmrB,SAAUA,EAAU10F,OAAQN,KAAK4oK,aACpFiB,QAASv3I,EAAK0/D,UAAUhyF,KAAK0oK,cAAeC,iBAAkB3oK,KAAK0oK,aACnE/5J,aAAc3O,KAAK2O,aAAc45J,cAAevoK,KAAK8kK,mBAAoB0D,eAAgBxoK,KAAK6kK,oBAC9Fh5I,KAAM49I,EAAcZ,wBAAyB7oK,KAAK6oK,wBAAyBhtI,eAAgBA,GAE/F77B,KAAK4uB,OAAO3mB,QAAQ,QAAqBjI,KAAKonK,YAAYrhJ,IAAO,SAAUA,GACvE,GAAK,eAAkBA,KAA4B,IAAnBA,EAAK,GAAKsiJ,GAA1C,CAIM/1I,EAAK6uB,qBAAuB99C,EAAMymK,WAAazmK,EAAMy/E,kBAAkBC,kBACzE1/E,EAAM4lK,WAEV5lK,EAAM+lK,eAAeM,EAAmBh8J,OAAO,GAAG,IAClD,IAAIq8J,EAAc,SAAUt9J,EAAO8wI,GAC/Bl6I,EAAM8lK,mBAAmB72I,EAAKk1E,cAAc/6F,GAAQA,EAAO8wI,GAC3Dl6I,EAAMimK,eAAet0E,IAEzB,GAAK3xF,EAAMumK,cAOPG,EAAY/0E,QANZ,IAAK,IAAInnF,EAAK,EAAGm8J,EAAuBN,EAAoB77J,EAAKm8J,EAAqBrpK,OAAQkN,IAAM,CAChG,IAAIk5G,EAASijD,EAAqBn8J,GAClCk8J,EAAYhjD,IAAQz0F,EAAKG,sBAMjC1M,EAAO,CACH6iF,WAAY8gE,EAAoBryI,IAAKwyC,EAAcmrB,SAAUA,EAAU10F,OAAQ+C,EAAMulK,aACrFiB,QAASv3I,EAAK0/D,UAAU3uF,EAAMqlK,cAAeC,iBAAkBtlK,EAAMqlK,aACrE78I,KAAMxoB,EAAMgiG,qBAAsB12F,aAActL,EAAMsL,aACtDk6J,wBAAyBxlK,EAAMwlK,wBAAyBhtI,eAAgBA,GAExEx4B,EAAM8kK,eACN9kK,EAAMygG,iBAAiB/9E,EAAM,SAEjC1iB,EAAMsL,cAAe,OA7BjBtL,EAAM6lK,yBAuClBvE,EAAUzkK,UAAU0nK,mBAAqB,SAAUh/D,GAC/C,IAAIt2E,EAAOtyB,KAAK4uB,OACZy5I,EAAM,SACN/nK,EAASN,KAAKM,OAClBN,KAAK0vC,kBAAmB,EACxB,IAAIm6B,EAAe,GACfhuC,EAAiB,GACjB4tI,EAAe,GACfp2E,EAAU/gE,EAAKutD,wBAAwB5wC,OAAO25D,GAC9Cwe,EAAepnH,KAAK4pK,cACpBt3I,EAAKk1E,cAAcoB,EAAWA,EAAWjoG,OAAS,IADd2xB,EAAKk1E,cAAcoB,EAAW,IAEtE,GAAM5oG,KAAKkoK,cAAeloK,KAAK8hE,aAAiB9hE,KAAK8iF,kBAAkB68D,aAAvE,CAGA,IAAI55H,EACAi5F,EAAiBh/G,KAAK4uB,OAAO8H,aAAazC,QAAO,SAAUiF,GAAO,MAAoB,aAAbA,EAAI1qB,QAC7ExO,KAAK8kK,qBAAuB9lD,EAAer+G,QAC3CX,KAAKwpK,mBAAmBC,EAAc5tI,EAAgBguC,EAAcwpB,GAExE,IAAK,IAAIxlF,EAAK,EAAGo8J,EAAerhE,EAAY/6F,EAAKo8J,EAAatpK,OAAQkN,IAAM,CACxE,IAAImnF,EAAWi1E,EAAap8J,GACxBy3G,EAAStlH,KAAKqnK,UAAUryE,GACxBk1E,EAAelqK,KAAK4pH,mBAAmB5lH,QAAQgxF,IAAa,EAChE,KAAIh1F,KAAKikF,oBAAsBqhC,GAAUA,EAAOxlC,YAAcwlC,EAAO7iC,aAArE,CAIA,GADAziF,KAAKopK,eAAep0E,GAChBk1E,IAAkBlrD,EAAer+G,QAAgBX,KAAK8iF,kBAAkBqnF,cAAiBnqK,KAAK8kK,oBAAqB,CAGnH,GAFA9kK,KAAKimK,sBAAuB,EAC5BjmK,KAAKoqK,YAAY,QAAuB,CAACp1E,GAAW,CAACswB,EAAOz5F,MAAO,CAACu7F,GAAc,CAAC9B,EAAOzpF,gBAAiBv7B,GACvGN,KAAK2lK,iBACL,OAEJ3lK,KAAK4pH,mBAAmBl9G,OAAO1M,KAAK4pH,mBAAmB5lH,QAAQgxF,GAAW,GAC1Eh1F,KAAK2pH,gBAAgBj9G,OAAO1M,KAAK2pH,gBAAgB3lH,QAAQojH,GAAc,GACvEpnH,KAAKopK,eAAeppK,KAAK4pH,mBAAmBjpH,OAASX,KAAK4pH,mBAAmB5pH,KAAK4pH,mBAAmBjpH,OAAS,IAAM,GACpHymH,EAAYx8G,gBAAgB,iBAC5B5K,KAAKqqK,uBAAuBjjD,GAAa,EAAO,KAAM,wBAAyB,YAC/EpnH,KAAKoqK,YAAY,QAAsB,CAACp1E,GAAW,CAACswB,EAAOz5F,MAAO,CAACu7F,GAAc,CAAC9B,EAAOzpF,gBAAiBv7B,OAAQiL,OAAWA,OAAWA,GACxIvL,KAAK2O,cAAe,EACpB3O,KAAK0vC,kBAAmB,EACxB1vC,KAAKimK,sBAAuB,EAC5BjmK,KAAKylK,uBAAwB,MAE5B,CAWD,GAVAzlK,KAAKooK,eACLriJ,EAAO,CACHtX,QAAQ,EACRod,KAAM49I,EAAa9oK,OAAS8oK,EAAenkD,EAAOz5F,KAAMmpE,SAAUA,EAAU39D,IAAKwyC,EAAalpE,OAASkpE,EACnGu9C,EAAa9mH,OAAQN,KAAK4oK,aAAciB,QAASv3I,EAAK0/D,UAAUhyF,KAAK0oK,cACzEC,iBAAkB3oK,KAAK0oK,aAAcH,cAAevoK,KAAK8kK,mBAAoB0D,eAAgBxoK,KAAK6kK,oBAClGhpI,eAAgBA,EAAel7B,OAASk7B,EAAiBypF,EAAOzpF,eAAgBltB,aAAc3O,KAAK2O,aACnGk6J,wBAAyB7oK,KAAK6oK,wBAAyBjgE,WAAYvV,GAEvErzF,KAAK4uB,OAAO3mB,QAAQ,QAAqBjI,KAAKonK,YAAYrhJ,KACrD,eAAkBA,KAA4B,IAAnBA,EAAK,GAAKsiJ,GAEtC,YADAroK,KAAKkpK,oBAGLlpK,KAAK4pK,eACL5pK,KAAKipK,WAETjpK,KAAKmpK,mBAAmB/hD,EAAapyB,GAazC,GAXKk1E,IACDnkJ,EAAO,CACH8F,KAAM49I,EAAa9oK,OAAS8oK,EAAenkD,EAAOz5F,KAAMmpE,SAAUA,EAAU39D,IAAKwyC,EAAalpE,OAASkpE,EACnGu9C,EAAa9mH,OAAQN,KAAK4oK,aAAciB,QAASv3I,EAAK0/D,UAAUhyF,KAAK0oK,cACzEC,iBAAkB3oK,KAAK0oK,aAAc7sI,eAAgBA,EAAel7B,OAASk7B,EAAiBypF,EAAOzpF,eACrGltB,aAAc3O,KAAK2O,aAAck6J,wBAAyB7oK,KAAK6oK,wBAAyBjgE,WAAYvV,GAExGrzF,KAAK8jG,iBAAiB/9E,EAAM,UAEhC/lB,KAAK2O,cAAe,EACpB3O,KAAKspK,eAAet0E,GAChBh1F,KAAK4pK,cACL,UAIZjF,EAAUzkK,UAAUqpK,yBAA2B,SAAUzkF,EAAY+oC,GAKjE,IAJA,IAAIx6B,EAAU,GAEVxvF,EAAMihF,GAAc+oC,EACpB,CAAE7sH,EAAG8jF,EAAYzrE,IAAKw0G,GAAa,CAAE7sH,EAAG6sH,EAAUx0G,IAAKyrE,GAAc9jF,EAAI6C,EAAG7C,EAAGqY,EAAMxV,EAAGwV,IACrFrY,GAAKqY,EAAKrY,IACbqyF,EAAQhnF,KAAKrL,GAKjB,OAHI8jF,EAAa+oC,GACbx6B,EAAQi3E,UAELj3E,GAEXsxE,EAAUzkK,UAAU+oK,SAAW,WAC3BjpK,KAAKilK,eAAgB,EACrBjlK,KAAK23H,qBAETgtC,EAAUzkK,UAAUqqK,iBAAmB,WAC/BvqK,KAAK2lK,kBAAiD,UAA7B3lK,KAAK4uB,OAAOqxD,eAGzCjgF,KAAK4pH,mBAAqB,GAC1B5pH,KAAK2pH,gBAAkB,GACvB3pH,KAAKopK,gBAAgB,GACjBppK,KAAK4pK,eAAiB5pK,KAAK4uB,OAAOwgF,qBAClCpvG,KAAKmlK,iBAAmB,MAGhCR,EAAUzkK,UAAU6oK,iBAAmB,SAAUt8J,GAC7C,GAAIzM,KAAK25E,OAAQ,CACb,IAAI7sC,EAAc9sC,KAAK4uB,OAAO44E,cAAc/6F,GACvCzM,KAAK6lK,YACN/4H,EAAYliC,gBAAgB,iBAC5B5K,KAAKqqK,uBAAuBv9H,GAAa,GAAO,EAAM,wBAAyB,aAEnF9sC,KAAK8oK,SAAU,EACf9oK,KAAKwqK,wBAAwB19H,GAAa,GAC1C9sC,KAAKyqK,iBAAiB39H,GACtB9sC,KAAK4pH,mBAAmBl9G,OAAO1M,KAAK4pH,mBAAmB5lH,QAAQyI,GAAQ,GACvEzM,KAAK2pH,gBAAgBj9G,OAAO1M,KAAK2pH,gBAAgB3lH,QAAQhE,KAAK4uB,OAAO44E,cAAc/6F,IAAS,KAGpGk4J,EAAUzkK,UAAUopK,eAAiB,SAAUxkF,GAC3C9kF,KAAK0oK,aAAe5jF,EACpB9kF,KAAKmoK,cAAgBnoK,KAAK4pH,mBAAmBjpH,SAAU,GAE3DgkK,EAAUzkK,UAAUwqK,WAAa,SAAUC,EAAS9+I,GAChD,OAAO8+I,GAAU,eAAeA,GAAW,eAAUA,EAAS9+I,GAA6BA,EAAK,GAAK8+I,IAEzGhG,EAAUzkK,UAAUsqK,wBAA0B,SAAUpjD,EAAauzB,GACjE,IAAIt3I,EAAQrD,KACZ,IAAKA,KAAK4uB,OAAOwgF,oBAAsBpvG,KAAK4uB,OAAOk0D,kBAAkBC,kBACjE/iF,KAAK4uB,OAAOkN,0BAA0Bn7B,OAAS,KAAO,eAAkBymH,GAAc,CACjFpnH,KAAK4uB,OAAOwgF,oBACbpvG,KAAK4qK,+BAET,IAAItlD,EAAStlH,KAAKqnK,UAAUjgD,GACxBnkC,EAASqiC,EAAOz5F,KAAO7rB,KAAK0qK,WAAW1qK,KAAK+8I,WAAYz3B,EAAOz5F,MAAQ,KAC3E,GAAe,OAAXo3D,EACA,OAEJqiC,EAAOvlC,WAAa46D,EACfA,IAAa36I,KAAKikF,oBAAwBjkF,KAAKikF,oBAAsBqhC,EAAO7iC,cAAgB6iC,EAAOvlC,YACpG//E,KAAKmlK,iBAAiB,GAAKliF,GAAU03D,SAC7B36I,KAAKolK,mBAAmB,GAAKniF,GAChCjjF,KAAKulK,oBAAoBvrI,MAAK,SAAUnO,GAAQ,OAAOxoB,EAAMqnK,WAAWrnK,EAAM05I,WAAYlxH,KAAUo3D,MACrGjjF,KAAKulK,oBAAoBl5J,KAAKi5G,EAAOz5F,OAIzC7rB,KAAK6qK,oBAAoB5nF,KAIrC0hF,EAAUzkK,UAAU2qK,oBAAsB,SAAUC,EAAM7mF,GACtD,IAKIx3E,EALApJ,EAAQrD,YACJA,KAAKmlK,iBAAiB,GAAK2F,GAC/B9qK,KAAKqmK,qBACLrmK,KAAKolK,mBAAmB,GAAK0F,IAAQ,GAGzC,IAAIC,EAAY/qK,KAAKulK,oBAAoBvrI,MAAK,SAAUnO,EAAM7qB,GAE1D,OADAyL,EAAQzL,EACDqC,EAAMqnK,WAAWrnK,EAAM05I,WAAYlxH,KAAUi/I,KAEpDC,IACA/qK,KAAKulK,oBAAoB74J,OAAOD,EAAO,GACnCw3E,GACAjkF,KAAK4uB,OAAOu0D,uBAAuBz2E,OAAOD,EAAO,KAI7Dk4J,EAAUzkK,UAAUuqK,iBAAmB,SAAUpzI,EAAKsjH,EAAU3lD,GAC5D,IAAK,eAAkB39D,GAAM,CACzB,IAAI8sD,EAAS9sD,EAAInrB,cAAc,kBAC1B,eAAkBi4E,KACnB,gBAAqBA,EAAOlwC,mBAAoB0mG,GAChD,gBAAWx2D,EAAQw2D,IACf,eAAkB36I,KAAKgrK,iBAAoB,eAAkBhrK,KAAKgrK,iBAC9DhrK,KAAKgrK,cAAc9lK,UAAUmB,SAAS,sBAC1CrG,KAAKirK,iBAAiBj2E,MAKtC2vE,EAAUzkK,UAAUipK,mBAAqB,SAAU/hD,EAAatiC,EAAYy4D,GACxE,GAAKn2B,KAGgD,IAAjDpnH,KAAK4pH,mBAAmB5lH,QAAQ8gF,KAChC9kF,KAAK4pH,mBAAmBv9G,KAAKy4E,GAC7B9kF,KAAK2pH,gBAAgBt9G,KAAK+6G,IAE9BA,EAAYz8G,aAAa,gBAAiB,QAC1C3K,KAAKwqK,wBAAwBpjD,GAAa,GAC1CpnH,KAAKyqK,iBAAiBrjD,GAAa,GACnCpnH,KAAKqqK,uBAAuBjjD,GAAa,EAAM,KAAM,wBAAyB,aACzEpnH,KAAKu9I,cAAc,CACpB,IAAIj9I,EAASN,KAAK+f,MAAMmrJ,iBAAiBpjE,UACrCsf,EAAY3lE,MAAMzhD,KAAK+f,MAAMmrJ,iBAAiBpjE,WAC9Csf,EAAYl7G,cAAc,yFAI9B,GAHIlM,KAAK4uB,OAAO4yF,mBAA0C,IAArBxhH,KAAKmrK,cACtC7qK,EAASN,KAAK4uB,OAAO4yF,kBAAkB7/D,OAEtCrhD,GAAUi9I,EACX,OAEJv9I,KAAK+f,MAAM45H,QAAQ,CAAEr5I,OAAQA,IAAU,KAQ/CqkK,EAAUzkK,UAAUolG,eAAiB,WAKjC,GAJAtlG,KAAKorK,uBAAwB,EACzBprK,KAAK8iF,kBAAkBC,kBAAoB/iF,KAAKulK,oBAAoB5kK,SACpEX,KAAKwlK,eAAiB,gBAAcxlK,KAAKulK,uBAExCvlK,KAAK4uB,OAAOwgF,oBAAuBpvG,KAAK4uB,OAAOwgF,qBAAuBpvG,KAAK4uB,OAAOmuB,SACjF,eAAkB/8C,KAAKgrK,gBAAkBhrK,KAAKgrK,cAAc9lK,UAAUmB,SAAS,oBAAsB,CACvG,IAAImwF,EAAOx2F,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,gBAAgBA,cAAc,QACvEsqF,EAAKtxF,UAAUmB,SAAS,gBACxBmwF,EAAKtxF,UAAUC,OAAO,iBAEtBnF,KAAK4uB,OAAOwgF,qBACZpvG,KAAKulK,oBAAsB,GAC3BvlK,KAAKmlK,iBAAmB,IAE5BnlK,KAAK23H,oBACL33H,KAAK03H,qBACL13H,KAAKqrK,uBACLrrK,KAAK0oK,kBAAen9J,EACpBvL,KAAKsrK,eAAY//J,EACjBvL,KAAKurK,gBAAahgK,EAClBvL,KAAKglK,wBAAyB,EAC9BhlK,KAAK2O,cAAe,EACpB3O,KAAKorK,uBAAwB,EAC7BprK,KAAKylK,uBAAwB,IAQrCd,EAAUzkK,UAAUy3H,kBAAoB,WACpC,IAAIt0H,EAAQrD,KACZ,GAAIA,KAAKmoK,cAAe,CAOpB,IANA,IAAI1yE,EAASz1F,KAAK4uB,OAAOs5E,cACrBzF,EAAS,GACT4iB,EAAQ,GACRmmD,EAAa,GACbC,EAAmB,GACnB19J,EAAW/N,KAAKM,OACXU,EAAI,EAAGiiB,EAAMjjB,KAAK4pH,mBAAmBjpH,OAAQK,EAAIiiB,EAAKjiB,IAAK,CAChE,IAAI2oK,EAA+C,UAAlC3pK,KAAK4uB,OAAOi3C,aAAaihC,KACtC9mG,KAAK4uB,OAAOojE,UAAUhyF,KAAK4pH,mBAAmBj4G,SAAS3Q,EAAE4Q,WAAY,MACnE5R,KAAK4uB,OAAOs5E,cAAcloG,KAAK4pH,mBAAmBj4G,SAAS3Q,EAAE4Q,WAAY,MAC3E0zG,EAAStlH,KAAKqnK,UAAUsC,GACxBrkD,IACA7iB,EAAOp2F,KAAKi5G,EAAOz5F,MACnBw5F,EAAMh5G,KAAKs9J,GACX6B,EAAWn/J,KAAKrM,KAAK4pH,mBAAmBj4G,SAAS3Q,EAAE4Q,WAAY,MAC/D65J,EAAiBp/J,KAAKi5G,EAAOzpF,iBAGjC77B,KAAK8iF,kBAAkBC,kBAA4D,oBAAxC/iF,KAAK8iF,kBAAkBm8B,eAClEj/G,KAAK0rK,eAAe1rK,KAAKorK,uBAE7BprK,KAAKoqK,YAAY,QAAuBoB,EAAY/oE,EAAQ4iB,EAAOomD,EAAkB19J,EAAU,MAAM,WACjG,GAAI1K,EAAMsiK,mBAAqBtiK,EAAMqoK,cAAgBroK,EAAM+nK,uBAA0B/nK,EAAMsL,eACtFtL,EAAMurB,OAAOwgF,oBADlB,CAEI,GAAI/rG,EAAMurB,OAAOwgF,mBACb,GAAyF,iBAArF/rG,EAAMsoK,kBAAkBtoK,EAAMurB,OAAOxrB,QAAQ8I,cAAc,sBAC3D,IAAK,IAAIlL,EAAI,EAAGA,EAAIqC,EAAMsmH,gBAAgBhpH,OAAQK,IAC9CqC,EAAMmnK,wBAAwBnnK,EAAMsmH,gBAAgBh4G,SAAS3Q,EAAE4Q,WAAY,MAAM,QAIrFvO,EAAMurB,OAAOqxD,aAAe,QAC5B58E,EAAMuoK,2BAA0B,GAGpCvoK,EAAM4hK,gBACN5hK,EAAMknK,mBACNlnK,EAAM4hK,eAAgB,EAClB5hK,EAAM6hK,iBACN7hK,EAAM2lK,oBACN3lK,EAAM6hK,gBAAiB,QAlBnC,CAwBA,IADA,IAAI9hK,EAAU,GAAGsK,MAAMpK,KAAKmyF,EAAOxhE,QAAO,SAAUirE,GAAU,OAAOA,EAAOp3E,aAAa,qBAChFwP,EAAI,EAAGA,EAAIl0B,EAAQzC,OAAQ22B,IAC3Bj0B,EAAMwiK,YACPziK,EAAQuO,SAAS2lB,EAAE1lB,WAAY,KAAKhH,gBAAgB,iBACpDvH,EAAMgnK,uBAAuBjnK,EAAQuO,SAAS2lB,EAAE1lB,WAAY,MAAM,GAAO,EAAM,wBAAyB,aAGvGvO,EAAM8iK,oBACP9iK,EAAMmnK,wBAAwBpnK,EAAQuO,SAAS2lB,EAAE1lB,WAAY,MAAM,GAEvEvO,EAAMonK,iBAAiBrnK,EAAQuO,SAAS2lB,EAAE1lB,WAAY,MAE1DvO,EAAMumH,mBAAqB,GAC3BvmH,EAAMsmH,gBAAkB,GACxBtmH,EAAM8kK,eAAgB,EACtB9kK,EAAM+lK,gBAAgB,GACtB/lK,EAAM8iK,oBAAqB,EAC3B9iK,EAAM+mK,YAAY,QAAsBoB,EAAY/oE,EAAQ4iB,EAAOomD,EAAkB19J,EAAU,UAAMxC,EAAW,MAC5GlI,EAAM4hK,gBACN5hK,EAAMknK,mBACNlnK,EAAM4hK,eAAgB,EAClB5hK,EAAM6hK,iBACN7hK,EAAM2lK,oBACN3lK,EAAM6hK,gBAAiB,OAGhC,WAGCllK,KAAKilK,gBACLjlK,KAAKuqK,mBACLvqK,KAAKilK,eAAgB,EACjBjlK,KAAKklK,iBACLllK,KAAKgpK,oBACLhpK,KAAKklK,gBAAiB,KAKtCP,EAAUzkK,UAAUkqK,YAAc,SAAU57J,EAAMwmF,EAAUnpE,EAAMwL,EAAKwE,EAAgBv7B,EAAQurK,EAAMC,EAAqBC,GACtH,IAAI1oK,EAAQrD,KACZ,GAAKA,KAAK8iF,kBAAkBC,mBAAqB/iF,KAAK0rK,cAAgB1rK,KAAKorK,uBAA0BprK,KAAK+f,MAAM,cAC5G/f,KAAK+f,MAAMo1G,YAAY/xH,QAAQ8B,UAAUmB,SAAS,iBAA+C,UAA5BrG,KAAK+f,MAAM,gBAC/E/f,KAAK8iF,kBAAkBC,iBAAkB,CAC1C,IAAIipF,EAAU,SACVC,EAAoC,IAApBj3E,EAASr0F,QAA+C,IAA/BX,KAAKwlK,eAAe7kK,OAC7DurK,EAAiB,CACjBl3E,SAAUA,EAAS,GAAInpE,KAAM7rB,KAAK8iF,kBAAkBC,kBAAkD,YAA7B/iF,KAAK4uB,OAAOqxD,eAChFgsF,GAA0D,oBAAxCjsK,KAAK8iF,kBAAkBm8B,aAAqCj/G,KAAKwlK,eAAiB35I,EACzGgQ,eAAgBA,EAAgBptB,QAAQ,EAAOE,aAAc3O,KAAK2O,aAClEk6J,wBAAyB7oK,KAAK6oK,yBAErB,kBAATr6J,UACO09J,EAAez9J,OAE1B,IAAI09J,EAAc,MACd52J,EAAW,SACX62J,EAAS,WACTC,EAAW,aACXC,EAAU,OACVpuE,EAAa,iBACjBguE,EAAe,GAAKC,GAAe90I,EACnC60I,EAAe,GAAK32J,GAAYvV,KAAK4oK,aACrC,IAAI2D,EAAuBvsK,KAAK4oK,eAAiB,eAAkB,eAAQ5oK,KAAK4oK,aAAc,UAC1F2D,GAAwBv3E,EAASr0F,OAAS,GAC1CurK,EAAe,GAAKE,GAAUp3E,EAAS,GACvCk3E,EAAe,GAAKG,GAAYr3E,GAEP,IAApBA,EAASr0F,SACdurK,EAAe,GAAKI,GAAWJ,EAAe,GAAKI,GAAS,GAC5DJ,EAAe,GAAKC,GAAeD,EAAe,GAAKC,GAAa,GACpED,EAAe,GAAKhuE,GAAcguE,EAAe,GAAKhuE,GAAY,GAC9Dl+F,KAAKimK,uBACLiG,EAAe,GAAKG,GAAYr3E,IAGxCh1F,KAAK4uB,OAAO3mB,QAAQuG,EAAM09J,GAAgB,SAAUnmJ,GAChD1iB,EAAMsiK,iBAAmB5/I,EAAK,GAAKimJ,GAC9B3oK,EAAMsiK,mBAAsBtiK,EAAMqoK,cAAiBroK,EAAMsL,cAAiBtL,EAAM+nK,yBACjF/nK,EAAMmnK,wBAAwBnzI,EAAI,IAAI,GACtCh0B,EAAMonK,iBAAiBpzI,EAAI,QAAI9rB,EAAWypF,EAAS,UAE3BzpF,IAAxBugK,GACAA,YAIH9rK,KAAK8iF,kBAAkBC,mBAAqB/iF,KAAK2O,mBAC1BpD,IAAxBugK,GACAA,KAIZnH,EAAUzkK,UAAUmnK,UAAY,SAAUhwI,GAEtC,YADY,IAARA,IAAkBA,EAAMr3B,KAAKsnK,cAC7B,eAAkBjwI,GACX,IAEQ,kBAARA,IACPA,EAAMr3B,KAAK4uB,OAAO44E,cAAcnwE,IAEhCA,GACOr3B,KAAK4uB,OAAO22F,oBAAoBluF,EAAI3sB,aAAa,cAErD,KASXi6J,EAAUzkK,UAAU0tH,WAAa,SAAU9lB,EAAW4lB,GAClD,GAAK1tH,KAAKwsK,aAAV,CAGA,IACIzmJ,EADAuM,EAAOtyB,KAAK4uB,OAEZ69I,EAAen6I,EAAKm1E,iBAAiBK,EAAU9S,SAAUh1F,KAAKglJ,YAAYl9C,EAAU9S,SAAU8S,EAAUA,YAC5G9nG,KAAKsnK,aAAex/D,EAAU9S,SAC9B,IAAIy0E,EAAezpK,KAAKwnK,+BAA+BxnK,KAAKsnK,cAC5D,GAAKtnK,KAAKwsK,cAAiBC,IAAgBzsK,KAAK8hE,YAAhD,CAGA,IAAI4qG,EAAiBD,EAAavnK,UAAUmB,SAAS,6BAIrD,GAHAqnH,EAAYA,GAAwB,gBAAY1tH,KAAKsrK,YACjDxjE,EAAU9S,WAAah1F,KAAKsrK,UAAUt2E,UAAY8S,EAAUA,YAAc9nG,KAAKsrK,UAAUxjE,WACzF4kE,EAFmBh/C,EAGlBA,EAgBD1tH,KAAK6lJ,gBAAgB9/H,EAAM2nG,EAAU5lB,EAAW2kE,EAAchD,EAA9DzpK,CAA4E+lB,OAhBjE,CACXA,EAAO,CACH8F,KAAM49I,EAAc3hE,UAAWA,EAC/BygE,cAAevoK,KAAK8kK,mBAAoB0D,eAAgBxoK,KAAK6kK,oBAC7D8H,gBAAiB3sK,KAAKurK,WAClBvrK,KAAK4sK,aAAa5sK,KAAKurK,WAAWv2E,SAAUh1F,KAAKurK,WAAWzjE,gBAAav8F,EAC7EkD,QAAQ,GAEZ,IAAIo+J,EAAc,cAClB9mJ,EAAK,GAAK8mJ,GAAeJ,EACzB,IAAIK,EAAuB,uBAC3B/mJ,EAAK,GAAK+mJ,GAAwB9sK,KAAKurK,WACvCvrK,KAAK4uB,OAAO3mB,QAAQ,OAAsBjI,KAAKonK,YAAYrhJ,GAAO/lB,KAAK6lJ,gBAAgB9/H,EAAM2nG,EAAU5lB,EAAW2kE,EAAchD,IAChIzpK,KAAKgmK,cAAe,MAM5BrB,EAAUzkK,UAAU2lJ,gBAAkB,SAAUknB,EAAmBr/C,EAAU5lB,EAAW2kE,EAAchD,GAClG,IAAIpmK,EAAQrD,KACZ,OAAO,SAAU+sK,GACb,IAAIC,EAAO,SACPH,EAAc,cAClB,IAAK,eAAkBE,KAAuD,IAAjCA,EAAkB,GAAKC,MAG/Dt/C,IACDq/C,EAAkB,GAAKF,GAAeE,EAAkB,GAAKF,GAAeE,EAAkB,GAAKF,GAAeJ,GAEtHppK,EAAM4pK,YACDv/C,GACDrqH,EAAM6pK,oBAAoBT,EAAc3kE,EAAU9S,SAAU8S,EAAUA,YAErE4lB,GAAU,CACX,IAAI3nG,EAAO,CACP8F,KAAM49I,EAAc3hE,UAAWA,EAAW+kE,YAAaJ,EACvDU,qBAAsB9pK,EAAMmjG,uBAC5BmmE,gBAAiBtpK,EAAMkoK,WACnBloK,EAAMupK,aAAavpK,EAAMkoK,WAAWv2E,SAAU3xF,EAAMkoK,WAAWzjE,gBAAav8F,GAEhFuhK,EAAuB,uBAC3B/mJ,EAAK,GAAK+mJ,GAAwBzpK,EAAMkoK,WACxCloK,EAAM+pK,gBAAgBtlE,EAAWA,GACjCzkG,EAAMygG,iBAAiB/9E,EAAM,WAIzC4+I,EAAUzkK,UAAU0sK,aAAe,SAAUrlE,EAAMD,GAC/C,OAAOtnG,KAAK4uB,OAAO64E,iBAAiBF,EAAMD,IAS9Cq9D,EAAUzkK,UAAU2nG,mBAAqB,SAAU/iB,EAAY+oC,GAC3D,IAAIxqH,EAAQrD,KACZ,GAAKA,KAAKwsK,aAAV,CAGA,IAEI/vJ,EACApD,EAGA+tF,EANA90E,EAAOtyB,KAAK4uB,OACZ69I,EAAen6I,EAAKm1E,iBAAiB3iB,EAAWkQ,SAAUlQ,EAAWgjB,WAGrEulE,EAAUvoF,EACVwoF,EAAUz/C,EAAWA,GAAsB/oC,EAE/C9kF,KAAKsnK,aAAexiF,EAAWkQ,SAC/B,IAAIg4E,EAAO,SACPvD,EAAezpK,KAAKwnK,+BAA+BxnK,KAAKsnK,cAC5D,IAAItnK,KAAK4pK,eAAkB5pK,KAAKwsK,eAAgBxsK,KAAK8hE,YAArD,CAGA,IAAI/7C,EAAO,CACP8F,KAAM49I,EAAc3hE,UAAWhjB,EAAY+nF,YAAaJ,EACxDlE,cAAevoK,KAAK8kK,mBAAoB0D,eAAgBxoK,KAAK6kK,oBAC7D8H,gBAAiB3sK,KAAKurK,WAAavrK,KAAK4sK,aAAa5sK,KAAKurK,WAAWv2E,SAAUh1F,KAAKurK,WAAWzjE,gBAAav8F,GAE5GuhK,EAAuB,uBAC3B/mJ,EAAK,GAAK+mJ,GAAwB9sK,KAAKurK,WACvCvrK,KAAK4uB,OAAO3mB,QAAQ,OAAsBjI,KAAKonK,YAAYrhJ,IAAO,SAAUgnJ,GACxE,GAAK,eAAkBA,KAAuD,IAAjCA,EAAkB,GAAKC,GAApE,CAIA,GADA3pK,EAAM4pK,YACFnoF,EAAWkQ,SAAW64B,EAAS74B,SAAU,CACzC,IAAI0N,EAAO5d,EACXA,EAAa+oC,EACbA,EAAWnrB,EAEf,IAAK,IAAI1hG,EAAI8jF,EAAWkQ,SAAUh0F,GAAK6sH,EAAS74B,SAAUh0F,IAAK,CACvDqC,EAAMy/E,kBAAkBikB,kBAAkB/iG,QAAQ,OAAS,GAC3DyY,EAAMzb,IAAM8jF,EAAWkQ,SAAYlQ,EAAoB,UAAI,EAC3DzrE,EAAMrY,IAAM6sH,EAAS74B,SAAY64B,EAAkB,UAAIxqH,EAAMkqK,gBAAgBvsK,KAG7Eyb,EAAMqoE,EAAWgjB,UACjBzuF,EAAMw0G,EAAS/lB,WAEnBV,EAAc,GACd,IAAK,IAAI9vE,EAAI7a,EAAMpD,EAAMoD,EAAMpD,EAAK4J,EAAMxG,EAAMpD,EAAMoD,EAAMpD,EAAKie,GAAKrU,EAAKqU,IACvEm1I,EAAen6I,EAAKm1E,iBAAiBzmG,EAAGs2B,GACnCm1I,IAGLrlE,EAAY/6F,KAAKirB,GACjBj0B,EAAM6pK,oBAAoBT,GAC1BppK,EAAMmqK,aAAaf,IAEvBppK,EAAMmjG,uBAAuBn6F,KAAK,CAAE2oF,SAAUh0F,EAAGomG,YAAaA,IAElE,IAAIqmE,EAAmB,CACnB5hJ,KAAM49I,EAAc3hE,UAAWwlE,EAAST,YAAav6I,EAAKm1E,iBAAiB6lE,EAAQt4E,SAAUs4E,EAAQxlE,WACrGqlE,qBAAsB9pK,EAAMmjG,uBAC5BmmE,gBAAiBtpK,EAAMkoK,WAAaloK,EAAMupK,aAAavpK,EAAMkoK,WAAWv2E,SAAU3xF,EAAMkoK,WAAWzjE,gBAAav8F,GAEhHuhK,EAAuB,uBAC3BW,EAAiB,GAAKX,GAAwBzpK,EAAMkoK,WAC/CloK,EAAMymK,YACPzmK,EAAMygG,iBAAiB2pE,EAAkB,QACzCpqK,EAAM2iK,cAAe,GAEzB3iK,EAAM+pK,gBAAgBC,EAASC,UASvC3I,EAAUzkK,UAAU03H,YAAc,SAAUC,GACxC,GAAK73H,KAAKwsK,aAAV,CAGA,IAAIl6I,EAAOtyB,KAAK4uB,OACZ69I,EAAen6I,EAAKm1E,iBAAiBowB,EAAe,GAAG7iC,SAAU6iC,EAAe,GAAGzwB,YAAY,IACnGpnG,KAAKsnK,aAAezvC,EAAe,GAAG7iC,SACtC,IAAIy0E,EAAezpK,KAAKwnK,+BAA+BxnK,KAAKsnK,cAC5D,IAAItnK,KAAK4pK,eAAkB5pK,KAAKwsK,eAAgBxsK,KAAK8hE,YAArD,CAGA,IAAI4rG,EAAiB,CACjB7hJ,KAAM49I,EAAc3hE,UAAW+vB,EAAe,GAAGzwB,YAAY,GAC7DylE,YAAaJ,EAAclE,cAAevoK,KAAK8kK,mBAC/C0D,eAAgBxoK,KAAK6kK,oBACrB8H,gBAAiB3sK,KAAKurK,WAAavrK,KAAK4sK,aAAa5sK,KAAKurK,WAAWv2E,SAAUh1F,KAAKurK,WAAWzjE,gBAAav8F,GAE5GuhK,EAAuB,uBAC3BY,EAAe,GAAKZ,GAAwB9sK,KAAKurK,WACjDvrK,KAAKiuJ,cAAcyf,EAAgB,QACnC,IAAK,IAAI1sK,EAAI,EAAGiiB,EAAM40G,EAAel3H,OAAQK,EAAIiiB,EAAKjiB,IAClD,IAAK,IAAIs2B,EAAI,EAAGq2I,EAAU91C,EAAelmH,SAAS3Q,EAAE4Q,WAAY,KAAKw1F,YAAYzmG,OAAQ22B,EAAIq2I,EAASr2I,IAClGm1I,EAAen6I,EAAKm1E,iBAAiBowB,EAAelmH,SAAS3Q,EAAE4Q,WAAY,KAAKojF,SAAU6iC,EAAelmH,SAAS3Q,EAAE4Q,WAAY,KAAKw1F,YAAYz1F,SAAS2lB,EAAE1lB,WAAY,MACnK66J,IAGLzsK,KAAKktK,oBAAoBT,GACzBzsK,KAAKwtK,aAAaf,GAClBzsK,KAAK4tK,gBAAgB,CAAE54E,SAAU6iC,EAAelmH,SAAS3Q,EAAE4Q,WAAY,KAAKojF,SACxE8S,UAAW+vB,EAAelmH,SAAS3Q,EAAE4Q,WAAY,KAAKw1F,YAAYz1F,SAAS2lB,EAAE1lB,WAAY,QAGrG5R,KAAKotK,gBAAgB,CAAEp4E,SAAU6iC,EAAe,GAAG7iC,SAAU8S,UAAW+vB,EAAe,GAAGzwB,YAAY,IAAM,CAAEpS,SAAU6iC,EAAe,GAAG7iC,SAAU8S,UAAW+vB,EAAe,GAAGzwB,YAAY,KAC7L,IAAIqmE,EAAmB,CACnB5hJ,KAAM49I,EAAc3hE,UAAW+vB,EAAe,GAAGzwB,YAAY,GAC7DylE,YAAaJ,EAAcU,qBAAsBntK,KAAKwmG,uBACtDmmE,gBAAiB3sK,KAAKurK,WAAavrK,KAAK4sK,aAAa5sK,KAAKurK,WAAWv2E,SAAUh1F,KAAKurK,WAAWzjE,gBAAav8F,GAE5GsiK,EAAkB,uBACtBJ,EAAiB,GAAKI,GAAmB7tK,KAAKurK,WAC9CvrK,KAAK8jG,iBAAiB2pE,EAAkB,WAS5C9I,EAAUzkK,UAAU4tK,oBAAsB,SAAU1mE,GAChD,GAAKpnG,KAAKwsK,aAAV,CAGA,IACIC,EACAhgK,EAFA6lB,EAAOtyB,KAAK4uB,OAGhB5uB,KAAKsnK,aAAelgE,EAAY,GAAGpS,SACnC,IAAIg4E,EAAO,SACPvD,EAAezpK,KAAKwnK,+BAA+BxnK,KAAKsnK,cAC5D,IAAItnK,KAAK4pK,eAAkB5pK,KAAKwsK,eAAgBxsK,KAAK8hE,YAArD,CAIA,IAAIwjD,EADJtlH,KAAK+tK,eAELzoD,EAAShzF,EAAKmvD,gBAAgB2lB,EAAY,GAAGpS,UACzC1iE,EAAKK,cAAcxD,QAAQxuB,OAAS,IACpC2kH,EAAShzF,EAAKizF,oBAAoBvlH,KAAKM,OAAOqhB,cAAcjX,aAAa,cAG7E,IADA,IAAImxB,EAAiB,GACZhuB,EAAK,EAAGmgK,EAAgB5mE,EAAav5F,EAAKmgK,EAAcrtK,OAAQkN,IAAM,CAE3E,IADA,IAAIi6F,EAAYkmE,EAAcngK,GACrB7M,EAAI,EAAGiiB,EAAMjjB,KAAKwmG,uBAAuB7lG,OAAQK,EAAIiiB,EAAKjiB,IAC/D,GAAIhB,KAAKwmG,uBAAuB70F,SAAS3Q,EAAE4Q,WAAY,KAAKojF,WAAa8S,EAAU9S,SAAU,CACzFvoF,EAAQzL,EACR,MAGRyrK,EAAen6I,EAAKm1E,iBAAiBK,EAAU9S,SAAUh1F,KAAKglJ,YAAYl9C,EAAU9S,SAAU8S,EAAUA,YACxG,IAAI5S,EAAM4S,EAAUA,UAChBx1E,EAAKK,cAAcxD,QAAQxuB,OAAS,EACpCk7B,EAAexvB,KAAKi5G,EAAO7jE,MAAMyzC,EAAM5iE,EAAKK,cAAcxD,QAAQxuB,QAAQk7B,gBAG1EA,EAAexvB,KAAKi5G,EAAO7jE,MAAM9vC,SAASujF,EAAItjF,WAAY,KAAKiqB,gBAEnE,IAAI9V,EAAO,CACPtX,QAAQ,EAAOod,KAAM49I,EAAc3hE,UAAWV,EAAY,GAC1DohE,eAAgBxoK,KAAK6kK,oBACrBgI,YAAaJ,EAAclE,cAAevoK,KAAK8kK,mBAC/C6H,gBAAiB3sK,KAAKurK,WAClBj5I,EAAKm1E,iBAAiBznG,KAAKurK,WAAWv2E,SAAUh1F,KAAKurK,WAAWzjE,gBAAav8F,GAEjFsiK,EAAkB,uBACtB9nJ,EAAK,GAAK8nJ,GAAmB7tK,KAAKurK,WAClC,IAAIrB,EAAez9J,GAAS,EAC5B,GAAIy9J,EAAc,CACd,IAAI+D,EAAkBjuK,KAAKwmG,uBAAuB70F,SAASlF,EAAMmF,WAAY,KAAKw1F,YAC9E6mE,EAAgBjqK,QAAQ8jG,EAAUA,YAAc,GAAsC,SAAhC9nG,KAAK8iF,kBAAkBgkB,MAC7E2lE,EAAavnK,UAAUmB,SAAS,kBAAoBomK,EAAa/hK,aAAa,kBAC9E1K,KAAKkuK,aAAa,OAAwB,CAAC,CAAEl5E,SAAU8S,EAAU9S,SAAUoS,YAAa,CAACU,EAAUA,aAAe2hE,EAAc,CAACgD,GAAe5wI,GAChJoyI,EAAgBvhK,OAAOuhK,EAAgBjqK,QAAQ8jG,EAAUA,WAAY,GACtC,IAA3BmmE,EAAgBttK,QAChBX,KAAKwmG,uBAAuB95F,OAAOD,EAAO,GAE9CggK,EAAavnK,UAAUC,OAAO,6BAC9BsnK,EAAa7hK,gBAAgB,iBAC7B5K,KAAKkuK,aAAa,OAAuB,CAAC,CAAEl5E,SAAU8S,EAAU9S,SAAUoS,YAAa,CAACU,EAAUA,aAAe2hE,EAAc,CAACgD,GAAe5wI,KAG/IquI,GAAe,EACflqK,KAAKiuJ,cAAcloI,EAAM,QACzB/lB,KAAK4tK,gBAAgB,CAAE54E,SAAU8S,EAAU9S,SAAU8S,UAAWA,EAAUA,YAC1E9nG,KAAKktK,oBAAoBT,GACzBzsK,KAAKwtK,aAAaf,QAGrB,CAED,GADAzsK,KAAKiuJ,cAAcloI,EAAM,SACpB,eAAkBA,KAA6B,IAApBA,EAAK,GAAKinJ,GACtC,OAEJhtK,KAAKktK,oBAAoBT,EAAc3kE,EAAU9S,SAAU8S,EAAUA,WAEzE,IAAKoiE,EAAc,CACf,IAAIuD,EAAmB,CACnB5hJ,KAAM49I,EAAc3hE,UAAWV,EAAY,GAAIylE,YAAaJ,EAC5DE,gBAAiB3sK,KAAKurK,WAAavrK,KAAK4sK,aAAa5sK,KAAKurK,WAAWv2E,SAAUh1F,KAAKurK,WAAWzjE,gBAC3Fv8F,EAAW4hK,qBAAsBntK,KAAKwmG,wBAE9CinE,EAAiB,GAAKI,GAAmB7tK,KAAKurK,WAC9CvrK,KAAK8jG,iBAAiB2pE,EAAkB,QACxCztK,KAAKgmK,cAAe,EAExBhmK,KAAKotK,gBAAgBtlE,EAAWA,OAGxC68D,EAAUzkK,UAAU8kJ,YAAc,SAAUhwD,EAAUvoF,GAClD,IAAIysB,EAAMl5B,KAAK4uB,OAAO84E,iBAAiBj7F,GACnCg1C,EAAQ,eAAoBzhD,KAAK4uB,OAAQsK,EAAK87D,GAClD,GAAIvzC,EACA,IAAK,IAAI8mD,EAAI,EAAGA,EAAI9mD,EAAM9gD,OAAQ4nG,IAAK,CACnC,IAAIxY,EAAWp+E,SAAS8vC,EAAM9vC,SAAS42F,EAAE32F,WAAY,KAAKlH,aAAa,QAAwB,IAC/F,GAAIqlF,IAAatjF,EACb,OAAO87F,EAInB,OAAQ,GAEZo8D,EAAUzkK,UAAUqtK,gBAAkB,SAAUv4E,GAC5C,IAAIvzC,EAAQzhD,KAAK4uB,OAAOs5E,cAAcv2F,SAASqjF,EAASpjF,WAAY,KAAK8Q,iBAAiB,gBAC1F,OAAO/Q,SAAS8vC,EAAMA,EAAM9gD,OAAS,GAAG+J,aAAa,QAAwB,KAEjFi6J,EAAUzkK,UAAU+sK,UAAY,WAC5BjtK,KAAK03H,sBAETitC,EAAUzkK,UAAUguK,aAAe,SAAU1/J,EAAM44F,EAAav7E,EAAM41B,EAAO5lB,GACzE,IAAIsyI,EAAQ,SACZ,GAAI1sH,GAASA,EAAM9gD,OAAS,EACxB,IAAK,IAAIkN,EAAK,EAAG2xE,EAAU/9B,EAAO5zC,EAAK2xE,EAAQ7+E,OAAQkN,IAAM,CACzD,IAAI8zC,EAAO69B,EAAQ3xE,GACf8zC,GAAQA,EAAKz8C,UAAUmB,SAAS,SAChCrG,KAAKyqK,iBAAiB,eAAQ9oH,EAAM,OAIhD,IAAI57B,EAAO,CACP07B,MAAOA,EAAO51B,KAAMA,EAAMu7E,YAAaA,EAAavrE,eAAgBA,EAAgBptB,QAAQ,GAEhGzO,KAAK4uB,OAAO3mB,QAAQuG,EAAMuX,GAC1B/lB,KAAK4lK,oBAAsB7/I,EAAK,GAAKooJ,IAEzCxJ,EAAUzkK,UAAUgtK,oBAAsB,SAAUT,EAAcz3E,EAAU8S,GACnE,eAAkB9S,IACnBh1F,KAAK4tK,gBAAgB,CAAE54E,SAAUA,EAAU8S,UAAWA,IAE1D2kE,EAAavnK,UAAU4G,IAAI,6BACvB2gK,EAAavnK,UAAUmB,SAAS,SAChCrG,KAAKyqK,iBAAiB,eAAQgC,EAAc,OAAO,GAEvDzsK,KAAKwtK,aAAaf,IAEtB9H,EAAUzkK,UAAUstK,aAAe,SAAU7rH,GACzC3hD,KAAKM,OAASqhD,EACT,eAAkBA,KACnBA,EAAKh3C,aAAa,gBAAiB,QAC9B3K,KAAKu9I,cACNv9I,KAAK+f,MAAM45H,QAAQ,CAAEr5I,OAAQqhD,IAAQ,KAIjDgjH,EAAUzkK,UAAUktK,gBAAkB,SAAUtoF,EAAY+oC,GACxD7tH,KAAKsrK,UAAYxmF,EACjB9kF,KAAKurK,WAAa19C,EAClB7tH,KAAK0sK,eAAiB1sK,KAAKwmG,uBAAuB7lG,SAAU,GAEhEgkK,EAAUzkK,UAAU0tK,gBAAkB,SAAUQ,GAG5C,IAFA,IAAIC,EACA5hK,EACKzL,EAAI,EAAGiiB,EAAMjjB,KAAKwmG,uBAAuB7lG,OAAQK,EAAIiiB,EAAKjiB,IAC/D,GAAIhB,KAAKwmG,uBAAuB70F,SAAS3Q,EAAE4Q,WAAY,KAAKojF,WAAao5E,EAAap5E,SAAU,CAC5Fq5E,GAAa,EACb5hK,EAAQzL,EACR,MAGJqtK,EACIruK,KAAKwmG,uBAAuB70F,SAASlF,EAAMmF,WAAY,KAAKw1F,YAAYpjG,QAAQoqK,EAAatmE,WAAa,GAC1G9nG,KAAKwmG,uBAAuB70F,SAASlF,EAAMmF,WAAY,KAAKw1F,YAAY/6F,KAAK+hK,EAAatmE,WAI9F9nG,KAAKwmG,uBAAuBn6F,KAAK,CAAE2oF,SAAUo5E,EAAap5E,SAAUoS,YAAa,CAACgnE,EAAatmE,cAQvG68D,EAAUzkK,UAAUw3H,mBAAqB,WACrC,GAAI13H,KAAK0sK,eAAgB,CACrB,IAAIp6I,EAAOtyB,KAAK4uB,OACZ0/I,EAAgBtuK,KAAKuuK,0BACrBt9H,EAAUjxC,KAAKwmG,uBACf36E,EAAO,GACP41B,EAAQ,GACR5lB,EAAiB,GACjBugE,EAAkBp8F,KAAKwnK,+BAC3BxnK,KAAK+tK,eACL,IAAK,IAAI/sK,EAAI,EAAGiiB,EAAMguB,EAAQtwC,OAAQK,EAAIiiB,EAAKjiB,IAAK,CAChD6qB,EAAKxf,KAAK+vF,EAAgBnrD,EAAQt/B,SAAS3Q,EAAE4Q,WAAY,KAAKojF,WAE9D,IADA,IAAIswB,EAAStlH,KAAKqnK,UAAUp2H,EAAQt/B,SAAS3Q,EAAE4Q,WAAY,KAAKojF,UACvD19D,EAAI,EAAGk3I,EAAOv9H,EAAQt/B,SAAS3Q,EAAE4Q,WAAY,KAAKw1F,YAAYzmG,OAAQ22B,EAAIk3I,EAAMl3I,IACjFguF,EAAO7jE,OACP5lB,EAAexvB,KAAKi5G,EAAO7jE,MAAMxQ,EAAQt/B,SAAS3Q,EAAE4Q,WAAY,KAC3Dw1F,YAAYz1F,SAAS2lB,EAAE1lB,WAAY,MAAMiqB,gBAElD4lB,EAAMp1C,KAAKimB,EAAKm1E,iBAAiBx2D,EAAQt/B,SAAS3Q,EAAE4Q,WAAY,KAAKojF,SAAU/jD,EAAQt/B,SAAS3Q,EAAE4Q,WAAY,KAAKw1F,YAAYz1F,SAAS2lB,EAAE1lB,WAAY,OAI9J,GADA5R,KAAKkuK,aAAa,OAAwBj9H,EAASplB,EAAM41B,EAAO5lB,IAC/B,IAA7B77B,KAAK4lK,oBACL,OAEJ,IAAS5kK,EAAI,EAAGiiB,EAAMqrJ,EAAc3tK,OAAQK,EAAIiiB,EAAKjiB,IACjDstK,EAAc38J,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAUC,OAAO,6BAC3DmpK,EAAc38J,SAAS3Q,EAAE4Q,WAAY,KAAKhH,gBAAgB,iBAE1D5K,KAAKyuK,YACLzuK,KAAK0uK,gBAAgB,QAEzB1uK,KAAKwmG,uBAAyB,GAC9BxmG,KAAK0sK,gBAAiB,GACjB1sK,KAAK8pK,WAAa9pK,KAAKgmK,cACxBhmK,KAAKkuK,aAAa,OAAuBj9H,EAASplB,EAAM41B,EAAO5lB,KAI3E8oI,EAAUzkK,UAAUquK,wBAA0B,WAI1C,IAHA,IAAIj8I,EAAOtyB,KAAK4uB,OACZuI,EAAO7E,EAAK41E,cACZzmD,EAAQ,GACHzgD,EAAI,EAAGiiB,EAAMkU,EAAKx2B,OAAQK,EAAIiiB,EAAKjiB,IACxCygD,EAAQA,EAAMxS,OAAO,GAAGvhC,MAAMpK,KAAK6zB,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAKuG,uBAAuB,+BAE/F,OAAOspC,GAEXkjH,EAAUzkK,UAAUyyH,iBAAmB,SAAUxlH,GAC7CA,EAAE+F,iBACFlT,KAAK2uK,YACL,IAMI9tH,EANA+tH,EAAS5uK,KAAK4uB,OAAOxrB,QAAQgE,wBAC7BynK,EAAK7uK,KAAKgG,EACV8oK,EAAK9uK,KAAKiG,EACVlC,EAAW,eAAYoJ,GACvB4hK,EAAKhrK,EAASiC,EAAI4oK,EAAO5pK,KACzBgqK,EAAKjrK,EAASkC,EAAI2oK,EAAO7pK,IAEzBzE,EAAS,eAAQ6M,EAAE7M,OAAQ,MAqB/B,GApBAN,KAAK8pK,WAAY,EACZ9pK,KAAKivK,aACD3uK,IACDA,EAAS,eAAQsN,SAASg6H,iBAAiB5nI,KAAK4uB,OAAOxrB,QAAQwN,WAAa,EAAGzD,EAAE26H,SAAU,OAE3F+mC,EAAKE,IACLluH,EAAMkuH,EACNA,EAAKF,EACLA,EAAKhuH,GAELiuH,EAAKE,IACLnuH,EAAMmuH,EACNA,EAAKF,EACLA,EAAKjuH,GAET7gD,KAAKoD,QAAQ2D,MAAM/B,KAAO6pK,EAAK,KAC/B7uK,KAAKoD,QAAQ2D,MAAMhC,IAAM+pK,EAAK,KAC9B9uK,KAAKoD,QAAQ2D,MAAMzB,MAAQypK,EAAKF,EAAK,KACrC7uK,KAAKoD,QAAQ2D,MAAM1B,OAAS2pK,EAAKF,EAAK,MAEtCxuK,IAAW6M,EAAEy5F,UAAYz5F,EAAEy9H,SAAU,CACrC,IAAI51C,EAAWrjF,SAASrR,EAAOoK,aAAa,QAAwB,IACpE,GAAK1K,KAAKivK,WAKL,CACD,IAAItuF,EAAK,gBAAaxzE,EAAE7M,OAAQ,QAC5BqgF,IACA3gF,KAAKkvK,YAAclvK,KAAKmvK,UACxBnvK,KAAKovK,UAAY,gBAAajiK,EAAE7M,OAAQ,QACpC00F,GAAY,GACZh1F,KAAKqvK,gBAAgBliK,EAAG6nF,EAAUrjF,SAASgvE,EAAGj2E,aAAa,QAAwB,WAV3F1K,KAAK+tK,eACL/tK,KAAK83H,kBAAkB93H,KAAKsvK,YAAat6E,GACzCh1F,KAAKomK,mBAAoB,EAa5Bj5J,EAAEy5F,SAAYz5F,EAAEy9H,UAAa5qI,KAAK4uB,OAAO6D,sBAAyBzyB,KAAK4uB,OAAOiJ,yBAC9E73B,KAAK4uB,OAAOqrB,4BAA+Bj6C,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,SAAUX,KAAKivK,YAC7FjvK,KAAKuvK,qBAAqBpiK,EAAGpJ,EAAU/D,KAAK4uB,OAAOorB,eAG3D2qH,EAAUzkK,UAAUqvK,qBAAuB,SAAUpiK,EAAGpJ,EAAUyrK,GAC9D,IAAInsK,EAAQrD,KACRyvK,EAAUD,EAAWpoK,wBACrBqoK,EAAQzqK,MAAQjB,EAASiC,EAAI,GAC7BhG,KAAK0vK,OAASnpK,OAAO63D,aAAY,WAAc/6D,EAAMwuE,kBAAkB29F,EAAW/tJ,kBAAmB,OAAQtU,KAAO,KAE/GsiK,EAAQzqK,KAAOwqK,EAAWjmK,YAAc,IACrB,SAAvBvJ,KAAK4uB,OAAOvpB,OAAoB,iBAAsB,GAAKtB,EAASiC,IACrEhG,KAAK0vK,OAASnpK,OAAO63D,aAAY,WAAc/6D,EAAMwuE,kBAAkB29F,EAAW/tJ,kBAAmB,QAAStU,KAAO,MAErHsiK,EAAQ1qK,KAAOhB,EAASkC,EAAkC,GAA7BjG,KAAK4uB,OAAO2rB,eACzCv6C,KAAK2vK,OAASppK,OAAO63D,aAAY,WAAc/6D,EAAMwuE,kBAAkB29F,EAAW/tJ,kBAAmB,KAAMtU,KAAO,KAE7GsiK,EAAQ1qK,IAAMyqK,EAAWlmK,aAA6C,GAA7BtJ,KAAK4uB,OAAO2rB,gBACzDi1H,EAAW/tJ,kBAAkBo5B,YAAc20H,EAAW/tJ,kBAAkBjY,YACrE,iBAAsB,IAAMzF,EAASkC,IACzCjG,KAAK2vK,OAASppK,OAAO63D,aAAY,WAAc/6D,EAAMwuE,kBAAkB29F,EAAW/tJ,kBAAmB,OAAQtU,KAAO,OAG5Hw3J,EAAUzkK,UAAUyuK,UAAY,WACxB3uK,KAAK0vK,SACLnpK,OAAOy3D,cAAch+D,KAAK0vK,QAC1B1vK,KAAK0vK,OAAS,MAEd1vK,KAAK2vK,SACLppK,OAAOy3D,cAAch+D,KAAK2vK,QAC1B3vK,KAAK2vK,OAAS,MAElB3vK,KAAKu9I,cAAe,GAExBonB,EAAUzkK,UAAU2xE,kBAAoB,SAAU29F,EAAY9qJ,EAAWvX,GACrE,IAAI6nF,GAAY,EACZjF,GAAY,EAKhB,QAJI/vF,KAAKovK,WAAapvK,KAAKurK,cACvBv2E,EAAWh1F,KAAKovK,UAAYz9J,SAAS3R,KAAKovK,UAAU1kK,aAAa,UAAY1K,KAAKurK,WAAWv2E,SAC7FjF,EAAW/vF,KAAKovK,UAAYz9J,SAAS3R,KAAKovK,UAAU1kK,aAAa,kBAAoB1K,KAAKurK,WAAWzjE,WAEjGpjF,GACJ,IAAK,KACD,GAAIvX,GAAK,eAAQA,EAAE7M,OAAQ,oBACvB,OACAN,KAAK4vK,eAAiB5vK,KAAKwmG,uBAAuB7lG,SACT,IAAvCX,KAAKwmG,uBAAuB7lG,QAAgBX,KAAKkvK,cAAgBlvK,KAAKmvK,WACnEnvK,KAAKwmG,uBAAuB7lG,OAAS,GAAKX,KAAKkvK,YAAY9nK,wBAAwBrC,IAAM,KAC9FiwF,EAAWrjF,SAAS3R,KAAKkvK,YAAYxkK,aAAa,WAEtDsqF,GAAY,EACRh1F,KAAK4uB,OAAOwrB,aACZ46C,GAAYh1F,KAAK4uB,OAAOwrB,WAAa,GACzC46C,EAAW,EAAIw6E,EAAWv+J,UAAY,EAAIu+J,EAAWv+J,WAAajR,KAAK4uB,OAAO44E,cAAcxS,GAAUvrF,aACtG,MACJ,IAAK,OACGurF,EAAWh1F,KAAK4uB,OAAOojE,UAAUrxF,OAAS,GAC1Cq0F,GAAY,EACZw6E,EAAWv+J,WAAajR,KAAK4uB,OAAO44E,cAAcxS,GAAUvrF,cAG5D+lK,EAAWv+J,UAAYu+J,EAAWvxH,aAEtC,MACJ,IAAK,OACD,GAAI8xC,EAAW,GAAKiF,GAAY,EAAG,CAC3Bh1F,KAAK4vK,eAAiB5vK,KAAKwmG,uBAAuB7lG,SAChDX,KAAKwmG,uBAAuB,GAAGY,YAAYzmG,OAAS,GAAKX,KAAKkvK,cAAgBlvK,KAAKmvK,WAChFnvK,KAAKwmG,uBAAuB,GAAGY,YAAYzmG,OAAS,GAAKX,KAAKkvK,YAAY9nK,wBAAwBpC,KAAO,KAC9G+qF,EAAWp+E,SAAS3R,KAAKkvK,YAAYxkK,aAAa,mBAEtD,IAAIkvD,EAAU55D,KAAK6vK,aAAaL,EAAY9qJ,EAAWqrE,EAAUiF,GACjEjF,EAAWn2B,EAAUjoD,SAASioD,EAAQlvD,aAAa,mBAAqB,EACxEqlF,EAAW,EAAIy/E,EAAW1+J,WAAa,EAAI0+J,EAAW1+J,YAAc8oD,EAAQpwD,YAEhF,MACJ,IAAK,QACD,GAAIumF,EAAW/vF,KAAK4uB,OAAOO,QAAQxuB,OAAS,EAAG,CACvCi5D,EAAU55D,KAAK6vK,aAAaL,EAAY9qJ,EAAWqrE,EAAUiF,GACjEjF,EAAWn2B,EAAUjoD,SAASioD,EAAQlvD,aAAa,mBAAqB,EACxEqlF,EAAW/vF,KAAK4uB,OAAOO,QAAQxuB,OAAS,EAAI6uK,EAAW1+J,YAAc8oD,EAAQpwD,YAAcgmK,EAAW1+J,WAAa0+J,EAAW30H,YAElI,MAER,GAAIm6C,GAAY,GAAKjF,GAAY,EAAG,CAChC,IAAI+/E,EAAM,CAAExvK,OAAQN,KAAK4uB,OAAO64E,iBAAiBzS,EAAUjF,IAC3D/vF,KAAKovK,UAAYU,EAAIxvK,OACrBN,KAAKu9I,cAAe,EACpBv9I,KAAKqvK,gBAAgBS,EAAK96E,EAAUjF,KAG5C40E,EAAUzkK,UAAU2vK,aAAe,SAAUL,EAAY9qJ,EAAWqrJ,EAAQC,GACxE,IAAIp2G,EAAU55D,KAAK4uB,OAAO64E,iBAAiBuoE,EAAsB,SAAdtrJ,EAAuBqrJ,EAAS,EAAIA,EAAS,GAChG,GAAIn2G,GAAWA,EAAQ10D,UAAUmB,SAAS,UAAW,CACjD,IAAI4pK,EAAcr2G,EAAQxzD,QAAQ,MAAMsc,iBAAiB,2BACrDwtJ,EAAatwK,MAAMyzI,KAAK48B,GAAajsK,QAAQ41D,EAAQ3lB,oBACzD,OAAIi8H,EAAa,GAAKA,EAAaD,EAAYtvK,OAAS,GACpDi5D,EAAUq2G,EAAYC,GAA4B,SAAdxrJ,GAAwB,EAAI,IACzDk1C,IAGP41G,EAAW1+J,WAAa,EACjB,MAGf,OAAO8oD,GAEX+qG,EAAUzkK,UAAUmvK,gBAAkB,SAAUliK,EAAG6nF,EAAU8S,GACpD9nG,KAAK4vK,eAMN5vK,KAAKmwK,gBACLnwK,KAAKowK,mBAAmBjjK,KANxBnN,KAAK03H,qBACL13H,KAAK6nG,mBAAmB,CAAE7S,SAAUh1F,KAAKsvK,YAAaxnE,UAAW9nG,KAAKqwK,iBAAmB,CAAEr7E,SAAUA,EAAU8S,UAAWA,IAC1H9nG,KAAKswK,gBAOb3L,EAAUzkK,UAAUqwK,iBAAmB,SAAU7gF,EAAWz0C,EAAQu1H,GAChE,IAAIlrK,EAAQ21C,EAAOl0C,MAAMsqI,YAAYz/H,WAAW3N,MAAM,KAClDwsK,EAAU,CAAC,GAAI,eAAgB,aAAc,eAAgB,aAAc,gBAAiB,iBAC5FhvH,EAAQ,GAAG/zC,MAAMpK,KAAKosF,EAAUhtE,iBAAiB,8BAAqC+tJ,EAAQ,GAAKD,KACnGv8I,QAAO,SAAU3G,GAAO,MAA6B,KAAtBA,EAAIvmB,MAAMC,WACzC0pK,EAAa,GAAGhjK,MAAMpK,KAAKosF,EAAUhtE,iBAAiB,6CACtDuR,QAAO,SAAU3G,GAAO,MAA6B,KAAtBA,EAAIvmB,MAAMC,WACzC2pK,EAAQ3wK,KAAK4uB,OAAOnpB,UACxB,GAAIg8C,EAAM9gD,OAKN,IAJA,IAAIiwK,EAAcnvH,EAAM,GAAG/2C,aAAa,SACpCmmK,EAAcpvH,EAAM,GAAG/2C,aAAa,iBACpComK,EAAarvH,EAAMA,EAAM9gD,OAAS,GAAG+J,aAAa,SAClDqmK,EAAatvH,EAAMA,EAAM9gD,OAAS,GAAG+J,aAAa,iBAC7C1J,EAAI,EAAGA,EAAIygD,EAAM9gD,OAAQK,IAC1BygD,EAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKlH,aAAa,WAAakmK,IAAiC,IAAjBtrK,EAAM3E,QAAkC,IAAjB2E,EAAM3E,QAC3E,IAA3BgR,SAASrM,EAAM,GAAI,KAAgC,IAAjBA,EAAM3E,QAA2C,IAA3BgR,SAASrM,EAAM,GAAI,MAC9Em8C,EAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,sBAEhD21C,EAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKlH,aAAa,mBAAqBmmK,IAAiC,IAAjBvrK,EAAM3E,QACxE,IAAjB2E,EAAM3E,QAA2C,IAA3BgR,SAASrM,EAAM,GAAI,KAAgC,IAAjBA,EAAM3E,UAAoBgwK,GAAoC,IAA3Bh/J,SAASrM,EAAM,GAAI,KAC9GqrK,GAAoC,IAA3Bh/J,SAASrM,EAAM,GAAI,OAC7Bm8C,EAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI6kK,EAAQ,uBAAyB,uBAEjFlvH,EAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKlH,aAAa,WAAaomK,IAAgC,IAAjBxrK,EAAM3E,QAC/D,IAAjB2E,EAAM3E,QAA2C,IAA3BgR,SAASrM,EAAM,GAAI,KAAgC,IAAjBA,EAAM3E,QAA2C,IAA3BgR,SAASrM,EAAM,GAAI,MAClGm8C,EAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,yBAEhD21C,EAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKlH,aAAa,mBAAqBqmK,IAAgC,IAAjBzrK,EAAM3E,QACvE,IAAjB2E,EAAM3E,QAA2C,IAA3BgR,SAASrM,EAAM,GAAI,KAAgC,IAAjBA,EAAM3E,SAAmBgwK,GAAoC,IAA3Bh/J,SAASrM,EAAM,GAAI,KAC7GqrK,GAAoC,IAA3Bh/J,SAASrM,EAAM,GAAI,MAC7Bm8C,EAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI6kK,EAAQ,sBAAwB,wBAI5F,GAAID,EAAW/vK,OAKX,IAJIiwK,EAAcF,EAAW,GAAGhmK,aAAa,SACzCmmK,EAAcH,EAAW,GAAGhmK,aAAa,iBACzComK,EAAaJ,EAAWA,EAAW/vK,OAAS,GAAG+J,aAAa,SAC5DqmK,EAAaL,EAAWA,EAAW/vK,OAAS,GAAG+J,aAAa,iBACvD1J,EAAI,EAAGA,EAAI0vK,EAAW/vK,OAAQK,IAAK,CACxC,IAAIk0F,EAAMw7E,EAAW/+J,SAAS3Q,EAAE4Q,WAAY,KAAKlH,aAAa,SAC1Dq+F,EAAS2nE,EAAW/+J,SAAS3Q,EAAE4Q,WAAY,KAAKlH,aAAa,iBAC7DwqF,IAAQ07E,IACL5wK,KAAK4uB,OAAOyrB,mBAAmBnuC,cAAc,8CACzC,gBAAawjF,EAAW,eAAkB,gBAAaA,EAAW,cACzEghF,EAAW/+J,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,sBAErDopF,IAAQ47E,IACL9wK,KAAK4uB,OAAOorB,aAAa9tC,cAAc,8CACnC,gBAAawjF,EAAW,qBAAwB,gBAAaA,EAAW,oBAC/EghF,EAAW/+J,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,yBAEzD,IAAIklK,EAAUN,EAAW/+J,SAAS3Q,EAAE4Q,WAAY,KAAK+P,cAAcf,SAASjP,SAASo3F,EAAQ,IAAM,GAC/FA,IAAW8nE,GAAiBG,KAAYA,GAAYA,EAAQ9rK,UAAUmB,SAAS,+BAC/EqqK,EAAW/+J,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI6kK,EAAQ,uBAAyB,uBAE1F,IAAIM,EAAWP,EAAW/+J,SAAS3Q,EAAE4Q,WAAY,KAAK+P,cAAcf,SAASjP,SAASo3F,EAAQ,IAAM,GAChGA,IAAWgoE,GAAgBE,KAAaA,GAAaA,EAAS/rK,UAAUmB,SAAS,+BACjFqqK,EAAW/+J,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI6kK,EAAQ,sBAAwB,0BAKrGhM,EAAUzkK,UAAUgxK,qBAAuB,WACnClxK,KAAKyuK,aACLzuK,KAAKuwK,iBAAiBvwK,KAAK4uB,OAAOgwB,kBAAmB5+C,KAAKyuK,WAAY,KAClEzuK,KAAK4uB,OAAOsrB,gBAAkBl6C,KAAK4uB,OAAO+2D,kBAAoB,QAC9D3lF,KAAKuwK,iBAAiBvwK,KAAK4uB,OAAOgwB,kBAAmB5+C,KAAKmxK,cAAe,KAEzEnxK,KAAK4uB,OAAOwrB,aACZp6C,KAAKuwK,iBAAiBvwK,KAAK4uB,OAAO8kE,iBAAkB1zF,KAAKoxK,aAAc,KACnEpxK,KAAK4uB,OAAOsrB,gBAAkBl6C,KAAK4uB,OAAO+2D,kBAAoB,QAC9D3lF,KAAKuwK,iBAAiBvwK,KAAK4uB,OAAO8kE,iBAAkB1zF,KAAKqxK,cAAe,QAKxF1M,EAAUzkK,UAAUowK,YAAc,WACmB,kBAA7CtwK,KAAK8iF,kBAAkBikB,mBAAyC/mG,KAAKwmG,uBAAuB7lG,SAAWX,KAAK4uB,OAAOmuB,QACnH/8C,KAAK4uB,OAAOxrB,QAAQ8B,UAAU4G,IAAI,mBAC7B9L,KAAKyuK,YACNzuK,KAAKsxK,gBAETtxK,KAAKuxK,kBACDvxK,KAAK4uB,OAAOsrB,iBACZl6C,KAAK0uK,gBAAgB,QAAQ,GAC7B1uK,KAAKkxK,yBAITlxK,KAAK0uK,gBAAgB,SAG7B/J,EAAUzkK,UAAUsxK,WAAa,SAAU7vH,GACvC,IAAIF,EAAQ,GAAG/zC,MAAMpK,KAAKq+C,EAAKhgC,cAAce,iBAAiB,4BAC9D,OAAO++B,EAAMA,EAAM9gD,OAAS,KAAOghD,GAEvCgjH,EAAUzkK,UAAU8+I,UAAY,SAAUr9F,GACtC,IAAIxqB,EAAO,GAAGzpB,MAAMpK,KAAK,eAAQq+C,EAAM,QAAgBj/B,iBAAiB,6BACxE,OAAOi/B,EAAKhgC,gBAAkBwV,EAAKA,EAAKx2B,OAAS,IAErDgkK,EAAUzkK,UAAUuxK,WAAa,SAAU9vH,GACvC,IAAIxqB,EAAO,GAAGzpB,MAAMpK,KAAK,eAAQq+C,EAAM,QAAgBj/B,iBAAiB,6BACxE,OAAOi/B,EAAKhgC,gBAAkBwV,EAAK,IAEvCwtI,EAAUzkK,UAAUwxK,YAAc,SAAU/vH,GACxC,IAAIF,EAAQ,GAAG/zC,MAAMpK,KAAKq+C,EAAKhgC,cAAce,iBAAiB,4BAC9D,OAAO++B,EAAM,KAAOE,GAExBgjH,EAAUzkK,UAAUyxK,WAAa,SAAUjiF,EAAWz0C,EAAQu1H,GAC1D,IAAI/uH,EAAQ,GAAG/zC,MAAMpK,KAAKosF,EAAUv3E,uBAAuB,8BACvD8b,QAAO,SAAU3G,GAAO,MAA6B,KAAtBA,EAAIvmB,MAAMC,WAC7C,GAAIy6C,EAAM9gD,QAAUX,KAAK4uB,OAAOsrB,eAAgB,CAC5C,IAAIu2H,EAAU,CAAC,GAAI,eAAgB,aAAc,eAAgB,aAAc,gBAAiB,iBAChGhvH,EAAQ,GAAG/zC,MAAMpK,KAAKosF,EAAUhtE,iBAAiB,8BAAqC+tJ,EAAQ,GAAKD,GAAU,kBACzGv8I,QAAO,SAAU3G,GAAO,MAA6B,KAAtBA,EAAIvmB,MAAMC,WAEjD,GAAIy6C,EAAM9gD,OAAQ,CACd,IAAI48C,EAAWv9C,KAAK4uB,OAAOsrB,eACvBh4B,EAAQu/B,EAAM,GACdt/B,EAAMs/B,EAAMA,EAAM9gD,OAAS,GAC3BixK,EAAQ1vJ,EAAM9a,wBACdyqK,EAAS1vJ,EAAI/a,wBACb0qK,EAAY5vJ,EAAMk8I,aAAah3J,yBAC/B8a,EAAMk8I,aAAal5J,UAAUmB,SAAS,cAAgB6b,EAAMk8I,aAAal5J,UAAUmB,SAAS,sBAC5FyrK,EAAY5vJ,EAAMk8I,aAAalyJ,cAAc,SAAS9E,yBAE1D,IAAIm7E,EAAahlC,IAAYv9C,KAAKg/I,UAAU78H,IAAoB,MAAXquJ,GAA6B,MAAXA,GAA6B,MAAXA,EAAsB,EAAJ,EACvGuB,EAAY,EACZC,EAAaz0H,IAAwB,MAAXizH,GAA6B,MAAXA,IAAmBxwK,KAAK0xK,YAAYxvJ,GAAS,EAAI,EAC7F+vJ,GAAgD,UAAhCjyK,KAAK4uB,OAAO+2D,iBAA2C,MAAX6qF,GAA6B,MAAXA,KAC1ExwK,KAAK4uB,OAAO+2D,kBAAoB,QAAkC,MAAX6qF,GAA6B,MAAXA,KAC1ExwK,KAAK0xK,YAAYxvJ,GAAa,EAAJ,EAC7BliB,KAAK4uB,OAAOnpB,WACZw1C,EAAOl0C,MAAM6rD,MAAQk/G,EAAUl/G,MAAQg/G,EAAMh/G,MAAQo/G,EAAa,KAClE/2H,EAAOl0C,MAAMzB,MAAQssK,EAAMh/G,MAAQi/G,EAAO7sK,KAAOgtK,EAAa,EAAI,OAGlE/2H,EAAOl0C,MAAM/B,KAAO4sK,EAAM5sK,KAAO8sK,EAAU9sK,KAAOgtK,EAAaC,EAAc,KAC7Eh3H,EAAOl0C,MAAMzB,MAAQusK,EAAOj/G,MAAQg/G,EAAM5sK,KAAOgtK,EAAaC,EAAc,EAAI,MAEpFh3H,EAAOl0C,MAAMhC,IAAM6sK,EAAM7sK,IAAM+sK,EAAU/sK,IAAMgtK,EAAY,KAC3D92H,EAAOl0C,MAAM1B,OAASwsK,EAAO9sK,IAAM6sK,EAAM7sK,IAAM,EAC1C8sK,EAAO9sK,IAAM+sK,EAAU/sK,IAAM8sK,EAAOxsK,QAAUk4C,EAAW,EAAI,IAAOq0H,EAAM7sK,IAAM+sK,EAAU/sK,KAAOw9E,EAAYwvF,EAAY,KAC1HF,EAAOxsK,OAAS0sK,EAAYxvF,GAAahlC,EAAW,EAAI,GAAK,KACjEv9C,KAAKkyK,iBAAmB1B,OAGxBv1H,EAAOl0C,MAAMC,QAAU,QAG/B29J,EAAUzkK,UAAUqxK,gBAAkB,WAClCvxK,KAAKmyK,sBACAnyK,KAAKmvK,WAAcnvK,KAAKyuK,YAAezuK,KAAKwmG,uBAAuB7lG,SAGxEX,KAAKkyK,gBAAkB,GACvBlyK,KAAK0uK,gBAAgB,IACrB1uK,KAAK2xK,WAAW3xK,KAAK4uB,OAAOgwB,kBAAmB5+C,KAAKyuK,WAAY,KAC5DzuK,KAAK4uB,OAAOsrB,iBACZl6C,KAAK2xK,WAAW3xK,KAAK4uB,OAAOgwB,kBAAmB5+C,KAAKoyK,aAAc,KAC9DpyK,KAAK4uB,OAAO+2D,kBAAoB,QAChC3lF,KAAK2xK,WAAW3xK,KAAK4uB,OAAOgwB,kBAAmB5+C,KAAKmxK,cAAe,MAGvEnxK,KAAK4uB,OAAOwrB,aACZp6C,KAAK2xK,WAAW3xK,KAAK4uB,OAAO8kE,iBAAkB1zF,KAAKoxK,aAAc,KAC7DpxK,KAAK4uB,OAAOsrB,iBACZl6C,KAAK2xK,WAAW3xK,KAAK4uB,OAAO8kE,iBAAkB1zF,KAAKqyK,aAAc,KAC7DryK,KAAK4uB,OAAO+2D,kBAAoB,QAChC3lF,KAAK2xK,WAAW3xK,KAAK4uB,OAAO8kE,iBAAkB1zF,KAAKqxK,cAAe,OAI9ErxK,KAAKsyK,aAAatyK,KAAKkyK,mBAG3BvN,EAAUzkK,UAAUqyK,uBAAyB,SAAUp6E,GACnD,IAAI/8C,EAAMp7C,KAAK4uB,OAAOnpB,UACtB,OAAQ0yF,EAAIx3F,QACR,KAAK,EAEGX,KAAKyuK,WAAW1nK,MAAMsqI,YAAcj2F,EAAMp7C,KAAKwmK,aAAexmK,KAAKymK,YACnEzmK,KAAKoyK,aAAarrK,MAAMsqI,YAAcrxI,KAAKu/C,OAC3Cv/C,KAAKoxK,aAAarqK,MAAMsqI,YAAcj2F,EAAMp7C,KAAK0mK,UAAY1mK,KAAK2mK,SAClE3mK,KAAKqyK,aAAatrK,MAAMsqI,YAAcrxI,KAAK+E,IAC3C/E,KAAKmxK,cAAcpqK,MAAMsqI,YAAcj2F,EAAMp7C,KAAKymK,YAAczmK,KAAKwmK,aACrExmK,KAAKqxK,cAActqK,MAAMsqI,YAAcj2F,EAAMp7C,KAAK2mK,SAAW3mK,KAAK0mK,UAEtE,MACJ,KAAK,EAEOvuE,EAAIqB,SAAS,MAAQrB,EAAIqB,SAAS,MAAQrB,EAAIqB,SAAS,MAAQrB,EAAIqB,SAAS,OAC5Ex5F,KAAKoxK,aAAarqK,MAAMsqI,YAAcj2F,EAAMp7C,KAAK0mK,UAAY1mK,KAAK2mK,SAClE3mK,KAAKqyK,aAAatrK,MAAMsqI,YAAcj2F,EAAMp7C,KAAK2mK,SAAW3mK,KAAK0mK,UACjE1mK,KAAKyuK,WAAW1nK,MAAMsqI,YAAcj2F,EAAMp7C,KAAKwmK,aAAexmK,KAAKymK,YACnEzmK,KAAKoyK,aAAarrK,MAAMsqI,YAAcj2F,EAAMp7C,KAAKymK,YAAczmK,KAAKwmK,cAEpEruE,EAAIqB,SAAS,MAAQrB,EAAIqB,SAAS,MAAQrB,EAAIqB,SAAS,MAAQrB,EAAIqB,SAAS,OAC5Ex5F,KAAKoyK,aAAarrK,MAAMsqI,YAAcj2F,EAAMp7C,KAAKwmK,aAAexmK,KAAKymK,YACrEzmK,KAAKqyK,aAAatrK,MAAMsqI,YAAcj2F,EAAMp7C,KAAK0mK,UAAY1mK,KAAK2mK,SAClE3mK,KAAKmxK,cAAcpqK,MAAMsqI,YAAcj2F,EAAMp7C,KAAKymK,YAAczmK,KAAKwmK,aACrExmK,KAAKqxK,cAActqK,MAAMsqI,YAAcj2F,EAAMp7C,KAAK2mK,SAAW3mK,KAAK0mK,WAG1E,MACJ,KAAK,EAEG1mK,KAAKyuK,WAAW1nK,MAAMsqI,YAAcj2F,EAAMp7C,KAAK6mK,iBAAmB7mK,KAAK8mK,gBACvE9mK,KAAKoyK,aAAarrK,MAAMsqI,YAAcrxI,KAAK4mK,WAC3C5mK,KAAKmxK,cAAcpqK,MAAMsqI,YAAcj2F,EAAMp7C,KAAK8mK,gBAAkB9mK,KAAK6mK,iBACrE7mK,KAAK4uB,OAAOwrB,aACZp6C,KAAKoxK,aAAarqK,MAAMsqI,YAAcj2F,EAAMp7C,KAAK6mK,iBAAmB7mK,KAAK8mK,gBACzE9mK,KAAKqyK,aAAatrK,MAAMsqI,YAAcrxI,KAAK4mK,WAC3C5mK,KAAKmxK,cAAcpqK,MAAMsqI,YAAcj2F,EAAMp7C,KAAK8mK,gBAAkB9mK,KAAK6mK,kBAGjF,MACJ,KAAK,EAEO1uE,EAAIqB,SAAS,OACbx5F,KAAKoyK,aAAarrK,MAAMsqI,YAAcj2F,EAAMp7C,KAAK8mK,gBAAkB9mK,KAAK6mK,iBACpE7mK,KAAK4uB,OAAOwrB,aACZp6C,KAAKoxK,aAAarqK,MAAMsqI,YAAcrxI,KAAK+mK,iBAG/C5uE,EAAIqB,SAAS,OACbx5F,KAAKyuK,WAAW1nK,MAAMsqI,YAAcj2F,EAAMp7C,KAAK6mK,iBAAmB7mK,KAAK8mK,gBACvE9mK,KAAKmxK,cAAcpqK,MAAMsqI,YAAcj2F,EAAMp7C,KAAK8mK,gBAAkB9mK,KAAK6mK,iBACrE7mK,KAAK4uB,OAAOwrB,aACZp6C,KAAKqyK,aAAatrK,MAAMsqI,YAAcrxI,KAAK+mK,iBAG/C5uE,EAAIqB,SAAS,OACbx5F,KAAKqyK,aAAatrK,MAAMsqI,YAAcj2F,EAAMp7C,KAAK8mK,gBAAkB9mK,KAAK6mK,iBACxE7mK,KAAKyuK,WAAW1nK,MAAMsqI,YAAcrxI,KAAKgnK,mBAEzC7uE,EAAIqB,SAAS,OACbx5F,KAAKoxK,aAAarqK,MAAMsqI,YAAcj2F,EAAMp7C,KAAK6mK,iBAAmB7mK,KAAK8mK,gBACzE9mK,KAAKqxK,cAActqK,MAAMsqI,YAAcj2F,EAAMp7C,KAAK8mK,gBAAkB9mK,KAAK6mK,iBACzE7mK,KAAKoyK,aAAarrK,MAAMsqI,YAAcrxI,KAAKgnK,mBAE3C7uE,EAAIqB,SAAS,OACbx5F,KAAKoyK,aAAarrK,MAAMsqI,YAAcj2F,EAAMp7C,KAAK6mK,iBAAmB7mK,KAAK8mK,gBACrE9mK,KAAK4uB,OAAOwrB,aACZp6C,KAAKqxK,cAActqK,MAAMsqI,YAAcrxI,KAAK+mK,iBAGhD5uE,EAAIqB,SAAS,OACbx5F,KAAKqyK,aAAatrK,MAAMsqI,YAAcj2F,EAAMp7C,KAAK6mK,iBAAmB7mK,KAAK8mK,gBACzE9mK,KAAKmxK,cAAcpqK,MAAMsqI,YAAcrxI,KAAKgnK,mBAGpD,MACJ,QACIhnK,KAAKyuK,WAAW1nK,MAAMsqI,YAAcrxI,KAAKinK,WACzCjnK,KAAKoyK,aAAarrK,MAAMsqI,YAAcrxI,KAAKinK,WAC3CjnK,KAAKmxK,cAAcpqK,MAAMsqI,YAAcrxI,KAAKinK,WACxCjnK,KAAK4uB,OAAOwrB,aACZp6C,KAAKoxK,aAAarqK,MAAMsqI,YAAcrxI,KAAKinK,WAC3CjnK,KAAKqyK,aAAatrK,MAAMsqI,YAAcrxI,KAAKinK,WAC3CjnK,KAAKqxK,cAActqK,MAAMsqI,YAAcrxI,KAAKinK,YAEhD,QAGZtC,EAAUzkK,UAAUoyK,aAAe,SAAUn6E,GACzC,IAAI/8C,EAAMp7C,KAAK4uB,OAAOnpB,UACtB,GAAIzF,KAAK4uB,OAAO+2D,kBAAoB,OAChC3lF,KAAKuyK,uBAAuBp6E,QAG5B,OAAQA,EAAIx3F,QACR,KAAK,EAEuC,UAAhCX,KAAK4uB,OAAO+2D,iBACZ3lF,KAAKyuK,WAAW1nK,MAAMsqI,YAAcj2F,EAAMp7C,KAAKymK,YAAczmK,KAAKwmK,aAClExmK,KAAKoyK,aAAarrK,MAAMsqI,YAAcj2F,EAAMp7C,KAAKwmK,aAAexmK,KAAKymK,YACrEzmK,KAAKoxK,aAAarqK,MAAMsqI,YAAcj2F,EAAMp7C,KAAK2mK,SAAW3mK,KAAK0mK,UACjE1mK,KAAKqyK,aAAatrK,MAAMsqI,YAAcj2F,EAAMp7C,KAAK0mK,UAAY1mK,KAAK2mK,WAGlE3mK,KAAKyuK,WAAW1nK,MAAMsqI,YAAcj2F,EAAMp7C,KAAKwmK,aAAexmK,KAAKymK,YACnEzmK,KAAKoyK,aAAarrK,MAAMsqI,YAAcj2F,EAAMp7C,KAAKymK,YAAczmK,KAAKwmK,aACpExmK,KAAKoxK,aAAarqK,MAAMsqI,YAAcj2F,EAAMp7C,KAAK0mK,UAAY1mK,KAAK2mK,SAClE3mK,KAAKqyK,aAAatrK,MAAMsqI,YAAcj2F,EAAMp7C,KAAK2mK,SAAW3mK,KAAK0mK,WAGzE,MACJ,KAAK,EAEuC,UAAhC1mK,KAAK4uB,OAAO+2D,iBACZ3lF,KAAKyuK,WAAW1nK,MAAMsqI,YAAcl5C,EAAIqB,SAAS,KAAOp+C,EAAMp7C,KAAK8mK,gBAC7D9mK,KAAK6mK,iBAAmB7mK,KAAKgnK,kBACnChnK,KAAKoyK,aAAarrK,MAAMsqI,YAAcl5C,EAAIqB,SAAS,KAAOp+C,EAAMp7C,KAAK6mK,iBAC/D7mK,KAAK8mK,gBAAkB9mK,KAAKgnK,kBAC9BhnK,KAAK4uB,OAAOwrB,aACZp6C,KAAKoxK,aAAarqK,MAAMsqI,YAAcl5C,EAAIqB,SAAS,KAAOx5F,KAAK+mK,eACzD3rH,EAAMp7C,KAAK8mK,gBAAkB9mK,KAAK6mK,iBACxC7mK,KAAKqyK,aAAatrK,MAAMsqI,YAAcl5C,EAAIqB,SAAS,KAAOx5F,KAAK+mK,eACzD3rH,EAAMp7C,KAAK6mK,iBAAmB7mK,KAAK8mK,mBAI7C9mK,KAAKyuK,WAAW1nK,MAAMsqI,YAAcl5C,EAAIqB,SAAS,KAAOp+C,EAAMp7C,KAAK6mK,iBAC7D7mK,KAAK8mK,gBAAkB9mK,KAAKgnK,kBAC9BhnK,KAAK4uB,OAAOsrB,iBACZl6C,KAAKoyK,aAAarrK,MAAMsqI,YAAcl5C,EAAIqB,SAAS,KAAOp+C,EAAMp7C,KAAK8mK,gBAC/D9mK,KAAK6mK,iBAAmB7mK,KAAKgnK,mBAEnChnK,KAAK4uB,OAAOwrB,aACZp6C,KAAKoxK,aAAarqK,MAAMsqI,YAAcl5C,EAAIqB,SAAS,KAAOx5F,KAAK+mK,eACzD3rH,EAAMp7C,KAAK6mK,iBAAmB7mK,KAAK8mK,gBACrC9mK,KAAK4uB,OAAOsrB,iBACZl6C,KAAKqyK,aAAatrK,MAAMsqI,YAAcl5C,EAAIqB,SAAS,KAAOx5F,KAAK+mK,eACzD3rH,EAAMp7C,KAAK8mK,gBAAkB9mK,KAAK6mK,oBAKxD,MACJ,QACI7mK,KAAKyuK,WAAW1nK,MAAMsqI,YAAcrxI,KAAKinK,WACrCjnK,KAAK4uB,OAAOsrB,iBACZl6C,KAAKoyK,aAAarrK,MAAMsqI,YAAcrxI,KAAKinK,YAE3CjnK,KAAK4uB,OAAOwrB,aACZp6C,KAAKoxK,aAAarqK,MAAMsqI,YAAcrxI,KAAKinK,WACvCjnK,KAAK4uB,OAAOsrB,iBACZl6C,KAAKqyK,aAAatrK,MAAMsqI,YAAcrxI,KAAKinK,aAGnD,QAIhBtC,EAAUzkK,UAAUoxK,cAAgB,WAC3BtxK,KAAKyuK,aACNzuK,KAAKyuK,WAAazuK,KAAK4uB,OAAOgwB,kBAAkBj9B,cAAcjd,YAAY,eAAc,MAAO,CAC3FF,UAAW,UAAW8G,GAAItL,KAAK4uB,OAAOxrB,QAAQkI,GAAK,OACnD4D,OAAQ,kCAERlP,KAAK4uB,OAAOsrB,iBACZl6C,KAAKoyK,aAAepyK,KAAK4uB,OAAOgwB,kBAAkBj9B,cAAcjd,YAAY,eAAc,MAAO,CAC7FF,UAAW,UAAW8G,GAAItL,KAAK4uB,OAAOxrB,QAAQkI,GAAK,SACnD4D,OAAQ,mCAERlP,KAAK4uB,OAAO+2D,kBAAoB,SAChC3lF,KAAKmxK,cAAgBnxK,KAAK4uB,OAAOgwB,kBAAkBj9B,cAAcjd,YAAY,eAAc,MAAO,CAC9FF,UAAW,UAAW8G,GAAItL,KAAK4uB,OAAOxrB,QAAQkI,GAAK,UACnD4D,OAAQ,qCAIhBlP,KAAK4uB,OAAOwrB,aACZp6C,KAAKoxK,aAAepxK,KAAK4uB,OAAO8kE,iBAAiB/xE,cAAcjd,YAAY,eAAc,MAAO,CAAEF,UAAW,UAAW8G,GAAItL,KAAK4uB,OAAOxrB,QAAQkI,GAAK,SAAU4D,OAAQ,mBAEvKlP,KAAK4uB,OAAOwrB,YAAcp6C,KAAK4uB,OAAOsrB,iBACtCl6C,KAAKqyK,aAAeryK,KAAK4uB,OAAO8kE,iBAAiB/xE,cAAcjd,YAAY,eAAc,MAAO,CAAEF,UAAW,UAAW8G,GAAItL,KAAK4uB,OAAOxrB,QAAQkI,GAAK,SAAU4D,OAAQ,kBACnKlP,KAAK4uB,OAAO+2D,kBAAoB,SAChC3lF,KAAKqxK,cAAgBrxK,KAAK4uB,OAAO8kE,iBAAiB/xE,cAAcjd,YAAY,eAAc,MAAO,CAAEF,UAAW,UAAW8G,GAAItL,KAAK4uB,OAAOxrB,QAAQkI,GAAK,UAAW4D,OAAQ,sBAKzLy1J,EAAUzkK,UAAUwuK,gBAAkB,SAAU1nK,EAASsiE,GACrD,GAAItpE,KAAKyuK,WAAY,CAEjB,GADAzuK,KAAKyuK,WAAW1nK,MAAMC,QAAUA,EAC5BhH,KAAK4uB,OAAOsrB,eAAgB,CAC5B,IAAIw1C,EAAY1vF,KAAK4uB,OAAOgwB,kBAC5B,gBAAY8wC,EAAUhtE,iBAAiB,uBAAwB,sBAC/D,gBAAYgtE,EAAUhtE,iBAAiB,wBAAyB,uBAChE,gBAAYgtE,EAAUhtE,iBAAiB,yBAA0B,wBACjE,gBAAYgtE,EAAUhtE,iBAAiB,0BAA2B,yBAC7D4mD,IACDtpE,KAAKoyK,aAAarrK,MAAMC,QAAUA,GAElChH,KAAK4uB,OAAO+2D,kBAAoB,SAChC3lF,KAAKmxK,cAAcpqK,MAAMC,QAAUA,GAG3C,GAAIhH,KAAK4uB,OAAOwrB,WAAY,CACpBs1C,EAAY1vF,KAAK4uB,OAAO8kE,iBAC5B,gBAAYhE,EAAUhtE,iBAAiB,uBAAwB,sBAC/D,gBAAYgtE,EAAUhtE,iBAAiB,wBAAyB,uBAChE,gBAAYgtE,EAAUhtE,iBAAiB,yBAA0B,wBACjE,gBAAYgtE,EAAUhtE,iBAAiB,0BAA2B,yBAClE1iB,KAAKoxK,aAAarqK,MAAMC,QAAUA,EAElChH,KAAK4uB,OAAOwrB,YAAcp6C,KAAK4uB,OAAOsrB,iBACjCovB,IACDtpE,KAAKqyK,aAAatrK,MAAMC,QAAUA,GAElChH,KAAK4uB,OAAO+2D,kBAAoB,SAChC3lF,KAAKqxK,cAActqK,MAAMC,QAAUA,MAKnD29J,EAAUzkK,UAAUsyK,cAAgB,WAC3BxyK,KAAKyyK,aACNzyK,KAAK0yK,kBAET1yK,KAAK2yK,qBAEThO,EAAUzkK,UAAUyyK,kBAAoB,WACpC,GAAK3yK,KAAKmvK,WAAcnvK,KAAK4yK,UAA7B,CAGA,IAAIhB,EAAQ5xK,KAAKkvK,YAAY9nK,wBACzByqK,EAAS7xK,KAAKovK,UAAUhoK,wBACxBrC,EAAM8sK,EAAO9sK,IAAM6sK,EAAM7sK,IAAM,EAAI,EAAI,EACvC8tK,EAAehB,EAAO9sK,IAAM6sK,EAAM7sK,KAAO,IAAM,gBAAa/E,KAAKkvK,YAAa,SAC9E,gBAAalvK,KAAKkvK,YAAa,qBAAuBlvK,KAAKyxK,WAAWzxK,KAAKkvK,aAAe,IAAM,EAChG4D,GAAiB,gBAAa9yK,KAAKkvK,YAAa,SAChD,gBAAalvK,KAAKkvK,YAAa,UAA4BlvK,KAAK0xK,YAAY1xK,KAAKkvK,aAAe,EAAI,EACpG3sF,EAAYviF,KAAKg/I,UAAUh/I,KAAKovK,aAAe,gBAAapvK,KAAKovK,UAAW,SAC5E,gBAAapvK,KAAKovK,UAAW,oBAAsB,EAAI,EACvD0C,EAAY9xK,KAAKkvK,YAAY9Q,aAAah3J,wBAC1C2rK,EAAa/yK,KAAK4uB,OAAOxrB,QAAQgE,wBACjC4rK,EAAOhzK,KAAKkvK,YAAY9Q,aAAaz8I,cAAc1Q,UACnDytC,EAAQ1+C,KAAKkvK,YAAY9Q,aAAaz8I,cAAc7Q,WACpDG,EAAY+hK,EAAOhzK,KAAKkvK,YAAYn+J,UACpCD,EAAa4tC,EAAQ1+C,KAAKkvK,YAAYt+J,WACtCqiK,EAAcjzK,KAAK4uB,OAAOxrB,QAAQkG,aAAe,iBACjDtJ,KAAK4uB,OAAO4D,cACZygJ,GAAejzK,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,YAAYzC,cAE7DzJ,KAAK4uB,OAAOwI,WAAWz2B,SACvBsyK,GAAejzK,KAAK4uB,OAAO2sB,mBAAmB9xC,cAElD,IAAIm4J,EAAa5hK,KAAK4uB,OAAOxrB,QAAQmG,aAAsC,SAAvBvJ,KAAK4uB,OAAOvpB,OAAoB,iBAAsB,GAC1G4L,EAAYA,EAAY,EAAI9H,KAAKo3D,MAAMtvD,GAAa,EAAI,EACxDH,EAAaA,EAAa,EAAIA,EAAa,EAC3C,IAAI9L,EAAO4sK,EAAM5sK,KAAO+tK,EAAW/tK,KACnC,GAAKhF,KAAK4uB,OAAOnpB,UAYZ,CACD,IAAIytK,EAAgB,gBAAalzK,KAAKkvK,YAAa,SAC/C,gBAAalvK,KAAKkvK,YAAa,QAA2B0C,EAAMh/G,MAChE5yD,KAAKkvK,YAAY9Q,aAAaz8I,cAAcva,wBAAwB9B,MACpEytK,EAAW/tK,KAAO,EACtBhF,KAAK4yK,UAAU7rK,MAAM6rD,MAAQmgH,EAAWngH,MAAQi/G,EAAOj/G,MAAQ,EAAIi/G,EAAOvsK,MAAQ,KAClFtF,KAAK4yK,UAAU7rK,MAAMzB,MAAQs8J,GAAcjwJ,SAAS3R,KAAK4yK,UAAU7rK,MAAM6rD,MAAO,IAAM,MAAQ,MAC9F5yD,KAAKmzK,WAAWpsK,MAAM6rD,MAAQmgH,EAAWngH,MAAQg/G,EAAMh/G,MAAQkgH,EAAgBI,EAAe,EAAI,KAClGlzK,KAAKozK,SAASrsK,MAAM/B,KAAO6sK,EAAO7sK,KAAO+tK,EAAW/tK,KAAO,GAAM,KACjEhF,KAAKozK,SAASrsK,MAAMzB,MAAQqM,SAAS3R,KAAK4yK,UAAU7rK,MAAM6rD,MAAO,IAAMjhD,SAAS3R,KAAKmzK,WAAWpsK,MAAM6rD,MAAO,IACvGkgH,EAAgB,EAAI,KACtBnhK,SAAS3R,KAAKozK,SAASrsK,MAAM/B,KAAM,IAAM,IACzChF,KAAKozK,SAASrsK,MAAMzB,MAAQqM,SAAS3R,KAAKozK,SAASrsK,MAAMzB,MAAO,IAAMqM,SAAS3R,KAAKozK,SAASrsK,MAAM/B,KAAM,IAAM,KAC/GhF,KAAKozK,SAASrsK,MAAM/B,KAAO,YAlB/B,GANAhF,KAAK4yK,UAAU7rK,MAAM/B,KAAOA,EAAO8tK,EAAgBhiK,EAAa,EAAI,KACpE9Q,KAAKmzK,WAAWpsK,MAAM/B,KAAO6sK,EAAO7sK,KAAO+tK,EAAW/tK,KAAO,EAAI6sK,EAAOvsK,MAAQ,KAChFtF,KAAKmzK,WAAWpsK,MAAMzB,MAAQs8J,GAAcjwJ,SAAS3R,KAAKmzK,WAAWpsK,MAAM/B,KAAM,IAAM,MAAQ,MAC/FhF,KAAKozK,SAASrsK,MAAM/B,KAAOA,EAAO8L,EAAa,GAAM,KACrD9Q,KAAKozK,SAASrsK,MAAMzB,MAAQqM,SAAS3R,KAAKmzK,WAAWpsK,MAAM/B,KAAM,IAAM2M,SAAS3R,KAAK4yK,UAAU7rK,MAAM/B,KAAM,IACrG8tK,EAAgB,EAAI,KACtBlR,GAAejwJ,SAAS3R,KAAKozK,SAASrsK,MAAMzB,MAAO,IAAMqM,SAAS3R,KAAKozK,SAASrsK,MAAM/B,KAAM,IAAM,CAClG,IAAIquK,EAAc1hK,SAAS3R,KAAKozK,SAASrsK,MAAMzB,MAAO,IAAMqM,SAAS3R,KAAKozK,SAASrsK,MAAM/B,KAAM,IAAO48J,EACtG5hK,KAAKozK,SAASrsK,MAAMzB,MAAQqM,SAAS3R,KAAKozK,SAASrsK,MAAMzB,MAAO,IAAM+tK,EAAa,KA6B3F,GAVArzK,KAAK4yK,UAAU7rK,MAAMhC,IAAM6sK,EAAM7sK,IAAMguK,EAAWhuK,IAAM8tK,EAAe5hK,EAAY,KACnFjR,KAAK4yK,UAAU7rK,MAAM1B,OAASwsK,EAAO9sK,IAAM6sK,EAAM7sK,IAAM,EAClD8sK,EAAO9sK,IAAM+sK,EAAU/sK,IAAM8sK,EAAOxsK,OAAS,GAAMusK,EAAM7sK,IAAM+sK,EAAU/sK,KAAO8tK,EAAetwF,EAAYtxE,EAAY,KACxH4gK,EAAOxsK,OAASwtK,EAAetwF,EAAYtxE,EAAY,KAC3DjR,KAAKmzK,WAAWpsK,MAAMhC,IAAM/E,KAAK4yK,UAAU7rK,MAAMhC,IACjD/E,KAAKmzK,WAAWpsK,MAAM1B,OAASsM,SAAS3R,KAAK4yK,UAAU7rK,MAAM1B,OAAQ,IAAM,KAC3ErF,KAAKozK,SAASrsK,MAAMhC,IAAM/E,KAAKmzK,WAAWpsK,MAAMhC,IAChD/E,KAAKyyK,YAAY1rK,MAAM/B,KAAOhF,KAAKozK,SAASrsK,MAAM/B,KAClDhF,KAAKyyK,YAAY1rK,MAAMhC,IAAM+B,WAAW9G,KAAK4yK,UAAU7rK,MAAMhC,KAAO+B,WAAW9G,KAAK4yK,UAAU7rK,MAAM1B,QAAUN,EAAM,EAAI,KACxH/E,KAAKyyK,YAAY1rK,MAAMzB,MAAQ2tK,GAAensK,WAAW9G,KAAKyyK,YAAY1rK,MAAMhC,KAAO,MAAQ/E,KAAKozK,SAASrsK,MAAMzB,MAC/G2tK,GAAgBthK,SAAS3R,KAAK4yK,UAAU7rK,MAAM1B,OAAQ,IAAMsM,SAAS3R,KAAK4yK,UAAU7rK,MAAMhC,IAAK,IAAM,CACrG,IAAIuuK,EAAY3hK,SAAS3R,KAAK4yK,UAAU7rK,MAAM1B,OAAQ,IAAMsM,SAAS3R,KAAK4yK,UAAU7rK,MAAMhC,IAAK,IAAMkuK,EACrGjzK,KAAK4yK,UAAU7rK,MAAM1B,OAASsM,SAAS3R,KAAK4yK,UAAU7rK,MAAM1B,OAAQ,IAAMiuK,EAAY,KACtFtzK,KAAKmzK,WAAWpsK,MAAM1B,OAASsM,SAAS3R,KAAK4yK,UAAU7rK,MAAM1B,OAAQ,IAAM,QAGnFs/J,EAAUzkK,UAAUwyK,gBAAkB,WAC7B1yK,KAAK4yK,YACN5yK,KAAK4yK,UAAY5yK,KAAK4uB,OAAOxrB,QAAQsB,YAAY,eAAc,MAAO,CAAEF,UAAW,YAAa8G,GAAItL,KAAK4uB,OAAOxrB,QAAQkI,GAAK,aAAc4D,OAAQ,iBACnJlP,KAAKmzK,WAAanzK,KAAK4uB,OAAOxrB,QAAQsB,YAAY,eAAc,MAAO,CAAEF,UAAW,YAAa8G,GAAItL,KAAK4uB,OAAOxrB,QAAQkI,GAAK,cAAe4D,OAAQ,iBACrJlP,KAAKyyK,YAAczyK,KAAK4uB,OAAOxrB,QAAQsB,YAAY,eAAc,MAAO,CAAEF,UAAW,YAAa8G,GAAItL,KAAK4uB,OAAOxrB,QAAQkI,GAAK,eAAgB4D,OAAQ,kBACvJlP,KAAKozK,SAAWpzK,KAAK4uB,OAAOxrB,QAAQsB,YAAY,eAAc,MAAO,CAAEF,UAAW,YAAa8G,GAAItL,KAAK4uB,OAAOxrB,QAAQkI,GAAK,YAAa4D,OAAQ,oBAGzJy1J,EAAUzkK,UAAUiwK,cAAgB,WAC5BnwK,KAAK4yK,YACL5yK,KAAK4yK,UAAU7rK,MAAMC,QAAU,GAC/BhH,KAAKmzK,WAAWpsK,MAAMC,QAAU,GAChChH,KAAKyyK,YAAY1rK,MAAMC,QAAU,GACjChH,KAAKozK,SAASrsK,MAAMC,QAAU,KAGtC29J,EAAUzkK,UAAUqzK,cAAgB,WAC5BvzK,KAAK4yK,YACL5yK,KAAK4yK,UAAU7rK,MAAMC,QAAU,OAC/BhH,KAAKmzK,WAAWpsK,MAAMC,QAAU,OAChChH,KAAKyyK,YAAY1rK,MAAMC,QAAU,OACjChH,KAAKozK,SAASrsK,MAAMC,QAAU,SAGtC29J,EAAUzkK,UAAUszE,YAAc,SAAU+zB,EAAMD,EAAM3lD,GACpD,IAAI57B,EAAO/lB,KAAKwzK,qBAAqBjsE,EAAMD,EAAM3lD,GACjD,IAAK57B,EAAKtX,OAAQ,CACd,IAAIyqB,EAAMl5B,KAAK4uB,OAAO84E,iBAAiBJ,GACnCtnG,KAAK4uB,OAAO+4E,YAAchmD,IACT,WAAbzoB,EAAI1qB,KACJxO,KAAK4uB,OAAO+4E,WAAWC,WAAWL,EAAMruE,EAAIrH,MAAO/qB,WAAWif,EAAKtN,QAGnEzY,KAAK4uB,OAAO+4E,WAAWC,WAAWL,EAAMruE,EAAIrH,MAAO9L,EAAKtN,UAKxEksJ,EAAUzkK,UAAUszK,qBAAuB,SAAUx+E,EAAUjF,EAAUpuC,GACrE,IAAIzoB,EAAMl5B,KAAK4uB,OAAO84E,iBAAiB3X,GACnChqE,EAAO,CACPwJ,OAAQ2J,EACRzgB,MAAOkpC,EAAKlZ,WAGhB,OADAzoC,KAAK4uB,OAAO3mB,QAAQ,OAAuB8d,GACpCA,GAGX4+I,EAAUzkK,UAAUuzK,iBAAmB,SAAUz+E,EAAU0+E,GACvD,IAAIlgH,EAAM,6BACN/R,EAAQ,GAAG/zC,MAAMpK,KAAKtD,KAAK4uB,OAAOs5E,cAAcv2F,SAASqjF,EAASpjF,WAAY,KAAK8Q,iBAAiB8wC,IACxG,OAAO/R,GAEXkjH,EAAUzkK,UAAUkwK,mBAAqB,SAAUjjK,EAAGwmK,GAClD,IAAIC,EAAcjiK,SAAS,gBAAa3R,KAAKkvK,YAAa,QAAcxkK,aAAa,QAAwB,IACzGgpK,EAAe/hK,SAAS3R,KAAKkvK,YAAYxkK,aAAa,QAAwB,IAC9EmpK,EAAYliK,SAAS,gBAAa3R,KAAKovK,UAAW,QAAc1kK,aAAa,QAAwB,IACrGopK,EAAaniK,SAAS3R,KAAKovK,UAAU1kK,aAAa,QAAwB,IAC1EqpK,EAAS/zK,KAAKwmG,uBAAuB7lG,OAAS,EAC9CqzK,EAASh0K,KAAKwmG,uBAAuB,GAAGY,YAAYzmG,OAAS,EACjE,QAAQ,GACJ,KAAMgzK,GAAW3zK,KAAKovK,UAAUlqK,UAAUmB,SAAS,gCAC7C,gBAAa8G,EAAE7M,OAAQ,QACzBN,KAAKkvK,YAAclvK,KAAK4uB,OAAO64E,iBAAiBmsE,EAAaF,GAC7D1zK,KAAKovK,UAAYpvK,KAAK4uB,OAAO64E,iBAAiBmsE,EAAcG,EAAQL,EAAeM,GACnFh0K,KAAKwyK,gBACL,MACJ,KAAKxyK,KAAKumK,qBAAuBmN,EAAeM,EAASF,GACrDA,EAAaJ,EAAeM,EAAS,EAAIH,EAAYD,EAAcG,GAChED,EAAaJ,EAAeM,EAAS,EAAIJ,EAAcC,EAI1D,GAHA7zK,KAAKovK,UAAYpvK,KAAK4uB,OAAO64E,iBAAiBmsE,EAAcG,EAAQD,GACpED,EAAYliK,SAAS,gBAAa3R,KAAKovK,UAAW,QAAc1kK,aAAa,QAAwB,IACrGopK,EAAaniK,SAAS3R,KAAKovK,UAAU1kK,aAAa,QAAwB,IACrEipK,EAGA,CAED,IADA,IAAItvF,EAAU1yE,SAAS3R,KAAKi0K,QAAQvpK,aAAa,QAAwB,IAChE1J,EAAI4yK,EAAa5yK,GAAK6yK,EAAW7yK,IAGtC,IAFA,IAAIygD,EAAQzhD,KAAKyzK,iBAAiBzyK,EAAG0yK,GACjCjzK,EAAI,EACC62B,EAAI+sD,EAAU,EAAG/sD,GAAKw8I,EAAYx8I,IACnC72B,EAAIuzK,IACJvzK,EAAI,GAERT,KAAKwzE,YAAYxyE,EAAGs2B,EAAGmqB,EAAM9vC,SAASlR,EAAEmR,WAAY,MACpDnR,IAGRT,KAAK6nG,mBAAmB,CAAE7S,SAAU4+E,EAAa9rE,UAAW9nG,KAAKk0K,gBAAkB,CAAEl/E,SAAU6+E,EAAW/rE,UAAWgsE,SAfrH9zK,KAAKwyK,gBAiBT,MACJ,KAAKxyK,KAAKumK,qBAAuBmN,EAAeI,GAC5CJ,EAAeI,EAAa,EAAID,EAAYD,EAAcG,GAC1DL,EAAeI,EAAa,EAAIF,EAAcC,EAG9C,GAFA7zK,KAAKkvK,YAAclvK,KAAK4uB,OAAO64E,iBAAiBmsE,EAAaE,GAC7D9zK,KAAKovK,UAAYpvK,KAAKi0K,QACjBN,EAGA,CACD,IAAS3yK,EAAI4yK,EAAa5yK,GAAK4yK,EAAcG,EAAQ/yK,IAAK,CAClDygD,EAAQzhD,KAAKyzK,iBAAiBzyK,EAAG0yK,GACrCjyH,EAAM6oH,UAEN,IADI7pK,EAAI,EACC62B,EAAIt3B,KAAKk0K,eAAiB,EAAG58I,GAAKw8I,EAAYx8I,IAC/C72B,EAAIuzK,IACJvzK,EAAI,GAERT,KAAKwzE,YAAYxyE,EAAGs2B,EAAGmqB,EAAM9vC,SAASlR,EAAEmR,WAAY,MACpDnR,IAGRT,KAAK6nG,mBAAmB,CAAE7S,SAAU4+E,EAAa9rE,UAAWgsE,GAAc,CAAE9+E,SAAU4+E,EAAcG,EAAQjsE,UAAW9nG,KAAKk0K,eAAiBF,SAf7Ih0K,KAAKwyK,gBAiBT,MACJ,KAAKoB,EAAcC,EAGf,GAFA7zK,KAAKkvK,YAAclvK,KAAK4uB,OAAO64E,iBAAiBosE,EAAWH,GAC3D1zK,KAAKovK,UAAYpvK,KAAKi0K,QACjBN,EAGA,CACD,IAAIQ,EAAQxiK,SAAS3R,KAAKi0K,QAAQtyJ,cAAcjX,aAAa,QAAwB,IACjF9J,EAAIuzK,EACR,IAASnzK,EAAI4yK,EAAc,EAAG5yK,GAAK6yK,EAAW7yK,IAAK,CAC3CJ,IAAMZ,KAAK8kF,WAAa,IACxBlkF,EAAIuzK,GAEJ1yH,EAAQzhD,KAAKyzK,iBAAiB7yK,EAAG8yK,GACjCjzK,EAAI,EACRG,IACA,IAAS02B,EAAIt3B,KAAKk0K,eAAgB58I,GAAKt3B,KAAKk0K,eAAiBF,EAAQ18I,IACjEt3B,KAAKwzE,YAAYxyE,EAAGs2B,EAAGmqB,EAAM9vC,SAASlR,EAAEmR,WAAY,MACpDnR,IAGRT,KAAK6nG,mBAAmB,CAAE7S,SAAU6+E,EAAW/rE,UAAW4rE,EAAeM,GAAU,CAAEh/E,SAAU4+E,EAAcG,EAAQjsE,UAAW4rE,SAjBhI1zK,KAAKwyK,gBAmBT,MACJ,QAEI,GADAxyK,KAAKovK,UAAYpvK,KAAK4uB,OAAO64E,iBAAiBosE,EAAWH,EAAeM,GACnEL,EAGA,CAGD,IAFIQ,EAAQxiK,SAAS3R,KAAKi0K,QAAQtyJ,cAAcjX,aAAa,QAAwB,IACjF9J,EAAIZ,KAAK8kF,WACJ9jF,EAAImzK,EAAQ,EAAGnzK,GAAK6yK,EAAW7yK,IAAK,CACrCJ,IAAMuzK,EAAQ,IACdvzK,EAAIZ,KAAK8kF,YAETrjC,EAAQzhD,KAAKyzK,iBAAiB7yK,EAAG8yK,GACrC9yK,IACIH,EAAI,EACR,IADA,IACS8nG,EAAIvoG,KAAKk0K,eAAgB3rE,GAAKvoG,KAAKk0K,eAAiBF,EAAQzrE,IACjEvoG,KAAKwzE,YAAYxyE,EAAGunG,EAAG9mD,EAAM9vC,SAASlR,EAAEmR,WAAY,MACpDnR,IAGRT,KAAK6nG,mBAAmB,CAAE7S,SAAUm/E,EAAQJ,EAAQjsE,UAAW4rE,GAAgB,CAAE1+E,SAAU6+E,EAAW/rE,UAAW4rE,EAAeM,SAjBhIh0K,KAAKwyK,gBAmBT,QAGZ7N,EAAUzkK,UAAU2d,eAAiB,SAAU1Q,GAC3CnN,KAAK2uK,YACL/gK,SAAS6B,KAAKvK,UAAUC,OAAO,uBAC3BnF,KAAKoD,UAAY,eAAkBpD,KAAKoD,QAAQue,gBAChD,gBAAO3hB,KAAKoD,SAEZpD,KAAK8pK,WAAoD,IAAvC9pK,KAAKwmG,uBAAuB7lG,QAAsE,IAAtDX,KAAKwmG,uBAAuB,GAAGY,YAAYzmG,OACzGX,KAAKo0K,UAAY,gBAAajnK,EAAE7M,OAAQ,QAGxCN,KAAKo0K,UAAY,KAErB,IAAIC,EAAe,eAAQlnK,EAAE7M,OAAQ,cACrC,GAAIN,KAAK8pK,YAAc9pK,KAAK4vK,eAAiD,SAAhC5vK,KAAK8iF,kBAAkBgkB,MAChEutE,GAAgBA,EAAanvK,UAAUmB,SAAS,QAAmB,CACnE,IAAI2uF,EAAWrjF,SAAS0iK,EAAa1yJ,cAAcjX,aAAa,QAAwB,IACpFo9F,EAAYn2F,SAAS0iK,EAAa3pK,aAAa,QAAwB,IAC3E1K,KAAK8pK,WAAY,EACjB9pK,KAAK03H,qBACL13H,KAAK6nG,mBAAmB,CAAE7S,SAAUh1F,KAAKsvK,YAAaxnE,UAAW9nG,KAAKqwK,iBAAmB,CAAEr7E,SAAUA,EAAU8S,UAAWA,IAI9H,GAFA9nG,KAAK8pK,WAAY,EACjB9pK,KAAKygH,yBACDzgH,KAAK4vK,cAAe,CACpB5vK,KAAKu9I,cAAe,EACpB,IAAIuhB,EAAW,gBAAa3xJ,EAAE7M,OAAQ,QACtCN,KAAKovK,UAAYtQ,IAAsB9+J,KAAKi0K,UAAYj0K,KAAKovK,UAAYpvK,KAAKkvK,YAAclvK,KAAKovK,WACjGpvK,KAAKkvK,YAAclvK,KAAKmvK,UACxBnvK,KAAKs0K,wBACLt0K,KAAKowK,mBAAmBjjK,GAAG,GAC3BnN,KAAKygH,yBACLzgH,KAAKuzK,gBACLvzK,KAAKuxK,kBACDvxK,KAAK4uB,OAAOsrB,iBACZl6C,KAAK0uK,gBAAgB,QAAQ,GAC7B1uK,KAAKkxK,wBAETlxK,KAAK4vK,eAAgB,EACjB5vK,KAAK4uB,OAAOwI,WAAWz2B,OAAS,GAChCX,KAAK4uB,OAAOhV,OAAO,QAA8B,IAErD5Z,KAAKu9I,cAAe,EAExB,OAAap4I,OAAOnF,KAAK4uB,OAAOorB,aAAc,YAAah6C,KAAK2yH,kBAC5D3yH,KAAK4uB,OAAOwrB,YACZ,OAAaj1C,OAAOnF,KAAK4uB,OAAOyrB,mBAAoB,YAAar6C,KAAK2yH,kBAE1E,OAAaxtH,OAAOyI,SAAU,UAAW5N,KAAK6d,iBAElD8mJ,EAAUzkK,UAAU6tK,aAAe,WAC3B/tK,KAAKu0K,WACLv0K,KAAKu0K,SAASxtK,MAAMC,QAAU,SAOtC29J,EAAUzkK,UAAUugH,uBAAyB,WACzC,GAAIzgH,KAAK4uB,OAAO+wF,iBAAmB3/G,KAAK4uB,OAAOmuB,QAC3C/8C,KAAK8iF,kBAAkBikB,kBAAkB/iG,QAAQ,QAAU,IAAMhE,KAAKkoK,cAAgBloK,KAAK4pK,eACxF5pK,KAAKwmG,uBAAuB7lG,OAAQ,CACvC,IAAI8L,EAAQkF,SAAS3R,KAAKM,OAAOoK,aAAa,QAAwB,IAClE8pK,EAAS7iK,SAAS3R,KAAKM,OAAOoK,aAAa,SAAU,IACrDsqF,EAAWh1F,KAAKwmG,uBAAuBxmG,KAAKwmG,uBAAuB7lG,OAAS,GAAGq0F,SAC/EvzC,EAAQzhD,KAAKyzK,iBAAiBz+E,EAAUvoF,GAAOwnB,QAAO,SAAU3G,GAAO,MAA6B,KAAtBA,EAAIvmB,MAAMC,WACxFkyB,EAAMl5B,KAAK4uB,OAAO84E,iBAAiBj7F,GAEnCgoK,GADcv7I,EAAI0e,qBACJ48H,EAASx0K,KAAK4uB,OAAOwrB,YACnCs6H,EAAgB10K,KAAK4uB,OAAO+2D,kBAAoB,QAC7CzsD,EAAI0e,uBAAyB,OAC/B,gBAAO,IAAM53C,KAAK4uB,OAAOxrB,QAAQkI,GAAK,YAAa,gBAAatL,KAAKM,OAAQ,WAC1E,gBAAO,IAAMN,KAAK4uB,OAAOxrB,QAAQkI,GAAK,YAAatL,KAAK4uB,OAAOxrB,UAC/D,gBAAO,IAAMpD,KAAK4uB,OAAOxrB,QAAQkI,GAAK,YAAatL,KAAK4uB,OAAOxrB,SAAS+B,SAE5EnF,KAAKu0K,SAAW,eAAc,MAAO,CAAE/vK,UAAW,aAAc8G,GAAItL,KAAK4uB,OAAOxrB,QAAQkI,GAAK,cAC7FtL,KAAKu0K,SAASxtK,MAAMC,QAAU,QAC1BhH,KAAKM,OAAO4E,UAAUmB,SAAS,iBAAmBrG,KAAKM,OAAO4E,UAAUmB,SAAS,kBACjFrG,KAAKM,OAAO4E,UAAUmB,SAAS,mBAC/BrG,KAAKu0K,SAASrvK,UAAU4G,IAAI,qBAE3B2oK,EAaGz0K,KAAK4uB,OAAO8kE,iBAAiB/xE,cAAcjd,YAAY1E,KAAKu0K,UAR5Dv0K,KAAK4uB,OAAOgwB,kBAAkBj9B,cAAcjd,YAAY1E,KAAKu0K,UAWjEG,IACID,EACAz0K,KAAK4uB,OAAO8kE,iBAAiB/xE,cAAcjd,YAAY1E,KAAKu0K,UAG5Dv0K,KAAK4uB,OAAOgwB,kBAAkBj9B,cAAcjd,YAAY1E,KAAKu0K,YAIzE,IAAI5yH,EAAOF,EAAMA,EAAM9gD,OAAS,GAChC,GAAIghD,GAAQA,EAAKy8G,aAAc,CAC3B,IAAIuW,EAAahzH,EAAKv6C,wBAClB0qK,EAAYnwH,EAAKy8G,aAAah3J,yBAC9Bu6C,EAAKy8G,aAAal5J,UAAUmB,SAAS,cAAgBs7C,EAAKy8G,aAAal5J,UAAUmB,SAAS,sBAC1FyrK,EAAYnwH,EAAKy8G,aAAalyJ,cAAc,SAAS9E,yBAEzD,IAAIwtK,EAAW50K,KAAKwxK,WAAW7vH,GAAQ,EAAI,EACvC4gC,EAAYviF,KAAKg/I,UAAUr9F,GAAQ,EAAI,EACtC3hD,KAAK4uB,OAAOnpB,UAIbzF,KAAKu0K,SAASxtK,MAAM6rD,MAAQk/G,EAAUl/G,MAAQ+hH,EAAW/hH,MAAQ+hH,EAAWrvK,MAAQ,EAAIsvK,EAAW,KAHnG50K,KAAKu0K,SAASxtK,MAAM/B,KAAO2vK,EAAW3vK,KAAO8sK,EAAU9sK,KAAO2vK,EAAWrvK,MAAQ,EAAIsvK,EAAW,KAKpG50K,KAAKu0K,SAASxtK,MAAMhC,IAAM4vK,EAAW5vK,IAAM+sK,EAAU/sK,IAAM4vK,EAAWtvK,OAAS,EAAIk9E,EAAY,KAEnGviF,KAAKu0K,SAASxtK,MAAMC,QAAU,QAG9BhH,KAAK+tK,gBAGbpJ,EAAUzkK,UAAU+yE,iBAAmB,SAAU9lE,GAC7CnN,KAAKmrK,YAAch+J,EAAEopF,OACrB,IAEInS,EAFA9jF,EAAS6M,EAAE7M,OACXgyB,EAAOtyB,KAAK4uB,OAEZixB,EAAc,gBAAav/C,EAAQ,UACvC,KAAIu/C,GAAeA,EAAYv0C,KAAOgnB,EAAKlvB,QAAQkI,IAAM,gBAAahL,EAAQ,UAA4BN,KAAK4uB,OAAOwrB,YAClH,gBAAa95C,EAAQ,sBAAwB,gBAAaA,EAAQ,SADtE,CAOA,IAHI6M,EAAEy9H,UAAYz9H,EAAEy5F,UAChBz5F,EAAE+F,iBAEF,gBAAa5S,EAAQ,UAAsB6M,EAAEy9H,WAAaz9H,EAAEy5F,QAAS,CACrE,GAAIt0E,EAAKwwD,kBAAkBikB,kBAAkB/iG,QAAQ,QAAU,IAAMhE,KAAKkoK,cAAgBloK,KAAK4pK,cAC3F5pK,KAAKivK,YAAa,EAClB7qF,GAAS,OAER,GAAI9xD,EAAK6uB,sBAAwB7uB,EAAKyqB,SAAW/8C,KAAK4uB,OAAOk0D,kBAAkB68D,aAAc,CAE9F,GADA3/I,KAAKomK,mBAAoB,GACpBpmK,KAAKkoK,aAAeloK,KAAK4pK,eAAiB,eAAQtpK,EAAQ,MAAM4E,UAAUmB,SAAS,yBAEpF,YADArG,KAAK8pK,WAAY,GAGrB1lF,GAAS,EACTpkF,KAAKoD,QAAUpD,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,mBAC7D8tB,EAAK0nB,aAAat1C,YAAY1E,KAAKoD,SAEnCghF,GACApkF,KAAK60K,WAAW1nK,GAAG,GAG3BnN,KAAKmyK,uBACD7xK,EAAO4E,UAAUmB,SAAS,eAAiB/F,EAAO4E,UAAUmB,SAAS,cACrErG,KAAKivK,YAAa,EAClBjvK,KAAK4vK,eAAgB,EACrB5vK,KAAK60K,WAAW1nK,MAGxBw3J,EAAUzkK,UAAUiyK,oBAAsB,WACtC,IAAI1wH,EAAQ,GAAG/zC,MAAMpK,KAAKtD,KAAK4uB,OAAOxrB,QAAQ+U,uBAAuB,8BACrEnY,KAAKmvK,UAAY1tH,EAAM,GACvBzhD,KAAKi0K,QAAUxyH,EAAMA,EAAM9gD,OAAS,GAChCX,KAAKmvK,YACLnvK,KAAK8kF,WAAanzE,SAAS3R,KAAKmvK,UAAUxtJ,cAAcjX,aAAa,QAAwB,IAC7F1K,KAAKk0K,eAAiBviK,SAAS,gBAAa3R,KAAKmvK,UAAW,QAAkBzkK,aAAa,QAAwB,MAG3Hi6J,EAAUzkK,UAAUo0K,sBAAwB,WACpCt0K,KAAKmvK,YACLnvK,KAAK8kF,WAAanzE,SAAS3R,KAAKmvK,UAAUxtJ,cAAcjX,aAAa,QAAwB,IAC7F1K,KAAKk0K,eAAiBviK,SAAS,gBAAa3R,KAAKmvK,UAAW,QAAkBzkK,aAAa,QAAwB,MAG3Hi6J,EAAUzkK,UAAU20K,WAAa,SAAU1nK,EAAGupE,GAC1C,IAAIpkD,EAAOtyB,KAAK4uB,OAChB,GAAI8nD,EAAU,CACV,IAAI4I,EAAK,eAAQnyE,EAAE7M,OAAQ,MAC3BN,KAAKsvK,YAAc39J,SAAS2tE,EAAG50E,aAAa,QAAwB,IACpE1K,KAAKqwK,gBAAkB1+J,SAAS,gBAAaxE,EAAE7M,OAAQ,QAAkBoK,aAAa,QAAwB,IAElHkD,SAAS6B,KAAKvK,UAAU4G,IAAI,uBAC5B,IAAI8iK,EAASt8I,EAAKlvB,QAAQgE,wBACtB0tK,EAAU,eAAY3nK,GAC1BnN,KAAKgG,EAAI8uK,EAAQ9uK,EAAI4oK,EAAO5pK,KAC5BhF,KAAKiG,EAAI6uK,EAAQ7uK,EAAI2oK,EAAO7pK,IAC5B,OAAa+G,IAAIwmB,EAAK0nB,aAAc,YAAah6C,KAAK2yH,iBAAkB3yH,MACpEA,KAAK4uB,OAAOwrB,YACZ,OAAatuC,IAAIwmB,EAAK+nB,mBAAoB,YAAar6C,KAAK2yH,iBAAkB3yH,MAElF,OAAa8L,IAAI8B,SAAU,UAAW5N,KAAK6d,eAAgB7d,OAE/D2kK,EAAUzkK,UAAU60K,qBAAuB,SAAU5nK,GACjD,IAAI6nK,EAAmBh1K,KAAK4uB,OAAOiJ,yBAA6C,mBAAlB1qB,EAAE4gB,YAIhE,GAHsB,kBAAlB5gB,EAAE4gB,aAAoC/tB,KAAK4uB,OAAOwgF,oBAAuB4lE,GACzEh1K,KAAKslG,kBAEc,kBAAlBn4F,EAAE4gB,aAAmCinJ,IAAqBh1K,KAAK4uB,OAAOwgF,oBAAsBpvG,KAAKikF,oBAC/FjkF,KAAKylK,sBAAuB,CAC/B,IAAIngD,EAAStlH,KAAK4uB,OAAO6yD,gBAAgBxtD,QAAO,SAAU9mB,GAAK,OAAOA,EAAEs1E,gBACpE4Q,EAAU,GACdrzF,KAAKmlK,iBAAmB,GACxBnlK,KAAKulK,oBAAsB,GAC3B,IAAK,IAAIvkK,EAAI,EAAGA,EAAIskH,EAAO3kH,OAAQK,IAAK,CACpCqyF,EAAQhnF,KAAKi5G,EAAO3zG,SAAS3Q,EAAE4Q,WAAY,KAAKnF,OAChD,IAAIwoK,EAAUj1K,KAAK0qK,WAAW1qK,KAAK+8I,WAAYz3B,EAAO3zG,SAAS3Q,EAAE4Q,WAAY,KAAKia,MAClF7rB,KAAKmlK,iBAAiB,GAAK8P,IAAW,EACtCj1K,KAAKulK,oBAAoBl5J,KAAKi5G,EAAO3zG,SAAS3Q,EAAE4Q,WAAY,KAAKia,MAErE7rB,KAAK4pH,mBAAqBv2B,IAOlCsxE,EAAUzkK,UAAU24C,iBAAmB,WAC/B74C,KAAK4uB,OAAOE,cAGhB9uB,KAAKmkG,YAAc,CAAC,CAAEz1F,MAAO,QAAiBiqF,QAAS34F,KAAKskK,mBACxD,CAAE51J,MAAO,QAAmBiqF,QAAS34F,KAAKmnK,qBAC1C,CAAEz4J,MAAO,QAA6BiqF,QAAS34F,KAAK8jG,kBACpD,CAAEp1F,MAAO,OAA8BiqF,QAAS34F,KAAK8jG,kBACrD,CAAEp1F,MAAO,QAA4BiqF,QAAS34F,KAAKiV,mBACnD,CAAEvG,MAAO,OAAoBiqF,QAAS34F,KAAK0hJ,eAC3C,CAAEhzI,MAAO,OAAyBiqF,QAAS34F,KAAK+0K,sBAChD,CAAErmK,MAAO,QAA8BiqF,QAAS34F,KAAKk1K,uBACrD,CAAExmK,MAAO,QAAqBiqF,QAAS34F,KAAKimG,YAC5C,CAAEv3F,MAAO,QAAoBiqF,QAAS34F,KAAKm1K,aAC3C,CAAEzmK,MAAO,QAAwBiqF,QAAS34F,KAAKwgH,eAC/C,CAAE9xG,MAAO,QAAgBiqF,QAAS34F,KAAKwS,UAC3C,eAAuBxS,KAAK4uB,OAAQ5uB,KAAKmkG,aAAa,EAAMnkG,MAC5DA,KAAKyoE,oBAAsBzoE,KAAK4lE,YAAYhgE,KAAK5F,MACjDA,KAAKkuJ,uBAAyBluJ,KAAKmuJ,eAAevoJ,KAAK5F,MACvDA,KAAK4uB,OAAOiqB,iBAAiB,OAAoB74C,KAAKyoE,qBACtDzoE,KAAK4uB,OAAOiqB,iBAAiB,OAAuB74C,KAAKkuJ,wBACzDluJ,KAAKo1K,8BAMTzQ,EAAUzkK,UAAU07C,oBAAsB,WAClC57C,KAAK4uB,OAAOE,cAGhB,OAAa3pB,OAAOyI,SAAU,UAAW5N,KAAK6d,gBAC9C,OAAa1Y,OAAOnF,KAAK4uB,OAAOorB,aAAc,YAAah6C,KAAKizE,kBAChE,OAAa9tE,OAAOnF,KAAK4uB,OAAOyrB,mBAAoB,YAAar6C,KAAKizE,kBACtE,eAAuBjzE,KAAK4uB,OAAQ5uB,KAAKmkG,aAAa,GACtDnkG,KAAK4uB,OAAOgtB,oBAAoB,OAAoB57C,KAAKyoE,qBACzDzoE,KAAK4uB,OAAOgtB,oBAAoB,OAAuB57C,KAAKkuJ,wBAC5DluJ,KAAKq1K,iCAET1Q,EAAUzkK,UAAU0T,WAAa,WAC7B5T,KAAKs1K,SAAqD,IAA3ChvE,UAAUpqD,UAAUl4C,QAAQ,UACvChE,KAAKs1K,SACL,OAAaxpK,IAAI9L,KAAK4uB,OAAOxrB,QAAS,UAAWpD,KAAKkmG,eAAgBlmG,MACtE,OAAa8L,IAAI9L,KAAK4uB,OAAOxrB,QAAS,QAASpD,KAAKy0C,aAAcz0C,OAG7DA,KAAK4uB,OAAOi7B,eACb,OAAa/9C,IAAI9L,KAAK4uB,OAAOxrB,QAAS,UAAWpD,KAAKkmG,eAAgBlmG,OAIlF2kK,EAAUzkK,UAAUszC,aAAe,WAC3BxzC,KAAKs1K,SACL,OAAanwK,OAAOnF,KAAK4uB,OAAOxrB,QAAS,UAAWpD,KAAKkmG,gBACzD,OAAa/gG,OAAOnF,KAAK4uB,OAAOxrB,QAAS,QAASpD,KAAKy0C,eAGlDz0C,KAAK4uB,OAAOi7B,eACb,OAAa1kD,OAAOnF,KAAK4uB,OAAOxrB,QAAS,UAAWpD,KAAKkmG,iBAIrEy+D,EAAUzkK,UAAUg1K,sBAAwB,WACnCl1K,KAAK4uB,OAAOwgF,oBACbpvG,KAAKslG,kBAGbq/D,EAAUzkK,UAAUsgH,cAAgB,WAChCxgH,KAAKirK,oBAETtG,EAAUzkK,UAAUi1K,YAAc,SAAUhoK,GACxC,IAAK,IAAInM,EAAI,EAAGA,EAAImM,EAAEylB,QAAQjyB,OAAQK,IAAK,CACvC,IAAIi0K,EAAUj1K,KAAK0qK,WAAW1qK,KAAK+8I,WAAY5vI,EAAEylB,QAAQjhB,SAAS3Q,EAAE4Q,WAAY,aACxE5R,KAAKmlK,iBAAiB,GAAK8P,KACjCj1K,KAAKm8F,kBAEXn8F,KAAKirK,oBAETtG,EAAUzkK,UAAUq1K,iBAAmB,SAAUpoK,GACvB,kBAAlBA,EAAE4gB,aAAoC/tB,KAAK4uB,OAAOwgF,oBAClDpvG,KAAKslG,kBAGbq/D,EAAUzkK,UAAUs1K,eAAiB,WACjC,OAAOx1K,KAAK4uB,OAAOyrB,mBAAmBnuC,cAAc,sBAExDy4J,EAAUzkK,UAAUokK,kBAAoB,SAAUn3J,GAC1CA,EAAE0M,SAAW7Z,KAAK8U,iBAAmB3H,EAAEgjC,SACvCnwC,KAAK2T,SACL3T,KAAKy1K,0BAIb9Q,EAAUzkK,UAAUyT,OAAS,SAAUxG,GACnC,OAAarB,IAAI9L,KAAK4uB,OAAOorB,aAAc,YAAah6C,KAAKizE,iBAAkBjzE,MAC/E,OAAa8L,IAAI9L,KAAK4uB,OAAOyrB,mBAAoB,YAAar6C,KAAKizE,iBAAkBjzE,OAEzF2kK,EAAUzkK,UAAU+U,kBAAoB,SAAU9H,GAC9C,GAAIA,EAAE0M,SAAW7Z,KAAK8U,gBAAtB,CAGA,IAAIwd,EAAOtyB,KAAK4uB,OACX,eAAkBzhB,EAAE6N,WAAWxM,QACI,WAAhCxO,KAAK8iF,kBAAkBt0E,MACvB8jB,EAAKlvB,QAAQwH,gBAAgB,wBACzB5K,KAAKwmG,uBAAuB7lG,OAAS,IACrCX,KAAK03H,qBACL13H,KAAKsrK,eAAY//J,GAEjBvL,KAAK4pH,mBAAmBjpH,OAAS,IACjCX,KAAK23H,oBACL33H,KAAK0oK,kBAAen9J,GAEpBvL,KAAK8pH,uBAAuBnpH,OAAS,IACrCX,KAAKqrK,uBACLrrK,KAAK01K,kBAAenqK,GAExBvL,KAAKglK,wBAAyB,EAC9BhlK,KAAKunK,aAEgC,aAAhCvnK,KAAK8iF,kBAAkBt0E,MAC5B8jB,EAAKlvB,QAAQuH,aAAa,uBAAwB,SAGrD,eAAkBwC,EAAE6N,WAAW8rF,OAC/B,eAAkB35F,EAAE6N,WAAW+rF,qBAChC/mG,KAAKslG,iBACLtlG,KAAK0oK,kBAAen9J,EACpBvL,KAAKsrK,eAAY//J,EACjBvL,KAAK01K,kBAAenqK,GAExBvL,KAAK8lK,aAAc,EACnB9lK,KAAK21K,2BACL31K,KAAK8lK,aAAc,EACd9lK,KAAK4uB,OAAOoxD,qBACbhgF,KAAKy1K,wBAET,IAAIz2D,EAAiBh/G,KAAK4uB,OAAO8H,aAAazC,QAAO,SAAUiF,GAAO,MAAoB,aAAbA,EAAI1qB,QAC7EwwG,EAAer+G,SACf2xB,EAAK0tD,sBAAgE,oBAAxChgF,KAAK8iF,kBAAkBm8B,eAExDj/G,KAAKswK,gBAET3L,EAAUzkK,UAAUqnK,UAAY,WACxBvnK,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,gBAAgBiM,uBAAuB,eAAexX,SACxFX,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,gBAAgBnF,MAAMC,QAAU,SAG1E29J,EAAUzkK,UAAU+lG,WAAa,WACxBjmG,KAAK4pH,mBAAmBjpH,SACzBX,KAAK4uB,OAAOyF,IAAI,QAAqBr0B,KAAKimG,YAC1CjmG,KAAK4iH,UAAU5iH,KAAK4uB,OAAO8+E,oBAGnCi3D,EAAUzkK,UAAUy1K,yBAA2B,WAC3C,IAAIC,EAAO51K,KAAK4uB,OAChBgnJ,EAAKvhJ,IAAI,QAAqBr0B,KAAK21K,0BACnC,IAAI32D,EAAiB42D,EAAKl/I,aAAazC,QAAO,SAAUiF,GAAO,MAAoB,aAAbA,EAAI1qB,QACtEwwG,EAAer+G,OAAS,IACxBi1K,EAAK51F,qBAAsB,EAC3BhgF,KAAK61K,SAAW72D,EAAe,GAAGntF,MAClC7xB,KAAKm8F,kBAAoBn8F,KAAK4uB,OAAOkJ,aAAaqkE,kBAC9C,eAAkBn8F,KAAKm8F,qBACvBn8F,KAAKm8F,kBAAoBn8F,KAAKwnK,+BAA+B7mK,QAE7DX,KAAK4pK,eACLgM,EAAK9yF,kBAAkBt0E,KAAO,WAC9BonK,EAAK7tK,YAGL/H,KAAKy1K,yBAGRG,EAAK51F,qBAAwBhgF,KAAK8lK,cACnC9lK,KAAK61K,SAAW,KAChB71K,KAAKy1K,0BAGb9Q,EAAUzkK,UAAUu1K,sBAAwB,WACxC,IAAIG,EAAO51K,KAAK4uB,OACZ5uB,KAAK4uB,OAAOk0D,kBAAkBC,kBAAoB/iF,KAAK4uB,OAAOkN,0BAA0Bn7B,OAAS,GACjGi1K,EAAKxmE,oBAAqB,EAC1BpvG,KAAK4qK,gCAEA5qK,KAAK4uB,OAAOkN,0BAA0Bn7B,OAAS,GACpDi1K,EAAKxmE,oBAAqB,EAC1BpvG,KAAK4qK,iCAGLgL,EAAKxmE,oBAAqB,EAC1BpvG,KAAKmlK,iBAAmB,KAGhCR,EAAUzkK,UAAU0qK,6BAA+B,WAC/C,IAAIgL,EAAO51K,KAAK4uB,OAEhB,GADA5uB,KAAK+8I,WAAa/8I,KAAK4uB,OAAOkN,0BAA0B,IACnD85I,EAAKnjJ,sBAAwBzyB,KAAK61K,WAC9BD,EAAKxmE,oBAAoE,IAA9C3vG,OAAO2V,KAAKpV,KAAKmlK,kBAAkBxkK,SAC9Di1K,EAAKxmE,oBAAqB,CAC/B,IAAIvjF,EAAO7rB,KAAK4uB,OAAOiB,gBACnBP,GAAQ,IAAI,QAAQ6D,MAAMnzB,KAAK61K,SAAU,SAAS,GACjDvmJ,EAAM2B,SACP3B,EAAM2B,OAASjxB,KAAK4uB,OAAOU,MAAM2B,QAErC,IAAI6E,EAAcjK,EAAK+J,QAAQ,GAAItG,GAE/BwmJ,EAAU91K,KACdA,KAAK4uB,OAAOwuE,cACZtnE,EAAYzF,MAAK,SAAUljB,GACvB2oK,EAAQrlC,YAAYtjI,EAAE6jB,QACtB8kJ,EAAQC,0BACRD,EAAQlnJ,OAAOyxE,mBAI3BskE,EAAUzkK,UAAUuwI,YAAc,SAAUiC,GAExC,IADA,IAAI7mH,EAAQ7rB,KAAK4uB,OAAOiB,gBAAgByJ,aAAe,eAAkBo5G,EAAI,WAAcA,EAAI,UAAYA,EAClG1xI,EAAI,EAAGA,EAAI6qB,EAAKlrB,OAAQK,IAAK,CAClC,IAAIi0K,EAAUj1K,KAAK0qK,WAAW1qK,KAAK+8I,WAAYlxH,EAAKla,SAAS3Q,EAAE4Q,WAAY,MACvE,eAAkB5R,KAAKmlK,iBAAiB,GAAK8P,KAAappJ,EAAKla,SAAS3Q,EAAE4Q,WAAY,KAAK5R,KAAK61K,YAChG71K,KAAKmlK,iBAAiB,GAAK8P,GAAWppJ,EAAKla,SAAS3Q,EAAE4Q,WAAY,KAAK5R,KAAK61K,WAGpF71K,KAAKulK,oBAAsB15I,GAE/B84I,EAAUzkK,UAAU81K,gBAAkB,SAAUxmJ,GAC5C,GAAMxvB,KAAK4uB,OAAOiB,gBAAgByJ,aAAgB,eAAkBt5B,KAAK4uB,OAAOQ,aACzEpvB,KAAK4uB,OAAOQ,WAAW4B,OAiC1B,GAAIxB,EAAO,CACP,IAAIymJ,EAAoBx2K,OAAO2V,KAAKpV,KAAKmlK,kBACrC+Q,EAAyBz2K,OAAO2V,KAAKpV,KAAKolK,oBAC9C,IAAKplK,KAAKsmK,gBAGN,IAFA,IAAI9gD,EAAWxlH,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,QAAUX,KAAK4uB,OAAOwgF,mBACnEpvG,KAAK4uB,OAAOwtE,gBAAgB,WAAap8F,KAAK4uB,OAAOwtE,gBAChDjhE,EAAK,EAAGg7I,EAAY3wD,EAASrqF,EAAKg7I,EAAUx1K,OAAQw6B,IAAM,CAC3DtP,EAAOsqJ,EAAUh7I,GACrB,IAAK,eAAkBtP,EAAK7rB,KAAK+8I,aAAc,CAC3C,IAAIx8I,EAAMsrB,EAAK7rB,KAAK+8I,YAAYnrI,YACQ,IAApCqkK,EAAkBjyK,QAAQzD,KAAwD,IAAzC21K,EAAuBlyK,QAAQzD,KACxEP,KAAKmlK,iBAAiBt5I,EAAK7rB,KAAK+8I,cAAe,UAO/D/8I,KAAKmlK,iBAAmB,GACxBnlK,KAAKolK,mBAAqB,GAC1BplK,KAAKqmK,oBAAqB,OApD9B,GAAI72I,EACA,GAAIxvB,KAAKikF,qBAAuBjkF,KAAK4uB,OAAO6D,sBAAwBzyB,KAAK4uB,OAAOiJ,yBAE5E,IADA,IAAIytF,EAAStlH,KAAK4uB,OAAO6yD,gBAAgBxtD,QAAO,SAAU9mB,GAAK,OAAOA,EAAEs1E,gBAC/D50E,EAAK,EAAGu3I,EAAW9/B,EAAQz3G,EAAKu3I,EAASzkJ,OAAQkN,IAAM,CAC5D,IAAIwpB,EAAM+tH,EAASv3I,GACnB7N,KAAKmlK,iBAAiBnlK,KAAK0qK,WAAW1qK,KAAK+8I,WAAY1lH,EAAIxL,QAAS,MAGvE,CACD,IAAI49I,EAAezpK,KAAKikF,mBAAqBjkF,KAAK4uB,OAAOu0D,uBAAyBnjF,KAAK41B,UACvF,GAAI51B,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,OAClC,IAAK,IAAIkD,EAAK,EAAGC,EAAK9D,KAAKikF,mBAAqBwlF,EAAeA,EAAa72I,QAAS/uB,EAAKC,EAAGnD,OAAQkD,IAAM,CACvG,IAAIgoB,EAAO/nB,EAAGD,GACd7D,KAAKmlK,iBAAiBnlK,KAAK0qK,WAAW1qK,KAAK+8I,WAAYlxH,KAAS,OAIpE,IAAK,IAAIqP,EAAK,EAAGk7I,EAAiB3M,EAAcvuI,EAAKk7I,EAAez1K,OAAQu6B,IAAM,CAC9E,IAAIrP,EAAOuqJ,EAAel7I,GAC1Bl7B,KAAKmlK,iBAAiBnlK,KAAK0qK,WAAW1qK,KAAK+8I,WAAYlxH,KAAS,QAM5E7rB,KAAKmlK,iBAAmB,IA+BpCR,EAAUzkK,UAAU01B,QAAU,WAC1B,OAAO51B,KAAK4uB,OAAOiB,gBAAgBiG,YAAYjD,aAAa7yB,KAAK4uB,OAAOiB,gBAAgBuG,eAAc,KAE1GuuI,EAAUzkK,UAAUm2K,yBAA2B,WAC3C,IAAIC,EAA+B,IAAI,OAAYt2K,KAAKulK,qBAAqB1yI,aAAa7yB,KAAK4uB,OAAOiB,gBAAgBuG,eAAc,IAKpI,OAJIp2B,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,QAAU21K,GAC5CA,EAA6B1jJ,UAC7B0jJ,EAA+BA,EAA6B1jJ,QAAQllB,SAEjE4oK,GAEX3R,EAAUzkK,UAAU61K,wBAA0B,WAC1C,IAAI5+I,EAAOn3B,KAAK4uB,OAAOojE,UAKvB,GAJAhyF,KAAKm8F,kBAAoBn8F,KAAK4uB,OAAOytE,wBAAwB17F,OACzDX,KAAK4uB,OAAO4D,cACZxyB,KAAKm8F,kBAAoBn8F,KAAK4uB,OAAOkJ,aAAaqkE,oBAEjD,eAAkBhlE,IAASA,EAAKx2B,OAAS,IAAMX,KAAK4uB,OAAOwgF,oBAAsBpvG,KAAK61K,UAAW,CAElG,IADA,IAAIxiF,EAAU,GACL/7D,EAAI,EAAGA,EAAIH,EAAKx2B,OAAQ22B,IAAK,CAClC,IAAIguF,EAAStlH,KAAKqnK,UAAUlwI,EAAKxlB,SAAS2lB,EAAE1lB,WAAY,MACpDk5J,EAAOxlD,GAASA,EAAOz5F,KAAO7rB,KAAK0qK,WAAW1qK,KAAK+8I,WAAYz3B,EAAOz5F,MAAe,KACzF,GAAa,OAATi/I,EACA,OAEJ,IAAI9qK,KAAKikF,oBAAuBqhC,EAAO7iC,aAAvC,CAGA,IAAIqyD,OAAa,EACb3wD,EAAShtD,EAAKxlB,SAAS2lB,EAAE1lB,WAAY,KAAK1F,cAAc,kBACxDlM,KAAKmlK,iBAAiB,GAAK2F,IAAuC,UAA7B9qK,KAAK4uB,OAAOqxD,cAA4BjgF,KAAKmlK,iBAAiB,GAAK2F,IACxG9qK,KAAKm8F,oBAAsB18F,OAAO2V,KAAKpV,KAAKmlK,kBAAkBxkK,QAAUX,KAAKqlK,aAAarhK,QAAQ8mK,GAAQ,GACzE,YAA7B9qK,KAAK4uB,OAAOqxD,cAA8BjgF,KAAKqlK,aAAarhK,QAAQ8mK,GAAQ,IAAM9qK,KAAK4uB,OAAO8+E,kBACjE,iBAA7B1tG,KAAK4uB,OAAOqxD,eAAoC,eAAkBjgF,KAAK61K,WAAavwD,EAAOz5F,KAAK7rB,KAAK61K,WACzGxiF,EAAQhnF,KAAKsF,SAASwlB,EAAKxlB,SAAS2lB,EAAE1lB,WAAY,KAAKlH,aAAa,QAAwB,KAC5FoqI,GAAa,IAGbA,GAAa,EACT90I,KAAKgrK,gBAAkB7mF,GAAUnkF,KAAK4uB,OAAOoxD,qBAAuBmE,GACpE,gBAAqBA,EAAOlwC,mBAAoB6gG,IAGxD90I,KAAKwqK,wBAAwBrzI,EAAKxlB,SAAS2lB,EAAE1lB,WAAY,KAAMkjI,IAE/D90I,KAAK4pK,eAAiBv2E,EAAQ1yF,OAAS,EACvCX,KAAK4iH,UAAUvvB,EAAQ,IAAI,GAG3BrzF,KAAK2tH,WAAWt6B,IAGnBrzF,KAAK4uB,OAAOoxD,qBAAsE,oBAA/ChgF,KAAK4uB,OAAOk0D,kBAAkBm8B,eAAuCj/G,KAAKwnK,+BAA+B7mK,OAAS,GACtJX,KAAKirK,oBAGbtG,EAAUzkK,UAAU0lE,YAAc,SAAUz4D,GACxC,GAAsB,SAAlBA,EAAE4gB,aAA0B/tB,KAAK4uB,OAAOwgF,mBAAoB,CAC5D,IAAImnE,EAAav2K,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,uBACnD,IAAK,eAAkBqqK,GAAa,CAChC,IAAIl/I,EAAM,eAAQk/I,EAAY,IAAM,QACpC,GAAIl/I,EAAK,CACiC,WAAlCr3B,KAAK4uB,OAAOi3C,aAAaihC,OACzBzvE,EAAMr3B,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,kBAE5C,IAAIo5G,EAAStlH,KAAKqnK,UAAUhwI,GAC5B,IAAKiuF,EACD,OAEJtlH,KAAKmlK,iBAAiBnlK,KAAK0qK,WAAW1qK,KAAK+8I,WAAYz3B,EAAOz5F,OAASy5F,EAAOvlC,WAAaw2F,EAAWxjI,aAGtG/yC,KAAKslK,eAAiBiR,EAAWxjI,SAIzC/yC,KAAK4uB,OAAOwgF,oBAAsBpvG,KAAKikF,qBACjB,WAAlB92E,EAAE4gB,cAA6B/tB,KAAK4uB,OAAOiB,gBAAgByJ,aACtD,eAAkBt5B,KAAK4uB,OAAOQ,aAAepvB,KAAK4uB,OAAOQ,WAAW4B,UACzEhxB,KAAK4pH,mBAAqB,IAER,cAAlBz8G,EAAE4gB,aAAiD,cAAlB5gB,EAAE4gB,cACnC/tB,KAAK4uB,OAAOu0D,uBAAyB,GACrCnjF,KAAK4uB,OAAOw0D,uBAAyB,MAIjDuhF,EAAUzkK,UAAUiuJ,eAAiB,SAAUhhJ,GAC3C,GAAsB,SAAlBA,EAAE4gB,aAA0B/tB,KAAK4uB,OAAOwgF,mBAAoB,CAC5D,GAAiB,QAAbjiG,EAAEwT,OAAkB,CACpB,GAAI3gB,KAAKslK,eAAgB,CACrB,IAAIhgD,EAAStlH,KAAK4uB,OAAO22F,oBAAoBvlH,KAAK4uB,OAAOojE,UAAU7kF,EAAEi6G,aAAa18G,aAAa,aAC/F1K,KAAKmlK,iBAAiBnlK,KAAK0qK,WAAW1qK,KAAK+8I,WAAYz3B,EAAOz5F,OAASy5F,EAAOvlC,WAAa//E,KAAKslK,eAEpGtlK,KAAKylK,uBAAwB,EAC7BzlK,KAAKirK,mBAETjrK,KAAK+1K,0BAET,GAAsB,WAAlB5oK,EAAE4gB,aAA4B/tB,KAAK4uB,OAAOwgF,mBAAoB,CAG9D,IAFA,IAAIx8E,EAAUzlB,EAAE0e,KACZA,EAAO+G,EAAQllB,QACV1M,EAAI,EAAGA,EAAI6qB,EAAKlrB,OAAQK,IAAK,CAClC,IAAIi0K,EAAUj1K,KAAK0qK,WAAW1qK,KAAK+8I,WAAYlxH,EAAKla,SAAS3Q,EAAE4Q,WAAY,MACtE,eAAkBqjK,IACnBj1K,KAAK6qK,oBAAoBoK,EAASj1K,KAAKikF,oBAG/CjkF,KAAKylK,uBAAwB,EAC7BzlK,KAAKirK,mBACLjrK,KAAKm8F,kBAAoBn8F,KAAK4uB,OAAOkJ,aAAaqkE,kBAEtD,GAAsB,WAAlBhvF,EAAE4gB,YAA0B,CAC5B,GAAI/tB,KAAK4uB,OAAOwgF,oBAAsBpvG,KAAKikF,oBAAsBjkF,KAAKylK,sBAAuB,CACzF,IAAItuI,EAAOn3B,KAAK4uB,OAAO6yD,gBACnB4R,EAAU,GACd,IAASryF,EAAI,EAAGA,EAAIm2B,EAAKx2B,OAAQK,IACzBm2B,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAK6wE,cACjC4Q,EAAQhnF,KAAK8qB,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAKnF,OAGlD4mF,EAAQ1yF,QACRX,KAAK2tH,WAAWt6B,GAGxBrzF,KAAK0oK,kBAAen9J,EACpBvL,KAAKsrK,eAAY//J,EACjBvL,KAAKurK,gBAAahgK,IAG1Bo5J,EAAUzkK,UAAUs2K,YAAc,WAuB9B,IAtBKx2K,KAAK4uB,OAAO6D,sBAAwBzyB,KAAK4uB,OAAOwgF,oBAC7CpvG,KAAK2pH,gBAAgBhpH,SACrBX,KAAKmmK,oBAAqB,IAG7BnmK,KAAK4uB,OAAOiB,gBAAgByJ,aAAgB,eAAkBt5B,KAAK4uB,OAAOQ,aACxEpvB,KAAK4uB,OAAOQ,WAAW4B,SAAYhxB,KAAKqmK,qBACV,iBAA7BrmK,KAAK4uB,OAAOqxD,aACZjgF,KAAKg2K,iBAAgB,GAEa,YAA7Bh2K,KAAK4uB,OAAOqxD,cACjBjgF,KAAKg2K,iBAAgB,IAGzBh2K,KAAK4uB,OAAO6D,sBACZzyB,KAAKirK,mBAELjrK,KAAK4uB,OAAOwgF,oBACZpvG,KAAK+1K,0BAET/1K,KAAKkmK,uBAAsBlmK,KAAKkoK,aAAeloK,KAAK4uB,OAAOxrB,QAAQsf,iBAAiB,2BAChF1iB,KAAK4uB,OAAO86F,kBAAkB/oH,QAC9BX,KAAK4uB,OAAOoxD,sBAAwBhgF,KAAKkmK,oBAAqB,CAG9D,IAFA,IAAIuQ,EAAez2K,KAAK4uB,OAAO6yD,gBAC3B4R,EAAU,GACLryF,EAAI,EAAGA,EAAIy1K,EAAa91K,OAAQK,IACjCy1K,EAAa9kK,SAAS3Q,EAAE4Q,WAAY,KAAKmuE,YACzCsT,EAAQhnF,KAAKrL,GAGjBqyF,EAAQ1yF,QACRX,KAAK2tH,WAAWt6B,GAEpBrzF,KAAKkmK,qBAAsB,IAGnCvB,EAAUzkK,UAAU0rK,0BAA4B,SAAU92B,GACtD,GAAI90I,KAAK4uB,OAAOwgF,mBAAoB,CAEhC,IADA,IAAIj4E,EAAOn3B,KAAK4uB,OAAOojE,UACdhxF,EAAI,EAAGA,EAAIm2B,EAAKx2B,OAAQK,IAC7BhB,KAAKwqK,wBAAwBrzI,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAMkjI,GAElC,YAA7B90I,KAAK4uB,OAAOqxD,cACZjgF,KAAKg2K,iBAAgB,GACrBh2K,KAAKulK,oBAAuBvlK,KAAK4uB,OAAOiB,gBAAgByJ,aAC/C,eAAkBt5B,KAAK4uB,OAAOQ,aAAepvB,KAAK4uB,OAAOQ,WAAW4B,OACvEhxB,KAAKulK,oBAAsB,IAEC,UAA7BvlK,KAAK4uB,OAAOqxD,eACjBjgF,KAAKg2K,iBAAgB,GACrBh2K,KAAKulK,oBAAwBvlK,KAAK4uB,OAAOiB,gBAAgByJ,aAChD,eAAkBt5B,KAAK4uB,OAAOQ,aAAepvB,KAAK4uB,OAAOQ,WAAW4B,QACrEhxB,KAAKikF,mBAEoBjkF,KAAKulK,oBADlCvlK,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,OAASX,KAAK41B,UAAUhD,QAAQllB,QAC9D1N,KAAK41B,UAAUloB,WAInCi3J,EAAUzkK,UAAUw2K,qBAAuB,SAAU5hC,GACjD,IAAI6hC,EAAY32K,KAAK+6F,cACjB67E,EAAW52K,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,eAajD,GAZAlM,KAAKgrK,cAAgBhrK,KAAKw1K,iBACtB1gC,GAAc90I,KAAKwnK,+BAA+B7mK,QAClDX,KAAK4uB,OAAOqxD,aAAe,QAC3BjgF,KAAK4rK,0BAA0B92B,GAC/B90I,KAAK83H,kBAAkB6+C,EAAUE,mBAAmB,GAAIF,EAAUE,mBAAmB72K,KAAKwnK,+BAA+B7mK,OAAS,MAGlIX,KAAK4uB,OAAOqxD,aAAe,UAC3BjgF,KAAK4rK,0BAA0B92B,GAC/B90I,KAAKslG,kBAETtlG,KAAKqlK,aAAe,IACf,eAAkBuR,GAAW,CAC9B,IAAIL,EAAaK,EAAS1qK,cAAc,uBACnC,eAAkBqqK,IACnB,gBAAqBA,EAAWtiI,mBAAoB6gG,KAIhE6vB,EAAUzkK,UAAU42K,eAAiB,SAAUhjC,GAC3C,IAAIzwI,EAAQrD,KACR+2K,EAAW/2K,KAAK2rK,kBAAkB73B,GAClCtkH,EAAqB,UAAbunJ,EAcZ,GAbA/2K,KAAK6oK,yBAA0B,GAC1B7oK,KAAK4uB,OAAOiB,gBAAgByJ,aAAgB,eAAkBt5B,KAAK4uB,OAAOQ,aACxEpvB,KAAK4uB,OAAOQ,WAAW4B,UAA2B,YAAb+lJ,GAA0B/2K,KAAKsmK,iBACzD,iBAAbyQ,GAA+B/2K,KAAK4uB,OAAOwgF,oBAC5CpvG,KAAKqmK,oBAAqB,EAG1BrmK,KAAKqmK,oBAAqB,EAE1BrmK,KAAKqmK,oBAAsBrmK,KAAKsmK,kBAChCtmK,KAAKolK,mBAAqB,IAE9BplK,KAAKsmK,iBAAkB,EACN,iBAAbyQ,IACK/2K,KAAK61K,UAAa71K,KAAK4uB,OAAOwgF,qBAC/B5/E,EAAQxvB,KAAKwnK,+BAA+BxtI,MAAK,SAAUnO,GACvD,OAAOxoB,EAAMqnK,WAAWrnK,EAAM05I,WAAYlxH,KAASxoB,EAAM8hK,sBAG5DnlK,KAAK4uB,OAAOiB,gBAAgByJ,aAAgB,eAAkBt5B,KAAK4uB,OAAOQ,aACxEpvB,KAAK4uB,OAAOQ,WAAW4B,SAAYhxB,KAAK4uB,OAAOwgF,oBAClD,IAAK,IAAIpuG,EAAI,EAAGA,EAAIhB,KAAKwnK,+BAA+B7mK,OAAQK,IAC5D,IAAK,eAAkBhB,KAAK0qK,WAAW1qK,KAAK+8I,WAAY/8I,KAAKwnK,+BAA+B,GAAKxmK,KAAM,CACnG,IAAIvB,OAAO2V,KAAKpV,KAAKmlK,kBAAkB3rE,SAAUx5F,KAAK0qK,WAAW1qK,KAAK+8I,WAAY/8I,KAAKwnK,+BAA+B,GAAKxmK,IAAK4Q,YAG3H,CACD4d,GAAQ,EACR,MAJAA,GAAQ,EAUxBxvB,KAAK4uB,OAAOwgF,oBAAsBpvG,KAAK4uB,OAAO4D,cAC9CxyB,KAAKm8F,kBAAoBn8F,KAAK4uB,OAAOkJ,aAAaqkE,mBAEtDn8F,KAAK02K,sBAAsBlnJ,GAC3BxvB,KAAKM,OAAS,KACVN,KAAKwnK,+BAA+B7mK,OAAS,IAC7CX,KAAKirK,mBACLjrK,KAAKg3K,4BAETh3K,KAAKi3K,sBAAsBnjC,GAAWtkH,IAE1Cm1I,EAAUzkK,UAAUyrK,kBAAoB,SAAUr+I,GAC9C,IAEIsgE,EAFArJ,EAAUj3D,EAAMA,EAAI2mB,mBAAmB/uC,UACvClF,KAAKw1K,iBAAiBvhI,mBAAmB/uC,UAc7C,OAXI0oF,EADArJ,EAAQl+E,SAAS,WACR,QAEJk+E,EAAQl+E,SAAS,aACb,UAEJk+E,EAAQl+E,SAAS,UACb,eAGA,OAENunF,GAEX+2E,EAAUzkK,UAAUg3K,YAAc,SAAUpjC,GACxC,IAAIxzI,EAAS,eAAQN,KAAKgrK,cAAe,IAAM,QAC3C14I,EAAOtyB,KAAK4uB,OAChB5uB,KAAK8kK,oBAAqB,EAC1B,IAAIqS,EAAS,EAEb,GADAn3K,KAAK6oK,yBAA0B,EAC3B,gBAAgBv2I,GAAO,CACvB,IAAI6B,EAAM7zB,EAAOqhB,cAAcjX,aAAa,YAExCysK,EADAn3K,KAAK4uB,OAAO6D,sBAAwBzyB,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,OAC7DgR,SAASrR,EAAOqhB,cAAcjX,aAAa,QAAwB,IAGnE4nB,EAAK0/D,UAAUnrF,KAAI,SAAU0hG,GAAK,OAAOA,EAAE79F,aAAa,eAAgB1G,QAAQmwB,QAI7FgjJ,EAASxlK,SAASrR,EAAOqhB,cAAcjX,aAAa,QAAwB,IAE5E1K,KAAK4uB,OAAOwgF,oBAAsBpvG,KAAK4uB,OAAOxrB,QAAQ+U,uBAAuB,QAAmBxX,OAAS,GAC7D,QAA5CX,KAAK4uB,OAAOi3C,aAAaoxE,kBACvBkgC,EAENn3K,KAAKo3K,wBAAwBD,EAAQxlK,SAASrR,EAAOoK,aAAa,QAAwB,KAC1F1K,KAAKq3K,0BAA0B,eAAQ/2K,EAAQ,IAAM,SACrDN,KAAKirK,mBACLjrK,KAAK8kK,oBAAqB,EAC1B9kK,KAAKi3K,sBAAsBnjC,EAAUA,EAAS7/F,mBAAmB/uC,UAAUmB,SAAS,aAExFs+J,EAAUzkK,UAAUm3K,0BAA4B,SAAUhgJ,GACtD,GAAiC,UAA7Br3B,KAAK4uB,OAAOqxD,cAAyD,YAA7BjgF,KAAK4uB,OAAOqxD,aAA4B,CAChF,IAAIqlC,EAAStlH,KAAKqnK,UAAUhwI,GACxByzI,EAAOxlD,GAAUA,EAAOz5F,KAAO7rB,KAAK0qK,WAAW1qK,KAAK+8I,WAAYz3B,EAAOz5F,MAAQ,KACnF,IAAKi/I,EACD,OAEA9qK,KAAKqlK,aAAarhK,QAAQ8mK,GAAQ,EAClC9qK,KAAKqlK,aAAah5J,KAAKy+J,GAGvB9qK,KAAKqlK,aAAa34J,OAAO1M,KAAKqlK,aAAarhK,QAAQ8mK,GAAO,KAItEnG,EAAUzkK,UAAU+2K,sBAAwB,SAAUnjC,EAAUgB,GAC5D90I,KAAK4uB,OAAO3mB,QAAQ,OAAuB,CACvC8qC,QAAS+hG,EAAYlrB,mBAAoB5pH,KAAK4uB,OAAOixD,wBACrDv/E,OAAQwzI,IAEP9zI,KAAK4uB,OAAOmuB,SACb/8C,KAAKgrK,cAAgB,OAG7BrG,EAAUzkK,UAAU82K,yBAA2B,WAC3C,GAAIh3K,KAAK4uB,OAAOoxD,sBAAwBhgF,KAAK4uB,OAAO6D,sBAAwBzyB,KAAK4uB,OAAOiJ,0BACpF73B,KAAKikF,sBAAwBjkF,KAAK4uB,OAAOiB,gBAAgByJ,aAAgB,eAAkBt5B,KAAK4uB,OAAOQ,aACpGpvB,KAAK4uB,OAAOQ,WAAW4B,SACvBhxB,KAAK4uB,OAAOk0D,kBAAkBC,kBACA,YAA7B/iF,KAAK4uB,OAAOqxD,aAEZ,IADA,IAAIqlC,EAAStlH,KAAK4uB,OAAO6yD,gBAAgBxtD,QAAO,SAAU9mB,GAAK,OAAOA,EAAEs1E,gBAC/D50E,EAAK,EAAGypK,EAAWhyD,EAAQz3G,EAAKypK,EAAS32K,OAAQkN,IAAM,CAC5D,IAAIwpB,EAAMigJ,EAASzpK,GACnB7N,KAAK4pH,mBAAmBv9G,KAAKgrB,EAAI5qB,OAI7C,GAAIzM,KAAK4uB,OAAOoxD,qBAAuBhgF,KAAK4uB,OAAO6D,uBAAyBzyB,KAAKikF,qBAC5EjkF,KAAK4uB,OAAOiB,gBAAgByJ,aAAgB,eAAkBt5B,KAAK4uB,OAAOQ,aACpEpvB,KAAK4uB,OAAOQ,WAAW4B,UAC1BhxB,KAAK4uB,OAAOwgF,oBAAmD,UAA7BpvG,KAAK4uB,OAAOqxD,aAA0B,CACxEqlC,EAAStlH,KAAK4uB,OAAO6yD,gBAAgBxtD,QAAO,SAAU9mB,GAAK,OAAOA,EAAEs1E,gBACxE,GAAI6iC,EAAO3kH,SAAWX,KAAK4pH,mBAAmBjpH,OAC1C,IAAK,IAAIkD,EAAK,EAAG0zK,EAAWjyD,EAAQzhH,EAAK0zK,EAAS52K,OAAQkD,IAAM,CACxDwzB,EAAMkgJ,EAAS1zK,GACf7D,KAAK4pH,mBAAmB5lH,QAAQqzB,EAAI5qB,SAAW,GAC/CzM,KAAK4pH,mBAAmBv9G,KAAKgrB,EAAI5qB,UAMrDk4J,EAAUzkK,UAAUs3K,uBAAyB,SAAU/qK,GACnD,GAAIzM,KAAK4uB,OAAOoxD,sBAAwBhgF,KAAK4uB,OAAO6D,sBAAwBzyB,KAAK4uB,OAAOiJ,4BAC/E73B,KAAK4uB,OAAOiB,gBAAgByJ,aAAgB,eAAkBt5B,KAAK4uB,OAAOQ,aACxEpvB,KAAK4uB,OAAOQ,WAAW4B,UAC1BhxB,KAAKikF,mBACT,GAAiC,UAA7BjkF,KAAK4uB,OAAOqxD,aAA0B,CACtCjgF,KAAK4pH,mBAAqB,GAG1B,IAFA,IAAI1tB,EAAal8F,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,OAASX,KAAK41B,UAAU,WAAWj1B,OAClFX,KAAK41B,UAAUj1B,OACVkrB,EAAO,EAAGA,EAAOqwE,EAAYrwE,IAClC7rB,KAAK4pH,mBAAmBv9G,KAAKwf,QAGhC,GAAiC,YAA7B7rB,KAAK4uB,OAAOqxD,aACjBjgF,KAAK4pH,mBAAqB,OAEzB,CACD,IAAIvyF,EAAMr3B,KAAK4uB,OAAO44E,cAAc/6F,GACpC,GAAIA,GAAS4qB,GAA6C,UAAtCA,EAAI3sB,aAAa,iBAA8B,CAC/D,IAAI+sK,EAAcz3K,KAAK4pH,mBAAmB5lH,QAAQyI,GAClDzM,KAAK4pH,mBAAmBl9G,OAAO+qK,EAAa,MAK5D9S,EAAUzkK,UAAUw3K,cAAgB,SAAU3sI,GAC1C,GAAI/qC,KAAK4uB,OAAOiB,gBAAgByJ,aACvB,eAAkBt5B,KAAK4uB,OAAOQ,aAAepvB,KAAK4uB,OAAOQ,WAAW4B,OACzE,OAAOhxB,KAAKq2K,2BAA2B11K,UAAYX,KAAK4uB,OAAO6D,sBAAwBzyB,KAAK4uB,OAAOiJ,wBAC7F73B,KAAK4uB,OAAO+wE,sBAAwB3/F,KAAKm8F,mBAG/C,GAAIn8F,KAAKikF,mBAAoB,CACzB,GAAIjkF,KAAK4uB,OAAO4D,aAAexyB,KAAK4uB,OAAOkJ,aAAaG,SAAWj4B,KAAK4uB,OAAOkJ,aAAaqkE,kBAAmB,CAE3G,IADA,IAAItwE,EAAO7rB,KAAK4uB,OAAOu0D,uBACdniF,EAAI,EAAGA,EAAI6qB,EAAKlrB,OAAQK,IAAK,CAClC,IAAI8pK,EAAO9qK,KAAK0qK,WAAW1qK,KAAK+8I,WAAYlxH,EAAKla,SAAS3Q,EAAE4Q,WAAY,MACxE,IAAK5R,KAAKmlK,iBAAiB,GAAK2F,GAC5B,OAAO,EAGf,OAAO,EAGP,OAAO9qK,KAAK23K,oBAAoB5sI,GAKpC,IADIlf,EAAQ7rB,KAAK4uB,OAAO+D,cAAcxD,QAAc,OAAInvB,KAAK41B,UAAU,WAAa51B,KAAK41B,UAChF50B,EAAI,EAAGA,EAAI6qB,EAAKlrB,OAAQK,IAAK,CAC9B8pK,EAAO9qK,KAAK0qK,WAAW1qK,KAAK+8I,WAAYlxH,EAAKla,SAAS3Q,EAAE4Q,WAAY,MACxE,IAAK5R,KAAKmlK,iBAAiB,GAAK2F,GAC5B,OAAO,EAGf,OAAO,GAInBnG,EAAUzkK,UAAU03K,iBAAmB,WACnC,IAAK53K,KAAK4uB,OAAOiB,gBAAgByJ,aAAgB,eAAkBt5B,KAAK4uB,OAAOQ,aACxEpvB,KAAK4uB,OAAOQ,WAAW4B,UACtBhxB,KAAK4uB,OAAO6E,eAAelzB,IAAII,QAAUX,KAAK4uB,OAAOoF,eAAe7E,QAAQxuB,QAEhF,IADA,IAAI21K,EAA+Bt2K,KAAKq2K,2BAC/Br1K,EAAI,EAAGA,EAAIs1K,EAA6B31K,OAAQK,IAAK,CAC1D,IAAI8pK,EAAO9qK,KAAK0qK,WAAW1qK,KAAK+8I,WAAYu5B,EAA6B3kK,SAAS3Q,EAAE4Q,WAAY,MAChG,GAAI5R,KAAKmlK,iBAAiB,GAAK2F,GAC3B,OAAO,EAInB,IAAIj/I,EAAO7rB,KAAKikF,mBAAqBjkF,KAAK4uB,OAAOu0D,uBAC1CnjF,KAAK4uB,OAAOiB,gBAAgByJ,aAAgB,eAAkBt5B,KAAK4uB,OAAOQ,aACtEpvB,KAAK4uB,OAAOQ,WAAW4B,OAAW,GAAKhxB,KAAK41B,UACvD,IAAS50B,EAAI,EAAGA,EAAI6qB,EAAKlrB,OAAQK,IAAK,CAC9B8pK,EAAO9qK,KAAK0qK,WAAW1qK,KAAK+8I,WAAYlxH,EAAKla,SAAS3Q,EAAE4Q,WAAY,MACxE,GAAI5R,KAAKmlK,iBAAiB,GAAK2F,GAC3B,OAAO,EAGf,OAAO,GAEXnG,EAAUzkK,UAAU+qK,iBAAmB,SAAUx+J,EAAOi3H,GACpD,GAAI1jI,KAAK4uB,OAAOoxD,qBAAsE,oBAA/ChgF,KAAK4uB,OAAOk0D,kBAAkBm8B,aAAoC,CACrG,IAAI44D,GAAmB,EACnBvkJ,GAAa,EACbwkJ,EAAar4K,OAAO2V,KAAKpV,KAAKmlK,kBAAkBxkK,OAC/CX,KAAK4uB,OAAOwgF,qBACb0oE,EAAa93K,KAAK4pH,mBAAmBjpH,OACrCX,KAAKm8F,kBAAoBn8F,KAAKwnK,+BAA+B7mK,SAE7DX,KAAK4uB,OAAOwgF,qBAAyBpvG,KAAK4uB,OAAOiB,gBAAgByJ,aAC/D,eAAkBt5B,KAAK4uB,OAAOQ,aAAepvB,KAAK4uB,OAAOQ,WAAW4B,SACtEhxB,KAAKikF,qBACDjkF,KAAK4uB,OAAO6E,eAAelzB,IAAII,SAAUX,KAAK4uB,OAAOoF,eAAe7E,QAAQxuB,SAChF2yB,GAAa,EACbukJ,EAAmB73K,KAAK03K,cAAcI,IAE1C,IAAI7kI,EAAQjzC,KAAKw1K,iBACjB,GAAIviI,EAAO,CACP,IAAI8kI,EAAU9kI,EAAMgB,mBACpB,gBAAY,CAAC8jI,GAAU,CAAC,UAAW,SAAU,cAC7C,gBAAW9kI,GAAO,GAClBA,EAAMorF,eAAgB,EACtB,IAAI25C,EAAYh4K,KAAK4uB,OAAOiB,gBAAgByJ,WAAa,GACpDt5B,KAAK4uB,OAAO+D,cAAcxD,QAAc,OAAInvB,KAAK41B,UAAU,WAAa51B,KAAK41B,UA+ClF,GA9CKiiJ,GAAoBvkJ,IAAetzB,KAAK4uB,OAAOiB,gBAAgByJ,aAC9D,eAAkBt5B,KAAK4uB,OAAOQ,aAAepvB,KAAK4uB,OAAOQ,WAAW4B,QACtEgnJ,EAAUr3K,UAAc2yB,IAAgBwkJ,IAAe93K,KAAKm8F,mBAAqBn8F,KAAKm8F,oBAClFn8F,KAAKikF,uBAAyBjkF,KAAK4uB,OAAOiB,gBAAgByJ,aACzD,eAAkBt5B,KAAK4uB,OAAOQ,aAAepvB,KAAK4uB,OAAOQ,WAAW4B,SACtEhxB,KAAK4uB,OAAO4D,eACbxyB,KAAK4uB,OAAO6D,uBAAyBzyB,KAAK4uB,OAAOiJ,yBAC5C73B,KAAKikF,qBAAuBjkF,KAAK23K,oBAAoBG,IAAe93K,KAAKylK,yBAC3EzlK,KAAK4uB,OAAO6D,sBAAwBzyB,KAAK4uB,OAAOiJ,2BAC7C73B,KAAK4uB,OAAO4D,gBAAmBxyB,KAAK4uB,OAAOiB,gBAAgByJ,aAC1D,eAAkBt5B,KAAK4uB,OAAOQ,aAAepvB,KAAK4uB,OAAOQ,WAAW4B,SACzEgnJ,EAAUr3K,QAAUm3K,IAAeE,EAAUr3K,SAAaX,KAAK4uB,OAAOiB,gBAAgByJ,aACjF,eAAkBt5B,KAAK4uB,OAAOQ,aAAepvB,KAAK4uB,OAAOQ,WAAW4B,UACxEhxB,KAAKikF,qBAAwB6zF,IAAe93K,KAAK4uB,OAAO+wE,wBAA4B3/F,KAAK23K,oBAAoBG,IAC3GA,IAAe93K,KAAKm8F,qBAAuBn8F,KAAK4uB,OAAOwgF,qBACzDpvG,KAAKikF,qBAAuBjkF,KAAKylK,uBAAyBzlK,KAAK23K,oBAAoBG,MACpFA,IAAe93K,KAAKm8F,mBAAqBn8F,KAAKm8F,oBAAsBn8F,KAAKikF,qBACxEjkF,KAAK4uB,OAAO4D,cAAgBxyB,KAAK4uB,OAAO6D,uBAAyBzyB,KAAK4uB,OAAOiJ,0BAClF,eAAS,CAACkgJ,GAAU,CAAC,YACrB,gBAAW9kI,GAAO,GACdywF,GACA1jI,KAAK+6F,cAAcjnB,aAAa,MAAM,GAAM,GAEhD9zE,KAAK4uB,OAAOqxD,aAAe,WAEnBjgF,KAAK4pH,mBAAmBjpH,UAAYX,KAAK4uB,OAAO6D,uBACtDzyB,KAAKulK,oBAAoB5kK,SAAW2yB,GAAgBA,GAActzB,KAAK43K,qBAC1D,IAAfE,GAAmE,IAA/C93K,KAAKwnK,+BAA+B7mK,UAAkBX,KAAK4uB,OAAO4D,aACrFxyB,KAAK4uB,OAAO4D,cAA+B,IAAfslJ,GAAqBA,GAAcxkJ,GAActzB,KAAK43K,qBACnF,eAAS,CAACG,GAAU,CAAC,cACjBr0C,GACA1jI,KAAK+6F,cAAcjnB,aAAa,MAAM,GAAO,GAEjD9zE,KAAK4uB,OAAOqxD,aAAe,YAG3B,eAAS,CAAC83F,GAAU,CAAC,WACrB/3K,KAAK4uB,OAAOqxD,aAAe,eAC3BhtC,EAAMorF,eAAgB,GAEP,IAAfy5C,GAAmE,IAA/C93K,KAAKwnK,+BAA+B7mK,OACxD,eAAS,CAACo3K,EAAQp2J,eAAgB,CAAC,wBAGnC,gBAAY,CAACo2J,EAAQp2J,eAAgB,CAAC,wBAEtC3hB,KAAKikF,mBAAoB,CACzB,IAAIk4B,EAAWn8G,KAAK4uB,OAAO6yD,gBAAgBxtD,QAAO,SAAU9mB,GAAK,OAAOA,EAAEs1E,gBAAiB9hF,OAC1E,IAAbw7G,GAAkB47D,EAAQp2J,cAAczV,cAAc,YAAYhH,UAAUmB,SAAS,aACrF,eAAS,CAAC0xK,EAAQp2J,eAAgB,CAAC,wBAGnC,gBAAY,CAACo2J,EAAQp2J,eAAgB,CAAC,yBAGzC3hB,KAAK4uB,OAAO6D,uBAAwBzyB,KAAK4uB,OAAOiJ,yBAC7C73B,KAAK4uB,OAAO4D,aAAiBxyB,KAAK4uB,OAAOiB,gBAAgByJ,aACxD,eAAkBt5B,KAAK4uB,OAAOQ,aAAepvB,KAAK4uB,OAAOQ,WAAW4B,QACzEhxB,KAAKw3K,uBAAuB/qK,MAK5Ck4J,EAAUzkK,UAAUy3K,oBAAsB,SAAU5sI,GAChD,IAAIoxE,EAAW,EACXmJ,EAAStlH,KAAK4uB,OAAO6yD,gBACzB,GAAIzhF,KAAK4uB,OAAOk0D,kBAAkBC,mBAAqB/iF,KAAK4uB,OAAO6D,sBAAwBzyB,KAAK4uB,OAAOiJ,yBAA0B,CAC7H,IAAI4oH,EAAWzgJ,KAAK4uB,OAAOiB,gBAAgByJ,aAAgB,eAAkBt5B,KAAK4uB,OAAOQ,aAClFpvB,KAAK4uB,OAAOQ,WAAW4B,OAC1BhxB,KAAK4uB,OAAO+wE,sBAAwB3/F,KAAK41B,WAAa51B,KAAK41B,UAAUj1B,OACzE,OAAI8/I,IAAYn7B,EAAO3kH,SACnBw7G,EAAWmJ,EAAOrxF,QAAO,SAAU9mB,GAAK,OAAOA,EAAEs1E,gBAAiB9hF,OAC3Dw7G,GAAYpxE,IAAUoxE,GAOjC,OAAIn8G,KAAK4uB,OAAO4D,aAAexyB,KAAK4uB,OAAOk0D,kBAAkBC,kBACzDo5B,EAAWn8G,KAAK4uB,OAAOu0D,uBAAuBxiF,OAASX,KAAK4uB,OAAOw0D,uBAAuBziF,OACtFw7G,IAAan8G,KAAKm8F,oBACXn8F,KAAK4uB,OAAOu0D,uBAAuBxiF,QAAUoqC,IAAU/qC,KAAK4uB,OAAOu0D,uBAAuBxiF,UAOrGw7G,EAAWmJ,EAAOrxF,QAAO,SAAU9mB,GAAK,OAAOA,EAAEs1E,gBAAiB9hF,OAC3Dw7G,GAAYpxE,IAAUoxE,IAIzCwoD,EAAUzkK,UAAUgmG,eAAiB,SAAU/4F,KAEd,WAAtB,OAAQuuC,KAAK1rC,MAA6C,WAAtB,OAAQ0rC,KAAK1rC,QAAsC,KAAd7C,EAAEqG,SAAgC,KAAdrG,EAAEqG,UAC3E,UAAtB,OAAQkoC,KAAK1rC,MAAkC,KAAd7C,EAAEqG,SAA0C,YAAtB,OAAQkoC,KAAK1rC,MAAoC,MAAd7C,EAAEqG,WAC7FxT,KAAK+lK,eAAgB,GAEzB,IAAIkS,EAAiB,gBAAa9qK,EAAE7M,OAAQ,gBACxC43K,EAAgB,gBAAa/qK,EAAE7M,OAAQ,QACvC63K,EAAaF,EAAiBA,EAAer3J,SAAS,GAAG1b,UAAUmB,SAAS,wBAC5E6xK,GAAgBA,EAAchzK,UAAUmB,SAAS,gBACjD8xK,IAAen4K,KAAK4uB,OAAOi7B,eAA+B,KAAd18C,EAAEqG,SAC9CrG,EAAE+F,kBAGVyxJ,EAAUzkK,UAAUu0C,aAAe,SAAUtnC,KACZ,WAAtB,OAAQuuC,KAAK1rC,MAA6C,WAAtB,OAAQ0rC,KAAK1rC,QAAsC,KAAd7C,EAAEqG,SAAgC,KAAdrG,EAAEqG,UAC3E,UAAtB,OAAQkoC,KAAK1rC,MAAkC,KAAd7C,EAAEqG,SAA0C,YAAtB,OAAQkoC,KAAK1rC,MAAoC,MAAd7C,EAAEqG,WAC7FxT,KAAK+lK,eAAgB,IAG7BpB,EAAUzkK,UAAUooC,aAAe,SAAUn7B,GACzC,IAAI7M,EAAS6M,EAAE7M,OACfN,KAAK4oK,aAAetoK,EAChBN,KAAK8iF,kBAAkBC,mBACvB/iF,KAAKwlK,eAAiB,gBAAcxlK,KAAKulK,uBAEzC,gBAAajlK,EAAQ,SAAiB,gBAAaA,EAAQ,uBAC1DN,KAAK8iF,kBAAkBs1F,sBAAwB93K,EAAO4E,UAAUmB,SAAS,mBAC1ErG,KAAK2O,cAAe,GAExB3O,KAAK+lK,cAAgB54J,EAAEu5F,QACvB1mG,KAAK8kK,mBAAqB33J,EAAEy5F,SAAW5mG,KAAKglK,wBACvChlK,KAAKs1K,SAAWt1K,KAAK+lK,cACrB/lK,KAAK4uB,OAAOi7B,cAKb7pD,KAAK6kK,oBAAsB13J,EAAEy9H,UAJ7B5qI,KAAK6kK,qBAAsB,EAC3B7kK,KAAK8kK,oBAAqB,GAK9B9kK,KAAK+kK,uBAAyB/kK,KAAK8kK,mBACnC9kK,KAAKq4K,kBAAkBlrK,GACvB,IAEI2mI,EAFAwkC,GAAY,EAChBt4K,KAAKu9I,cAAe,EAEpB,IAAI7G,EAAY,gBAAap2I,EAAQ,sBAqBrC,GApBAN,KAAKorK,yBAAwB10B,GAAaA,EAAUv+H,uBAAuB,qBACtEnY,KAAK8iF,kBAAkBC,kBAAoB,gBAAaziF,EAAQ,SACjEN,KAAK8iF,kBAAkBC,kBAAoB/iF,KAAKikF,oBAAsB,gBAAa3jF,EAAQ,wBACvFA,EAAO4L,cAAc,0BACzBlM,KAAKylK,uBAAwB,GAE7B/uB,GAAaA,EAAUh0H,iBAAiB,oCAAoC/hB,OAAS,IACrFmzI,EAAW4C,EAAUxqI,cAAc,0BACnCosK,GAAY,GAEhBt4K,KAAKswK,cACLtwK,KAAKygH,yBACLngH,EAAS,gBAAaA,EAAQ,QAC1BN,KAAK4uB,OAAOzmB,SAAY7H,IAAWA,EAAOqhB,eAAiBrhB,EAAO4E,UAAUmB,SAAS,eACrF/F,EAASN,KAAK4uB,OAAO64E,iBAAiB91F,SAASrR,EAAOoK,aAAa,SAAU,IAAKiH,SAASrR,EAAOoK,aAAa,iBAAkB,MAEjI1K,KAAKomK,mBAAqB,eAAkB9lK,IAAWN,KAAK4uB,OAAOuyB,qBACnEnhD,KAAK8iF,kBAAkBC,kBAAoB/iF,KAAKorK,wBAChDprK,KAAKomK,mBAAoB,IAEvB9lK,GAAUA,EAAOqhB,cAAczc,UAAUmB,SAAS,UAAkBrG,KAAK4uB,OAAOk0D,kBAAkB68D,cAAiB24B,KACjHt4K,KAAKomK,kBAAmB,CAK5B,GAJIpmK,KAAK4uB,OAAOoxD,sBACZhgF,KAAK8kK,oBAAqB,GAE9B9kK,KAAKM,OAASA,EACT,eAAkBwzI,GASlB,CACD,IAAIxhH,EAAOtyB,KAAK4uB,OACZuoJ,EAAS,EACb,GAAI,gBAAgB7kJ,GAAO,CACvB,IAAI6B,EAAM7zB,EAAOqhB,cAAcjX,aAAa,YAC5CysK,EAAS7kJ,EAAK0/D,UAAUnrF,KAAI,SAAU0hG,GAAK,OAAOA,EAAE79F,aAAa,eAAgB1G,QAAQmwB,QAGzFgjJ,EAASxlK,SAASrR,EAAOqhB,cAAcjX,aAAa,QAAwB,IAE5E1K,KAAK4uB,OAAOwgF,oBAAsBpvG,KAAK4uB,OAAOxrB,QAAQ+U,uBAAuB,QAAmBxX,OAAS,KACvGw2K,EAEDn3K,KAAKo0K,WAAcp0K,KAAKo0K,UAAUmE,YAAYj4K,IAC/CN,KAAKo3K,wBAAwBD,EAAQxlK,SAASrR,EAAOoK,aAAa,QAAwB,KAE1F1K,KAAK4uB,OAAOoxD,sBACZhgF,KAAKq3K,0BAA0B,eAAQ/2K,EAAQ,IAAM,SACrDN,KAAKirK,yBA1BTjrK,KAAKgrK,cAAgBl3B,EACjBA,EAAS5uI,UAAUmB,SAAS,oBAC5BrG,KAAK82K,eAAehjC,GAGpB9zI,KAAKk3K,YAAYpjC,GAwBpB9zI,KAAK4uB,OAAOoxD,sBAAuB,OAAQrwE,UAAa3P,KAAK4pK,eAC9D5pK,KAAKw4K,UAAUrrK,QAGlB,GAAIA,EAAE7M,OAAO4E,UAAUmB,SAAS,kBAChC8G,EAAE7M,OAAO4E,UAAUmB,SAAS,uBAAwB,CACjD8tB,EAAMhnB,EAAE7M,OAAO4L,cAAc,oBAAoBxB,aAAa,gBAClE1K,KAAKy4K,uBAAuBz4K,KAAK4uB,OAAOimE,oBAAoB1gE,IAEhEn0B,KAAK8kK,oBAAqB,EAC1B9kK,KAAK+kK,uBAAyB/kK,KAAK8kK,mBACnC9kK,KAAK6kK,qBAAsB,EACvB,eAAkB,eAAQ13J,EAAE7M,OAAQ,qBACpCN,KAAKu9I,cAAe,IAG5BonB,EAAUzkK,UAAUm4K,kBAAoB,SAAUlrK,GAC9C,IAAI7M,EAAS6M,EAAE7M,OACX,eAAQA,EAAQ,kBAAoB6M,EAAE7M,OAAO4E,UAAUmB,SAAS,SAChE,eAAQ/F,EAAQ,gBACZA,EAAO4E,UAAUmB,SAAS,iBACrB/F,EAAO4E,UAAUmB,SAAS,kBAK3B/F,EAAO4E,UAAUC,OAAO,iBACxBnF,KAAKglK,wBAAyB,EAC9BhlK,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,gBAAgBnF,MAAMC,QAAU,SANlE1G,EAAO4E,UAAU4G,IAAI,iBACrB9L,KAAKglK,wBAAyB,IAUtChlK,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,gBAAgBnF,MAAMC,QAAU,QAG1E29J,EAAUzkK,UAAUs4K,UAAY,SAAUrrK,GACjCnN,KAAK8iF,kBAAkB6kF,+BACxB,gBAAkB3nK,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,gBAAiBiB,EAAG,yCAClEnN,KAAK4pK,gBAAkB5pK,KAAK2pH,gBAAgBhpH,OAAS,GAChDX,KAAKwmG,uBAAuB7lG,OAAS,GAAK,iBAAmB,MAGhFgkK,EAAUzkK,UAAUk3K,wBAA0B,SAAUpiF,EAAU8S,GAC9D,IAAM9nG,KAAK8kK,qBAAuB9kK,KAAK6kK,qBAAwB7kK,KAAK4pK,cAC3D5pK,KAAK8pK,WACN9pK,KAAK4iH,UAAU5tB,EAAUh1F,KAAK8iF,kBAAkBqnF,cAEpDnqK,KAAK4tH,WAAW,CAAE54B,SAAUA,EAAU8S,UAAWA,GAAa9nG,KAAK8iF,kBAAkBqnF,cACjFnqK,KAAKwmG,uBAAuB7lG,QAC5BX,KAAKygH,yBAETzgH,KAAKswK,mBAEJ,GAAItwK,KAAK6kK,oBACN7kK,KAAK4uB,OAAOoxD,sBAAyBhgF,KAAK4uB,OAAOoxD,sBAChD,eAAQhgF,KAAKM,OAAQ,IAAM,QAAkB4E,UAAUmB,SAAS,QACjErG,KAAK83H,kBAAkB,gBAAY93H,KAAK0oK,cAAgB1zE,EAAWh1F,KAAK0oK,aAAc1zE,GAGtFh1F,KAAK4nK,mBAAmB,CAAC5yE,IAE7Bh1F,KAAK6nG,mBAAmB,gBAAY7nG,KAAKsrK,WAAa,CAAEt2E,SAAUA,EAAU8S,UAAWA,GAAc9nG,KAAKsrK,UAAW,CAAEt2E,SAAUA,EAAU8S,UAAWA,IACtJ9nG,KAAKygH,yBACLzgH,KAAKswK,kBAEJ,CAED,GADAtwK,KAAK4nK,mBAAmB,CAAC5yE,IACW,SAAhCh1F,KAAK8iF,kBAAkBgkB,KAAiB,CACxC,IAAIkY,EAAiBh/G,KAAK4uB,OAAO8H,aAAagiJ,MAAK,SAAUx/I,GAAO,MAAoB,aAAbA,EAAI1qB,QAC3EmqK,EAA2B35D,GAAkBA,EAAevyG,QAAUq7F,EACtE6wE,IAA6B34K,KAAK+kK,uBAClC/kK,KAAK4tH,WAAW,CAAE54B,SAAUA,EAAU8S,UAAWA,GAAa9nG,KAAK8iF,kBAAkBqnF,cAE/EnrD,IAAkB25D,GACxB34K,KAAK8tK,oBAAoB,CAAC,CAAE94E,SAAUA,EAAU8S,UAAWA,UAI/D9nG,KAAK8tK,oBAAoB,CAAC,CAAE94E,SAAUA,EAAU8S,UAAWA,KAE/D9nG,KAAK0uK,gBAAgB,QAEzB1uK,KAAK8pK,WAAY,GAErBnF,EAAUzkK,UAAUwhJ,cAAgB,SAAUv0I,GAC1C,GAAInN,KAAK4uB,OAAOwrB,YAAcjtC,EAAEqC,UAAUgtC,UAAYrvC,EAAEy1I,MACpD,GAAyB,YAArBz1I,EAAEk1I,QAAQ1hI,OACN3gB,KAAK4uB,OAAO4L,eACZrtB,EAAEyrK,OAA+B,UAAtBzrK,EAAE/J,QAAQsM,QAGrBvC,EAAEyrK,OAA+B,OAAtBzrK,EAAE/J,QAAQsM,aAIzB,GAAyB,cAArBvC,EAAEk1I,QAAQ1hI,OAAwB,CAClC,IAAI4mF,EAAOx2D,OAAO5jC,EAAE/J,QAAQue,cAAcjX,aAAa,SACvDyC,EAAEyrK,OAAkB,IAATrxE,MAGc,aAArBp6F,EAAEk1I,QAAQ1hI,SACVxT,EAAEyrK,QAAS,GAK3B,IAAItwK,GAAU6E,EAAEqC,UAAUgtC,UAAYrvC,EAAEyrK,QACnCzrK,EAAEqC,UAAU+yI,YAAcp1I,EAAEqC,UAAUizE,iBAAoBt1E,EAAEy1I,OAA8B,UAArBz1I,EAAEk1I,QAAQ1hI,WAC3ExT,EAAE/J,QAAQ8B,UAAUmB,SAAS,sBAAwB8G,EAAE/J,QAAQ8B,UAAUmB,SAAS,wBACvFwyK,EAAgB1rK,EAAEqC,UAAUgtC,UAAkC,OAAtBrvC,EAAE/J,QAAQsM,UAAqB,eAAQvC,EAAE/J,QAAS,IAAM,WAC3F+J,EAAEy1I,OAA8B,UAArBz1I,EAAEk1I,QAAQ1hI,QAC9B,GAAKxT,EAAEy1I,QAASt6I,EAAhB,CAMA,IAAIzE,EAAKsJ,EAAEqC,UAAU+yI,UAAYp1I,EAAEqC,UAAU6jF,QAAUlmF,EAAEkmF,QAAS2B,EAAWnxF,EAAG,GAAIikG,EAAYjkG,EAAG,GAC/Fq/C,EAAOljD,KAAK+f,MAAMmrJ,iBAKtB,IAJI/9J,EAAE/J,QAAQue,cAAczV,cAAc,mBAAqBiB,EAAE/J,QAAQue,cAAczV,cAAc,uBAC9FiB,EAAE/J,QAAQue,cAAczV,cAAc,wBACzCg3C,EAAK4kD,UAAY5kD,EAAK4kD,UAAY,GAElC9nG,KAAK4uB,OAAOwrB,WACZ,GAAIjtC,EAAEqC,UAAUgtC,WAAmC,OAAtBrvC,EAAE/J,QAAQsM,SAAoB,eAAQvC,EAAE/J,QAAS,IAAM,SAAoB,CACpG,IAAI01K,EAAQ94K,KAAK4uB,OAAO8kE,iBAAiBxnF,cAAc,SAASgiD,kBAChE8mC,GAAY8jF,EACZ51H,EAAK8xC,SAAY,eAAkB9xC,EAAK8xC,UAAoC,KAAxB9xC,EAAK8xC,SAAW8jF,OAGpE9jF,GAAYh1F,KAAK4uB,OAAOwrB,WACxB8I,EAAK8xC,SAA6B,IAAlB9xC,EAAK8xC,UAAmB,eAAkB9xC,EAAK8xC,UAAqD,KAAzC9xC,EAAK8xC,SAAWh1F,KAAK4uB,OAAOwrB,WAM/G,GAHIp6C,KAAK4uB,OAAOiJ,yBAA2B73B,KAAK4uB,OAAOorE,uBAAuBC,cAC1EjF,EAAWrjF,SAASxE,EAAE/J,QAAQue,cAAcjX,aAAa,iBAAkB,OAE1EmuK,IAAwE,IAAvD,CAAC,YAAa,UAAU70K,QAAQmJ,EAAEk1I,QAAQ1hI,SACvC,UAArBxT,EAAEk1I,QAAQ1hI,QAAsBq0E,IAAa9xC,EAAK8xC,UAAY8S,IAAc5kD,EAAK4kD,YAChF9nG,KAAK8iF,kBAAkBs1F,qBAF5B,CAKAp4K,KAAKu9I,cAAe,EACpB,IAAI7+B,EAAc1+G,KAAK+4K,eAAe5rK,GAItC,GAHInN,KAAK0lK,sBACL59D,EAAY4W,GAEZ1+G,KAAK4uB,OAAOxrB,QAAQ8B,UAAUmB,SAAS,qBAA4C,QAArB8G,EAAEk1I,QAAQ1hI,QAAyC,aAArBxT,EAAEk1I,QAAQ1hI,QAC9E,eAArBxT,EAAEk1I,QAAQ1hI,QAAgD,cAArBxT,EAAEk1I,QAAQ1hI,QAAyB,CAC3E,IAAIq4J,EAAch5K,KAAKM,OAAOoK,aAAa,cAC3CsuK,EAAch5K,KAAKM,OAAOwK,UAAY,kBAAoB9K,KAAK4uB,OAAO84E,iBAAiBI,GAAWj2E,MAClG7xB,KAAKM,OAAOqK,aAAa,aAAcquK,GAE3C,OAAQ7rK,EAAEk1I,QAAQ1hI,QACd,IAAK,YACL,IAAK,UACL,IAAK,QACL,IAAK,aACD3gB,KAAKM,OAAS6M,EAAE/J,QAChBpD,KAAK2X,aAAc,EACnB3X,KAAKi5K,eAAejkF,EAAU8S,GAC9B,MACJ,IAAK,aACL,IAAK,YACD9nG,KAAKk5K,kBAAkBlkF,EAAU8S,GACjC,MACJ,IAAK,YACL,IAAK,UACD9nG,KAAKm5K,aAAankF,EAAU8S,GAC5B,MACJ,IAAK,YACL,IAAK,aACD9nG,KAAKo5K,uBAAuBpkF,EAAU8S,GACtC,MACJ,IAAK,OACL,IAAK,MACDA,EAAiC,QAArB36F,EAAEk1I,QAAQ1hI,OAAmB3gB,KAAKutK,gBAAgBv4E,GAAY,EAC1Eh1F,KAAKq5K,gBAAgBrkF,EAAU8S,GAC/B,MACJ,IAAK,WACL,IAAK,UACD9nG,KAAKs5K,oBAAoBtkF,EAAU8S,GACnC,MACJ,IAAK,SACD9nG,KAAKslG,iBACDtlG,KAAK4uB,OAAO6wF,iBACZl5G,OAAO+/F,UAAU,aAAaizE,UAAU,IAE5C,MACJ,IAAK,YACDv5K,KAAKs5G,YACL,MACJ,IAAK,QACDt5G,KAAKw5K,oBAAoBrsK,EAAE/J,SAC3B,MACJ,IAAK,MACGpD,KAAK4uB,OAAOi3C,aAAa4zG,kBACzBz5K,KAAK4iH,UAAU5tB,GAEnB,MAERh1F,KAAK0lK,qBAAsB,EAC3B1lK,KAAKu9I,cAAe,EACpBv9I,KAAKuxK,kBACDvxK,KAAK4uB,OAAOsrB,iBACZl6C,KAAK0uK,gBAAgB,QAAQ,GAC7B1uK,KAAKkxK,wBAETlxK,KAAKygH,+BAhGGn4G,IAAUtI,KAAK4uB,OAAOoxD,qBACtBhgF,KAAKslG,kBAiGjBq/D,EAAUzkK,UAAU64K,eAAiB,SAAU5rK,GAC3C,IAAIgnB,EACA1nB,EAAQ,KACRw3G,EAAgB92G,EAAE/J,QAAQ8I,cAAc,2BAC5C,GAAIlM,KAAK8iF,kBAAkBs1F,sBAAwB,gBAAajrK,EAAE/J,QAAS,kBAEvE,GADApD,KAAK0lK,sBAAsBv4J,EAAEqC,UAAUgtC,SACnCynE,EAAe,CACf,GAAyB,eAArB92G,EAAEk1I,QAAQ1hI,QAAgD,cAArBxT,EAAEk1I,QAAQ1hI,OAC/C,OAAOlU,EAEX0nB,EAAM8vF,EAAcv5G,aAAa,gBACjC,IAAIgvK,EAAc15K,KAAK25K,kBAAkB35K,KAAK4uB,OAAOkM,eAAe3G,GAAKhF,SACrEyqJ,EAAY55K,KAAK4uB,OAAOimE,oBAAoB6kF,EAAYA,EAAY/4K,OAAS,GAAGwzB,KAChF0lJ,EAAa75K,KAAK4uB,OAAOimE,oBAAoB6kF,EAAY,GAAGvlJ,KAChE1nB,EAAQzM,KAAK01K,cAAgBkE,EAAYC,EAAaD,OAGtDntK,EAAQzM,KAAK4uB,OAAOimE,oBAAoB1nF,EAAE/J,QACrC8I,cAAc,oBAAoBxB,aAAa,iBAG5D,OAAO+B,GAQXk4J,EAAUzkK,UAAUo5G,UAAY,WACxBt5G,KAAKkoK,cAAgBloK,KAAK4pK,eAC1B5pK,KAAK83H,kBAAkB,EAAG93H,KAAKwnK,+BAA+B7mK,OAAS,GAEvEX,KAAKwsK,eAAiBxsK,KAAK4pK,eAC3B5pK,KAAK6nG,mBAAmB,CAAE7S,SAAU,EAAG8S,UAAW,GAAK,CAAE9S,SAAUh1F,KAAK4uB,OAAOojE,UAAUrxF,OAAS,EAAGmnG,UAAW9nG,KAAK4uB,OAAO8H,aAAa/1B,OAAS,KAG1JgkK,EAAUzkK,UAAUs5K,oBAAsB,SAAUl5K,GAC5CA,EAAO4E,UAAUmB,SAAS,qBAC1BrG,KAAKgrK,cAAgB1qK,EACrBN,KAAK82K,eAAe92K,KAAKgrK,gBAGrB1qK,EAAO4E,UAAUmB,SAAS,mBAC1BrG,KAAKgrK,cAAgB1qK,EACrBN,KAAKk3K,YAAYl3K,KAAKgrK,iBAIlCrG,EAAUzkK,UAAU+4K,eAAiB,SAAUjkF,EAAU8S,GACrD,IAAIx1E,EAAOtyB,KAAK4uB,QACZ5uB,KAAK4uB,OAAOoxD,qBAAoD,UAA7BhgF,KAAK4uB,OAAOqxD,cAA6BjgF,KAAK8iF,kBAAkBC,kBAClG/iF,KAAK8iF,kBAAkB68D,eACxB3/I,KAAK02K,sBAAqB,GAC1B12K,KAAKgrK,cAAgB,MAErBhrK,KAAKkoK,cAAgBloK,KAAK8iF,kBAAkB68D,eACxC3/I,KAAK4uB,OAAOwrB,WACZp6C,KAAK4iH,UAAU5tB,GAAU,GACzBh1F,KAAK85K,YAAYxnJ,EAAKo7E,mBAO1B1tG,KAAKwsK,cACLxsK,KAAK4tH,WAAW,CAAE54B,SAAUA,EAAU8S,UAAWA,IAAa,GAE9D9nG,KAAK8iF,kBAAkBs1F,sBAAwBp4K,KAAK0lK,qBACpD1lK,KAAK+5K,aAAajyE,IAG1B68D,EAAUzkK,UAAU45K,YAAc,SAAU9kF,GACxC,KAAIA,EAAW,GAAf,CAGKh1F,KAAKM,SACNN,KAAKM,OAASN,KAAK4uB,OAAOojE,UAAU,GAAGpxE,SAAS5gB,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,QAAU,IAEhG,IAAIq5K,EAASroK,SAAS3R,KAAKM,OAAOoK,aAAa,QAAwB,IACnE2sB,EAAMr3B,KAAKg7F,gBAAgBwM,cAAcxS,GAK7C,GAJI39D,IACAr3B,KAAKM,OAAS+2B,EAAIlf,uBAAuB,QAAkBxG,SAASqoK,EAAOpoK,WAAY,MAE3F5R,KAAKwtK,aAAaxtK,KAAKM,QACnBN,KAAK4uB,OAAOxrB,QAAQ8B,UAAUmB,SAAS,mBAAoB,CAC3D,IAAI2yK,EAAch5K,KAAKM,OAAOoK,aAAa,cAC3CsuK,EAAch5K,KAAKM,OAAOwK,UAC1B9K,KAAKM,OAAOqK,aAAa,aAAcquK,MAG/CrU,EAAUzkK,UAAUg5K,kBAAoB,SAAUlkF,EAAU8S,GACpD9nG,KAAK8iF,kBAAkBs1F,sBAAwBp4K,KAAK0lK,oBACpD1lK,KAAK+5K,aAAajyE,GAEb9nG,KAAKwsK,eACVxsK,KAAK4tH,WAAW,CAAE54B,SAAUA,EAAU8S,UAAWA,IAAa,GAC9D9nG,KAAKwtK,aAAaxtK,KAAKM,UAG/BqkK,EAAUzkK,UAAUm5K,gBAAkB,SAAUrkF,EAAU8S,GAClD9nG,KAAKwsK,aACLxsK,KAAK4tH,WAAW,CAAE54B,SAAUA,EAAU8S,UAAWA,IAAa,GAG9D9nG,KAAKwtK,aAAaxtK,KAAK4uB,OAAO64E,iBAAiBzS,EAAU8S,KAWjE68D,EAAUzkK,UAAUi5K,aAAe,SAAUnkF,EAAU8S,GACnD9nG,KAAK6kK,qBAAsB,EACvB7kK,KAAKkoK,cAAgBloK,KAAK4pK,gBACrB,gBAAY5pK,KAAK0oK,cAIb1oK,KAAKikF,mBACVjkF,KAAK4iH,UAAU5tB,GAAU,GAGzBh1F,KAAK4iH,UAAU,GAAG,IAPlB5iH,KAAK83H,kBAAkB93H,KAAK0oK,aAAc1zE,GAC1Ch1F,KAAK85K,YAAY9kF,KASrBh1F,KAAKwsK,eAAiBxsK,KAAK4pK,eAC3B5pK,KAAK6nG,mBAAmB7nG,KAAKsrK,WAAa,CAAEt2E,SAAU,EAAG8S,UAAW,GAAK,CAAE9S,SAAUA,EAAU8S,UAAWA,IAE9G9nG,KAAK6kK,qBAAsB,GAE/BF,EAAUzkK,UAAUk5K,uBAAyB,SAAUpkF,EAAU8S,GAC7D9nG,KAAK6kK,qBAAsB,EACvB7kK,KAAK8iF,kBAAkBs1F,sBAAwBp4K,KAAK0lK,oBACpD1lK,KAAKi6K,qBAAqBj6K,KAAK01K,aAAc5tE,GAG7C9nG,KAAK6nG,mBAAmB7nG,KAAKsrK,UAAW,CAAEt2E,SAAUA,EAAU8S,UAAWA,IAE7E9nG,KAAK6kK,qBAAsB,GAE/BF,EAAUzkK,UAAUy5K,kBAAoB,SAAUpqJ,GAE9C,IADA,IAAI2qJ,EAAqB,GAChBl5K,EAAI,EAAGiiB,EAAMsM,EAAO5uB,OAAQK,EAAIiiB,EAAKjiB,IACtCuuB,EAAO5d,SAAS3Q,EAAE4Q,WAAY,KAAKud,QACnCnvB,KAAK25K,kBAAkBpqJ,EAAO5d,SAAS3Q,EAAE4Q,WAAY,KAAKud,SAG1D+qJ,EAAmB7tK,KAAKkjB,EAAO5d,SAAS3Q,EAAE4Q,WAAY,MAG9D,OAAOsoK,GAEXvV,EAAUzkK,UAAUo5K,oBAAsB,SAAUtkF,EAAU8S,GACtD9nG,KAAKkoK,cACLloK,KAAK4iH,UAAU5tB,GAAU,GACzBh1F,KAAKwtK,aAAaxtK,KAAK4uB,OAAO64E,iBAAiBzS,EAAU8S,KAEzD9nG,KAAKwsK,cACLxsK,KAAK4tH,WAAW,CAAE54B,SAAUA,EAAU8S,UAAWA,IAAa,IAGtE68D,EAAUzkK,UAAUmqK,uBAAyB,SAAUhzI,EAAK8mB,EAAOg8H,GAE/D,IADA,IAAIp0J,EAAO,GACFlY,EAAK,EAAGA,EAAKnN,UAAUC,OAAQkN,IACpCkY,EAAKlY,EAAK,GAAKnN,UAAUmN,GAE7B,GAAIwpB,EAAK,CACL,IAAIoqB,EAAQ,GAAG/zC,MAAMpK,KAAK+zB,EAAIlf,uBAAuB,SACjDiiK,EAAmB/iJ,EAAInrB,cAAc,yBAA2BmrB,EAAInrB,cAAc,sBAClFmuK,EAAqBhjJ,EAAInrB,cAAc,kBACvCkuK,GACA34H,EAAMp1C,KAAK+tK,GAEXC,GACA54H,EAAMp1C,KAAKguK,GAEf,OAAuBv3K,WAAM,EAAQ,CAAC2+C,EAAOtD,GAAOlP,OAAOlpB,IAE/D/lB,KAAK+6F,cAAcjnB,aAAaz8C,EAAMA,EAAI3sB,aAAa,YAAc,KAAMyzC,EAAOg8H,IAEtFxV,EAAUzkK,UAAUgoK,UAAY,WAC5B,MAAuC,QAAhCloK,KAAK8iF,kBAAkBgkB,MAAkD,SAAhC9mG,KAAK8iF,kBAAkBgkB,MAE3E69D,EAAUzkK,UAAUssK,WAAa,WAC7B,MAAuC,SAAhCxsK,KAAK8iF,kBAAkBgkB,MAAmD,SAAhC9mG,KAAK8iF,kBAAkBgkB,MAE5E69D,EAAUzkK,UAAU0pK,YAAc,WAC9B,MAAuC,WAAhC5pK,KAAK8iF,kBAAkBt0E,MAElCm2J,EAAUzkK,UAAU66F,YAAc,WAI9B,OAHI,eAAkB/6F,KAAKg7F,mBACvBh7F,KAAKg7F,gBAAkBh7F,KAAKknK,QAAQnsE,YAAY,OAAWE,UAExDj7F,KAAKg7F,iBAOhB2pE,EAAUzkK,UAAUmlG,mBAAqB,WACrC,IAAIokE,EAAe,GAQnB,OANIA,GADCzpK,KAAK8iF,kBAAkBC,kBAAoB/iF,KAAK2pH,gBAAgBhpH,OAClDX,KAAK4uB,OAAO6yD,gBAAgBxtD,QAAO,SAAUoD,GAAO,OAAOA,EAAI0oD,cACzEl5E,KAAI,SAAU0hG,GAAK,OAAOA,EAAE18E,QAGlB7rB,KAAKulK,oBAEjBkE,GAQX9E,EAAUzkK,UAAU65K,aAAe,SAAUttK,GACzC,IAAI6lB,EAAOtyB,KAAK4uB,OAChB,IAAI,eAAkB0D,EAAKoE,aAAa/kB,SAASlF,EAAMmF,WAAY,MAAnE,CAGA,IAAI2d,EAAS+C,EAAKo1E,iBAAiBj7F,GAC/B6tK,EAAchoJ,EAAKy2F,qBAAqBx5F,EAAO4E,KAC/ComJ,EAAgBD,EAAYp1K,UAAUmB,SAAS,qBACnD,GAAMisB,EAAKwwD,kBAAkBs1F,qBAA7B,CAGA,IAAIoC,EAAiBx6K,KAAK8pH,uBAAuBnpH,OAAS,GACtDX,KAAK8pH,uBAAuB9lH,QAAQyI,IAAU,EAElD,GADAzM,KAAKy6K,sBACAF,IAAkBv6K,KAAK8iF,kBAAkBqnF,cAAgBqQ,EAAgB,CAC1E,IAAIz0J,EAAO,CACP24F,YAAajyG,EAAOmvF,WAAY0+E,EAChC/qJ,OAAQA,EACR9gB,QAAQ,EAAOnO,OAAQN,KAAK4oK,aAC5Bj6J,aAAc3O,KAAK2O,aAAc+rK,oBAAqB16K,KAAK01K,aAC3DnN,cAAevoK,KAAK8kK,mBAAoB0D,eAAgBxoK,KAAK6kK,qBAGjE,GADA7kK,KAAKiuJ,cAAcloI,EAAM,SACrBA,EAAKtX,OAEL,YADAzO,KAAKkpK,oBAGH52I,EAAKwwD,kBAAkBqnF,cAAgB19J,IAAUzM,KAAK01K,cAAgB6E,IAAkBC,GAC1Fx6K,KAAK26K,mBAAmBL,EAAa7tK,GAEzC,IAAImuK,EAAe,CACfl8D,YAAajyG,EAAOmvF,WAAY0+E,EAChC/qJ,OAAQA,EACRjvB,OAAQN,KAAK4oK,aACbj6J,aAAc3O,KAAK2O,aAAc+rK,oBAAqB16K,KAAK01K,cAE/D11K,KAAK8jG,iBAAiB82E,EAAc,SAExC56K,KAAK66K,eAAepuK,MASxBk4J,EAAUzkK,UAAU+5K,qBAAuB,SAAUn1F,EAAY+oC,GAC7D,IAAIv7F,EAAOtyB,KAAK4uB,OAChB,IAAI,eAAkB0D,EAAKoE,aAAa/kB,SAASmzE,EAAWlzE,WAAY,MAAxE,CAGA,IAAIyhF,EAAU,GACd,GAAoC,WAAhC/gE,EAAKwwD,kBAAkBt0E,MAAqB,eAAkBq/G,GAC9Dx6B,EAAQ,GAAKvO,OAIb,IADA,IAAIroE,EAAMqoE,EAAa+oC,EACd7sH,EAAI8jF,EAAYroE,EAAMzb,GAAK6sH,EAAW7sH,GAAK6sH,EAAUpxG,EAAMzb,IAAMA,IACtEqyF,EAAQhnF,KAAKrL,GAGrBhB,KAAK86K,cAAcznF,KAQvBsxE,EAAUzkK,UAAU46K,cAAgB,SAAUC,GAC1C,IAAIzoJ,EAAOtyB,KAAK4uB,OACZ0rJ,EAAct6K,KAAKg7K,kBAIvB,GAHoC,WAAhC1oJ,EAAKwwD,kBAAkBt0E,OACvBusK,EAAgB,CAACA,EAAc,KAE9BzoJ,EAAKwwD,kBAAkBs1F,qBAA5B,CAGAp4K,KAAKy6K,qBACL,IAAIQ,EAAgB,CAChBv8D,YAAaq8D,EAAc,GAAIn/E,WAAY0+E,EAC3CS,cAAeA,EACfxrJ,OAAQ+C,EAAKo1E,iBAAiBqzE,EAAc,IAC5CtsK,QAAQ,EAAOnO,OAAQN,KAAK4oK,aAC5Bj6J,aAAc3O,KAAK2O,aAAc+rK,oBAAqB16K,KAAK01K,aAC3DnN,cAAevoK,KAAK8kK,mBAAoB0D,eAAgBxoK,KAAK6kK,qBAGjE,GADA7kK,KAAKiuJ,cAAcgtB,EAAe,SAC9BA,EAAcxsK,OACdzO,KAAKkpK,wBADT,CAIA,IAAK,IAAIloK,EAAI,EAAGiiB,EAAM83J,EAAcp6K,OAAQK,EAAIiiB,EAAKjiB,IACjDhB,KAAK26K,mBAAmBroJ,EAAKy2F,qBAAqBz2F,EAAKo1E,iBAAiBqzE,EAAcppK,SAAS3Q,EAAE4Q,WAAY,MAAMuiB,KAAM4mJ,EAAcppK,SAAS3Q,EAAE4Q,WAAY,MAElK0oK,EAAct6K,KAAKg7K,kBACnB,IAAIJ,EAAe,CACfl8D,YAAaq8D,EAAc,GAAIn/E,WAAY0+E,EAC3CS,cAAeA,EACfxrJ,OAAQ+C,EAAKo1E,iBAAiBqzE,EAAc,IAC5Cz6K,OAAQN,KAAK4oK,aACbj6J,aAAc3O,KAAK2O,aAAc+rK,oBAAqB16K,KAAK01K,cAE/D11K,KAAK8jG,iBAAiB82E,EAAc,SACpC56K,KAAK66K,eAAeE,EAAc,OAQtCpW,EAAUzkK,UAAUg7K,yBAA2B,SAAUp2F,GACrD,IAAIxyD,EAAOtyB,KAAK4uB,OAChB,IAAI,eAAkB0D,EAAKoE,aAAa/kB,SAASmzE,EAAWlzE,WAAY,MAAxE,CAGA,IAAIupK,EAAS7oJ,EAAKy2F,qBAAqBz2F,EAAKo1E,iBAAiB5iB,GAAY3wD,KACrEmmJ,EAAct6K,KAAKg7K,kBAIvB,GAHoC,WAAhC1oJ,EAAKwwD,kBAAkBt0E,MACvBxO,KAAKy6K,qBAEJnoJ,EAAKwwD,kBAAkBs1F,qBAA5B,CAGA,GAAIp4K,KAAK8pH,uBAAuB9lH,QAAQ8gF,IAAe,EACnD9kF,KAAKqrK,qBAAqBvmF,OAEzB,CACD,IAAIm2F,EAAgB,CAChBv8D,YAAa55B,EAAY8W,WAAY0+E,EACrCS,cAAe/6K,KAAK8pH,uBACpBv6F,OAAQ+C,EAAKo1E,iBAAiB5iB,GAC9Br2E,QAAQ,EAAOnO,OAAQN,KAAK4oK,aAC5Bj6J,aAAc3O,KAAK2O,aAAc+rK,oBAAqB16K,KAAK01K,aAC3DnN,cAAevoK,KAAK8kK,mBAAoB0D,eAAgBxoK,KAAK6kK,qBAGjE,GADA7kK,KAAKiuJ,cAAcgtB,EAAe,SAC9BA,EAAcxsK,OAEd,YADAzO,KAAKkpK,oBAGTlpK,KAAK26K,mBAAmBQ,EAAQr2F,GAChCw1F,EAAct6K,KAAKg7K,kBACnB,IAAIJ,EAAe,CACfl8D,YAAa55B,EAAY8W,WAAY0+E,EACrC/qJ,OAAQ+C,EAAKo1E,iBAAiB5iB,GAC9Bi2F,cAAe/6K,KAAK8pH,uBACpBxpH,OAAQN,KAAK4oK,aACbj6J,aAAc3O,KAAK2O,aAAc+rK,oBAAqB16K,KAAK01K,cAE/D11K,KAAK8jG,iBAAiB82E,EAAc,SAExC56K,KAAK66K,eAAe/1F,MAQxB6/E,EAAUzkK,UAAUmrK,qBAAuB,SAAU+P,GACjD,GAAIp7K,KAAKsgF,iBAAkB,CACvB,IAAIhuD,EAAOtyB,KAAK4uB,OAChB,IAAK,eAAkBwsJ,KAAoE,IAArDp7K,KAAK8pH,uBAAuB9lH,QAAQo3K,GACtE,OAEJ,IAAI3uK,EAAS,eAAkB2uK,GAC3Bp7K,KAAK8pH,uBAAuB9pH,KAAK8pH,uBAAuBnpH,OAAS,GADxBy6K,EAEzC7rJ,EAAS+C,EAAKo1E,iBAAiBj7F,GAC/B6tK,EAAchoJ,EAAKy2F,qBAAqBx5F,EAAO4E,KAC/CknJ,EAAiB,CACjB38D,YAAajyG,EAAOmvF,WAAY0+E,EAChCS,cAAe/6K,KAAK8pH,uBACpBv6F,OAAQA,EACR9gB,QAAQ,EAAOnO,OAAQN,KAAK4oK,aAC5Bj6J,aAAc3O,KAAK2O,cAEnB2sK,EAAat7K,KAAKu7K,eAAeF,EAAgB,SACrD,GAAIC,EAEA,YADAt7K,KAAKkpK,oBAMT,IAHA,IAAIsS,EAAkB,eAAkBJ,GACpC,GAAG1tK,MAAMpK,KAAKgvB,EAAK+nB,mBAAmBliC,uBAAuB,sBADX,CAACmiK,GAEnDhM,EAAgBtuK,KAAKy7K,uBAAuBL,GACvCp6K,EAAI,EAAGiiB,EAAMu4J,EAAe76K,OAAQK,EAAIiiB,EAAKjiB,IAClD,eAAuB,CAACw6K,EAAe7pK,SAAS3Q,EAAE4Q,WAAY,OAAO,EAAO,qBAEhF,IAAS5Q,EAAI,EAAGiiB,EAAMqrJ,EAAc3tK,OAAQK,EAAIiiB,EAAKjiB,IACjD,eAAuB,CAACstK,EAAc38J,SAAS3Q,EAAE4Q,WAAY,OAAO,EAAO,qBAE1E,eAAkBwpK,IAKnBp7K,KAAKu7K,eAAeF,EAAgB,SACpCr7K,KAAK8pH,uBAAyB,GAC9B9pH,KAAKsgF,kBAAmB,EACxBtgF,KAAK4uB,OAAO8H,aAAazC,QAAO,SAAUiF,GAAO,OAAOA,EAAI6mD,YAAa,OAPzE//E,KAAK8pH,uBAAuBp9G,OAAO1M,KAAK8pH,uBAAuB9lH,QAAQo3K,GAAa,GACpFp7K,KAAK4uB,OAAO8H,aAAa/kB,SAASypK,EAAWxpK,WAAY,KAAKmuE,YAAa,KAUvF4kF,EAAUzkK,UAAU86K,gBAAkB,WAClC,IACIV,EADAhoJ,EAAOtyB,KAAK4uB,OAEhB,GAAI5uB,KAAK8pH,uBAAuBnpH,OAAS,EAAG,CACxC25K,EAAc,GACd,IAAK,IAAIt5K,EAAI,EAAGA,EAAIhB,KAAK8pH,uBAAuBnpH,OAAQK,IACpD,EAAcqL,KAAKimB,EAAKy2F,qBAAqBz2F,EAAKo1E,iBAAiB1nG,KAAK8pH,uBAAuBn4G,SAAS3Q,EAAE4Q,WAAY,MAAMuiB,WAIhImmJ,EAAchoJ,EAAKy2F,qBAAqBz2F,EAAKo1E,iBAAiB1nG,KAAK8pH,uBAAuB,IAAI31F,KAElG,OAAOmmJ,GAEX3V,EAAUzkK,UAAUu7K,uBAAyB,SAAUL,GAMnD,IALA,IAAI9oJ,EAAOtyB,KAAK4uB,OACZ8sJ,GAAiB,eAAkB17K,KAAK4uB,OAAOswD,aAC/C/nD,EAAOukJ,EAAgBppJ,EAAK0/D,UAAY1/D,EAAK41E,cAC7CyzE,EAAe,GACfC,EAAmB,eAAkBR,GAAuD,qBAAzC,mBAAqBA,EAAa,KAChFp6K,EAAI,EAAGiiB,EAAMkU,EAAKx2B,OAAQK,EAAIiiB,EAAKjiB,IACxC26K,EAAeA,EAAa1sI,OAAO,GAAGvhC,MAAMpK,KAAK6zB,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,iBAAiBk5J,KAEvG,OAAOD,GAEXhX,EAAUzkK,UAAUq7K,eAAiB,SAAUx1J,EAAMrX,GAKjD,MAJc,qBAAVA,UACOqX,EAAKtX,OAEhBzO,KAAK8jG,iBAAiB/9E,EAAMrX,GACrBqX,EAAKtX,QAEhBk2J,EAAUzkK,UAAU26K,eAAiB,SAAU/1F,GAC3C9kF,KAAK01K,aAAe5wF,EACpB9kF,KAAKsgF,iBAAmBtgF,KAAK8pH,uBAAuBnpH,SAAU,GAElEgkK,EAAUzkK,UAAUu6K,mBAAqB,WACrCz6K,KAAKqrK,uBACLrrK,KAAK8pH,uBAAyB,IAElC66C,EAAUzkK,UAAUy6K,mBAAqB,SAAUL,EAAax1F,GAC5D,IAAI,eAAkB9kF,KAAK4uB,OAAO8H,aAAa/kB,SAASmzE,EAAWlzE,WAAY,MAA/E,CAGA,IAAI8pK,GAAiB,eAAkB17K,KAAK4uB,OAAOswD,aAC/C/nD,EAAOukJ,EAAgB17K,KAAK4uB,OAAOojE,UAAYhyF,KAAK4uB,OAAOs5E,cAC/DloG,KAAK8pH,uBAAuBz9G,KAAKy4E,GACjC9kF,KAAK4uB,OAAO8H,aAAa/kB,SAASmzE,EAAWlzE,WAAY,KAAKmuE,YAAa,EAC3E+E,GAA0B9kF,KAAK4uB,OAAOsyB,iBACtC,eAAuB,CAACo5H,IAAc,EAAM,qBAC5C,IAAK,IAAIhjJ,EAAI,EAAGrU,EAAMkU,EAAKx2B,OAAQ22B,EAAIrU,EAAKqU,IACpCH,EAAKxlB,SAAS2lB,EAAE1lB,WAAY,KAAK1M,UAAUmB,SAAS,WAC/C8wB,EAAKxlB,SAAS2lB,EAAE1lB,WAAY,KAAK1M,UAAUmB,SAAS,UAClD8wB,EAAKxlB,SAAS2lB,EAAE1lB,WAAY,KAAK1M,UAAUmB,SAAS,SAClB,WAAlCrG,KAAK4uB,OAAOi3C,aAAaihC,MACxB,eAAkB3vE,EAAKxlB,SAAS2lB,EAAE1lB,WAAY,KAAK1F,cAAc,MAAM4oC,WAAWnjC,SAASmzE,EAAWlzE,WAAY,MAGhH,eAAkBulB,EAAKxlB,SAAS2lB,EAAE1lB,WAAY,KAAKkjC,WAAWnjC,SAASmzE,EAAWlzE,WAAY,OACpG,eAAuB,CAACulB,EAAKxlB,SAAS2lB,EAAE1lB,WAAY,KAAKkjC,WAAWnjC,SAASmzE,EAAWlzE,WAAY,OAAO,EAAM,qBAHjH,eAAuB,CAACulB,EAAKxlB,SAAS2lB,EAAE1lB,WAAY,KAAK1F,cAAc,MAAM4oC,WAAWnjC,SAASmzE,EAAWlzE,WAAY,OAAO,EAAM,wBAQrJ+yJ,EAAUzkK,UAAUu4K,uBAAyB,SAAU1oF,IAC7C/vF,KAAK8kK,qBAAuB9kK,KAAK6kK,qBAAwB7kK,KAAK4pK,cAChE5pK,KAAK+5K,aAAahqF,GAEb/vF,KAAK6kK,oBACV7kK,KAAKi6K,qBAAqB,gBAAYj6K,KAAK01K,cAAgB3lF,EAAW/vF,KAAK01K,aAAc3lF,GAGzF/vF,KAAKk7K,yBAAyBnrF,IAItC40E,EAAUzkK,UAAUk1K,0BAA4B,WAC5C,IAAI/xK,EAAQrD,KACZA,KAAK4uB,OAAOG,GAAG,QAAkB/uB,KAAKqyH,UAAWryH,MACjDA,KAAK67K,oBAAsB77K,KAAKw2K,YAAY5wK,KAAK5F,MACjDA,KAAK4uB,OAAOiqB,iBAAiB,QAAkB74C,KAAK67K,qBACpD77K,KAAK4uB,OAAOG,GAAG,QAAwC/uB,KAAK67K,qBAC5D77K,KAAK4uB,OAAOG,GAAG,QAAqB/uB,KAAK21K,yBAA0B31K,MACnEA,KAAK4uB,OAAOG,GAAG,OAAkC/uB,KAAKy1K,sBAAuBz1K,MAC7EA,KAAK4uB,OAAOG,GAAG,QAAgB/uB,KAAK87K,wBAAyB97K,MAC7DA,KAAK6jG,mBAAqB7jG,KAAK+7K,sBAAsBn2K,KAAK5F,MAC1DA,KAAK4uB,OAAOiqB,iBAAiB,OAAuB74C,KAAK6jG,oBACzD7jG,KAAK4uB,OAAOG,GAAG,OAAc/uB,KAAKsoC,aAActoC,MAChDA,KAAKg8K,YAAc,WACf34K,EAAMo9G,yBACNp9G,EAAMitK,eAEVtwK,KAAKg8K,YAAYp2K,KAAK5F,MACtBA,KAAK4uB,OAAOiqB,iBAAiB,QAAmB74C,KAAKg8K,cAGzDrX,EAAUzkK,UAAUm1K,6BAA+B,WAC/Cr1K,KAAK4uB,OAAOyF,IAAI,QAAkBr0B,KAAKqyH,WACvCryH,KAAK4uB,OAAOgtB,oBAAoB,QAAkB57C,KAAK67K,qBACvD77K,KAAK4uB,OAAOgtB,oBAAoB,OAAuB57C,KAAK6jG,oBAC5D7jG,KAAK4uB,OAAOyF,IAAI,QAAwCr0B,KAAK67K,qBAC7D77K,KAAK4uB,OAAOyF,IAAI,QAAgBr0B,KAAK87K,yBACrC97K,KAAK4uB,OAAOyF,IAAI,OAAcr0B,KAAKsoC,cACnCtoC,KAAK4uB,OAAOyF,IAAI,OAAkCr0B,KAAKy1K,wBAE3D9Q,EAAUzkK,UAAU47K,wBAA0B,WAC1C,IAAIr4B,EAAczjJ,KAAKw1K,iBACvB,GAAI/xB,EAAa,CACbzjJ,KAAK4uB,OAAOoxD,qBAAsB,EAClC,IAAI+3F,EAAUt0B,EAAYxvG,mBAC1B,gBAAY,CAAC8jI,GAAU,CAAC,UAAW,SAAU,cAC7C,eAAS,CAACA,EAAQp2J,eAAgB,CAAC,0BAG3CgjJ,EAAUzkK,UAAUmyH,UAAY,SAAUllH,GACtCnN,KAAK6oK,yBAA0B,EAC/B,IAAIoT,EAAkBj8K,KAAK4uB,OAAOiJ,yBAA6C,mBAAlB1qB,EAAE4gB,YACzC,kBAAlB5gB,EAAE4gB,aAAoC/tB,KAAK4uB,OAAOwgF,oBAAuB6sE,IACzEj8K,KAAK6lK,WAAa7lK,KAAK4uB,OAAOo2D,uBAA2C,SAAlB73E,EAAE4gB,aAA0C,QAAhB5gB,EAAE,WACrFnN,KAAKslG,iBACLtlG,KAAKirK,mBACLjrK,KAAK6lK,WAAY,IAGzBlB,EAAUzkK,UAAU67K,sBAAwB,SAAU5uK,GAC5B,SAAlBA,EAAE4gB,aAA0B/tB,KAAK4uB,OAAOwgF,oBACxCpvG,KAAK+1K,2BAGbpR,EAAUzkK,UAAUkpK,eAAiB,SAAU38J,GAC3CzM,KAAK4uB,OAAO+zF,4BAA6B,EACpC,eAAkB3iH,KAAK4uB,OAAO8+E,oBAAuD,IAAlC1tG,KAAK4uB,OAAO8+E,mBAA6B1tG,KAAK4uB,OAAO+kE,kBACzG3zF,KAAK4uB,OAAO8+E,iBAAmBjhG,EAG/BzM,KAAK4uB,OAAO8+E,kBAAoB,GAGxCi3D,EAAUzkK,UAAUgpK,kBAAoB,WACpClpK,KAAK2O,cAAe,GAExBg2J,EAAUzkK,UAAUkoK,aAAe,WAC/BpoK,KAAK4oK,aAAe5oK,KAAK2O,aAAe3O,KAAK4oK,aAAe,MAEzDjE,EAz5HmB,I,kCCd9B,kGAWIuX,EAAoC,WACpC,SAASA,EAAmBttJ,GACxB5uB,KAAK4uB,OAASA,EAuOlB,OArOAstJ,EAAmBh8K,UAAU64C,kBAAoB,WAC7C,IAAI/3C,EAAI,EACJqyF,EAAUrzF,KAAK4uB,OAAO0kE,yBACtB6oF,GAAQ,EACRC,EAAoB,EACxB,GAAIp8K,KAAK4uB,OAAO8D,cACZ,IAAK,IAAIzP,EAAMjjB,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,OAAQK,EAAIiiB,EAAKjiB,IAC1DhB,KAAK4uB,OAAOqrB,6BAAsD,IAAxBo5C,EAAQrvF,QAAQhD,GAC1Dm7K,GAAQ,EAGZn8K,KAAKq8K,eAAe,IAAI,OAAO,CAAE/2K,MAAO,SAAWtE,IAGvDhB,KAAK4uB,OAAOuxB,gBAAkBngD,KAAK4uB,OAAOwxB,aAC1CpgD,KAAKq8K,eAAe,IAAI,OAAO,CAAE/2K,MAAO,SAAWtE,GACnDA,KAEAhB,KAAK4uB,OAAOyxB,iBAAmD,UAAhCrgD,KAAK4uB,OAAO+2D,kBAC3C3lF,KAAKq8K,eAAe,IAAI,OAAO,CAAE/2K,MAAO,SAAWtE,GACnDA,KAGJ,IADA,IAAImuB,EAAUnvB,KAAK4uB,OAAO8H,aACjBY,EAAI,EAAGA,EAAInI,EAAQxuB,OAAQ22B,IAChCt3B,KAAKq8K,eAAeltJ,EAAQxd,SAAS2lB,EAAE1lB,WAAY,KAAMuqK,GAASn8K,KAAK4uB,OAAOqrB,gCAA6B1uC,EAAY+rB,EAAIt2B,GAE3HhB,KAAK4uB,OAAOyxB,iBAAmD,UAAhCrgD,KAAK4uB,OAAO+2D,iBAC3C3lF,KAAKq8K,eAAe,IAAI,OAAO,CAAE/2K,MAAO,SAAWtF,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,OAASwuB,EAAQxuB,QAE1Gy7K,EAAoBp8K,KAAKmvH,cAAcnvH,KAAK4uB,OAAO8H,cACzB,SAAtB12B,KAAK4uB,OAAOtpB,QAAmE,IAA/CtF,KAAK4uB,OAAOtpB,MAAMsM,WAAW5N,QAAQ,MACrEhE,KAAKovH,yBAAyBgtD,IAGtCF,EAAmBh8K,UAAUkvH,yBAA2B,SAAUktD,GAC9D,IAAIC,EAAa,EACb9xI,EAAazqC,KAAK4uB,OAAO8H,aAAazC,QAAO,SAAUuuB,GACvD,OAAO,eAAkBA,EAAEl9C,QAAsB,SAAZk9C,EAAEl9C,SAE3C,GAAImlC,EAAW9pC,OAAQ,CAMf47K,EALC,eAAkBv8K,KAAK4uB,OAAOtpB,QAAgC,SAAtBtF,KAAK4uB,OAAOtpB,OACtB,kBAAvBtF,KAAK4uB,OAAY,QAAsD,IAApC5uB,KAAK4uB,OAAOtpB,MAAMtB,QAAQ,KAIxDhE,KAAK4uB,OAAOxrB,QAAQgE,wBAAwB9B,MAAQg3K,GAHtB,kBAAtBt8K,KAAK4uB,OAAOtpB,MAAqBqM,SAAS3R,KAAK4uB,OAAOtpB,MAAO,IAAMtF,KAAK4uB,OAAOtpB,OAASg3K,EAMjH,IADA,IAAIE,EAAU,EACL3uK,EAAK,EAAG4uK,EAAehyI,EAAY58B,EAAK4uK,EAAa97K,OAAQkN,IAAM,CACxE,IAAI0pB,EAAOklJ,EAAa5uK,GACxB2uK,GAAY,eAAkBjlJ,EAAKu8B,UACuD,EAA3D,kBAAlBv8B,EAAKu8B,SAAwBniD,SAAS4lB,EAAKu8B,SAAU,IAAMv8B,EAAKu8B,SAEjF,IAAK,IAAI9yD,EAAI,EAAGA,EAAIypC,EAAW9pC,OAAQK,IAAK,CACzB,IAAXs7K,GAAgBt8K,KAAK4uB,OAAO4mB,eAAiBx1C,KAAK08K,oBAAuB17K,IAAMypC,EAAW9pC,OAAS,GACnGX,KAAK28K,wBAAwBlyI,GAEjC,IAAIh+B,EAAQzM,KAAK4uB,OAAOohE,sBAAsBvlD,EAAW94B,SAAS3Q,EAAE4Q,WAAY,KAAKigB,OAAS7xB,KAAK4uB,OAAOsyB,iBAC3F,IAAXo7H,GAAgBC,EAAaC,EAC7Bx8K,KAAKkb,SAASuvB,EAAW94B,SAAS3Q,EAAE4Q,WAAY,KAAKkiD,SAAUrnD,GAE/C,IAAX6vK,GAAgBC,EAAaC,GAClCx8K,KAAKkb,SAAS,GAAIzO,GAAO,MAKzCyvK,EAAmBh8K,UAAUy8K,wBAA0B,SAAUlyI,GAC7D,IAAK,IAAIhT,EAAI,EAAGA,EAAIgT,EAAW9pC,OAAQ82B,IAC/BA,IAAMgT,EAAW9pC,OAAS,IAC1B8pC,EAAW94B,SAAS8lB,EAAE7lB,WAAY,KAAKtM,MAAQ,IAC/CtF,KAAKkb,SAAS,IAAKlb,KAAK4uB,OAAOohE,sBAAsBvlD,EAAW94B,SAAS8lB,EAAE7lB,WAAY,KAAKigB,UAIxGqqJ,EAAmBh8K,UAAUm8K,eAAiB,SAAU9sJ,EAAQ9iB,EAAOoN,GACnE,KAAI7Z,KAAK4uB,OAAO8H,aAAa/1B,OAAS,GAAtC,CAGA,IAAI+9G,EAAc,eAAkBjyG,GAASzM,KAAK4uB,OAAOwmE,yBAAyB7lE,EAAO4E,KAAO1nB,EAC5FmwK,EAAS58K,KAAK68K,SAASttJ,GACvB2/F,EAAalvH,KAAKmvH,cAAcnvH,KAAK4uB,OAAO8H,cACjC,OAAXkmJ,IACA58K,KAAKkb,SAAS0hK,EAAQl+D,GACI,SAAtB1+G,KAAK4uB,OAAOtpB,QAAmE,IAA/CtF,KAAK4uB,OAAOtpB,MAAMsM,WAAW5N,QAAQ,MACrEhE,KAAKovH,yBAAyBF,GAE7BlvH,KAAK4uB,OAAO4mB,eAA4B,WAAX37B,GAC9B7Z,KAAK6iH,kBAET7iH,KAAK4uB,OAAOhV,OAAO,QAAoB,CAAEnN,MAAOiyG,EAAap5G,MAAOs3K,EAAQrtJ,OAAQA,EAAQ1V,OAAQA,OAG5GqiK,EAAmBh8K,UAAUgb,SAAW,SAAU5V,EAAOmH,EAAOnE,GAC5D,GAAItI,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,OAAS8L,GAAS,gBAAkBzM,KAAK4uB,QAAS,CACpF,IAAIkuJ,EAAe98K,KAAK4uB,OAAOxrB,QAAQoG,YACvClE,GAAS,GAAKw3K,EAAe,KAAK9tD,QAAQ,GAAK,IAEnD,IAAInzE,EAAS77C,KAAK4uB,OAAO8kE,iBACrB7oF,EAAU7K,KAAK4uB,OAAOgwB,kBACtBm+H,EAAS,eAAWz3K,GACpBopH,EAAY7yE,EAAO3vC,cAAc,QAAmB0U,SAASjP,SAASlF,EAAMmF,WAAY,KACxF88G,IAAcpmH,EACdomH,EAAU3nH,MAAMzB,MAAQy3K,EAEnBruD,GAAapmH,IAClBomH,EAAU3nH,MAAMzB,MAAQ,IAE5B,IAAIqpH,EAAa9jH,EAAQqB,cAAc,QAAmB0U,SAASjP,SAASlF,EAAMmF,WAAY,KAO9F,GANI+8G,IAAermH,EACfqmH,EAAW5nH,MAAMzB,MAAQy3K,EAEpBpuD,GAAcrmH,IACnBqmH,EAAW5nH,MAAMzB,MAAQ,KAExBtF,KAAK4uB,OAAOqrB,4BAA8Bj6C,KAAK4uB,OAAOmuB,OAAQ,CAG/D,IAFA,IAAIrrB,EAAO1xB,KAAK4uB,OAAOxrB,QAAQsf,iBAAiB,0BAC5Cs6J,EAAe,GACVh8K,EAAI,EAAGA,EAAI0wB,EAAK/wB,OAAQK,IAC7B,GAAI,gBAAa0wB,EAAK/f,SAAS3Q,EAAE4Q,WAAY,KAAM,UAAUtG,KAAOtL,KAAK4uB,OAAOxrB,QAAQkI,GACpF,IAAK,IAAIgsB,EAAI,EAAGA,EAAI5F,EAAK/f,SAAS3Q,EAAE4Q,WAAY,KAAK1F,cAAc,YAAY0U,SAASjgB,OAAQ22B,IAC5F0lJ,EAAa3wK,KAAKqlB,EAAK/f,SAAS3Q,EAAE4Q,WAAY,KAAK1F,cAAc,YAAY0U,SAASjP,SAAS2lB,EAAE1lB,WAAY,MAIrH8f,EAAK/wB,QAAUq8K,EAAar8K,SAC5Bq8K,EAAarrK,SAASlF,EAAMmF,WAAY,KAAK7K,MAAMzB,MAAQy3K,GAG/D/8K,KAAK4uB,OAAOsrB,gBAAkBl6C,KAAK4uB,OAAOqrB,4BAC1Cj6C,KAAKqvH,0BAOb6sD,EAAmBh8K,UAAUmvH,uBAAyB,WAClD,IAAItpG,EAAO,CAAEtX,QAAQ,GAErB,GADAzO,KAAK4uB,OAAOhV,OAAO,QAA4BmM,IAC3CA,EAAKtX,OAAT,CAGA,IAAIosC,EAAc,iBACdoiI,EAAmBj9K,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,uBACrDgxK,EAAel9K,KAAK4uB,OAAOorB,aAAav4B,kBAAkBra,wBAAwB9B,MACtF,GAAItF,KAAK4uB,OAAOqrB,2BAA4B,CACxC,IAAIkjI,EAAcn9K,KAAK4uB,OAAOorB,aAAa9tC,cAAc,mBACrDixK,IACAD,EAAeC,EAAYtiI,aAGR,SAAvB76C,KAAK4uB,OAAOvpB,SACZ63K,GAA8BriI,GAElCoiI,EAAiBx7J,kBAAkB1a,MAAMzB,MAAQ43K,EAAe,OAEpEhB,EAAmBh8K,UAAUs7C,kBAAoB,SAAUp4C,GACvD,IAAIkqC,EAAWttC,KAAKo9K,uBAAuBh6K,EAAS,YAChDoqC,EAAOxtC,KAAKo9K,uBAAuBh6K,EAAS,QAChD,OAAOkqC,EAAWE,GAEtB0uI,EAAmBh8K,UAAUk9K,uBAAyB,SAAUh6K,EAASshB,GACrE,IAAI24J,EAAUj6K,EAAQshB,EAAY,kBAC9BsM,EAAS,EACT9rB,EAAY,CAAC,OAAqB,OAAqB,kBAAmB,cAAe,YAAa,kBAC1G,MAAOm4K,EACCn4K,EAAU80B,MAAK,SAAUvhB,GAAS,OAAO4kK,EAAQn4K,UAAUmB,SAASoS,QACpEuY,GAAUqsJ,EAAQ5zK,cAEtB4zK,EAAUA,EAAQ34J,EAAY,kBAElC,OAAOsM,GAEXkrJ,EAAmBh8K,UAAUw8K,iBAAmB,WAC5C,IAAIY,EAAkBt9K,KAAK4uB,OAAO8H,aAAazC,QAAO,SAAUiF,GAC5D,OAAO,eAAkBA,EAAI5zB,QAAU,eAAkB4zB,EAAI46B,aAC9DnzD,OACH,OAAQX,KAAK4uB,OAAO8H,aAAa/1B,SAAW28K,GAEhDpB,EAAmBh8K,UAAU28K,SAAW,SAAUttJ,GAK9C,GAJI,eAAkBA,EAAOjqB,QAAUtF,KAAK4uB,OAAO4mB,eAC5C,eAAkBjmB,EAAOukC,YAAc9zD,KAAK08K,qBAC/CntJ,EAAOjqB,MAAQ,MAEdiqB,EAAOjqB,MACR,OAAO,KAEX,IAAIA,EAAQqM,SAAS4d,EAAOjqB,MAAMsM,WAAY,IAC9C,OAAI2d,EAAOukC,UAAYxuD,EAAQqM,SAAS4d,EAAOukC,SAASliD,WAAY,IACzD2d,EAAOukC,SAERvkC,EAAO3f,UAAYtK,EAAQqM,SAAS4d,EAAO3f,SAASgC,WAAY,IAC/D2d,EAAO3f,SAGP2f,EAAOjqB,OAGtB42K,EAAmBh8K,UAAUivH,cAAgB,SAAUhgG,GAEnD,IADA,IAAImtJ,EAAS,EACJzuK,EAAK,EAAG+sB,EAAYzL,EAASthB,EAAK+sB,EAAUj6B,OAAQkN,IAAM,CAC/D,IAAI0hB,EAASqL,EAAU/sB,GACnB+uK,EAAS58K,KAAK68K,SAASttJ,GACN,SAAjBA,EAAOjqB,QACPs3K,EAAS,IAEU,IAAnBrtJ,EAAOqH,SAAgC,OAAXgmJ,IAC5BN,GAAU3qK,SAASirK,EAAOhrK,WAAY,KAG9C,OAAO0qK,GAEXJ,EAAmBh8K,UAAU2iH,gBAAkB,WAC3C,IAAIy5D,EAAS,eAAWt8K,KAAKmvH,cAAcnvH,KAAK4uB,OAAO8H,gBACnD12B,KAAK4uB,OAAOuxB,gBAAkBngD,KAAK4uB,OAAOwxB,YAC1CpgD,KAAKq8K,eAAe,IAAI,OAAO,CAAE/2K,MAAO,UAE5Cg3K,EAASt8K,KAAKu9K,eAAiB,OAASjB,EACxCt8K,KAAK4uB,OAAO8kE,iBAAiB3sF,MAAMzB,MAAQg3K,EAC3Ct8K,KAAK4uB,OAAOgwB,kBAAkB73C,MAAMzB,MAAQg3K,EAC5C,IAAI5qJ,EAAO1xB,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,0BACzCwlB,IACAA,EAAK3qB,MAAMzB,MAAQg3K,IAG3BJ,EAAmBh8K,UAAUq9K,aAAe,WACxC,OAAOv9K,KAAK4uB,OAAO4mB,eAAqD,SAApCx1C,KAAK4uB,OAAO0hG,eAAexpB,MAE5Do1E,EAzO4B,I,iOCIhC,SAASsB,EAAaj5K,EAAeiL,EAAW3E,EAAS4yK,EAAYh4K,EAAWqiE,GACnF,IAAI41G,EACAC,EACAC,EAAapuK,EAAUmS,cAS3B,GARmB,YAAf87J,GACAC,EAAkB51G,GAAUt4D,EAAUpI,wBAAwB/B,OAC9Ds4K,EAAgB9yK,EAAQzD,wBAAwB/B,SAGhDq4K,EAAkBluK,EAAUpI,wBAAwB9B,MACpDq4K,EAAgB9yK,EAAQzD,wBAAwB9B,OAEhDo4K,EAAkBC,EAClB,OAAOE,EAAgBt5K,EAAeiL,EAAW3E,EAAS4yK,EAAYh4K,EAAWqiE,GAEhF,GAAI81G,EAAY,CACjB,IAAIt4K,EAAQs4K,EAAWx2K,wBAAwB9B,MAC/C,OAAIA,EAAQo4K,GAAkC,YAAfD,GAC3BE,EAAgBr4K,EAChBkK,EAAUzI,MAAM6I,SAAWtK,EAAQ,KAC5Bu4K,EAAgBt5K,EAAeiL,EAAW3E,EAAS4yK,EAAYh4K,EAAWqiE,IAE9Ej9D,EAGP,OAAOA,EAef,SAASgzK,EAAgBt5K,EAAeiL,EAAW3E,EAAS4yK,EAAYh4K,EAAWqiE,GAC/E,IAWIg2G,EAXA5uH,EAAY3qD,EAAc,MAAO,CAAEC,UAAW,UAAYi5K,IAoB9D,OAnBAjuK,EAAU9K,YAAYwqD,GACtBA,EAAUxqD,YAAYmG,GAClBi9D,GACA5Y,EAAUnoD,MAAM8nD,SAAW,SAC3BK,EAAUnoD,MAAM1B,OAASyiE,EAAS,OAGlC5Y,EAAUnoD,MAAM8qD,UAAYriD,EAAUzI,MAAM8qD,UAC5CriD,EAAUzI,MAAM8nD,SAAW,UAGZ,YAAf4uH,GACAK,EAAY,IAAI,OAAQ,CAAEr4K,UAAWA,GAAaypD,GAClD4uH,EAAUv0H,WAAa,gBAAO,MAAQk0H,EAAa,OAAQjuK,GAAW/F,aAAe,IAGrFq0K,EAAY,IAAI,OAAQ,CAAEr4K,UAAWA,GAAaypD,GAClD4uH,EAAUv0H,WAAa,gBAAO,MAAQk0H,EAAa,OAAQjuK,GAAWhG,aAEnE0lD,EAWJ,SAAS1E,EAAcszH,EAAW16K,EAAS0pD,GAC9C,GAAIgxH,EAAW,CACX,IAAIC,EAAO,gBAAO,iBAAkB36K,GAChC26K,EACKjxH,GAAWA,IAAYixH,IACxBD,EAAUtrK,UACVpP,EAAQue,cAAcjd,YAAYq5K,GAClC,eAAO36K,KAIX06K,EAAUtrK,UACV,eAAOpP,KCnGnB,IAAI/D,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxCK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAc5Do9K,EAAQ,QACRC,EAAS,SACTC,EAAU,YACV5/I,EAAS,gBACT5nB,EAAW,aACXynK,EAAY,cACZC,EAAU,UACVC,EAAY,YACZC,EAAY,YACZC,EAAa,aACb33B,EAAO,OACPD,EAAM,MACNF,EAAM,MACN+3B,EAAQ,UACRC,EAAO,cACPz/I,EAAW,aACX0/I,EAAO,cACPnoK,EAAQ,UACR9U,EAAM,QACNsU,EAAQ,eACR4oK,EAAoB,WAIpB,EAA+B,SAAU97K,GAEzC,SAAS+7K,IACL,OAAkB,OAAX/7K,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAuB/D,OAzBAX,EAAUu/K,EAAe/7K,GAIzBzC,EAAW,CACP,eAAS,OACVw+K,EAAc1+K,UAAW,cAAU,GACtCE,EAAW,CACP,eAAS,aACVw+K,EAAc1+K,UAAW,gBAAY,GACxCE,EAAW,CACP,eAAS,SACVw+K,EAAc1+K,UAAW,YAAQ,GACpCE,EAAW,CACP,eAAS,YACVw+K,EAAc1+K,UAAW,eAAW,GACvCE,EAAW,CACP,eAAS,QACVw+K,EAAc1+K,UAAW,WAAO,GACnCE,EAAW,CACP,eAAS,cACVw+K,EAAc1+K,UAAW,iBAAa,GACzCE,EAAW,CACP,eAAS,UACVw+K,EAAc1+K,UAAW,gBAAY,GACjC0+K,EA1BuB,CA2BhC,QAKE,EAA0B,SAAU/7K,GAEpC,SAASg8K,IACL,OAAkB,OAAXh8K,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAoB/D,OAtBAX,EAAUw/K,EAAUh8K,GAIpBzC,EAAW,CACP,eAAS,OACVy+K,EAAS3+K,UAAW,eAAW,GAClCE,EAAW,CACP,eAAS,KACVy+K,EAAS3+K,UAAW,UAAM,GAC7BE,EAAW,CACP,gBAAS,IACVy+K,EAAS3+K,UAAW,iBAAa,GACpCE,EAAW,CACP,eAAW,GAAIy+K,IAChBA,EAAS3+K,UAAW,aAAS,GAChCE,EAAW,CACP,eAAS,KACVy+K,EAAS3+K,UAAW,YAAQ,GAC/BE,EAAW,CACP,eAAS,KACVy+K,EAAS3+K,UAAW,WAAO,GACvB2+K,EAvBkB,CAwB3B,QAKE,EAAuC,SAAUh8K,GAEjD,SAASi8K,IACL,OAAkB,OAAXj8K,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAW/D,OAbAX,EAAUy/K,EAAuBj8K,GAIjCzC,EAAW,CACP,eAAS,cACV0+K,EAAsB5+K,UAAW,cAAU,GAC9CE,EAAW,CACP,eAAS,MACV0+K,EAAsB5+K,UAAW,gBAAY,GAChDE,EAAW,CACP,eAAS,SACV0+K,EAAsB5+K,UAAW,cAAU,GACvC4+K,EAd+B,CAexC,QAOE,EAA0B,SAAUj8K,GASpC,SAASk8K,EAAS57K,EAASC,GACvB,IAAIC,EAAQR,EAAOS,KAAKtD,KAAMmD,EAASC,IAAYpD,KAMnD,OALAqD,EAAM27K,OAAS,GACf37K,EAAMkK,UAAY,IAAI,OAAU,IAChClK,EAAM47K,WAAY,EAClB57K,EAAMiqD,SAAW,GACjBjqD,EAAM67K,cAAgB,OACf77K,EAgqEX,OA/qEAhE,EAAU0/K,EAAUl8K,GAuBpBk8K,EAAS7+K,UAAU4T,UAAY,WAC3B,IAAK9T,KAAKm/K,OAAQ,CACd,IAAI3hG,OAAK,EACT,GAA6B,oBAAzBx9E,KAAKoD,QAAQsM,QAA+B,CAC5C8tE,EAAKx9E,KAAKuE,cAAc,KAAM,CAC1B+G,GAAI,eAAYtL,KAAK8U,iBAAkBtQ,UAAW,qBAAuBxE,KAAK8U,kBAElF,IAAIsqK,EAAS,eAAS,gBAAiBp/K,KAAKoD,SAC5C,gBAAY,CAACpD,KAAKoD,SAAU,CAAC,YAAa,QAAS,KAAOpD,KAAK8U,kBAC/D9U,KAAKq/K,cAAgBr/K,KAAKoD,QAC1BpD,KAAKoD,QAAUo6E,EACf,gBAAS,gBAAiB4hG,EAAQp/K,KAAKoD,aAEtC,CACDo6E,EAAKx9E,KAAKuE,cAAc,KAAM,CAAE+G,GAAI,eAAYtL,KAAK8U,mBACrD,eAAO,GAAGpH,MAAMpK,KAAKtD,KAAKoD,QAAQskB,WAAU,GAAM9G,UAAW48D,GAC7D,IAAI8hG,EAASt/K,KAAKoD,QAAQ6wC,mBACtBqrI,EACAt/K,KAAKoD,QAAQue,cAAc6D,aAAag4D,EAAI8hG,GAG5Ct/K,KAAKoD,QAAQue,cAAcjd,YAAY84E,GAE3Cx9E,KAAKq/K,cAAgB7hG,EAEzBx9E,KAAKq/K,cAAct4K,MAAMC,QAAU,OAEvC,GAA6B,aAAzBhH,KAAKoD,QAAQsM,QAAwB,CAKrC,IAJA,IAAI4d,EAAMttB,KAAKoD,QACXy8H,EAAa,eAAS,gBAAiBvyG,GAEvCimB,GADAiqC,EAAKx9E,KAAKuE,cAAc,MACdvE,KAAKuE,cAAc,WAAY,CAAEC,UAAW,KAAOxE,KAAK8U,gBAAkB,cAC/EogF,EAAM,EAAGjyE,EAAMqK,EAAI7F,WAAW9mB,OAAQu0F,EAAMjyE,EAAKiyE,IACtD1X,EAAG7yE,aAAa2iB,EAAI7F,WAAWytE,GAAK+qC,SAAU3yG,EAAI7F,WAAWytE,GAAKgrC,WAEtE5yG,EAAImmB,WAAWjuB,aAAa+tB,EAASjmB,GACrC,eAAOA,GACPA,EAAMkwD,EACNjqC,EAAQ7uC,YAAY4oB,GACpB,gBAAS,gBAAiBuyG,EAAYvyG,GACtCttB,KAAKq/K,cAAgB9rI,EACrBvzC,KAAKoD,QAAUkqB,EACVttB,KAAKoD,QAAQkI,KACdtL,KAAKoD,QAAQkI,GAAK,eAAYtL,KAAK8U,oBAU/CiqK,EAAS7+K,UAAUyT,OAAS,WACxB,IAAItQ,EAAQrD,KACZA,KAAK2D,aACL3D,KAAK8tD,cACL9tD,KAAK4T,aACL5T,KAAK6T,iBACL,IAAI0/B,EAAUvzC,KAAKg0C,aAEfh0C,KAAK42C,UAAY52C,KAAKu/K,kBAAoBv/K,KAAKmI,SAAWnI,KAAKoX,YAC/D0nD,uBAAsB,WAClB0+G,EAAan6K,EAAMkB,cAAegvC,EAASlwC,EAAMD,QAAS,UAAWC,EAAMoC,eAIvFs5K,EAAS7+K,UAAUyD,WAAa,WAC5B,IAAI4vC,EAAUvzC,KAAKg0C,aACdT,IACDA,EAAUvzC,KAAKuE,cAAc,MAAO,CAAEC,UAAW,KAAOxE,KAAK8U,gBAAkB,aAC3E9U,KAAKm/K,OACLn/K,KAAKoD,QAAQue,cAAc6D,aAAa+tB,EAASvzC,KAAKoD,SAGtDwK,SAAS6B,KAAK/K,YAAY6uC,IAG9BvzC,KAAKyK,UACL,eAAS,CAAC8oC,GAAUvzC,KAAKyK,SAASoQ,QAAQ,OAAQ,KAAKtO,OAAOtI,MAAM,MAEpEjE,KAAKyF,WACL8tC,EAAQruC,UAAU4G,IAAIrK,GAE1B8xC,EAAQ7uC,YAAY1E,KAAKoD,SACrBpD,KAAKm/K,QAAUn/K,KAAKw/K,gBACfx/K,KAAKM,QACNN,KAAKy/K,sBAAsBlsI,IAGnCvzC,KAAK0/K,cAAgB1/K,KAAK2/K,iBAE9BZ,EAAS7+K,UAAU4tD,YAAc,WAC7B,IAAK9tD,KAAKypD,MAAM9oD,OAAQ,CACpB,IAAI8oD,EAAQ,OAASm2H,sBAAsB5/K,KAAKoD,QAAS,CAAEuuB,OAAQ,CAAEijI,MAAO,WAC5E50J,KAAKiL,cAAc,CAAEw+C,MAAOA,IAAS,GACjC,mBAAezpD,KAAKm/K,OACpBn/K,KAAKoD,QAAUpD,KAAK6/K,mBAAmB7/K,KAAKoD,SAG5CpD,KAAKoD,QAAQ0H,UAAY,GAGjC,IAAI0yE,EAAKx9E,KAAK8/K,YAAY9/K,KAAKypD,OAG/B,GAFA,eAAO7pD,MAAMM,UAAUwN,MAAMpK,KAAKk6E,EAAG58D,UAAW5gB,KAAKoD,SACrDpD,KAAKoD,QAAQ8B,UAAU4G,IAAI,iBACvB9L,KAAKm/K,QAIL,IAHKn/K,KAAKw/K,eAAiBx/K,KAAKoD,QAAQ8B,UAAUmB,SAAS,eACvDrG,KAAK49E,kBAAkB59E,KAAKoD,SAE5BpD,KAAKu/K,gBAAiB,CACtB,IAAIhsI,EAAUvzC,KAAKg0C,aACfh0C,KAAKoD,QAAQ8B,UAAUmB,SAAS,cAChCm3K,EAAax9K,KAAKuE,cAAegvC,EAASvzC,KAAKoD,QAAS,UAAWpD,KAAKyF,WAGxE+3K,EAAax9K,KAAKuE,cAAegvC,EAASvzC,KAAKoD,QAAS,UAAWpD,KAAKyF,iBAKhFzF,KAAKoD,QAAQue,cAAchX,aAAa,OAAQ,UAChD3K,KAAKoD,QAAQue,cAAchX,aAAa,aAAc,iBAG9Do0K,EAAS7+K,UAAU0T,WAAa,WAC5B,IAAI2/B,EAAUvzC,KAAKg0C,aACnB,GAAIh0C,KAAKM,OAAQ,CAGb,IAFA,IAAIA,OAAS,EACTy/K,EAAc,gBAAU//K,KAAKM,QACxBU,EAAI,EAAGiiB,EAAM88J,EAAYp/K,OAAQK,EAAIiiB,EAAKjiB,IAC/CV,EAASy/K,EAAY/+K,GACjBhB,KAAKm/K,OACL,OAAarzK,IAAIxL,EAAQ,QAASN,KAAKggL,uBAAwBhgL,MAG3D,OAAQqnI,MACR,IAAI,OAAM/mI,EAAQ,CAAE+T,QAASrU,KAAKk8D,aAAat2D,KAAK5F,QAGpD,OAAa8L,IAAIxL,EAAQ,cAAeN,KAAKigL,aAAcjgL,MAKvE,GADAA,KAAKiS,cAAgB3R,GAChBN,KAAKm/K,OAAQ,CACd,OAAarzK,IAAI9L,KAAKiS,cAAe,4BAA6BjS,KAAK0T,cAAe1T,MACtF,IAAK,IAAI6N,EAAK,EAAGhK,EAAK,eAAoB7D,KAAKiS,eAAgBpE,EAAKhK,EAAGlD,OAAQkN,IAAM,CACjF,IAAIqyK,EAAWr8K,EAAGgK,GAClB,OAAa/B,IAAIo0K,EAAU,4BAA6BlgL,KAAK0T,cAAe1T,QAInF,OAAQ2P,WACT3P,KAAKmgL,qBAAuBngL,KAAKogL,aAAax6K,KAAK5F,MACnDA,KAAKqgL,yBAA2BrgL,KAAKizE,iBAAiBrtE,KAAK5F,MAC3D,OAAa8L,IAAI9L,KAAKm/K,OAASvxK,SAAW2lC,EAAS,YAAavzC,KAAKmgL,qBAAsBngL,MAC3F,OAAa8L,IAAI8B,SAAU,YAAa5N,KAAKqgL,yBAA0BrgL,OAE3EA,KAAKsgL,qBAAuBtgL,KAAKsoC,aAAa1iC,KAAK5F,MACnD,OAAa8L,IAAI8B,SAAU,QAAS5N,KAAKsgL,qBAAsBtgL,MAC/DA,KAAK8pD,kBAAkBvW,GACvBvzC,KAAK8vE,SAAW,gBAAav8B,EAAS,CAAE5R,SAAU,IAAM88I,KAE5DM,EAAS7+K,UAAU4pD,kBAAoB,SAAU1mD,GAC7C,IAAIob,EAAa,CACb+hK,UAAWlC,EACXmC,QAASpC,EACTl2J,MAAO81J,EACPyC,UAAWnC,EACXoC,WAAYnC,EACZt2J,OAAQg2J,GAERj+K,KAAKm/K,SACL3gK,EAAWkK,KAAOk+H,EAClBpoI,EAAW2D,IAAMwkI,EACjBnoI,EAAW0K,IAAMu9H,GAErB,IAAI,OAAerjJ,EAAS,CACxBub,UAAW3e,KAAK2gL,gBAAgB/6K,KAAK5F,MACrCwe,WAAYA,KAGpBugK,EAAS7+K,UAAU+yE,iBAAmB,SAAU9lE,GACxC,eAAQA,EAAE7M,OAAQ,MAAQN,KAAK8U,gBAAkB,cAAgB9U,KAAKg0C,cACjE,eAAQ7mC,EAAE7M,OAAQ,MAAQN,KAAK8U,gBAAkB,WACtD9U,KAAK4gL,UAAU5gL,KAAKm/K,OAAS,KAAOn/K,KAAKg/K,OAAOr+K,OAAQwM,IAGhE4xK,EAAS7+K,UAAUqzE,WAAa,SAAUpmE,GACpB,KAAdA,EAAEqG,SAAgC,KAAdrG,EAAEqG,SAClBrG,EAAE7M,SAAW6M,EAAE7M,OAAO4E,UAAUmB,SAAS,kBAAoB8G,EAAE7M,OAAO4E,UAAUmB,SAAS,iBACzF8G,EAAE+F,kBAId6rK,EAAS7+K,UAAUygL,gBAAkB,SAAUxzK,GAC3C,IAAI0zK,EAAa,GACbn1H,EAAOv+C,EAAE7M,OACTwgL,EAAe9gL,KAAKm/K,SAAWn/K,KAAKw/K,gBAAkBx/K,KAAKoD,QAAQ8B,UAAUmB,SAAS,eACnFrG,KAAKg/K,OAAOr+K,OAAS,EAK5B,GAJAwM,EAAE+F,iBACElT,KAAKu/K,iBAAiC,KAAdpyK,EAAEqG,SAAkBk4C,EAAKxmD,UAAUmB,SAAS,iBACpErG,KAAK+gL,qBAAqB,CAAC7C,EAASxnK,GAAW,CAAC,eAAQg1C,EAAM,MAAQ1rD,KAAK8U,gBAAkB,cAE7FgsK,EACA,OAAQ3zK,EAAEwT,QACN,KAAK49J,EACDsC,EAAatC,EACbpxK,EAAEwT,OAAS09J,EACX,MACJ,KAAKC,EACDuC,EAAavC,EACbnxK,EAAEwT,OAASy9J,EACX,MACJ,KAAKC,EACDwC,EAAaxC,EACblxK,EAAEwT,OAAS49J,EACX,MACJ,KAAKH,EACDyC,EAAazC,EACbjxK,EAAEwT,OAAS,GACX,WAGP,GAAI3gB,KAAKyF,UACV,OAAQ0H,EAAEwT,QACN,KAAK29J,EACDwC,GAAe,EACfD,EAAavC,EACbnxK,EAAEwT,OAAS49J,EACX,MACJ,KAAKA,EACDuC,GAAe,EACfD,EAAatC,EACbpxK,EAAEwT,OAAS29J,EACX,MAGZ,OAAQnxK,EAAEwT,QACN,KAAK09J,EACL,KAAKD,EACL,KAAKz3B,EACL,KAAKC,EACL,KAAKH,EACDzmJ,KAAKu9E,iBAAiBpwE,GACtB,MACJ,KAAKoxK,EACDv+K,KAAKghL,qBAAqB7zK,GAC1B,MACJ,KAAKmxK,EACDt+K,KAAKihL,kBAAkB9zK,GACvB,MACJ,KAAK6wK,EACGh+K,KAAKw/K,eAAkC,SAAjB9zH,EAAKh8C,SAAsBg8C,EAAKxmD,UAAUmB,SAAS,eACzErG,KAAKggL,uBAAuB7yK,GAG5BnN,KAAKghL,qBAAqB7zK,GAE9B,MACJ,KAAK8wK,EACDj+K,KAAKihL,kBAAkB9zK,GACvB,MAEJ2zK,IACA3zK,EAAEwT,OAASkgK,IAGnB9B,EAAS7+K,UAAUq9E,iBAAmB,SAAUpwE,GAC5C,IAAI+zK,EAAMlhL,KAAKmhL,gBACX1jG,EAActwE,EAAEwT,SAAW09J,GAAalxK,EAAEwT,SAAWimI,GAAQz5I,EAAEwT,SAAW8lI,EAAO,EAAIy6B,EAAIhzH,kBAAoB,EAC7GkzH,EAAS3jG,EACT4jG,EAAMrhL,KAAKshL,aAAaJ,EAAKhD,GAC7BmD,IACIl0K,EAAEwT,SAAWgmI,GAAOx5I,EAAEwT,SAAWimI,IACjCw6B,EAASphL,KAAKuhL,OAAOL,EAAKG,IAE9BA,EAAIn8K,UAAUC,OAAO+4K,GACjB/wK,EAAEwT,SAAWgmI,GAAOx5I,EAAEwT,SAAWimI,IAC7Bz5I,EAAEwT,SAAW09J,EACb+C,IAGAA,IAEAA,KAAYj0K,EAAEwT,SAAW09J,EAAY6C,EAAIhzH,mBAAqB,KAC9DkzH,EAAS3jG,KAIrB,IAAI+jG,EAAMN,EAAItgK,SAASwgK,GACvBA,EAASphL,KAAK00E,UAAU8sG,EAAKJ,EAAQj0K,EAAEwT,QACvCugK,EAAItgK,SAASwgK,GAAQl8K,UAAU4G,IAAIoyK,GACnCgD,EAAItgK,SAASwgK,GAAQrhK,SAEzBg/J,EAAS7+K,UAAUw0E,UAAY,SAAU8sG,EAAK/0K,EAAOkU,GACjD,IAAIugK,EAAMlhL,KAAKmhL,gBACX1jG,EAAc98D,IAAW09J,GAAa19J,IAAWimI,GAAQjmI,IAAW8lI,EAAO,EAAIy6B,EAAIhzH,kBAAoB,EAmB3G,OAlBIszH,EAAIt8K,UAAUmB,SAAS83K,IAAcqD,EAAIt8K,UAAUmB,SAAS24B,IAAawiJ,EAAIt8K,UAAUmB,SAASq4K,MAC5F/9J,IAAW09J,GAAa5xK,IAAUy0K,EAAIhzH,kBAAoB,GAGrDvtC,IAAWy9J,GAAqB,IAAV3xK,EAF3BA,EAAQgxE,EAKF98D,IAAW09J,GAAe19J,IAAW49J,EAC3C9xK,IAGAA,KAGR+0K,EAAMN,EAAItgK,SAASnU,IACf+0K,EAAIt8K,UAAUmB,SAAS83K,IAAcqD,EAAIt8K,UAAUmB,SAAS24B,IAAawiJ,EAAIt8K,UAAUmB,SAASq4K,MAChGjyK,EAAQzM,KAAK00E,UAAU8sG,EAAK/0K,EAAOkU,IAEhClU,GAEXsyK,EAAS7+K,UAAUihL,cAAgB,SAAUM,GACzC,IAAIp+K,EAAQrD,KAEZ,QADkB,IAAdyhL,IAAwBA,EAAYzhL,KAAKg/K,OAAOr+K,QAChDX,KAAKm/K,OAAQ,CACb,IAAI/4J,EAAQ,CAACpmB,KAAKg0C,cAAc/E,OAAO,GAAGvhC,MAAMpK,KAAK,gBAAU,IAAMyS,KAAS0rK,GAC1EC,EAAW,GACXC,EAAW,gBAAU,IAAM5rK,GAO/B,OANA4rK,EAASjuI,SAAQ,SAAUqZ,IACnB1pD,EAAMD,QAAQkI,KAAOyhD,EAAKzhD,GAAGrH,MAAM,KAAK,IAAM8oD,EAAKzhD,GAAGrH,MAAM,KAAK,GAAK,IAAM8oD,EAAKzhD,GAAGrH,MAAM,KAAK,KAC/Fy9K,EAASr1K,KAAK0gD,MAGtB3mC,EAAQ,CAACpmB,KAAKg0C,cAAc/E,OAAO,GAAGvhC,MAAMpK,KAAKo+K,IAAWD,GACrD,eAAkBr7J,GAAS,KAAO,gBAAO,iBAAkBA,GAGlE,OAAOpmB,KAAKg0C,aAAapzB,SAAS6gK,IAG1C1C,EAAS7+K,UAAU8gL,qBAAuB,SAAU7zK,GAChD,IAAImZ,EACA46J,EAAMlhL,KAAKmhL,gBACXE,EAAMrhL,KAAKshL,aAAaJ,EAAKhD,GACjC,GAAImD,EAAK,CACL,IAAID,EAASphL,KAAKuhL,OAAOL,EAAKG,GAC1BrC,EAASh/K,KAAKg/K,OAAO/vI,OAAOmyI,GAC5B7zH,EAAOvtD,KAAK4hL,QAAQ5C,GACxB,GAAIzxH,EAAK9D,MAAM9oD,OACXX,KAAKg/K,OAAO3yK,KAAK+0K,GACjBphL,KAAK6hL,QAAU,QACf7hL,KAAK2gB,OAASxT,EAAEwT,OAChB3gB,KAAK8hL,SAAST,EAAK9zH,GAAO,GAAI,EAAGpgD,QAGjC,GAAIA,EAAEwT,SAAWq9J,EAAO,CAChBh+K,KAAKm/K,QAAiC,IAAvBn/K,KAAKg/K,OAAOr+K,OAC3BX,KAAK+gL,qBAAqB,CAACrqK,GAAW,CAAC1W,KAAKg0C,eAG5CqtI,EAAIn8K,UAAUC,OAAO+4K,GAEzBmD,EAAIn8K,UAAU4G,IAAI4K,GAClB4P,EAAY,CAAEljB,QAASi+K,EAAK9zH,KAAMA,EAAM7+C,MAAOvB,GAC/CnN,KAAKiI,QAAQ,SAAUqe,GACvB,IAAIy7J,EAAOV,EAAIn1K,cAAc,eAC7B,GAAIqhD,EAAKnwB,KAAO2kJ,EACZ,OAAQA,EAAKr3K,aAAa,WACtB,IAAK,SACDnE,OAAOb,KAAK6nD,EAAKnwB,IAAK,UACtB,MACJ,IAAK,UACD72B,OAAOqoB,OAAOgyI,SAAS1mE,KAAO3sC,EAAKnwB,IACnC,MACJ,QACI72B,OAAOq6J,SAAS1mE,KAAO3sC,EAAKnwB,IAGxCp9B,KAAK4gL,UAAU,KAAMzzK,GACrB,IAAI60K,EAAMhiL,KAAKshL,aAAathL,KAAKmhL,gBAAiBzqK,GAC9CsrK,IACAA,EAAI98K,UAAU4G,IAAIoyK,GAClB8D,EAAIjiK,YAMxBg/J,EAAS7+K,UAAU+gL,kBAAoB,SAAU9zK,GACzCnN,KAAKg/K,OAAOr+K,QACZX,KAAK6hL,QAAU,OACf7hL,KAAK4gL,UAAU5gL,KAAKg/K,OAAOr+K,OAAQwM,IAG/BA,EAAEwT,SAAWs9J,GACbj+K,KAAK4gL,UAAU,KAAMzzK,IAIjC4xK,EAAS7+K,UAAUwT,cAAgB,SAAUvG,GACzCnN,KAAK4gL,UAAU,KAAMzzK,IAEzB4xK,EAAS7+K,UAAUg8D,aAAe,SAAU/uD,GACxCnN,KAAKi/K,WAAY,EACjBj/K,KAAKigL,aAAa9yK,EAAEF,gBAExB8xK,EAAS7+K,UAAU+/K,aAAe,SAAU9yK,GACxCA,EAAE+F,iBACFlT,KAAKwV,cAAgBrI,EAAE7M,OACvBN,KAAKiiL,SAAU,EACfjiL,KAAKoT,MAAQjG,EAAE+0K,eAAiB/0K,EAAE+0K,eAAe,GAAG9uK,MAAQ,EAAIjG,EAAEiG,MAAQ,EAC1EpT,KAAKqT,MAAQlG,EAAE+0K,eAAiB/0K,EAAE+0K,eAAe,GAAG7uK,MAAQ,EAAIlG,EAAEkG,MAAQ,EAC1ErT,KAAK4gL,UAAU,KAAMzzK,GACjBnN,KAAKiiL,UACDjiL,KAAKmiL,QAAQh1K,EAAE7M,SACfN,KAAK8hL,SAAS,KAAM,KAAM9hL,KAAKqT,MAAOrT,KAAKoT,MAAOjG,GAEtDnN,KAAKiiL,SAAU,IAIvBlD,EAAS7+K,UAAU0gL,UAAY,SAAUwB,EAASj1K,EAAGk1K,GACjD,IAAIh/K,EAAQrD,KAGZ,QAFgB,IAAZoiL,IAAsBA,EAAU,QAC1B,IAANj1K,IAAgBA,EAAI,MACpBnN,KAAKsiL,gBAAiB,CACtB,IACIC,EAGAnrH,EAJA4qH,OAAM,EAENQ,EAAYxiL,KAAKg0C,aACjByuI,OAAkB,EAElBC,EAAS1iL,KAAK2iL,YACdC,GAAU,EACV9sF,EAAM91F,KAAKm/K,OAASuD,EAAO/hL,OAAS,EAAI6hL,EAAUt0H,kBAClD20H,EAAO7iL,KAAKm/K,QAAkB,IAARrpF,EAAY,gBAAO,QAAS4sF,EAAO5sF,EAAM,IAC7D,gBAAU,iBAAkB0sF,GAAW1sF,EAAM,GAQnD,GAPI91F,KAAKm/K,QAAU0D,EAAK39K,UAAUmB,SAAS,YACvC27K,EAAMhiL,KAAKshL,aAAauB,EAAMnsK,GAC1BsrK,GACAA,EAAI98K,UAAUC,OAAOuR,GAEzBksK,GAAU,IAETA,EAAS,CACV,IAAIE,EAAW31K,GAAKA,EAAE7M,QAAUN,KAAK+iL,MAAM51K,EAAE7M,QAEzCN,KAAKwhL,IADLsB,GAIWD,EAAKjiK,SAAS,GAE7B2hK,EAASviL,KAAKg/K,OAAOr+K,OAASX,KAAK4hL,QAAQ5hL,KAAKg/K,QAAU,KAC1D5nH,EAAUmrH,EAASA,EAAO94H,MAAQzpD,KAAKypD,MACvCg5H,EAAkB,CAAEr/K,QAASy/K,EAAMG,WAAYT,EAAQ94H,MAAO2N,EAAS1oD,MAAOvB,EAAGsB,QAAQ,EAAOgJ,WAAW,GAC3GzX,KAAKiI,QAAQ,cAAew6K,GAAiB,SAAUQ,GACnD,IAAItxH,EACAuxH,EAEA99K,EAkCA+9K,EACAC,EACAC,EArCAC,EAAU,GAEVpxH,GAAU+wH,EAAkBx0K,QAC5ByjD,GAAU7uD,EAAM4+K,WACZ5+K,EAAM87K,QACNxtH,EAAW,eAAQkxH,EAAM,IAAM9sK,GAC3B1S,EAAMm8K,gBACN7tH,EAAShwC,cAAc5a,MAAM2mD,UAAY,GACzC,eAAQm1H,EAAM,gBAAgBl4K,aAAa,gBAAiB,UAEhEtH,EAAMkgL,oBAAoB5xH,GAC1BnH,EAAc,eAAYmH,EAAS/wC,SAAS,GAAI,QAAU+wC,EAAS/wC,SAAS,IAC5Exb,EAAW,eAAYusD,EAAU,QACjCvsD,EAAS8M,OACToxK,EAAU3xH,EAASrmD,GACnBlG,EAASoN,UACT,eAAOm/C,IAGPtuD,EAAMmgL,gBAAgBX,GAAM,GAEhCK,EAAY,CAAE9/K,QAASy/K,EAAMG,WAAYT,EAAQ94H,MAAO2N,GACxD/zD,EAAM4E,QAAQ,UAAWi7K,GACzB7/K,EAAM27K,OAAOyE,MACe,IAAxBpgL,EAAM27K,OAAOr+K,QAAgBwM,GAAgB,UAAXA,EAAEqB,OACpCnL,EAAMqgL,aAAc,GAEnBrgL,EAAM87K,SACP,OAAah6K,OAAO09K,EAAM,UAAWx/K,EAAMkwE,YACrB,UAAlBlwE,EAAMw+K,UACNx+K,EAAMw+K,QAAU,MAI5Bx+K,EAAMsgL,sBAIN,IAAIC,EAAYvgL,EAAM2wC,cAAgB3wC,EAAM89K,gBACxC99K,EAAM4+K,UACF5+K,EAAM8+K,QAAQh1K,EAAE7M,SAChB+C,EAAMy+K,SAAS,KAAM,KAAMz+K,EAAMgQ,MAAOhQ,EAAM+P,MAAOjG,GAEzD9J,EAAM4+K,SAAU,GAEhB5+K,EAAM87K,QAAUyE,GAAaN,EAAQ3iL,QAErCwiL,EAAW,IAAIjrH,OAAO,gBAAkB70D,EAAMD,QAAQkI,GAAK,UAAUg6H,KAAKg+C,GAAS,GACnFF,EAAWQ,EAAU13K,cAAc,QAAUi3K,EAAW,MACxDE,EAAUP,GAAYc,EAAU13K,cAAc,QAAU42K,EAASx3K,GAAK,OAEjEs4K,IACLR,EAAWQ,EAAU13K,cAAc,2BACnCm3K,EAAUP,GAAYc,EAAU13K,cAAc,QAAU42K,EAASx3K,GAAK,OAE1E,IAAIu4K,EAAWf,GAAYA,EAASpgK,iBAAiB,gBACrD,GAAIwvC,GAAU7uD,EAAMm8K,eAAiB4C,IAAayB,EAAe,OAC7DxgL,EAAMygL,eAAe32K,QAEpB,GAAI+kD,IAAW7uD,EAAMm8K,eAAiB4D,IAAaC,GAA4B,SAAlBhgL,EAAMw+K,UAAuBx+K,EAAM27K,OAAOr+K,SAAW0C,EAAM87K,QAAkC,IAAxB97K,EAAM27K,OAAOr+K,QAAe,CAC/J,IAAI2sB,EAAOngB,IAAMA,EAAE7M,OAAO4E,UAAUmB,SAAS,cAAgB8G,EAAE7M,OAAO4E,UAAUmB,SAAS,iBACnF,eAAQ8G,EAAE7M,OAAQ,mBAAqB,KACzCgtB,GACAA,EAAMA,EAAIphB,cAAc,iBACpB7I,EAAMs8K,iBAAoBryJ,GAAOjqB,EAAM0gL,SAASz2J,EAAIhiB,IAAI,GAAM3K,QAAU0C,EAAM27K,OAAOr+K,SACrF0C,EAAMu9K,UAAUv9K,EAAM27K,OAAO37K,EAAM27K,OAAOr+K,OAAS,GAAIwM,GAAG,IAIxDA,GAAKA,EAAE7M,OAAO4E,UAAUmB,SAAS,gBACnChD,EAAMu9K,UAAUv9K,EAAM27K,OAAO37K,EAAM27K,OAAOr+K,OAAS,GAAIwM,QAI9D,GAAI+kD,IAAWmwH,IAAeD,IAAa/+K,EAAMm8K,eAAiBn8K,EAAM27K,OAAOr+K,QACxD,IAAxB0C,EAAM27K,OAAOr+K,QAAgBmiL,GAAYc,IAAcd,EAASnhK,eAChEte,EAAMu9K,UAAU,KAAMzzK,QAErB,GAAI+kD,GAAU,eAAkBkwH,IAAY/+K,EAAM27K,OAAOr+K,OAC1D0C,EAAMu9K,UAAU,KAAMzzK,QAErB,IAAI+kD,GAAW7uD,EAAM87K,QAAWiD,GAAmC,IAAxB/+K,EAAM27K,OAAOr+K,QAAiB0C,EAAM2gL,cAI/E,GAAI9xH,GAAU7uD,EAAM87K,QAAUhyK,GAAKA,EAAE7M,QACd,IAAxB+C,EAAM27K,OAAOr+K,QAAgB,eAAQwM,EAAE7M,OAAQ,4BAC/C+C,EAAMu9K,UAAU,EAAGzzK,QAElB,GAAI+kD,IAAW7uD,EAAM87K,QAAU,gBAAU,iBAAkBqD,GAAWJ,EAAU,IAAkB,IAAZj1K,EAAE0/E,MACzFxpF,EAAMu9K,UAAU,KAAMzzK,OAErB,CACD,IAAI+kD,GAA6B,UAAlB7uD,EAAMw+K,SAAyC,UAAlBx+K,EAAMw+K,QAG7C,CACD,IAAIX,EAAM79K,EAAM89K,gBACZ8C,EAAQ5gL,EAAMi+K,aAAaJ,EAAKxqK,GAWpC,GAVIutK,IACAA,EAAMt5K,aAAa,gBAAiB,SACpCs5K,EAAM/+K,UAAUC,OAAOuR,IACnBusK,EAAkBxrK,WAAaqrK,GAA8B,SAAlBz/K,EAAMw+K,WACjDoC,EAAM/+K,UAAU4G,IAAIoyK,GACf/wK,EAAE7M,QAAW6M,EAAE7M,OAAO4E,UAAUmB,SAAS,oBAC1C49K,EAAMlkK,WAIbmyC,GAAU7uD,EAAMm8K,eAAiBsD,GAAuD,UAA3CA,EAASp4K,aAAa,kBACzB,SAA3Co4K,EAASp4K,aAAa,iBAA6B,CAC/C,eAAQo4K,EAAU,4BAClBz/K,EAAM27K,OAAS,GAGf37K,EAAM27K,OAAOyE,MAEjBpgL,EAAM27K,OAAO3yK,KAAKhJ,EAAM6gL,QACxB,IAAIC,EAAS9gL,EAAMu+K,QAAQv+K,EAAM27K,QACjC8D,EAASn4K,aAAa,gBAAiB,QACvCtH,EAAMy+K,SAASgB,EAAUqB,GAAS,GAAI,EAAGh3K,SA1B7C9J,EAAMygL,eAAe32K,GA6BrB9J,EAAM27K,OAAOr+K,OAAS,IACM,UAAxB0C,EAAM67K,eAAqD,UAAxB77K,EAAM67K,gBACzC77K,EAAMs8K,gBAAkBt8K,EAAMq8K,cAC9Br8K,EAAM67K,cAAgB,cA5C9B77K,EAAM2gL,eAAgB,EACtB3gL,EAAMu9K,UAAU,EAAGzzK,GA+CvB9J,EAAM+gL,2BAKtBrF,EAAS7+K,UAAUyjL,oBAAsB,WAErC,GAAI3jL,KAAKmI,SAAWnI,KAAK42C,UAAmC,IAAvB52C,KAAKg/K,OAAOr+K,OAAc,CAE3D,IAAIitD,EAAU5tD,KAAK4tD,QAAQlhD,OAAO,EAAG1M,KAAKypD,MAAM9oD,QAChDX,KAAKqI,cAAc,CAAC,aAEpBrI,KAAK4tD,QAAUA,EACf5tD,KAAK0L,yBAGbqzK,EAAS7+K,UAAUmkL,iBAAmB,SAAU92H,EAAM9M,GAClD,GAAI,eAAkB8M,GAClB,OAAO,KAEP,eAAkB9M,KAClBA,EAAQ,GAEZ,IAAI9uB,EAAS3xB,KAAKskL,UAAU7jI,GAC5B,MAAO,CAAE3uB,KAAMy7B,EAAK57B,EAAOG,MAAOxmB,GAAIiiD,EAAK57B,EAAOrmB,IAAKm+C,MAAO8D,EAAK57B,EAAOijI,OAAQxmG,UAAWb,EAAK57B,EAAOy8B,WACrGsK,QAASnL,EAAK57B,EAAO+mC,SAAUt7B,IAAKmwB,EAAK57B,EAAOyL,OAExD2hJ,EAAS7+K,UAAUyiL,UAAY,WAC3B,IAAIt/K,EAAQrD,KACR0iL,EAAS,GAMb,MALA,GAAGh1K,MAAMpK,KAAKsK,SAAS8U,iBAAiB,IAAM3M,IAAQ29B,SAAQ,SAAUqZ,IAC/D,eAAkBA,EAAK7gD,cAAc,IAAMuyK,KAAUp7K,EAAM0gL,SAASh3H,EAAK7gD,cAAc,IAAMuyK,GAAMnzK,IAAI,GAAM3K,QAC9G+hL,EAAOr2K,KAAK0gD,MAGb21H,GAEX3D,EAAS7+K,UAAUoiL,cAAgB,WAC/B,OAAQtiL,KAAKg/K,OAAOr+K,OAAS,GAAMX,KAAKoD,QAAQ8B,UAAUmB,SAAS,kBAAoB,gBAAUrG,KAAKoD,SAASqiB,WAEnHs5J,EAAS7+K,UAAUiiL,QAAU,SAAU7hL,GACnC,IAAI6hL,GAAU,EACd,GAAIniL,KAAKi0B,OAAQ,CACbkuJ,GAAU,EAEV,IADA,IAAIluJ,EAASj0B,KAAKi0B,OAAOhwB,MAAM,KACtBjD,EAAI,EAAGiiB,EAAMgR,EAAOtzB,OAAQK,EAAIiiB,EAAKjiB,IAC1C,GAAI,eAAQV,EAAQ,IAAM2zB,EAAOjzB,IAAK,CAClCmhL,GAAU,EACV,OAIZ,OAAOA,GAEXpD,EAAS7+K,UAAU4hL,SAAW,SAAUjuG,EAAItmB,EAAMxoD,EAAKC,EAAMmI,EAAG7M,GAC5D,IAAI+C,EAAQrD,UACA,IAAR+E,IAAkBA,EAAM,QACf,IAATC,IAAmBA,EAAO,QACpB,IAANmI,IAAgBA,EAAI,WACT,IAAX7M,IAAqBA,EAASN,KAAKiS,eACvC,IAAIshC,EAAUvzC,KAAKg0C,aACnBh0C,KAAKukL,MAAQ1wG,EACb,IAAI2wG,EAA6B,KAApBxkL,KAAKoD,QAAQkI,GAAYtL,KAAKoD,QAAQkI,GAAK,OAQxD,GAPAtL,KAAKgkL,eAAgB,EACjB,eAAkBj/K,KAClBA,GAAO,GAEP,eAAkBC,KAClBA,GAAQ,GAER6uE,EAAI,CAEJ,GADA7zE,KAAKykL,MAAQzkL,KAAK8/K,YAAYvyH,EAAKvtD,KAAK0kL,SAAS,WAAY1kL,KAAKg/K,OAAOr+K,OAAS,MAC7EX,KAAKm/K,QAAU,OAAQxvK,SAAU,CAClC4jC,EAAQmhG,UAAU3tI,MAAMC,QAAU,OAClC,IAAI6kB,EAAO,CACPiG,KAAMy7B,EAAKvtD,KAAK0kL,SAAS,SAAS9yK,WAAY8mD,QAASniD,EAAQ,eAE/DouK,EAAQ,IAAI,EAAS3kL,KAAKypD,MAAM,GAAI,QAAS59B,GAAM,GACnD+4J,EAAM5kL,KAAK8/K,YAAY,CAAC6E,IAAQ/jK,SAAS,GAC7CgkK,EAAI1/K,UAAU4G,IAAIwyB,GAClBt+B,KAAKykL,MAAMj/J,aAAao/J,EAAK5kL,KAAKykL,MAAM7jK,SAAS,IAEjD5gB,KAAKm/K,QACLn/K,KAAKygB,aAAezgB,KAAKuE,cAAc,MAAO,CAC1CC,UAAW,KAAOxE,KAAK8U,gBAAkB,YAAciB,EAAOzK,GAAIuoE,EAAGvoE,GAAK,YAAck5K,EAAS,WAEjGxkL,KAAKw/K,eACLz6K,EAAM8uE,EAAGpqE,aACToqE,EAAGnvE,YAAY1E,KAAKygB,eAGpB7S,SAAS6B,KAAK/K,YAAY1E,KAAKygB,cAEnCzgB,KAAK6kL,mBAAqB7kL,KAAKoD,QAAQ8B,UAAUmB,SAAS,eAAwC,IAAvBrG,KAAKg/K,OAAOr+K,OACvFX,KAAKoF,SAAWpF,KAAK8kL,cAAc9kL,KAAKygB,aAAczgB,KAAKykL,MAAO5wG,EAAI7zE,KAAK6kL,oBACvE7kL,KAAK42C,UACL52C,KAAK0L,uBAEL1L,KAAKw/K,cACLx/K,KAAK+kL,oBAAoB/kL,KAAKykL,MAAO5wG,IAGjC7zE,KAAKyK,UACL,eAAS,CAACzK,KAAKygB,cAAezgB,KAAKyK,SAASoQ,QAAQ,OAAQ,KAAKtO,OAAOtI,MAAM,MAElFjE,KAAKoF,SAAS8M,QAEblS,KAAKw/K,eAAkBx/K,KAAK2/K,kBAAmB3/K,KAAKglL,WAKrDhlL,KAAKilL,kBAAkBpxG,EAAI7zE,KAAKykL,MAAOl3H,EAAMpgD,EAAG,EAAG,EAAG,SAJtD5G,OAAOy3D,cAAch+D,KAAK44H,OAC1B54H,KAAK44H,MAAQryH,OAAO6G,YAAW,WAAc/J,EAAM4hL,kBAAkBpxG,EAAIxwE,EAAMohL,MAAOl3H,EAAMpgD,EAAG,EAAG,EAAG,UAAYnN,KAAKglL,eAO1HhlL,KAAKykL,MAAM19K,MAAMgd,OAAS/jB,KAAKoD,QAAQ2D,MAAMgd,OAC7CwvB,EAAQ7uC,YAAY1E,KAAKykL,QACpBzkL,KAAK2/K,iBAAmB3/K,KAAKglL,YAC9Bz+K,OAAOy3D,cAAch+D,KAAK44H,OAC1B54H,KAAK44H,MAAQryH,OAAO6G,YAAW,WAAc/J,EAAM4hL,kBAAkBpxG,EAAIxwE,EAAMohL,MAAOl3H,EAAMpgD,EAAGpI,EAAKC,EAAM,UAAYhF,KAAKglL,aAG3HhlL,KAAKilL,kBAAkBpxG,EAAI7zE,KAAKykL,MAAOl3H,EAAMpgD,EAAGpI,EAAKC,EAAM,cAOnE,GAFAhF,KAAKykL,MAAQzkL,KAAKoD,QAClBpD,KAAKykL,MAAM19K,MAAMgd,OAAS,eAAiBzjB,GAAkBN,KAAKoD,SAASwO,WACvE,eAAkBzE,GAAI,CAEtB,IAAI26E,EAAKl6E,SAAS2R,YAAY,eAC9BuoE,EAAGtoE,UAAU,SAAS,GAAM,GAE5B,IAAI0lK,EAAcllL,KAAKmlL,WAAWr9F,EAAI,IACtCo9F,EAAY5kL,OAAS4kL,EAAYE,WAAa9kL,EAC9C4kL,EAAY1vK,cAAgBlV,EAE5BN,KAAKilL,kBAAkBpxG,EAAI7zE,KAAKykL,MAAOl3H,EAAM23H,EAAangL,EAAKC,EAAM,aAGrEhF,KAAKilL,kBAAkBpxG,EAAI7zE,KAAKykL,MAAOl3H,EAAMpgD,EAAGpI,EAAKC,EAAM,SAKvE+5K,EAAS7+K,UAAUilL,WAAa,SAAU5uC,EAAQ8uC,GAC9C,IAAK,IAAIhwK,KAAQkhI,EACb8uC,EAAY,GAAKhwK,GAAQkhI,EAAO,GAAKlhI,GAEzC,OAAOgwK,GAEXtG,EAAS7+K,UAAU6kL,oBAAsB,SAAUvnG,EAAI3J,GACnD,IAAIyxG,EAAU9+K,iBAAiBqtE,GAC3B0xG,EAAW5zK,SAAS2zK,EAAQE,WAAY,IACxCxlL,KAAKg/K,OAAOr+K,OAAS,IAAMkzE,EAAG3uE,UAAUmB,SAAS,eACjDk/K,GAAY,EAGZA,GAAaA,EAAW,EAE5B/nG,EAAGz2E,MAAMy+K,WAAaD,EAAW,KACjC,IAAIE,EAAgBjoG,EAAG96D,iBAAiB,gBACxC,GAAI+iK,GAAiBA,EAAc9kL,OAI/B,IAHA,IAAI+kL,EAAeloG,EAAGtxE,cAAc,gBAChCy5K,EAAoBn/K,iBAAiBk/K,GACrCE,EAAmBj0K,SAASg0K,EAAkBzhK,YAAa,IAAMwhK,EAAal8K,YAAc+7K,EACvFvkL,EAAI,EAAGA,EAAIykL,EAAc9kL,OAAQK,IACtCykL,EAAczkL,GAAG+F,MAAMy+K,WAAaI,EAAkB,MAIlE7G,EAAS7+K,UAAU4kL,cAAgB,SAAUrkK,EAAc+8D,EAAI3J,EAAIgxG,GAC/D,IAAIxhL,EAAQrD,KACRoF,EAAW,IAAI,OAAMqb,EAAc,CACnColK,eAAgB7lL,KAAKw/K,cAAgB,OAAS,aAC9C37J,SAAUgwD,EACV7vD,UAAWhkB,KAAKw/K,cAAgB,CAAEj6K,EAAG,OAAQC,EAAG,QAAW,CAAED,EAAGs/K,GACxD7kL,KAAKyF,UAAY,OAAS,OAAQD,EAAG,OAC7CzB,SAAW8gL,IAAuB7kL,KAAKw/K,cAAiB,CAAEj6K,EAAG,QAASC,EAAG,OAAU,CAAED,EAAG,OAAQC,EAAG,UACnGse,WAAY,WACZre,UAAWzF,KAAKyF,UAChBoF,QAAS2yE,EACT93E,KAAM,WACF,IAAIwpD,EAAY,gBAAO,kBAAmB9pD,EAAShC,SAC/C8rD,IACAA,EAAUnoD,MAAM1B,OAAS,UACzB6pD,EAAUnoD,MAAM8qD,UAAY,IAEhC,IAAI2rB,EAAK,gBAAO,QAASp4E,EAAShC,SAClCgC,EAAShC,QAAQ2D,MAAM8qD,UAAY,GACnC2rB,EAAGz9D,QACH1c,EAAMyiL,YAAYtoG,MAG1B,OAAOp4E,GAEX25K,EAAS7+K,UAAUu/K,sBAAwB,SAAUlsI,GACjDA,EAAUA,GAAWvzC,KAAKg0C,aAC1B,IAAI+xI,EAAW/lL,KAAKuE,cAAc,OAAQ,CAAEC,UAAW,KAAOxE,KAAK8U,gBAAkB,YACjFkxK,EAAahmL,KAAwB,oBAAI,OAAmBkL,SAASlL,KAAKklC,OAASllC,KAAKklC,MACxF+gJ,EAAYjmL,KAAKuE,cAAc,OAAQ,CACvCC,UAAW,KAAOxE,KAAK8U,gBAAkB,SAAUhK,UAAWk7K,IAE9DE,EAAWlmL,KAAKuE,cAAc,OAAQ,CACtCC,UAAW,aAAexE,KAAK8U,gBAAkB,QAAS9F,MAAO,CAAE,SAAY,OAEnF+2K,EAASrhL,YAAYuhL,GACrBF,EAASrhL,YAAYwhL,GACrB3yI,EAAQ/tB,aAAaugK,EAAU/lL,KAAKoD,UAExC27K,EAAS7+K,UAAUimL,kBAAoB,SAAUh5K,GACzCnN,KAAKw/K,eACLx/K,KAAKilL,kBAAkB,KAAMjlL,KAAKoD,QAAS,KAAM+J,EAAG,EAAG,EAAG,cAGlE4xK,EAAS7+K,UAAUkmL,mBAAqB,SAAUj5K,GAC9C,IAAI9J,EAAQrD,KACRyiL,EAAkB,CAAEr/K,QAASpD,KAAKoD,QAAS4/K,WAAY,KAAMt0K,MAAOvB,EACpEs8C,MAAOzpD,KAAKypD,MAAOh7C,QAAQ,GAC/BzO,KAAKiI,QAAQ,cAAew6K,GAAiB,SAAU4D,GAC9CA,EAA2B53K,SAC5BpL,EAAMu9K,UAAU,KAAMzzK,GACtB9J,EAAMD,QAAQ8B,UAAU4G,IAAI,eAC5BzI,EAAM4E,QAAQ,UAAW,CAAE7E,QAASC,EAAMD,QAAS4/K,WAAY,KAAMv5H,MAAOpmD,EAAMomD,aAI9Fs1H,EAAS7+K,UAAUomL,QAAU,SAAUljL,EAAS4C,EAAGC,EAAGlB,EAAKC,GACvD,OAAO,eAAI5B,EAAS,KAAM,CAAEmC,EAAGS,EAAGR,EAAGS,GAAK,CAAElB,IAAKA,EAAKC,KAAMA,KAEhE+5K,EAAS7+K,UAAU+kL,kBAAoB,SAAUpxG,EAAI2J,EAAIjwB,EAAMpgD,EAAGpI,EAAKC,EAAMwJ,GACzE,IAAInL,EAAQrD,KACRypD,EAAQoqB,EAAKtmB,EAAKvtD,KAAK0kL,SAAS,WAAY1kL,KAAKg/K,OAAOr+K,OAAS,IAAMX,KAAKypD,MAC5EnjC,EAAY,CACZljB,QAASo6E,EAAI/zB,MAAOA,EAAOu5H,WAAYz1H,EAAM7+C,MAAOvB,EAAGsB,QAAQ,EAAO1J,IAAKA,EAAKC,KAAMA,EAAMk6K,cAAe,QAE3GqH,EAAW/3K,EACfxO,KAAKiI,QAAQ,aAAcqe,GAAW,SAAUkgK,GAC5C,OAAQD,GACJ,IAAK,OACIljL,EAAMm8K,gBACgC,SAAnCgH,EAAiBtH,gBACjB77K,EAAMs8K,iBAAmBt8K,EAAMq8K,cAC/Br8K,EAAM67K,cAAgBsH,EAAiBtH,eAE3C77K,EAAM0B,IAAMyhL,EAAiBzhL,IAC7B1B,EAAM2B,KAAOwhL,EAAiBxhL,MAElC3B,EAAMod,aAAa1Z,MAAMC,QAAU,QAC9B3D,EAAMm8K,gBACPn8K,EAAMod,aAAa1Z,MAAM8qD,UAAYxuD,EAAMod,aAAarZ,wBAAwB/B,OAAS,KACrFhC,EAAMk8K,iBACN/B,EAAan6K,EAAMkB,cAAelB,EAAMod,aAAcpd,EAAMohL,MAAO,UAAWphL,EAAMoC,WAExFpC,EAAMojL,kBAAkBt5K,IAEvB9J,EAAMm8K,eAAkBn8K,EAAM2B,MAAS3B,EAAM0B,KAsB9C1B,EAAM+B,SAAS4e,UAAY,CAAEze,EAAG,OAAQC,EAAG,QAC3CnC,EAAMod,aAAa1Z,MAAMC,QAAU,KAtBnC3D,EAAM+B,SAASmhB,gBAAgBljB,EAAMkhL,OAAO,GAC5ClhL,EAAM2B,KAAO2M,SAAStO,EAAMod,aAAa1Z,MAAM/B,KAAM,IACrD3B,EAAM0B,IAAM4M,SAAStO,EAAMod,aAAa1Z,MAAMhC,IAAK,IAC/C1B,EAAMoC,YACNpC,EAAM2B,KACF3B,EAAMwhL,mBAAqBxhL,EAAM2B,KAAO3B,EAAMod,aAAajX,YAAcnG,EAAMkhL,MAAM5iK,cAAcnY,YAAc,EAC3GnG,EAAM2B,KAAO3B,EAAMod,aAAajX,YAAcnG,EAAMkhL,MAAM/6K,aAGpEnG,EAAMuzC,WAAavzC,EAAM8E,SAAW9E,EAAM+T,WAC1C0nD,uBAAsB,WAClBz7D,EAAM2gB,YACN3gB,EAAMod,aAAa1Z,MAAMC,QAAU,OAIvC3D,EAAM2gB,YACN3gB,EAAMod,aAAa1Z,MAAMC,QAAU,KAO3C,MACJ,IAAK,OACD3D,EAAM0B,IAAMyhL,EAAiBzhL,IAC7B1B,EAAM2B,KAAOwhL,EAAiBxhL,KAC9B,MACJ,IAAK,YACIwhL,EAAiB/3K,SAClBpL,EAAMD,QAAQ8B,UAAUC,OAAO,eAC/B9B,EAAMyiL,YAAYziL,EAAMD,UAE5B,MAER,GAAiB,cAAbmjL,EACA,GAAIC,EAAiB/3K,OACbpL,EAAM87K,QACN97K,EAAM+B,SAASoN,UACf,eAAOnP,EAAMod,eAER+8D,EAAGh5E,UAAUR,QAAQ,SAAW,GACrC,eAAOw5E,GAEXn6E,EAAM27K,OAAOyE,WAGb,GAAIpgL,EAAM87K,OACN,GAAI97K,EAAMm8K,cACNn8K,EAAMod,aAAa1Z,MAAMhC,IAAM1B,EAAM0B,IAAM,KAC3C1B,EAAMod,aAAa1Z,MAAM/B,KAAO,MAChC3B,EAAMmgL,gBAAgBngL,EAAMod,kBAE3B,CACDpd,EAAMu6E,kBAAkBv6E,EAAMod,cAC9Bpd,EAAMymD,kBAAkBzmD,EAAMod,cAC9B,gBAAapd,EAAMod,aAAc,CAAEkhB,SAAU,IAAM88I,IACnDp7K,EAAMod,aAAa1Z,MAAM/B,KAAO3B,EAAM2B,KAAO,KAC7C3B,EAAMod,aAAa1Z,MAAMhC,IAAM1B,EAAM0B,IAAM,KAC3C,IAAI2hL,EAAsD,SAAnCrjL,EAAM0oI,kBAAkBhpI,OAAoB,CAC/DiN,KAAM3M,EAAM0oI,kBAAkBhpI,OAAQC,SAAUK,EAAM0oI,kBAAkB/oI,SACxEiN,eAAgB5M,EAAM0oI,kBAAkB46C,QACxC,KACJtjL,EAAM+B,SAAS8K,KAAKw2K,EAAkBrjL,EAAMkhL,YAIhDlhL,EAAMu6E,kBAAkBv6E,EAAMohL,OAC9BphL,EAAMujL,YAAYvjL,EAAMkhL,MAAOlhL,EAAMohL,MAAOphL,EAAM0B,IAAK1B,EAAM2B,MAC7D3B,EAAMmgL,gBAAgBngL,EAAMohL,OAIxC,GAAsB,UAAlBphL,EAAMw+K,QAAqB,CAC3B,IAAIX,EAAM79K,EAAM89K,gBAMhB,GALAttG,EAAG3uE,UAAUC,OAAO+4K,GAChB76K,EAAM87K,QAAkC,IAAxB97K,EAAM27K,OAAOr+K,QAC7B0C,EAAM09K,qBAAqB,CAACrqK,GAAW,CAACrT,EAAM2wC,eAElD6/B,EAAG3uE,UAAU4G,IAAI4K,GACbrT,EAAMsd,SAAWq9J,EAAO,CACxB,IAAI6I,EAAc,CAAEzjL,QAASywE,EAAItmB,KAAMA,EAAM7+C,MAAOvB,GACpD9J,EAAM4E,QAAQ,SAAU4+K,GAE5BhzG,EAAG9zD,QACHmhK,EAAM79K,EAAM89K,gBACZ,IAAI10K,EAAQpJ,EAAMqxE,UAAUwsG,EAAItgK,SAAS,GAAI,EAAGvd,EAAMsd,QACtDugK,EAAItgK,SAASnU,GAAOvH,UAAU4G,IAAIoyK,GAClCgD,EAAItgK,SAASnU,GAAOsT,aAIhCg/J,EAAS7+K,UAAU8jB,UAAY,WAC3B,IAAI8iK,EAEJ,GADAA,EAAU,eAAU9mL,KAAKygB,aAAc,KAAMzgB,KAAKgF,KAAMhF,KAAK+E,MACxD/E,KAAK6kL,oBAAsB7kL,KAAKyF,aAAeqhL,EAAQ9iL,QAAQ,UAAY,GACzE8iL,EAAQ9iL,QAAQ,SAAW,GAAI,CAClChE,KAAKoF,SAAS4e,UAAUze,EAAI,OAC5B,IAAIwhL,EAAW,eAAQ/mL,KAAKukL,MAAO,MAAQvkL,KAAK8U,gBAAkB,YAAYtL,YAC9ExJ,KAAKgF,KACDhF,KAAKyF,UAAY,eAAkBzF,KAAKukL,MAAOvkL,KAAK6kL,mBAAqB,QAAU,OAAQ,OAAO7/K,KAC5FhF,KAAKgF,KAAOhF,KAAKygB,aAAajX,YAAcu9K,EAAW,EAErED,EAAU,eAAU9mL,KAAKygB,aAAc,KAAMzgB,KAAKgF,KAAMhF,KAAK+E,MACzD+hL,EAAQ9iL,QAAQ,SAAW,GAAK8iL,EAAQ9iL,QAAQ,UAAY,KAC5DhE,KAAKgF,KAAOhF,KAAKsmL,QAAQtmL,KAAKygB,cAAc,GAAM,EAAOzgB,KAAK+E,IAAK/E,KAAKgF,MAAMA,MAElFhF,KAAKygB,aAAa1Z,MAAM/B,KAAOhF,KAAKgF,KAAO,MAE/C+5K,EAAS7+K,UAAU09E,kBAAoB,SAAUmgG,GAC7C,IAAIjgG,EAAgB,GAAGpwE,MAAMpK,KAAKy6K,EAAK5lK,uBAAuB,gBAC9D,GAAK2lE,EAAcn9E,OAAnB,CAGA,IAAIu9E,EAAS6/F,EAAK7xK,cAAc,oDAChC,GAAKgyE,EAAL,CAGA,IAAIE,EAAOF,EAAOhyE,cAAc,gBAChC,GAAKkyE,EAAL,CAGA,IAAID,EAAUn+E,KAAKyF,UAAY,CAAEy1C,QAAS,eAAgB+a,OAAQ,cAC9D,CAAE/a,QAAS,cAAe+a,OAAQ,eAClC+wH,EAAexgL,iBAAiB43E,GAChC6oG,EAAWt1K,SAASq1K,EAAa1oG,SAAU,IACzC3sE,SAASq1K,EAAa1hL,MAAO,KAAOqM,SAASq1K,EAAa1hL,MAAO,IAAM2hL,IACzEA,EAAWt1K,SAASq1K,EAAa1hL,MAAO,KAG5C,IAAI+4E,EAAO4oG,EAAWt1K,SAEtBq1K,EAAa7oG,EAAQloB,QAAS,IAAMtkD,SAASnL,iBAAiB03E,GAAQC,EAAQjjC,SAAU,IAAM,KAC9F4iC,EAAcpqC,SAAQ,SAAUmgC,GAE5BA,EAAG9sE,MAAMo3E,EAAQjjC,SAAWmjC,SAIpC0gG,EAAS7+K,UAAUumL,kBAAoB,SAAUt5K,GAC7C,IAAIomC,EAAUvzC,KAAKg0C,aACnB,GAAIT,EAAQ3yB,SAAS,GAAG1b,UAAUmB,SAAS,mBAA4C,IAAvBrG,KAAKg/K,OAAOr+K,OAAc,CACtF,IAAI+qD,EAAO,eAAkBv+C,GAAKnN,KAAKoD,QAAU,eAAQ+J,EAAE7M,OAAQ,IAAMm+K,GACrEyI,EAAY,gBAAO,iBAAkB3zI,GACrC2zI,EAAUp2K,WAAa46C,EAAK96C,aAC5Bs2K,EAAUp2K,YAAeo2K,EAAUp2K,WAAa46C,EAAK96C,YAEzD,IAAIA,EAAas2K,EAAUp2K,WAAao2K,EAAU19K,YAC9C29K,EAAcz7H,EAAK96C,WAAa86C,EAAKliD,YACrCoH,EAAau2K,IACbD,EAAUp2K,YAAeq2K,EAAcv2K,KAInDmuK,EAAS7+K,UAAU0mL,YAAc,SAAU/yG,EAAI2J,EAAIz4E,EAAKC,GACpD,IAAIoiL,EAAK,KAET,GADApnL,KAAKqnL,gBAAgB7pG,GACjBA,IAAOx9E,KAAKoD,SAAY4B,GAAQ,GAAKD,GAAO,EAAI,CAChD,IAAI+hL,EAAU,eAAUtpG,EAAI,KAAMx4E,EAAMD,GAIxC,GAHI+hL,EAAQ9iL,QAAQ,UAAY,IAC5BgB,GAAcw4E,EAAGh0E,aAEjBs9K,EAAQ9iL,QAAQ,WAAa,EAAG,CAChC,IAAI8jE,EAAS9nE,KAAKsmL,QAAQ9oG,GAAI,GAAO,EAAMz4E,EAAKC,GAEhD,GADAD,EAAM+iE,EAAO/iE,IAAM,GACfA,EAAM,EAAG,CACT,IAAIuiL,EAAUt2K,YAAcpD,SAASilD,gBAAgBvpD,aAAgBk0E,EAAGp2E,wBAAwB/B,OAC5FiiL,GAAU,IACVviL,EAAMuiL,IAKlB,GADAR,EAAU,eAAUtpG,EAAI,KAAMx4E,EAAMD,GAChC+hL,EAAQ9iL,QAAQ,SAAW,EAAG,CAC1B8jE,EAAS9nE,KAAKsmL,QAAQ9oG,GAAI,GAAM,EAAOz4E,EAAKC,GAChDA,EAAO8iE,EAAO9iE,WAIlB,GAAI,OAAQ2K,SACR5K,EAAMgsC,OAAO/wC,KAAKoD,QAAQ2D,MAAMhC,IAAI8V,QAAQusK,EAAI,KAChDpiL,EAAO+rC,OAAO/wC,KAAKoD,QAAQ2D,MAAM/B,KAAK6V,QAAQusK,EAAI,SAEjD,CACD,IAAIphL,EAAIhG,KAAKyF,UAAY,OAAS,QAC9BqiE,EAAS,eAAkB+L,EAAI7tE,EAAG,OACtCjB,EAAM+iE,EAAO/iE,IACbC,EAAO8iE,EAAO9iE,KACV8hL,EAAU,eAAUtpG,EAAI,KAAMx9E,KAAKyF,UAAYT,EAAOw4E,EAAGh0E,YAAcxE,EAAMD,GAAjF,IACIwiL,EAAaT,EAAQ9iL,QAAQ,SAAW,GAAK8iL,EAAQ9iL,QAAQ,UAAY,EACzEujL,IACAz/G,EAAS,eAAkB+L,EAAI7zE,KAAKyF,UAAY,QAAU,OAAQ,OAClET,EAAO8iE,EAAO9iE,OAEdhF,KAAKyF,WAAa8hL,KAClBviL,EAAQhF,KAAKyF,WAAa8hL,EAAcviL,EAAOA,EAAOw4E,EAAGh0E,aAEzDs9K,EAAQ9iL,QAAQ,WAAa,IAC7B8jE,EAAS9nE,KAAKsmL,QAAQ9oG,GAAI,GAAO,EAAMz4E,EAAKC,GAC5CD,EAAM+iE,EAAO/iE,KAIzB/E,KAAKqnL,gBAAgB7pG,GAAI,GACzBA,EAAGz2E,MAAMhC,IAAMA,EAAMqiL,EACrB5pG,EAAGz2E,MAAM/B,KAAOA,EAAOoiL,GAE3BrI,EAAS7+K,UAAUmnL,gBAAkB,SAAU7pG,EAAIgqG,QAC7B,IAAdA,IAAwBA,GAAY,GACxChqG,EAAGz2E,MAAMirD,WAAaw1H,EAAY,SAAW,GAC7ChqG,EAAGz2E,MAAMC,QAAUwgL,EAAY,QAAU,QAE7CzI,EAAS7+K,UAAU4/K,YAAc,SAAUr2H,GACvC,IAAIpmD,EAAQrD,KACRygD,EAAQzgD,KAAKg/K,OAASh/K,KAAKg/K,OAAOr+K,OAAS,EAC3CgxB,EAAS3xB,KAAKskL,UAAU7jI,GACxBgnI,EAAWznL,KAAK0nL,SAASj+H,EAAOzpD,KAAK0kL,SAAS,UAAWjkI,IACzDu2B,EAAkB,CAClBywG,SAAUA,EACVjwK,WAAY,OACZma,OAAQA,EACRilB,SAAU52C,KAAK42C,SACf+wI,eAAe,EACfC,aAAc,SAAU7hK,GACfA,EAAK8hK,QAAQ9hK,EAAK4L,OAAOA,EAAOrmB,OACjCya,EAAK8hK,QAAQ9hK,EAAK4L,OAAOA,EAAOrmB,KAAO,eAAY,aAEnD,eAAkBya,EAAK8hK,QAAQ7nK,kBAC/B+F,EAAK8hK,QAAQ7nK,eAAiB,IAE9B,OAAQk3D,MACRnxD,EAAK8hK,QAAQ7nK,eAAe/Q,KAAO,WACnC8W,EAAK8hK,QAAQ7nK,eAAesiE,SAAW,MAGvC7iF,OAAOquG,OAAO/nF,EAAK8hK,QAAQ7nK,eAAgB,CAAE/Q,KAAM,WAAYqzE,SAAU,OAEzEj/E,EAAM87K,SAAWp5J,EAAK8hK,QAAQxkL,EAAMqhL,SAAS,YAAajkI,MAC1D16B,EAAK8hK,QAAQ7nK,eAAe,cAAgB+F,EAAK8hK,QAAQ9hK,EAAK4L,OAAOG,MACjE/L,EAAK8hK,QAAQ9hK,EAAK4L,OAAOG,MAAQ/L,EAAK8hK,QAAQ9hK,EAAK4L,OAAOrmB,KAEhB,KAA9Cya,EAAK8hK,QAAQ9hK,EAAK4L,OAAOA,EAAO+mC,YAChC3yC,EAAK8hK,QAAQ9hK,EAAK4L,OAAOA,EAAO+mC,UAAY,OAGpDue,YAAa,SAAUlxD,GASnB,GARIA,EAAK8hK,QAAQxkL,EAAMqhL,SAAS,YAAajkI,MACzC16B,EAAKwnC,KAAKroD,UAAU4G,IAAIqyK,GACxBp4J,EAAKwnC,KAAK5iD,aAAa,OAAQ,eAE/B88K,GAAa1hK,EAAK8hK,QAAQ9hK,EAAK4L,OAAO+mC,UAClC3yC,EAAK8hK,QAAQxkL,EAAMqhL,SAAS,YAAajkI,KAC7C16B,EAAKwnC,KAAKroD,UAAU4G,IAAI,eAExBia,EAAK8hK,QAAQ9hK,EAAK4L,OAAOijI,QACtB7uI,EAAK8hK,QAAQ9hK,EAAK4L,OAAOijI,OAAOj0J,OAAQ,CAC3C,IAAI61F,EAAOnzF,EAAMkB,cAAc,OAAQ,CAAEC,UAAW+R,EAAQ,IAAMioK,IAClEz4J,EAAKwnC,KAAK7oD,YAAY8xF,GACtBzwE,EAAKwnC,KAAK5iD,aAAa,gBAAiB,QACxCob,EAAKwnC,KAAK5iD,aAAa,gBAAiB,SACxCob,EAAKwnC,KAAKroD,UAAU4G,IAAI,qBAExBzI,EAAM87K,QAAU97K,EAAMuzC,WACtB7wB,EAAKwnC,KAAK5iD,aAAa,KAAMob,EAAK8hK,QAAQ9hK,EAAK4L,OAAOrmB,IAAIsG,YAC1DmU,EAAKwnC,KAAK3iD,gBAAgB,YACtBmb,EAAKwnC,KAAKroD,UAAUmB,SAAS,cAC7B0f,EAAKwnC,KAAKroD,UAAUC,OAAO,aAE3B4gB,EAAKwnC,KAAKroD,UAAUmB,SAAS,gBAC7B0f,EAAKwnC,KAAKroD,UAAUC,OAAO,eAE/B4gB,EAAKwnC,KAAK3iD,gBAAgB,eAE9B,IAAI0b,EAAY,CAAEinC,KAAMxnC,EAAK8hK,QAASzkL,QAAS2iB,EAAKwnC,MACpDlqD,EAAM4E,QAAQ,mBAAoBqe,KAG1CtmB,KAAKiL,cAAc,CAAE,MAASjL,KAAKypD,QAAS,GACxCzpD,KAAKm/K,SACLnoG,EAAgBg/D,WAAah2I,KAAKoD,QAAQkI,GAAKqzK,GAEnD,IAAInhG,EAAK,OAASlR,WAAWtsE,KAAKuE,cAAeklD,EAAOutB,GAAkBh3E,KAAK42C,SAAU52C,MAQzF,OAPAw9E,EAAG7yE,aAAa,WAAY,KACxB3K,KAAKm/K,OACL3hG,EAAG7yE,aAAa,OAAQ,QAGxB6yE,EAAG7yE,aAAa,OAAQ,WAErB6yE,GAEXuhG,EAAS7+K,UAAUkgL,aAAe,SAAUjzK,GACxC,IAAIu+C,EAAOv+C,EAAE7M,OACbN,KAAK8nL,OAASp8H,EACd,IAIIq8H,EAJAvG,EAAMxhL,KAAK+iL,MAAMr3H,GACjBnY,EAAUiuI,EAAM,eAAQA,EAAK,MAAQxhL,KAAK8U,gBAAkB,YAAc9U,KAAKg0C,aAC/Eg0I,EAAahoL,KAAKg0C,aAClBq/B,EAAQ,IAAInb,OAAO,uBAEnB+vH,GAAkB,EACtB,GAAK10I,EAAL,CASA,GALIw0I,EADe,KAAfx0I,EAAQjoC,GACD+nE,EAAMiyD,KAAK/xF,EAAQjoC,IAAI,GAGvBioC,EAAQrnC,cAAc,MAAMZ,GAEnCy8K,IAAS/nL,KAAKoD,QAAQkI,GAAI,CAE1B,GADAtL,KAAK+gL,qBAAqB,CAAC7C,EAASxnK,GAAW,CAAC1W,KAAKg0C,gBACjDh0C,KAAKg/K,OAAOr+K,OAIZ,OAHAsnL,GAAkB,EAMtBzG,GAAO,eAAQA,EAAK,MAAQxhL,KAAK8U,gBAAkB,cAAgBmzK,GACnEjoL,KAAK+gL,qBAAqB,CAAC7C,GAAUl+K,KAAKm/K,OAAS,CAAC5rI,GAAStE,OAAOjvC,KAAK2iL,aAAe,CAACpvI,IACzFvzC,KAAK+gL,qBAAqB,CAAC7C,GAAUl+K,KAAKm/K,OAAS,CAAC6I,GAAY/4I,OAAOjvC,KAAK2iL,aAAe,CAACqF,IAC5FxG,EAAIt8K,UAAU4G,IAAIoyK,GACbl+K,KAAK2/K,iBACN3/K,KAAKsoC,aAAan7B,IAGjBnN,KAAKm/K,QAAUn/K,KAAK2/K,kBAAoBsI,GAC7CjoL,KAAK+gL,qBAAqB,CAAC7C,GAAU,CAAC3qI,GAAStE,OAAOjvC,KAAK2iL,cAE3D3iL,KAAKm/K,SACAn/K,KAAK2/K,iBAAoBj0H,EAAK/pC,gBAAkB4xB,GAAY,eAAQmY,EAAM,MAAQ1rD,KAAK8U,gBAAkB,WACrG0sK,KAAQA,GAAQxhL,KAAK+jL,SAASvC,EAAIl2K,IAAI,GAAM3K,SAAmC,UAAvBX,KAAKk/K,cAO7D+I,IAAoBjoL,KAAK2/K,iBAC1B3/K,KAAKg/K,OAAOr+K,SACZX,KAAKkoL,UAAW,EAChBloL,KAAK4gL,UAAU,KAAMzzK,KATzBnN,KAAK+gL,qBAAqB,CAAC7C,GAAU,CAAC3qI,IAClCvzC,KAAKg/K,OAAOr+K,SACZX,KAAKkoL,UAAW,EAChBloL,KAAK4gL,UAAU,KAAMzzK,KASxBnN,KAAKkoL,UACNloL,KAAKokL,qBAETpkL,KAAKkoL,UAAW,KAGxBnJ,EAAS7+K,UAAUkkL,mBAAqB,WACpC,GAAIpkL,KAAK8nL,OAAQ,CACb,IAAIv0I,EAAU,eAAQvzC,KAAK8nL,OAAQ,mBACP,QAAxB9nL,KAAK8nL,OAAOp4K,SAAqB6jC,GACjCvzC,KAAK+gL,qBAAqB,CAAC7C,EAASxnK,GAAW,CAAC68B,MAI5DwrI,EAAS7+K,UAAU6gL,qBAAuB,SAAU77K,EAAW9B,GAU3D,IATA,IAAIywE,EACAljD,EAAU,SAAU3vB,GACpBkE,EAAUwuC,SAAQ,SAAUlvC,GACxBqvE,EAAK,gBAAO,IAAMrvE,EAAWpB,EAAQpC,IACjC6yE,GACAA,EAAG3uE,UAAUC,OAAOX,OAIvBxD,EAAI,EAAGA,EAAIoC,EAAQzC,OAAQK,IAChC2vB,EAAQ3vB,IAGhB+9K,EAAS7+K,UAAUwkL,SAAW,SAAUyD,EAAU1nI,QAChC,IAAVA,IAAoBA,EAAQ,GAChC,IAAIysE,EAAYltH,KAAK2xB,OAAO,GAAKw2J,GACjC,MAA4B,kBAAdj7D,EAAyBA,EACjCA,EAAUzsE,GACNysE,EAAUzsE,GAAO7uC,WADFs7G,EAAUA,EAAUvsH,OAAS,GAAGiR,YAG7DmtK,EAAS7+K,UAAUokL,UAAY,SAAU7jI,GAErC,YADc,IAAVA,IAAoBA,EAAQ,GACzB,CACHn1C,GAAItL,KAAK0kL,SAAS,SAAUjkI,GAC5BiY,QAAS14D,KAAK0kL,SAAS,UAAWjkI,GAClC3uB,KAAM9xB,KAAK0kL,SAAS,OAAQjkI,GAC5BrjB,IAAKp9B,KAAK0kL,SAAS,MAAOjkI,GAC1Bm0G,MAAO50J,KAAK0kL,SAAS,WAAYjkI,GACjC2N,UAAWpuD,KAAK0kL,SAAS,YAAajkI,KAG9Cs+H,EAAS7+K,UAAUwnL,SAAW,SAAUj+H,EAAO53B,GAC3C,IAAK,IAAI7wB,EAAI,EAAGiiB,EAAMwmC,EAAM9oD,OAAQK,EAAIiiB,EAAKjiB,IACzC,GAAIyoD,EAAMzoD,GAAG,GAAK6wB,GACd,OAAO,EAGf,OAAO,GAEXktJ,EAAS7+K,UAAU8/K,uBAAyB,SAAU7yK,GAC9C,eAAQA,EAAE7M,OAAQ,mBAAmB4L,cAAc,oBAAoBZ,KAAOtL,KAAKoD,QAAQkI,KAG3FtL,KAAKoD,QAAQoB,UAAUR,QAAQ,gBAAkB,EACjDhE,KAAKmmL,kBAAkBh5K,GAGvBnN,KAAKomL,mBAAmBj5K,KAGhC4xK,EAAS7+K,UAAUooC,aAAe,SAAUn7B,GACxC,GAAInN,KAAKi/K,UACLj/K,KAAKi/K,WAAY,MAEhB,CACD,IAAI1rI,EAAUvzC,KAAKg0C,aACf0X,EAAOv+C,EAAE7M,OACTkhL,EAAMxhL,KAAKwhL,IAAMxhL,KAAK+iL,MAAMr3H,GAC5B2nB,EAAQ,IAAInb,OAAO,uBACnBkwH,EAAa5G,EAAM,eAAQA,EAAK,MAAQxhL,KAAK8U,gBAAkB,YAAc,KAC7EuzK,EAAW7G,GAAO4G,IAAepoL,KAAKm/K,OAASn/K,KAAK+jL,SAASvC,EAAIl2K,IAAI,GAAM3K,OAAS,EAClF4yC,EAAQ9xB,kBAAkBnW,KAAO88K,EAAW3mK,kBAAkBnW,IAKpE,GAJI,OAAQqE,UAAY3P,KAAKm/K,SACzBn/K,KAAK+gL,qBAAqB,CAAC7C,GAAU,CAAC3qI,GAAStE,OAAOjvC,KAAK2iL,cAC3D3iL,KAAKizE,iBAAiB9lE,IAEtBq0K,GAAO4G,GAAcpoL,KAAKm/K,OAAQ,CAClC,IAAImJ,EAAeF,EAAW98K,GAAK+nE,EAAMiyD,KAAK8iD,EAAW98K,IAAI,GAAK88K,EAAWl8K,cAAc,kBAAkBZ,GAC7G,GAAItL,KAAKoD,QAAQkI,KAAOg9K,EACpB,OAGR,GAAID,GAAuB,UAAXl7K,EAAEqB,OAAqBgzK,EAAIt8K,UAAUmB,SAASi4B,GAAS,CACnEt+B,KAAKuoL,cAAc/G,GACnB,IAAIxC,EAASh/K,KAAK+jL,SAASvC,EAAIl2K,IAAI,GAC/BiiD,EAAOvtD,KAAK4hL,QAAQ5C,GACpB14J,EAAY,CAAEljB,QAASo+K,EAAKj0H,KAAMA,EAAM7+C,MAAOvB,GACnDnN,KAAKiI,QAAQ,SAAUqe,GAE3B,GAAI+hK,IAAwB,cAAXl7K,EAAEqB,MAAwB,OAAQmB,UAAY3P,KAAK2/K,iBAAkB,CAClF,IAAIniG,OAAK,EACT,GAAIgkG,EAAIt8K,UAAUmB,SAASi4B,GAAS,CAChCk/C,EAAKjqC,EAAQ3yB,SAAS5gB,KAAKg/K,OAAOr+K,OAAS,GAC3CX,KAAKwjL,gBAAgBhmG,GACrB,IAAIwkG,EAAMhiL,KAAKshL,aAAa9jG,EAAI9mE,GAC5BsrK,GACAA,EAAI98K,UAAUC,OAAOuR,GAEzB,eAAO8qK,EAAI/tI,YACXzzC,KAAKg/K,OAAOyE,WAGZ,IAAKjC,EAAIt8K,UAAUmB,SAAS83K,GAAY,CACpCn+K,KAAK0jL,aAAc,EACnB,IAAIxC,EAAMM,EAAI/tI,WACd,GAAI,eAAkBytI,GAClB,OAGJ,GADAlhL,KAAKkkL,OAASlkL,KAAKuhL,OAAOL,EAAKM,GAC3BxhL,KAAKm/K,SAAW,OAAQxvK,SAAU,CAClC,IAAI64K,EAASxoL,KAAKm/K,OAASv/K,MAAMM,UAAU8D,QAAQV,KAAK,CAACiwC,GAAStE,OAAOjvC,KAAK2iL,aAAc,eAAQzB,EAAK,MAAalhL,KAAK8U,gBAAkB,aACvI9U,KAAKuhL,OAAOhuI,EAAS2tI,GAI3B,GAHIlhL,KAAKg/K,OAAOwJ,KAAYxoL,KAAKkkL,SAC7BlkL,KAAK0jL,aAAc,GAEnB8E,IAAWxoL,KAAKg/K,OAAOr+K,SAAsB,cAAXwM,EAAEqB,MAAwBxO,KAAK0jL,aAAc,CAC3E1B,EAAMhiL,KAAKshL,aAAaJ,EAAKxqK,GAC7BsrK,GACAA,EAAI98K,UAAUC,OAAOuR,GAEzB1W,KAAKkoL,UAAW,EAChBloL,KAAK6hL,QAAU,QACX7hL,KAAK2/K,iBACL3/K,KAAKuoL,cAAc/G,GAEvBxhL,KAAK4gL,UAAU4H,EAAS,EAAGr7K,GACvBnN,KAAK2/K,iBACL3/K,KAAKuoL,cAAc/G,IAI1BxhL,KAAKkoL,UACNloL,KAAK8jL,eAAe32K,GAExBnN,KAAKkoL,UAAW,QAKxB,GAAIloL,KAAKm/K,QAA2B,QAAjBzzH,EAAKh8C,SAAqB1P,KAAKg/K,OAAOr+K,QAAU,eAAQ+qD,EAAM,mBAAoB,CACjG,IAAIiG,EAAW,eAAQjG,EAAM,IAAM31C,GAC/BuxF,EAAO1nG,MAAMM,UAAU8D,QAAQV,KAAKtD,KAAK2iL,YAAahxH,GAAY,EAClE21C,EAAOtnG,KAAKg/K,OAAOr+K,SACnBX,KAAK4gL,UAAUt5E,EAAO,EAAGn6F,GACrBwkD,GACA3xD,KAAK+gL,qBAAqB,CAAC7C,EAASxnK,GAAW,CAACi7C,UAInD3xD,KAAKm/K,QAAUn/K,KAAKw/K,eAAkC,SAAjB9zH,EAAKh8C,SAC5Cg8C,EAAKxmD,UAAUmB,SAAS,eAC3BrG,KAAKggL,uBAAuB7yK,GAGP,OAAjBu+C,EAAKh8C,UAAqB1P,KAAKm/K,QAASzzH,EAAK/pC,cAAczc,UAAUmB,SAAS,mBAC7ErG,KAAK+jL,SAASr4H,EAAKx/C,cAAc,IAAMuyK,GAAMnzK,IAAI,GAAM3K,OAAS+qD,EAAK/pC,gBAAkB4xB,KACnFiuI,GACDxhL,KAAK+gL,qBAAqB,CAACrqK,GAAW,CAAC68B,IAEtCiuI,GAAQA,EAAIt1K,cAAc,IAAMsyK,IACjCx+K,KAAK4gL,UAAU,KAAMzzK,MAO7C4xK,EAAS7+K,UAAU4jL,eAAiB,SAAU32K,GAC1C,IAAI,eAAkBA,GAAtB,CAGA,IAAIqvC,EACJ,GAAIx8C,KAAK0jL,YAAa,CAEdlnI,EADAx8C,KAAK2/K,iBAA0C,IAAvB3/K,KAAKg/K,OAAOr+K,OACzB,eAAQwM,EAAE7M,OAAQ,4BAGlB,eAAQN,KAAKoD,QAAS,4BAErC,IAAI8xF,EAAMl1F,KAAKg/K,OAAO/vI,OAAOjvC,KAAKkkL,QAC9B32H,EAAOvtD,KAAK4hL,QAAQ1sF,GAiBxB,GAhBI3nC,GAAQA,EAAKvtD,KAAK0kL,SAAS,WAAYxvF,EAAIv0F,OAAS,KACpD4sD,EAAKvtD,KAAK0kL,SAAS,WAAYxvF,EAAIv0F,OAAS,IAAIA,SACjC,cAAXwM,EAAEqB,MAAyB,OAAQmB,UAAY3P,KAAKm/K,SACpDn/K,KAAKuoL,cAAcvoL,KAAKwhL,OAEtBxhL,KAAKw/K,eAAiBhjI,GAAcx8C,KAAKw/K,eAA4D,UAA3Cx/K,KAAKwhL,IAAI92K,aAAa,oBAClF1K,KAAKwhL,IAAI72K,aAAa,gBAAiB,QACvC3K,KAAKg/K,OAAO3yK,KAAKrM,KAAKkkL,QACtBlkL,KAAK8hL,SAAS9hL,KAAKwhL,IAAKj0H,EAAM,KAAM,KAAMpgD,KAI/B,cAAXA,EAAEqB,MACFxO,KAAK4gL,UAAU,KAAMzzK,IAGxBqvC,EAAU,CACX,IAAI0kI,EAAMlhL,KAAKmhL,gBACXa,EAAMhiL,KAAKshL,aAAaJ,EAAKxqK,GAC7BsrK,IACAA,EAAIr3K,aAAa,gBAAiB,SAClCq3K,EAAI98K,UAAUC,OAAOuR,KAIjC1W,KAAK6hL,QAAU,KAEnB9C,EAAS7+K,UAAUqoL,cAAgB,SAAU10G,GACzC,IAAImuG,EAAMhiL,KAAKshL,aAAaztG,EAAGlyD,cAAejL,GAC1CsrK,GACAA,EAAI98K,UAAUC,OAAOuR,GAEpB1W,KAAKm/K,QACNtrG,EAAG3uE,UAAUC,OAAO+4K,GAExBrqG,EAAG3uE,UAAU4G,IAAI4K,IAErBqoK,EAAS7+K,UAAUohL,aAAe,SAAU9jG,EAAIirG,GAC5C,IAAK,IAAIznL,EAAI,EAAGiiB,EAAMu6D,EAAG58D,SAASjgB,OAAQK,EAAIiiB,EAAKjiB,IAC/C,GAAIw8E,EAAG58D,SAAS5f,GAAGkE,UAAUmB,SAASoiL,GAClC,OAAOjrG,EAAG58D,SAAS5f,GAG3B,OAAO,MASX+9K,EAAS7+K,UAAUwoL,aAAe,SAAUn7H,EAAMo7H,GAC9C,IAAIzzF,EAEAA,EADgB,kBAAT3nC,EACDA,EAGAA,EAAKjiD,GAEf,IAAIs9K,GAAyB,IAAfD,EACV3J,EAASh/K,KAAK+jL,SAAS7uF,EAAK0zF,GAChC,OAAO5J,GAUXD,EAAS7+K,UAAU2oL,QAAU,SAAUt7H,EAAMjiD,EAAIq9K,GAC7C,IAAIzzF,EAEAA,EADAyzF,EACMr9K,GAAUiiD,EAAKjiD,GAGfA,GAAUiiD,EAAKz7B,KAEzB,IAAIktJ,EAASh/K,KAAK+jL,SAAS7uF,EAAKyzF,GAC5BG,EAAU9oL,KAAK4hL,QAAQ5C,GAC3Bv/K,OAAOquG,OAAOg7E,EAASv7H,IAE3BwxH,EAAS7+K,UAAU0hL,QAAU,SAAU5C,GACnCA,EAASA,EAAOtxK,QAChB,IAAIwnF,EAAM8pF,EAAOyE,MACbh6H,EAAQzpD,KAAK+oL,SAAS/J,GAC1B,OAAOv1H,EAAMyrC,IAEjB6pF,EAAS7+K,UAAU6oL,SAAW,SAAU/J,GAEpC,IADA,IAAIv1H,EAAQzpD,KAAKypD,MACRzoD,EAAI,EAAGA,EAAIg+K,EAAOr+K,OAAQK,IAC/ByoD,EAAQA,EAAMu1H,EAAOh+K,IAAIhB,KAAK0kL,SAAS,WAAY1jL,IAEvD,OAAOyoD,GAEXs1H,EAAS7+K,UAAU8oL,SAAW,SAAUC,EAAUjK,GAC9C,IAAIv1H,EAAQzpD,KAAK+oL,SAAS/J,GAC1Bv1H,EAAM/8C,OAAO,EAAG+8C,EAAM9oD,QACtB,IAAK,IAAIK,EAAI,EAAGA,EAAIioL,EAAStoL,OAAQK,IACjCyoD,EAAM/8C,OAAO1L,EAAG,EAAGioL,EAASjoL,KAGpC+9K,EAAS7+K,UAAUqhL,OAAS,SAAU/jG,EAAI3J,EAAIq1G,QAC1B,IAAZA,IAAsBA,GAAU,GACpC,IAAIh0F,EAAMt1F,MAAMM,UAAU8D,QAAQV,KAAKk6E,EAAG58D,SAAUizD,GAIpD,OAHIq1G,GAAW1rG,EAAG58D,SAAS,GAAG1b,UAAUmB,SAASi4B,IAC7C42D,IAEGA,GAEX6pF,EAAS7+K,UAAU6iL,MAAQ,SAAUh2H,GACjC,MAAqB,OAAjBA,EAAKr9C,SAAoBq9C,EAAK7nD,UAAUmB,SAAS,eAC1C0mD,EAEJ,eAAQA,EAAM,mBAEzBgyH,EAAS7+K,UAAUipL,oBAAsB,WAGrC,IAFA,IAAI1/H,EAAQzpD,KAAKypD,MACb1e,EAAQ,EACHt+B,EAAQ,EAAGA,EAAQzM,KAAKg/K,OAAOr+K,OAAQ8L,IAAS,CAErD,GADAg9C,EAAQA,EAAMh9C,GAAOg9C,OAChBA,EACD,MAEJ1e,IACA,IAAIyyC,EAAKx9E,KAAKmhL,cAAcp2I,GAC5B,IAAKyyC,EACD,MAEJx9E,KAAKopL,WAAW5rG,EAAI/zB,KAG5Bs1H,EAAS7+K,UAAU2/K,mBAAqB,SAAU9yH,GAC9C,MAAOA,EAAKtrC,kBACRsrC,EAAKlY,YAAYkY,EAAKtrC,mBAE1B,OAAOsrC,GAUXgyH,EAAS7+K,UAAU+U,kBAAoB,SAAUC,EAASC,GAqGtD,IApGA,IAAI9R,EAAQrD,KACRuzC,EAAUvzC,KAAKg0C,aACfqsC,EAAU,SAAUhrE,GACpB,OAAQA,GACJ,IAAK,WACGF,EAAQ1K,UACR,gBAAY,CAAC8oC,GAAUp+B,EAAQ1K,SAASxG,MAAM,MAE9CiR,EAAQzK,UACR,eAAS,CAAC8oC,GAAUr+B,EAAQzK,SAASoQ,QAAQ,OAAQ,KAAKtO,OAAOtI,MAAM,MAE3E,MACJ,IAAK,YACG4sB,EAAOprB,UACP8tC,EAAQruC,UAAU4G,IAAIrK,GAGtB8xC,EAAQruC,UAAUC,OAAO1D,GAE7B,MACJ,IAAK,kBACDovB,EAAO2iB,eACP3iB,EAAO8uJ,gBAAkBzqK,EAAQyqK,gBACjC9uJ,EAAOjd,aACP,MACJ,IAAK,kBACD,GAAIsB,EAAQqqK,gBAAiB,CACzB,IAAI8J,EACAx4J,EAAOztB,QAAQ8B,UAAUmB,SAAS,cAClCm3K,EAAa3sJ,EAAOtsB,cAAegvC,EAAS1iB,EAAOztB,QAAS,UAAWytB,EAAOprB,WAG9E+3K,EAAa3sJ,EAAOtsB,cAAegvC,EAAS1iB,EAAOztB,QAAS,UAAWytB,EAAOprB,WAElForB,EAAO8xJ,YAAYjvI,SAAQ,SAAUH,GACjC81I,EAAO,gBAAO,QAAS91I,GACvBiqI,EAAan6K,EAAMkB,cAAegvC,EAAS81I,EAAM,UAAWhmL,EAAMoC,kBAGrE,CACD,IAAI6jL,EAAO/1I,EAAQ3yB,SAAS,GACxBiQ,EAAOztB,QAAQ8B,UAAUmB,SAAS,cAClCmkD,EAAc,eAAY8+H,EAAM,QAAUA,GAG1C9+H,EAAc,eAAY8+H,EAAM,QAAUA,GAE9C/1I,EAAQxsC,MAAM8nD,SAAW,GACzBtb,EAAQ7uC,YAAYmsB,EAAOztB,SAC3BytB,EAAO8xJ,YAAYjvI,SAAQ,SAAUH,GACjC+1I,EAAO/1I,EAAQ3yB,SAAS,GACxB4pC,EAAc,eAAY8+H,EAAM,QAAUA,GAC1C/1I,EAAQxsC,MAAM8nD,SAAW,MAGjC,MACJ,IAAK,QACD,IAAIqmC,OAAM,EACN8pF,OAAS,EACTzxH,OAAO,EAKX,GAHI18B,EAAO1oB,SAAW0oB,EAAO+lB,UACzB/lB,EAAOxoB,cAAc,CAAC,aAErB5I,OAAO2V,KAAKD,EAAQs0C,OAAO9oD,OAkB5B,KAAIyU,EAAO3V,OAAO2V,KAAKF,EAAQu0C,OAC/B,IAASzoD,EAAI,EAAGA,EAAIoU,EAAKzU,OAAQK,IAC7Bg+K,EAASnuJ,EAAO04J,oBAAoBr0K,EAAS,GAAI67B,OAAO37B,EAAKpU,KACzDg+K,EAAOr+K,QAAUkwB,EAAOmjB,aAAapzB,SAASjgB,SAC9Cu0F,EAAM8pF,EAAOyE,MACbl2H,EAAO18B,EAAOk4J,SAAS/J,GACvBnuJ,EAAO24J,YAAY,CAACj8H,EAAK2nC,IAAO3nC,EAAK2nC,GAAKpjE,MAC1CjB,EAAO44J,WAAWl8H,EAAMyxH,EAAQ9pF,GAChCrkE,EAAOm4J,SAASz7H,EAAMyxH,IAE1BA,EAAOr+K,OAAS,MA5BgB,CAUpC,GATAkwB,EAAOu4J,WAAWv4J,EAAOztB,QAASytB,EAAO44B,OACrC54B,EAAO0uJ,iBAAmB1uJ,EAAOztB,QAAQue,cAAczc,UAAUmB,SAAS,qBACtEwqB,EAAOztB,QAAQ8B,UAAUmB,SAAS,cAClCm3K,EAAa3sJ,EAAOtsB,cAAegvC,EAAS1iB,EAAOztB,QAAS,UAAWytB,EAAOprB,WAG9E+3K,EAAa3sJ,EAAOtsB,cAAegvC,EAAS1iB,EAAOztB,QAAS,UAAWytB,EAAOprB,aAGjForB,EAAO2uJ,cACR,IAAK,IAAIx+K,EAAI,EAAG+pC,EAAQwI,EAAQ2a,kBAAmBltD,EAAI+pC,EAAO/pC,IAC1D,eAAOuyC,EAAQuV,kBAGvBj4B,EAAOmuJ,OAAS,GAgBpB,QAIRnuJ,EAAS7wB,KACJ6N,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKF,GAAUrH,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC9D,IAAIwH,EAAOxR,EAAGgK,GACdwyE,EAAQhrE,KAGhB0pK,EAAS7+K,UAAUkpL,WAAa,SAAU5rG,EAAI/zB,GAC1C,GAAI,mBAAezpD,KAAKm/K,OACpB3hG,EAAKx9E,KAAK6/K,mBAAmBriG,OAE5B,CACD,GAAIx9E,KAAKu/K,gBAAiB,CACtB,IAAImK,EAAW1pL,KAAKg0C,aAChB21I,EAAMD,EAAS9oK,SAAS,GACxB5gB,KAAKoD,QAAQ8B,UAAUmB,SAAS,cAChCmkD,EAAc,eAAYm/H,EAAK,QAAUA,GAGzCn/H,EAAc,eAAYm/H,EAAK,QAAUA,GAGjDnsG,EAAG1yE,UAAY,GAEnB,IAAI8+K,EAAM,GAAGl8K,MAAMpK,KAAKtD,KAAK8/K,YAAYr2H,GAAO7oC,UAChDgpK,EAAIl2I,SAAQ,SAAUmgC,GAClB2J,EAAG94E,YAAYmvE,OAGvBkrG,EAAS7+K,UAAUqpL,oBAAsB,SAAUr0K,EAASzI,EAAOyoF,GAC/DzoF,EAAMJ,KAAK6oF,GACX,IAAI30F,EAAMd,OAAO2V,KAAKF,EAAQu0C,MAAMyrC,IAAMuuF,MAC1C,GAAY,UAARljL,EAAiB,CACjB,IAAIgtD,EAAOr4C,EAAQu0C,MAAMyrC,GACrB20F,EAASpqL,OAAO2V,KAAKm4C,EAAK9D,OAAOg6H,MACjCoG,GACA7pL,KAAKupL,oBAAoBh8H,EAAM9gD,EAAOskC,OAAO84I,QAIrC,kBAARtpL,GAA2BkM,EAAM9L,OAAS,GAC1C8L,EAAMg3K,MAGd,OAAOh3K,GAEXsyK,EAAS7+K,UAAUupL,WAAa,SAAUl8H,EAAMyxH,EAAQ9pF,GACpD3nC,EAAK7gD,OAAOwoF,EAAK,GACjB,IAAI40F,EAAM9pL,KAAKg0C,aAAapzB,SACxBo+J,EAAOr+K,OAASmpL,EAAInpL,QACpB,eAAOmpL,EAAI9K,EAAOr+K,QAAQigB,SAASs0E,KAU3C6pF,EAAS7+K,UAAUszC,aAAe,SAAUu2I,QAClB,IAAlBA,IAA4BA,EAAgB/pL,KAAKM,QACrD,IAAIizC,EAAUvzC,KAAKg0C,aACnB,GAAI+1I,EAAe,CAIf,IAHA,IAAIzpL,OAAS,EACT6T,OAAc,EACd4rK,EAAc,gBAAUgK,GACnB/oL,EAAI,EAAGiiB,EAAM88J,EAAYp/K,OAAQK,EAAIiiB,EAAKjiB,IAC/CV,EAASy/K,EAAY/+K,GACjBhB,KAAKm/K,OACL,OAAah6K,OAAO7E,EAAQ,QAASN,KAAKggL,wBAGtC,OAAQ34C,OACRlzH,EAAc,eAAY7T,EAAQ,QAC9B6T,GACAA,EAAY3B,WAIhB,OAAarN,OAAO7E,EAAQ,cAAeN,KAAKigL,cAI5D,IAAKjgL,KAAKm/K,OAAQ,CACd,OAAah6K,OAAOnF,KAAKiS,cAAe,4BAA6BjS,KAAK0T,eAC1E,IAAK,IAAI7F,EAAK,EAAGhK,EAAK,eAAoB7D,KAAKiS,eAAgBpE,EAAKhK,EAAGlD,OAAQkN,IAAM,CACjF,IAAIm8K,EAAWnmL,EAAGgK,GAClB,OAAa1I,OAAO6kL,EAAU,4BAA6BhqL,KAAK0T,iBAIvE,OAAQ/D,WACT,OAAaxK,OAAOnF,KAAKm/K,OAASvxK,SAAW2lC,EAAS,YAAavzC,KAAKmgL,sBACxE,OAAah7K,OAAOyI,SAAU,YAAa5N,KAAKqgL,2BAEpD,OAAal7K,OAAOyI,SAAU,QAAS5N,KAAKsgL,sBAC5CtgL,KAAKujL,oBAAoBhwI,GACzBvzC,KAAK8vE,YAETivG,EAAS7+K,UAAUqjL,oBAAsB,SAAUngL,GAC/C,IAAI2jB,EAAiB,eAAY3jB,EAAS,QACtC2jB,GACAA,EAAevU,WAGvBusK,EAAS7+K,UAAUsjL,gBAAkB,SAAUhmG,EAAIysG,GAC/C,IAEIC,EACAC,EAHA9mL,EAAQrD,UACO,IAAfiqL,IAAyBA,GAAa,GAGJ,SAAlCjqL,KAAK+rI,kBAAkBhpI,QAAsBknL,EAI7CjqL,KAAKuN,UAAUoxD,QAAQ6e,EAAI,CACvBxtE,KAAMhQ,KAAK+rI,kBAAkBhpI,OAC7BC,SAAUhD,KAAK+rI,kBAAkB/oI,SACjCiN,eAAgBjQ,KAAK+rI,kBAAkB46C,OACvCyD,MAAO,SAAUjnL,GACTE,EAAMm8K,eACN2K,EAAWhnL,EAAQC,QAAQue,cAC3Bxe,EAAQC,QAAQ2D,MAAMhD,SAAW,WACjCmmL,EAAYC,EAAS1gL,aACrBtG,EAAQC,QAAQ2D,MAAM8qD,UAAY1uD,EAAQC,QAAQqG,aAAe,KACjE0gL,EAASpjL,MAAM8qD,UAAY,KAG3B1uD,EAAQC,QAAQ2D,MAAMC,QAAU,QAChC7D,EAAQC,QAAQ2D,MAAM8qD,UAAY1uD,EAAQC,QAAQgE,wBAAwB/B,OAAS,OAG3FglL,SAAU,SAAUlnL,GACZE,EAAMm8K,gBACN2K,EAASpjL,MAAM2mD,UAAaw8H,EAAY/mL,EAAQC,QAAQqG,aAAgB,OAGhF0Y,IAAK,SAAUhf,GACPE,EAAMm8K,eACNr8K,EAAQC,QAAQ2D,MAAMhD,SAAW,GACjCZ,EAAQC,QAAQ2D,MAAM8qD,UAAY,GAClCs4H,EAASpjL,MAAM2mD,UAAY,GAC3BvqD,EAAQC,QAAQ2D,MAAMhC,IAAM,MAC5B5B,EAAQC,QAAQwd,SAAS,GAAGb,QAC5B1c,EAAMyiL,YAAY3iL,EAAQC,QAAQwd,SAAS,KAG3Cvd,EAAM8e,IAAIhf,EAAQC,QAAS6mL,MAnCvCjqL,KAAKmiB,IAAIq7D,EAAIysG,IAyCrBlL,EAAS7+K,UAAU4lL,YAAc,SAAUtoG,GACvC,IAAIjwB,EAAOvtD,KAAKg/K,OAAOr+K,OAASX,KAAK4hL,QAAQ5hL,KAAKg/K,QAAU,KACxD14J,EAAY,CACZljB,QAASo6E,EAAIwlG,WAAYz1H,EAAM9D,MAAO8D,EAAOA,EAAK9D,MAAQzpD,KAAKypD,OAEnEzpD,KAAKiI,QAAQ,SAAUqe,GAClBtmB,KAAKm/K,QACN,OAAarzK,IAAI0xE,EAAI,UAAWx9E,KAAKuzE,WAAYvzE,OAGzD++K,EAAS7+K,UAAUiiB,IAAM,SAAUq7D,EAAIysG,GACnC,GAAIA,EAIA,GAHAzsG,EAAGz2E,MAAMC,QAAU,QACnBw2E,EAAGz2E,MAAM8qD,UAAY,GACrB7xD,KAAK8lL,YAAYtoG,GACbA,EAAGtxE,cAAc,IAAMgyK,GACvB1gG,EAAGtxE,cAAc,IAAMgyK,GAASn+J,YAE/B,CACD,IAAIuN,EAAMttB,KAAKg0C,aAAapzB,SAAS5gB,KAAKuhL,OAAOvhL,KAAKg0C,aAAcwpC,GAAM,GACtEx9E,KAAKwV,gBACCxV,KAAKwV,cAActQ,UAAUmB,SAAS,qBAAuBrG,KAAKwV,cAActQ,UAAUmB,SAAS,cAA+C,UAA/BrG,KAAKwV,cAAc9F,WAUxI4d,EACAA,EAAIphB,cAAc,IAAMwK,GAAUqJ,QAGlC/f,KAAKoD,QAAQ2c,cAMzB,GAAIy9D,IAAOx9E,KAAKoD,QAAS,CACrB,IAAIi+K,EAAMrhL,KAAKshL,aAAathL,KAAKoD,QAAS86K,GACtCmD,GACAA,EAAIn8K,UAAUC,OAAO+4K,GAEzB,IAAI8D,EAAMhiL,KAAKshL,aAAathL,KAAKoD,QAASsT,GACtCsrK,GACAA,EAAI98K,UAAUC,OAAOuR,GAEzB8mE,EAAGz2E,MAAMC,QAAU,YAGnB,eAAOw2E,IASnBuhG,EAAS7+K,UAAU6U,eAAiB,WAChC,MAAO,IAQXgqK,EAAS7+K,UAAU8zC,WAAa,WAC5B,OAAO,eAAQh0C,KAAKoD,QAAS,MAAQpD,KAAK8U,gBAAkB,aAEhEiqK,EAAS7+K,UAAU6jL,SAAW,SAAUl4J,EAAM88J,EAAYl/H,EAAO6gI,EAAQC,EAAY9pI,GAKjF,IAAI8M,OAJU,IAAV9D,IAAoBA,EAAQzpD,KAAKypD,YACtB,IAAX6gI,IAAqBA,EAAS,SACf,IAAfC,IAAyBA,GAAa,QAC5B,IAAV9pI,IAAoBA,EAAQ,GAEhCA,EAAQ8pI,EAAa9pI,EAAQ,EAAI,EACjC,IAAK,IAAIz/C,EAAI,EAAGiiB,EAAMwmC,EAAM9oD,OAAQK,EAAIiiB,EAAKjiB,IAAK,CAE9C,GADAusD,EAAO9D,EAAMzoD,IACR2nL,EAAap7H,EAAKvtD,KAAK0kL,SAAS,SAAUjkI,IAAU8M,EAAKvtD,KAAK0kL,SAAS,OAAQjkI,OAAa50B,EAAM,CACnGy+J,EAAOj+K,KAAKrL,GACZ,MAEC,GAAIusD,EAAKvtD,KAAK0kL,SAAS,WAAYjkI,KACjC8M,EAAKvtD,KAAK0kL,SAAS,WAAYjkI,IAAQ9/C,OAAQ,CAElD,GADA2pL,EAAStqL,KAAK+jL,SAASl4J,EAAM88J,EAAYp7H,EAAKvtD,KAAK0kL,SAAS,WAAYjkI,IAAS6pI,GAAQ,EAAM7pI,IAC5D,IAA/B6pI,EAAOA,EAAO3pL,OAAS,GAKtB,CACD2pL,EAAO/7C,QAAQvtI,GACf,MANIA,IAAMiiB,EAAM,GACZqnK,EAAO7G,WASXziL,IAAMiiB,EAAM,GACZqnK,EAAOj+K,MAAM,GAIzB,OAASk+K,IAA6B,IAAfD,EAAO,GAAkBA,EAAL,IAU/CvL,EAAS7+K,UAAUy2D,YAAc,SAAUlN,EAAOtZ,EAAQw4I,GAEtD,IAAInrG,EACA0X,EACA8pF,OAHW,IAAX7uI,IAAqBA,GAAS,GAMlC,IAFA,IACIq6I,EADApyK,EAAW4mB,EAENh+B,EAAI,EAAGA,EAAIyoD,EAAM9oD,OAAQK,IAAK,CAEnC,GADAg+K,EAASh/K,KAAK+jL,SAASt6H,EAAMzoD,GAAI2nL,GAC7B3oL,KAAKg/K,OAAOr+K,QACZ,GAAsB,IAAlBq+K,EAAOr+K,OAAc,CACrB6pL,GAAW,EACX,IAAK,IAAIC,EAAM,EAAGxnK,EAAM+7J,EAAOr+K,OAAS,EAAG8pL,EAAMxnK,EAAKwnK,IAClD,GAAIzL,EAAOyL,KAASzqL,KAAKg/K,OAAOyL,GAAM,CAClCD,GAAW,EACX,MAGR,GAAIA,EACA,eAKR,GAAsB,IAAlBxL,EAAOr+K,OACP,SAGRu0F,EAAM8pF,EAAOyE,MACbjmG,EAAKx9E,KAAKmhL,cAAcnC,EAAOr+K,QAC3B68E,IAAO,eAAkB0X,KACrB/kD,EACInwC,KAAKm/K,QACL3hG,EAAG58D,SAASs0E,GAAKhwF,UAAUC,OAAOiT,GAClColE,EAAG58D,SAASs0E,GAAKtqF,gBAAgB,kBAG7B,OAAQ+E,WAAa6tE,EAAGt4E,UAAUmB,SAAS,iBAC3Cm3E,EAAG58D,SAASs0E,EAAM,GAAGhwF,UAAUC,OAAOiT,GAGtColE,EAAG58D,SAASs0E,GAAKhwF,UAAUC,OAAOiT,GAKtCpY,KAAKm/K,QACL3hG,EAAG58D,SAASs0E,GAAKhwF,UAAU4G,IAAIsM,GAC/BolE,EAAG58D,SAASs0E,GAAKvqF,aAAa,gBAAiB,SAG3C,OAAQgF,WAAa6tE,EAAGt4E,UAAUmB,SAAS,iBAC3Cm3E,EAAG58D,SAASs0E,EAAM,GAAGhwF,UAAU4G,IAAIsM,GAGnColE,EAAG58D,SAASs0E,GAAKhwF,UAAU4G,IAAIsM,MAcvD2mK,EAAS7+K,UAAUsiK,UAAY,SAAU/4G,EAAOk/H,GAC5C3oL,KAAK0qL,cAAcjhI,GAAO,EAAOk/H,IASrC5J,EAAS7+K,UAAUyqL,UAAY,SAAUlhI,EAAOk/H,GAC5C3oL,KAAK0qL,cAAcjhI,GAAO,EAAMk/H,IAEpC5J,EAAS7+K,UAAUwqL,cAAgB,SAAUjhI,EAAOmhI,EAAQjC,GAKxD,IAJA,IAAInrG,EACA/wE,EACAuyK,EACAzxH,EACKvsD,EAAI,EAAGA,EAAIyoD,EAAM9oD,OAAQK,IAK9B,GAJAg+K,EAASh/K,KAAK+jL,SAASt6H,EAAMzoD,GAAI2nL,GACjCl8K,EAAQuyK,EAAOyE,MACfjmG,EAAKx9E,KAAKmhL,cAAcnC,EAAOr+K,QAC/B4sD,EAAOvtD,KAAK+oL,SAAS/J,GACjBxhG,EAAI,CACJ,IAAIqtG,EAAUlC,EAAanrG,EAAG58D,SAASnU,GAAOnB,GAAKiiD,EAAK9gD,GAAOqlB,KAAKlgB,WAChEg5K,GAAUC,IAAYphI,EAAMzoD,GAC5Bw8E,EAAG58D,SAASnU,GAAOvH,UAAU4G,IAAI4yK,GAE3BkM,GAAUC,IAAYphI,EAAMzoD,IAClCw8E,EAAG58D,SAASnU,GAAOvH,UAAUC,OAAOu5K,KAYpDK,EAAS7+K,UAAUo3D,YAAc,SAAU7N,EAAOk/H,GAI9C,IAHA,IAAIzzF,EACA8pF,EACA8L,EACK9pL,EAAI,EAAGA,EAAIyoD,EAAM9oD,OAAQK,IAC9Bg+K,EAASh/K,KAAK+jL,SAASt6H,EAAMzoD,GAAI2nL,GACjCzzF,EAAM8pF,EAAOyE,MACbqH,EAAS9qL,KAAK+oL,SAAS/J,GAClB,eAAkB9pF,IACnBl1F,KAAKypL,WAAWqB,EAAQ9L,EAAQ9pF,IAY5C6pF,EAAS7+K,UAAUspL,YAAc,SAAU//H,EAAO33B,EAAM62J,GACpD3oL,KAAK+qL,YAAYthI,EAAO33B,EAAM62J,IAUlC5J,EAAS7+K,UAAUslB,aAAe,SAAUikC,EAAO33B,EAAM62J,GACrD3oL,KAAK+qL,YAAYthI,EAAO33B,EAAM62J,GAAY,IAE9C5J,EAAS7+K,UAAU6qL,YAAc,SAAUthI,EAAO33B,EAAM62J,EAAYqC,GAEhE,IAAIn3G,EACAqhB,EACA8pF,EACA8L,EACAG,OALY,IAAZD,IAAsBA,GAAU,GAMpC,IAAK,IAAIhqL,EAAI,EAAGA,EAAIyoD,EAAM9oD,OAAQK,IAAK,CACnCg+K,EAASh/K,KAAK+jL,SAASjyJ,EAAM62J,GAC7BzzF,EAAM8pF,EAAOyE,MACbqH,EAAS9qL,KAAK+oL,SAAS/J,GACvBiM,EAAW,IAAI,EAASH,EAAO,GAAI,QAASrhI,EAAMzoD,IAAI,GACtD8pL,EAAOp+K,OAAOs+K,EAAU91F,EAAM,EAAIA,EAAK,EAAG+1F,GAC1C,IAAInB,EAAM9pL,KAAKm/K,OAAS,CAACn/K,KAAKg0C,cAAc/E,OAAOjvC,KAAK2iL,aAAe,GAAGj1K,MAAMpK,KAAKtD,KAAKg0C,aAAapzB,UACvG,IAAK,eAAkBs0E,IAAQ8pF,EAAOr+K,OAASmpL,EAAInpL,OAAQ,CACvDu0F,EAAM81F,EAAU91F,EAAM,EAAIA,EAC1BrhB,EAAK7zE,KAAK8/K,YAAYgL,GAAQlqK,SAASs0E,GACvC,IAAI1X,EAAKx9E,KAAKm/K,OAAS,gBAAO,iBAAkB2K,EAAI9K,EAAOr+K,SAAWmpL,EAAI9K,EAAOr+K,QACjF68E,EAAGh4D,aAAaquD,EAAI2J,EAAG58D,SAASs0E,OAI5C6pF,EAAS7+K,UAAUknB,iBAAmB,WAClC,IAAI/jB,EAAQrD,KACZ,CAAC,MAAO,OAAQ,UAAW,WAAW0zC,SAAQ,SAAUnzC,GACpD8C,EAAMD,QAAQ2D,MAAM8pD,eAAetwD,MAEvC,CAAC,OAAQ,WAAY,QAAS,SAASmzC,SAAQ,SAAUnzC,GACzC,UAARA,GAAmB8C,EAAMD,QAAQ8B,UAAUmB,SAAS,kBACpDhD,EAAMD,QAAQ8B,UAAUC,OAAO,kBAEM,IAArC,CAAC,QAAS,SAASnB,QAAQzD,IAAgB8C,EAAMD,QAAQsH,aAAanK,IACtE8C,EAAMD,QAAQwH,gBAAgBrK,GAE9B8C,EAAM87K,QAAkB,UAAR5+K,GAAmB8C,EAAMD,QAAQ8B,UAAUmB,SAAS,eACpEhD,EAAMD,QAAQ8B,UAAUC,OAAO,kBAS3C45K,EAAS7+K,UAAUsS,QAAU,WACzB,IAAI+gC,EAAUvzC,KAAKg0C,aACnB,GAAIT,EAAS,CAET,GADAvzC,KAAKwzC,eACAxzC,KAAKm/K,OAgCNn/K,KAAK4gL,YACD,mBAAe5gL,KAAKm/K,OACpBn/K,KAAKoD,QAAUpD,KAAK6/K,mBAAmB7/K,KAAKoD,SAG5CpD,KAAKoD,QAAQ0H,UAAY,GAE7B9K,KAAKonB,mBACLmsB,EAAQE,WAAWjuB,aAAaxlB,KAAKoD,QAASmwC,GAC9CvzC,KAAKq/K,cAAgB,SAzCP,CAEd,GADAr/K,KAAKq/K,cAAct4K,MAAMC,QAAU,GACA,oBAA/BhH,KAAKq/K,cAAc3vK,QACnB,eAAS,CAAC1P,KAAKq/K,eAAgB,CAAC,YAAa,QAAS,KAAOr/K,KAAK8U,kBAClE9U,KAAKoD,QAAUpD,KAAKq/K,mBAMpB,GAHIr/K,KAAK2zC,YAAc3zC,KAAKq/K,cAAcnxH,mBAAgE,OAA3CluD,KAAKq/K,cAAcz+J,SAAS,GAAGlR,SAC1F1P,KAAKiL,cAAc,CAAE,MAAS,KAAM,GAEpC2C,SAASgpH,eAAe52H,KAAKq/K,cAAc/zK,IAAK,CAChD,IAAIg0K,EAASt/K,KAAKq/K,cAAcprI,mBAC5BqrI,GAAUA,IAAW/rI,EACrBvzC,KAAKq/K,cAAc19J,cAAc6D,aAAaxlB,KAAKoD,QAASk8K,GAG5Dt/K,KAAKq/K,cAAc19J,cAAcjd,YAAY1E,KAAKoD,SAElD,mBAAepD,KAAKm/K,OACpBn/K,KAAKoD,QAAUpD,KAAK6/K,mBAAmB7/K,KAAKoD,SAG5CpD,KAAKoD,QAAQ0H,UAAY,GAE7B,eAAO,GAAG4C,MAAMpK,KAAKtD,KAAKq/K,cAAcz+J,UAAW5gB,KAAKoD,SACxD,eAAOpD,KAAKq/K,eACZr/K,KAAKonB,mBAGbpnB,KAAKq/K,cAAgB,KAcrBr/K,KAAKm/K,QAAUn/K,KAAKq/K,eACpB,eAAOr/K,KAAKoD,SACZmwC,EAAQxsC,MAAMC,QAAU,GACxBusC,EAAQruC,UAAUC,OAAO,KAAOnF,KAAK8U,gBAAkB,YACvDy+B,EAAQ3oC,gBAAgB,gBAGxB,eAAO2oC,GAEX1wC,EAAO3C,UAAUsS,QAAQlP,KAAKtD,MAC1BA,KAAK42C,UACL52C,KAAKqI,cAAc,CAAC,aAG5BrI,KAAK8vE,SAAW,MAEpB1vE,EAAW,CACP,kBACD2+K,EAAS7+K,UAAW,wBAAoB,GAC3CE,EAAW,CACP,kBACD2+K,EAAS7+K,UAAW,kBAAc,GACrCE,EAAW,CACP,kBACD2+K,EAAS7+K,UAAW,cAAU,GACjCE,EAAW,CACP,kBACD2+K,EAAS7+K,UAAW,mBAAe,GACtCE,EAAW,CACP,kBACD2+K,EAAS7+K,UAAW,eAAW,GAClCE,EAAW,CACP,kBACD2+K,EAAS7+K,UAAW,cAAU,GACjCE,EAAW,CACP,kBACD2+K,EAAS7+K,UAAW,eAAW,GAClCE,EAAW,CACP,eAAS,KACV2+K,EAAS7+K,UAAW,gBAAY,GACnCE,EAAW,CACP,eAAS,IACV2+K,EAAS7+K,UAAW,kBAAc,GACrCE,EAAW,CACP,gBAAS,IACV2+K,EAAS7+K,UAAW,uBAAmB,GAC1CE,EAAW,CACP,eAAS,KACV2+K,EAAS7+K,UAAW,cAAU,GACjCE,EAAW,CACP,eAAS,KACV2+K,EAAS7+K,UAAW,cAAU,GACjCE,EAAW,CACP,eAAS,OACV2+K,EAAS7+K,UAAW,gBAAY,GACnCE,EAAW,CACP,gBAAS,IACV2+K,EAAS7+K,UAAW,uBAAmB,GAC1CE,EAAW,CACP,gBAAS,IACV2+K,EAAS7+K,UAAW,2BAAuB,GAC9CE,EAAW,CACP,eAAQ,CAAE8qL,OAAQ,KAAMp5J,KAAM,OAAQq5J,SAAU,WAAYzyH,QAAS,UAAWt7B,IAAK,MAAOgxB,UAAW,YAAaxtC,SAAU,SAAW,IAC1Im+J,EAAS7+K,UAAW,cAAU,GACjCE,EAAW,CACP,eAAW,GAAI,IAChB2+K,EAAS7+K,UAAW,aAAS,GAChCE,EAAW,CACP,eAAQ,CAAE4C,SAAU,IAAK2jL,OAAQ,OAAQ5jL,OAAQ,aAAe,IACjEg8K,EAAS7+K,UAAW,yBAAqB,GAC5C6+K,EAAW3+K,EAAW,CAClB,QACD2+K,GACIA,EAhrEkB,CAirE3B,S,4GCzzESqM,EAA0B,eAAmB,CACpD7nI,OAAQ,CAAE33B,OAAQ,CAAEmB,QAAS,OAC7BpZ,OAAQ,SAAUpP,GACd,IAAK,OAAW,CACZ,IAAIqoB,EAAK,OAAiBroB,EAAL,OACjBsoB,EAAQ,KAIZ,OAHK,eAAkB7sB,KAAK8sB,OAAOC,WAC/BF,EAAS,OAAoC7sB,KAAK8sB,OAAOC,QAApC/sB,KAAK8sB,OAAOC,WAE9BH,EAAE,MAAO,CAAE40B,MAAO,eAAiB30B,KAIlDF,QAAS,YACA,QAAa3sB,KAAK4rB,QACnB5rB,KAAK4rB,UAGboB,QAAS,CACLw2B,OAAQ,WACJ,MAAO,wBAIR6nI,EAAuB,CAC9Br7K,KAAM,oBACNwe,QAAS,SAAUC,GACfA,EAAIC,UAAU28J,EAAqBr7K,KAAMo7K,KAGtCE,EAAyB,eAAmB,CACnD33K,OAAQ,aAGRqZ,QAAS,CACLw2B,OAAQ,WACJ,MAAO,uBAIR+nI,EAAsB,CAC7Bv7K,KAAM,mBACNwe,QAAS,SAAUC,GACfA,EAAIC,UAAU68J,EAAoBv7K,KAAMs7K,KC3CrCE,EAAmB,eAAmB,CAC7CjoI,OAAQ,CAAE33B,OAAQ,CAAEmB,QAAS,OAC7BpZ,OAAQ,SAAUpP,GACd,IAAK,OAAW,CACZ,IAAIqoB,EAAK,OAAiBroB,EAAL,OACjBsoB,EAAQ,KAIZ,OAHK,eAAkB7sB,KAAK8sB,OAAOC,WAC/BF,EAAS,OAAoC7sB,KAAK8sB,OAAOC,QAApC/sB,KAAK8sB,OAAOC,WAE9BH,EAAE,MAAO,CAAE40B,MAAO,eAAiB30B,KAIlDF,QAAS,YACA,QAAa3sB,KAAK4rB,QACnB5rB,KAAK4rB,UAGboB,QAAS,CACLw2B,OAAQ,WACJ,MAAO,gBAIRioI,EAAgB,CACvBz7K,KAAM,YACNwe,QAAS,SAAUC,GACfA,EAAIC,UAAU+8J,EAAcz7K,KAAMw7K,KAe/BE,EAAkB,eAAmB,CAC5C/3K,OAAQ,aAGRqZ,QAAS,CACLw2B,OAAQ,WACJ,MAAO,eAIRmoI,EAAe,CACtB37K,KAAM,WACNwe,QAAS,SAAUC,GACfA,EAAIC,UAAUi9J,EAAa37K,KAAM07K,KCvD9BE,EAA4B,eAAmB,CACtDroI,OAAQ,CAAE33B,OAAQ,CAAEmB,QAAS,OAC7BpZ,OAAQ,SAAUpP,GACd,IAAK,OAAW,CACZ,IAAIqoB,EAAK,OAAiBroB,EAAL,OACjBsoB,EAAQ,KAIZ,OAHK,eAAkB7sB,KAAK8sB,OAAOC,WAC/BF,EAAS,OAAoC7sB,KAAK8sB,OAAOC,QAApC/sB,KAAK8sB,OAAOC,WAE9BH,EAAE,MAAO,CAAE40B,MAAO,eAAiB30B,KAIlDF,QAAS,YACA,QAAa3sB,KAAK4rB,QACnB5rB,KAAK4rB,UAGboB,QAAS,CACLw2B,OAAQ,WACJ,MAAO,gBAIRqoI,EAAyB,CAChC77K,KAAM,YACNwe,QAAS,SAAUC,GACfA,EAAIC,UAAUm9J,EAAuB77K,KAAM47K,KAqBxCE,EAA2B,eAAmB,CACrDn4K,OAAQ,aAGRqZ,QAAS,CACLw2B,OAAQ,WACJ,MAAO,eAIRuoI,EAAwB,CAC/B/7K,KAAM,WACNwe,QAAS,SAAUC,GACfA,EAAIC,UAAUq9J,EAAsB/7K,KAAM87K,KC7DvCE,EAAsB,eAAmB,CAChDzoI,OAAQ,CAAE33B,OAAQ,CAAEmB,QAAS,OAC7BpZ,OAAQ,SAAUpP,GACd,IAAK,OAAW,CACZ,IAAIqoB,EAAK,OAAiBroB,EAAL,OACjBsoB,EAAQ,KAIZ,OAHK,eAAkB7sB,KAAK8sB,OAAOC,WAC/BF,EAAS,OAAoC7sB,KAAK8sB,OAAOC,QAApC/sB,KAAK8sB,OAAOC,WAE9BH,EAAE,MAAO,CAAE40B,MAAO,eAAiB30B,KAIlDF,QAAS,YACA,QAAa3sB,KAAK4rB,QACnB5rB,KAAK4rB,UAGboB,QAAS,CACLw2B,OAAQ,WACJ,MAAO,mBAIRyoI,EAAmB,CAC1Bj8K,KAAM,eACNwe,QAAS,SAAUC,GACfA,EAAIC,UAAUu9J,EAAiBj8K,KAAMg8K,KAsBlCE,EAAqB,eAAmB,CAC/Cv4K,OAAQ,aAGRqZ,QAAS,CACLw2B,OAAQ,WACJ,MAAO,kBAIR2oI,EAAkB,CACzBn8K,KAAM,cACNwe,QAAS,SAAUC,GACfA,EAAIC,UAAUy9J,EAAgBn8K,KAAMk8K,KCxDjClxK,EAAa,CAAC,eAAgB,UAAW,aAAc,mBAAoB,iBAAkB,gBAAiB,gBAAiB,oBAAqB,cAAe,iBAAkB,kBAAmB,gBAAiB,sBAAuB,iBAAkB,eAAgB,gBAAiB,UAAW,YAAa,WAAY,wBAAyB,kBAAmB,kBAAmB,UAAW,mBAAoB,WAAY,eAAgB,gBAAiB,kBAAmB,aAAc,iBAAkB,eAAgB,6BAA8B,sBAAuB,mBAAoB,eAAgB,iBAAkB,6BAA8B,oBAAqB,cAAe,sBAAuB,sBAAuB,0BAA2B,oBAAqB,YAAa,qBAAsB,uBAAwB,uBAAwB,cAAe,iBAAkB,gBAAiB,aAAc,YAAa,gBAAiB,SAAU,qBAAsB,yBAA0B,mBAAoB,SAAU,eAAgB,gBAAiB,gBAAiB,YAAa,QAAS,cAAe,iBAAkB,kBAAmB,YAAa,mBAAoB,cAAe,iBAAkB,mBAAoB,oBAAqB,oBAAqB,iBAAkB,YAAa,eAAgB,mBAAoB,UAAW,kBAAmB,QAAS,cAAe,iBAAkB,gBAAiB,WAAY,cAAe,cAAe,iBAAkB,iBAAkB,oBAAqB,kBAAmB,aAAc,kBAAmB,oBAAqB,2BAA4B,0BAA2B,cAAe,kBAAmB,cAAe,YAAa,iBAAkB,kBAAmB,WAAY,WAAY,YAAa,eAAgB,gBAAiB,iBAAkB,wBAAyB,mBAAoB,oBAAqB,aAAc,kBAAmB,aAAc,kBAAmB,iBAAkB,iBAAkB,kBAAmB,eAAgB,mBAAoB,kBAAmB,UAAW,YAAa,oBAAqB,kBAAmB,YAAa,kBAAmB,8BAA+B,sBAAuB,2BAA4B,qBAAsB,wBAAyB,uBAAwB,qBAAsB,iBAAkB,aAAc,wBAAyB,sBAAuB,OAAQ,4BAA6B,oBAAqB,yBAA0B,mBAAoB,gBAAiB,gBAAiB,cAAe,oBAAqB,cAAe,aAAc,WAAY,eAAgB,gBAAiB,iBAAkB,UAAW,eAAgB,qBAAsB,UAAW,cAAe,eAAgB,gBACrxFiQ,EAAa,CAAC,cACdC,EAAW,eAAS,CAAEC,MAAOnQ,IAC7BmQ,EAAQD,EAAS,GAAIE,EAAQF,EAAS,GAAIG,EAAY5rB,OAAO2V,KAAKgW,GAC7EC,EAAUhf,KAAK,eAAgB,qBAC/B,IAAK,IAAI,EAAK,EAAGif,EAAeL,EAAY,EAAKK,EAAa3qB,OAAQ,IAAM,CACxE,IAAI4qB,EAAUD,EAAa,GAC3BD,EAAUhf,KAAK,UAAYkf,GAQxB,IAAI6gK,EAAgB,eAAmB,CAC1Cp8K,KAAM,gBACNyb,OAAQ,CAAC,QACTN,MAAOA,EACPC,MAAOA,EACPM,MAAOL,EACPrK,MAAO,CAAEtS,MAAO,gBAChBid,QAAS,WAAc,MAAO,CAAEC,OAAQ5rB,KAAK4rB,SAC7CC,KAAM,WACF,MAAO,CACHC,aAAc,IAAI,OAAK,IACvBC,SAAU/Q,EACVgR,OAAQf,EACRgB,mBAAmB,EACnBC,oBAAoB,EACpBC,UAAW,CAAE,YAAa,CAAE,WAAY,CAAE,oBAAqB,qBAAwB,eAAgB,CAAE,cAAe,CAAE,YAAa,cACvIC,cAAe,CAAE,oBAAqB,aACtCC,QAAS,OACTC,mBAAoB,KAG5BC,QAAS,WACLvsB,KAAK8rB,aAAaU,SAAWxsB,KAAK8rB,aAAa7jB,QAC/CjI,KAAK8rB,aAAa7jB,QAAUjI,KAAKiI,QACjCjI,KAAKysB,iBACLzsB,KAAK8rB,aAAaY,eAAiB1sB,KAAK8rB,aAAa7gB,cACrDjL,KAAK8rB,aAAa7gB,cAAgBjL,KAAKiL,cACvCjL,KAAK8rB,aAAazjB,cAAgBrI,KAAKqI,cACvCrI,KAAK2sB,QAAU3sB,KAAK2sB,SAExBhZ,OAAQ,SAAUpP,GACd,IAAIqoB,EAAK,OAAiBroB,EAAL,OACjBsoB,EAAQ,KAIZ,OAHK,eAAkB7sB,KAAK8sB,OAAOC,WAC/BF,EAAS,OAAoC7sB,KAAK8sB,OAAOC,QAApC/sB,KAAK8sB,OAAOC,WAE9BH,EAAE,MAAOC,IAEpBG,QAAS,CACL3kB,cAAe,SAAU4kB,GAIrB,GAHKA,IACDA,EAAgBxtB,OAAO2V,KAAKpV,KAAKssB,oBAAsB,KAEvDW,EAActsB,QAAUX,KAAKssB,mBAC7B,IAAK,IAAIze,EAAK,EAAGqf,EAAkBD,EAAepf,EAAKqf,EAAgBvsB,OAAQkN,IAAM,CACjF,IAAIsf,EAAWD,EAAgBrf,GAC3Buf,EAAoBptB,KAAKssB,mBAAmBa,GAChD,GAAIC,GAAqBA,EAAkBzsB,OAAQ,CAC/C,IAAK,IAAIkD,EAAK,EAAGwpB,EAAsBD,EAAmBvpB,EAAKwpB,EAAoB1sB,OAAQkD,IAAM,CAC7F,IAAIypB,EAAMD,EAAoBxpB,GAC1B2O,EAAU,eAAS,mBAAoB8a,GACvC9a,GACA8a,EAAIC,QAAQC,WAEZF,EAAIxiB,YACJwiB,EAAIxiB,UAAY,WAGjB9K,KAAKssB,mBAAmBa,MAK/CliB,cAAe,SAAUoK,EAAMoY,GAC3B,IAAIpqB,EAAQrD,KACRA,KAAKqsB,SACLrsB,KAAKgsB,OAAUhsB,KAAKgsB,OAAyChsB,KAAKgsB,OAArChsB,KAAK8rB,aAAa4B,aAE/C1tB,KAAK8rB,cAAgB9rB,KAAK8rB,aAAaY,gBACvC1sB,KAAK8rB,aAAaY,eAAerX,EAAMoY,GAEvCpY,GAAQrV,KAAKgsB,QAAUhsB,KAAKgsB,OAAOrrB,QACnClB,OAAO2V,KAAKC,GAAMxO,KAAI,SAAUtG,GAC5B8C,EAAM2oB,OAAOnlB,KAAI,SAAUma,GAClBzgB,IAAQygB,GAAY,cAAcvD,KAAKld,KACpC8C,EAAMgpB,OACNhpB,EAAMyoB,aAAa6B,YAAYC,MAAM,UAAYrtB,EAAK8U,EAAK9U,KAG3D8C,EAAMuqB,MAAM,UAAYrtB,EAAK8U,EAAK9U,IAClC8C,EAAMuqB,MAAM,eAAgBvY,EAAK9U,aAOzD0H,QAAS,SAAUyW,EAAWmP,EAAWC,GAIrC,GAHK,SACD9tB,KAAKgsB,OAAUhsB,KAAKgsB,OAAyChsB,KAAKgsB,OAArChsB,KAAK8rB,aAAa4B,aAEhC,WAAdhP,GAAwC,UAAdA,IAA0B1e,KAAKgsB,QAAkC,IAAvBhsB,KAAKgsB,OAAOrrB,QAiBhF,GAAmB,gBAAd+d,GAAyD,iBAA1BmP,EAAUE,aAAmC/tB,KAAKgsB,QAAkC,IAAvBhsB,KAAKgsB,OAAOrrB,OAAe,CACzHJ,EAAMP,KAAKgsB,OAAOpa,WAAWhL,MAAM,6BAA+B,GAClEonB,EAAUztB,EAAI,GACdstB,GAAattB,IAAQ,gBAAYstB,EAAUG,MACtC,QAKDhuB,KAAK4tB,MAAM,UAAYI,EAASH,EAAUG,IAC1ChuB,KAAK4tB,MAAM,eAAgBC,EAAUG,MALrChuB,KAAK8rB,aAAa6B,YAAYC,MAAM,UAAYI,EAASH,EAAUG,IACnEhuB,KAAK8rB,aAAa6B,YAAYC,MAAM,eAAgBC,EAAUG,WAvB0B,CAChG,IAAIztB,EAAMP,KAAKgsB,OAAOpa,WAAWhL,MAAM,kBAAoB,GACvDonB,EAAUztB,EAAI,GACdstB,GAAattB,IAAQ,gBAAYstB,EAAUG,MACtC,QAMiB,WAAdtP,GAA2B1e,KAAKiuB,SAAWjuB,KAAKiuB,OAAOC,gBACvDluB,KAAK4tB,MAAM,UAAYI,EAASH,EAAUG,IAC1ChuB,KAAK4tB,MAAM,eAAgBC,EAAUG,MAPzChuB,KAAK8rB,aAAa6B,YAAYC,MAAM,UAAYI,EAASH,EAAUG,IACnEhuB,KAAK8rB,aAAa6B,YAAYC,MAAM,eAAgBC,EAAUG,IAC9DhuB,KAAK8rB,aAAa6B,YAAYC,MAAM,oBAAqBC,EAAUG,MAwB1EhuB,KAAK8rB,cAAgB9rB,KAAK8rB,aAAaU,UACxCxsB,KAAK8rB,aAAaU,SAAS9N,EAAWmP,EAAWC,IAGzDlC,OAAQ,WACJ5rB,KAAK2sB,WAETshG,UAAW,SAAUpiG,EAAMpf,GACvB,OAAOzM,KAAK8rB,aAAamiG,UAAUpiG,EAAMpf,IAE7CsxG,iBAAkB,WACd,OAAO/9G,KAAK8rB,aAAaiyF,oBAE7BoS,eAAgB,SAAUC,GACtB,OAAOpwH,KAAK8rB,aAAaqkG,eAAeC,IAE5C8K,iBAAkB,SAAUh/F,GACxB,OAAOl8B,KAAK8rB,aAAaovG,iBAAiBh/F,IAE9C8+F,YAAa,SAAU9+F,GACnB,OAAOl8B,KAAK8rB,aAAakvG,YAAY9+F,IAEzCk9F,gCAAiC,SAAUC,GACvC,OAAOr5H,KAAK8rB,aAAastG,gCAAgCC,IAE7DxM,iBAAkB,SAAUz9F,EAAYD,GACpC,OAAOnvB,KAAK8rB,aAAa+gG,iBAAiBz9F,EAAYD,IAE1DuoG,mBAAoB,WAChB,OAAO13H,KAAK8rB,aAAa4rG,sBAE7BnK,eAAgB,SAAU57F,GACtB,OAAO3xB,KAAK8rB,aAAayhG,eAAe57F,IAE5CylG,cAAe,WACX,OAAOp3H,KAAK8rB,aAAasrG,iBAE7BO,kBAAmB,WACf,OAAO33H,KAAK8rB,aAAa6rG,qBAE7BryB,eAAgB,WACZ,OAAOtlG,KAAK8rB,aAAaw5E,kBAE7BwnB,aAAc,WACV,OAAO9sH,KAAK8rB,aAAaghG,gBAE7B/nB,UAAW,WACP,OAAO/kG,KAAK8rB,aAAai5E,aAE7B4B,KAAM,SAAUqB,GACZ,OAAOhoG,KAAK8rB,aAAa66E,KAAKqB,IAElCmuB,UAAW,SAAUT,EAAuBC,EAAkBC,EAAUC,GACpE,OAAO71H,KAAK8rB,aAAaqqG,UAAUT,EAAuBC,EAAkBC,EAAUC,IAE1FxD,UAAW,WACP,OAAOryH,KAAK8rB,aAAaumG,aAE7BvE,aAAc,SAAUC,EAAWliG,GAC/B,OAAO7rB,KAAK8rB,aAAagiG,aAAaC,EAAWliG,IAErDqiG,UAAW,SAAU5uC,GACjB,OAAOt/E,KAAK8rB,aAAaoiG,UAAU5uC,IAEvCwgB,gBAAiB,SAAUm4B,EAAexrH,GACtC,OAAOzM,KAAK8rB,aAAag0E,gBAAgBm4B,EAAexrH,IAE5D8qH,kBAAmB,WACf,OAAOv3H,KAAK8rB,aAAayrG,qBAE7BE,gBAAiB,WACb,OAAOz3H,KAAK8rB,aAAa2rG,mBAE7BtJ,SAAU,SAAU1hH,EAAOolB,GACvB,OAAO7xB,KAAK8rB,aAAaqiG,SAAS1hH,EAAOolB,IAE7C08F,mBAAoB,SAAU9kE,EAAOmN,GACjC,OAAO52D,KAAK8rB,aAAayiG,mBAAmB9kE,EAAOmN,IAEvD15B,QAAS,WACL,OAAOl9B,KAAK8rB,aAAaoR,WAE7Bu4F,YAAa,SAAUC,EAAuBC,EAAkBC,EAAUC,GACtE,OAAO71H,KAAK8rB,aAAa2pG,YAAYC,EAAuBC,EAAkBC,EAAUC,IAE5FpnB,sBAAuB,SAAU3oF,GAC7B,OAAO9lB,KAAK8rB,aAAa2iF,sBAAsB3oF,IAEnDmnG,eAAgB,SAAUC,EAAWC,EAAgBC,EAAaj7F,EAAWe,EAAWgH,EAAcmzF,EAAmBC,GACrH,OAAOttH,KAAK8rB,aAAamhG,eAAeC,EAAWC,EAAgBC,EAAaj7F,EAAWe,EAAWgH,EAAcmzF,EAAmBC,IAE3IgB,gBAAiB,WACb,OAAOtuH,KAAK8rB,aAAawiG,mBAE7B7mB,iBAAkB,SAAUzS,EAAU0pB,GAClC,OAAO1+G,KAAK8rB,aAAa27E,iBAAiBzS,EAAU0pB,IAExDhmF,iBAAkB,SAAU7G,GACxB,OAAO7xB,KAAK8rB,aAAa4M,iBAAiB7G,IAE9CiJ,eAAgB,SAAU3G,GACtB,OAAOn0B,KAAK8rB,aAAagP,eAAe3G,IAE5C+0F,oBAAqB,WACjB,OAAOlpH,KAAK8rB,aAAao9F,uBAE7BrtB,uBAAwB,SAAUhqE,GAC9B,OAAO7xB,KAAK8rB,aAAa+vE,uBAAuBhqE,IAEpD82E,uBAAwB,SAAUl8F,GAC9B,OAAOzM,KAAK8rB,aAAa68E,uBAAuBl8F,IAEpDs8G,qBAAsB,SAAU50F,GAC5B,OAAOn0B,KAAK8rB,aAAai9F,qBAAqB50F,IAElD67D,sBAAuB,SAAUn+D,GAC7B,OAAO7xB,KAAK8rB,aAAakkE,sBAAsBn+D,IAEnDgjE,oBAAqB,SAAU1gE,GAC3B,OAAOn0B,KAAK8rB,aAAa+oE,oBAAoB1gE,IAEjDuC,WAAY,SAAUktF,GAClB,OAAO5jH,KAAK8rB,aAAa4K,WAAWktF,IAExC5pE,WAAY,WACR,OAAOh6C,KAAK8rB,aAAakuB,cAE7B4E,gBAAiB,WACb,OAAO5+C,KAAK8rB,aAAa8yB,mBAE7By9C,sBAAuB,WACnB,OAAOr8F,KAAK8rB,aAAauwE,yBAE7BxsE,cAAe,WACX,OAAO7vB,KAAK8rB,aAAa+D,iBAE7Bq4E,YAAa,WACT,OAAOloG,KAAK8rB,aAAao8E,eAE7BmkB,gBAAiB,WACb,OAAOrsH,KAAK8rB,aAAaugG,mBAE7BqM,mBAAoB,WAChB,OAAO14H,KAAK8rB,aAAa4sG,sBAE7Bn9E,iBAAkB,WACd,OAAOv7C,KAAK8rB,aAAayvB,oBAE7BqpE,sBAAuB,WACnB,OAAO5kH,KAAK8rB,aAAa84F,yBAE7Bn0F,qBAAsB,WAClB,OAAOzwB,KAAK8rB,aAAa2E,wBAE7Bi2F,kBAAmB,WACf,OAAO1mH,KAAK8rB,aAAa46F,qBAE7BiC,iCAAkC,SAAUl8G,GACxC,OAAOzM,KAAK8rB,aAAa68F,iCAAiCl8G,IAE9D62G,mBAAoB,WAChB,OAAOtjH,KAAK8rB,aAAaw3F,sBAE7B39B,cAAe,WACX,OAAO3lF,KAAK8rB,aAAa65D,iBAE7B6iC,4BAA6B,SAAUxzB,EAAU0pB,GAC7C,OAAO1+G,KAAK8rB,aAAa08F,4BAA4BxzB,EAAU0pB,IAEnEgK,kCAAmC,SAAUj8G,GACzC,OAAOzM,KAAK8rB,aAAa48F,kCAAkCj8G,IAE/Dm6G,uBAAwB,WACpB,OAAO5mH,KAAK8rB,aAAa86F,0BAE7BzB,yBAA0B,SAAU14G,GAChC,OAAOzM,KAAK8rB,aAAaq5F,yBAAyB14G,IAEtDk5G,mBAAoB,WAChB,OAAO3lH,KAAK8rB,aAAa65F,sBAE7BV,oBAAqB,SAAUx4G,GAC3B,OAAOzM,KAAK8rB,aAAam5F,oBAAoBx4G,IAEjD4tC,iBAAkB,WACd,OAAOr6C,KAAK8rB,aAAauuB,oBAE7Bq5C,eAAgB,WACZ,OAAO1zF,KAAK8rB,aAAa4nE,kBAE7BylC,iBAAkB,WACd,OAAOn5H,KAAK8rB,aAAaqtG,oBAE7B9e,gBAAiB,WACb,OAAOr6G,KAAK8rB,aAAauuF,mBAE7BkO,wBAAyB,SAAUvzB,EAAU0pB,GACzC,OAAO1+G,KAAK8rB,aAAay8F,wBAAwBvzB,EAAU0pB,IAE/D+J,8BAA+B,SAAUh8G,GACrC,OAAOzM,KAAK8rB,aAAa28F,8BAA8Bh8G,IAE3D+5G,mBAAoB,WAChB,OAAOxmH,KAAK8rB,aAAa06F,sBAE7BxB,qBAAsB,SAAUv4G,GAC5B,OAAOzM,KAAK8rB,aAAak5F,qBAAqBv4G,IAElDi5G,eAAgB,WACZ,OAAO1lH,KAAK8rB,aAAa45F,kBAE7Bb,SAAU,WACN,OAAO7kH,KAAK8rB,aAAa+4F,YAE7B/oF,wBAAyB,WACrB,OAAO97B,KAAK8rB,aAAagQ,2BAE7B0rE,cAAe,SAAU/6F,GACrB,OAAOzM,KAAK8rB,aAAa07E,cAAc/6F,IAE3C8rH,wBAAyB,SAAU9/G,GAC/B,OAAOzY,KAAK8rB,aAAaysG,wBAAwB9/G,IAErD2sG,WAAY,SAAU9kH,GAClB,OAAON,KAAK8rB,aAAas5F,WAAW9kH,IAExC0xF,QAAS,WACL,OAAOhyF,KAAK8rB,aAAakmE,WAE7B63B,sBAAuB,WACnB,OAAO7pH,KAAK8rB,aAAa+9F,yBAE7BxkB,mBAAoB,WAChB,OAAOrlG,KAAK8rB,aAAau5E,sBAE7BoB,0BAA2B,WACvB,OAAOzmG,KAAK8rB,aAAa26E,6BAE7B5mB,sBAAuB,WACnB,OAAO7/E,KAAK8rB,aAAa+zD,yBAE7B6pC,gBAAiB,WACb,OAAO1pH,KAAK8rB,aAAa49F,mBAE7B+P,iBAAkB,SAAUC,EAAYC,GACpC,OAAO35H,KAAK8rB,aAAa2tG,iBAAiBC,EAAYC,IAE1D1Q,oBAAqB,SAAUp3F,GAC3B,OAAO7xB,KAAK8rB,aAAam9F,oBAAoBp3F,IAEjDynE,kBAAmB,WACf,OAAOt5F,KAAK8rB,aAAawtE,qBAE7BizB,SAAU,SAAUC,GAChB,OAAOxsH,KAAK8rB,aAAaygG,SAASC,IAEtC0K,iBAAkB,WACd,OAAOl3H,KAAK8rB,aAAaorG,oBAE7BH,YAAa,SAAUp+F,GACnB,OAAO34B,KAAK8rB,aAAairG,YAAYp+F,IAEzCq+F,eAAgB,WACZ,OAAOh3H,KAAK8rB,aAAakrG,kBAE7BhN,YAAa,SAAU50G,EAAMqvF,GACzB,OAAOzkG,KAAK8rB,aAAak+F,YAAY50G,EAAMqvF,IAE/C6zB,WAAY,WACR,OAAOt4H,KAAK8rB,aAAawsG,cAE7Bj4B,YAAa,WACT,OAAOrgG,KAAK8rB,aAAau0E,eAE7BnmD,aAAc,WACV,OAAOl6C,KAAK8rB,aAAaouB,gBAE7Bo9E,kBAAmB,SAAUtxH,EAAGC,GAC5B,OAAOjG,KAAK8rB,aAAawrG,kBAAkBtxH,EAAGC,IAElDmwH,UAAW,SAAUC,EAAqBV,EAAkBW,EAAQT,GAChE,OAAO71H,KAAK8rB,aAAasqG,UAAUC,EAAqBV,EAAkBW,EAAQT,IAEtF3sD,MAAO,WACH,OAAOlpE,KAAK8rB,aAAao9C,SAE7B5zD,QAAS,WACL,OAAOtV,KAAK8rB,aAAaxW,WAE7BkgH,eAAgB,WACZ,OAAOx1H,KAAK8rB,aAAa0pG,kBAE7BhV,cAAe,WACX,OAAOxgH,KAAK8rB,aAAa00F,iBAE7B5gB,cAAe,WACX,OAAO5/F,KAAK8rB,aAAa8zE,iBAE7B8vB,qBAAsB,SAAUz5F,EAAWD,GACvC,OAAOh2B,KAAK8rB,aAAa4jG,qBAAqBz5F,EAAWD,IAE7D25F,2BAA4B,SAAUzC,EAAWl3F,GAC7C,OAAOh2B,KAAK8rB,aAAa6jG,2BAA2BzC,EAAWl3F,IAEnEs5F,eAAgB,SAAUC,EAAWC,GACjC,OAAOxvH,KAAK8rB,aAAawjG,eAAeC,EAAWC,IAEvD/5F,YAAa,SAAUm6F,EAAa55F,GAChC,OAAOh2B,KAAK8rB,aAAa2J,YAAYm6F,EAAa55F,IAEtDo4F,SAAU,WACN,OAAOpuH,KAAK8rB,aAAasiG,YAE7Bv6F,OAAQ,SAAUkoE,GACd,OAAO/7F,KAAK8rB,aAAa+H,OAAOkoE,IAEpC6xB,WAAY,SAAU9lB,EAAW4lB,GAC7B,OAAO1tH,KAAK8rB,aAAa8hG,WAAW9lB,EAAW4lB,IAEnDkK,YAAa,SAAUC,GACnB,OAAO73H,KAAK8rB,aAAa8rG,YAAYC,IAEzChwB,mBAAoB,SAAU/iB,EAAY+oC,GACtC,OAAO7tH,KAAK8rB,aAAa+7E,mBAAmB/iB,EAAY+oC,IAE5DjL,UAAW,SAAUn2G,EAAOihH,GACxB,OAAO1tH,KAAK8rB,aAAa82F,UAAUn2G,EAAOihH,IAE9CC,WAAY,SAAU/kB,GAClB,OAAO5oG,KAAK8rB,aAAa6hG,WAAW/kB,IAExCkvB,kBAAmB,SAAUhzC,EAAY+oC,GACrC,OAAO7tH,KAAK8rB,aAAagsG,kBAAkBhzC,EAAY+oC,IAE3DmM,gBAAiB,SAAU58F,GACvB,OAAOp9B,KAAK8rB,aAAakuG,gBAAgB58F,IAE7Cw8F,kBAAmB,SAAUx8F,GACzB,OAAOp9B,KAAK8rB,aAAa8tG,kBAAkBx8F,IAE/C28F,gBAAiB,SAAU38F,GACvB,OAAOp9B,KAAK8rB,aAAaiuG,gBAAgB38F,IAE7C0pF,aAAc,SAAUvmH,EAAKsxB,EAAOpZ,GAChC,OAAOzY,KAAK8rB,aAAag7F,aAAavmH,EAAKsxB,EAAOpZ,IAEtDgsG,eAAgB,SAAUrhH,GACtB,OAAOpD,KAAK8rB,aAAa24F,eAAerhH,IAE5CohH,oBAAqB,SAAUphH,GAC3B,OAAOpD,KAAK8rB,aAAa04F,oBAAoBphH,IAEjDmhH,qBAAsB,SAAUnhH,GAC5B,OAAOpD,KAAK8rB,aAAay4F,qBAAqBnhH,IAElDshH,mBAAoB,SAAUthH,GAC1B,OAAOpD,KAAK8rB,aAAa44F,mBAAmBthH,IAEhD2hH,aAAc,SAAU3hH,GACpB,OAAOpD,KAAK8rB,aAAai5F,aAAa3hH,IAE1Cm/G,WAAY,SAAUhiH,EAAKilH,GACvB,OAAOxlH,KAAK8rB,aAAay2F,WAAWhiH,EAAKilH,IAE7C4X,yBAA0B,WACtB,OAAOp9H,KAAK8rB,aAAasxG,4BAE7BC,uBAAwB,WACpB,OAAOr9H,KAAK8rB,aAAauxG,0BAE7BtT,YAAa,SAAU30G,EAAMmvF,GACzB,OAAOvkG,KAAK8rB,aAAai+F,YAAY30G,EAAMmvF,IAE/ClH,YAAa,SAAUwd,EAAeC,GAClC,OAAO96G,KAAK8rB,aAAauxE,YAAYwd,EAAeC,IAExD1d,YAAa,WACT,OAAOp9F,KAAK8rB,aAAasxE,eAE7BsvB,WAAY,SAAU/zF,EAAYjU,EAAWioG,GACzC,OAAO3sH,KAAK8rB,aAAa4gG,WAAW/zF,EAAYjU,EAAWioG,IAE/DqB,UAAW,WACP,OAAOhuH,KAAK8rB,aAAakiG,aAE7BqJ,cAAe,SAAU1+F,GACrB,OAAO34B,KAAK8rB,aAAaurG,cAAc1+F,IAE3CivE,WAAY,SAAU5S,EAAUnjE,EAAOpZ,GACnC,OAAOzY,KAAK8rB,aAAa87E,WAAW5S,EAAUnjE,EAAOpZ,IAEzDg0G,sBAAuB,SAAUngC,GAC7B,OAAOtsF,KAAK8rB,aAAa2gG,sBAAsBngC,IAEnD+hC,UAAW,SAAU5hH,EAAOof,GACxB,OAAO7rB,KAAK8rB,aAAauiG,UAAU5hH,EAAOof,IAE9C4uG,eAAgB,SAAUl6H,EAAKilH,GAC3B,OAAOxlH,KAAK8rB,aAAa2uG,eAAel6H,EAAKilH,OAI9C6mE,EAAa,CACpBr8K,KAAM,WACNwe,QAAS,SAAUC,GACfA,EAAIC,UAAU29J,EAAWr8K,KAAMo8K,GAC/B39J,EAAIC,UAAUi9J,EAAa37K,KAAM07K,GACjCj9J,EAAIC,UAAU+8J,EAAcz7K,KAAMw7K,GAClC/8J,EAAIC,UAAU68J,EAAoBv7K,KAAMs7K,GACxC78J,EAAIC,UAAU28J,EAAqBr7K,KAAMo7K,GACzC38J,EAAIC,UAAUy9J,EAAgBn8K,KAAMk8K,GACpCz9J,EAAIC,UAAUu9J,EAAiBj8K,KAAMg8K,GACrCv9J,EAAIC,UAAUq9J,EAAsB/7K,KAAM87K,GAC1Cr9J,EAAIC,UAAUm9J,EAAuB77K,KAAM47K,M,yDC9iBnD,4JAAIvsL,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GA0BxCusL,EAA+B,WAC/B,SAASA,EAAc19J,GACnB5uB,KAAKm1H,YAAc,GACnBn1H,KAAKusL,SAAU,EACfvsL,KAAKwsL,KAAO,GAEZxsL,KAAKg1K,kBAAmB,EACxBh1K,KAAKysL,QAAS,EACdzsL,KAAK0sL,WAAY,EACjB1sL,KAAK2sL,cAAe,EACpB3sL,KAAK4sL,sBAAuB,EAC5B5sL,KAAK6sL,YAAc,GACnB7sL,KAAK8sL,UAAY9sL,KAAK+sL,eAAc,GACpC/sL,KAAKouJ,QAAU,CAAC,YAAa,WAC7BpuJ,KAAKgtL,iBAAkB,EACvBhtL,KAAK4uB,OAASA,EACd5uB,KAAKitL,YAAc,IAAI,OAAkBjtL,KAAK4uB,QAC9C5uB,KAAK64C,mBA48BT,OA18BAyzI,EAAcpsL,UAAUgtL,WAAa,SAAU//K,GAC3C,IAAI7M,EAAS6M,EAAE7M,OACfN,KAAK2sL,cAAe,EACpB3sL,KAAK4sL,sBAAuB,EAC5B5sL,KAAK0sL,UAAYpsL,EAAO4E,UAAUmB,SAAS,WAE/CimL,EAAcpsL,UAAUitL,QAAU,SAAUhgL,GACxC,KAAInN,KAAK4uB,OAAOE,aAAe,OAAQnf,UAAY3P,KAAK4uB,OAAO6D,sBACxDzyB,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,qBAAwBlM,KAAK4uB,OAAO4rB,eAAiBrtC,GACvFA,EAAE7M,SAAWN,KAAK4uB,OAAOxrB,SAAWpD,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,iBAF7E,CAKAlM,KAAKotL,WAAWptL,KAAK4uB,OAAOy+J,mBAAgD,IAA3BrtL,KAAK4uB,OAAOwrB,YACxDp6C,KAAK4uB,OAAOy+J,mBAAsBrtL,KAAK4uB,OAAOytE,wBAAwB17F,QAA8C,UAAlCX,KAAK4uB,OAAOi3C,aAAaihC,OACtE,UAAlC9mG,KAAK4uB,OAAOi3C,aAAaihC,OAAoB9mG,KAAK4uB,OAAO+4E,YAAe3nG,KAAK4uB,OAAO+4E,WAAW2mB,kBAAkB,QAAuB3tH,SAC5IX,KAAKg6C,aAAayoG,OACd6qC,SAASttL,KAAKitL,YAAY3sI,aAAa,CAAEnpB,KAAM,CAAC,IAAI,OAAI,CAAE2oD,WAAW,OAAa9/E,KAAKg6C,aAAarY,UAAU,GAEtH,IAAIsgE,EAAUjiG,KAAKg6C,aAAayoG,OAAO8qC,IAAI,GAAI,EAAG,CAAC,EAAG,GAAI,KAAMvtL,KAAKg6C,aAAawzI,aAClFxtL,KAAKg6C,aAAayoG,OAAOh6H,OAAOw5E,EAAQ,GAAIA,EAAQ,KAChDjiG,KAAK0sL,WAAev/K,GAAKA,EAAE7M,SAAWN,KAAK4uB,OAAOxrB,UAClDpD,KAAK+f,MAAM5S,GACXnN,KAAK0sL,WAAY,KAGzBJ,EAAcpsL,UAAUutL,aAAe,SAAUtgL,GAC7C,IAAInN,KAAK4uB,OAAOE,YAAhB,CAGA,IAAI8mE,EAAkB51F,KAAK4uB,OAAOyrB,mBAAmBnuC,cAAc,8BACnE,GAAIiB,EAAE7M,SAAWs1F,GAAmBzoF,EAAE0F,gBAAkB,gBAAa1F,EAAE0F,cAAe,YAC9E7S,KAAK4sL,qBAAsB,CAC/B,IAAIc,EAAuB,CAAC,EAAG,GACqD,IAAhF1tL,KAAKwiJ,OAAOC,OAAOA,OAAOirC,EAAqB,IAAIA,EAAqB,MACxEA,EAAuB,eAAc1tL,KAAKwiJ,OAAOC,OAAOA,OAAQirC,GAAsB,IAE1F1tL,KAAKwiJ,OAAOC,OAAOxgD,QAAUyrF,EAC7B1tL,KAAKm1H,YAAY/xH,QAAU+J,EAAE7M,OAC7BN,KAAKm1H,YAAYC,eAAiBjoH,EAAE7M,OACpC,eAAS,CAACN,KAAKm1H,YAAY/xH,SAAU,CAAC,YAAa,YAEvDpD,KAAK4sL,sBAAuB,EACxBz/K,EAAE7M,QAAU6M,EAAE7M,OAAO4E,UAAUmB,SAAS,kBACxCrG,KAAKm1H,YAAYw4D,YAAa,EAC9B,eAAS,CAAC3tL,KAAKm1H,YAAY/xH,SAAU,CAAC,YAAa,eAG3DkpL,EAAcpsL,UAAU0tL,OAAS,SAAUzgL,GAEvC,IAAI0gL,KAAU,gBAAa1gL,EAAE7M,OAAQ,aAAc6M,EAAE7M,OAAO4E,UAAUmB,SAAS,cACtE,eAAkB8G,EAAE7M,OAAO2zC,sBACzB9mC,EAAE7M,OAAO2zC,mBAAmB/uC,UAAUmB,SAAS,gBACrDrG,KAAK4uB,OAAOmuB,UAAU5vC,GAAOA,EAAE0F,gBAAiB,eAAQ1F,EAAE0F,cAAe,YACrE7S,KAAK4uB,OAAOxrB,QAAQ8B,UAAUmB,SAAS,iBAAmBrG,KAAK4uB,OAAOxrB,QAAQw7G,QAAQ,oBACrFivE,GAAW,eAAkB1gL,EAAE0F,gBAA2E,IAAzDlB,SAASxE,EAAE7M,OAAOoK,aAAa,iBAAkB,KAChD,IAAjDiH,SAASxE,EAAE7M,OAAOoK,aAAa,SAAU,MAAiBmjL,GAAW,eAAkB1gL,EAAE0F,iBAC5F,eAAQjF,SAASyT,cAAe,aAAe,eAAkBlU,EAAE,0BAG3EnN,KAAK49J,cACL59J,KAAK0sL,WAAY,EACjB1sL,KAAKm1H,YAAYw4D,YAAa,EAC9B3tL,KAAK8tL,6BACL9tL,KAAKygG,4BACLzgG,KAAK4sL,sBAAuB,IAKhCN,EAAcpsL,UAAUugG,0BAA4B,WAChD,IAAInuE,EAAOtyB,KAAK4uB,OAEhB,GADA0D,EAAKlvB,QAAQ+X,UAAY,EACrBmX,EAAKI,eAAiBJ,EAAKK,cAAc8sB,aAA7C,CACI,IAAIulD,EAAc1yE,EAAK0yE,YACnB+oF,EAAwB/oF,EAAYgpF,2BACpCD,EAAsBptL,OAAS,GAC/BqkG,EAAY5hG,QAAQ+X,UAAY,EAChC4yK,EAAsB,GAAG5yK,SAAW,GAGpC6pF,EAAY5hG,QAAQ+X,SAAW,OAIvC,GAAImX,EAAK2mB,SAAW3mB,EAAKwqE,gBAAzB,CACI,IAAImxF,EAAiB37J,EAAK0mB,cAAc51C,QACpC8qL,EAAwBluL,KAAK4uB,OAAOoqB,cAAcm1I,2BAClDD,EAAsBvtL,OAAS,GAAKutL,EAAsB,GAAGhiL,cAAc,0CAC3E+hL,EAAe9yK,UAAY,EAC3B+yK,EAAsB,GAAGhiL,cAAc,yCAAyCiP,SAAW,GAG3F8yK,EAAe9yK,SAAW,OAIlC,GAAImX,EAAKoE,aAAa/1B,OAAtB,CACI,IAAIi1F,EAAkBtjE,EAAK+nB,mBAAmBnuC,cAAc,8BAG5D,GAFA0pF,EAAgBz6E,SAAW,EAC3Bnb,KAAKotL,WAAU,IACV,eAAkBptL,KAAKwiJ,UAAY,eAAkBxiJ,KAAKwiJ,OAAOliJ,UAAYN,KAAKwiJ,OAAOliJ,OAAO4E,UAAUmB,SAAS,iBAAkB,CACtI,IAAIqnL,EAAuB,CAAC,EAAG,GACqD,IAAhF1tL,KAAKwiJ,OAAOC,OAAOA,OAAOirC,EAAqB,IAAIA,EAAqB,MACxEA,EAAuB,eAAc1tL,KAAKwiJ,OAAOC,OAAOA,OAAQirC,GAAsB,IAE1F1tL,KAAKwiJ,OAAOC,OAAOxgD,QAAUyrF,UAKzCpB,EAAcpsL,UAAU4tL,2BAA6B,WACjD,IAAI99D,EAAehwH,KAAK4uB,OAAOgwB,kBAC/B,GAAIoxE,EAAa74F,KAAK64F,EAAa74F,KAAKx2B,OAAS,GAAI,CACjD,IAAIm+J,EAAW9uC,EAAa74F,KAAK64F,EAAa74F,KAAKx2B,OAAS,GAAGmoD,iBAC/Dg2G,EAAS3jJ,SAAW,IAG5BmxK,EAAcpsL,UAAUy5I,QAAU,SAAUxsI,EAAGihL,GAC3C,IAAI,gBAAajhL,EAAE7M,OAAQ,qBAAuB,gBAAa6M,EAAE7M,OAAQ,mBACrE6M,EAAE7M,OAAO4E,UAAUmB,SAAS,sBADhC,CAIA,IAAIk8I,GAAa,eAAkB,eAAQp1I,EAAE7M,OAAQ,IAAM,SACvDk8C,GAAY,eAAkB,eAAQrvC,EAAE7M,OAAQ,IAAM,SAE1D,GADAiiJ,EAAYA,GAAa/lG,GAAY+lG,EAAYA,KAC5CA,GAAa,eAAkB,eAAQp1I,EAAE7M,OAAQ,IAAM,UACxD6M,EAAE7M,OAAO4E,UAAUmB,SAAS,UAC3B,eAAkB,eAAQ8G,EAAE7M,OAAQ,mBAIzC,GADAN,KAAKotL,UAAU7qC,GACVA,IAAa,eAAkB,eAAQp1I,EAAE7M,OAAQ,IAAM,SAA5D,CAIA,IAAI+tL,EAAa,CAAE5/K,QAAQ,EAAOm0I,OAAO,EAAOR,SAAU,eAAkBj1I,EAAE7M,QAASgiJ,UAAWn1I,GAElG,GADAnN,KAAK4uB,OAAOhV,OAAO,OAAyBy0K,IACxCA,EAAW5/K,SAAU,eAAQtB,EAAE7M,OAAQ,oBAG3CN,KAAKotL,UAAU7qC,GACXviJ,KAAKg6C,cAAc,CACnB,IAAIs0I,EAAYtuL,KAAKg6C,aAAa2/F,QAAQxsI,EAAGihL,GAC7C,IAAkB,IAAdE,EACA,OAEJtuL,KAAK+f,QACD/f,KAAKm1H,YAAY/xH,QAAQ8B,UAAUmB,SAAS,cAAgB8G,EAAEqB,MAAmB,UAAXrB,EAAEqB,MACxE,eAAS,CAACxO,KAAKm1H,YAAY/xH,SAAU,CAAC,YAAa,kBAhBvDpD,KAAKuuL,iBAoBbjC,EAAcpsL,UAAUsuL,uBAAyB,SAAUrhL,EAAGshL,EAAeC,GACrEvhL,EAAE7M,SAAWsN,SAAS1B,cAAcuiL,IAA4B,QAAVthL,EAAE5M,KAAiB4M,EAAEy9H,UAC3Ez9H,EAAE+F,iBACFtF,SAAS1B,cAAcwiL,GAAgB3uK,SAElC5S,EAAE7M,SAAWsN,SAAS1B,cAAcwiL,IAA6B,QAAVvhL,EAAE5M,KAAkB4M,EAAEy9H,UAClFh9H,SAASyT,gBAAkBzT,SAAS1B,cAAcwiL,KAClDvhL,EAAE+F,iBACFtF,SAAS1B,cAAcuiL,GAAe1uK,UAG9CusK,EAAcpsL,UAAUq9D,WAAa,SAAUpwD,GAC3C,GAAInN,KAAK4uB,OAAO4D,YAAa,CACzB,IAAI0jI,EAAel2J,KAAK4uB,OAAOwJ,YAAYC,SAASj1B,QAChDm6J,EAAyBv9J,KAAK4uB,OAAOwJ,YAAYC,SAASmlI,0BAA0BtH,EAAc,IAItG,GAHIl2J,KAAK4uB,OAAOwxB,YAAc,gBAAajzC,EAAE7M,OAAQ,gBAAkBN,KAAK2uL,cAAcxhL,IAAMowJ,EAAuB58J,SACnH48J,EAAuB,GAAGpiJ,SAAW,GAErCnb,KAAK4uB,OAAOwJ,YAAYC,SAASylI,qBAAsB,CACvD,GAAiB,aAAb3wJ,EAAEwT,QAAyB48I,EAAuB58J,QAAU48J,EAAuB,KAAOpwJ,EAAE7M,OAAQ,CACpGN,KAAKotL,WAAU,GACf,IAAIwB,EAAsB,CAAC5uL,KAAKwiJ,OAAOC,OAAOA,OAAO9hJ,OAAS,EAC1DX,KAAKwiJ,OAAOC,OAAOA,OAAOziJ,KAAKwiJ,OAAOC,OAAOA,OAAO9hJ,OAAS,GAAGA,OAAS,GAS7E,OARkF,IAA9EX,KAAKwiJ,OAAOC,OAAOA,OAAOmsC,EAAoB,IAAIA,EAAoB,MACtEA,EAAsB,eAAc5uL,KAAKwiJ,OAAOC,OAAOA,OAAQmsC,GAAqB,IAExF5uL,KAAKwiJ,OAAOC,OAAOxgD,QAA4C,UAAlCjiG,KAAK4uB,OAAOi3C,aAAaihC,KAClD9mG,KAAK6uL,qBAAqBD,GAAuBA,EAC7C5uL,KAAK8uL,kBAAkBF,GAAqB,GAASA,EAC7DzhL,EAAE+F,sBACFlT,KAAK+f,MAAM5S,GAGf,GAAmB,QAAbA,EAAEwT,SAAoB3gB,KAAK4uB,OAAOxrB,QAAQ8B,UAAUmB,SAAS,iBACzDrG,KAAK4uB,OAAOkJ,aAAakkE,YAAauhE,EAAuB58J,QAC5D48J,EAAuBA,EAAuB58J,OAAS,KAAOwM,EAAE7M,SAC/DN,KAAK4uB,OAAOwJ,YAAYC,SAASilI,oBAAsBnwJ,EAAE7M,OAEjE,YADAN,KAAK4uB,OAAOwJ,YAAYC,SAAS0lI,iBAAiB5wJ,GAIlD,IAAI4hL,EAAa,gBAAa/uL,KAAK4uB,OAAOxrB,QAAS,gBACnD,gBAAY,CAACpD,KAAK4uB,OAAOxrB,SAAU,CAAC,YACpC,gBAAY,CAAC2rL,GAAa,CAAC,cAC3BA,EAAW5zK,UAAY,EAG/B,GAA0D,IAAtDnb,KAAK4uB,OAAOwJ,YAAYC,SAASj1B,QAAQ+X,WAAiC,KAAdhO,EAAEqG,SAAmBrG,EAAEy9H,UAA0B,IAAdz9H,EAAEqG,SAGjG,OAFArG,EAAE+F,sBACFlT,KAAK+f,MAAM5S,GAGV,GAA0D,IAAtDnN,KAAK4uB,OAAOwJ,YAAYC,SAASj1B,QAAQ+X,UAAgC,IAAdhO,EAAEqG,QAGlE,OAFArG,EAAE+F,sBACFlT,KAAK4uB,OAAOwJ,YAAYC,SAAS2lI,gBAGrC,GAAIh+J,KAAK4uB,OAAOwJ,YAAYC,SAAS0mI,uBAAwB,CACzD,IAAIF,EAAU7+J,KAAKg6C,aAAayoG,OAAOtrH,KACnC63J,EAAahvL,KAAKg6C,aAAayoG,OAAOtzH,QAC1CnvB,KAAKg6C,aAAayoG,OAAOxgD,QAAU,CAAC48D,EAASmwB,IAYrD,GATwC,UAApChvL,KAAK4uB,OAAOoF,eAAexlB,MAC3BxO,KAAKwuL,uBAAuBrhL,EAAG,+CAAgD,wDAE3C,aAApCnN,KAAK4uB,OAAOoF,eAAexlB,MAC3BxO,KAAKwuL,uBAAuBrhL,EAAG,yBAA0B,2DAErB,SAApCnN,KAAK4uB,OAAOoF,eAAexlB,MAC3BxO,KAAKwuL,uBAAuBrhL,EAAG,0CAA2C,oDAE1EnN,KAAKivL,OAAO9hL,GAAhB,CAGA,GAAIA,EAAE7M,QAAU,gBAAa6M,EAAE7M,OAAQ,iBAAkB,CACrD,IAAI62B,EAAO,GAAGzpB,MAAMpK,KAAKtD,KAAK4uB,OAAOgwB,kBAAkBznB,MACnD2nI,EAAW3nI,EAAKA,EAAKx2B,OAAS,GAAGmoD,iBACjC37C,EAAE7M,SAAWw+J,IACb9+J,KAAKotL,WAAU,GACfptL,KAAKkvL,4BAGb,GAAiB,aAAb/hL,EAAEwT,QAAyBxT,EAAE7M,SAAW6M,EAAE7M,SAAWN,KAAK4uB,OAAOxrB,SAAW,gBAAa+J,EAAE7M,OAAQ,cAChG,gBAAa6M,EAAE7M,OAAQ,oBAAqB,CAC/C,GAAI6M,EAAE7M,SAAWN,KAAK4uB,OAAOxrB,QAIzB,YAHIpD,KAAK4uB,OAAOxrB,QAAQ8B,UAAUmB,SAAS,gBACvCrG,KAAKmvL,sBAAsBhiL,IAInC,GAAI,gBAAaA,EAAE7M,OAAQ,mBAKvB,YAJIN,KAAK4uB,OAAOxrB,QAAQ8B,UAAUmB,SAAS,iBACvC8G,EAAE+F,iBACFlT,KAAK4uB,OAAOxrB,QAAQ2c,UAI5B,GAAI,gBAAa5S,EAAE7M,OAAQ,aAAc,CACrC,GAAIN,KAAK4uB,OAAO8D,eAAiB1yB,KAAK4uB,OAAO+D,cAAc8sB,aAAc,CACrE,IAAIulD,EAAchlG,KAAK4uB,OAAOo2E,YAC1B+oF,EAAwB/oF,EAAYgpF,2BACxC7gL,EAAE+F,iBACE66K,EAAsBptL,OAAS,EAC/BotL,EAAsBA,EAAsBptL,OAAS,GAAGof,QAGxDilF,EAAY5hG,QAAQ2c,aAGnB/f,KAAK4uB,OAAOxrB,QAAQ8B,UAAUmB,SAAS,iBAC5C8G,EAAE+F,iBACFlT,KAAK4uB,OAAOxrB,QAAQ2c,SAExB,QAGR,IAAIqvK,GAAuB,EAC3B,GAAiB,QAAbjiL,EAAEwT,QAAoBxT,EAAE7M,SAAW6M,EAAE7M,SAAWN,KAAK4uB,OAAOxrB,SAAW,gBAAa+J,EAAE7M,OAAQ,cAC3F,gBAAa6M,EAAE7M,OAAQ,oBAAqB,CAC/C,GAAIN,KAAK4uB,OAAO8D,eAAiB1yB,KAAK4uB,OAAO+D,cAAc8sB,eACnDtyC,EAAE7M,SAAWN,KAAK4uB,OAAOxrB,SAAW+J,EAAE7M,OAAO4E,UAAUmB,SAAS,oBAAqB,CACrF2+F,EAAchlG,KAAK4uB,OAAOo2E,YAC1B+oF,EAAwB/oF,EAAYgpF,2BACxC,GAAID,EAAsBptL,OAAS,EAG/B,OAFAwM,EAAE+F,sBACF66K,EAAsB,GAAGhuK,QAG7B,IAAK5S,EAAE7M,OAAO4E,UAAUmB,SAAS,mBAG7B,OAFA8G,EAAE+F,sBACF8xF,EAAY5hG,QAAQ2c,QAI5B,IAAK/f,KAAK4uB,OAAOqqB,SAAWj5C,KAAK4uB,OAAOkuE,mBAAqB3vF,EAAE7M,SAAWN,KAAK4uB,OAAOxrB,SAC/E,gBAAa+J,EAAE7M,OAAQ,oBACvB6M,EAAE7M,OAAO4E,UAAUmB,SAAS,cAAe,CAC9C,IAAI4nL,EAAiBjuL,KAAK4uB,OAAOoqB,cAAc51C,QAC3C8qL,EAAwBluL,KAAK4uB,OAAOoqB,cAAcm1I,2BACtD,GAAID,EAAsBvtL,OAAS,EAG/B,OAFAwM,EAAE+F,sBACFg7K,EAAsB,GAAGhiL,cAAc,yCAAyC6T,QAGpF,IAAK5S,EAAE7M,OAAO4E,UAAUmB,SAAS,aAG7B,OAFA8G,EAAE+F,sBACF+6K,EAAeluK,SAInB5S,EAAE7M,SAAWN,KAAK4uB,OAAOxrB,SAAW,gBAAa+J,EAAE7M,OAAQ,cACxD,gBAAa6M,EAAE7M,OAAQ,sBAC1B8uL,GAAuB,GAG3BA,IACIpvL,KAAK4uB,OAAO8D,eAAiB1yB,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,SAAWX,KAAK4uB,OAAOO,QAAQxuB,OAC9FX,KAAKotL,WAAU,GAGfptL,KAAKotL,WAAU,GAEnBptL,KAAKwiJ,OAAOC,OAAOxgD,QAAU,CAAC,GAAI,IAEtCjiG,KAAKqvL,UAAYliL,EAAEwT,OACnB,IAAI0tK,EAAa,CAAE5/K,QAAQ,EAAOm0I,OAAO,EAAMR,SAAS,EAAOC,QAASl1I,GAExE,GADAnN,KAAK4uB,OAAOhV,OAAO,OAAyBy0K,IACxCA,EAAW5/K,OAAf,CAGA,IAAI6gL,EAAStvL,KAAKg6C,aAAayoG,OAAOxgD,QAClCstF,EAAiBvvL,KAAKwiJ,QAAUxiJ,KAAKwiJ,OAAOC,OAAOxgD,QACnD,CAACjiG,KAAKwiJ,OAAOC,OAAOxgD,QAAQ,GAAIjiG,KAAKwiJ,OAAOC,OAAOxgD,QAAQ,SAAM12F,EACrEvL,KAAKm1H,YAAYq6D,SAAU,EAC3B,IAAIC,EAAWzvL,KAAKg6C,aAAa01I,KAAKviL,EAAEwT,OAAQ2uK,GAChDtvL,KAAKwsL,KAAOiD,EACRA,EAASjD,OAA4C,UAAlCxsL,KAAK4uB,OAAOi3C,aAAaihC,MAC3B,QAAb35F,EAAEwT,QAAiC,aAAbxT,EAAEwT,UAC5B3gB,KAAKotL,WAAWqC,EAASE,UACzB3vL,KAAKg6C,aAAayoG,OAAOxgD,QAAUjiG,KAAKg6C,aAAa41I,eAAeN,EAAQG,EAAUzvL,KAAKwiJ,OAAQr1I,EAAEwT,QACrG3gB,KAAK6sL,YAAc,IAEvB7sL,KAAK6vL,eAAe1iL,EAAEwT,OAAQ3gB,KAAKg6C,cACnC,IAAIs0I,GAAYtuL,KAAK6K,QAAQilL,aAAsB9vL,KAAKg6C,aAAaujB,WAAWpwD,GAChF,GAAIA,EAAE7M,QAAU,gBAAa6M,EAAE7M,OAAQ,gBAAiB,CACpD,GAAiB,QAAb6M,EAAEwT,QAAoB2uK,EAAO19K,aAAe5R,KAAKwiJ,OAAOC,OAAOxgD,QAAQrwF,WAAY,CACnF,IAAIm+K,EAAsB,eAAc/vL,KAAKwiJ,OAAOC,OAAOA,OAAQziJ,KAAKwiJ,OAAOC,OAAOxgD,SAAS,GAC3F2sF,EAAsB,CAAC5uL,KAAKwiJ,OAAOC,OAAOA,OAAO9hJ,OAAS,EAC1DX,KAAKwiJ,OAAOC,OAAOA,OAAOziJ,KAAKwiJ,OAAOC,OAAOA,OAAO9hJ,OAAS,GAAGA,OAAS,GAI7E,GAHkF,IAA9EX,KAAKwiJ,OAAOC,OAAOA,OAAOmsC,EAAoB,IAAIA,EAAoB,MACtEA,EAAsB,eAAc5uL,KAAKwiJ,OAAOC,OAAOA,OAAQmsC,GAAqB,IAEpF5uL,KAAKwiJ,OAAOC,OAAOxgD,QAAQrwF,aAAeg9K,EAAoBh9K,YAAc5R,KAAK6K,QAAQ43I,OAAOA,OAAO9hJ,OAAQ,CAC/G2tL,GAAY,EACZtuL,KAAKotL,WAAU,GACf,IAAI4C,EAAwB,CAAC,EAAG,GACsD,IAAlFhwL,KAAKwiJ,OAAOC,OAAOA,OAAOutC,EAAsB,IAAIA,EAAsB,MAC1EA,EAAwB,eAAchwL,KAAKwiJ,OAAOC,OAAOA,OAAQ,CAAC,EAAG,IAAI,IAE7EziJ,KAAKwiJ,OAAOC,OAAOxgD,QAA4C,UAAlCjiG,KAAK4uB,OAAOi3C,aAAaihC,KAClD9mG,KAAK6uL,qBAAqBmB,GAAyBA,EAC/ChwL,KAAK8uL,kBAAkBkB,GAAuB,GAAQA,OAEzDhwL,KAAKwiJ,OAAOC,OAAOxgD,QAAQrwF,aAAem+K,EAAoBn+K,aACnE5R,KAAKwiJ,OAAOC,OAAOxgD,QAAU8tF,GAGrC,GAAiB,aAAb5iL,EAAEwT,QAAyB2uK,EAAO19K,aAAe5R,KAAKwiJ,OAAOC,OAAOxgD,QAAQrwF,WAAY,CACxF,IAAIq+K,EAAoB,eAAcjwL,KAAKwiJ,OAAOC,OAAOA,OAAQziJ,KAAKwiJ,OAAOC,OAAOxgD,SAAS,GAC7F,GAAIguF,EAAkBr+K,aAAe5R,KAAKwiJ,OAAOC,OAAOxgD,QAAQrwF,WAE5D,YADA5R,KAAKkwL,mBAAmB/iL,GAGxBnN,KAAKwiJ,OAAOC,OAAOxgD,QAAQrwF,aAAeq+K,EAAkBr+K,YAAe08K,IAC3EA,GAAY,EACZtuL,KAAKwiJ,OAAOC,OAAOxgD,QAAUguF,IAIzC,GAAI9iL,EAAE7M,QAAU,gBAAa6M,EAAE7M,OAAQ,mBACG,UAAlCN,KAAK4uB,OAAOi3C,aAAaihC,MAAkC,QAAb35F,EAAEwT,QAAiC,aAAbxT,EAAEwT,SACtE3gB,KAAKwiJ,OAAOC,OAAOxgD,QAAUjiG,KAAK8uL,kBAAkBS,EAA6B,QAAbpiL,EAAEwT,QACrD,QAAbxT,EAAEwT,QAAoB4uK,EAAe39K,aAAe5R,KAAKwiJ,OAAOC,OAAOxgD,QAAQrwF,aAC/E5R,KAAK4uB,OAAO+4E,WAAWA,WAAW45C,aAAc,IAGvC,aAAbp0I,EAAEwT,QAAyB2uK,EAAO19K,aAAe5R,KAAKwiJ,OAAOC,OAAOxgD,QAAQrwF,YAAY,CACxF,GAAI5R,KAAK4uB,OAAO8D,eAAiB1yB,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,SAAWX,KAAK4uB,OAAOO,QAAQxuB,OAE9F,YADAX,KAAKkwL,mBAAmB/iL,GAGxB6iL,EAAwB,CAAC,EAAG,GACsD,IAAlFhwL,KAAKwiJ,OAAOC,OAAOA,OAAOutC,EAAsB,IAAIA,EAAsB,MAC1EA,EAAwB,eAAchwL,KAAKwiJ,OAAOC,OAAOA,OAAQ,CAAC,EAAG,IAAI,IAExE6rC,GAAc0B,EAAsBp+K,aAAe5R,KAAKwiJ,OAAOC,OAAOxgD,QAAQrwF,aACzC,UAAlC5R,KAAK4uB,OAAOi3C,aAAaihC,MACtByoF,EAAe39K,aAAe5R,KAAKwiJ,OAAOC,OAAOxgD,QAAQrwF,cAChE08K,GAAY,EACZtuL,KAAKotL,WAAU,GACfptL,KAAKkvL,4BAIjB,IAAkB,IAAdZ,EAsBJnhL,EAAE+F,iBACFlT,KAAK+f,MAAM5S,OAvBX,CAKI,GAJAnN,KAAK4tJ,iBACY,aAAbzgJ,EAAEwT,QAAyB2uK,EAAO19K,aAAe,CAAC,EAAG,GAAGA,aACxD5R,KAAK4uB,OAAOxrB,QAAQ+X,UAAY,GAEhCnb,KAAK4uB,OAAO4D,cAAgBxyB,KAAK4uB,OAAOwJ,YAAYC,SAASylI,sBAAwB99J,KAAK2uL,cAAcxhL,IACrGmiL,EAAO19K,aAAe,CAAC,EAAG,GAAGA,WAAY,CAE5C,GADAzE,EAAE+F,iBACgB,KAAd/F,EAAEqG,QAEF,YADAxT,KAAK4uB,OAAOwJ,YAAYC,SAAS4lI,yBAGhC,GAAkB,IAAd9wJ,EAAEqG,QAEP,YADAxT,KAAK4uB,OAAOwJ,YAAYC,SAAS2lI,gBAIrCh+J,KAAK4uB,OAAOxrB,QAAQ8B,UAAUmB,SAAS,gBACvCrG,KAAKmvL,sBAAsBhiL,OAOvCm/K,EAAcpsL,UAAU2uL,qBAAuB,SAAU/mF,GACrD,IAAInmD,EAAO3hD,KAAKwiJ,OAAO7wD,WAAWx6D,KAAK2wE,EAAU,IAAIrmD,MAAMqmD,EAAU,IACjExoB,EAAK,eAAQ39B,EAAM,MACnBwuI,EAAex+K,SAASgwC,EAAKj3C,aAAa,iBAAkB,IAC5D0lL,EAAUpwL,KAAK4uB,OAAO8H,aAAa/kB,SAASw+K,EAAav+K,WAAY,KACzE,QAA8D,IAA1D5R,KAAKwiJ,OAAOC,OAAOA,OAAO36C,EAAU,IAAIA,EAAU,KAC7CxoB,EAAGp6E,UAAUmB,SAAS,YAAai5E,EAAGp6E,UAAUmB,SAAS,kBAAqB+pL,EAAQz5J,eAAiBy5J,EAAQz6I,gBAK5H22I,EAAcpsL,UAAU4uL,kBAAoB,SAAUuB,EAAkB7iJ,EAAM8iJ,GAC1E,IAAIxoF,EAAYuoF,EACZE,EAAgBF,EAChBG,GAAkB,EACtB,OAAQA,EAAiB,CACrB,IAAIC,EAAoBF,EACxBA,EAAgB,eAAcvwL,KAAKwiJ,OAAOC,OAAOA,OAAQ8tC,EAAe/iJ,GACnEijJ,EAAkB7+K,aAAe2+K,EAAc3+K,YAC5C0+K,GAAYG,EAAkB,KAAOF,EAAc,GACvDC,GAAkB,EAGlBxwL,KAAK6uL,qBAAqB0B,KAC1BzoF,EAAYyoF,EACZC,GAAkB,GAG1B,OAAO1oF,GAEXwkF,EAAcpsL,UAAUgvL,yBAA2B,WAC/C,IAAIwB,EAAuB,CAAC1wL,KAAKwiJ,OAAOC,OAAOA,OAAO9hJ,OAAS,EAC3DX,KAAKwiJ,OAAOC,OAAOA,OAAOziJ,KAAKwiJ,OAAOC,OAAOA,OAAO9hJ,OAAS,GAAGA,OAAS,GACO,IAAhFX,KAAKwiJ,OAAOC,OAAOA,OAAOiuC,EAAqB,IAAIA,EAAqB,MACxEA,EAAuB,eAAc1wL,KAAKwiJ,OAAOC,OAAOA,OAAQiuC,GAAsB,IAE1F1wL,KAAKwiJ,OAAOC,OAAOxgD,QAAUyuF,GAEjCpE,EAAcpsL,UAAUivL,sBAAwB,SAAUhiL,GACtD,IAAIwjL,EAAc,gBAAa3wL,KAAK4uB,OAAOxrB,QAAS,WAChDwtL,EAAa,gBAAaD,EAAa,UAAUhoI,cAAc,GAC/DomI,EAAa,gBAAa/uL,KAAK4uB,OAAOxrB,QAAS,gBAC/C+wB,EAAM,gBAAan0B,KAAK4uB,OAAOxrB,QAAS,eAAesH,aAAa,YACpEmmL,EAAa,GAAGnjL,MAAMpK,KAAKstL,EAAWhyI,kBAAkBznB,MACxD25J,EAAiBD,EAAWhqL,KAAI,SAAU0hG,GAAK,OAAOA,EAAE79F,aAAa,eAAgB1G,QAAQmwB,GACjG,KAAiB,QAAbhnB,EAAEwT,QAAoBmwK,GAAkBD,EAAWlwL,OAAS,GAAhE,CAOA,IAAIowL,EAEJ,GANA,gBAAY,CAAC/wL,KAAK4uB,OAAOxrB,SAAU,CAAC,YACpC,gBAAY,CAAC2rL,GAAa,CAAC,cAC3BA,EAAW5zK,UAAY,EACvBhO,EAAE+F,iBAEF09K,EAAWpwF,YAAYo9D,cACN,aAAbzwJ,EAAEwT,QAGF,IAFA,IAAI8nJ,EAAcooB,EAAWC,EAAiB,GAC1CE,EAAWvoB,EAAYhnH,MAClBzgD,EAAIgwL,EAASrwL,OAAS,EAAGK,GAAK,EAAGA,IAEtC,GADA+vL,EAAgBC,EAASr/K,SAAS3Q,EAAE4Q,WAAY,MAC3Cm/K,EAAc7rL,UAAUmB,SAAS,UAAW,CAC7CuqL,EAAWpwF,YAAYgiD,OAAOC,OAAOxgD,QAAU,CAAC6uF,EAAiB,EAAG9vL,GACpE,YAKR+vL,EAAgBF,EAAWC,EAAiB,GAAGrvI,MAAM,GACrDmvI,EAAWpwF,YAAYgiD,OAAOC,OAAOxgD,QAAU,CAAC6uF,EAAiB,EAAG,GAExEF,EAAWpwF,YAAY20B,YAAY/xH,QAAU2tL,EAC7CH,EAAWpwF,YAAY20B,YAAYC,eAAiB27D,EACpD,eAAS,CAACA,GAAgB,CAAC,YAAa,YACxCA,EAAc51K,SAAW,EACzB41K,EAAchxK,UAElBusK,EAAcpsL,UAAUgwL,mBAAqB,SAAU/iL,GAEnD,GADAnN,KAAK49J,cACD59J,KAAK4uB,OAAOqqB,SAAWj5C,KAAK4uB,OAAOkuE,gBAAiB,CACpD,IAAImxF,EAAiBjuL,KAAK4uB,OAAOoqB,cAAc51C,QAC3C8qL,EAAwBluL,KAAK4uB,OAAOoqB,cAAcm1I,2BAQtD,OAPAhhL,EAAE+F,sBACEg7K,EAAsBvtL,OAAS,EAC/ButL,EAAsBA,EAAsBvtL,OAAS,GAAGuL,cAAc,yCAAyC6T,QAG/GkuK,EAAeluK,SAIvB,GAAI/f,KAAK4uB,OAAO8D,eAAiB1yB,KAAK4uB,OAAO+D,cAAc8sB,aAAc,CACrE,IAAIulD,EAAchlG,KAAK4uB,OAAOo2E,YAC1B+oF,EAAwB/oF,EAAYgpF,2BAQxC,OAPA7gL,EAAE+F,sBACE66K,EAAsBptL,OAAS,EAC/BotL,EAAsBA,EAAsBptL,OAAS,GAAGof,QAGxDilF,EAAY5hG,QAAQ2c,SAIxB/f,KAAK4uB,OAAOxrB,QAAQ8B,UAAUmB,SAAS,iBACvC8G,EAAE+F,iBACFlT,KAAK4uB,OAAOxrB,QAAQ2c,UAG5BusK,EAAcpsL,UAAUyuL,cAAgB,SAAUxhL,GAC9C,MAAsC,UAAlCnN,KAAK4uB,OAAOi3C,aAAaihC,OAAoB9mG,KAAK4uB,OAAOi3C,aAAa0oC,aAA6B,KAAdphG,EAAEqG,SAK/F84K,EAAcpsL,UAAU+uL,OAAS,SAAU9hL,GACvC,IAAI7M,EAAS6M,EAAE7M,OACf,IAAKA,EACD,OAAO,EAEX,GAAIN,KAAKm1H,YAAYw4D,WAEjB,OADA3tL,KAAK4tJ,kBACE,EAEX,GAAI,CAAC,SAAU,WAAY,gBAAgB5pJ,QAAQmJ,EAAEwT,SAAW,EAE5D,OADA3gB,KAAK4tJ,kBACE,EAEX,GAAI5tJ,KAAK4uB,OAAO8D,cAAe,CAC3B,IAAIq7J,EAAwB/tL,KAAK4uB,OAAOo2E,YAAYgpF,2BACpD,GAAI,gBAAa7gL,EAAE7M,OAAQ,wBACjB6M,EAAE7M,SAAWytL,EAAsB,IAAmB,aAAb5gL,EAAEwT,QACzCxT,EAAE7M,SAAWytL,EAAsBA,EAAsBptL,OAAS,IAAmB,QAAbwM,EAAEwT,QAClF,OAAO,EAGf,GAAI3gB,KAAK4uB,OAAOqqB,SAAWj5C,KAAK4uB,OAAOkuE,gBAAiB,CACpD,IAAImxF,EAAiBjuL,KAAK4uB,OAAOoqB,cAAc51C,QAC3C8qL,EAAwBD,EACvBvrK,iBAAiB,kDACtB,GAAI,gBAAavV,EAAE7M,OAAQ,qBAClB4tL,EAAsBvtL,OAAS,IAAO,gBAAawM,EAAE7M,OAAQ,oBAAsB4tL,EAAsB,IAAmB,aAAb/gL,EAAEwT,QAC9G,gBAAaxT,EAAE7M,OAAQ,oBAAsB4tL,EAAsBA,EAAsBvtL,OAAS,IAAmB,QAAbwM,EAAEwT,SAClH,OAAO,EAGf,IAAIswK,EAAK,eAAQ3wL,EAAQ,QAAU,eAAQA,EAAQ,MAAM6a,SACzD,GAAIhO,EAAE7M,OAAO4E,UAAUmB,SAAS,yBAAyC,KAAd8G,EAAEqG,SAAgC,KAAdrG,EAAEqG,SAAiB,CAC9F,IAAI09K,EAAc,eAAQ/jL,EAAE7M,OAAQ,oBACpC4wL,EAAYhlL,cAAc,SAAS6T,QAEnCkxK,GAA8D,OAAxD,eAAQrjL,SAASyT,cAAe,qBACtCrhB,KAAK49J,cAET,IAAIuzB,EAAqE,OAAxD,eAAQvjL,SAASyT,cAAe,oBACjD,GAAIrhB,KAAK4uB,OAAOy+J,mBAAqB8D,EAAY,CAC7C,IAAI1uC,EAASziJ,KAAKwiJ,OAAOC,OACrBxgD,EAAUwgD,EAAOxgD,QACrBkvF,EAAa1uC,EAAOA,OAAOxgD,EAAQ,IAAIqiC,YAAY,KAAOriC,EAAQ,GAEtE,MAAqB,WAAb90F,EAAEwT,QACgC,UAAlC3gB,KAAK4uB,OAAOi3C,aAAaihC,OAAqB9mG,KAAK4uB,OAAOmuB,QAAU,CAAC,SAAU,MAAM/4C,QAAQmJ,EAAEwT,SAAW,IACzGwwK,GAAcnxL,KAAK4uB,OAAOy+J,mBAAuB8D,GAA2B,QAAbhkL,EAAEwT,QAAiC,aAAbxT,EAAEwT,QACP,OAAjF,eAAQ/S,SAASyT,cAAe,IAAMrhB,KAAK4uB,OAAOxrB,QAAQkI,GAAK,eACxD,CAAC,QAAS,YAAa,aACtB,YAAa,aAAc,aAAatH,QAAQmJ,EAAEwT,SAAW,GACrB,OAAhD,eAAQrgB,EAAQ,IAAM,SAAiF,OAA/C,eAAQA,EAAQ,IAAM,WACzE6M,EAAE7M,SAAWN,KAAK4uB,OAAOxrB,SAAW,gBAAa+J,EAAE7M,OAAQ,cACzD,gBAAa6M,EAAE7M,OAAQ,qBACjB,UAAb6M,EAAEwT,SAAwBrgB,EAAO4E,UAAUmB,SAAS,SAAuE,OAA/C,eAAQ/F,EAAQ,IAAM,SACpD,OAA3C,eAAQA,EAAQ,wBAA6E,OAAvC,eAAQA,EAAQ,oBAErFgsL,EAAcpsL,UAAUkxL,oBAAsB,SAAUjkL,GACpD,IAAI9J,EAAQrD,KACZ,GAAIA,KAAK4uB,OAAO6D,sBAAwBzyB,KAAK4uB,OAAOiJ,wBAAyB,CACzE,IAAIhM,EAAO,CAAEqyH,YAAa,GAAI//F,OAAO,EAAOoiE,UAAU,GACtDvgH,KAAK4uB,OAAOhV,OAAO,QAAsBiS,GACzC,IAAIwlK,EAAarxL,KAAKouJ,QAAQp0H,MAAK,SAAUvhB,GAAS,OAAOA,IAAUpV,EAAMgsL,aACzEtvG,IAAa//E,KAAK4uB,OAAO4tE,eACzBx8F,KAAK4uB,OAAO4tE,cAAckR,kBAAoB,EAC9C7hF,EAAKsyB,OAAS1+C,OAAO2V,KAAKyW,EAAKqyH,aAAav9I,QAAU0wL,GAAcxlK,EAAK00F,UAAYxgC,GACrF//E,KAAK4uB,OAAOhV,OAAO,QAAyB,CAAE2mG,UAAU,IACxD10F,EAAK00F,UAAW,EAChBvgH,KAAK4uB,OAAO4tE,cAAckR,kBAAoB,EAC1C2jF,IACArxL,KAAKqvL,UAAYrvL,KAAKsxL,MACtBtxL,KAAK4uB,OAAOhV,OAAO,sBAAuBzM,IAG9CnN,KAAKm1H,YAAYC,eAAer1G,MAAM,CAAE85H,eAAe,KAGnD75I,KAAKgtL,iBAAmBhtL,KAAKg1K,iBAE7Bh1K,KAAKm1H,YAAYC,eAAer1G,MAAM,CAAE85H,eAAe,IAGvD75I,KAAKm1H,YAAYC,eAAer1G,QAI5C/f,KAAKgtL,gBAAkBhtL,KAAKg1K,kBAAmB,GAEnDsX,EAAcpsL,UAAUy9J,kBAAoB,WACxC,OAAO39J,KAAKm1H,YAAYC,gBAE5Bk3D,EAAcpsL,UAAU85C,WAAa,WACjC,OAAOh6C,KAAKwiJ,QAAUxiJ,KAAK6K,SAE/ByhL,EAAcpsL,UAAUktL,UAAY,SAAUviL,GAC1C7K,KAAKwiJ,OAAS33I,EAAU7K,KAAK6K,QAAU7K,KAAK67C,QAEhDywI,EAAcpsL,UAAUqxL,kBAAoB,SAAUnuL,EAAS+J,GAC3D,IAAI9J,EAAQrD,KACZA,KAAKm1H,YAAYC,eAAiBhyH,EAClCgK,YAAW,WACF,eAAkB/J,EAAM8xH,YAAYC,kBACjC/xH,EAAMurB,OAAO6D,sBAAwBpvB,EAAMurB,OAAOiJ,wBAClDx0B,EAAM+tL,oBAAoBjkL,IAErB,eAAkB9J,EAAMurB,OAAOxrB,QAAQ8I,cAAc,eAC1D,gBAAa0B,SAASyT,cAAe,uBAAyBhe,EAAMurB,OAAOxrB,QAAQ8I,cAAc,wBACjG7I,EAAM8xH,YAAYC,eAAer1G,WAG1C,IAEPusK,EAAcpsL,UAAU6f,MAAQ,SAAU5S,GACtCnN,KAAK4uB,OAAOhV,OAAO,QAAwBzM,GAC3CnN,KAAK49J,cACL59J,KAAKy9J,SAASz9J,KAAKg6C,aAAaw3I,eAAgBrkL,IAGpDm/K,EAAcpsL,UAAU09J,YAAc,SAAUzwJ,GAC5C,GAAKnN,KAAKm1H,YAAY/xH,QAAtB,CAGA,GAAIpD,KAAK4uB,OAAOzmB,UAAYnI,KAAK4uB,OAAOmuB,QAAU/8C,KAAKm1H,YAAY/xH,QAAQ8B,UAAUmB,SAAS,eACtFrG,KAAKm1H,YAAY/xH,QAAQue,iBAAmB3hB,KAAK4uB,OAAO8D,gBAAiB1yB,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,SAC/GX,KAAK4uB,OAAO44E,cAAcxnG,KAAK6sL,YAAY73F,UAAW,CACtD,IAAIy8F,EAAWzxL,KAAK4uB,OAAO64E,iBAAiBznG,KAAK6sL,YAAY73F,SAAUh1F,KAAK6sL,YAAY/kF,WACxF9nG,KAAKm1H,YAAY/xH,QAAUquL,GAAsBzxL,KAAKm1H,YAAY/xH,QAEtE,gBAAY,CAACpD,KAAKm1H,YAAY/xH,QAASpD,KAAKm1H,YAAYC,gBAAiB,CAAC,YAAa,YACvFp1H,KAAKm1H,YAAY/xH,QAAQ+X,UAAY,IAKzCmxK,EAAcpsL,UAAUo1H,WAAa,WACjC,IAAI55E,EAAO17C,KAAKg6C,aAAaw3I,eACzB91I,EAAKt4C,UACL,eAAS,CAACs4C,EAAKt4C,SAAU,CAAC,cAC1B,eAAS,CAACs4C,EAAK05E,gBAAiB,CAAC,cAMzCk3D,EAAcpsL,UAAUwxL,YAAc,WAClC1xL,KAAKotL,WAAU,GACfptL,KAAK2xL,cAKTrF,EAAcpsL,UAAUm1H,aAAe,WACnCr1H,KAAKotL,WAAU,GACfptL,KAAK2xL,cAETrF,EAAcpsL,UAAUyxL,WAAa,WACjC,IAAI1vF,EAAUjiG,KAAKg6C,aAAayoG,OAAO8qC,IAAI,GAAI,EAAG,CAAC,EAAG,GAAI,KAAMvtL,KAAKg6C,aAAawzI,aAClFxtL,KAAKg6C,aAAayoG,OAAOh6H,OAAOw5E,EAAQ,GAAIA,EAAQ,IACpDjiG,KAAK+f,SAETusK,EAAcpsL,UAAUu9J,SAAW,SAAU/hH,EAAMvuC,GAM/C,GALAnN,KAAKm1H,YAAcz5E,EACnB17C,KAAKm1H,YAAYq6D,QAAU9zI,EAAK8zI,WAAa,eAAkBriL,IAAMnN,KAAKgtL,iBACtEhtL,KAAKg1K,mBACLh1K,KAAKm1H,YAAYq6D,SAAU,GAE1B9zI,EAAKt4C,QAAV,CAGA,IAAIqU,EAAYikC,EAAK05E,eAAelwH,UAAUmB,SAAS,WACvD,IAAIoR,EAAJ,CAGIzX,KAAKm1H,YAAYq6D,SACjB,eAAS,CAAC9zI,EAAKt4C,SAAU,CAAC,cAE9B,eAAS,CAACs4C,EAAK05E,gBAAiB,CAAC,YACjC15E,EAAKt4C,QAAQ+X,SAAW,EACnB1D,GACDzX,KAAKuxL,kBAAkB71I,EAAK05E,eAAgBjoH,GAEhDnN,KAAK4uB,OAAOhV,OAAO,OAAmB,CAClCxW,QAASs4C,EAAK05E,eACdxmG,OAAQ8sB,EAAKt4C,QACbiwF,QAASrzF,KAAKg6C,aAAayoG,OAAOxgD,QAClC2gD,OAAQ,eAAkBz1I,GAC1Bi1I,QAAS,eAAkBj1I,GAC3Bk1I,QAASl1I,EACTyrK,OAAQ54K,KAAKwsL,KAAKA,KAClBh9K,UAAWxP,KAAKg6C,aAAa43I,QAAQzkL,GACrCqiL,SAAU,eAAkBriL,GAC5BsiL,SAAUzvL,KAAKwsL,OAEnB,IAAI3oL,EAAK7D,KAAKg6C,aAAayoG,OAAOxgD,QAASjN,EAAWnxF,EAAG,GAAIikG,EAAYjkG,EAAG,GAC5E7D,KAAK6sL,YAAc,CAAE73F,SAAUA,EAAU8S,UAAWA,GACpD9nG,KAAK6xL,iBAAmB7xL,KAAK4uB,OAAO84E,iBAAiBI,GAAW3zE,IAChEn0B,KAAK2sL,cAAe,KAExBL,EAAcpsL,UAAU6sL,cAAgB,SAAUliL,GAC9C,IAAIxH,EAAQrD,KACZ,OAAO,SAAUmN,GACTtC,IAAYxH,EAAMwH,UAClBxH,EAAMwH,QAAU,IAAIinL,EAAazuL,EAAMurB,SAEtC/jB,GAAYxH,EAAMw4C,SACnBx4C,EAAMw4C,OAAS,IAAIk2I,EAAY1uL,EAAMurB,SAEzC,IAAIojK,EAASnnL,EAAUxH,EAAMwH,QAAUxH,EAAMw4C,OACzCo2I,EAAY5uL,EAAMurB,OAAOwrB,WACzB83I,EAAW,EAKf,GAJID,GAAgD,UAAnC5uL,EAAMurB,OAAOi3C,aAAaihC,OACvCorF,EAAW7uL,EAAMurB,OAAOyrB,mBAAmB33B,iBAAiB,kBAAkB/hB,OAC1E0C,EAAMurB,OAAOyrB,mBAAmB33B,iBAAiB,gBAAgB/hB,QAErE0C,EAAMurB,OAAO+D,cAAcxD,QAAQxuB,QAAUsxL,GAAapnL,EAAS,CACnEonL,EAAY,EACZ,IAAK,IAAIjxL,EAAI,EAAGA,EAAImM,EAAEgqB,KAAKx2B,OAAQK,IAE/B,GADAixL,IACI9kL,EAAEgqB,KAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAKnF,MAAQ,IAAMpJ,EAAMurB,OAAOwrB,WAC9D,MAIZ,IAAIjjB,EAAOtsB,EAAUsC,EAAEgqB,KAAKzpB,MAAMukL,EAAYC,GAAY/kL,EAAEgqB,KACxDk3F,EAAYxjH,EAAUsC,EAAEgqB,KAAKzpB,MAAM,EAAGukL,EAAYC,GAAY/kL,EAAEgqB,KAChE9zB,EAAMurB,OAAO23F,0BAA4B17G,IACzCssB,EAAOA,EAAKlD,QAAO,SAAUjuB,GAAK,OAAqB,IAAdA,EAAE4wB,YAE/C,IAAI8kJ,GAAiB,eAAkBr4K,EAAMurB,OAAOswD,aACpD,GAAI+yG,IAAkD,UAAnC5uL,EAAMurB,OAAOi3C,aAAaihC,MAAoBj8F,IAAuB,gBAAXsC,EAAE6C,MAAqC,aAAX7C,EAAE6C,MAC5F,gBAAX7C,EAAE6C,MAA2B7C,EAAE4Y,MAAgC,cAAvB5Y,EAAE4Y,KAAKgI,cAC9C5gB,EAAE4Y,OAAgC,WAAvB5Y,EAAE4Y,KAAKgI,aAAmD,SAAvB5gB,EAAE4Y,KAAKgI,cAA2B,CACjF,IAAIokK,EAAW9uL,EAAMw4C,OAAO4mG,OAAOA,OAC/B2vC,EAAS/uL,EAAMurB,OAAOmsF,aAAa5jF,KAAKx2B,OAC5CwxL,EAASzlL,OAAO0lL,EAAQD,EAASxxL,OAASyxL,GAE9C,IAAI3vC,EAASuvC,EAAOvvC,OAAO6qC,SAASj/D,EAAW2jE,EAAOrwJ,SAAU+5I,GAoBhE,GAnBAsW,EAAOvvC,OAAO6qC,SAASn2J,EAAM66J,EAAOrwJ,SAAU+5I,KACxCr4K,EAAMurB,OAAOsrB,iBAAmB/sC,EAAE4Y,MAAgC,YAAvB5Y,EAAE4Y,KAAKgI,aAC1B,cAAvB5gB,EAAE4Y,KAAKgI,aAAsD,WAAvB5gB,EAAE4Y,KAAKgI,aAC/CkkK,GAAgD,UAAnC5uL,EAAMurB,OAAOi3C,aAAaihC,MAAoBj8F,IAAuB,gBAAXsC,EAAE6C,MAAqC,aAAX7C,EAAE6C,MACvF,gBAAX7C,EAAE6C,MAAiD,cAAvB7C,EAAE4Y,KAAKgI,aACrB,aAAX5gB,EAAE6C,MAAkC,gBAAX7C,EAAE6C,QAClCgiL,EAAO1xI,aAAa+tE,EAAW,CAC3Bo0B,OAAQA,EAAQ4vC,gBAAiBhvL,EAAMw4C,UAG1C,OAAQlsC,UAAYxC,GAAKA,EAAE4Y,OACvB1iB,EAAMspL,cAAuC,WAAvBx/K,EAAE4Y,KAAKgI,aAA6B1qB,EAAMurB,OAAOwJ,YAAYC,SAASylI,uBAC7Fz6J,EAAMqpL,WAAY,EAClBrpL,EAAMurB,OAAOxrB,QAAQ2c,SAEE,aAAvB5S,EAAE4Y,KAAKgI,cACP1qB,EAAMqpL,WAAY,IAGtBv/K,GAAKA,EAAE4Y,MAA+B,kBAAvB5Y,EAAE4Y,KAAKgI,YACtB,GAAI1qB,EAAM8xH,YAAYhhG,IAAK,CACvB,IAAIspH,EACA60C,EAAOnlL,EAAEgqB,KAAK6C,MAAK,SAAU3C,EAAKr2B,GAElC,OADAy8I,EAAUz8I,EACHq2B,EAAIlD,MAAQ9wB,EAAM8xH,YAAYhhG,OAEzC,GAAIm+J,EAAM,CACNjvL,EAAMwH,QAAQ43I,OAAOxgD,QAAQ,GAAKw7C,EAClCp6I,EAAMwH,QAAQ43I,OAAOxgD,QAAQ,GAAK5+F,EAAMurB,OAAOimE,oBAAoBxxF,EAAMwuL,mBAAqB,EAC9F,IAAIn4C,EAAer2I,EAAM22C,aAAaw3I,eAAep8D,eACrD,GAAIskB,EAAc,CACd,IAAI64C,EAAe74C,EAAatyI,wBAC5BorL,EAAenvL,EAAMurB,OAAOxrB,QAAQgE,wBACpCmrL,EAAaxtL,KAAO,GAAKwtL,EAAavtL,MAAQ,GAC9CutL,EAAa3/H,OAASzpD,KAAKsT,IAAI+1K,EAAa5/H,MAAOrsD,OAAO07J,YACtDr0J,SAASilD,gBAAgBtpD,cAC7BgpL,EAAahzI,QAAUp2C,KAAKsT,IAAI+1K,EAAajzI,OAAQh5C,OAAOisD,aACxD5kD,SAASilD,gBAAgBvpD,gBAC7BjG,EAAM2pL,iBAAkB,EACxB3pL,EAAM0c,gBAKjB,GAAI5S,EAAE4Y,KAAK2zH,cAAgBvsI,EAAE4Y,KAAK2zH,aAAax0I,UAAUmB,SAAS,gBAAiB,CAChFqzI,EAAer2I,EAAMurB,OAAOxrB,QAAQ8I,cAAc,IAAMiB,EAAE4Y,KAAK2zH,aAAapuI,IAC5EouI,GACAA,EAAa35H,QAIrB5S,GAAKA,EAAE4Y,MAA+B,mBAAvB5Y,EAAE4Y,KAAKgI,cACtB1qB,EAAM2xK,kBAAmB,KAIrCsX,EAAcpsL,UAAU24C,iBAAmB,WACvC,IAAIx1C,EAAQrD,KACRA,KAAK4uB,OAAOE,cAGhB,OAAahjB,IAAI9L,KAAK4uB,OAAOxrB,QAAS,YAAapD,KAAKktL,WAAYltL,MACpE,OAAa8L,IAAI9L,KAAK4uB,OAAOxrB,QAAS,aAAcpD,KAAKktL,WAAYltL,MACrE,OAAa8L,IAAI9L,KAAK4uB,OAAOxrB,QAAS,QAASpD,KAAKmtL,QAASntL,MAC7DA,KAAK4uB,OAAOxrB,QAAQy1C,iBAAiB,QAAS74C,KAAKyyL,eAAiB,SAAUtlL,GAAK,OAAO9J,EAAMoqL,aAAatgL,KAAO,GACpH,OAAarB,IAAI9L,KAAK4uB,OAAOxrB,QAAS,WAAYpD,KAAK4tL,OAAQ5tL,MAC/DA,KAAKmkG,YAAc,CAAC,CAAEz1F,MAAO,QAAkBiqF,QAAS34F,KAAKu9D,YACzD,CAAE7uD,MAAO,OAAaiqF,QAAS34F,KAAK25I,SACpC,CAAEjrI,MAAO,QAAoBiqF,QAAS34F,KAAK8sL,WAC3C,CAAEp+K,MAAO,QAAsBiqF,QAAS34F,KAAK8sL,WAC7C,CAAEp+K,MAAO,QAAgCiqF,QAAS34F,KAAK8sL,WACvD,CAAEp+K,MAAO,QAAuBiqF,QAAS34F,KAAK+sL,iBAC9C,CAAEr+K,MAAO,QAAiBiqF,QAAS34F,KAAK+hJ,cACxC,CAAErzI,MAAO,QAAoBiqF,QAAS34F,KAAK+hJ,cAC3C,CAAErzI,MAAO,aAAciqF,QAAS34F,KAAK4tJ,gBACrC,CAAEl/I,MAAO,YAAaiqF,QAAS34F,KAAK4tJ,gBACpC,CAAEl/I,MAAO,mBAAoBiqF,QAAS34F,KAAK+hJ,cAC3C,CAAErzI,MAAO,qBAAsBiqF,QAAS34F,KAAK0yL,aAC7C,CAAEhkL,MAAO,oBAAqBiqF,QAAS34F,KAAK2yL,wBAC5C,CAAEjkL,MAAO,sBAAuBiqF,QAAS34F,KAAK2yL,wBAC9C,CAAEjkL,MAAO,OAAgBiqF,QAAS34F,KAAK8sL,WACvC,CAAEp+K,MAAO,OAAmBiqF,QAAS34F,KAAK8sL,WAC1C,CAAEp+K,MAAO,OAAmBiqF,QAAS34F,KAAK8sL,WAC1C,CAAEp+K,MAAO,QAAuBiqF,QAAS34F,KAAK8sL,WAC9C,CAAEp+K,MAAO,QAAeiqF,QAAS34F,KAAK8sL,WACtC,CAAEp+K,MAAO,OAAmBiqF,QAAS34F,KAAK4yL,oBAC9C,eAAuB5yL,KAAK4uB,OAAQ5uB,KAAKmkG,aAAa,EAAMnkG,QAEhEssL,EAAcpsL,UAAUwyL,YAAc,WACM,cAApC1yL,KAAK4uB,OAAOoF,eAAexlB,MAC3BxO,KAAK+hJ,gBAGbuqC,EAAcpsL,UAAU07C,oBAAsB,WACtC57C,KAAK4uB,OAAOE,cAGhB,OAAa3pB,OAAOnF,KAAK4uB,OAAOxrB,QAAS,YAAapD,KAAKktL,YAC3D,OAAa/nL,OAAOnF,KAAK4uB,OAAOxrB,QAAS,aAAcpD,KAAKktL,YAC5D,OAAa/nL,OAAOnF,KAAK4uB,OAAOxrB,QAAS,QAASpD,KAAKmtL,SACvD,OAAahoL,OAAOnF,KAAK4uB,OAAOxrB,QAAS,WAAYpD,KAAK4tL,QAC1D5tL,KAAK4uB,OAAOxrB,QAAQw4C,oBAAoB,QAAS57C,KAAKyyL,gBAAgB,GACtE,eAAuBzyL,KAAK4uB,OAAQ5uB,KAAKmkG,aAAa,KAE1DmoF,EAAcpsL,UAAUsS,QAAU,WAC9BxS,KAAK47C,uBAET0wI,EAAcpsL,UAAU6hJ,aAAe,WACnC,IAAI/8C,EAAchlG,KAAK4uB,OAAOo2E,YAC9B,GAAIhlG,KAAK4uB,OAAO8D,eAAiBsyE,IAAgBA,EAAY6tF,gBAAkB7tF,EAAY8tF,gBAGvF,OAFA9tF,EAAY6tF,gBAAiB,OAC7B7tF,EAAY8tF,gBAAiB,GAGjC9yL,KAAK4sL,sBAAuB,EAC5B5sL,KAAKy9J,SAASz9J,KAAKg6C,aAAaw3I,iBAEpClF,EAAcpsL,UAAUyyL,uBAAyB,SAAUxlL,GACvD,IAAKnN,KAAK4uB,OAAOiJ,wBAAyB,CACtC,IAAI4qH,EAASziJ,KAAKg6C,aAAayoG,OAC3BxgD,EAAUwgD,EAAOxgD,QACrB,OAAQ90F,EAAE4gB,aACN,IAAK,WACL,IAAK,aACDk0E,EAAQ,IAAKA,EAAQthG,QAChBX,KAAK4uB,OAAO+D,cAAcm/F,mBAAsB,eAAkB2wB,EAAOA,OAAOxgD,EAAQ,KAChC,aAAlB90F,EAAE4gB,YAA6Bk0E,EAAQ,GAAK,EAAIA,EAAQ,GAAK,EAApGwgD,EAAOA,OAAOxgD,EAAQ,IAAIj+F,QAAQ,GACtC,MAERhE,KAAKg6C,aAAayoG,OAAOxgD,QAAUA,EACnC,IAAI+C,EAAchlG,KAAK4uB,OAAOo2E,YAC9B,GAAIhlG,KAAK4uB,OAAO8D,eAAiBsyE,GAAeA,EAAY+tF,iBAAkB,CAC1E,IAAIhF,EAAwB/oF,EAAYgpF,2BAaxC,OAZID,EAAsBptL,OAClBotL,EAAsB,GAAGpsK,cAAcjX,aAAa,oBAAsByC,EAAEwrB,WAC5Eo1J,EAAsB,GAAGhuK,QAGzBguK,EAAsB,GAAGhuK,QAI7BilF,EAAY5hG,QAAQ2c,aAExBilF,EAAY+tF,kBAAmB,GAGnC/yL,KAAKy9J,SAASz9J,KAAKg6C,aAAaw3I,kBAGxClF,EAAcpsL,UAAUquL,aAAe,WACnCvuL,KAAKg6C,aAAayoG,OAAOxgD,QAAUjiG,KAAKg6C,aAAayoG,OAAO8qC,IAAI,GAAI,EAAG,CAAC,EAAG,GAAI,YAAavtL,KAAKg6C,aAAawzI,aAC9GxtL,KAAK4tJ,kBAET0+B,EAAcpsL,UAAU0tJ,eAAiB,WAChC5tJ,KAAKm1H,YAAY/xH,SAAYpD,KAAKm1H,YAAYC,gBAGnD,gBAAY,CAACp1H,KAAKm1H,YAAY/xH,QAASpD,KAAKm1H,YAAYC,gBAAiB,CAAC,UAAW,eAEzFk3D,EAAcpsL,UAAUgrK,eAAiB,WACrC,IAAIuhB,EAASzsL,KAAKysL,OAElB,OADAzsL,KAAKysL,QAAS,EACPA,IAAWhtL,OAAO2V,KAAKpV,KAAK6sL,aAAalsL,OAAS,CAAEq0F,SAAU,KAAM8S,UAAW,MAAS9nG,KAAK6sL,aAExGP,EAAcpsL,UAAUqkJ,eAAiB,WACrCvkJ,KAAKysL,QAAS,GAElBH,EAAcpsL,UAAU2vL,eAAiB,SAAUlvK,EAAQ6hI,GACvD,GAA+B,IAA3BxiJ,KAAK4uB,OAAOwrB,WAAhB,CAIA,IAAIsB,EACA0yG,EAAU,CACV,KAAQ,WAAc,MAAO,CAAGuhC,UAAWj0I,EAAK6mG,UAAWywC,UAAU,IACrE,IAAO,WAAc,MAAO,CAAGrD,UAAWj0I,EAAK6mG,UAAWywC,UAAU,IACpE,SAAY,WAAc,MAAO,CAAGrD,UAAU,EAAMqD,UAAU,IAC9D,QAAW,WAAc,MAAO,CAAGrD,UAAU,EAAOqD,UAAU,KAElE,GAAMryK,KAAUytI,EAAhB,CAGA1yG,EAAO8mG,EAAOovC,UACd,IAAIpF,EAAOp+B,EAAQ,GAAKztI,KACxB3gB,KAAKotL,WAAWZ,EAAKmD,UACrB3vL,KAAKg6C,aAAayoG,OAAOxgD,QAAUugD,EAAOC,OAAOxgD,WAErDqqF,EAAcpsL,UAAU0yL,kBAAoB,SAAUzlL,GAClD,GAAMA,EAAEy1I,OAASz1I,EAAEqC,UAAU+yI,WAAkC,UAArBp1I,EAAEk1I,QAAQ1hI,SAC5CxT,EAAEyhB,OAAO1pB,UAAUmB,SAAS,iBAC5B8G,EAAEyhB,OAAO1pB,UAAUmB,SAAS,kBAFpC,CAKArG,KAAK4tJ,iBACL,IAAIqlC,EAAWjzL,KAAKg6C,aAAak5I,aAAalzL,KAAK29J,qBACnD39J,KAAKuxL,kBAAkB0B,GACvBjzL,KAAKm1H,YAAYw4D,YAAa,IAE3BrB,EA79BuB,GAq+B9B6G,EAAwB,WACxB,SAASA,IACLnzL,KAAKyiJ,OAAS,GACdziJ,KAAKiiG,QAAU,GA8FnB,OA5FAkxF,EAAOjzL,UAAUkzL,IAAM,SAAUp+F,EAAU0pB,EAAa20E,GACpDr+F,EAAW7rF,KAAKkQ,IAAI,EAAGlQ,KAAKsT,IAAIu4E,EAAUh1F,KAAKm3B,OAC/CunF,EAAcv1G,KAAKkQ,IAAI,EAAGlQ,KAAKsT,IAAIiiG,EAAa1+G,KAAKmvB,UACrDnvB,KAAKyiJ,OAAO9wI,SAASqjF,EAASpjF,WAAY,KAAO5R,KAAKyiJ,OAAO9wI,SAASqjF,EAASpjF,WAAY,MAAQ,GACnG5R,KAAKyiJ,OAAO9wI,SAASqjF,EAASpjF,WAAY,KAAKD,SAAS+sG,EAAY9sG,WAAY,KAAOyhL,EAAQ,EAAI,GAEvGF,EAAOjzL,UAAUqtL,IAAM,SAAUv4F,EAAU0pB,EAAapY,EAAW3lF,EAAQ6sK,GACvE,IAAI3sI,EAAM69D,EACV,GAAI1pB,EAAWsR,EAAU,GAAK,EAC1B,MAAO,CAACtR,EAAU0pB,GAEtB1pB,EAAW7rF,KAAKkQ,IAAI,EAAGlQ,KAAKsT,IAAIu4E,EAAWsR,EAAU,GAAItmG,KAAKm3B,OAC9D,IAAIm8J,GAAa,EACjB,GAAI,eAAkBtzL,KAAKyiJ,OAAO9wI,SAASqjF,EAASpjF,WAAY,MAC5D,OAAO,KAGX,GADA8sG,EAAcv1G,KAAKkQ,IAAI,EAAGlQ,KAAKsT,IAAIiiG,EAAcpY,EAAU,GAAItmG,KAAKyiJ,OAAO9wI,SAASqjF,EAASpjF,WAAY,KAAKjR,OAAS,IACnHkgD,EAAMylD,EAAU,GAAKtmG,KAAKyiJ,OAAO9wI,SAASqjF,EAASpjF,WAAY,KAAKjR,OAAS,GAC1E6sL,EAAUx4F,EAAU0pB,EAAa/9F,GACpC,MAAO,CAACq0E,EAAUn0C,GAEtB,IAAIy0F,EAAQt1I,KAAKs1I,MAAMt1I,KAAKyiJ,OAAO9wI,SAASqjF,EAASpjF,WAAY,KAAM8sG,EAAapY,GAAW,EAAM3lF,GACrG+9F,EAAwB,OAAV42B,EAAiBz0F,EAAMy0F,EACrC,IAAIz4H,EAAM,eAASm4E,EAAW,IAAM0pB,EAAa1+G,KAAKyiJ,QAItD,GAHIztD,IAAah1F,KAAKm3B,MAAoB,cAAXxW,GAAqC,UAAXA,IACrD2lF,EAAU,IAAM,GAEN,OAAVgvC,EAAgB,CAChB,IAAK,IAAIt0I,EAAI,EAAGA,EAAIhB,KAAKm3B,KAAMn2B,IAC3B,GAAIhB,KAAKyiJ,OAAO9wI,SAAS3Q,EAAE4Q,WAAY,KAAKooB,MAAK,SAAU4oB,GAAK,OAAa,IAANA,KAAa,CAChF0wI,GAAa,EACb,MAGR,GAAIA,EAEA,OADAt+F,EAAWh1F,KAAKiiG,QAAQthG,OAASX,KAAKiiG,QAAQ,GAAK,EAC5C,CAACjN,EAAU0pB,GAG1B,OAAO1+G,KAAKuzL,QAAQ12K,KAAS2wK,EAAUx4F,EAAU0pB,EAAa/9F,GAC1D3gB,KAAKutL,IAAIv4F,EAAUn0C,EAAKylD,EAAW3lF,EAAQ6sK,GAAa,CAACx4F,EAAU0pB,IAE3Ey0E,EAAOjzL,UAAUo1I,MAAQ,SAAUk+C,EAAQ/mL,EAAO65F,EAAWj8B,EAAQ1pD,GACjE,OAAMlU,EAAQ,GAAKA,IAAU+mL,EAAO7yL,SAAWX,KAAKuzL,QAAQC,EAAO7hL,SAASlF,EAAMmF,WAAY,OAC3E,YAAX+O,GAAmC,cAAXA,IAA6B6yK,EAAOx5J,MAAK,SAAU4oB,GAAK,OAAa,IAANA,KACpF,KAEH5iD,KAAKuzL,QAAQC,EAAO7hL,SAASlF,EAAMmF,WAAY,MACnD5R,KAAKs1I,MAAMk+C,GAA+E,IAAtE,CAAC,UAAW,YAAa,UAAW,aAAaxvL,QAAQ2c,GAAkB0pD,EAAS,IAAM59D,EAAQA,EAAQ65F,EAAU,GAAIA,GAAW,EAAO3lF,GADnGlU,GAGnE0mL,EAAOjzL,UAAUuoB,OAAS,SAAUusE,EAAU0pB,GAC1C1pB,EAAW7rF,KAAKkQ,IAAI,EAAGlQ,KAAKsT,IAAIu4E,EAAUh1F,KAAKm3B,OAC/CunF,EAAcv1G,KAAKkQ,IAAI,EAAGlQ,KAAKsT,IAAIiiG,EAAa1+G,KAAKyiJ,OAAO9wI,SAASqjF,EAASpjF,WAAY,KAAKjR,OAAS,IACxGX,KAAKiiG,QAAU,CAACjN,EAAU0pB,IAE9By0E,EAAOjzL,UAAUotL,SAAW,SAAUn2J,EAAMwK,EAAU+5I,GAClD17K,KAAKm3B,KAAOA,EAAKx2B,OAAS,EAC1BX,KAAKyiJ,OAAS,GACd,IAAK,IAAIzhJ,EAAI,EAAGA,EAAIm2B,EAAKx2B,OAAQK,IAAK,CAClC,IAAIygD,EAAQtqB,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAK6vC,MAAMxtB,QAAO,SAAUxzB,GAAK,OAAuB,IAAhBA,EAAEuhF,aAClFhiF,KAAKmvB,QAAUhmB,KAAKkQ,IAAIooC,EAAM9gD,OAAS,EAAkB,EAAfX,KAAKmvB,SAE/C,IADA,IAAIwvI,EAAkB,EACbrnI,EAAI,EAAGA,EAAImqB,EAAM9gD,OAAQ22B,IAC1BmqB,EAAM9vC,SAAS2lB,EAAE1lB,WAAY,KAAK2d,QAAUkyB,EAAM9vC,SAAS2lB,EAAE1lB,WAAY,KAAK2d,OAAOJ,QACrFwvI,EAAkB3+J,KAAKyzL,aAAahyI,EAAM9vC,SAAS2lB,EAAE1lB,WAAY,KAAK2d,OAAOJ,QAASwvI,GAGtFA,IAEJ3+J,KAAKozL,IAAIpyL,EAAGs2B,GAAgD,IAA7CH,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAKglB,SACpC+K,EAASxK,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAM6vC,EAAM9vC,SAAS2lB,EAAE1lB,WAAY,KAAM8pK,IAE9F17K,KAAKmvB,QAAUhmB,KAAKkQ,IAAIslJ,EAAkB,EAAkB,EAAf3+J,KAAKmvB,SAEtD,OAAOnvB,KAAKyiJ,QAEhB0wC,EAAOjzL,UAAUuzL,aAAe,SAAUC,EAAYC,GAGlD,IAFA,IAAIxkK,EAAUukK,EACV/0B,EAAkBg1B,EACb3yL,EAAI,EAAGA,EAAImuB,EAAQxuB,OAAQK,IAC5BmuB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKud,QACpCwvI,EAAkB3+J,KAAKyzL,aAAatkK,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKud,QAASwvI,GAGjFA,IAGR,OAAOA,GAEXw0B,EAAOjzL,UAAUqzL,QAAU,SAAU96K,GACjC,OAAiB,IAAVA,QAAyBlN,IAAVkN,GAEnB06K,EAjGgB,GAuGvBrB,EAA8B,WAC9B,SAASA,EAAaljK,GAClB,IAAIvrB,EAAQrD,KACZA,KAAKyiJ,OAAS,IAAI0wC,EAClBnzL,KAAK8vL,aAAc,EACnB9vL,KAAK4uB,OAASA,EACd5uB,KAAKokK,WAAa,CACd,WAAc,CAAC,EAAG,GAClB,IAAO,CAAC,EAAG,GACX,UAAa,CAAC,GAAI,GAClB,SAAY,CAAC,GAAI,GACjB,QAAW,EAAE,EAAG,GAChB,UAAa,CAAC,EAAG,GACjB,QAAW,EAAE,EAAG,GAChB,UAAa,CAAC,EAAG,GACjB,WAAc,CAAC,EAAG,GAClB,UAAa,CAAC,GAAI,GAClB,MAAS,CAAC,EAAG,GACb,WAAc,EAAE,EAAG,IAEvBpkK,KAAK4zL,aAAe,SAAUjzK,GAC1B,IAAIshC,EAAM,CACN,KAAQ,CAAC5+C,EAAMo/I,OAAOxgD,QAAQ,IAAK,EAAG,EAAG,GACzC,IAAO,CAAC5+F,EAAMo/I,OAAOxgD,QAAQ,GAAI5+F,EAAMo/I,OAAOtzH,QAAU,EAAG,GAAI,GAC/D,SAAY,CAAC,GAAI,EAAG,EAAG,GACvB,QAAW,CAAC9rB,EAAMo/I,OAAOtrH,KAAM9zB,EAAMo/I,OAAOtzH,QAAU,EAAG,GAAI,IAEjE,OAAO8yB,EAAI,GAAKthC,IAAW,MAwSnC,OArSAmxK,EAAa5xL,UAAUyxF,SAAW,WAC9B,OAAQ3xF,KAAK4uB,OAAOgwB,mBAExBkzI,EAAa5xL,UAAUq9D,WAAa,SAAUpwD,GAC1C,IAAIk5F,EAAY,SAAS5oF,KAAK6oF,UAAUC,UACxC,GAAIF,GAAal5F,EAAEu5F,QACf,GAAiB,SAAbv5F,EAAEwT,OACFxT,EAAEwT,OAAS,gBAEV,GAAiB,QAAbxT,EAAEwT,OACPxT,EAAEwT,OAAS,eAEV,IAA+E,IAA3E,CAAC,YAAa,UAAW,YAAa,cAAc3c,QAAQmJ,EAAEwT,QACnE,OAGR,IAAIkzK,EAAa7zL,KAAKokK,WAAWj3J,EAAEwT,QAC/BshF,EAAUjiG,KAAK8zL,qBAAqB3mL,EAAEwT,OAAQkzK,EAAY1mL,EAAEwT,UAAU3gB,KAAKokK,WAAYj3J,GAC3F,GAAK80F,EAAL,CAGA,IAAM,CAAC,MAAO,YAAYj+F,QAAQmJ,EAAEwT,SAAW,GAAK3gB,KAAKyiJ,OAAOxgD,SAAW,IAAIrwF,aAAeqwF,EAAQrwF,YAC9F5R,KAAK4uB,OAAO4D,cAAgBxyB,KAAK4uB,OAAOwJ,YAAYC,SAASylI,sBAC1D99J,KAAKyiJ,OAAOxgD,QAAQ,KAAOjiG,KAAKyiJ,OAAOtrH,OAA4C,UAAlCn3B,KAAK4uB,OAAOi3C,aAAaihC,MAC1E9mG,KAAK4uB,OAAOi3C,aAAa0oC,aAA6B,KAAdphG,EAAEqG,SAAkC,KAAdrG,EAAEqG,SAAmB,CAC1F,GAAIyuF,EAAQrwF,aAAe,CAAC5R,KAAKyiJ,OAAOtrH,KAAMn3B,KAAKyiJ,OAAOtzH,SAASvd,YAC/DqwF,EAAQrwF,aAAe,CAAC,EAAG,GAAGA,YAAe5R,KAAKyiJ,OAAOxgD,QAAQ,KAAOjiG,KAAKyiJ,OAAOtrH,MACpFn3B,KAAKyiJ,OAAOxgD,QAAQrwF,aAAeqwF,EAAQrwF,YAAgB5R,KAAK4uB,OAAO8D,eACvE1yB,KAAK4uB,OAAOorE,uBAAuBC,aAAegI,EAAQrwF,aAAe,CAAC,EAAG,GAAGA,WAChF,OAAO,EAGPqwF,EAAUjiG,KAAK+zL,YAAY9xF,EAAQ,GAAIA,EAAQ,GAAI90F,EAAEwT,QAG7D3gB,KAAKyiJ,OAAOh6H,OAAOw5E,EAAQ,GAAIA,EAAQ,MAE3C6vF,EAAa5xL,UAAU6zL,YAAc,SAAU/+F,EAAU8S,EAAWnnF,GAChE,IAAI2R,EAAOtyB,KAAK4uB,OACZmlK,EAAczhK,EAAKuzC,aAAa4zG,mBAAqBnnJ,EAAKyqB,QAAUzqB,EAAKwwH,sBACzEkxC,EAAe1hK,EAAK09D,sBAAsB19D,EAAKgnE,oBAAoB,GAAGznE,OACtE8vB,EAAO3hD,KAAK2xF,WAAWx6D,KAAKxlB,SAASqjF,EAASpjF,WAAY,KAAK6vC,MAAM9vC,SAASm2F,EAAUl2F,WAAY,KACxG,GAAe,QAAX+O,GAAoBozK,EAAa,CACjC/+F,IACA,IAAIvoF,EAASzM,KAAK2xF,WAAWx6D,KAAKxlB,SAASqjF,EAASpjF,WAAY,KAAKuG,uBAAuB,gBAAgBxX,OACxGX,KAAK2xF,WAAWx6D,KAAKxlB,SAASqjF,EAASpjF,WAAY,KAAKuG,uBAAuB,uBAAuBxX,OAC1GmnG,EAAYksF,EAAevnL,EAM/B,MAJe,aAAXkU,GAAyBozK,IACzB/+F,IACA8S,EAAYx1E,EAAK09D,sBAAsB19D,EAAKgnE,oBAAoBhnE,EAAKgnE,oBAAoB34F,OAAS,GAAGkxB,QAEjG8vB,EAAKz8C,UAAUmB,SAAS,SAAsBs7C,EAAKz8C,UAAUmB,SAAS,iBACzEs7C,EAAKz8C,UAAUmB,SAAS,mBAAsBs7C,EAAKz8C,UAAUmB,SAAS,mBACvB,CAAC2uF,EAAU8S,GAA3D9nG,KAAK+zL,YAAY/+F,EAAU8S,EAAWnnF,IAE9CmxK,EAAa5xL,UAAU4zL,qBAAuB,SAAUnzK,EAAQ2lF,EAAWykE,EAAW59J,GAElF,QADkB,IAAdm5F,IAAwBA,EAAY,CAAC,EAAG,KACvCykE,IAAc/qK,KAAK4zL,aAAajzK,IAA2C,IAA/B3gB,KAAKyiJ,OAAOxgD,QAAQthG,OACjE,OAAO,KAEX,IAAKX,KAAKi0L,kBAAkB9mL,GACxB,OAAOnN,KAAKyiJ,OAAOxgD,QAGvB,IAAIp+F,EAAK7D,KAAK4zL,aAAajzK,IAAW3gB,KAAKyiJ,OAAOxgD,QAAQhzD,OAAOq3D,GAAYtR,EAAWnxF,EAAG,GAAIikG,EAAYjkG,EAAG,GAAIqwL,EAAKrwL,EAAG,GAAIswL,EAAKtwL,EAAG,GACtI,GAAI7D,KAAK4uB,OAAO8D,eAAiB1yB,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,QAAUX,KAAK4uB,OAAOwI,WAAWz2B,QAAqB,UAAXggB,EAC1G,IAAK,IAAI3f,EAAIg0F,EAAUh0F,EAAIhB,KAAKyiJ,OAAOA,OAAO9hJ,OAAQK,IAAK,CACvD,IAAIq2B,EAAMr3B,KAAK2xF,WAAWx6D,KAAKn2B,EAAI,GACnC,GAAIq2B,GAAOA,EAAIoqB,MAAM9vC,SAASm2F,EAAUl2F,WAAY,MAAQylB,EAAIoqB,MAAM9vC,SAASm2F,EAAUl2F,WAAY,KAAK1M,UAAUmB,SAAS,aACzH,MAAO,CAACrF,EAAI,EAAG8mG,GAEnB,GAAI9mG,IAAMhB,KAAKyiJ,OAAOA,OAAO9hJ,OAAS,EAClC,MAAO,CAACq0F,EAAU8S,GAI9B,GAAe,YAAXnnF,GAAmC,QAAXA,EAAkB,CAC1C,IAAI+vK,EAAuB,CAAC1wL,KAAKyiJ,OAAOA,OAAO9hJ,OAAS,EACpDX,KAAKyiJ,OAAOA,OAAOziJ,KAAKyiJ,OAAOA,OAAO9hJ,OAAS,GAAGA,OAAS,GAChD,QAAXggB,IACA+vK,EAAuB,CAAC17F,EAAUh1F,KAAKyiJ,OAAOA,OAAO9wI,SAASqjF,EAASpjF,WAAY,KAAKjR,OAAS,IAExB,IAAzEX,KAAKyiJ,OAAOA,OAAOiuC,EAAqB,IAAIA,EAAqB,MACjEA,EAAuB,eAAc1wL,KAAKyiJ,OAAOA,OAAQiuC,GAAsB,IAEnF17F,EAAW07F,EAAqB,GAChC5oF,EAAY4oF,EAAqB,GAAK,EAE1C,IAAIzuF,EAAUjiG,KAAKyiJ,OAAO8qC,IAAIv4F,EAAU8S,EAAW,CAACosF,EAAIC,GAAKxzK,EAAQ3gB,KAAKwtL,aAC1E,OAAOvrF,GAEX6vF,EAAa5xL,UAAUy5I,QAAU,SAAUxsI,EAAGihL,GAC1C,IAAI9tL,EAAS6M,EAAE7M,OAQf,GAPAN,KAAKM,OAASA,EACdA,EAAUA,EAAO4E,UAAUmB,SAAS,QAAoB/F,EAAS,eAAQA,EAAQ,MACjFA,EAASA,IAAkB,eAAQ6M,EAAE7M,OAAQ,2BACtC,eAAQ6M,EAAE7M,OAAQ,yBACzBA,EAAS,eAAQ6M,EAAE7M,OAAQ,oBACvB,eAAkB,eAAQ,eAAQ6M,EAAE7M,OAAQ,WAAY,oBAAsB,KAAgBA,EAClGA,EAASA,GAAU,eAAQA,EAAQ,SAAS4E,UAAUmB,SAAS,QAAkB/F,EAAS,MACrFA,EACD,OAAO,EAEX,IAAIuD,EAAK,CAACvD,EAAOqhB,cAAcqzE,SAAU10F,EAAOwnG,WAAY9S,EAAWnxF,EAAG,GAAIikG,EAAYjkG,EAAG,GACzFC,EAAK9D,KAAKyiJ,OAAOxgD,QAASmyF,EAAYtwL,EAAG,GAAIuwL,EAAavwL,EAAG,GAC7D+Y,EAAM,eAASm4E,EAAW,IAAM8S,EAAW9nG,KAAKyiJ,OAAOA,QAC3D,GAAIziJ,KAAKyiJ,OAAO8wC,QAAQ12K,KAAUuxK,GAASgG,IAAcp/F,GAAYq/F,IAAevsF,IAC9E,gBAAa36F,EAAE7M,OAAQ,UAAsB,gBAAa6M,EAAE7M,OAAQ,oBAC9D,gBAAa6M,EAAE7M,OAAQ,0BAA4B,gBAAa6M,EAAE7M,OAAQ,wBAC1E,gBAAa6M,EAAE7M,OAAQ,yBAA2B,gBAAa6M,EAAE7M,OAAQ,uBACzE,gBAAa6M,EAAE7M,OAAQ,kBAC/B,OAAO,EAEXN,KAAKyiJ,OAAOh6H,OAAOusE,EAAU8S,IAEjCgqF,EAAa5xL,UAAUsxL,aAAe,WAClC,IAAI91I,EAAO,GACP73C,EAAK7D,KAAKyiJ,OAAOxgD,QAASn+F,EAAKD,EAAG,GAAImxF,OAAkB,IAAPlxF,EAAgB,EAAIA,EAAIo3B,EAAKr3B,EAAG,GAAIikG,OAAmB,IAAP5sE,EAAgB,EAAIA,EAIzH,OAHAl7B,KAAKyiJ,OAAOxgD,QAAU,CAACjN,EAAU8S,GACjCpsD,EAAKt4C,QAAW,eAAkBpD,KAAK2xF,WAAWx6D,KAAKxlB,SAASqjF,EAASpjF,WAAY,MACmB,KAApG5R,KAAK2xF,WAAWx6D,KAAKxlB,SAASqjF,EAASpjF,WAAY,KAAK6vC,MAAM9vC,SAASm2F,EAAUl2F,WAAY,KAC5F8pC,EAAKt4C,SAGVs4C,EAAK05E,eAAkB15E,EAAKt4C,QAAQ8B,UAAUmB,SAAS,kBAAqBq1C,EAAKt4C,QAAQ8B,UAAUmB,SAAS,gBACpEq1C,EAAKt4C,QAAvCpD,KAAKkzL,aAAax3I,EAAKt4C,SAC7Bs4C,EAAK05E,eAAiB15E,EAAKt4C,QAAQ8B,UAAUmB,SAAS,iBAAmBq1C,EAAKt4C,QAAQ8I,cAAc,gBAC9FwvC,EAAKt4C,QAAQ8I,cAAc,gBAAkBwvC,EAAK05E,eACxD15E,EAAK8zI,SAAU,EACf9zI,EAAKvnB,IAAMunB,EAAKt4C,QAAQue,cAAcjX,aAAa,YAC5CgxC,GARIA,GAUfo2I,EAAa5xL,UAAUgzL,aAAe,SAAU9vL,GAC5C,IAAIksB,EAAQ,gGACR4xD,GAAc,eAAkB,eAAQ99E,EAAS,oBACjDpD,KAAK4uB,OAAOmuB,SACZztB,EAAQ,0EAEZ,IAAIslI,EAAQ,GAAGlnJ,MAAMpK,KAAKF,EAAQsf,iBAAiB4M,IAKnD,OAAOslI,EAAMj0J,OAASugF,GAAc0zE,EAAMj0J,OAAS,EAAIX,KAAKM,OAASN,KAAKM,OAAS8C,EAAUwxJ,EAAM,GAAKxxJ,GAE5G0uL,EAAa5xL,UAAUyhC,SAAW,SAAUtK,EAAKsqB,EAAM+5H,GACnD,IAAIlkJ,EAAQ,CAAC,OAAS+pE,OAAQ,OAASF,aAAc,OAASh+C,eAAgB,OAASP,cACvF,OAASzrB,EAAIyoD,WAAan+B,EAAK/qB,UAAY+qB,EAAKC,YAAcD,EAAKu/B,aAC3D7pD,EAAIyoD,WAAan+B,EAAKE,WAAa,OAAS6+B,cAAgB,eAAkB/+B,EAAK/qB,WAClFS,EAAIyoD,WAAatoD,EAAMxzB,QAAQ29C,EAAKE,WAAa,MAC5CF,EAAKE,WAAa,OAASiB,cAAgBnB,EAAKE,WAAa,OAASwB,mBACnE1B,EAAKC,aAAcD,EAAK/qB,WACjC+qB,EAAKpyB,QAAUoyB,EAAK/qB,SAAgC,aAArB+qB,EAAKpyB,OAAO/gB,MAC3CmzC,EAAKE,WAAa,OAASg/B,eAC3BxpD,EAAIyoD,WAAa47F,MACH,WAAbrkJ,EAAI3F,MAAqB2F,EAAI6rH,UAE1C4uC,EAAa5xL,UAAUo0L,qBAAuB,SAAU7nL,GAEpD,IADA,IAAImtK,EAAYntK,EACPzL,EAAIyL,EAAOwW,EAAMjjB,KAAKyiJ,OAAOtrH,KAAMn2B,GAAKiiB,EAAKjiB,IAAK,CACvD,IAAuE,IAAnEhB,KAAKyiJ,OAAOA,OAAO9wI,SAASlF,EAAMmF,WAAY,KAAK5N,QAAQ,GAI3D,OAAOyI,EAHPA,GAAgB,EAOxB,OADAzM,KAAK8vL,aAAc,EACZlW,GAEXkY,EAAa5xL,UAAUq0L,yBAA2B,SAAU9nL,GAExD,IADA,IAAIotK,EAAaptK,EACRzL,EAAIyL,EAAOwW,EAAM,EAAGjiB,GAAKiiB,EAAKjiB,IAAK,CACxC,IAAuE,IAAnEhB,KAAKyiJ,OAAOA,OAAO9wI,SAASlF,EAAMmF,WAAY,KAAK5N,QAAQ,GAQ3D,OAAOyI,EANP,GADAA,GAAgB,EACZA,EAAQ,EAER,OADAzM,KAAK8vL,aAAc,EACZjW,EAOnB,OAAOA,GAEXiY,EAAa5xL,UAAUwvL,KAAO,SAAU/uK,EAAQshF,GAC5CjiG,KAAK8vL,aAAc,EACnB,IAAI0E,EAAyC,IAA3Bx0L,KAAK4uB,OAAOwrB,YAA+B,eAAXz5B,EAC9C8zK,GAAyB,YAAX9zK,GAAwB6zK,IAA+B,IAAfvyF,EAAQ,GACnD,QAAXthF,GAAoB3gB,KAAKyiJ,OAAOA,OAAO9hJ,QACvCshG,EAAQ,KAAOjiG,KAAKyiJ,OAAOA,OAAOxgD,EAAQ,IAAIqiC,YAAY,IAAMtkI,KAAKyiJ,OAAOA,OAAO9hJ,OAAS,IAAMshG,EAAQ,KAC1GjiG,KAAKyiJ,OAAOxgD,QAAQ,GAAKjiG,KAAKs0L,qBAAqBt0L,KAAKyiJ,OAAOxgD,QAAQ,GAAK,GAC5EjiG,KAAKyiJ,OAAOxgD,QAAQ,IAAM,GAEf,aAAXthF,GACe,IAAfshF,EAAQ,IAAYjiG,KAAKyiJ,OAAOA,OAAOxgD,EAAQ,IAAIj+F,QAAQ,KAAOi+F,EAAQ,KAC1EjiG,KAAKyiJ,OAAOxgD,QAAQ,GAAKjiG,KAAKu0L,yBAAyBv0L,KAAKyiJ,OAAOxgD,QAAQ,GAAK,GAChFjiG,KAAKyiJ,OAAOxgD,QAAQ,GAAKjiG,KAAKyiJ,OAAOA,OAAOxgD,EAAQ,IAAIthG,QAE5D,IAAI+zL,GAAgB,EAChBr9J,EAAM,gBAAazpB,SAASyT,cAAe,SAC/C,IAAKrhB,KAAK4uB,OAAO6D,sBAAwBzyB,KAAK4uB,OAAOorE,uBAAuBC,eACpE,eAAkB5iE,IAAQA,EAAInyB,UAAUmB,SAAS,QAAe,CACpE,IAAI2uF,EAAWrjF,SAAS0lB,EAAI3sB,aAAa,QAAwB,IACjEgqL,EAAgB1/F,EAAW,EAE/B,IAAIt5C,EAAO,CACP8wI,MAAOkI,KAA6B,YAAX/zK,GAAwB6zK,IAA+B,IAAfvyF,EAAQ,IACzE0tF,SAAU8E,GAEd,OAAO/4I,GAEXo2I,EAAa5xL,UAAU0vL,eAAiB,SAAUtiJ,EAAUk/I,EAAMhqC,EAAQ7hI,QACrD,IAAb2sB,IAAuBA,EAAW,IACtC,IAAI20D,EAAU,GASd,MARe,eAAXthF,GAAsC,QAAXA,IAC3BshF,EAAQ,GAAK30D,EAAS,GACtB20D,EAAQ,IAAM,GAEH,cAAXthF,GAAqC,UAAXA,IAC1BshF,EAAQ,IAAM,EACdA,EAAQ,GAAK30D,EAAS,IAEnB20D,GAEX6vF,EAAa5xL,UAAUogD,aAAe,SAAUnpB,EAAMw9J,GAClD,IAAI9wL,EACA4+I,EAASkyC,EAAUlyC,OAAQ4vC,EAAkBsC,EAAUtC,gBACvDpvK,EAAMovK,EAAgB5vC,OAAOA,OAAO9hJ,OACpCi0L,EAAa50L,KAAK4uB,OAAO4L,gBAAsD,cAApCx6B,KAAK4uB,OAAOoF,eAAexlB,KAAuByU,EAAM,EAAIA,EAC3GovK,EAAgB5vC,OAAOA,OAAS4vC,EAAgB5vC,OAAOA,OAAO/0I,MAAM,EAAGknL,GACvEvC,EAAgB5vC,OAAOtrH,KAAOy9J,GAC7B/wL,EAAKwuL,EAAgB5vC,OAAOA,QAAQp2I,KAAKvJ,MAAMe,EAAI4+I,GACpD4vC,EAAgB5vC,OAAOtrH,MAAQsrH,EAAO9hJ,QAE1CmxL,EAAa5xL,UAAU0xL,QAAU,SAAUzkL,GACvC,IAAIuuC,EAAO17C,KAAKwxL,eACZ3tL,EAAK7D,KAAKyiJ,OAAOxgD,QAASk1E,EAAStzK,EAAG,GAAIm2K,EAASn2K,EAAG,GACtDgxL,EAASn5I,EAAKt4C,QAAQ8B,UAAUmB,SAAS,QACzCo8E,EAAeoyG,GAAW1nL,GAAkB,UAAbA,EAAEwT,SAAuB+6B,EAAKt4C,QAAQ8B,UAAUmB,SAAS,wBACrFq1C,EAAKt4C,QAAQ8B,UAAUmB,SAAS,sBAEnCvC,EAAK,CAACqF,KAAKsT,IAAI9K,SAAS+pC,EAAKt4C,QAAQue,cAAcjX,aAAa,QAAwB,IAAKysK,GAC7FhuK,KAAKsT,IAAI9K,SAAS+pC,EAAKt4C,QAAQsH,aAAa,QAAwB,IAAKsvK,IAAUhlF,EAAWlxF,EAAG,GAAIgkG,EAAYhkG,EAAG,GAIxH,OAHI9D,KAAK4uB,OAAO8D,eAAiB1yB,KAAK4uB,OAAO+D,cAAc6F,mBAAqBq8J,IAC5E7/F,EAAWh1F,KAAK4uB,OAAOs5E,cAAclkG,QAAQ03C,EAAKt4C,QAAQue,gBAEvD,CAAE4gI,WAAW,EAAM3gG,WAAYizI,EAAQxhG,QAAS,CAAC2B,EAAU8S,GAAYrlB,aAAcA,IAEhGqvG,EAAa5xL,UAAUstL,UAAY,WAC/B,IAAIxrJ,EAAQhiC,KAAK2xF,WACjB,OAAO,SAAUqD,EAAU8S,EAAWnnF,GAClC,IAAK,eAAkBqhB,EAAM7K,KAAKxlB,SAASqjF,EAASpjF,WAAY,MAAO,CACnE,IAAI+vC,OAAO,EACXmmD,EAAY9lE,EAAM91B,cAAc,eAAiB,EAAI47F,EAEjDnmD,EADA3f,EAAM7K,KAAKxlB,SAASqjF,EAASpjF,WAAY,KAAK6vC,MAAM,GAAGv8C,UAAUmB,SAAS,cACnE27B,EAAM7K,KAAKxlB,SAASqjF,EAASpjF,WAAY,KAAK6vC,MAAM,GAAG/+B,iBAAiB,MAAM/Q,SAASm2F,EAAUl2F,WAAY,KAG7GowB,EAAM7K,KAAKxlB,SAASqjF,EAASpjF,WAAY,KAAK6vC,MAAM9vC,SAASm2F,EAAUl2F,WAAY,KAE9F,IAAIkjL,EAAqD,IAAvCnzI,EAAKv6C,wBAAwB9B,MAC/C,GAAe,UAAXqb,GAAiC,eAAXA,EACtB,OAAOm0K,GAAenzI,EAAKz8C,UAAUmB,SAAS,QAElD,IAAgB,YAAXsa,GAAmC,cAAXA,IAA2BghC,EAAKz8C,UAAUmB,SAAS,QAC5E,OAAOyuL,EAEN,GAAe,YAAXn0K,GAAmC,cAAXA,EAC7B,OAAOm0K,EAGf,OAAO,IAGfhD,EAAa5xL,UAAU+zL,kBAAoB,SAAU9mL,GACjD,IAAItJ,EAAK7D,KAAKyiJ,OAAOxgD,QAASn+F,EAAKD,EAAG,GAAIszK,OAAgB,IAAPrzK,GAAiB,EAAIA,EAAIo3B,EAAKr3B,EAAG,GAAIm2K,OAAgB,IAAP9+I,GAAiB,EAAIA,EACtH,GAAIi8I,EAAS,GAAK6C,EAAS,EACvB,OAAO,EAEX,IAAIr4H,EAAO,eAASw1H,EAAS,UAAY6C,EAAQh6K,KAAK2xF,WAAWx6D,MACjE,OAAKwqB,IAGe,UAAbx0C,EAAEwT,QAAmC,eAAbxT,EAAEwT,SAC7BghC,EAAKz8C,UAAUmB,SAAS,UAAsBs7C,EAAKz8C,UAAUmB,SAAS,kBAC/Ds7C,EAAKz8C,UAAUmB,SAAS,uBAAyBs7C,EAAKz8C,UAAUmB,SAAS,mBAExFyrL,EAAa5xL,UAAU60L,gBAAkB,WACrC,OAAO/0L,KAAK4uB,OAAOktE,gBAAkB97F,KAAK4uB,OAAOk0D,kBAAkBs1F,sBAEhE0Z,EAnUsB,GAyU7BC,EAA6B,SAAUlvL,GAEvC,SAASkvL,EAAYnjK,GACjB,OAAO/rB,EAAOS,KAAKtD,KAAM4uB,IAAW5uB,KA+HxC,OAjIAX,EAAU0yL,EAAalvL,GAIvBkvL,EAAY7xL,UAAUyxF,SAAW,WAC7B,OAAQ3xF,KAAK4uB,OAAO8kE,kBAExBq+F,EAAY7xL,UAAUy5I,QAAU,SAAUxsI,GACtC,IAAI7M,EAAS6M,EAAE7M,OAOf,GANAN,KAAKM,OAASA,EACdA,EAAUA,EAAO4E,UAAUmB,SAAS,gBAAkB/F,EAAS,eAAQA,EAAQ,MAC1EA,GAAqC,IAA3BN,KAAK4uB,OAAOwrB,aACvB95C,EAAU6M,EAAE7M,OAAO4E,UAAUmB,SAAS,QAAoB8G,EAAE7M,OACxD,eAAQ6M,EAAE7M,OAAQ,OAEtB6M,EAAE7M,OAAO4E,UAAUmB,SAAS,mBAC5B8G,EAAE7M,OAAO4L,cAAc,wBACvB,OAAO,EAEX,GAAK5L,EAAL,CAGA,IAAIuD,EAAK,CAACvD,EAAOqhB,cAAcqzE,SAAU10F,EAAOwnG,WAAY9S,EAAWnxF,EAAG,GAAIikG,EAAYjkG,EAAG,GACzFgZ,EAAM,eAASm4E,EAAW,IAAM8S,EAAW9nG,KAAKyiJ,OAAOA,QAC3D,GAAIziJ,KAAKyiJ,OAAO8wC,QAAQ12K,GACpB,OAAO,EAEX7c,KAAKyiJ,OAAOh6H,OAAOnoB,EAAOqhB,cAAcqzE,SAAU10F,EAAOwnG,aAE7DiqF,EAAY7xL,UAAUsxL,aAAe,WACjC,IAAI91I,EAAO,GACP73C,EAAK7D,KAAKyiJ,OAAOxgD,QAASn+F,EAAKD,EAAG,GAAImxF,OAAkB,IAAPlxF,EAAgB,EAAIA,EAAIo3B,EAAKr3B,EAAG,GAAIikG,OAAmB,IAAP5sE,EAAgB,EAAIA,EAMzH,OALAwgB,EAAKt4C,QAAUpD,KAAK2xF,WAAWx6D,KAAKxlB,SAASqjF,EAASpjF,WAAY,KAAK6vC,MAAM9vC,SAASm2F,EAAUl2F,WAAY,KACvG,eAAkB8pC,EAAKt4C,WACxBs4C,EAAK05E,eAAiBp1H,KAAKkzL,aAAax3I,EAAKt4C,SAC7Cs4C,EAAK8zI,SAAW9zI,EAAKt4C,QAAQ8B,UAAUmB,SAAS,oBAE7Cq1C,GAEXq2I,EAAY7xL,UAAUyhC,SAAW,SAAUtK,EAAKsqB,GAC5C,OAAQA,EAAK/qB,eAAkCrrB,IAAtBo2C,EAAKpyB,OAAOsC,OAAuB8vB,EAAKu/B,aAAe,eAAkBv/B,EAAKpyB,OAAOqnB,YACtG,eAAkB+K,EAAKpyB,OAAOmnB,YAAoC,aAArBiL,EAAKpyB,OAAO/gB,MAAuBmzC,EAAKE,WAAa,OAAS4yC,eAEvHs9F,EAAY7xL,UAAUwvL,KAAO,SAAU/uK,EAAQshF,GAC3C,IACIuvE,EACA3S,EAFA21B,EAAyC,IAA3Bx0L,KAAK4uB,OAAOwrB,YAA+B,UAAXz5B,EAgBlD,OAbI3gB,KAAK4uB,OAAOy+J,mBAAgC,QAAX1sK,IACjCk+I,EAAU7+J,KAAKyiJ,OAAOA,OAAO9hJ,OAAS,IAAMshG,EAAQ,GACpDuvE,EAAavvE,EAAQ,KAAOjiG,KAAKyiJ,OAAOA,OAAOxgD,EAAQ,IAAIqiC,YAAY,GACnEktC,IAKIxxK,KAAKyiJ,OAAOxgD,QAAQ,GAJnB48D,EAIwB,EAHA7+J,KAAKyiJ,OAAOxgD,QAAQ,GAAK,EAKtDjiG,KAAKyiJ,OAAOxgD,QAAQ,IAAM,IAG3B,CACHuqF,MAAmB,cAAX7rK,GAA0B6zK,IAAgBvyF,EAAQ,KAAOjiG,KAAKyiJ,OAAOA,OAAO9hJ,OAAS,GAC7E,QAAXggB,GAAoBk+I,GAAW2S,IAG5CugB,EAAY7xL,UAAU0vL,eAAiB,SAAUtiJ,EAAUk/I,EAAMhqC,EAAQ7hI,QACpD,IAAb2sB,IAAuBA,EAAW,IACtC,IAAI0nJ,EAAW,GASf,OARe,eAAXr0K,GAAuC,eAAXA,GAA2B3gB,KAAK+0L,mBAAiC,QAAXp0K,KAClFq0K,EAAS,GAAK1nJ,EAAS,GACvB0nJ,EAAS,IAAM,GAEJ,YAAXr0K,GAAmC,eAAXA,IACxBq0K,EAAS,GAAKh1L,KAAKyiJ,OAAOA,OAAO9hJ,OACjCq0L,EAAS,GAAK1nJ,EAAS,IAEpB0nJ,GAEXjD,EAAY7xL,UAAUogD,aAAe,SAAUnpB,GAC3C,IAAIx2B,EAASX,KAAKyiJ,OAAOA,OAAO9hJ,OAChC,GAAIX,KAAK4uB,OAAO4L,gBAAsD,cAApCx6B,KAAK4uB,OAAOoF,eAAexlB,KAAsB,CAC/ExO,KAAKyiJ,OAAOtrH,OAASn3B,KAAKyiJ,OAAOtrH,KAGjC,IAFA,IAAIsqB,EAAQtqB,EAAK,GAAGsqB,MAChBk9G,EAAkB,EACb39J,EAAI,EAAGA,EAAIygD,EAAM9gD,OAAQK,IAC1BygD,EAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAK2d,QAAUkyB,EAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAK2d,OAAOJ,QACrFwvI,EAAkB3+J,KAAKi1L,kBAAkBxzI,EAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAK2d,OAAOJ,QAASxuB,EAAQg+J,IAGnG3+J,KAAKyiJ,OAAO2wC,IAAIzyL,EAAQg+J,EAAiBl9G,EAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKglB,UAAuE,IAA5D6qB,EAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAK2d,OAAOiL,gBAC/HmkI,OAKhBozB,EAAY7xL,UAAU+0L,kBAAoB,SAAUvB,EAAY1+F,EAAU0pB,GAGtE,IAFA,IAAIvvF,EAAUukK,EACV/0B,EAAkBjgD,EACb19G,EAAI,EAAGA,EAAImuB,EAAQxuB,OAAQK,IAC5BmuB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKud,QACpCwvI,EAAkB3+J,KAAKi1L,kBAAkB9lK,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKud,QAAS6lE,EAAU2pE,IAGhG3+J,KAAKyiJ,OAAO2wC,IAAIp+F,EAAU2pE,EAAiBxvI,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKglB,UAAkE,IAAvDzH,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK4oB,gBAC9HmkI,KAGR,OAAOA,GAEXozB,EAAY7xL,UAAU0xL,QAAU,SAAUzkL,GACtC,OAAO,eAAOtK,EAAO3C,UAAU0xL,QAAQtuL,KAAKtD,KAAMmN,GAAI,CAAEo1I,WAAW,EAAO/lG,UAAU,KAExFu1I,EAAY7xL,UAAUstL,UAAY,WAC9B,OAAO,WAAc,OAAO,IAEhCuE,EAAY7xL,UAAU+zL,kBAAoB,SAAU9mL,GAChD,IAAItJ,EAAK7D,KAAKyiJ,OAAOxgD,QAASjN,EAAWnxF,EAAG,GAAI66G,EAAc76G,EAAG,GACjE,GAAImxF,EAAW,GAAK0pB,EAAc,EAC9B,OAAO,EAEX,IAAI/8D,EAAO,eAASqzC,EAAW,UAAY0pB,EAAa1+G,KAAK2xF,WAAWx6D,MACxE,OAAKwqB,IAGe,UAAbx0C,EAAEwT,QAAmC,iBAAbxT,EAAEwT,SAA6BghC,EAAKz8C,UAAUmB,SAAS,kBAE1F0rL,EAAY7xL,UAAUg1L,cAAgB,WAClC,MAAO,eAEJnD,EAlIqB,CAmI9BD,GAGEqD,EAA2B,WAC3B,SAASA,EAAU3pD,EAAW38G,GAC1B7uB,KAAKwrI,UAAYA,EACjBxrI,KAAK6uB,eAAiBA,EACtB7uB,KAAKya,KAAOza,KAAK6uB,eAAeuxD,WAAW,gBAyC/C,OAvCA+0G,EAAUj1L,UAAUk1L,YAAc,SAAUrvK,GAExC,GADAA,EAAKzlB,OAAOqhB,cAAczc,UAAU4G,IAAI,iBACpCia,EAAKzlB,OAAO4E,UAAUmB,SAAS,YAAc0f,EAAKzlB,OAAO4E,UAAUmB,SAAS,aAAe0f,EAAKzlB,OAAOmY,MAAO,CAC9G,IAAIoyH,EAAQ9kH,EAAKzlB,OAAOqhB,cAAczV,cAAc,YACpD2+H,EAAM3lI,UAAU4G,IAAI,gBACpB++H,EAAMlgI,aAAa,QAAS3K,KAAKya,KAAKC,YAAY,gBAClD,EAAQ3T,MAAMsuL,OAAS,YAG/BF,EAAUj1L,UAAUo1L,WAAa,SAAUvvK,GACvC,IAAIlT,EAAgBkT,EAAKlT,cAAgBkT,EAAKlT,cAAgB,KAS9D,GARIA,GAAiBA,EAAc3N,UAAUmB,SAAS,WAC9CwM,EAAc3N,UAAUmB,SAAS,iBACjC0f,EAAKzlB,OAAOqhB,cAAczc,UAAUC,OAAO,iBAI/C4gB,EAAKzlB,OAAOqhB,cAAczc,UAAUC,OAAO,iBAE3C4gB,EAAKzlB,OAAO4E,UAAUmB,SAAS,cAAiBwM,IAAmBA,EAAc3N,UAAUmB,SAAS,0BAC/FwM,EAAc3N,UAAUmB,SAAS,YAAgB,eAAkBwM,IAAiB,CACzF,IAAIg4H,EAAQ9kH,EAAKzlB,OAAOqhB,cAAczV,cAAc,YACpD2+H,EAAM3lI,UAAUC,OAAO,gBACvB0lI,EAAMjgI,gBAAgB,SACtBigI,EAAM9jI,MAAMsuL,OAAS,YAG7BF,EAAUj1L,UAAUq1L,UAAY,WACxBv1L,KAAKwrI,YACL,OAAa1/H,IAAI9L,KAAKwrI,UAAW,QAASxrI,KAAKo1L,YAAap1L,MAC5D,OAAa8L,IAAI9L,KAAKwrI,UAAW,OAAQxrI,KAAKs1L,WAAYt1L,QAGlEm1L,EAAUj1L,UAAUs1L,YAAc,WAC1Bx1L,KAAKwrI,YACL,OAAarmI,OAAOnF,KAAKwrI,UAAW,QAASxrI,KAAKo1L,aAClD,OAAajwL,OAAOnF,KAAKwrI,UAAW,OAAQxrI,KAAKs1L,cAGlDH,EA7CmB,I,kCCrjD9B,yjQACO,IAII5rH,EAAO,OAEPksH,EAAe,eAEfC,EAAgB,gBAEhBC,EAAiB,iBAEjB/vH,EAAc,cAEduoF,EAAiB,iBAEjBynC,EAAgB,gBAEhBh0C,EAAY,YAEZi0C,EAAe,eAEfC,EAAc,cAEdC,EAAiB,iBAEjBC,EAAgB,gBAEhBC,EAAgB,gBAEhBC,EAAe,eAEfC,EAAkB,kBAElBC,EAAiB,iBAEjBC,EAAkB,kBAElBC,EAAiB,iBAEjBC,EAAoB,oBAEpBC,EAAmB,mBAEnBC,EAAkB,kBAElBC,EAAa,aAEbC,EAAa,aAEbC,EAAqB,qBAErBC,EAAe,eAEfC,EAAU,UAEVC,EAAU,UAEVC,EAAc,cAEdC,EAAgB,gBAEhBC,EAAkB,kBAElBC,EAAe,eAEfC,EAAW,WAEXt1C,EAAc,cAEdu1C,EAAc,cAEdC,EAAiB,iBAEjBC,EAAoB,oBAEpBC,EAAkB,kBAElBC,EAAY,YAEZC,EAAW,WAEXC,EAAW,WAEXC,EAAY,YAQZC,EAAoB,oBAEpBC,EAAc,cAEdC,EAAkB,kBAElBC,EAA0B,0BAE1BC,EAA2B,2BAE3BC,EAAc,cAEdC,EAAW,WAEXC,EAAa,aAEbt9C,EAAiB,iBAEjBu9C,EAAa,aAEbC,GAAc,cAEdC,GAAiB,iBAEjBC,GAAsB,sBAEtBC,GAAkB,kBAElBC,GAAmB,mBAEnBC,GAAoB,oBAEpBC,GAAe,eAEfC,GAAqB,qBASrBC,GAAc,eAEd7yF,GAAa,cAEbosB,GAAY,aAEZvpD,GAAe,gBAEfiwH,GAAW,YAEXrwH,GAAU,WAEVswH,GAAsB,wBAEtBC,GAAe,gBAEfC,GAAkB,mBAElBC,GAAkB,mBAIlBC,GAAe,kBAIfC,GAAe,mBAIfC,GAAiB,qBAIjBC,GAAiB,qBAIjBC,GAAkB,mBAIlBC,GAAyB,0BAIzBC,GAAgB,oBAIhBC,GAAkB,sBAElBC,GAAkB,mBAElBC,GAAwB,0BAExBC,GAAuB,yBAEvBC,GAAoB,qBAIpBC,GAAuB,cAQvBC,GAAwB,eAExBC,GAAoB,oBAEpBC,GAAc,cAEdC,GAAa,cAEbnlK,GAAQ,QAERziB,GAAU,UAEV6nL,GAA0B,yBAE1Bp+H,GAAS,SAETq+H,GAAqB,uBAErBplB,GAAwB,0BAIxBqlB,GAAY,aAEZplB,GAAc,eAEdqlB,GAAiB,mBAEjBC,GAAa,cAEbC,GAAqB,sBAErB19F,GAAkB,mBAIlB29F,GAAW,WAEXC,GAAiB,kBAEjBC,GAAW,YAEXC,GAAU,WAEVC,GAAiB,kBAEjBC,GAAa,cAUbC,GAAe,gBAIfC,GAAiB,kBAEjBltC,GAAe,gBAEfmtC,GAAgB,iBAEhBC,GAAa,cAEbC,GAAkB,oBAElB78C,GAAc,eAEd88C,GAAY,aAEZC,GAAoB,oBAEpBC,GAAsB,sBAEtBC,GAAqB,qBAErBC,GAA2B,2BAE3BC,GAAwB,wBAExBC,GAAuB,uBAcvBC,GAAe,eAMfC,GAAkB,kBAElBC,GAAiB,iBAEjBC,GAAa,aAEbC,GAAsB,sBAEtBC,GAAkB,oBAElBC,GAAuB,uBAEvBltK,GAAoB,oBAEpBmH,GAAgB,gBAEhBgmK,GAAgB,gBAEhBvgK,GAAiB,iBAEjBwgK,GAAwB,wBAExBC,GAAkB,kBAElBC,GAAoB,oBAEpBC,GAAa,cAEbjnB,GAAmB,mBAInBknB,GAAkB,kBAElBC,GAAc,cAEdC,GAAc,eAEdh7C,GAAkB,kBAElBh5E,GAAiB,iBAEjBi0H,GAAkB,kBAElBC,GAAgB,iBAEhBC,GAAqB,sBAErBC,GAAkB,mBAElBC,GAAqB,uBAErBC,GAAsB,sBAEtBC,GAAY,iBAEZC,GAAkB,YAElBC,GAAoB,sBAEpBC,GAAwB,yBAExBC,GAAiB,kBAEjBC,GAAyB,yBAEzBC,GAAmB,qBAEnBC,GAAkB,mBAElBC,GAAgB,oBAEhBC,GAAmB,uBAEnBC,GAAc,iBAEdC,GAAsB,2BAEtBC,GAAqB,8BAErBC,GAAkB,oBAIlBh8C,GAAe,gBAIfi8C,GAAuB,yBAIvBC,GAAmB,qBAEnBC,GAA+B,mCAE/BC,GAA2B,8BAE3BC,GAA0B,6BAE1BC,GAAoB,sBAEpBC,GAAsB,wBAEtBC,GAAY,aAEZC,GAA8B,kCAE9BC,GAAiB,mBAEjBC,GAA4B,+BAE5BC,GAAsB,wBAEtBhuD,GAAwB,0BAExBiuD,GAAoB,sBAEpBC,GAAmB,qBAEnBC,GAAwB,0BAExBC,GAAqB,uBAErBC,GAAmB,qBAEnBC,GAAsB,wBAEtBC,GAAkB,mBAIlBC,GAAoB,sBAEpBC,GAA8B,8BAE9BC,GAAuB,yBAEvBC,GAAe,gBAIfC,GAA8B,8BAE9BC,GAAgB,cAEhBC,GAAwB,2BAExBC,GAAgB,iBAEhBC,GAAyB,yBAEzBC,GAAkB,wBAElBC,GAAuB,yBAEvBC,GAA+B,kCAI/BC,GAAqB,uBAMrBC,GAA4B,gCAE5BC,GAAuB,yBAIvBC,GAAmB,qBAMnBC,GAA6B,gCAE7BC,GAAgB,kBAEhBC,GAAiC,qCAIjCC,GAAoB,sBAEpBjvC,GAA2B,kCAE3BI,GAA8B,qCAE9B8uC,GAAwB,0BAExBC,GAAoB,sBAEpBC,GAAoB,sBAEpBC,GAAsB,wBAEtBC,GAA2B,8BAE3BC,GAAgB,kBAEhBC,GAAkB,oBAElBC,GAAwB,2BAExBC,GAAsB,yBAItBC,GAAe,gBAEfC,GAAc,cAIdl8F,GAAY,aAEZm8F,GAAoB,sBAQpBC,GAA8B,iCAE9BC,GAA8B,iCAE9BC,GAAsB,wBAEtBC,GAAmB,qBAEnBC,GAAuB,yBAEvBC,GAAwB,0BAExBC,GAAkC,qCAElCC,GAA8B,gCAE9BC,GAA6B,iCAE7BC,GAA+B,+BAE/BC,GAAuB,uBAEvBC,GAAsB,iBAItBnuE,GAAwB,0BAExBouE,GAAwB,0BAExBn3E,GAA2B,8BAE3Bo3E,GAA+B,kCAE/BC,GAAmC,wC,kCC5jB9C,sIAiBIC,EAA+B,WAO/B,SAASA,EAActzK,EAAQC,GAC3B,IAAIxrB,EAAQrD,KACZA,KAAKm3B,KAAO,GACZn3B,KAAK+lH,WAAa,GAClB/lH,KAAKmiM,YAAc,GACnBniM,KAAKoiM,kBAAoB,GAEzBpiM,KAAKm1H,YAAc,GAEnBn1H,KAAK0/F,gBAAkB,GACvB1/F,KAAKqiM,UAAW,EAChBriM,KAAKuwF,KAAO,SAAUpjF,GAClB9J,EAAMurB,OAAOhV,OAAO,QAAmB,CAAEtZ,OAAQ6M,EAAE7M,OAAQkwF,eAAgBrjF,EAAEqjF,iBAC7E,gBAAOrjF,EAAEqjF,iBAEbxwF,KAAKsiM,cAAgB,GAErBtiM,KAAKilG,YAAc,GACnBjlG,KAAKuiM,kBAAoB,GACzBviM,KAAKwiM,gBAAkB,GACvBxiM,KAAKyiM,WAAY,EACjBziM,KAAK0iM,kBAAmB,EACxB1iM,KAAK2iM,eAAgB,EAErB3iM,KAAK4iM,eAAiB,GACtB5iM,KAAK6iM,YAAc,SAAU98K,GACzB,IAAI+8K,EAAM/8K,EACV,OAAO,WAEH,GADA1iB,EAAMotF,YAAY/rC,QAAQrhD,EAAM+tF,WAAWllF,cAAc,IAAM,SAAmB,IAC9E7I,EAAMurB,OAAOE,YAAjB,CAGA,IAAIqI,EAAO9zB,EAAM8zB,KAAKzpB,MAAM,GAC5B,GAAIrK,EAAMurB,OAAOiJ,wBAAyB,CACtC,GAAIx0B,EAAMurB,OAAO+D,cAAc6F,kBAC3B,IAAK,IAAIx3B,EAAI,EAAGA,EAAIqC,EAAM4hG,YAAYtkG,OAAQK,IAC1CqC,EAAM0/L,mBAAmB1/L,EAAM4hG,YAAYtzF,SAAS3Q,EAAE4Q,WAAY,KAAM5Q,GAGhFm2B,EAAO9zB,EAAMurB,OAAO6yD,gBACpB,IAAI43E,EAAWypC,EAAIzpC,SACnB,GAAIh2J,EAAMurB,OAAOorE,uBAAuBC,aAAeo/D,EAAU,CAC7D,IAAI2pC,EAAW3/L,EAAMurB,OAAOorE,uBAAuBipG,UACnD9rK,EAAO,GAGP,IAFA,IAAI4vF,EAAUp1G,SAAStO,EAAM6/L,YAAY,GAAGx4L,aAAa,iBAAkB,IAAM,EAC7Ey4L,EAAWh6L,KAAK2kC,KAAKi5E,EAAS1jH,EAAMurB,OAAOkJ,aAAaG,UAC5C8S,GAAP/pC,EAAI,EAAWmiM,GAAUniM,EAAIgiM,EAAUhiM,IAAK+pC,IAC7C1nC,EAAMi/L,cAAc3wL,SAASo5B,EAAMn5B,WAAY,OAC/CulB,EAAOA,EAAK8X,OAAO5rC,EAAMi/L,cAAc3wL,SAASo5B,EAAMn5B,WAAY,QAYlF,GAPAvO,EAAMurB,OAAOhV,OAAO,QAAqB,CAAEud,KAAMA,EAAMpR,KAAM+8K,IACzDz/L,EAAMurB,OAAOinB,SACbxyC,EAAMurB,OAAOwxE,uBAEZ/8F,EAAMurB,OAAO4rB,eACdn3C,EAAMurB,OAAO4xE,YAAYC,4BAEzBp9F,EAAMg/L,SAAU,CAChBh/L,EAAMurB,OAAO2J,iBAAkB,EAC3Bl1B,EAAMurB,OAAOiJ,yBAA2Bx0B,EAAMurB,OAAO+D,cAAc6F,mBAA0C,YAArBzS,EAAKgI,cAC7F1qB,EAAMurB,OAAOsJ,qBAAqB,2BAAwB3sB,GAE9D,IAAIu1E,EAAez9E,EAAMurB,OAAOmyD,eAAiB19E,EAAMurB,OAAOmyD,cAAcC,eACxE39E,EAAMurB,OAAOmyD,cAAcC,cAAc74E,QAC7C,IAAK9E,EAAMurB,OAAOzmB,SAAW24E,IAAiBz9E,EAAMurB,OAAOxrB,QAAQsf,iBAAiB,mBAAmB/hB,OAAQ,CAE3G,IAAIwgF,EAAY99E,EAChB89E,EAAUvyD,OAAOwyD,iBAAgB,WAC7BD,EAAUvyD,OAAO3mB,QAAQ,QAAkB,IAAI,WACvCk5E,EAAUvyD,OAAO20D,eACjBpC,EAAUvyD,OAAOhV,OAAO,QAAqB,CAAEsoG,KAAM,wBAMjE7+G,EAAMurB,OAAO3mB,QAAQ,QAAkB,IAAI,WACnC5E,EAAMurB,OAAO20D,eACblgF,EAAMurB,OAAOhV,OAAO,QAAqB,CAAEsoG,KAAM,gBAIzD7+G,EAAMurB,OAAO20D,eAAyC,SAAxBlgF,EAAMurB,OAAOvpB,SACvChC,EAAMurB,OAAOgwB,kBAAkBX,aAAe56C,EAAMurB,OAAOorB,aAAa1wC,aACxEjG,EAAMurB,OAAO46B,aAAa5O,aAG1Bv3C,EAAMurB,OAAO46B,aAAarO,iBAItC,GAAI2nJ,EAAK,CACL,IAAIniL,GAAUmiL,EAAI/0K,aAAe,IAAIlM,cAAgB,YACrDxe,EAAMurB,OAAOhV,OAAO+G,EAAQmiL,GACH,cAArB/8K,EAAKgI,cACLhI,EAAKtX,QAAS,EACdpL,EAAMurB,OAAO3mB,QAAQ,OAAuB8d,IAGhD1iB,EAAMg/L,UACNh/L,EAAMurB,OAAOyxE,iBAIzBrgG,KAAK4uB,OAASA,EACd5uB,KAAK6uB,eAAiBA,EACtB7uB,KAAK44C,aAAe/pB,EAAeuxD,WAAW,gBAC9CpgF,KAAKywF,YAAczwF,KAAK6uB,eAAeuxD,WAAW,eAClDpgF,KAAK4uB,OAAOg+E,kBAAoB5sG,KAAK4uB,OAAOiB,gBAAgByJ,WAC5Dt5B,KAAKojM,UAAYpjM,KAAKqjM,oBAClBrjM,KAAK4uB,OAAOE,cAGX9uB,KAAK4uB,OAAOqrB,4BAA+Bj6C,KAAK4uB,OAAO6D,sBACpDzyB,KAAK4uB,OAAO+D,cAAc6F,mBAC9Bx4B,KAAK4uB,OAAOG,GAAG,QAAgC/uB,KAAK0wF,WAAY1wF,MAEpEA,KAAK4uB,OAAOG,GAAG,QAAwB/uB,KAAKk5L,gBAAiBl5L,MAC7DA,KAAK4uB,OAAOG,GAAG,QAAiB/uB,KAAKskK,kBAAmBtkK,MACxDA,KAAK4uB,OAAOG,GAAG,QAAkC/uB,KAAK08F,mBAAoB18F,MAC1EA,KAAK4uB,OAAOG,GAAG,OAA0B/uB,KAAKk6L,kBAAmBl6L,MACjEA,KAAK4uB,OAAOG,GAAG,QAAgB/uB,KAAKi2F,iBAAkBj2F,OA49B1D,OA19BAkiM,EAAchiM,UAAUg6L,kBAAoB,SAAU/sL,IAC9CA,EAAEy1I,OAA+B,YAArBz1I,EAAEk1I,QAAQ1hI,QAA6C,cAArBxT,EAAEk1I,QAAQ1hI,OAIxD3gB,KAAKsjM,gBAAa/3L,EAHlBvL,KAAKsjM,WAAan2L,EAAEk1I,QAAQ1hI,QAWpCuhL,EAAchiM,UAAU4wF,YAAc,WAClC,IAAIx+D,EAAOtyB,KAAK4uB,OACZ2vB,EAAMv+C,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,IAAM,QAClD,GAAIqyC,EAGA,OAFAv+C,KAAKywF,YAAYtsC,WAAWnkD,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,IAAM,QAAmB,CAAE04C,MAAM,SAC/F5kD,KAAKkxF,SAAS3yC,GAGlBA,EAAMv+C,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,SACpD,IAAIwsF,EAAWhxF,KAAK4uB,OAAOrqB,cAAc,MAAO,CAC5CC,UAAW,SAEfxE,KAAKywF,YAAYtsC,WAAW6sC,EAAU,CAAEpsC,MAAM,IAC1C5kD,KAAK4uB,OAAOqrB,4BAA8Bj6C,KAAK4uB,OAAOsrB,iBACtDl6C,KAAKujM,0BAA0BhlJ,GAC/ByyC,EAAS9rF,UAAU4G,IAAI,sBAE3ByyC,EAAI75C,YAAYssF,GAChBhxF,KAAKkxF,SAAS3yC,GACdjsB,EAAKlvB,QAAQsB,YAAY65C,IAE7B2jJ,EAAchiM,UAAUqjM,0BAA4B,SAAUngM,GAC1D,IAAIwrB,EAAS5uB,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,uBACvDowJ,EAAQ50J,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,mBACtDg/L,EAAkB,iBAAoB5xL,WAC1C5R,KAAKyjM,mBAAmB7uC,EAAO4uC,GAC/BxjM,KAAKyjM,mBAAmB70K,EAAQ40K,GAChC50K,EAAOlqB,YAAYkwJ,GACnBxxJ,EAAQsB,YAAYkqB,IAExBszK,EAAchiM,UAAUujM,mBAAqB,SAAUn2K,EAAKjoB,GACxDioB,EAAIvmB,MAAM2mD,UAAYroD,EAAS,KAC/BioB,EAAIvmB,MAAM8qD,UAAYxsD,EAAS,MAOnC68L,EAAchiM,UAAUixF,YAAc,WAClC,IAAIrnB,EAAa9pE,KAAKoxF,WAClBsyG,EAAe55H,EAAW59D,cAAc,mBACxCy3L,EAAe75H,EAAW59D,cAAc,oBACxClM,KAAK4uB,OAAO6D,sBAAyB,eAAkBixK,IAAkB,eAAkBC,KAC3F,gBAAOD,GACP,gBAAOC,IAEX75H,EAAWplE,YAAY1E,KAAK4jM,mBAAmB,mBAC/C5jM,KAAKsxF,SAASxnB,EAAW59D,cAAc,IAAM,SACF,aAAvClM,KAAK4uB,OAAOk0D,kBAAkBt0E,MAC9BxO,KAAKywF,YAAYtsC,WAAWnkD,KAAK4uB,OAAOxrB,QAAS,CAC7CiiD,iBAAiB,IAGzBrlD,KAAK6jM,wBACD7jM,KAAK4uB,OAAOwrB,YACZp6C,KAAK4uB,OAAOyrB,mBAAmBn1C,UAAU4G,IAAI,gBAUrDo2L,EAAchiM,UAAU0jM,mBAAqB,SAAUt4L,GACnD,IAAI0lF,EAAWhxF,KAAKoxF,WAAW3vE,kBAC3BzhB,KAAK2xF,YACL,gBAAO3xF,KAAK2xF,YAEhB,IAAI3vD,EAAQgvD,EAAS9kF,cAAc,IAAM,QAAkB8kF,EAAS9kF,cAAc,IAAM,QACpFlM,KAAK4uB,OAAOrqB,cAAc,QAAS,CAC/BC,UAAW,OAAgBwK,MAAO,CAC9BqjF,YAAa,SAAUpjF,KAAM,eAC7B3D,GAAItL,KAAK4uB,OAAOxrB,QAAQkI,GAAKA,KAOzC,OAJAtL,KAAK+xF,YAAY/xF,KAAK4uB,OAAO8kE,iBAAiBxnF,cAAc,QAAmBwb,WAAU,IACzFsa,EAAMt9B,YAAY1E,KAAK6xF,eACvB7vD,EAAMt9B,YAAY1E,KAAK4uB,OAAOrqB,cAAc,OAAgB,CAAEyK,MAAO,CAAEC,KAAM,eAC7E+hF,EAAStsF,YAAYs9B,GACdgvD,GASXkxG,EAAchiM,UAAUw8F,mBAAqB,SAAU32E,GACnD,IAAI1iB,EAAQrD,UACC,IAAT+lB,IAAmBA,EAAO,IAC9B,IAAIuM,EAAOtyB,KAAK4uB,OAChB,GAAoC,IAAhC0D,EAAK8pE,gBAAgBz7F,OAAzB,CAGI2xB,EAAKuzC,cAAgBvzC,EAAKq1E,YAAyC,UAA3Br1E,EAAKuzC,aAAaihC,MAAoBx0E,EAAKq1E,WAAWuxC,UACnD,IAAxC5mH,EAAKuzC,aAAa8mF,mBACrBr6H,EAAKq1E,WAAW62C,cAEpB,IAAIpvH,EAAapvB,KAAK8jM,oBAAsBxxK,EAAK8pE,gBAC7Cj0F,EAAUmqB,EAAKnqB,UAAY,eAAkBmqB,EAAK4sD,aAClDy3E,EAAOxuJ,EAAUmqB,EAAK/tB,cAAc,OAAgB,CAAEyK,MAAO,CAAEC,KAAM,cAAkBrB,SAASgpJ,yBAC/F52J,KAAK+jM,qBACN/jM,KAAK+jM,mBAAqB,eAAO,GAAI30K,IAEzC,IACI40K,EACAC,EAFAC,EAAU/7L,EAAUmqB,EAAK/tB,cAAc,OAAgB,CAAEyK,MAAO,CAAEC,KAAM,cAAkBrB,SAASgpJ,yBAGnGtkI,EAAKnqB,SAAWmqB,EAAK4sD,cACrB8kH,EAAUrtC,EACVstC,EAAaC,GAEjB,IACI5kH,EACAwmC,EACAq+E,EAQAC,EACAhyG,EAZAjjE,EAAUmD,EAAKoE,aAIfW,EAAM,IAAI,OAAYr3B,KAAK6uB,eAAgB,KAAM7uB,KAAK4uB,QACtDomJ,EAAmBh1K,KAAK4uB,OAAOiJ,yBACP,mBAArB9R,EAAKgI,YACZuE,EAAK1Y,OAAO,QAAyB,IACrC5Z,KAAKkjM,YAAc,GACnBljM,KAAKm3B,KAAO,GACZn3B,KAAK4iM,eAAiB,GAGtB,IAOI1mE,EAPAmoE,KAAmBrkM,KAAK4uB,OAAOwrB,aAAcp6C,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,QAC/E,gBAAgB2xB,IACZ,CAAC,UAAW,YAAa,YAAa,WAAY,aAAc,UAAW,OAAQ,UAClF0H,MAAK,SAAUvhB,GAAS,OAAOsN,EAAKgI,cAAgBtV,MACrDzY,KAAKolG,cAIb82B,EAAYl8H,KAAKskM,WAAWpoE,EAAWn2G,GAClC/lB,KAAKyiM,WAAcziM,KAAK2iM,gBACzBzmE,EAAYl8H,KAAKojM,UAAU9iJ,aAAalxB,EAAYrJ,IAExD/lB,KAAKw/L,cAActjE,EAAWn2G,GAC9B/lB,KAAK4uB,OAAOhV,OAAO,QAAyB,CAAEo7J,iBAAkBA,EAAkB94C,UAAWA,EAAWn2G,KAAMA,IAC9G,IAAIw+K,GAAe,EAEnB,IAA2B,mBAArBx+K,EAAKgI,aAAqC/tB,KAAK4uB,OAAOorE,uBAAuBC,cAAgBj6F,KAAK4uB,OAAOkrC,oBACxG95D,KAAK4uB,OAAOkrC,mBAAmBljB,WAAa7wB,EAAKw3B,WAAagnJ,EAAc,CAE/E,IADA,IAAIC,EAAkB,GACbxjM,EAAI,EAAGA,EAAIhB,KAAK4uB,OAAOkrC,mBAAmBljB,SAASj2C,OAAQK,IAChE,IAAK,IAAIs2B,EAAI,EAAGA,EAAIt3B,KAAK4uB,OAAOkrC,mBAAmBljB,SAAS51C,GAAGi5D,UAAUt5D,OAAQ22B,IACzE,eAAkBt3B,KAAK4uB,OAAOkrC,mBAAmBljB,SAAS51C,GAAGi5D,UAAU3iC,GAAGmc,aAC1E+wJ,EAAgBn4L,KAAKrM,KAAK4uB,OAAOkrC,mBAAmBljB,SAAS51C,IAKzEhB,KAAK4uB,OAAOkxE,gBAAgB,CAAC,YAAa0kG,GAE9C,IAAKxkM,KAAK4uB,OAAOzmB,SAAWnI,KAAK4uB,OAAOuH,SAAiC,mBAArBpQ,EAAKgI,aAAqC/tB,KAAK4uB,OAAOorE,uBAAuBC,eAAiBl0E,EAAKw3B,SAAU,CAC7J,IAAIknJ,EAAY,CACZzkM,KAAK4uB,OAAOuH,MAAQ,WAAa,iBAAkB,cAAe,iBAClE,kBAAmB,mBAAoB,sBAAuB,wBAEzC,mBAArBpQ,EAAKgI,aAAoC/tB,KAAK4uB,OAAOorE,uBAAuBC,cAC5EwqG,EAAY,CACRzkM,KAAK4uB,OAAOuH,MAAQ,WAAa,iBAAkB,qBAG3D,eAAuBn2B,KAAK4uB,OAAQ61K,GAExC,GAAIzkM,KAAK4uB,OAAOqrB,2BAA4B,CACxC,IAAI8nC,EAAY,IAAI,OAAgB/hF,KAAK6uB,eAAgB7uB,KAAK4uB,QAC9DmzD,EAAU2iH,mBAAmBxoE,GAEjCl8H,KAAKoyC,MAAQpyC,KAAK2xF,WAAWzlF,cAAc,QAC3C,IAAI44E,EAAa,EACb6/G,GAAY,EAChB,GAAI,gBAAgBryK,IAASA,EAAKi6E,OAAO5rG,OAAQ,CAC7C,IAAI0+C,EAAQ,MACRpuC,EAAa,eAAkB8U,EAAKu3E,YAAYsnG,SAC9C,eAAkB7+K,EAAK9U,WAA0C,EAA7B8U,EAAK9U,UAAU,GAAKouC,GADCt5B,EAAKu3E,YAAYsnG,QAAQ7/L,IAExF,GAAkB,IAAdkM,EAAiB,CAIjB,IAHA,IAAI4zL,EAAYvyK,EAAKk6E,cACjBs4F,EAAQxyK,EAAKwF,aAAaG,SAAW,EACrCyO,EAASjnC,OAAO2V,KAAKyvL,GAAWh+L,KAAI,SAAUtG,GAAO,OAAOskM,EAAU,GAAKtkM,MACtEgoG,EAAI,EAAGA,EAAI7hE,EAAO/lC,OAAQ4nG,IAC/B,GAAIt3F,EAAYy1B,EAAO/0B,SAAS42F,EAAE32F,WAAY,KAAM,CAChD,GAAK,eAAkBmU,EAAKu3E,cAA+C,OAA/Bv3E,EAAKu3E,YAAY54E,UAIxD,CACDogE,EAAayjB,EAAIu8F,GACb9kM,KAAK4uB,OAAO4tE,cAAcuoG,WAAWx8F,IAAMvoG,KAAK4uB,OAAO4tE,cAAcuoG,WAAWx8F,EAAI,MACpFxiF,EAAKu3E,YAAY0nG,aAAe,CAACz8F,EAAGA,EAAI,IAE5C,MARAzjB,EAAayjB,EAAI,GAAMA,EAAI,GAAKu8F,EAAUv8F,EAAIu8F,EAC9C,MAWR37L,KAAKC,MAAM6H,EAAYjR,KAAKilM,aAAaxjL,kBAAkBhY,eAC3DzJ,KAAKilM,aAAaxjL,kBAAkBw8B,eAAiBl4B,EAAK6iG,YAC1D+7E,GAAY,IAIxB,IAAIO,EAAiB5yK,EAAK8nB,YAAcp6C,KAAK4uB,OAAO6D,sBACxB,YAArB1M,EAAKgI,YACZ,GAAKuE,EAAK8nB,YAAmC,kBAArBr0B,EAAKgI,aAA0E,MAAvChI,EAAKu3E,YAAYC,aAAaC,MAAiB0nG,EAAgB,CAC3H,IAAIC,EAASp/K,EAAKu3E,YAAY0nG,aAC1B7sK,EAAOpS,EAAKu3E,YAAYnlE,KAC5BpS,EAAKu3E,YAAY0nG,aAAe,CAAC,EAAG,GAChCE,IACAn/K,EAAKu3E,YAAYnlE,KAAO,GAE5B,IAAItM,EAAOq5K,EAAiBllM,KAAK+jM,mBAAqB30K,EAClDg2K,EAAWplM,KAAKqlM,WACf/kJ,aAAaz0B,EAAM9F,GACxBq/K,EAAS14L,OAAO1M,KAAK4uB,OAAOwrB,YAC5B,IAASp5C,EAAI,EAAGA,EAAIhB,KAAK4uB,OAAOwrB,WAAYp5C,IAExCs+E,EAAKjoD,EAAI1jB,OAAOyxL,EAASzzL,SAAS3Q,EAAE4Q,WAAY,KAAMud,GACtD,eAAqBmwD,GACrB4kH,EAAQx/L,YAAY46E,GAExBv5D,EAAKu3E,YAAY0nG,aAAeG,EAChCp/K,EAAKu3E,YAAYnlE,KAAOA,EACpB+sK,GAA4C,IAA1Bn/K,EAAKu3E,YAAYnlE,MACnC+jG,EAAUxvH,OAAO,EAAG1M,KAAK4uB,OAAOwrB,YAGxCp6C,KAAKslM,wBAAwBpB,EAAShoE,EAAW7kG,EAAKtR,EAAMqJ,EAAYD,GACpEnvB,KAAK4uB,OAAO+D,cAAc6F,oBAAsBx4B,KAAK2iM,eAAiB3iM,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,UACvGX,KAAK4uB,OAAO6D,qBAAuBzyB,KAAK4uB,OAAO2tE,eAC5Cv8F,KAAK4uB,OAAO4tE,eAAe+oG,WAAWvlM,KAAK4uB,OAAOkJ,aAAaC,aAAe,IAElF/3B,KAAK4uB,OAAOiJ,yBAA2B73B,KAAK4uB,OAAO+D,cAAc6F,mBAA0C,WAArBzS,EAAKgI,cAC3F/tB,KAAKilG,YAAc,IAgHvB,IA9GA,IAAIt0E,EAAU,SAAU3vB,EAAGiiB,GAEvB,GADA4N,EAAOsG,KAAK9qB,KAAK6vH,EAAUvqH,SAAS3Q,EAAE4Q,WAAY,MAC9Cif,EAAOjC,OAAO+D,cAAc6F,oBAAsB3H,EAAO8xK,eAAiB9xK,EAAOjC,OAAO+D,cAAcxD,QAAQxuB,UAC7GkwB,EAAOjC,OAAO6D,qBAAuB5B,EAAOjC,OAAO2tE,eAChD1rE,EAAOjC,OAAO4tE,eAAe+oG,WAAW10K,EAAOjC,OAAOkJ,aAAaC,aAAa1rB,KAAK6vH,EAAUvqH,SAAS3Q,EAAE4Q,WAAY,MAC1Hif,EAAOkyK,mBAAmB7mE,EAAUvqH,SAAS3Q,EAAE4Q,WAAY,KAAM5Q,GAC7D,eAAkBk7H,EAAUvqH,SAAS3Q,EAAE4Q,WAAY,KAAKkwC,SACxD,MAAO,WAIf,GADAjxB,EAAO20K,uBAAuBz/K,EAAMm2G,EAAUvqH,SAAS3Q,EAAE4Q,WAAY,MACjE,gBAAgB0gB,IAASvM,EAAKu3E,aAAev3E,EAAKu3E,YAAY0nG,cAC1Dn0K,EAAOqyK,YAAYviM,QAAWolB,EAAKu3E,YAAY0nG,aAAarkM,OAASkwB,EAAOjC,OAAO4tE,cAAcipG,gBAClGd,EAEH,OADA9zK,EAAOjC,OAAOwtE,gBAAgB,WAAavrE,EAAOsG,KAAKtwB,KAAI,SAAU0hG,GAAK,OAAOA,EAAE18E,QAC5E,QAEX,GAAKyG,EAAK4sD,YAmBL,CACD,IAAIwmH,EAAgBpzK,EAAKlvB,QAAQkI,GAAK,cAClCw/B,OAAW,EACf,GAAIxY,EAAKnqB,QAAS,CACd,IAAIq0C,EAAWlqB,EAAK8nB,YAAcp5C,EAAIsxB,EAAK8nB,WACvCi+C,EAAS,eAAO,CAAE5rF,MAAOzL,GAAKouB,EAAWzd,SAAS3Q,EAAE4Q,WAAY,MAEpE,GADA0gB,EAAK82F,gBAAL92F,CAAsB+lE,EAAQ/lE,EAAM,cAAeozK,EAAe,KAAM,KAAMlpJ,EAAW0nJ,EAAUvtC,GAC/FrkI,EAAK2uD,mBAAoB,CAEzB,IAAI0B,EAAY9xD,EAuBhB,OAtBA8xD,EAAU/zD,OAAOwyD,iBAAgB,WACzB9uD,EAAK8nB,YAAcp5C,EAAIsxB,EAAK8nB,WAC5BklC,EAAK2kH,EAAWnvJ,WAAWnjC,SAAS3Q,EAAE4Q,WAAY,KAGlDuyL,EAAYH,EAAQlvJ,WAAWnjC,SAAS3Q,EAAE4Q,WAAY,KAE1D,IAAIkxL,EAAM,CAAEj3K,KAAMqwG,EAAUvqH,SAAS3Q,EAAE4Q,WAAY,KAAKia,KACpDwL,IAAK8sK,GAAwB7kH,GACjCqD,EAAU/zD,OAAO3mB,QAAQ,QAAqB66L,IAC1C5mE,EAAUvqH,SAAS3Q,EAAE4Q,WAAY,KAAKkuE,WAAc6C,EAAU/zD,OAAO6D,sBACrEkwD,EAAU/zD,OAAO+D,cAAc6F,oBAC/BmqD,EAAUugH,YAAY72L,KAAKizE,GAE/BqD,EAAU8N,YAAYtsC,WAAWw+B,EAAU/zD,OAAOxrB,QAAS,CACvDmiD,SAAUjzB,EAAKoE,aAAa/1B,OAAOiR,aAEnC5Q,IAAMk7H,EAAUv7H,OAAS,IACzBqjM,EAAU,KACVC,EAAa,SAGd,iBAIXn5J,EAAWxY,EAAK82F,gBAAL92F,CAAsB,eAAO,CAAE7lB,MAAOzL,GAAKouB,EAAWzd,SAAS3Q,EAAE4Q,WAAY,MAAO0gB,EAAM,cAAeozK,OAAen6L,OAAWA,OAAWA,EAAWslB,EAAOjC,OAAO,SAEtL,GAAK0D,EAAKnqB,SAAmC,UAAxB2iC,EAAS,GAAGp7B,QAezB4iB,EAAK8nB,YAAcp5C,EAAIsxB,EAAK8nB,WAC5BklC,EAAMhtD,EAAKnqB,QAA8C+7L,EAAQp7I,iBAA5C,eAAeo7I,EAASp5J,IAIxCxY,EAAKnqB,UACNm3E,EAAK,eAAeq3E,EAAM7rH,IAE9Bq5J,EAAY7xK,EAAKnqB,QAAUwuJ,EAAK7tG,iBAAmBw2B,EAAGx2B,sBAvBR,CAClD,IAAK,IAAIxxB,EAAI,EAAGA,EAAIwT,EAASnqC,OAAQ22B,IAAK,CACtC,IAAIquK,EAAuE,OAAhE76J,EAASn5B,SAAS2lB,EAAE1lB,WAAY,KAAKquH,SAASp+G,eACrD8jL,GAAS76J,EAASn5B,SAAS2lB,EAAE1lB,WAAY,KAAK8Q,kBAAoBooB,EAASn5B,SAAS2lB,EAAE1lB,WAAY,KAAK8Q,iBAAiB,MAAM/hB,UAC9H2+E,EAAKqmH,EAAO76J,EAASn5B,SAAS2lB,EAAE1lB,WAAY,KAAOk5B,EAASn5B,SAAS2lB,EAAE1lB,WAAY,KAAK1F,cAAc,OAG1GomB,EAAK8nB,YAAcp5C,EAAIsxB,EAAK8nB,WAC5B8pJ,EAAQx/L,YAAY46E,GAGpBq3E,EAAKjyJ,YAAY46E,GAezB,IAAIwjH,EAAM,CAAEj3K,KAAMqwG,EAAUvqH,SAAS3Q,EAAE4Q,WAAY,KAAKia,KAAMwL,IAAK8sK,GAAwB7kH,GAC3FzuD,EAAOjC,OAAO3mB,QAAQ,QAAqB66L,OApFxB,CACnBxjH,EAAKjoD,EAAI1jB,OAAOuoH,EAAUvqH,SAAS3Q,EAAE4Q,WAAY,KAAMud,GACvD,eAAqBmwD,GACrB,IAAIsmH,EAAc/0K,EAAOg1K,yBAAyB9/K,GAC9CuM,EAAK8nB,aAAep5C,EAAIsxB,EAAK8nB,YAAciqJ,KAAsBrvB,GAAyC,kBAArBjvJ,EAAKgI,aAAmC63K,GAC1H/0K,EAAOi1K,gCAAgC//K,GAC1Cm+K,EAAQx/L,YAAY46E,GAGpBq3E,EAAKjyJ,YAAY46E,GAErB,IAAIynC,EAASp1G,SAAS2tE,EAAG50E,aAAa,iBAAkB,IACpDq8G,EAAS,IAAMz0F,EAAK8nB,aACpBiqJ,GAAmB,GAEnBnoE,EAAUvqH,SAAS3Q,EAAE4Q,WAAY,KAAK6uE,UACtCnuD,EAAK1Y,OAAO,QAAwB0lE,EAAG79B,MAAMnvB,EAAKK,cAAcxD,QAAQxuB,UAsE5Eu7H,EAAUvqH,SAAS3Q,EAAE4Q,WAAY,KAAKkuE,WAAcjvD,EAAOjC,OAAO6D,sBAClE5B,EAAOjC,OAAO+D,cAAc6F,oBAC5B3H,EAAOqyK,YAAY72L,KAAKizE,GAE5BzuD,EAAO4/D,YAAYtsC,WAAWtzB,EAAOjC,OAAOxrB,QAAS,CAAEmiD,SAAUjzB,EAAKoE,aAAa/1B,OAAOiR,cAE1Fif,EAAS7wB,KACYijB,GAAhBjiB,EAAI8jF,EAAkBo3C,EAAUv7H,QAAQK,EAAIiiB,EAAKjiB,IAAK,CAC3D,IAAI+0D,EAAUplC,EAAQ3vB,EAAGiiB,GACzB,GAAgB,UAAZ8yC,EACA,MAER,IAAI+qB,EAAexuD,EAAKyuD,eAAiBzuD,EAAKyuD,cAAcC,eAAiB1uD,EAAKyuD,cAAcC,cAAc74E,QAgB9G,IAfKmqB,EAAKnqB,UAAW24E,GAAkBxuD,EAAK2uD,oBACxC3uD,EAAK8uD,kBAELphF,KAAK4uB,OAAOiJ,yBAA2B73B,KAAK4uB,OAAO+D,cAAc6F,oBACjEx4B,KAAK4uB,OAAO4tE,cAAc+oG,WAAWvlM,KAAK4uB,OAAOkJ,aAAaC,aAC1D/3B,KAAK4uB,OAAO4tE,cAAc,cAAcx8F,KAAK4uB,OAAOkJ,aAAaC,cAErE/3B,KAAK4uB,OAAO+D,cAAc6F,oBAAsBx4B,KAAK2iM,eAAiB3iM,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,QACxGX,KAAK4uB,OAAOhV,OAAO,QAAiC,CAChDud,MAAOn3B,KAAK4uB,OAAO6D,qBAAuBzyB,KAAK4uB,OAAO2tE,eAClDv8F,KAAK4uB,OAAO4tE,eAAe+oG,WAAWvlM,KAAK4uB,OAAOkJ,aAAaC,eAG3EzF,EAAKstE,gBACL5/F,KAAK4uB,OAAOhV,OAAO,qBAAsB,CAAEmU,YAAa,gBACnDuE,EAAK8nB,YAAmC,kBAArBr0B,EAAKgI,cAAoCinJ,GAAoBh1K,KAAK8lM,gCAAgC//K,IAC7F,kBAArBA,EAAKgI,aAAmChI,EAAKu3E,YAAYC,cAAuD,MAAvCx3E,EAAKu3E,YAAYC,aAAaC,KAAe,CAE1H,GADAsoB,EAAWxzF,EAAKohE,iBAAiBxnF,cAAc,QAC3C/D,EAAS,CACT,IAAIwoL,EAAc7qE,EAASnkG,cAC3B,gBAAOmkG,GACP6qE,EAAYjsL,YAAYw/L,QAGxBp+E,EAASh7G,UAAY,GACrBg7G,EAASphH,YAAYw/L,GAEpB5xK,EAAKkoB,eACNloB,EAAKk3B,aAAa1P,YAM1B/zB,EAAKoR,KAAOn3B,KAAKm3B,KAAKzpB,MAAM,GAC5B,gBAAkB,WACdrK,EAAMurB,OAAOhV,OAAO,OAAyBmM,GACxC1iB,EAAMurB,OAAO6D,sBAAyBpvB,EAAMurB,OAAOqrB,4BAA+B+6H,IAC9E1iJ,EAAKnqB,UACN9E,EAAM+uC,MAAMtnC,UAAY,IAEvB,eAAkBzH,EAAM+uC,MAAMzwB,eAI/B,gBAAO2Q,EAAKssB,kBAAkB1yC,cAAc,SAH5C,gBAAO7I,EAAM+uC,OAKjB/uC,EAAM+uC,MAAQ/uC,EAAMurB,OAAOrqB,cAAc,OAAgB,CAAEyK,MAAO,CAAEC,KAAM,eAE1EqjB,EAAK4sD,aACL,gBAAqB5sD,EAAKlvB,QAAQkI,GAAK,cAAe,cAAegnB,IAEpE,eAAkBjvB,EAAMurB,OAAOsJ,uBAAyB70B,EAAMurB,OAAOiJ,yBACtEx0B,EAAMo/L,WAAY,EAClBp/L,EAAMurB,OAAOhV,OAAO,QAA2B,CAAEmM,KAAMA,IACvD1iB,EAAMurB,OAAOhV,OAAO,OAA8B,CAC9Cw4B,MAAOgyJ,GAAc/gM,EAAM+uC,MAAOukH,KAAMA,EAAM5wI,KAAMA,EAAMoR,KAAM9zB,EAAM8zB,KACtE+rK,YAAa7/L,EAAM6/L,YAAaj+F,YAAa5hG,EAAM4hG,YACnD7S,UAAWA,MAIf/uF,EAAMs/L,eAAgB,EACtBt/L,EAAMkyF,cAAclyF,EAAM+uC,MAAOukH,EAAM5wI,IAEvC1iB,EAAMurB,OAAOkuB,8BAAgCz5C,EAAMurB,OAAOorB,cAAgB,eAAe32C,EAAMurB,QAAU,GACzGvrB,EAAMurB,OAAOxrB,QAAQ8B,UAAU4G,IAAI,kBAEvC6qJ,EAAO,OACR32J,KAAK6iM,YAAY,eAAO,GAAI98K,OAEnCm8K,EAAchiM,UAAUklG,YAAc,WAClCplG,KAAK4uB,OAAO29E,OAAS,GACrBvsG,KAAK4uB,OAAO09E,MAAQ,IAGxB41F,EAAchiM,UAAUq1F,cAAgB,SAAUnjD,EAAOukH,EAAM5wI,EAAMqsE,GACjE,IAAIjqF,EAAUnI,KAAK4uB,OAAOzmB,UAAY,eAAkBnI,KAAK4uB,OAAOswD,aAQpE,GAPI/2E,EACAnI,KAAK2xF,WAAWjtF,YAAYiyJ,IAG5BvkH,EAAM1tC,YAAYiyJ,GAClB32J,KAAK2xF,WAAWjtF,YAAY0tC,IAEK,aAAjCpyC,KAAK4uB,OAAO00D,kBAAmCtjF,KAAK4uB,OAAO20D,gBAA4D,WAA1CvjF,KAAK4uB,OAAO40D,iBAAiBC,UAC7D,SAA1CzjF,KAAK4uB,OAAO40D,iBAAiBC,UAEhC,IADA,IAAIhiC,EAAQrP,EAAM1vB,iBAAiB,MAC1B1hB,EAAI,EAAGA,EAAIygD,EAAM9gD,OAAQK,IAAK,CACnC,IAAI+kM,EAAmBj/L,WAAW8G,SAASowC,YAAYx3C,iBAAiBi7C,EAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAM,YAAYlL,iBAAiB,WACpIs/L,EAAavkJ,EAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKnI,aAC/Cs8L,EAAmBC,IACnBvkJ,EAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAK7K,MAAM1B,OAAS0gM,EAAmB,KACpEtkJ,EAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAK7K,MAAMk/L,UAAY,eAI5DjmM,KAAK4uB,OAAOguB,6BAA+B58C,KAAK4uB,OAAOqrB,4BACvDj6C,KAAK44C,aAAay2E,0BAG1B6yE,EAAchiM,UAAU6iM,mBAAqB,SAAU1rK,EAAK5qB,GACpDzM,KAAK4uB,OAAO+D,cAAc6F,oBAAsBx4B,KAAK2iM,eAAiB3iM,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,SACvGX,KAAK4uB,OAAO6D,qBAAuBzyB,KAAK4uB,OAAO2tE,eAC5Cv8F,KAAK4uB,OAAO4tE,eAAe0pG,aAAa7uK,EAAK5qB,IAGzDy1L,EAAchiM,UAAUs/L,cAAgB,SAAU3zK,EAAM9F,IAC/C/lB,KAAK2iM,eAAiB3iM,KAAK4uB,OAAO+D,cAAc6F,mBACjDx4B,KAAK4uB,OAAOhV,OAAO,QAAsB,CAAEmM,KAAMA,EAAM8F,KAAMA,KAGrEq2K,EAAchiM,UAAU2lM,yBAA2B,SAAU9/K,GACzD,QAAU/lB,KAAK4uB,OAAO6D,uBACO,YAArB1M,EAAKgI,aAAkD,YAArBhI,EAAKgI,cAAgC/tB,KAAK4uB,OAAOorE,uBAAuBC,aAC3Gj6F,KAAK4uB,OAAOwrB,YAA+D,WAAjDp6C,KAAK4uB,OAAOsJ,qBAAqBnK,aAClB,IAAzC/tB,KAAK4uB,OAAOkJ,aAAaC,cAEpCmqK,EAAchiM,UAAU4lM,gCAAkC,SAAU//K,GAChE,QAAS/lB,KAAK4uB,OAAO6D,sBAA6C,WAArB1M,EAAKgI,cAEtDm0K,EAAchiM,UAAUokM,WAAa,SAAUpoE,EAAWn2G,GACtD,GAAI/lB,KAAK4uB,OAAOorE,uBAAuBC,aAAoC,mBAArBl0E,EAAKgI,YAAkC,CAEzF,GADA/tB,KAAKyiM,WAAa,eAAkBziM,KAAKsiM,cAActiM,KAAK4uB,OAAOkJ,aAAaC,cAC5E/3B,KAAKyiM,UAAW,CAChB,IAAI52K,EAAO7rB,KAAKsiM,cAActiM,KAAK4uB,OAAOkJ,aAAaC,aACvDmkG,EAAqD,IAAzCl8H,KAAK4uB,OAAOkJ,aAAaC,YAAoBlM,EAAKne,MAAM1N,KAAK4uB,OAAOwrB,YAAcvuB,EAElG,OAAOqwG,EAEX,OAAIl8H,KAAK4uB,OAAO+D,cAAc6F,mBAAqBx4B,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,SAAgC,WAArBolB,EAAKgI,aACzE,gBAArBhI,EAAKgI,aAAsD,YAArBhI,EAAKgI,aAAkD,kBAArBhI,EAAKgI,eAC5E/tB,KAAK4uB,OAAO6D,qBAAuBzyB,KAAK4uB,OAAO2tE,eAC/Cv8F,KAAK4uB,OAAO4tE,eAAeC,gBAAgBz8F,KAAK4uB,OAAOkJ,aAAaC,cACnE/3B,KAAK4uB,OAAO6D,uBACbzyB,KAAK2iM,eAAgB,GAElB3iM,KAAK4uB,OAAO6D,qBAAuBzyB,KAAK4uB,OAAO6yD,gBAClDzhF,KAAK4uB,OAAO4tE,cAAc2pG,iBAAsC,YAArBpgL,EAAKgI,cAEjD,MAEXm0K,EAAchiM,UAAUslM,uBAAyB,SAAUz/K,EAAM8F,GACzD7rB,KAAK4uB,OAAOiJ,0BAA4B73B,KAAK4uB,OAAOorE,uBAAuBC,cACtEj6F,KAAK4uB,OAAOorE,uBAAuBC,aACpCj6F,KAAKilG,YAAY54F,KAAKwf,KAIlCq2K,EAAchiM,UAAUkmM,+BAAiC,WACrD,IAAIv6K,EAAO,GACX,GAAI7rB,KAAK4uB,OAAOorE,uBAAuBC,YAAa,CAChD,IAAKx6F,OAAO2V,KAAKpV,KAAKsiM,eAAe3hM,OACjC,MAAO,GAEX,IAAIw2B,EAAOn3B,KAAK4uB,OAAOojE,UACnBvlF,EAAQkF,SAASwlB,EAAKn3B,KAAK4uB,OAAOwrB,YAAY1vC,aAAa,QAAwB,IACnF4qI,EAAQnsI,KAAK2kC,MAAMrhC,EAAQ,GAAKzM,KAAK4uB,OAAOkJ,aAAaG,UAC7DxrB,EAAQkF,SAASwlB,EAAKA,EAAKx2B,OAAS,GAAG+J,aAAa,QAAwB,IAE5E,IADA,IAAI+sJ,EAAOtuJ,KAAK2kC,MAAMrhC,GAAS0qB,EAAKx2B,OAAS,EAAI,IAAMX,KAAK4uB,OAAOkJ,aAAaG,UACvEj3B,EAAIs0I,EAAOt0I,GAAKy2J,EAAMz2J,IAC3B6qB,EAAQA,EAAKlrB,OACPkrB,EAAKojB,OAAOjvC,KAAKsiM,cAAc3wL,SAAS3Q,EAAE4Q,WAAY,MADtC5R,KAAKsiM,cAAc3wL,SAAS3Q,EAAE4Q,WAAY,KAGhE5R,KAAK4uB,OAAOwrB,YAAcp6C,KAAK4uB,OAAOkJ,aAAaC,YAAc,IACjElM,EAAO7rB,KAAKsiM,cAAc,GAAG50L,MAAM,EAAG1N,KAAK4uB,OAAOwrB,YAAYnL,OAAOpjB,IAG7E,OAAOA,GAEXq2K,EAAchiM,UAAUmmM,iBAAmB,SAAUtgL,GACjD,OAAO/lB,KAAK4uB,OAAO4tE,cAAc8pG,uBAAuBvgL,IAE5Dm8K,EAAchiM,UAAUolM,wBAA0B,SAAUpB,EAAShoE,EAAW7kG,EAAKtR,EAAMqJ,EAAYD,GACnG,GAAInvB,KAAK4uB,OAAOwrB,YAAcp6C,KAAK4uB,OAAO6D,uBACb,YAArB1M,EAAKgI,aAAkD,YAArBhI,EAAKgI,aAA4B,CAGvE,IAFA,IAAIuxD,OAAK,EACLinH,EAAWvmM,KAAKqmM,iBAAiBtgL,GAC5B/kB,EAAI,EAAGA,EAAIulM,EAAS5lM,OAAQK,IACjCs+E,EAAKjoD,EAAI1jB,OAAO4yL,EAAS50L,SAAS3Q,EAAE4Q,WAAY,KAAMud,GACtD+0K,EAAQx/L,YAAY46E,GAEM,IAA1Bv5D,EAAKu3E,YAAYnlE,MACjB+jG,EAAUxvH,OAAO,EAAG1M,KAAK4uB,OAAOwrB,cAI5C8nJ,EAAchiM,UAAUsmM,gBAAkB,WACtC,IAAIrvK,EAAO,GACX,GAAIn3B,KAAK4uB,OAAOiJ,wBACZ,GAAI73B,KAAK4uB,OAAOorE,uBAAuBC,YAEnC,IADA,IAAI7kF,EAAO3V,OAAO2V,KAAKpV,KAAKsiM,eACnBthM,EAAI,EAAGA,EAAIoU,EAAKzU,OAAQK,IAC7Bm2B,EAAOA,EAAK8X,OAAOjvC,KAAKsiM,cAAcltL,EAAKzD,SAAS3Q,EAAE4Q,WAAY,YAItEulB,EAAOn3B,KAAKilG,YAGpB,OAAO9tE,GAEX+qK,EAAchiM,UAAUumM,uBAAyB,WAC7C,IAAIC,EAAoB1mM,KAAKomM,iCACzBO,EAAe3mM,KAAK4uB,OAAOiJ,wBAA0B6uK,EAAkB/lM,OAAS+lM,EAC9E1mM,KAAKilG,YAAc,GACzB,OAAO0hG,GAOXzE,EAAchiM,UAAUkxF,SAAW,WAC/B,OAAOpxF,KAAKilM,cAQhB/C,EAAchiM,UAAUgxF,SAAW,SAAUQ,GACzC1xF,KAAKilM,aAAevzG,GAOxBwwG,EAAchiM,UAAUyxF,SAAW,WAC/B,OAAO3xF,KAAKgwH,cAQhBkyE,EAAchiM,UAAUoxF,SAAW,SAAUtvD,GACzChiC,KAAKgwH,aAAehuF,GAOxBkgK,EAAchiM,UAAU8xF,QAAU,WAC9B,IAAI20G,EAAe3mM,KAAKwmM,kBACxB,OAAOG,EAAahmM,OAASgmM,EAAe3mM,KAAKm3B,MAOrD+qK,EAAchiM,UAAUglH,eAAiB,WACrC,OAAOllH,KAAKkjM,aAQhBhB,EAAchiM,UAAUggG,eAAiB,SAAUp1D,GAC/C9qC,KAAKkjM,YAAcp4J,GAOvBo3J,EAAchiM,UAAU2xF,YAAc,WAClC,OAAO7xF,KAAK8xF,UAQhBowG,EAAchiM,UAAU6xF,YAAc,SAAU1/C,GAI5C,OAHK,eAAkBA,KACnBA,EAAS/mC,GAAK,WAAa+mC,EAAS/mC,IAEjCtL,KAAK8xF,SAAWz/C,GAQ3B6vJ,EAAchiM,UAAUwwF,WAAa,SAAUvhE,GAC3C,IAEIy3K,EAFAt0K,EAAOtyB,KAAK4uB,OACZuI,EAAOn3B,KAAKgyF,UAEhB76D,EAAK6C,MAAK,SAAUp5B,GAElB,OAF2BA,EAAEk/E,YAC3B8mH,EAAUhmM,GACLA,EAAEk/E,aACX,IAAI+mH,GAAkB,GACjBv0K,EAAKK,cAAcxD,QAAQxuB,QAAUimM,IACtCC,GAAkB,GAOtB,IALA,IAAIvnH,EAAKhtD,EAAK41E,cACVniF,EAAO,GACP+gL,EAAe9mM,KAAK+mM,wBACpBC,EAAcF,GACZ9mM,KAAKm3B,KAAKlD,QAAO,SAAUoD,GAAO,OAAQA,EAAImhG,eAC3C/3H,EAAI,EAAG00F,EAAOhmE,EAAQxuB,OAAQF,EAAI00F,EAAM10F,IAAK,CAClD,IAAI8uB,EAASJ,EAAQxd,SAASlR,EAAEmR,WAAY,KACxCsjF,EAAMl1F,KAAK4uB,OAAOwmE,yBAAyB7lE,EAAO4E,KAClD40E,EAAS/oG,KAAK4uB,OAAOimE,oBAAoBtlE,EAAO4E,KAChD8gE,GAAgC,IAAnB1lE,EAAOqH,QAAmB,GAAK,QACnC,IAATs+D,GAAc0xG,GAAW1xG,EAAM0xG,EAAQnlJ,MAAM9gD,QAC7C,gBAAkBX,KAAK6xF,cAAc/8C,WAAWnjC,SAASujF,EAAItjF,WAAY,KAAM,CAAE,QAAWqjF,IAE3F4xG,GACD7mM,KAAKinM,eAAe3nH,EAAIypB,EAAQ9T,EAAY+xG,IAE3ChnM,KAAK4uB,OAAOiwF,kBAAoBtvF,EAAO6uF,aACxCp+G,KAAK4uB,OAAO6vF,mBAAmBlvF,GAEnCvvB,KAAK4uB,OAAOiwF,kBAAmB,EAE/BgoF,EACA7mM,KAAK08F,mBAAmB,CAAE3uE,YAAa,YAGvC/tB,KAAK4uB,OAAOhV,OAAO,QAAuB,CAAEud,KAAM6vK,EAAajhL,KAAMA,KAW7Em8K,EAAchiM,UAAU+mM,eAAiB,SAAU3nH,EAAI4V,EAAKD,EAAY99D,GACpE,gBAAgBmoD,EAAI4V,EAAKD,EAAY99D,EAAMn3B,KAAK4uB,OAAQ5uB,KAAK4uB,OAAOyxB,iBACpErgD,KAAK4uB,OAAOhV,OAAO,QAAyB,CAAEgd,QAASq+D,EAAYxoF,MAAOyoF,EAAKgyG,SAAUlnM,KAAK0iM,oBAElGR,EAAchiM,UAAU6mM,sBAAwB,SAAUG,GACtD,IAAIJ,EAUJ,OATI9mM,KAAK4uB,OAAOiJ,0BACZ73B,KAAK0iM,iBAAmBwE,EAEpBJ,EADA9mM,KAAK4uB,OAAOorE,uBAAuBC,YACTj6F,KAAKomM,iCAGhBc,EAAWlnM,KAAKuiM,kBAAoBviM,KAAKilG,aAGzD6hG,GAEX5E,EAAchiM,UAAUg5L,gBAAkB,WACtC,GAAIl5L,KAAK6xF,cAAe,CACpB,IAAIx/C,EAAWryC,KAAKmnM,oBACpBnnM,KAAK2xF,WAAWuyE,aAAa7xH,EAAUryC,KAAK6xF,eAC5C7xF,KAAK+xF,YAAY1/C,KAGzB6vJ,EAAchiM,UAAUinM,kBAAoB,WACxC,OAAOnnM,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,IAAM,QAC1CA,cAAc,OAAoB,4BAA4Bwb,WAAU,IAEjFw6K,EAAchiM,UAAU2jM,sBAAwB,WAC5C,IAAIvxK,EAAOtyB,KAAK4uB,OAChB5uB,KAAKk2F,UAAY,IAAI,OAAU5jE,EAAKlvB,QAAS,CACzC+yF,OAAQ,eACR5F,KAAMvwF,KAAKuwF,QAGnB2xG,EAAchiM,UAAU+1F,iBAAmB,WACnCj2F,KAAKk2F,YAAcl2F,KAAKk2F,UAAUpnE,aAClC9uB,KAAKk2F,UAAU1jF,WAGvB0vL,EAAchiM,UAAUknM,QAAU,SAAU73K,EAAQ8H,EAAK5qB,GAOrD,OAAO,eAAkB4qB,IACrB,eAAkB9H,EAAOqH,UACzBS,EAAIoqB,MAAM9vC,SAASlF,EAAMmF,WAAY,KAAKglB,UAAYrH,EAAOqH,SAErEsrK,EAAchiM,UAAUmjM,kBAAoB,WACxC,OAAOrjM,KAAKojM,UAAYpjM,KAAK4uB,OAAO8D,cAAgB,IAAI,OAAoB1yB,KAAK4uB,QAAU,IAAI,OAAkB5uB,KAAK4uB,SAE1HszK,EAAchiM,UAAU6+F,YAAc,SAAU3sD,GAC5CpyC,KAAK2xF,WAAWjtF,YAAY0tC,GACxBpyC,KAAK4uB,OAAOwrB,aACZp6C,KAAK4uB,OAAOyrB,mBAAmBnuC,cAAc,QAAgBpB,UAAY,KAGjFo3L,EAAchiM,UAAU4zE,aAAe,SAAU3/C,EAAKi/J,EAAKjZ,GACvDn6K,KAAK4uB,OAAOhV,OAAO,QAA2B,CAAEua,IAAKA,EAAKi/J,IAAKA,EAAKjZ,SAAUA,IAE9E,IADA,IAAI9iJ,EAAMr3B,KAAKgyF,UAAU/9D,QAAO,SAAUoD,GAAO,OAAO8iJ,GAAYhmJ,IAAQkD,EAAIlD,OACvEmD,EAAI,EAAGA,EAAID,EAAI12B,OAAQ22B,IAAK,CACjCD,EAAI1lB,SAAS2lB,EAAE1lB,WAAY,KAAKmuE,WAAaqzG,EAE7C,IADA,IAAI3xI,EAAQpqB,EAAI1lB,SAAS2lB,EAAE1lB,WAAY,KAAK6vC,MACnChqB,EAAI,EAAGA,EAAIgqB,EAAM9gD,OAAQ82B,IAC9BgqB,EAAM9vC,SAAS8lB,EAAE7lB,WAAY,KAAKmuE,WAAaqzG,IAI3D8O,EAAchiM,UAAUsnG,cAAgB,SAAU/6F,GAE9C,OADAA,EAAQzM,KAAKqnM,oBAAoB56L,GACzB,eAAkBA,QAAqElB,EAA5DvL,KAAK4uB,OAAOs5E,cAAcv2F,SAASlF,EAAMmF,WAAY,MAE5FswL,EAAchiM,UAAUmnM,oBAAsB,SAAU56L,GACpD,GAAIzM,KAAK4uB,OAAOorE,uBAAuBC,cAAgB,eAAkBxtF,GAAQ,CAC7E,IAAI05G,EAAQnmH,KAAK4uB,OAAOwrB,WACpB86C,EAAMixB,EAAQ15G,EAAQ,EAAI05G,EAC1BmhF,EAAgB31L,SAAS3R,KAAK4uB,OAAOojE,UAAUrgF,SAASujF,EAAItjF,WAAY,KACvElH,aAAa,QAAwB,IAC1C+B,EAAQ05G,EAAQ15G,EAAQA,EAASA,EAAQ66L,EAAiBnhF,EAE9D,OAAO15G,GAEXy1L,EAAchiM,UAAU22K,mBAAqB,SAAUpqK,GACnD,OAAOA,GAEXy1L,EAAchiM,UAAUokK,kBAAoB,SAAUn3J,GACjC,UAAbA,EAAE0M,QAAsB1M,EAAEgjC,SAC1BnwC,KAAKojM,UAAYpjM,KAAKqjM,sBAG9BnB,EAAchiM,UAAUigG,cAAgB,SAAUhpE,GAC9Cn3B,KAAKm3B,KAAOA,GAOhB+qK,EAAchiM,UAAU8/F,uBAAyB,SAAUj6E,GACvD,IAAI1iB,EAAQrD,UACC,IAAT+lB,IAAmBA,EAAO,IAC9B,IAAIuM,EAAOtyB,KAAK4uB,OAChB0D,EAAK+tE,cACL,IAAI9/F,EAAM+xB,EAAKwJ,0BAA0B,GACrCyrK,EAAU,GACVC,EAAU,GACVC,EAAa,GACbC,EAAa,GACbC,EAAar1K,EAAKmvD,gBAAgB/zE,QAClCk6L,EAAkB5nM,KAAK6nM,sBAAsBtnM,EAAKonM,GAClDG,EAAa,GACbC,EAAmD,IAAxCtoM,OAAO2V,KAAKwyL,GAAiBjnM,OAC5C,GAAI2xB,EAAK0nB,aAAa9tC,cAAc,gBAAuC,YAArB6Z,EAAKgI,aACpD/tB,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,OACrCX,KAAK08F,mBAAmB32E,OAEvB,CACD,GAAoC,IAAhCuM,EAAK8pE,gBAAgBz7F,OACrB,OAEJ,IAAIqnM,EAAiB,GACjB51J,EAAQ9f,EAAK/tB,cAAc,OAAgB,CAAEyK,MAAO,CAAEC,KAAM,cAC5DmgB,EAAakD,EAAK8pE,gBAClB6rG,EAAM,GAAGv6L,MAAMpK,KAAKtD,KAAK2xF,WAAWzlF,cAAc,QAAgB0U,UACtE,GAAI5gB,KAAK0/F,gBAAgB/+F,OAAQ,CAC7B,IAAIunM,EAAUloM,KAAK0/F,gBAAgB/+F,OAC/BwnM,EAAa/4K,EAAWzuB,OAC5B,GAAIunM,IAAYC,EACZ,IAAK,IAAInnM,EAAI,EAAGA,EAAImnM,EAAYnnM,IACU,UAAlChB,KAAK4uB,OAAOi3C,aAAaihC,MACtBmhG,EAAIt2L,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAUmB,SAAS,kBACtD4hM,EAAIv7L,OAAO1L,EAAG,KACZA,IAGNwmM,EAAQp4K,EAAWzd,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAKrR,IAAQgnM,EAAQvnM,KAAK0/F,gBAAgB/tF,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAKrR,IAAQS,EAClI8mM,EAAWn2L,SAAS3Q,EAAE4Q,WAAY,KAAOwd,EAAWzd,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAKrR,GACrFynM,EAAeL,EAAWh2L,SAAS3Q,EAAE4Q,WAAY,KAAKuiB,KAAO8zK,EAAIt2L,SAAS3Q,EAAE4Q,WAAY,KACxF81L,EAAW/1L,SAAS3Q,EAAE4Q,WAAY,KAAO5R,KAAK0/F,gBAAgB/tF,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAKrR,QAGlG,CACD,IAASS,EAAI,EAAGA,EAAImnM,EAAYnnM,IAC5BwmM,EAAQp4K,EAAWzd,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAKrR,IAAQS,EAC5D8mM,EAAWn2L,SAAS3Q,EAAE4Q,WAAY,KAAOwd,EAAWzd,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAKrR,GAEzF,IAASS,EAAI,EAAGA,EAAIknM,EAASlnM,IACa,UAAlChB,KAAK4uB,OAAOi3C,aAAaihC,MACtBmhG,EAAIt2L,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAUmB,SAAS,kBACtD4hM,EAAIv7L,OAAO1L,EAAG,KACZA,IAGNgnM,EAAeL,EAAWh2L,SAAS3Q,EAAE4Q,WAAY,KAAKuiB,KAAO8zK,EAAIt2L,SAAS3Q,EAAE4Q,WAAY,KACxF21L,EAAQvnM,KAAK0/F,gBAAgB/tF,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAKrR,IAAQS,EACtE0mM,EAAW/1L,SAAS3Q,EAAE4Q,WAAY,KAAO5R,KAAK0/F,gBAAgB/tF,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAKrR,KAI3G,IAASS,EAAI,EAAGA,EAAIouB,EAAWzuB,OAAQK,IAAK,CACxC,IAAIonM,EAAWb,EAAQn4K,EAAWzd,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAKrR,IACnE,GAAK,eAAkB6nM,GA2BlB,CACD,IAAI/wK,EAAM,IAAI,OAAYr3B,KAAK6uB,eAAgB,KAAMyD,GACjDgiH,EAAS,CAAExvD,WAAY9jF,GACvBk7H,EAAYl8H,KAAKojM,UAAU9iJ,aAAa,CAAClxB,EAAWzd,SAAS3Q,EAAE4Q,WAAY,MAAO0iI,GACtFmzD,EAAWp7L,KAAK6vH,EAAU,IACtB58C,EAAKjoD,EAAI1jB,OAAOuoH,EAAU,GAAI5pG,EAAKoE,cACvC0b,EAAM1tC,YAAY46E,GAClBt/E,KAAKqoM,wBAAwBrnM,EAAGs+E,EAAImoH,EAAW91L,SAAS3Q,EAAE4Q,WAAY,UAlCxC,CAC9B,IAAI02L,GAAU,EACVtoM,KAAK4uB,OAAOg+E,oBACZ07F,EAAUtoM,KAAKuoM,sBAAsBvoM,KAAK0/F,gBAAgB/tF,SAASy2L,EAASx2L,WAAY,KAAMwd,EAAWzd,SAAS3Q,EAAE4Q,WAAY,OAEpI,IAAI0tE,EAAK0oH,EAAeL,EAAWh2L,SAASy2L,EAASx2L,WAAY,KAC5DuiB,KAEL,GADAszK,EAAWp7L,KAAKs7L,EAAWh2L,SAASy2L,EAASx2L,WAAY,MACrD5R,KAAKkjM,YAAYvxL,SAASy2L,EAASx2L,WAAY,MAAQ5R,KAAKkjM,YAAYvxL,SAASy2L,EAASx2L,WAAY,KAAKlH,aAAa,cAAgB+8L,EAAW91L,SAAS3Q,EAAE4Q,WAAY,KAAKuiB,MAC1K4zK,GAAY,eAAkBH,EAAgBE,EAAWn2L,SAAS3Q,EAAE4Q,WAAY,SAC5Em2L,IAAaO,GACXtoM,KAAK0/F,gBAAgB/tF,SAASy2L,EAASx2L,WAAY,OAASwd,EAAWzd,SAAS3Q,EAAE4Q,WAAY,OAAS,CAC9Gw2L,IAAapnM,GACbhB,KAAKqoM,wBAAwBrnM,EAAGs+E,EAAImoH,EAAW91L,SAAS3Q,EAAE4Q,WAAY,MAE1EwgC,EAAM1tC,YAAY46E,GAClB,UAECyoH,IAAa,eAAkBH,EAAgBE,EAAWn2L,SAAS3Q,EAAE4Q,WAAY,SAC7E5R,KAAK4uB,OAAOg+E,mBACVx9E,EAAWzd,SAAS3Q,EAAE4Q,WAAY,OAAS5R,KAAK0/F,gBAAgB/tF,SAASy2L,EAASx2L,WAAY,MACjG5R,KAAK4uB,OAAOg+E,oBAAsB07F,IACtCX,EAAWh2L,SAASy2L,EAASx2L,WAAY,KAAK42L,YAAYp5K,EAAWzd,SAAS3Q,EAAE4Q,WAAY,MAEhGwgC,EAAM1tC,YAAY46E,GAClBt/E,KAAKqoM,wBAAwBrnM,EAAGs+E,EAAImoH,EAAW91L,SAAS3Q,EAAE4Q,WAAY,OAqB9E,GATA5R,KAAKm3B,KAAOswK,EACZznM,KAAKkjM,YAAc,GAAGx1L,MAAMpK,KAAK8uC,EAAMxxB,UACvC,gBAAO5gB,KAAK2xF,WAAWzlF,cAAc,SACrClM,KAAK2xF,WAAWjtF,YAAY0tC,GAC5BpyC,KAAK4uB,OAAO3mB,QAAQ,QAAkB,IAAI,WAClC5E,EAAMurB,OAAO20D,eACblgF,EAAMurB,OAAOhV,OAAO,QAAqB,CAAEsoG,KAAM,gBAGrDn8F,EAAM,CACN,IAAIpF,GAAUoF,EAAKgI,aAAe,IAAIlM,cAAgB,YACtD7hB,KAAK4uB,OAAOhV,OAAO+G,EAAQoF,MAIvCm8K,EAAchiM,UAAUqoM,sBAAwB,SAAUE,EAAKj7J,GAG3D,IAFA,IAAIp4B,EAAO3V,OAAO2V,KAAKqzL,GACnBH,GAAU,EACLtnM,EAAI,EAAGA,EAAIoU,EAAKzU,OAAQK,IAC7B,GAAIynM,EAAIrzL,EAAKzD,SAAS3Q,EAAE4Q,WAAY,QAAU47B,EAAKp4B,EAAKzD,SAAS3Q,EAAE4Q,WAAY,MAAO,CAClF,IAAI82L,EAASD,EAAIrzL,EAAKzD,SAAS3Q,EAAE4Q,WAAY,gBAAiB+G,MACvD60B,EAAKp4B,EAAKzD,SAAS3Q,EAAE4Q,WAAY,gBAAiB+G,KACzD,IAAK+vL,GAAWD,EAAIrzL,EAAKzD,SAAS3Q,EAAE4Q,WAAY,MAC3CoH,YAAcw0B,EAAKp4B,EAAKzD,SAAS3Q,EAAE4Q,WAAY,MAAMoH,UAAY,CAClEsvL,GAAU,EACV,OAIZ,OAAOA,GAEXpG,EAAchiM,UAAU2nM,sBAAwB,SAAU9qD,EAAY5lH,GAClE,IAAI/hB,EAAO,GACP8mB,EAAUl8B,KAAK4uB,OAAO0/F,kBACtBjyF,EAAiB,GACjBF,EAAe,GACf18B,OAAO2V,KAAK8mB,GAASv7B,SACrB07B,EAAiBH,EAAQG,eACzBF,EAAeD,EAAQC,cAE3B,IAAIpW,EAAO,CAAEtX,QAAQ,GACrBzO,KAAK4uB,OAAOhV,OAAO,QAA6B,CAAEud,KAAMA,EAAMpR,KAAMA,IAChEoW,EAAax7B,SACmC,WAA5CX,KAAK4uB,OAAOi3C,aAAaoxE,eACzB9/G,EAAKzqB,OAAOyqB,EAAKx2B,OAAS,EAAGw7B,EAAax7B,QAGrColB,EAAKtX,QACN0oB,EAAKzqB,OAAO,EAAGyvB,EAAax7B,SAIxC,IAAK,IAAIK,EAAI,EAAGA,EAAIq7B,EAAe17B,OAAQK,IACvCoU,EAAKinB,EAAe1qB,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAKmrI,IAAe/7I,EAExE,OAAOoU,GAEX8sL,EAAchiM,UAAUmoM,wBAA0B,SAAU57L,EAAO6yE,EAAIjoD,GACnEA,EAAImtD,WAAWxkF,KAAK4uB,OAAO62D,cAAeh5E,EAAQ,IAAM,EACpD4qB,EAAImtD,SACJlF,EAAGp6E,UAAU4G,IAAI,YAGjBwzE,EAAGp6E,UAAUC,OAAO,YAExBkyB,EAAI5qB,MAAQA,EACZ4qB,EAAI3F,UAAOnmB,EACX8rB,EAAI6rH,SAAU,EACd5jE,EAAG30E,aAAa,OAAuB8B,EAAMmF,YAC7C0tE,EAAG30E,aAAa,QAAwB8B,EAAQ,GAAGmF,YACnD5R,KAAK2oM,gBAAgBrpH,EAAI7yE,IAE7By1L,EAAchiM,UAAUyoM,gBAAkB,SAAU3vE,EAAQvsH,GACxD,IAAK,IAAIzL,EAAI,EAAGA,EAAIg4H,EAAOv3E,MAAM9gD,OAAQK,IACrCg4H,EAAOv3E,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKjH,aAAa,QAAS8B,EAAMmF,aAGtEswL,EA/lCuB,I,kCCjBlC,8GAAI7iM,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAwBxC6oM,EAAqC,SAAU/lM,GAE/C,SAAS+lM,EAAoBh6K,GACzB,IAAIvrB,EAAQR,EAAOS,KAAKtD,KAAM4uB,IAAW5uB,KASzC,OARAqD,EAAM8zB,KAAO,GAEb9zB,EAAMoJ,MAAQ,EACdpJ,EAAMwlM,mBAAqB,EAC3BxlM,EAAMylM,mBAAoB,EAC1BzlM,EAAMurB,OAASA,EACfvrB,EAAM0lM,gBAAkB,IAAI,OAA2Bn6K,GACvDvrB,EAAM2lM,gBAAkB,IAAI,OAA6Bp6K,GAClDvrB,EAsQX,OAjRAhE,EAAUupM,EAAqB/lM,GAa/B+lM,EAAoB1oM,UAAUogD,aAAe,SAAUz0B,EAAM9F,GACzD,GAAiD,IAA7C/lB,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,OAClC,OAAOkC,EAAO3C,UAAUogD,aAAah9C,KAAKtD,KAAM6rB,EAAM9F,GAE1D/lB,KAAKg1K,iBAAyC,mBAArBjvJ,EAAKgI,YAC9B/tB,KAAKm3B,KAAO,GACZn3B,KAAKyM,MAAQzM,KAAK4uB,OAAO6D,sBAAwBzyB,KAAKg1K,iBAAmBjvJ,EAAK++D,WAAa,EAC3F,IAAK,IAAI9jF,EAAI,EAAGiiB,EAAM4I,EAAKlrB,OAAQK,EAAIiiB,EAAKjiB,IACxChB,KAAK6oM,mBAAqB,EAC1B7oM,KAAK8oM,mBAAoB,EACzB9oM,KAAKipM,kBAAkB,EAAGp9K,EAAKla,SAAS3Q,EAAE4Q,WAAY,KAAMia,EAAK40B,MAAOz/C,OAAGuK,EAAWvL,KAAKm3B,KAAKx2B,QAMpG,OAJAX,KAAKyM,MAAQ,EACTzM,KAAK4uB,OAAO23F,0BACZvmH,KAAKkpM,sBAEFlpM,KAAKm3B,MAEhByxK,EAAoB1oM,UAAU+oM,kBAAoB,SAAUx8L,EAAOof,EAAM+0B,EAAKuoJ,EAAUC,EAAS9jH,EAAQ5kC,GACrG,IAAI78C,EACA48C,EAAQG,EACZ,GAAI,eAAkB/0B,EAAK49B,OACvB,GAAI,eAAkB59B,EAAKy2E,WACvBtiG,KAAKm3B,KAAOn3B,KAAKm3B,KAAK8X,OAAOjvC,KAAKkmH,iBAAiBr6F,EAAMpf,EAAO08L,EAAUnpM,KAAKm3B,KAAKx2B,OAAQ+/C,SAG5F,IAAK,IAAIppB,EAAI,EAAGrU,EAAM4I,EAAKlrB,OAAQ22B,EAAIrU,EAAKqU,IACxCt3B,KAAKipM,kBAAkBx8L,EAAOof,EAAKla,SAAS2lB,EAAE1lB,WAAY,KAAMia,EAAK40B,MAAO0oJ,EAAU18L,EAAOzM,KAAKm3B,KAAKx2B,OAAQ+/C,OAItH,CACD,IAAI2oJ,OAAa,EACbC,EAAatpM,KAAKupM,mBAAmB19K,EAAMpf,EAAO08L,EAAUC,EAAS9jH,EAAQ5kC,GAajF,GAZI1gD,KAAKg1K,mBACLq0B,EAAarpM,KAAKwpM,cAAc/8L,EAAO68L,EAAWz9K,KAAKtrB,MAEtD8oM,EAIDC,EAAWn1K,IAAMk1K,EAAWl1K,IAH5Bn0B,KAAKm3B,KAAOn3B,KAAKm3B,KAAK8X,OAAOq6J,GAK7Bz9K,EAAK49B,OAAS59B,EAAK49B,MAAM9oD,QACzBX,KAAKipM,kBAAkBx8L,EAAQ,EAAGof,EAAK49B,MAAO59B,EAAK49B,MAAMhJ,MAAO0oJ,EAAU18L,EAAQ,EAAGzM,KAAKm3B,KAAKx2B,OAAQ2oM,EAAWn1K,KAElHn0B,KAAK4uB,OAAOwI,WAAWz2B,QAAUX,KAAKypM,kBAAkBH,GAAa,CACrE,IAAII,EAAS1pM,KAAKm3B,KAAKx2B,QACtBkD,EAAK7D,KAAKm3B,MAAM9qB,KAAKvJ,MAAMe,EAAI7D,KAAK+oM,gBAAgBzoJ,aAAaz0B,EAAM,CAAE40B,MAAOA,EAAOC,UAAW4oJ,EAAWn1K,OAC9G,IAAK,IAAInzB,EAAI0oM,EAAS,EAAG1oM,GAAK,EAAGA,IAC7B,GAAIhB,KAAKm3B,KAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAK6yE,aACtCzkF,KAAKm3B,KAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAK+3L,gBAAkB3pM,KAAKm3B,KAAKx2B,OAAS+oM,OAE1E,IAAK1pM,KAAKm3B,KAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAK6yE,eAAiBzkF,KAAKm3B,KAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAKkuE,UACnG,MAIRupH,GACArpM,KAAK4pM,yBAAyBP,KAI1CT,EAAoB1oM,UAAUupM,kBAAoB,SAAU59K,GACxD,OAAI7rB,KAAK4uB,OAAOiJ,0BACP73B,KAAK8oM,oBAGV9oM,KAAKwpM,cAAc39K,EAAKi2B,OAAQj2B,EAAKA,KAAKtrB,KAC1CP,KAAK8oM,kBAAoBj9K,EAAKA,KAAKkf,QAAU/qC,KAAK6oM,mBAC3C7oM,KAAK8oM,oBAER9oM,KAAK4uB,OAAOiJ,yBAExB+wK,EAAoB1oM,UAAUspM,cAAgB,SAAU1nJ,EAAQvhD,GAC5D,IACIspM,EADAvkF,EAAStlH,KAAK4uB,OAAO6yD,gBAAgBxyC,OAAOjvC,KAAKm3B,MAErDn3B,KAAK6oM,mBAAqB,EAC1B,IAAI7nM,EAAIskH,EAAO3kH,OACf,MAAOK,IAAK,CAKR,GAJIskH,EAAO3zG,SAAS3Q,EAAE4Q,WAAY,KAAK6yE,cAAgB6gC,EAAO3zG,SAAS3Q,EAAE4Q,WAAY,KAAKkwC,SAAWA,GAC9FwjE,EAAO3zG,SAAS3Q,EAAE4Q,WAAY,KAAKia,KAAKtrB,MAAQA,IACnDspM,EAASvkF,EAAO3zG,SAAS3Q,EAAE4Q,WAAY,MAEvC0zG,EAAO3zG,SAAS3Q,EAAE4Q,WAAY,KAAKkwC,SAAWA,GAAUwjE,EAAO3zG,SAAS3Q,EAAE4Q,WAAY,KAAKkwC,OAASA,EACpG,MAEAwjE,EAAO3zG,SAAS3Q,EAAE4Q,WAAY,KAAKkwC,SAAWA,EAAS,GACvD9hD,KAAK6oM,qBAGb,OAAOgB,GAEXjB,EAAoB1oM,UAAU4pM,mBAAqB,SAAUj4K,EAAOiwB,EAAQj2B,GACxE,IAAI41B,EAAQ,GACRsoJ,EAAW,GACXx6K,EAASvvB,KAAK4uB,OAAO8J,iBAAiB7G,GACtCwhE,EAAUrzF,KAAK4uB,OAAO0kE,yBACtBtzF,KAAK4uB,OAAOqrB,6BACZ1qB,EAASvvB,KAAK4uB,OAAOO,QAAQ8E,QAAO,SAAUxzB,GAAK,OAAOA,EAAEoxB,QAAUA,KAAU,IAEpF,IAAIm4K,EAAahqM,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,OAC/C2xB,EAAOtyB,KAAK4uB,OAChB,IAAK5uB,KAAK4uB,OAAOqrB,6BAA2D,IAA7Bo5C,EAAQrvF,QAAQ89C,GAAgB,CAC3E,IAAK,IAAI9gD,EAAI,EAAGA,EAAI8gD,EAAQ9gD,IACxBygD,EAAMp1C,KAAKrM,KAAKiqM,sBAEpBxoJ,EAAMp1C,KAAKrM,KAAKmlF,aAAa,GAAI,KAAM,OAASoc,SAMpD,GAJAz/C,EAAS9hD,KAAK4uB,OAAOqrB,2BAA6B,EAC7Cj6C,KAAK4uB,OAAO0qE,oBAAoB34F,OAASqpM,GAAc13K,EAAK6tB,gBAAkB7tB,EAAK8tB,UAAY,EAAI,GAChG0B,GAAU9hD,KAAK4uB,OAAO0qE,oBAAoB34F,QAAU,EAAI,GAE5DX,KAAK4uB,OAAOwI,WAAWz2B,SAAWX,KAAKgpM,gBAAgB5lJ,UAAW,CAClE,IAAI8mJ,EAAelqM,KAAKgpM,gBAAgB1oJ,aAAaz0B,GAAM,GAC3D,eAAOA,EAAMq+K,EAAar+K,MAC1B,IAAIs+K,EAAW,EACfD,EAAazoJ,MAAMznB,MAAK,SAAU2nB,EAAMl1C,GAA2B,OAAlB09L,EAAW19L,EAAck1C,EAAK/qB,SAAW+qB,EAAKC,cAC/FmoJ,EAAWG,EAAazoJ,MAAM/zC,MAAMy8L,GAAUl2K,QAAO,SAAU0tB,GAAQ,OAAOA,EAAK/qB,WAC/EszK,EAAatzK,SAAWmzK,EAAS,GAAGx6K,OAAOsC,QAAU7xB,KAAK4uB,OAAO0qE,oBAAoB,GAAGznE,QACxFk4K,EAAWA,EAASr8L,MAAM,IAEiB,IAA3C1N,KAAK4uB,OAAO0qE,oBAAoB34F,SAChCopM,EAAW,IAEfjoJ,GAAkBioJ,EAASppM,OAI/B,IAFA,IAAI42B,EAASv3B,KAAK4uB,OAAOqrB,2BAAwCj6C,KAAK4uB,OAAO8H,aAAvB,CAACnH,GACnD4sJ,GAAQ,EACH7kJ,EAAI,EAAGA,EAAIC,EAAK52B,OAAQ22B,IAAK,CAClC,IAAI8yK,EAAUjuB,IAAsC,IAA7B9oF,EAAQrvF,QAAQ89C,GACnCsoJ,IACAjuB,GAAQ,GAEZ,IAAIt6H,GAAY7hD,KAAK4uB,OAAOqrB,4BAA8BmwJ,EACtD,OAAS/oG,aAAe,OAASC,kBACrCx/C,EAAS9hD,KAAK4uB,OAAOqrB,4BAA8B4H,IAAa,OAASw/C,aAAev/C,EAASkoJ,EAAaloJ,EAC1GxvB,EAAK+tB,iBACLyB,IAEJL,EAAMp1C,KAAKrM,KAAKmlF,aAAa51D,EAAQ,KAAMsyB,EAAUC,IAGzD,OADAL,EAAMp1C,KAAKvJ,MAAM2+C,EAAOsoJ,GACjBtoJ,GAYXmnJ,EAAoB1oM,UAAUqpM,mBAAqB,SAAU19K,EAAMi2B,EAAQ++D,EAAUwpF,EAAS/kH,EAAQ5kC,GAClG,IAAIv9C,EAAU,GACVyvB,EAAU,UACVsG,EAAMl5B,KAAK4uB,OAAO8J,iBAAiB7M,EAAKgG,OAC5C1uB,EAAQ0oB,KAAO,eAAO,GAAIA,GACtBqN,IACA/1B,EAAQ0oB,KAAKgG,MAAQhG,EAAKgG,OAE9B1uB,EAAQ28E,WAAY,EACpB38E,EAAQs9E,UAAYzgF,KAAK4uB,OAAO+D,cAAc6F,oBAAsBx4B,KAAK4uB,OAAO23F,yBAChFpjH,EAAQoiF,UAAYs7B,EACpB19G,EAAQmnM,SAAWD,EACnBlnM,EAAQmiF,OAASA,EACjBniF,EAAQshF,cAAe,EACvBthF,EAAQu9C,UAAYA,EACpBv9C,EAAQonM,SAAY,eAAkB1+K,EAAK49B,MAAM,GAAK72B,IAA8C/G,EAAK49B,MAAM9oD,OAA7CkrB,EAAK49B,MAAM,GAAK72B,GAASjyB,OAC3FwC,EAAQgxB,IAAM,eAAO,YACrB,IAAIkD,EAAM,IAAI,OAAIl0B,GAIlB,OAHAk0B,EAAIyqB,OAASA,EACb9hD,KAAKivB,kBAAkBoI,GACvBA,EAAIoqB,MAAQzhD,KAAK8pM,mBAAmBj+K,EAAKgG,MAAOiwB,EAAQzqB,EAAIxL,MACrDwL,GAEXuxK,EAAoB1oM,UAAU+uB,kBAAoB,SAAUoI,GACxD,IAAIxL,EAAOwL,EAAIxL,KACXqN,EAAMl5B,KAAK4uB,OAAO8J,iBAAiB7M,EAAKgG,OAC5C,GAAIqH,GAAOA,EAAIK,iBAAmBL,EAAIK,kBAAmB,CACrD,IAAIixK,EAAW,eAAkB3+K,EAAKtrB,KAAO,GAAK24B,EAAImgE,cAAcngE,EAAInH,gBAAiB,eAAemH,EAAK,GAAIrN,EAAKtrB,KAAK,GAAI24B,GAC/H,gBAAS,aAAcsxK,EAASnzK,EAAIxL,QAY5C+8K,EAAoB1oM,UAAUgmH,iBAAmB,SAAUr6F,EAAMi2B,EAAQuoJ,EAAS/kH,EAAQ5kC,GAGtF,IAFA,IAAIvpB,EAAO,GACPk8D,EAAUrzF,KAAK4uB,OAAO0kE,yBACjBtyF,EAAI,EAAGiiB,EAAM4I,EAAKlrB,OAAQK,EAAIiiB,EAAKjiB,IAAKskF,IAAU,CACvDnuD,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAO5R,KAAKilF,YAAYp5D,EAAKla,SAAS3Q,EAAE4Q,WAAY,KAAM5R,KAAKyM,MAAOzL,OAAIuK,EAAY,kBAAmBu2C,EAAQuoJ,EAAS/kH,EAAQ5kC,GAC9J,IAAK,IAAIppB,EAAI,EAAGA,EAAIwqB,EAAQxqB,IACpBt3B,KAAK4uB,OAAOqrB,6BAA2D,IAA7Bo5C,EAAQrvF,QAAQ89C,IAG9D3qB,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAK6vC,MAAM8sF,QAAQvuI,KAAKiqM,sBAExDjqM,KAAKyM,QAET,OAAO0qB,GAEXyxK,EAAoB1oM,UAAU+pM,mBAAqB,WAC/C,OAAOjqM,KAAKmlF,aAAa,GAAI,KAAM,OAAS5jC,SAEhDqnJ,EAAoB1oM,UAAU+lF,YAAc,SAAUhzC,GAElD,IADA,IAAIogD,EAAUrzF,KAAK4uB,OAAO0kE,yBACjBtyF,EAAI,EAAGA,EAAIiyC,EAAMtyC,OAAQK,IAC9B,GAAIiyC,EAAMthC,SAAS3Q,EAAE4Q,WAAY,KAAKkuE,UAAW,CAC7C7sC,EAAMthC,SAAS3Q,EAAE4Q,WAAY,KAAK6vC,MAAQzhD,KAAK4lF,cAAc3yC,EAAMthC,SAAS3Q,EAAE4Q,WAAY,MAC1F,IAAK,IAAI0lB,EAAI,EAAGA,EAAI2b,EAAMthC,SAAS3Q,EAAE4Q,WAAY,KAAKkwC,OAAQxqB,IACtDt3B,KAAK4uB,OAAOqrB,6BACsD,IAA/Do5C,EAAQrvF,QAAQivC,EAAMthC,SAAS3Q,EAAE4Q,WAAY,KAAKkwC,SAGzD7O,EAAMthC,SAAS3Q,EAAE4Q,WAAY,KAAK6vC,MAAM8sF,QAAQvuI,KAAKiqM,0BAGxD,CACD,IAAIQ,EAAOzqM,KAAKupM,mBAAmBt2J,EAAMthC,SAAS3Q,EAAE4Q,WAAY,KAAKia,KAAMonB,EAAMthC,SAAS3Q,EAAE4Q,WAAY,KAAKkwC,QAC7G7O,EAAMthC,SAAS3Q,EAAE4Q,WAAY,KAAK6vC,MAAQgpJ,EAAKhpJ,MAGvD,OAAOxO,GAEX21J,EAAoB1oM,UAAU0pM,yBAA2B,SAAUn3G,GAC/D,IAAKA,EAAQhS,WAAgC,IAApBgS,EAAQ77D,QAC7B,IAAK,IAAI/oB,EAAK,EAAGhK,EAAK7D,KAAKm3B,KAAMtpB,EAAKhK,EAAGlD,OAAQkN,IAAM,CACnD,IAAIwpB,EAAMxzB,EAAGgK,GACTwpB,EAAIqpB,YAAc+xC,EAAQt+D,MAC1BkD,EAAIT,SAAU,EACVS,EAAIotD,cACJzkF,KAAK4pM,yBAAyBvyK,MAMlDuxK,EAAoB1oM,UAAUgpM,oBAAsB,WAChD,IAAK,IAAIloM,EAAI,EAAGA,EAAIhB,KAAKm3B,KAAKx2B,OAAQK,IAAK,CACvC,IAAIq2B,EAAMr3B,KAAKm3B,KAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAC3C,GAAKylB,EAAIotD,aAGT,IAAK,IAAIntD,EAAIt2B,EAAI,EAAGs2B,EAAIt3B,KAAKm3B,KAAKx2B,OAAQ22B,IAAK,CAC3C,IAAIozK,EAAW1qM,KAAKm3B,KAAKxlB,SAAS2lB,EAAE1lB,WAAY,KAC5CylB,EAAIlD,MAAQu2K,EAAShqJ,YACrB1gD,KAAKm3B,KAAKxlB,SAAS2lB,EAAE1lB,WAAY,KAAKglB,QAAUS,EAAIopD,aAK7DmoH,EAlR6B,CAmRtC,S,kCC3SF,2hGAmBO,SAAS+B,EAAuBrqM,EAAQsqM,GAE3C,OAAOtqM,EAAOJ,WAAa0qM,KAAYtqM,EAAOJ,UAY3C,SAASm5F,EAAcxnE,EAAOhG,EAAM0D,GACvC,OAAQ,eAAkBsC,IAAoB,KAAVA,EAAgB,GAAK,OAASg5K,UAAUh5K,EAAOhG,GAsBhF,SAASi/K,EAAkBC,EAAgBhwE,GAC9Cj8D,uBAAsB,WAClB,IACIi8D,EAAS,KAAMgwE,KAEnB,MAAO59L,GACH4tH,EAAS5tH,OASd,SAAS69L,EAAgBC,GAC5B,OAAQ,eAAkBA,KACrB,eAAkBA,EAAiB97K,UAAY87K,EAAiB97K,QAAQxuB,OAAS,EAQnF,SAASuqM,EAAiCD,EAAkB34K,GAG/D,IAFA,IAAI64K,EAAgBF,EAAiB97K,QACjCytE,EAActqE,EAAKnD,QACdnuB,EAAI,EAAGA,EAAImqM,EAAcxqM,OAAQK,IACtC,GAAI47F,EAAYj8F,OAAS,GAAKK,EAC1B,GAAI47F,EAAYjrF,SAAS3Q,EAAE4Q,WAAY,KAAKud,QACxC,IAAK,IAAImI,EAAI,EAAGA,EAAIslE,EAAYjrF,SAAS3Q,EAAE4Q,WAAY,KAAKud,QAAQxuB,OAAQ22B,IACxE6zK,EAAcx5L,SAAS3Q,EAAE4Q,WAAY,KAAKud,QAAQxd,SAAS2lB,EAAE1lB,WAAY,KACpEpD,KAAOouF,EAAYjrF,SAAS3Q,EAAE4Q,WAAY,KAAKud,QAAQxd,SAAS2lB,EAAE1lB,WAAY,KAAKpD,UAI5F28L,EAAcx5L,SAAS3Q,EAAE4Q,WAAY,KAAKpD,KAAOouF,EAAYjrF,SAAS3Q,EAAE4Q,WAAY,KAAKpD,KAUlG,SAAS48L,EAAehlG,GAG3B,IAFA,IAAIilG,EAAQ,GACRC,EAAallG,EAAKkG,MACbtrG,EAAI,EAAGA,EAAIsqM,EAAW3qM,OAAQK,IAC/BsqM,EAAW35L,SAAS3Q,EAAE4Q,WAAY,KAAKkuE,UACvCurH,EAAMh/L,KAAKi/L,EAAW35L,SAAS3Q,EAAE4Q,WAAY,MAEvC05L,EAAW35L,SAAS3Q,EAAE4Q,WAAY,KAAKkuE,YAC7CurH,EAAMh/L,KAAKi/L,EAAW35L,SAAS3Q,EAAE4Q,WAAY,OACxC05L,EAAW35L,SAAS3Q,EAAE4Q,WAAY,KAAK6uE,UAAY6qH,EAAW35L,SAAS3Q,EAAE4Q,WAAY,KAAK6yE,eAC3FzjF,GAAKuqM,EAAsBD,EAAW35L,SAAS3Q,EAAE4Q,WAAY,KAAMw0F,KAI/EA,EAAKmG,OAAS8+F,EAElB,IAAItgK,EAAQ,EAOL,SAASwgK,EAAsB1uL,EAAKupF,GACvCr7D,EAAQ,EACR,IAAIw/J,EAAW,WACXiB,EAAQ,QACRn0D,EAAOjxC,EAAKzzE,cAAcxD,QAAQxuB,OAClCiyB,EAAU,UACV62B,EAAQ,QACRhxC,EAAQoE,EAAI,GAAK0tL,GACjBkB,EAAa,EACbC,EAAS,kBACb,GAAIjzL,IAAUoE,EAAIgP,KAAK,GAAK2/K,GAkBxB,OAjBIplG,EAAKzzE,cAAcxD,QAAQxuB,SAAW,eAAkBkc,EAAI,GAAK6uL,KAAY7uL,EAAI,GAAK6uL,GAC5C,IAAtCtlG,EAAKzzE,cAAcxD,QAAQxuB,OAC3BoqC,GAAyB,IAAfluB,EAAIilC,QAAgB,EAAU,EAAMjlC,EAAI,GAAK0tL,IAAclzD,EAAOx6H,EAAIilC,QAAWu1F,EAAOx6H,EAAIilC,QAAUjlC,EAAI,GAAK6uL,IACpH7uL,EAAI,GAAK0tL,IAAclzD,EAAOx6H,EAAIilC,QAAWu1F,EAAOx6H,EAAIilC,OAAS,GAAKjlC,EAAI,GAAK6uL,IAAY7uL,EAAI,GAAK6uL,GAE9D,IAAtCtlG,EAAKzzE,cAAcxD,QAAQxuB,SAChCoqC,GAAUluB,EAAI,GAAK0tL,IAAalzD,EAAOx6H,EAAIilC,QAAWjlC,EAAI,GAAK6uL,IAG9DtlG,EAAKzzE,cAAcxD,QAAQxuB,SACU,IAAtCylG,EAAKzzE,cAAcxD,QAAQxuB,OAC3BoqC,GAASluB,EAAI,GAAK0tL,IAAankG,EAAKzzE,cAAcxD,QAAQxuB,OAASkc,EAAIilC,QAGvE/W,GAASluB,EAAI,GAAK0tL,IAGnBx/J,EAGP,IAAK,IAAI/pC,EAAI,EAAGiiB,EAAMpG,EAAIgP,KAAK,GAAK49B,GAAO9oD,OAAQK,EAAIiiB,EAAKjiB,IAAK,CAC7D,IAAI2qM,EAAS9uL,EAAIgP,KAAK,GAAK49B,GAAO93C,SAAS3Q,EAAE4Q,WAAY,KACzDm5B,GAAS4gK,EAAO,GAAKliJ,GAAO9oD,QAAW02I,IAASjxC,EAAKj3E,QAAQxuB,QACxD,eAAkBgrM,EAAO,GAAKliJ,GAAO,GAAK72B,IAAsD,EAA1C+4K,EAAO,GAAKliJ,GAAO,GAAK72B,GAASjyB,QAC5F8qM,GAAgB,eAAkBE,EAAO,GAAKliJ,GAAO,GAAK72B,KAAc,eAAkB/V,EAAI,GAAK6uL,IAC/FC,EAAO,GAAKliJ,GAAO9oD,OADwFgrM,EAAO,GAAKliJ,GAAO,GAAK72B,GAASjyB,OAE5IgrM,EAAO,GAAKliJ,GAAO64C,WAAgD,IAAnCqpG,EAAO,GAAKliJ,GAAOmiJ,aACnDC,EAAUF,GAUtB,OAPI5gK,GAASluB,EAAIgP,KAAK,GAAK49B,GAAO9oD,OACzB,eAAkBkc,EAAI,GAAK6uL,KACxB7uL,EAAI,GAAK6uL,IAAW3gK,GAAwB,IAAf0gK,IAC7B1gK,IAAWA,EAAQ0gK,GAAc5uL,EAAI,GAAK6uL,GAAW7uL,EAAI,GAAK6uL,IAInE3gK,EAOJ,SAAS8gK,EAAUx0K,GAGtB,IAFA,IAAIoyB,EAAQ,QACRqiJ,EAAS,QACJx0K,EAAI,EAAGlV,EAAWiV,EAAI,GAAKoyB,GAAO9oD,OAAQ22B,EAAIlV,EAAUkV,IAAK,CAClE,IAAIy0K,EAAS10K,EAAI,GAAKoyB,GAAO93C,SAAS2lB,EAAE1lB,WAAY,KACpDm5B,GAASghK,EAAO,GAAKD,GACkB,IAAnCC,EAAO,GAAKtiJ,GAAOmiJ,aACnBC,EAAUE,IAUf,SAASC,EAAqBvhK,EAAYtY,GAE7C,IADA,IAAInB,EAAS,GACJhwB,EAAI,EAAGiiB,EAAMwnB,EAAW9pC,OAAQK,EAAIiiB,EAAKjiB,IAAK,CACnD,IAAIotI,EAAOj8G,EAAUsY,EAAW94B,SAAS3Q,EAAE4Q,WAAY,KAAM5Q,GACxD,eAAkBotI,IACnBp9G,EAAO3kB,KAAK+hI,GAGpB,OAAOp9G,EAOJ,SAASi7K,EAAcj9J,GAE1B,IADA,IAAIjM,EAAM,GACD/hC,EAAI,EAAGA,EAAIguC,EAAMruC,OAAQK,IAC9B+hC,EAAI12B,KAAK,eAAW,GAAI6/L,EAAoBl9J,EAAMr9B,SAAS3Q,EAAE4Q,WAAY,MAAO,IAAI,IAExF,OAAOmxB,EAOJ,SAASopK,EAAiBv1J,GAC7B,GAAIA,EACA,IACI,IAAIw1J,EAAgC,MAAhBx1J,EAAS,GAC7B,MAAwB,oBAAbA,EACA,eAAqBA,GAEvBw1J,GAAiBx+L,SAAS8U,iBAAiBk0B,GAAUj2C,OACnD,eAAqBiN,SAAS1B,cAAc0qC,GAAU9rC,UAAUyB,QAGhE,eAAqBqqC,GAGpC,MAAOzpC,GACH,OAAO,eAAqBypC,IAWjC,SAASy1J,EAAsBj+J,EAAM2pD,GACxC,IAAIu0G,EAAW,GACXC,EAAW,CAAC,QAAS,SAEzB,eAAWD,EAAUv0G,EAAkB,IACnC,UAAWu0G,IACX,gBAAkBl+J,EAAMk+J,EAASC,EAAS,YACnCD,EAASC,EAAS,KAEzB,UAAWD,IACX,eAAS,CAACl+J,GAAOk+J,EAASC,EAAS,YAC5BD,EAASC,EAAS,KAE7B,eAAWn+J,EAAMk+J,GAUd,SAASE,EAAOn0G,EAAQi9C,EAAOvqH,EAAQ0hL,GAG1C,IAFA,IAAIC,EAAQ,eAAWr0G,EAAQi9C,EAAOvqH,GAClC2b,EAASjnC,OAAO2V,KAAKs3L,GAChB1rM,EAAI,EAAGA,EAAI0lC,EAAO/lC,OAAQK,IAC3ByrM,IAAoE,IAAzDA,EAAQzoM,QAAQ0iC,EAAO/0B,SAAS3Q,EAAE4Q,WAAY,cAClD86L,EAAMhmK,EAAO/0B,SAAS3Q,EAAE4Q,WAAY,MAGnD,OAAO86L,EAQJ,SAASC,EAAe/nG,EAAagoG,QAC5B,IAARA,IAAkBA,EAAM,GAC5B,IAAK,IAAI5rM,EAAI,EAAGiiB,EAAM2hF,EAAYjkG,OAAQK,EAAIiiB,EAAKjiB,IAC3C4jG,EAAYjzF,SAAS3Q,EAAE4Q,WAAY,KAAKud,SACxCy1E,EAAYjzF,SAAS3Q,EAAE4Q,WAAY,KAAKnF,MAAQ,eAAkBm4F,EAAYjzF,SAAS3Q,EAAE4Q,WAAY,KAAKnF,OAASmgM,EAC7GhoG,EAAYjzF,SAAS3Q,EAAE4Q,WAAY,KAAKnF,MAC9CmgM,IACAA,EAAMD,EAAe/nG,EAAYjzF,SAAS3Q,EAAE4Q,WAAY,KAAKud,QAASy9K,KAGtEhoG,EAAYjzF,SAAS3Q,EAAE4Q,WAAY,KAAKnF,MAAQ,eAAkBm4F,EAAYjzF,SAAS3Q,EAAE4Q,WAAY,KAAKnF,OAASmgM,EAC7GhoG,EAAYjzF,SAAS3Q,EAAE4Q,WAAY,KAAKnF,MAC9CmgM,KAGR,OAAOA,EASJ,SAASC,EAAe19K,EAAS29K,EAAWx6K,GAC/C,IAAK,IAAI7xB,EAAI,EAAGwiB,EAAMkM,EAAQxuB,OAAQF,EAAIwiB,EAAKxiB,IAAK,CAChD,IAAI8uB,OAAS,EACsC,kBAAxCJ,EAAQxd,SAASlR,EAAEmR,WAAY,KACtC2d,EAAS,IAAI,OAAO,CAAEsC,MAAO1C,EAAQxd,SAASlR,EAAEmR,WAAY,MAAQ0gB,GAE7DnD,EAAQxd,SAASlR,EAAEmR,WAAY,eAAgB,SAAWud,EAAQxd,SAASlR,EAAEmR,WAAY,KAAKud,QAUrGI,EAASJ,EAAQxd,SAASlR,EAAEmR,WAAY,KATnCud,EAAQxd,SAASlR,EAAEmR,WAAY,KAAKud,SAIrCA,EAAQxd,SAASlR,EAAEmR,WAAY,KAAKud,QAAU09K,EAAe19K,EAAQxd,SAASlR,EAAEmR,WAAY,KAAKud,QAAS,KAAMmD,GAChH/C,EAAS,IAAI,OAAOJ,EAAQxd,SAASlR,EAAEmR,WAAY,KAAM0gB,IAJzD/C,EAAS,IAAI,OAAOJ,EAAQxd,SAASlR,EAAEmR,WAAY,KAAM0gB,GAU7D/C,EAAO/gB,MAAsC,aAA9B+gB,EAAO/gB,KAAKqT,gBAC3B0N,EAAOkmB,iBAAkB,GAE7BlmB,EAAO2yB,WAAa,eAAkB3yB,EAAO2yB,YAAc3yB,EAAOwC,iBAAmBxC,EAAOsC,OAAS,GAAKtC,EAAO2yB,WACjH3yB,EAAOqC,gBAAkBrC,EAAOqC,iBAAmBrC,EAAOsC,MAC1DtC,EAAO8pE,eAAiD,kBAAzB9pE,EAAO8pE,cAA6B,eAAS9pE,EAAO8pE,cAAe9yF,QAC5FgpB,EAAO8pE,gBAAkBA,EAC/B9pE,EAAOjqB,MAAQwnM,GAAa,eAAkBv9K,EAAOjqB,OAAS,IAAMiqB,EAAOjqB,MACvE,eAAkBiqB,EAAOqH,WACzBrH,EAAOqH,SAAU,GAErBzH,EAAQxd,SAASlR,EAAEmR,WAAY,KAAO2d,EAE1C,OAAOJ,EASJ,SAAS49K,EAAkBC,EAAO7/L,EAAG3I,GACxC,IAAIyoM,EAAYD,EAAM9gM,cAAc,QAChCnI,EAAWipM,EAAMrrL,cAAcva,wBAC/B8lM,EAAiB//L,EAAE7M,OAAO8G,wBAC9B6lM,EAAUzoM,UAAYA,EACtBwoM,EAAMjmM,MAAMC,QAAU,GACtB,IAAImmM,GAAgB,eAAkBhgM,EAAE26H,SAAW36H,EAAE+0K,eAAe,GAAGp6C,QACnE36H,EAAE26H,SAAWklE,EAAMvjM,aAAe,GACtCujM,EAAMjmM,MAAMhC,IAAMmoM,EAAenoM,IAAMhB,EAASgB,KAC3CooM,IAAiBH,EAAMvjM,aAAe,IAAMujM,EAAMvjM,aAAe,IAAM,KAC5EujM,EAAMjmM,MAAM/B,KAAOooM,EAAqBJ,EAAO7/L,EAAG+/L,EAAgBnpM,EAASiB,MAAQ,KAC/EmoM,GACAH,EAAM9gM,cAAc,eAAenF,MAAMC,QAAU,GACnDgmM,EAAM9gM,cAAc,aAAanF,MAAMC,QAAU,SAGjDgmM,EAAM9gM,cAAc,eAAenF,MAAMC,QAAU,OACnDgmM,EAAM9gM,cAAc,aAAanF,MAAMC,QAAU,IAczD,SAASomM,EAAqBhnL,EAAOjZ,EAAG+/L,EAAgBloM,GACpD,IAAIM,EAAQ8gB,EAAM5c,YAAc,EAC5BxD,EAAIqnM,EAAYlgM,GAAGnH,EACvB,OAAIA,EAAIknM,EAAeloM,KAAOM,EACnB4nM,EAAeloM,KAAOA,EAExBkoM,EAAet6I,MAAQ5sD,EAAIV,EACzB4nM,EAAet6I,MAAQ5tD,EAAe,EAARM,EAG9BU,EAAIhB,EAAOM,EAQnB,SAAS4mM,EAAoBnpK,GAChC,OAAIA,aAAe,OACR,eAAS,aAAcA,GAGvBA,EAUR,SAASuqK,EAAavgJ,EAAMprB,EAAU4rK,GACzC,IAAI3+K,EAASm+B,EACb,MAAOn+B,EAAQ,CACX,GAAI2+K,EAAO3+K,EAAOtjB,KAAOq2B,EAAW/S,EAAO1pB,UAAUmB,SAASs7B,GAC1D,MAEJ/S,EAASA,EAAOjN,cAEpB,OAAOiN,EAQJ,SAAS4+K,EAAgBpqM,EAAS0nC,GAErC,IADA,IAAIr+B,GAAS,EACJzL,EAAI,EAAGiiB,EAAM6nB,EAASnqC,OAAQK,EAAIiiB,EAAKjiB,IAC5C,GAAI8pC,EAASn5B,SAAS3Q,EAAE4Q,WAAY,KAAK2mK,YAAYn1K,GAAU,CAC3DqJ,EAAQzL,EACR,MAGR,OAAOyL,EAQJ,SAASghM,EAAQh1L,EAAOgyB,GAC3B,IAAK,IAAIzpC,EAAI,EAAGiiB,EAAMwnB,EAAW9pC,OAAQK,EAAIiiB,EAAKjiB,IAC9C,GAAIypC,EAAW94B,SAAS3Q,EAAE4Q,WAAY,OAAS6G,EAC3C,OAAOzX,EAGf,OAAQ,EAOL,SAAS0sM,EAAsBjjK,GAElC,IADA,IAAImjG,EAAO,GACF5sI,EAAI,EAAGiiB,EAAMwnB,EAAW9pC,OAAQK,EAAIiiB,EAAKjiB,IAE1CypC,EAAW94B,SAAS3Q,EAAE4Q,WAAY,KAAK9R,eAAe,cACtD8tI,EAAKvhI,KAAKo+B,EAAW94B,SAAS3Q,EAAE4Q,WAAY,KAAKoJ,YAGjD4yH,EAAKvhI,KAAKo+B,EAAW94B,SAAS3Q,EAAE4Q,WAAY,MAGpD,OAAOg8H,EAQJ,SAAS+/D,EAAcrtM,EAAQqhC,GAElC,IADA,IAAImJ,EAAW,GAAGp9B,MAAMpK,KAAKhD,EAAOoiB,iBAAiBif,IAC5C3gC,EAAI,EAAGA,EAAI8pC,EAASnqC,OAAQK,IACjC,gBAAO8pC,EAASn5B,SAAS3Q,EAAE4Q,WAAY,MAQxC,SAASy7L,EAAYlgM,GACxB,IAAIpJ,EAAW,GAKf,OAJAA,EAASiC,EAAK,eAAkBmH,EAAE06H,SAAW16H,EAAE+0K,eAAe,GAAGr6C,QAC7D16H,EAAE06H,QACN9jI,EAASkC,EAAK,eAAkBkH,EAAE26H,SAAW36H,EAAE+0K,eAAe,GAAGp6C,QAC7D36H,EAAE26H,QACC/jI,EAEX,IAAIowB,EAAM,EAMH,SAASy5K,EAAO90E,GACnB,OAAOA,EAAS3kG,IAQb,SAASmjH,EAAevqF,EAAMnsC,GACjC,IAAK,IAAI5f,EAAI,EAAGiiB,EAAMrC,EAASjgB,OAAQK,EAAIiiB,EAAKjiB,IACxCiiB,IAAQrC,EAASjgB,OACjBosD,EAAKroD,YAAYkc,EAASjP,SAAS3Q,EAAE4Q,WAAY,MAGjDm7C,EAAKroD,YAAYkc,EAAS,IAGlC,OAAOmsC,EA4BJ,SAAS8gJ,EAAmBr/L,EAAMqd,EAAM0D,EAAQizE,GACnD,GAAa,WAATh0F,EAAmB,CACnB,IAAIk0F,EAAOnzE,EAAOozE,gBAIlB,MAHoB,kBAATD,IACPA,EAAO,eAASA,EAAMn8F,SAEnBm8F,EAAOA,EAAKp/F,KAAKk/F,EAAS32E,EAAM0D,GAAU,GAErD,OAAQA,EAAOsC,SAAShG,GAAQA,aAAgBjsB,MAAS,OAASw3B,WAAW5oB,EAAKqT,eAAegK,EAAM0D,EAAOsC,OAAS,KAG3H,IAiBI0wD,EAyoBOurH,EA1pBPjzJ,EAAc,KAIX,SAASV,IACZ,GAAoB,OAAhBU,EACA,OAAOA,EAEX,IAAIkzJ,EAAUngM,SAASrJ,cAAc,OACjCkU,EAAQ,EAKZ,OAJAs1L,EAAQhnM,MAAMksH,QAAU,8EACxBrlH,SAAS6B,KAAK/K,YAAYqpM,GAC1Bt1L,EAASs1L,EAAQvkM,YAAcukM,EAAQxkM,YAAe,EACtDqE,SAAS6B,KAAKolC,YAAYk5J,GACnBlzJ,EAAcpiC,EASlB,SAAS8hC,EAAan3C,GACzB,QAAkBmI,IAAdg3E,EACA,OAAOA,EAEX,IAAIvgD,EAAQ,eAAc,QAAS,CAAEx9B,UAAW,OAAgB0K,OAAQ,qBAAsBF,MAAO,CAAEC,KAAM,UAC7G+yB,EAAMl3B,UAAY,uCAClB1H,EAAQsB,YAAYs9B,GACpB,IAAI8uG,EAAO9uG,EAAM91B,cAAc,MAAM9E,wBAGrC,OAFAhE,EAAQyxC,YAAY7S,GACpBugD,EAAYp5E,KAAK2kC,KAAKgjG,EAAKzrI,QACpBk9E,EAyBJ,SAASyrH,EAAen8K,GAC3B,OAAOA,EAAM5tB,MAAM,KAAKtD,OAAS,EAO9B,SAASstM,EAAkBp8K,GAE9B,YADc,IAAVA,IAAoBA,EAAQ,IACzBA,EAAMhX,QAAQ,MAAO,OAOzB,SAASqzL,EAAiBr8K,GAE7B,YADc,IAAVA,IAAoBA,EAAQ,IACzBA,EAAMhX,QAAQ,kBAAmB,QAOrC,SAASszL,EAAkBt8K,GAE9B,YADc,IAAVA,IAAoBA,EAAQ,IACzBA,EAAMhX,QAAQ,OAAQ,KAS1B,SAASuzL,EAAWl1K,EAAK1qB,EAAMu+C,GAClC,IAAI11B,EAAMi2K,EAAavgJ,EAAM,QACzBshJ,GAAYh3K,GAAaA,IAAQA,EAAInyB,UAAUmB,SAAS,iBAC5D,MAAa,cAATmI,GAAwB6/L,IACpBn1K,EAAIihH,YAAcjhH,EAAIvC,eAAiBuC,EAAIyc,eAKjC,QAATnnC,IAAkB0qB,EAAIihH,eAIvBk0D,IAAan1K,EAAIyc,eAAiBzc,EAAIihH,aAAejhH,EAAIvC,cAW9D,SAAS23K,EAAgBC,GAC5B,IAAI3kE,EAAM,gBAAO,IAAM2kE,EAAKnrM,QAAQkI,GAAK,cAAeijM,EAAKnrM,SAC7D,MAAkC,UAA3BmrM,EAAK1oI,aAAaihC,OACpB,gBAAU,eAAgBynG,EAAKnrM,SAASzC,QAAU,gBAAU,8BAA+B4tM,EAAKnrM,SAASzC,SACvG4tM,EAAK1oI,aAAa8mF,qBAAsB/iB,GAAMA,EAAI1kI,UAAUmB,SAAS,kBASzE,SAAS2uC,EAAK+X,EAAMpsC,GACvB,IAAI6tL,EAAS,SACbzhJ,EAAOA,aAAgBntD,MAAQmtD,EAAO,CAACA,GACvC,IAAK,IAAI/rD,EAAI,EAAGA,EAAI+rD,EAAKpsD,OAAQK,IACzB2f,EACAosC,EAAKp7C,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI0iM,GAG/CzhJ,EAAKp7C,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAUC,OAAOqpM,GAUvD,SAASp4J,GAAavnB,EAAgBU,GACzC,IAEIxJ,EAFAq5E,EAAOvwE,EAAeuxD,WAAW,kBACjC9jE,EAAS,SAQb,OANoB,SAAhBiT,EAAO/gB,MAAmC,aAAhB+gB,EAAO/gB,MAAuC,aAAhB+gB,EAAO/gB,OAC/DuX,EAAO,CAAEvX,KAAsB,aAAhB+gB,EAAO/gB,KAAsB,OAAS+gB,EAAO/gB,KAAM+N,SAAUgT,EAAOjT,QACnD,kBAAnBiT,EAAa,QAAqC,QAAlBA,EAAOjT,SAChDyJ,EAAK,GAAKzJ,GAAUiT,EAAOjT,SAG3BiT,EAAO/gB,MACX,IAAK,OACD+gB,EAAO6mB,aAAagpD,EAAK/oD,kBAAkBtwB,IAC3CwJ,EAAO+mB,UAAU8oD,EAAK7oD,kBAAkBxwB,IACxC,MACJ,IAAK,WACDwJ,EAAO6mB,aAAagpD,EAAK/oD,kBAAkBtwB,IAC3CwJ,EAAO+mB,UAAU8oD,EAAK7oD,kBAAkBxwB,IACxC,MACJ,IAAK,WACDwJ,EAAO6mB,aAAagpD,EAAK/oD,kBAAkBtwB,IAC3CwJ,EAAO+mB,UAAU8oD,EAAK7oD,kBAAkBxwB,IACxC,MACJ,IAAK,SACDwJ,EAAO6mB,aAAagpD,EAAK/oD,kBAAkB,CAAE/5B,OAAQiT,EAAOjT,UAC5DiT,EAAO+mB,UAAU8oD,EAAK7oD,kBAAkB,CAAEj6B,OAAQiT,EAAOjT,UACzD,OAUL,SAASmyL,GAAuBhtJ,EAAO31C,GAE1C,IADA,IAAIia,EAAO,GACFlY,EAAK,EAAGA,EAAKnN,UAAUC,OAAQkN,IACpCkY,EAAKlY,EAAK,GAAKnN,UAAUmN,GAE7B,IAAK,IAAI7M,EAAI,EAAGiiB,EAAMw+B,EAAM9gD,OAAQK,EAAIiiB,EAAKjiB,IACrC8K,GACA,eAAU21C,EAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAMmU,EAAKrY,QAAS,IAC3D+zC,EAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKjH,aAAa,gBAAiB,UAGhE,eAAU82C,EAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAM,GAAImU,EAAKrY,SACtD+zC,EAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKhH,gBAAgB,kBASvD,SAAS8jM,GAAqB19K,GAGjC,IAFA,IAAI0xE,EAAO,GACPgwC,EAAM,GACD1xI,EAAI,EAAGA,EAAIgwB,EAAOrwB,OAAQK,IACzBgwB,EAAOrf,SAAS3Q,EAAE4Q,WAAY,OAAQ8wF,IACxCgwC,EAAIrmI,KAAK2kB,EAAOrf,SAAS3Q,EAAE4Q,WAAY,KAAKA,YAC5C8wF,EAAK1xE,EAAOrf,SAAS3Q,EAAE4Q,WAAY,MAAQ,GAGnD,OAAO8gI,EAQJ,SAASi8D,GAAqBruM,EAAQypI,GACzC,IAAI6kE,EAAiB7kE,EAAU3mI,QAAQ2D,MAAMC,QAC7C+iI,EAAU3mI,QAAQ2D,MAAMC,QAAU,QAClC,IAAI6nM,EAAW9kE,EAAUzkI,MACrB4L,EAAS,eAA+B5Q,EAAQypI,EAAU3mI,SAC9D2mI,EAAU3mI,QAAQ2D,MAAMC,QAAU4nM,EAClC7kE,EAAU3mI,QAAQ2D,MAAMhC,IAAOmM,EAAOnM,IAAMzE,EAAO8G,wBAAwB/B,OAAU,EAAI,KACzF,IAAIypM,EAAY59L,EAAOlM,KAAO6pM,EAAYvuM,EAAOiJ,YAE7CwgI,EAAU3mI,QAAQ2D,MAAM/B,KADxB8pM,EAAU,EACsBD,EAAWC,EAAW,GAAK,KAG5BA,GAAW,EAAI,KAU/C,SAASC,GAAqBhpL,EAAMgkH,GACvChkH,EAAKK,MAAMhjB,QAAQ2D,MAAMgd,QAAUgmH,EAAUhmH,OAAS,GAAGnS,WAOtD,SAASo9L,GAAejiJ,GAC3B,IAAIypC,EAAOzpC,EAAK7gD,cAAc,YAC1B+mC,EAAQujD,EAAKq8C,gBACbr8C,EAAKtxF,UAAUmB,SAAS,YACxB4sC,EAAMF,SAAU,EAChB,eAAUyjD,EAAM,CAAC,aAAc,CAAC,cAGhCvjD,EAAMF,SAAU,EAChB,eAAUyjD,EAAM,CAAC,WAAY,CAAC,eAS/B,SAASy4G,GAAWliJ,EAAMha,GAC7Bga,EAAKha,QAAUA,EASZ,SAASm8J,GAAmB/6K,EAAK44B,EAAMvoD,GAC1C,IAAI+5C,EAAM,eAAc,MAAO,CAAE/5C,UAAWA,IAG5C,OAFA+5C,EAAI75C,YAAYqoD,GAChBxO,EAAI5zC,aAAa,MAAOwpB,GACjBoqB,EAQJ,SAAS4wJ,GAAqBpiJ,EAAMha,GACvC,gBAAY,CAACga,GAAO,CAAC,UAAW,SAAU,cACtCha,EACAga,EAAK7nD,UAAU4G,IAAI,WAGnBihD,EAAK7nD,UAAU4G,IAAI,aAYpB,SAASsjM,GAAmB/3K,EAAKlI,EAAStD,GAC7C,IAAK,IAAI7qB,EAAI,EAAGA,EAAImuB,EAAQxuB,OAAQK,IAChC,gBAASmuB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKigB,MAAOw9K,GAAelgL,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAMia,GAAOwL,EAAIwE,gBAEvH,IAAI4lB,EAAQpqB,EAAIoqB,MAChB,IAASzgD,EAAI,EAAGA,EAAIygD,EAAM9gD,OAAQK,IAC1BygD,EAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKgoB,cAClC,gBAAS,iBAAkB,eAAS6nB,EAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAK2d,OAAOsC,MAAOwF,EAAIwE,gBAAiB4lB,EAAM9vC,SAAS3Q,EAAE4Q,WAAY,MAc3I,SAASy9L,GAAe9/K,EAAQ1D,EAAMyjL,EAAQzzK,GACjD,IAAI0zK,EAAShgL,EAAOqC,gBAChBrxB,EAAQ,eAAkB+uM,GAAmBj2G,EAAc9pE,EAAOsC,MAAOhG,EAAM0D,GAA3C+/K,EACxC/uM,EAAM,eAAkBA,GAAO,GAAKA,EACpC,IAAI+uB,EAAQ,IAAI,OACZkgL,EAAQ3zK,IAAoBtM,EAAOH,sBAAsB,QAAgBG,EAAOH,WAAWA,WAAW2G,KAAKp1B,OAC3G4uB,EAAOH,WAAWA,WAAW2G,KAAOxG,EAAOiC,YAO/C,OANIjxB,EAAIyyB,OACJ1D,EAAM6D,MAAMs8K,GAAiB,CAAE59K,MAAO09K,EAAQt8K,SAAU,QAASxa,MAAOlY,EAAK2yB,WAAW,KAGxF5D,EAAM6D,MAAMo8K,EAAQ,KAAMhvM,GAAK,GAE5B,IAAI,OAAYivM,GAAO38K,aAAavD,GAUxC,SAASogL,GAA2B39K,EAAiB5C,GACxD,IAAII,EACJ,OAAOJ,EAAQ6K,MAAK,SAAUd,GAE1B,OADA3J,EAAS2J,EACFA,EAAInH,kBAAoBA,MAC7BxC,EAOH,SAASogL,GAAQl3L,GACpB,OAAIA,EAAQ,GACD,IAAMA,EAEViuH,OAAOjuH,GASX,SAASg3L,GAAiBG,EAAcphM,EAAM85H,GACjD,IAAIunE,EACA9gI,EACA+gI,EACAC,EAAU,eAAW,GAAI7D,EAAoB0D,IAC7CI,EAAU,eAAW,GAAI9D,EAAoB0D,IACjD,GAAI,eAAkBA,EAAan3L,QAAiC,KAAvBm3L,EAAan3L,MAEtD,OADAo3L,EAAgB,IAAI,OAAUE,EAAQl+K,MAAOk+K,EAAQ98K,SAAU88K,EAAQt3L,OAAO,GACvEo3L,EAEX,IAAIp3L,EAAQ,IAAIE,KAAKi3L,EAAan3L,OAClC,GAAa,aAATjK,GAAwB85H,EASxB,GAA8B,UAA1BsnE,EAAa38K,UAAkD,aAA1B28K,EAAa38K,SAAyB,CAC9D,aAATzkB,GACAugE,EAAW,IAAIp2D,KAAKF,EAAMioB,WAAWjoB,EAAM+K,aAAe,IAC1DssL,EAAW,IAAIn3L,KAAKF,EAAMioB,WAAWjoB,EAAM+K,aAAe,IAC1DosL,EAAan3L,MAAQ,IAAIE,KAAKF,EAAMioB,WAAWovK,EAAStsL,aAAe,MAGvEurD,EAAW,IAAIp2D,KAAKF,EAAM4K,SAAS,GAAK,GACxCysL,EAAW,IAAIn3L,KAAKF,EAAM4K,SAAS,MAEvC0sL,EAAQt3L,MAAQs2D,EAChBihI,EAAQv3L,MAAQq3L,EACc,UAA1BF,EAAa38K,UACb88K,EAAQ98K,SAAW,cACnB+8K,EAAQ/8K,SAAW,YAEY,aAA1B28K,EAAa38K,WAClB88K,EAAQ98K,SAAW,kBACnB+8K,EAAQ/8K,SAAW,sBAEvB,IAAIg9K,EAAc,IAAI,OAAUF,EAAQl+K,MAAOk+K,EAAQ98K,SAAU88K,EAAQt3L,OAAO,GAC5Ey3L,EAAe,IAAI,OAAUF,EAAQn+K,MAAOm+K,EAAQ/8K,SAAU+8K,EAAQv3L,OAAO,GACjFo3L,EAA0C,UAA1BD,EAAa38K,SAAuBg9K,EAAYv0K,IAAIw0K,GAAgBD,EAAY78K,GAAG88K,OAElG,CACY,SAAT1hM,GAA8C,oBAA1BohM,EAAa38K,UAA4D,gBAA1B28K,EAAa38K,WAChF88K,EAAQt3L,MAAQ,IAAIE,KAAKF,EAAM4K,SAAS,IAAM,IAEnB,kBAAnB0sL,EAAa,QACrBA,EAAQt3L,MAAQ,IAAIE,KAAKo3L,EAAQt3L,QAEjC8Z,EAAa,IAAI,OAAUw9K,EAAQl+K,MAAOk+K,EAAQ98K,SAAU88K,EAAQt3L,OAAO,GAC/Eo3L,EAAgBt9K,MAzCoB,CACT,kBAAnBw9K,EAAa,QACrBA,EAAQt3L,MAAQ,IAAIE,KAAKo3L,EAAQt3L,QAErC,IAAI03L,EAAiBJ,EAAQt3L,MAAMU,cAAgB,IAAMw2L,GAAQI,EAAQt3L,MAAMuuB,WAAa,GAAK,IAAM2oK,GAAQI,EAAQt3L,MAAMouB,WACzHtU,EAAa,IAAI,OAAUw9K,EAAQl+K,MAAOk+K,EAAQ98K,SAAUk9K,GAAgB,GAChFN,EAAgBt9K,EA4CpB,OANIq9K,EAAa3kM,cACb2kM,EAAa3kM,cAAc,CAAEm/H,YAAaylE,IAAiB,GAG3DD,EAAaxlE,YAAcylE,EAExBA,EAOJ,SAASO,GAAgBhqG,GAC5B,OAAOA,EAAK3zE,sBAAwB2zE,EAAKzzE,cAAcxD,QAAQxuB,OAAS,GAAKylG,EAAKiG,oBAC7EjG,EAAKzzE,cAAc6F,kBASrB,SAASqyK,GAAUh5K,EAAOw+K,GAE7B,QADc,IAAVx+K,IAAoBA,EAAQ,IAC5BA,EAAO,CAGP,IAFA,IAAIpZ,EAAQ43L,EACRC,EAASz+K,EAAM5tB,MAAM,KAChBjD,EAAI,EAAGA,EAAIsvM,EAAO3vM,SAAW,eAAkB8X,GAAQzX,IAE5D,GADAyX,EAAQA,EAAM63L,EAAO3+L,SAAS3Q,EAAE4Q,WAAY,MACxC,gBAAY6G,GAAQ,CACpB,IAAI83L,EAAUD,EAAO3+L,SAAS3Q,EAAE4Q,WAAY,KAAKuO,OAAO,GAAG8iB,cACrDqtK,EAAO3+L,SAAS3Q,EAAE4Q,WAAY,KAAKlE,MAAM,GAC/C+K,EAAQ43L,EAAO,GAAKE,IAAYF,GAAQ,GAAKE,GAASpwL,OAAO,GAAG0B,eAAiB,GAAK0uL,GAAS7iM,MAAM,IAG7G,OAAO+K,GASR,SAAS+3L,GAAoBl0L,EAAQme,GACxC,IACIg2K,EADAhyH,EAAO,IAAI,OAEXi3D,EAAY,SACZlnI,EAAO,OAWX,OATIiiM,EADY,SAAZh2K,EACkC,kBAAb,EACjBgkD,EAAKxhE,eAAe,CAAEzO,KAAM8N,EAAO,GAAK9N,GAAQ8N,EAAO,GAAK9N,GAAQ,OAAQ8N,OAAQA,EAAO,GAAKo5H,KAAc,GAC9Gj3D,EAAKxhE,eAAe,CAAEzO,KAAM,WAAY+N,SAAUD,IAAU,GAG9B,kBAAb,EACjBmiE,EAAKxhE,eAAe,CAAEzO,KAAM8N,EAAO,GAAK9N,GAAQ8N,EAAO,GAAK9N,GAAQ,WAAY8N,OAAQA,EAAO,GAAKo5H,KAAc,GAClHj3D,EAAKxhE,eAAe,CAAEzO,KAAM,WAAY+N,SAAUD,IAAU,GAE7Dm0L,EAQJ,SAASC,GAAiBp+K,EAAMu2C,GAGnC,IAFA,IAAI1xC,EAAO7E,EAAKmvD,gBACZ1+C,EAAM,GACDl1B,EAAK,EAAG4nF,EAASt+D,EAAMtpB,EAAK4nF,EAAO90F,OAAQkN,IAAM,CACtD,IAAIwpB,EAAMo+D,EAAO5nF,GACjB,GAAIwpB,EAAIopD,WAAappD,EAAImhG,YAAa,CAClC,IAAI/rH,EAAQ6lB,EAAKE,aAAkC,aAAnBF,EAAKq+K,UAA2Bt5K,EAAI5qB,MAC/D6lB,EAAKwF,aAAaC,YAAczF,EAAKwF,aAAaG,SAAY3F,EAAKwF,aAAaG,SAAWZ,EAAI5qB,MAC/F,eAAkBA,KACnBs2B,EAAIpxB,SAASlF,EAAMmF,WAAY,KAAO,GACtCmxB,EAAIpxB,SAASlF,EAAMmF,WAAY,KAAK6uE,UAAW,EAC3CnuD,EAAK8tB,YACLrd,EAAIpxB,SAASlF,EAAMmF,WAAY,KAAKqoH,UAAY22E,GAAkBv5K,EAAI+oB,UAAWyoB,GACjF9lC,EAAIpxB,SAASlF,EAAMmF,WAAY,KAAKqoH,UAAU3qG,MAAQgD,EAAK8tB,UAAU9wB,SAKrF,OAAOyT,EAQJ,SAAS6tK,GAAkBt+K,EAAMu2C,QACT,IAAvBA,IAAiCA,EAAqB,YAC1D,IAAIgoI,EAAiB,GACrB,IAAKv+K,EACD,OAAOu+K,EAEX,IAAK,IAAIhjM,EAAK,EAAGhK,EAAK,OAAMmnE,cAAen9D,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC7D,IAAItN,EAAMsD,EAAGgK,GAETgjM,EAAe,GAAKtwM,GADZ,YAARA,EAC2BmtM,EAAsBp7K,EAAKoE,cAEzC,gBAARn2B,EACyC,gBAAnB+xB,EAAKq+K,UAGLzE,EAAoB55K,EAAK,GAAK/xB,IAOjE,OAJAswM,EAAe,gBAAiB,GAC3Bv+K,EAAK8tB,WAAa9tB,EAAK6tB,iBAA0C,SAAvB0oB,IAC3CgoI,EAAerrH,aAAekrH,GAAiBp+K,EAAMu2C,IAElDgoI,EAUJ,SAASC,GAAgBz4G,EAAQi9C,EAAOvqH,EAAQgmL,GACnD,IAAIr+D,EAAMr6C,GAAU,GAChBp1E,EAAMviB,UAAUC,OAChBowM,IACA9tL,GAAY,GAEhB,IAAK,IAAIjiB,EAAI,EAAGA,EAAIiiB,EAAKjiB,IAErB,GAAKN,UAAUiR,SAAS3Q,EAAE4Q,WAAY,KAOtC,IAHA,IAAIo/L,EAAOtwM,UAAUiR,SAAS3Q,EAAE4Q,WAAY,KACxCwD,EAAO3V,OAAO2V,KAAK3V,OAAO2iH,eAAe4uF,IAAOrwM,OAChDlB,OAAO2V,KAAK47L,GAAM/hK,OAAOgiK,GAAmBD,IAASvxM,OAAO2V,KAAK47L,GAC5DvmB,EAAM,EAAGA,EAAMr1K,EAAKzU,OAAQ8pL,IAAO,CACxC,IAAIl0C,EAAS7D,EAAIt9H,EAAKzD,SAAS84K,EAAI74K,WAAY,MAC3Cs/L,EAAMF,EAAK57L,EAAKzD,SAAS84K,EAAI74K,WAAY,MACzCu/L,OAAM,EACNJ,IAAS,gBAASG,IAAQtxM,MAAM68B,QAAQy0K,IACpC,gBAASA,IACTC,EAAM56D,GAAkB,GACxB7D,EAAIt9H,EAAKzD,SAAS84K,EAAI74K,WAAY,MAAQ,eAAW,GAAIu/L,EAAKD,EAAKH,KAGnEI,EAAM56D,GAAkB,GACxB7D,EAAIt9H,EAAKzD,SAAS84K,EAAI74K,WAAY,MAAQ,eAAW,GAAIu/L,EAAKD,EAAKH,IAIvEr+D,EAAIt9H,EAAKzD,SAAS84K,EAAI74K,WAAY,MAAQs/L,EAItD,OAAOx+D,EAOX,SAASu+D,GAAmBluK,GACxB,IAAI3tB,EAAO,GACX,MAAO3V,OAAO2iH,eAAer/E,IAAQtjC,OAAO2V,KAAK3V,OAAO2iH,eAAer/E,IAAMpiC,OACzEyU,EAAOA,EAAK65B,OAAOxvC,OAAO2V,KAAK3V,OAAO2iH,eAAer/E,KACrDA,EAAMtjC,OAAO2iH,eAAer/E,GAEhC,OAAO3tB,EAOJ,SAASg8L,GAAmB7hL,GAE/B,IADA,IAAIlW,EAAM,EACDrY,EAAI,EAAGA,EAAIuuB,EAAO5uB,OAAQK,IAAK,CACpC,IAAI4gB,EAAQyvL,GAAW9hL,EAAO5d,SAAS3Q,EAAE4Q,WAAY,KAAM,GACvDyH,EAAMuI,IACNvI,EAAMuI,GAGd,OAAOvI,EAAM,EAQV,SAASg4L,GAAWn4K,EAAKzsB,GAC5B,IAAI4M,EAAM5M,EACN6kM,EAAU,GACd,GAAIp4K,EAAI/J,QAAS,CACb1iB,IACA,IAAK,IAAIzL,EAAI,EAAGA,EAAIk4B,EAAI/J,QAAQxuB,OAAQK,IACpCswM,EAAQ3/L,SAAS3Q,EAAE4Q,WAAY,KAAOy/L,GAAWn4K,EAAI/J,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAMnF,GAE9F,IAAK,IAAI6qB,EAAI,EAAGA,EAAIg6K,EAAQ3wM,OAAQ22B,IAC5Bje,EAAMi4L,EAAQ3/L,SAAS2lB,EAAE1lB,WAAY,OACrCyH,EAAMi4L,EAAQ3/L,SAAS2lB,EAAE1lB,WAAY,MAG7CnF,EAAQ4M,EAEZ,OAAO5M,EAQJ,SAAS8kM,GAAuBj/K,EAAMwgI,GACzC,IAAK,IAAI9xJ,EAAI,EAAGA,EAAI8xJ,EAAanyJ,OAAQK,IACrC8xJ,EAAanhJ,SAAS3Q,EAAE4Q,WAAY,KAAKuiB,IAAM2+H,EAAanhJ,SAAS3Q,EAAE4Q,WAAY,KAAKgoB,aACpF81K,GAA2B58C,EAAanhJ,SAAS3Q,EAAE4Q,WAAY,KAAKigB,MAAOS,EAAK7B,wBAAwB0D,IACtG7B,EAAK2nB,2BAA6Bu3J,GAA0Bl/K,EAAMwgI,EAAanhJ,SAAS3Q,EAAE4Q,WAAY,KAAKigB,OAAOsC,IAC9G7B,EAAKoG,iBAAiBo6H,EAAanhJ,SAAS3Q,EAAE4Q,WAAY,KAAKigB,OAAOsC,IAejF,SAASs9K,GAAmBruM,GAC/B,IAAI2D,EAAQ6G,SAASowC,YAAYx3C,iBAAiBpD,EAAS,MACvDsuM,EAAa3qM,EAAML,iBAAiB,aACpCirM,EAAaD,EAAW72L,QAAQ,KAAM,IACtC6xF,EAAa5lG,WAAW,EAAa7C,MAAM,KAAK,IAChD2tM,EAAa9qM,WAAW,EAAa7C,MAAM,KAAK,IACpD,MAAO,CAAEqB,MAAOonG,EAAYrnG,OAAQusM,GAQjC,SAASz5E,GAAiB05E,EAAazuM,GACtCyuM,EAAY3sM,UAAUmB,SAAS,aAC/BjD,EAAQ8B,UAAU4G,IAAI,YAQvB,SAASgmM,GAAex/K,GAC3B,IAAIk9I,EAAal9I,EAAK0nB,aAAav4B,kBACnC,OAAO+tJ,EAAW30H,YAAc20H,EAAWhmK,YAAc2wC,IAAsB,EAQ5E,SAAS43J,GAAyBz/K,EAAM4iE,GAC3C,IAAI7S,EAAU,EACV9qD,EAAOjF,EAAKoE,aACZpxB,EAAc,GAAN4vF,EACR5iE,EAAK+tB,kBACLgiC,IACA/8E,GAAS,IAEb+8E,GAAY/vD,EAAKK,cAAcxD,QAAQxuB,OAASu0F,EAChD5vF,GAAU,IAAMgtB,EAAKK,cAAcxD,QAAQxuB,OAASu0F,GAGpD,IAFA,IAAI88G,GAA4B,SAAf1/K,EAAKhtB,MAAmBgtB,EAAKlvB,QAAQoG,YAAcmI,SAAS2gB,EAAKhtB,MAAMsM,WAAY,KAChGkgM,GAAex/K,GACVtxB,EAAI,EAAGA,EAAIu2B,EAAK52B,OAAQK,IAK7B,GAJIu2B,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKglB,UACjCtxB,GAASqM,SAAS4lB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKtM,MAAMsM,WAAY,IACrEywE,KAEA/8E,EAAQ0sM,EAAW,CACnB3vH,IACA,MAGR,OAAOA,EAQJ,SAAS4vH,GAA4B3yH,EAAIhtD,GAE5C,IADA,IAAIhtB,EAAQ,EACHgyB,EAAI,EAAGA,EAAIgoD,EAAGxqC,WAAWn0C,OAAQ22B,IAAK,CAC3C,IAAIqpD,EAAKrB,EAAGxqC,WAAWnjC,SAAS2lB,EAAE1lB,WAAY,KAO9C,GANA+uE,EAAGz7E,UAAU4G,IAAI,gBACjBomM,GAA6BvxH,EAAIr7E,EAAOgtB,EAAK7sB,UAAW,SACpDk7E,EAAGz7E,UAAUmB,SAAS,iBAAmBs6E,EAAGz7E,UAAUmB,SAAS,uBAC/Ds6E,EAAGz7E,UAAUmB,SAAS,2BACtBf,GAAS,IAETq7E,EAAGz7E,UAAUmB,SAAS,kBAAmB,CACzC,IAAIg8E,EAAU1wE,SAASgvE,EAAGj2E,aAAa,WAAY,IAC/C4nB,EAAK+tB,kBACLgiC,IACA/8E,GAAS,IAEb+8E,GAAqB/vD,EAAKK,cAAcxD,QAAQxuB,OAAS22B,EACzDhyB,GAAiB,IAAMgtB,EAAKK,cAAcxD,QAAQxuB,OAAS22B,GAE3D,IADA,IAAIC,EAAOjF,EAAKoE,aACP11B,EAAI,EAAGA,EAAIu2B,EAAK52B,OAAQK,IAAK,CAClC,GAAK2Q,SAASgvE,EAAGj2E,aAAa,WAAY,IAAM,GAC3CiH,SAAS4lB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKtM,MAAMsM,WAAY,IACvDtM,EAAUqM,SAAS2gB,EAAKhtB,MAAMsM,WAAY,IAAMkgM,GAAex/K,GAAQ,CAC7E,IAAI6/K,EAAaJ,GAAyBz/K,EAAMgF,GAChDqpD,EAAGh2E,aAAa,UAAWwnM,EAAWvgM,YACtC,MAMJ,GAJI2lB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKglB,UACjCtxB,GAASqM,SAAS4lB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKtM,MAAMsM,WAAY,IACrEywE,KAEY,IAAZA,EACA,OAIZ,GAAI1B,EAAGz7E,UAAUmB,SAAS,iBAAkB,CACxC,IAAIs7E,EAAQhB,EAAGj2E,aAAa,gBACxB6kB,EAAS+C,EAAKwI,eAAe6mD,GACjCr8E,GAASqM,SAAS4d,EAAOjqB,MAAMsM,WAAY,MAmEhD,SAASmqB,GAAahW,EAAMuJ,GAC/B,IAAIE,EAAQC,GAAsBH,GAC9BI,EAAM,IAAI,OAGd,OAFAF,EAAMJ,WAAaM,EAAIS,QACvBX,EAAM7O,OAASoF,EACR,CAAEyJ,MAAOA,EAAOmuE,SAAUjuE,GAO9B,SAASD,GAAsBH,GAClC,IAAIiO,EAAS,IAAI,OACbC,EAAK,IAAI,OAAY,CAAEJ,IAAK,GAAIzJ,QAAS,IAAI,SAC7CnE,EAAQ+N,EAAOE,aAAaD,EAAIlO,GAChCzD,EAAO6R,KAAKC,MAAMnO,EAAM3D,MAC5B,OAAOA,EAOJ,SAASumL,GAAkB9/K,GAI9B,IAHA,IAAInD,EAAUmD,EAAKgnE,oBACf+4G,EAAgB,EAChBC,EAAoB,EACftxM,EAAI,EAAGA,EAAImuB,EAAQxuB,OAAQK,IAC5B,gBAAYmuB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKtM,OAChDgtM,KAE4E,IAAvEnjL,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKtM,MAAMsM,WAAW5N,QAAQ,MAClEquM,IAGR,OAAuB,SAAf//K,EAAKhtB,OAA4C,kBAAhBgtB,EAAU,QAA+C,IAA7BA,EAAKhtB,MAAMtB,QAAQ,QACnFsuB,EAAKK,cAAcm/F,mBAAqBx/F,EAAKK,cAAcxD,QAAQxuB,QACjE0xM,IAAkBC,EAWtB,SAASC,GAAcjgL,EAAM6E,EAAMq7K,EAAS/lM,EAAOgmM,GAEtD,IADA,IAAI3tH,EAAar4E,GAAgB,EACxBzL,EAAIyxM,GAAgC,EAAGzxM,EAAIm2B,EAAKx2B,OAAQK,IAC7D,GAAIm2B,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,MAAQulB,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAKkuE,UAAW,CAChF3oD,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAKnF,MAAQq4E,EACzC3tD,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAK4yE,WAAWlyD,EAAKmzD,cAAeX,EAAa,IAAM,EACnF0tH,EAAQ7gM,SAAS3Q,EAAE4Q,WAAY,KAAKjH,aAAa,OAAuBm6E,EAAWlzE,YACnF4gM,EAAQ7gM,SAAS3Q,EAAE4Q,WAAY,KAAKjH,aAAa,QAAwBm6E,EAAa,GAAGlzE,YACrFulB,EAAKxlB,SAAS3Q,EAAE4Q,WAAY,KAAK4yE,SACjCguH,EAAQ7gM,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,YAGlD0mM,EAAQ7gM,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAUC,OAAO,YAEzD,IAAK,IAAImyB,EAAI,EAAGA,EAAIk7K,EAAQ7gM,SAAS3Q,EAAE4Q,WAAY,KAAK6vC,MAAM9gD,OAAQ22B,IAClEk7K,EAAQ7gM,SAAS3Q,EAAE4Q,WAAY,KAAK6vC,MAAM9vC,SAAS2lB,EAAE1lB,WAAY,KAAKjH,aAAa,QAASm6E,EAAWlzE,YAE3GkzE,IAGH3tD,EAAKx2B,QACN2xB,EAAK4nF,aAAa/e,UAAS,GAW5B,SAASu3G,GAAepgL,EAAM4J,EAAS1tB,EAAM8sH,GAChD,IAAIq3E,EAAWrgL,EAAK8oG,gBAAgB,GAAK5sH,GAAMygC,OAAO/S,EAAQ,GAAK1tB,IAAOy0C,QAAO,SAAUriD,EAAGgyM,GAE1F,OADAhyM,EAAEgyM,EAAE,GAAKt3E,SAAqC/vH,IAAxB3K,EAAEgyM,EAAE,GAAKt3E,IAA2Bs3E,EAAInzM,OAAOquG,OAAOltG,EAAEgyM,EAAE,GAAKt3E,IAAYs3E,GAC1FhyM,IACR,IACH0xB,EAAK8oG,gBAAgB,GAAK5sH,GAAQ/O,OAAO2V,KAAKu9L,GAAU9rM,KAAI,SAAU4wB,GAAK,OAAOk7K,EAAS,GAAKl7K,MAO7F,SAASyoE,GAAe5tE,GAC3B,EAAOkqE,cAAc0mG,YACjB,GAAGx1L,MAAMpK,KAAKgvB,EAAKlvB,QAAQsf,iBAAiB,4BA2B7C,SAASmwL,GAActjL,EAAQ4E,GAClC,IAAI2+K,EAAO,GAGX,OAFAA,EAAKzmM,KAAKkjB,EAAO4E,KACjB4+K,GAAQxjL,EAAQujL,GACZA,EAAK9uM,QAAQmwB,IAAQ,EAatB,SAAS4+K,GAAQxjL,EAAQujL,GAC5B,IAAK,IAAI9xM,EAAI,EAAGA,EAAIuuB,EAAOJ,QAAQxuB,OAAQK,IACnCuuB,EAAOJ,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKuiB,KAC3C2+K,EAAKzmM,KAAKkjB,EAAOJ,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKuiB,KAErD5E,EAAOJ,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKud,SAC3CI,EAAOJ,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKud,QAAQxuB,QACnDoyM,GAAQxjL,EAAOJ,QAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAMkhM,GASzD,SAASE,GAAgBzjL,GAC5B,OAAIA,EAAOJ,QAAQ,GAAGm6C,QAAU/5C,EAAOJ,QAAQ,GAAGouB,SACb,SAA7BhuB,EAAOJ,QAAQ,GAAGm6C,QAAqB/5C,EAAOJ,QAAQ,GAAGouB,SAClD,OAE2B,UAA7BhuB,EAAOJ,QAAQ,GAAGm6C,OAChB,QAE2B,UAA7B/5C,EAAOJ,QAAQ,GAAGm6C,OAChB,QAGA,OAIP/5C,EAAOJ,QAAQ,GAAGA,SAAWI,EAAOJ,QAAQ,GAAGA,QAAQxuB,OAChDqyM,GAAgBzjL,EAAOJ,QAAQ,IAG/B,OASZ,SAAS8jL,GAAqB57K,GACjC,GAAIA,EAAInrB,cAAc,kBAElB,IADA,IAAIu1C,EAAQ,GAAG/zC,MAAMpK,KAAK+zB,EAAI3U,iBAAiB,iHACtC4U,EAAI,EAAGA,EAAImqB,EAAM9gD,OAAQ22B,IAC1BmqB,EAAM9vC,SAAS2lB,EAAE1lB,WAAY,KAAK1M,UAAUmB,SAAS,oBAAuBo7C,EAAMnqB,EAAI,IACrFmqB,EAAMnqB,EAAI,KAAOmqB,EAAMnqB,EAAI,GAAGpyB,UAAUmB,SAAS,mBAClDo7C,EAAM9vC,SAAS2lB,EAAE1lB,WAAY,KAAK1M,UAAU4G,IAAI,sBAEhD21C,EAAM9vC,SAAS2lB,EAAE1lB,WAAY,KAAK1M,UAAUmB,SAAS,oBAAuBo7C,EAAMnqB,EAAI,IACrFmqB,EAAMnqB,EAAI,KAAOmqB,EAAMnqB,EAAI,GAAGpyB,UAAUmB,SAAS,mBAClDo7C,EAAM9vC,SAAS2lB,EAAE1lB,WAAY,KAAK1M,UAAU4G,IAAI,uBAazD,SAASomM,GAA6B9jK,EAAM9oC,EAAOqrK,EAAO5sK,GAC5C,SAAbA,IACI4sK,EACAviI,EAAKrnC,MAAM6rD,MAAQttD,EAAQ,KAG3B8oC,EAAKrnC,MAAM/B,KAAOM,EAAQ,MAGjB,UAAbvB,IACI4sK,EACAviI,EAAKrnC,MAAM/B,KAAOM,EAAQ,KAG1B8oC,EAAKrnC,MAAM6rD,MAAQttD,EAAQ,MAWhC,SAAS4tM,GAAwB5gL,EAAM/C,EAAQ6e,GAClD,GAAsB,SAAlB7e,EAAO+5C,QAAqB/5C,EAAOguB,SAKnC,GAJAnP,EAAKlpC,UAAU4G,IAAI,gBACG,SAAlByjB,EAAO0rB,QACP7M,EAAKlpC,UAAU4G,IAAI,sBAEF,IAAjByjB,EAAO9iB,MACPylM,GAA6B9jK,EAA+B,GAAxB9b,EAAK4uB,iBAAwB5uB,EAAK7sB,UAAW,QAC7E6sB,EAAK2nB,6BACL1qB,EAAOmtF,OAAkC,GAAxBpqF,EAAK4uB,sBAGzB,CAGD,IAFA,IAAI3pB,EAAOjF,EAAKoE,aACZpxB,EAAgC,GAAxBgtB,EAAK4uB,iBACRlgD,EAAI,EAAGA,EAAIu2B,EAAK52B,OAAQK,IAAK,CAClC,GAAIuuB,EAAO4E,MAAQoD,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKuiB,IAChD,MAEAoD,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKglB,UACjCtxB,GAASwB,WAAWywB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKtM,MAAMsM,aAGnEsgM,GAA6B9jK,EAAM9oC,EAAOgtB,EAAK7sB,UAAW,QACtD6sB,EAAK2nB,6BACL1qB,EAAOmtF,OAASp3G,QAIvB,GAAsB,UAAlBiqB,EAAO+5C,OAAoB,CAChCl7B,EAAKlpC,UAAU4G,IAAI,iBACfyrB,EAAOjF,EAAKoE,aAIhB,GAHsB,UAAlBnH,EAAO0rB,QACP7M,EAAKlpC,UAAU4G,IAAI,uBAEnByjB,EAAO9iB,QAAU8qB,EAAKA,EAAK52B,OAAS,GAAG8L,MAAO,CAC1CnH,EAAiC,UAAzBgtB,EAAKqzD,iBAA+BrzD,EAAK+tB,gBAAkB,GAAK,EAC5E6xJ,GAA6B9jK,EAAM9oC,EAAOgtB,EAAK7sB,UAAW,SACtD6sB,EAAK2nB,6BACL1qB,EAAOmtF,OAASp3G,OAGnB,CAED,IADIA,EAAiC,UAAzBgtB,EAAKqzD,iBAA+BrzD,EAAK+tB,gBAAkB,GAAK,EACnEr/C,EAAIu2B,EAAK52B,OAAS,EAAGK,GAAK,EAAGA,IAAK,CACvC,GAAIuuB,EAAO4E,MAAQoD,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKuiB,IAChD,MAEAoD,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKglB,UACjCtxB,GAASwB,WAAWywB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKtM,MAAMsM,aAGnEsgM,GAA6B9jK,EAAM9oC,EAAOgtB,EAAK7sB,UAAW,SACtD6sB,EAAK2nB,6BACL1qB,EAAOmtF,OAASp3G,SAIvB,GAAsB,UAAlBiqB,EAAO+5C,OAAoB,CAChCl7B,EAAKlpC,UAAU4G,IAAI,iBACfyrB,EAAOjF,EAAKoE,aACZpxB,EAAQ,EACRgtB,EAAKsqB,4BACLt3C,EAAgC,GAAxBgtB,EAAK4uB,iBAEiB,UAAzB5uB,EAAKqzD,kBACVrgF,EAA4C,GAApCgtB,EAAKK,cAAcxD,QAAQxuB,QAEvC,IAASK,EAAI,EAAGA,EAAIu2B,EAAK52B,OAAQK,IAAK,CAClC,GAAIuuB,EAAO4E,MAAQoD,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKuiB,IAChD,OAE6C,SAA5CoD,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK03D,QAAqB/xC,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK2rC,UAC5C,UAA5ChmB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK03D,SAC7B/xC,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKglB,UACjCtxB,GAASwB,WAAWywB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKtM,MAAMsM,aAIvEsgM,GAA6B9jK,EAAO9oC,EAAQ,EAAIgtB,EAAK7sB,UAAW,QAChEH,EAAiC,UAAzBgtB,EAAKqzD,iBAA+BrzD,EAAK+tB,gBAAkB,GAAK,EACxE,IAASr/C,EAAIu2B,EAAK52B,OAAS,EAAGK,GAAK,EAAGA,IAAK,CACvC,GAAIuuB,EAAO4E,MAAQoD,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKuiB,IAChD,MAE4C,UAA5CoD,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK03D,QAAkE,UAA5C/xC,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAK03D,QACpF/xC,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKglB,UACjCtxB,GAASwB,WAAWywB,EAAK5lB,SAAS3Q,EAAE4Q,WAAY,KAAKtM,MAAMsM,aAIvEsgM,GAA6B9jK,EAAO9oC,EAAQ,EAAIgtB,EAAK7sB,UAAW,cAGhE2oC,EAAKlpC,UAAU4G,IAAI,cAUpB,SAASqnM,GAAoB7gL,EAAM4G,EAAK87D,GAC3C,MAAO,GAAGtnF,MAAMpK,KAAKgvB,EAAK41E,cAAcv2F,SAASqjF,EAASpjF,WAAY,KAAKuG,uBAAuB,SAU/F,SAASi7L,GAAwB9gL,EAAM4G,EAAK87D,EAAUvoF,GACzD,OAAO0mM,GAAoB7gL,EAAM4G,EAAK87D,GAAUrjF,SAASlF,EAAMmF,WAAY,KAaxE,SAASyhM,GAAmBn6K,EAAKzsB,EAAOy9E,EAAOklE,EAAQC,EAASpsI,EAAK85G,GACpEA,GAII7jG,EAAI0e,uBAAyB,SACxBnrC,GAASysB,EAAI0e,uBAAyB,QAAiC,IAAR30B,EAJxEinE,EAAM+jH,EAAkB/0K,EAAIrH,QAAUqH,EAAImmE,gBAOJ,YAA7BnmE,EAAI0e,sBAAuC1e,EAAI0e,qBAG/C1e,EAAI0e,uBAAyB,SAClCy3G,EAAQ4+C,EAAkB/0K,EAAIrH,QAAUqH,EAAImmE,iBAH5C+vD,EAAO6+C,EAAkB/0K,EAAIrH,QAAUqH,EAAImmE,gBAehD,SAAS1gB,GAAgB20H,EAAc9kM,EAAMqrH,EAAS2H,GACzD,IAAIllH,EACAmiE,EAAO,IAAI,OACf,GAAa,WAATjwE,EACA,IACI8N,EAASmiE,EAAK80H,iBAAiB,CAAEj3L,OAAQg3L,EAAc/xE,SAAUC,EAAcmB,aAAa,IAAQ,GAExG,MAAOpiC,GACHjkF,EAASg3L,OAGZ,GAAa,SAAT9kM,GAA4B,SAATA,GAA4B,aAATA,EAC3C,IAEI,GADA8N,EAASmiE,EAAKxhE,eAAe,CAAEV,SAAU+2L,EAAc9kM,KAAMA,GAAQqrH,GACjE,eAAkBv9G,GAElB,KAAM,QAGd,MAAOikF,GACH,IACIjkF,EAASmiE,EAAKxhE,eAAe,CAAEX,OAAQg3L,EAAc9kM,KAAMA,GAAQqrH,GAEvE,MAAOt5B,GACHjkF,EAASg3L,QAKjBh3L,EAASg3L,EAEb,GAAa,WAAT9kM,EAAmB,CACnB,IAAIglM,EAAe,0BACfC,EAAS,CAAE,EAAK,GAAI,EAAK,IAAK,EAAK,IAAKC,IAAM,IAAK,KAAM,SAAU,GAAM,KAAM,EAAK,OAAQ,KAAQ,OAAQ,EAAK,OACrHp3L,EAASA,EAAOzB,QAAQ24L,GAAc,SAAUzwL,GAE5C,OAAO0wL,EAAO,GAAK1wL,MAG3B,OAAOzG,EAOJ,SAASq3L,GAAgBrhL,GAC5B,GAAIA,EAAKsnB,iBAEL,IADA,IAAIg6J,EAAUhmM,SAASuK,uBAAuB,uBACrCnX,EAAI,EAAGA,EAAI4yM,EAAQjzM,OAAQK,IAChC4yM,EAAQjiM,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,YAUvD,SAAS+nM,GAA4Bp7L,EAAOq7L,GAK/C,IAJA,IAAIC,EACApzM,EAAS8X,EAAMxU,MAAM,KAAKtD,OAC1B2vM,EAAS73L,EAAMxU,MAAM,KACrB+vM,EAAeF,EACV9yM,EAAI,EAAGA,EAAIL,EAAQK,IACxB+yM,EAAYC,EAAa1D,EAAO3+L,SAAS3Q,EAAE4Q,WAAY,MACvDoiM,EAAeD,EAEnB,OAAOA,EAYJ,SAASE,GAAgB30H,EAAI4V,EAAKD,EAAY99D,EAAMvI,EAAQ2zH,GAG/D,IAFA,IAAI0lD,EAAMxoM,OAAO2V,KAAKkqE,GAClBujE,EAAc3tD,EACTl0F,EAAI,EAAGA,EAAIinM,EAAItnM,OAAQK,IAAK,CACjC,IAAI2/E,EAAKrB,EAAG2oH,EAAIt2L,SAAS3Q,EAAE4Q,WAAY,MAAM8Q,iBAAiB,gBAAgB/Q,SAASujF,EAAItjF,WAAY,KACvG,GAAIgd,IAAWA,EAAOsrB,iBAAmBtrB,EAAOyxB,gBAAiB,CAG7D,GAFAsgC,EAAO,eAAkBA,IAAQhvE,SAASgvE,EAAGj2E,aAAa,iBAAkB,MAAQwqF,EACzE5V,EAAG3tE,SAAS3Q,EAAE4Q,WAAY,KAAK1F,cAAc,qBAAwBgpF,EAAM,MAAhFvU,EACF,eAAkBA,GAClB,SAGAuU,EAAOtmE,EAAOgwB,kBAAkB1yC,cAAc,4CACzCy0E,EAAGmnB,UAAY,EAAKnnB,EAAGmnB,UAGpC,GAAIxoB,EAAG2oH,EAAIt2L,SAAS3Q,EAAE4Q,WAAY,MAAM8Q,iBAAiB,gBAAgB/hB,QAAUggF,EAAI,CAKnF,GAJA,gBAAkBrB,EAAG2oH,EAAIt2L,SAAS3Q,EAAE4Q,WAAY,MAAM8Q,iBAAiB,gBAAgB/Q,SAASujF,EAAItjF,WAAY,KAAM,CAAE,QAAWqjF,IAC/H3V,EAAG2oH,EAAIt2L,SAAS3Q,EAAE4Q,WAAY,MAAM8Q,iBAAiB,gBAAgB/Q,SAASujF,EAAItjF,WAAY,KAAK1M,UAAUmB,SAAS,WACtH,gBAAY,CAACi5E,EAAG2oH,EAAIt2L,SAAS3Q,EAAE4Q,WAAY,MAAM8Q,iBAAiB,gBAAgB/Q,SAASujF,EAAItjF,WAAY,MAAO,CAAC,WAElH2wI,GAAa3zH,EAAOyxB,iBAAqBzxB,GAAUA,EAAO01D,WAAa,CACxE,IAAI73E,EAAQyoF,EAAM,EAClB/9D,EAAK8wK,EAAIt2L,SAAS3Q,EAAE4Q,WAAY,MAAM6vC,MAAM9vC,SAASlF,EAAMmF,WAAY,KAAKglB,QAAyB,KAAfq+D,OAGjF,eAAkB99D,EAAK8wK,EAAIt2L,SAAS3Q,EAAE4Q,WAAY,SACnDulB,EAAK8wK,EAAIt2L,SAAS3Q,EAAE4Q,WAAY,MAAM6vC,MAAM9vC,SAASujF,EAAItjF,WAAY,KAAKglB,QAAyB,KAAfq+D,GACM,IAAtF99D,EAAK8wK,EAAIt2L,SAAS3Q,EAAE4Q,WAAY,MAAM6vC,MAAM9vC,SAASujF,EAAItjF,WAAY,KAAKglB,SAC1E0oD,EAAG2oH,EAAIt2L,SAAS3Q,EAAE4Q,WAAY,MAAM8Q,iBAAiB,gBAAgB/Q,SAASujF,EAAItjF,WAAY,KAAK1M,UAAU4G,IAAI,WAI7HopF,EAAM2tD,IAMX,SAASqxD,GAAuBtlL,EAAQ/hB,EAAKsnM,EAAMt6L,GACtD,IAAK,IAAIhM,EAAK,EAAGumM,EAAQvnM,EAAKgB,EAAKumM,EAAMzzM,OAAQkN,IAAM,CACnD,IAAI0gM,EAAO6F,EAAMvmM,GACbsmM,EACAvlL,EAAOG,GAAGw/K,EAAK7/L,MAAO6/L,EAAK51G,QAAS9+E,GAGpC+U,EAAOyF,IAAIk6K,EAAK7/L,MAAO6/L,EAAK51G,UAMjC,SAAS07G,GAAkBzlL,EAAQW,EAAQkrH,EAAYpxH,GAC1D,IAAI6wH,EAAmB+zD,EAAkB1+K,EAAOsC,OAKhD,OAJAxI,EAAO5pB,OAAOquG,OAAOzkF,EAAM,CACvB/d,GAAIsjB,EAAOxrB,QAAQkI,GAAK4uI,EACxBlqI,KAAMkqI,EAAkB,eAAgB3qH,EAAO4E,MAE5CvF,EAAOrqB,cAAc,QAAS,CACjCC,UAAWi2I,EAAYzrI,MAAOqa,IA0B/B,SAASmoL,GAA0Bl/K,EAAMT,GAC5C,IAAItC,EACC+C,EAAKsyE,aACNtyE,EAAKoE,aAET,IAAK,IAAI7oB,EAAK,EAAGhK,EAAMyuB,EAAgB,YAAGzkB,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC5D,IAAIqrB,EAAMr1B,EAAGgK,GACb,GAAIqrB,EAAIrH,QAAUA,EAAO,CACrBtC,EAAS2J,EACT,OAGR,OAAO3J,EAWJ,SAAS+kL,GAAsBhpM,EAAIipM,EAAMhwC,EAAUrxH,GACtDA,EAASshK,cAAc,GAAKlpM,GAAM,GAClC,IAAK,IAAItK,EAAI,EAAGA,EAAIuzM,EAAK5zM,OAAQK,IAC7BkyC,EAASshK,cAAc,GAAKlpM,GAAIipM,EAAK5iM,SAAS3Q,EAAE4Q,WAAY,MAAQ2yJ,EAASgwC,EAAK5iM,SAAS3Q,EAAE4Q,WAAY,MAW1G,SAAS6iM,GAAoB/lL,EAAW6lL,EAAMrhK,GACjD,IAAK,IAAIlyC,EAAI,EAAGA,EAAIuzM,EAAK5zM,OAAQK,IAAK,CAClC,GAAI0tB,EAAUI,YACV,MAEJJ,EAAUktB,oBAAoB24J,EAAK5iM,SAAS3Q,EAAE4Q,WAAY,KAAMshC,EAASshK,cAAc9lL,EAAUtrB,QAAQkI,IAAIipM,EAAK5iM,SAAS3Q,EAAE4Q,WAAY,QAS1I,SAAS8iM,GAAuB9lL,EAAQ61K,GAC3C71K,EAAOkxE,gBAAgB2kG,GACnB71K,EAAOzmB,SACPymB,EAAOwyD,kBAmBR,SAASuzH,GAAyBhjL,EAAQ+U,EAAQwM,GAErD,IADA,IAAI0hK,EAAa,GACR5zM,EAAI,EAAGA,EAAI2wB,EAAOhxB,OAAQK,IAAK,CACpC,IAAIuuB,EAAS2jB,EAAStkB,OAAO8J,iBAAiB/G,EAAOhgB,SAAS3Q,EAAE4Q,WAAY,MACxE6G,EAA+C,SAAvCiuB,EAAO/0B,SAAS3Q,EAAE4Q,WAAY,KAAkB,KAAO80B,EAAO/0B,SAAS3Q,EAAE4Q,WAAY,KAC7Fw8H,EAAO,CACPv8G,MAAOF,EAAOhgB,SAAS3Q,EAAE4Q,WAAY,KAAMugB,UAAW,KAAMgC,IAAK5E,EAAO4E,IAAKlB,SAAU,QAASzkB,KAAM+gB,EAAO/gB,KAC7G0kB,UAAWggB,EAASi4F,mBAAoBjxG,aAAcgZ,EAAStkB,OAAOoF,eAAekG,cAE3E,KAAVzhB,GAAgB,eAAkBA,GAClCm8L,EAAaA,EAAW3lK,OAAO,OAAmB6+F,4BAA4BM,IAG9EwmE,EAAWvoM,KAAKmgM,EAAO,GAAI,CAAE/zL,MAAOA,GAAS21H,IAGrD,OAAO,OAAmBnzG,aAAa25K,GAOpC,SAASC,GAAczmE,GAE1B,IADA,IAAIt0G,EAAgB,GACXjsB,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKg5H,GAAOvgI,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC3D,IAAIwH,EAAOxR,EAAGgK,GACdisB,EAAcztB,KAAK+hI,EAAK,GAAK/4H,IAEjC,OAAOykB,EAgCJ,SAASg7K,GAAcC,EAAmBC,EAAgBxnK,GAC7D,IAAIynK,EAAeF,EACfjtG,EAAYktG,EACZE,GAAuB,EAC3B,GAAI1nK,EACA,IAAK,IAAIxsC,EAAI8mG,EAAU,GAAI9mG,EAAIi0M,EAAat0M,OAAQK,IAEhD,IADA,IAAIiwC,EAAUgkK,EAAatjM,SAAS3Q,EAAE4Q,WAAY,KACzC0lB,EAAI,EAAGA,EAAI2Z,EAAQtwC,OAAQ22B,IAAK,CACrC,GAAI49K,GAAiG,IAAzED,EAAatjM,SAAS3Q,EAAE4Q,WAAY,KAAKD,SAAS2lB,EAAE1lB,WAAY,KAExF,OADAk2F,EAAY,CAAC9mG,EAAGs2B,GACTwwE,EAENotG,GAAwBptG,EAAUl2F,aAAe,CAAC5Q,EAAGs2B,GAAG1lB,aACzDsjM,GAAuB,QAMnC,IAASl0M,EAAI8mG,EAAU,GAAI9mG,GAAK,EAAGA,IAE/B,IADIiwC,EAAUgkK,EAAatjM,SAAS3Q,EAAE4Q,WAAY,KACzC0lB,EAAI2Z,EAAQtwC,OAAS,EAAG22B,GAAK,EAAGA,IAAK,CAC1C,GAAI49K,GAAiG,IAAzED,EAAatjM,SAAS3Q,EAAE4Q,WAAY,KAAKD,SAAS2lB,EAAE1lB,WAAY,KAExF,OADAk2F,EAAY,CAAC9mG,EAAGs2B,GACTwwE,EAENotG,GAAwBptG,EAAUl2F,aAAe,CAAC5Q,EAAGs2B,GAAG1lB,aACzDsjM,GAAuB,GAKvC,OAAOptG,EAOJ,SAASqtG,GAAsBC,GAClC,OAAOA,EAAOj1L,OAAO,GAAG8iB,cAAgBmyK,EAAO1nM,MAAM,IAz4BzD,SAAWogM,GAEPA,EAAOl1E,MAAQ,MAFnB,CAGGk1E,IAAWA,EAAS,M,4GChtCZuH,EAA+B,eAAmB,CACzD9xJ,OAAQ,CAAE33B,OAAQ,CAAEmB,QAAS,OAC7BpZ,OAAQ,SAAUpP,GACd,IAAK,OAAW,CACZ,IAAIqoB,EAAK,OAAiBroB,EAAL,OACjBsoB,EAAQ,KAIZ,OAHK,eAAkB7sB,KAAK8sB,OAAOC,WAC/BF,EAAS,OAAoC7sB,KAAK8sB,OAAOC,QAApC/sB,KAAK8sB,OAAOC,WAE9BH,EAAE,MAAO,CAAE40B,MAAO,eAAiB30B,KAIlDF,QAAS,YACA,QAAa3sB,KAAK4rB,QACnB5rB,KAAK4rB,UAGboB,QAAS,CACLw2B,OAAQ,WACJ,MAAO,4BAIR8xJ,EAA4B,CACnCtlM,KAAM,wBACNwe,QAAS,SAAUC,GACfA,EAAIC,UAAU4mL,EAA0BtlM,KAAMqlM,KAG3CE,EAA8B,eAAmB,CACxD5hM,OAAQ,aAGRqZ,QAAS,CACLw2B,OAAQ,WACJ,MAAO,2BAIRgyJ,EAA2B,CAClCxlM,KAAM,uBACNwe,QAAS,SAAUC,GACfA,EAAIC,UAAU8mL,EAAyBxlM,KAAMulM,KCzC1Cv6L,EAAa,CAAC,eAAgB,UAAW,oBAAqB,UAAW,qBAAsB,WAAY,WAAY,sBAAuB,oBAAqB,YAAa,UAAW,eAAgB,QAAS,SAAU,SAAU,cAAe,mBAAoB,aAAc,QAAS,UAAW,OAAQ,UACrTiQ,EAAa,GACbC,EAAW,eAAS,CAAEC,MAAOnQ,IAC7BmQ,EAAQD,EAAS,GAAIE,EAAQF,EAAS,GAAIG,EAAY5rB,OAAO2V,KAAKgW,GAC7EC,EAAUhf,KAAK,eAAgB,qBAC/B,IAAK,IAAI,EAAK,EAAGif,EAAeL,EAAY,EAAKK,EAAa3qB,OAAQ,IAAM,CACxE,IAAI4qB,EAAUD,EAAa,GAC3BD,EAAUhf,KAAK,UAAYkf,GAQxB,IAAIkqL,EAA0B,eAAmB,CACpDzlM,KAAM,0BACNyb,OAAQ,CAAC,QACTN,MAAOA,EACPC,MAAOA,EACPM,MAAOL,EACPM,QAAS,WAAc,MAAO,CAAEC,OAAQ5rB,KAAK4rB,SAC7CC,KAAM,WACF,MAAO,CACHC,aAAc,IAAI,OAAe,IACjCC,SAAU/Q,EACVgR,OAAQf,EACRgB,mBAAmB,EACnBC,oBAAoB,EACpBC,UAAW,CAAE,wBAAyB,wBACtCC,cAAe,CAAE,wBAAyB,WAC1CC,QAAS,OACTC,mBAAoB,KAG5BC,QAAS,WACLvsB,KAAKysB,iBACLzsB,KAAK8rB,aAAaY,eAAiB1sB,KAAK8rB,aAAa7gB,cACrDjL,KAAK8rB,aAAa7gB,cAAgBjL,KAAKiL,cACvCjL,KAAK8rB,aAAazjB,cAAgBrI,KAAKqI,cACvCrI,KAAK2sB,QAAU3sB,KAAK2sB,SAExBhZ,OAAQ,SAAUpP,GACd,IAAIqoB,EAAK,OAAiBroB,EAAL,OACjBsoB,EAAQ,KAIZ,OAHK,eAAkB7sB,KAAK8sB,OAAOC,WAC/BF,EAAS,OAAoC7sB,KAAK8sB,OAAOC,QAApC/sB,KAAK8sB,OAAOC,WAE9BH,EAAE,SAAUC,IAEvBG,QAAS,CACL3kB,cAAe,SAAU4kB,GAIrB,GAHKA,IACDA,EAAgBxtB,OAAO2V,KAAKpV,KAAKssB,oBAAsB,KAEvDW,EAActsB,QAAUX,KAAKssB,mBAC7B,IAAK,IAAIze,EAAK,EAAGqf,EAAkBD,EAAepf,EAAKqf,EAAgBvsB,OAAQkN,IAAM,CACjF,IAAIsf,EAAWD,EAAgBrf,GAC3Buf,EAAoBptB,KAAKssB,mBAAmBa,GAChD,GAAIC,GAAqBA,EAAkBzsB,OAAQ,CAC/C,IAAK,IAAIkD,EAAK,EAAGwpB,EAAsBD,EAAmBvpB,EAAKwpB,EAAoB1sB,OAAQkD,IAAM,CAC7F,IAAIypB,EAAMD,EAAoBxpB,GAC1B2O,EAAU,eAAS,mBAAoB8a,GACvC9a,GACA8a,EAAIC,QAAQC,WAEZF,EAAIxiB,YACJwiB,EAAIxiB,UAAY,WAGjB9K,KAAKssB,mBAAmBa,MAK/CliB,cAAe,SAAUoK,EAAMoY,GAC3B,IAAIpqB,EAAQrD,KACRA,KAAKqsB,SACLrsB,KAAKgsB,OAAUhsB,KAAKgsB,OAAyChsB,KAAKgsB,OAArChsB,KAAK8rB,aAAa4B,aAE/C1tB,KAAK8rB,cAAgB9rB,KAAK8rB,aAAaY,gBACvC1sB,KAAK8rB,aAAaY,eAAerX,EAAMoY,GAEvCpY,GAAQrV,KAAKgsB,QAAUhsB,KAAKgsB,OAAOrrB,QACnClB,OAAO2V,KAAKC,GAAMxO,KAAI,SAAUtG,GAC5B8C,EAAM2oB,OAAOnlB,KAAI,SAAUma,GAClBzgB,IAAQygB,GAAY,cAAcvD,KAAKld,KACpC8C,EAAMgpB,OACNhpB,EAAMyoB,aAAa6B,YAAYC,MAAM,UAAYrtB,EAAK8U,EAAK9U,KAG3D8C,EAAMuqB,MAAM,UAAYrtB,EAAK8U,EAAK9U,IAClC8C,EAAMuqB,MAAM,eAAgBvY,EAAK9U,aAOzDqrB,OAAQ,WACJ5rB,KAAK2sB,WAEToqC,SAAU,SAAUtN,EAAO33B,GACvB,OAAO9xB,KAAK8rB,aAAairC,SAAStN,EAAO33B,IAE7C7K,QAAS,WACL,OAAOjnB,KAAK8rB,aAAa7E,WAE7BqwC,YAAa,SAAU7N,EAAOk/H,GAC1B,OAAO3oL,KAAK8rB,aAAawrC,YAAY7N,EAAOk/H,IAEhDhvG,OAAQ,WACJ,OAAO35E,KAAK8rB,aAAa6tD,aAI1B+7H,EAAuB,CAC9B1lM,KAAM,qBACNwe,QAAS,SAAUC,GACfA,EAAIC,UAAUgnL,EAAqB1lM,KAAMylM,GACzChnL,EAAIC,UAAU8mL,EAAyBxlM,KAAMulM,GAC7C9mL,EAAIC,UAAU4mL,EAA0BtlM,KAAMqlM,M,kCC7HtD,0EAQIM,EAAiC,WACjC,SAASA,EAAgB9mL,EAAgBD,GACrC5uB,KAAK6uB,eAAiBA,EACtB7uB,KAAK4uB,OAASA,EAiHlB,OA/GA+mL,EAAgBz1M,UAAUyT,OAAS,SAAU+rE,EAAUroD,EAAKr2B,EAAG2/E,GAC3D,IAOIi1H,EAPAz1H,EAAmBngF,KAAK6uB,eAAeuxD,WAAW,uBAClDG,EAAeJ,EAAiBK,gBAAgBnpD,EAAIoqB,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKiwC,UACnF,OAASzsB,MACZu1C,EAAUtzC,EAAIoqB,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKkwE,SAAWzqD,EAAIoqB,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKkwE,SAChGpC,EAAS/U,QAAU3pE,GAAMq2B,EAAIoqB,MAAM9gD,OAAS++E,EAAS/U,QAAUtzC,EAAIoqB,MAAM9gD,OAASK,EACnFqgF,EAAU3B,EAAS2B,QACnBzqD,EAAU,EAEd,GAAIS,EAAI5qB,MAAQ,EAAG,CACf,IAAI+0E,EAAaxhF,KAAK4uB,OAAO6yD,gBACzBhgC,EAAQzhD,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,OAAS,IAClD6gF,EAAWnqD,EAAI5qB,MAAQ,GAAGqzE,UAAY0B,EAAWnqD,EAAI5qB,OAAOg1C,MAAQ+/B,EAAWnqD,EAAI5qB,MAAQ,GAAGg1C,MAC/Fo0J,EAAex+K,EAAIoqB,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAChD+vE,EAAQ,MACZi0H,EAAcn0J,EAAMxtB,QAAO,SAAU0tB,GAAQ,OAAOA,EAAKpyB,OAAO4E,MAAQ0hL,EAAatmL,OAAO,GAAKoyD,MAAW,GAIhH,IAFA,IAAIm0H,EAAaF,GAAeA,EAAYG,aAAe,GAAKH,EAAY/zH,aAAe,EACvF+zH,EAAYG,aAAeprI,EACtBrzC,EAAIt2B,EAAI,EAAGs2B,EAAIt2B,EAAI80M,GAAcx+K,EAAID,EAAIoqB,MAAM9gD,OAAQ22B,KACN,IAAlDD,EAAIoqB,MAAM9vC,SAAS2lB,EAAE1lB,WAAY,KAAKglB,QACtCA,IAGAS,EAAIoqB,MAAM9vC,SAAS2lB,EAAE1lB,WAAY,KAAKowE,WAAY,EAG1D,GAAIprD,EAAU,EAAG,CACb,IAASU,EAAIt2B,EAAI2pE,EAASrzC,EAAIt2B,EAAI2pE,EAAU/zC,GAAWU,EAAID,EAAIoqB,MAAM9gD,OAAQ22B,IACzED,EAAIoqB,MAAM9vC,SAAS2lB,EAAE1lB,WAAY,KAAKowE,WAAY,EAElDhhF,EAAI2pE,EAAU/zC,GAAWS,EAAIoqB,MAAM9gD,SACnCgqE,GAAY3pE,EAAI2pE,EAAU/zC,EAAWS,EAAIoqB,MAAM9gD,QA2BvD,OAxBI02B,EAAIoqB,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKkwE,WACtCzqD,EAAIxL,KAAK6zD,EAASnwD,OAAOsC,OAASwF,EAAIoqB,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKokM,SACxEr1H,EAAKJ,EAAa5sE,OAAO0jB,EAAIoqB,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAMylB,EAAIxL,KAAM,CAAE,MAAU,eAAkBwL,EAAI5qB,OAAgC,GAAvB4qB,EAAI5qB,MAAMmF,cAE/H+4D,EAAU,GACV,eAAWgW,EAAI,CAAE,QAAWhW,EAAQ/4D,WAAY,eAAgB+4D,EAAQ/4D,aAExEyvE,EAAU,IACV,eAAWV,EAAI,CAAE,QAAWU,EAAQzvE,WAAY,eAAgByvE,EAAQzvE,aACxEylB,EAAIoqB,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAK2vE,cAAe,EACrDlqD,EAAIoqB,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKiwE,aAAe9wC,OAAOswC,GACxD1W,EAAU,IACVtzC,EAAIoqB,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKmkM,aAAehlK,OAAO45B,KAGhEtzC,EAAI5qB,MAAQ,GAAMmpM,EAAY/zH,aAAe,IAC7CxqD,EAAIoqB,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKowE,WAAY,EAClD3qD,EAAIoqB,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKiwE,aAAe9wC,OAAO6kK,EAAY/zH,aAAe,GACvFxqD,EAAIoqB,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKmkM,aAAeH,EAAY/zH,aAAe,EAAI+zH,EAAYG,aAAe,IAE/G/1M,KAAK4uB,OAAOqrB,4BAA+B5iB,EAAIoqB,MAAM9vC,SAAS3Q,EAAE4Q,WAAY,KAAKkwE,UAChF9hF,KAAKi2M,YAAYv2H,EAASnwD,OAAOsC,MAAO6tD,EAAS7zD,KAAK6zD,EAASnwD,OAAOsC,SACvE7xB,KAAKk2M,iBAAiBx2H,EAASnwD,OAAOsC,MAAO6tD,EAAS7zD,KAAK6zD,EAASnwD,OAAOsC,OAAQ6tD,EAAS/U,SAEzFgW,GAEXg1H,EAAgBz1M,UAAUg2M,iBAAmB,SAAUv+K,EAAO9L,EAAM2qE,GAChEx2F,KAAKm2M,cAAcn2M,KAAKo2M,WAAWz+K,EAAO9L,GAAO2qE,IAErDm/G,EAAgBz1M,UAAUk2M,WAAa,SAAUC,EAAOxqL,GACpD,OAAOwqL,EAAQ,KAAOxqL,EAAKja,YAE/B+jM,EAAgBz1M,UAAU4oG,SAAW,SAAUvoG,GAC3C,OAAOA,EAAI0D,MAAM,OAErB0xM,EAAgBz1M,UAAU+1M,YAAc,SAAUI,EAAOxqL,GAErD,OAAO7rB,KAAKs2M,gBAAgBx2M,eAAeE,KAAKo2M,WAAWC,EAAOxqL,KAEtE8pL,EAAgBz1M,UAAUo2M,cAAgB,WACtC,OAAOt2M,KAAK4uB,OAAOugF,YAEvBwmG,EAAgBz1M,UAAUi2M,cAAgB,SAAU51M,EAAKi2F,GACrDx2F,KAAK4uB,OAAOugF,WAAW,GAAK5uG,GAAOi2F,GAEvCm/G,EAAgBz1M,UAAUwkM,mBAAqB,SAAUvtK,GAErD,IADA,IAAIo/K,EAASv2M,KAAKs2M,gBACTzoM,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKmhM,GAAS1oM,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC7D,IAAItN,EAAMsD,EAAGgK,GACT4K,EAAQ89L,EAAO,GAAKh2M,GACpBi2M,EAAQx2M,KAAK8oG,SAASvoG,GACtBm+G,EAAc1+G,KAAKy2M,uBAAuBD,EAAM,IAChDE,EAAiB12M,KAAK4uB,OAAO0kE,yBAC7BkD,EAAO/9E,GAASi+L,EAAe,GAAKh4F,GACxC,GAAIA,EAAcg4F,EAAe,IAAMlgH,EAAO,EAC1C,IAAK,IAAI1yF,EAAK,EAAG2xF,EAASt+D,EAAMrzB,EAAK2xF,EAAO90F,OAAQmD,IAAM,CACtD,IAAIuzB,EAAMo+D,EAAO3xF,GACjB,GAAIuzB,EAAIxL,KAAK2qL,EAAM,IAAI5kM,aAAe4kM,EAAM,GAAG5kM,WAAY,CACvDylB,EAAIoqB,MAAM,GAAGqgC,SAAW0U,EACxBn/D,EAAIoqB,MAAM,GAAGu0J,SAAWQ,EAAM,GAC9B,QAKhB,OAAOr/K,GAEXw+K,EAAgBz1M,UAAUu2M,uBAAyB,SAAU5kL,GACzD,IAAIplB,EAAQ,gBAAqBzM,KAAK4uB,OAAO0qE,qBAAqB,SAAU/rC,EAAM9gD,GAC9E,GAAI8gD,EAAK17B,QAAUA,EACf,OAAOplB,KAGZ,GACH,OAAOA,GAEJkpM,EApHyB,I,kCCRpC,sIAaIztJ,EAAyB,WACzB,SAASA,EAAQt5B,EAAQC,GACrB7uB,KAAK22M,gBAAkB,GACvB32M,KAAK42M,YAAa,EAClB52M,KAAKypD,MAAQ,CAAC,MAAO,OAAQ,SAAU,SAAU,SAAU,QAAS,SAChE,gBAAiB,YAAa,cAAe,YAAa,cAC9DzpD,KAAK62M,oBAAqB,EAC1B72M,KAAK4uB,OAASA,EACd5uB,KAAK82M,OAASloL,EAAOxrB,QAAQkI,GAC7BtL,KAAK6uB,eAAiBA,EACtB7uB,KAAK64C,mBAqwBT,OAnwBAqP,EAAQhoD,UAAUyT,OAAS,WACvB3T,KAAKya,KAAOza,KAAK6uB,eAAeuxD,WAAW,gBAK3C,IAJA,IAAI22H,EAAW,CAAC,MAAO,OAAQ,SAAU,SAAU,SAAU,QACzD,YAAa,cAAe,aAAc,aAC1CC,EAAah3M,KAAK4uB,OAAOgrB,iBACzBq9J,EAAiB,CAAC,OAAQ,SAAU,SAAU,UACzCppM,EAAK,EAAGqpM,EAAaH,EAAUlpM,EAAKqpM,EAAWv2M,OAAQkN,IAAM,CAClE,IAAI0/C,EAAO2pJ,EAAWrpM,GAClBspM,EAAU5pJ,EAAK1rC,cACfu1L,EAAaD,EAAQ,GAAGl0K,cAAgBk0K,EAAQzpM,MAAM,GAC1D1N,KAAK22M,gBAAgB,GAAKppJ,GAAQ,CAC9BjiD,GAAItL,KAAK82M,OAAS,IAAMK,EAASr+I,WAAY,KAAOq+I,EACpDrlL,KAAM9xB,KAAKya,KAAKC,YAAY08L,GAAaj+I,YAAan5D,KAAKya,KAAKC,YAAY08L,IAE5EJ,IACAh3M,KAAK22M,gBAAgB,GAAKppJ,GAAMz7B,KAAO,GACvC9xB,KAAK22M,gBAAgB,GAAKppJ,GAAM32B,SAA4C,IAAlCqgL,EAAejzM,QAAQupD,IAGzEvtD,KAAK22M,gBAAgBlzG,OAAS,CAC1Bn4F,GAAItL,KAAK82M,OAAS,UAClB39I,YAAan5D,KAAKya,KAAKC,YAAY,UAAWi0C,MAAO,QAASlkD,SAAU,mBACxE+D,KAAM,SAEVxO,KAAK62M,oBAAqB,EACtB72M,KAAK4uB,OAAOgrB,kBAAoB55C,KAAKq3M,8BAA6B,KAA4C,eAAjCr3M,KAAK4uB,OAAO00D,kBACvD,aAAjCtjF,KAAK4uB,OAAO00D,mBAAoCtjF,KAAK4uB,OAAO4L,iBAAmBx6B,KAAK4uB,OAAOmK,gBAC5F/4B,KAAK62M,oBAAqB,GAE1BG,GAAch3M,KAAKq3M,8BAA6B,GAChDr3M,KAAK22M,gBAAgBW,uBAAyB,CAC1ChsM,GAAItL,KAAK82M,OAAL92M,0BAA8CyK,SAAU,4CAA6CsuD,WAAY,+BACrHpK,MAAO3uD,KAAK62M,mBAAqB,OAAS,SAI9C72M,KAAK22M,gBAAgBY,cAAgB,CACjCjsM,GAAItL,KAAK82M,OAAL92M,iBAAqCyK,SAAU,4BAA6BsuD,WAAY,sBAC5FjnC,KAAMklL,EAAa,GAAKh3M,KAAKya,KAAKC,YAAY,iBAC9Cy+C,YAAan5D,KAAKya,KAAKC,YAAY,iBAAkBi0C,MAAO,SAG/B,aAAjC3uD,KAAK4uB,OAAO00D,mBACRtjF,KAAK4uB,OAAO4L,gBAAsD,cAApCx6B,KAAK4uB,OAAOoF,eAAexlB,OACzDxO,KAAK22M,gBAAgBa,iBAAmB,CACpClsM,GAAItL,KAAK82M,OAAL92M,oBAAwCyK,SAAU,gCACtDsuD,WAAY,mBAAyBI,YAAan5D,KAAKya,KAAKC,YAAY,kBAG5E1a,KAAK4uB,OAAOmK,eACZ/4B,KAAK22M,gBAAgBc,eAAiB,CAClCnsM,GAAItL,KAAK82M,OAAL92M,kBAAsCyK,SAAU,gCACpDsuD,WAAY,iBAAuBI,YAAan5D,KAAKya,KAAKC,YAAY,WAI9E1a,KAAK4uB,OAAOgrB,kBAAoB55C,KAAK4uB,OAAOqqB,SAAWj5C,KAAK4uB,OAAOqqB,QAAQj1C,QAAQ,WAAa,IAChGhE,KAAK22M,gBAAgBe,eAAiB,CAClCpsM,GAAItL,KAAK82M,OAAL92M,kBAAsCyK,SAAU,gCACpDsuD,WAAY,iBAAuBniC,SAAS,IAGpD52B,KAAK23M,gBACD33M,KAAK4uB,OAAOgrB,mBACR,eAAkB55C,KAAK43M,wBACvB53M,KAAK63M,+BAET73M,KAAKi5C,QAAQY,oBAGrBqO,EAAQhoD,UAAUm3M,6BAA+B,SAAUS,GAGvD,IAFA,IAAIruJ,EAAQquJ,EAAU,CAAC,MAAO,OAAQ,SAAU,UAAY,CAAC,QAAS,gBAAiB,YAAa,cAAe,aAC/G1hH,EAAep2F,KAAK4uB,OAAOqqB,SAAW,GACjCj4C,EAAI,EAAGA,EAAIyoD,EAAM9oD,OAAQK,IAC9B,GAAIo1F,EAAapyF,QAAQylD,EAAM93C,SAAS3Q,EAAE4Q,WAAY,OAAS,EAC3D,OAAOkmM,EAGf,QAAOA,GAQX5vJ,EAAQhoD,UAAUqhH,WAAa,WAC3B,OAAOvhH,KAAKi5C,QAAQ71C,SAQxB8kD,EAAQhoD,UAAUsS,QAAU,WACpBxS,KAAKi5C,UAAYj5C,KAAKi5C,QAAQnqB,cAC1B9uB,KAAK43M,uBACL53M,KAAK43M,sBAAsBplM,UAE1BxS,KAAKi5C,QAAQ71C,SAOdpD,KAAKi5C,QAAQ5kB,IAAI,gCAAiCr0B,KAAK+3M,wBACvD/3M,KAAKi5C,QAAQzmC,YAPbxS,KAAK4uB,OAAOkxE,gBAAgB,CAAC,oBACzB9/F,KAAK4uB,OAAOzmB,SACZnI,KAAK4uB,OAAOwyD,mBAOpBphF,KAAKw1L,cACLx1L,KAAK47C,sBACD57C,KAAKoD,QAAQqwC,YACb,gBAAOzzC,KAAKoD,WAIxB8kD,EAAQhoD,UAAU83M,iBAAmB,WACjCh4M,KAAKi4M,cAAgB,gBAAO,IAAMj4M,KAAK82M,OAAS,aAAc92M,KAAKoD,SACnEpD,KAAKu1L,YACLv1L,KAAKk4M,sBACDl4M,KAAK4uB,OAAO6E,gBACZzzB,KAAKm4M,mBAGbjwJ,EAAQhoD,UAAUk4M,eAAiB,SAAUC,GACzC,GAAIr4M,KAAKoD,QAAQ8I,cAAc,qBAC3B,IAAKlM,KAAK4uB,OAAOgrB,kBAAoBy+J,EAAU,CAC3C,IAAInzM,EAAYlF,KAAK4uB,OAAOnkB,SAAW,0BAA4BzK,KAAK4uB,OAAOnkB,SACzE,yBACNzK,KAAKoD,QAAQ8I,cAAc,qBAAqBpB,UAAY,eAAiB5F,EAAY,kDACtElF,KAAK82M,OAAS,qGACX92M,KAAKya,KAAKC,YAAY,UAAY,oCACtC1a,KAAK82M,OAAS,8LAEd92M,KAAK82M,OAAS,4GACH92M,KAAKya,KAAKC,YAAY,UAAY,2DAI/D1a,KAAKoD,QAAQ8I,cAAc,qBAAqBpB,UAAY,aAAe9K,KAAK82M,OAC1E,8LAEY92M,KAAK82M,OACjB,2HACsC92M,KAAKya,KAAKC,YAAY,UAAY,uCAIlF1a,KAAKoD,QAAQ8I,cAAc,iCAC3BlM,KAAKoD,QAAQ8I,cAAc,+BAA+BpB,UAAY,eAAiB9K,KAAK82M,OACtF,gVAIV92M,KAAKg4M,oBAET9vJ,EAAQhoD,UAAUy3M,cAAgB,WAC9B,IAAIluJ,EAAQzpD,KAAK+oL,WACjB/oL,KAAKi5C,QAAU,IAAI,OAAK,CACpBwQ,MAAOA,EACP6uJ,QAASt4M,KAAKu4M,oBAAoB3yM,KAAK5F,MACvC2zF,kBAAmB3zF,KAAK4uB,OAAO+kE,kBAC/BluF,UAAWzF,KAAK4uB,OAAOnpB,UACvB8mB,QAASvsB,KAAKo4M,eAAexyM,KAAK5F,MAClCyK,SAAUzK,KAAK4uB,OAAOnkB,SAAWzK,KAAK4uB,OAAOnkB,SAAW,KAE5DzK,KAAKi5C,QAAQ9wC,QAAUnI,KAAK4uB,OAAOzmB,QACnCnI,KAAKi5C,QAAQlqB,GAAG,gCAAiC/uB,KAAK+3M,uBAAwB/3M,MAC9E,IAAIs4D,EAAmB,mBACvBt4D,KAAKi5C,QAAQ,GAAKqf,IAAoB,EACtC,IAAIkgJ,EAAU,mBACVC,EAAe,qBASnB,GARIz4M,KAAK4uB,OAAO,GAAK4pL,KACjBx4M,KAAKi5C,QAAQ,GAAKw/J,GAAgB,GAClCz4M,KAAKi5C,QAAQ,GAAKu/J,GAAWx4M,KAAK4uB,OAAO,GAAK4pL,IAElDx4M,KAAKoD,QAAUpD,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAE+G,GAAItL,KAAK82M,OAAS,kBAChE92M,KAAK4uB,OAAOgrB,kBACZ55C,KAAKoD,QAAQ8B,UAAU4G,IAAI,iBAE3B9L,KAAK4uB,OAAOkuE,gBAAiB,CAC7B,GAA6C,kBAAjC98F,KAAK4uB,OAAsB,gBACnC5uB,KAAKi5C,QAAQ5yB,SAASrmB,KAAK4uB,OAAOkuE,iBAClC98F,KAAKoD,QAAUpD,KAAKi5C,QAAQ71C,YAE3B,CACD,IAAI6sF,EAAkBjwF,KAAK4uB,OAAOzmB,SAAoD,kBAAjCnI,KAAK4uB,OAAsB,gBAC5EkyD,EAAe9gF,KAAK4uB,OAAOmyD,eAAiB/gF,KAAK4uB,OAAOmyD,cAAcC,eACtEhhF,KAAK4uB,OAAOmyD,cAAcC,cAAc74E,QACxCuwM,EAAK14M,KAAK4uB,OAAOxrB,QAAQkI,GAAK,kBAC9B2kF,GAAmBnP,GACnB,gBAAiB9gF,KAAK4uB,OAAOkuE,gBAA7B,CAA8C,GAAI98F,KAAK4uB,OAAQ,kBAAmB8pL,EAAI,KAAM,KAAM14M,KAAKoD,SACvGpD,KAAK4uB,OAAOwyD,mBAGZ,eAAephF,KAAKoD,QAAS,gBAAiBpD,KAAK4uB,OAAOkuE,gBAA7B,CAA8C,GAAI98F,KAAK4uB,OAAQ,oBAGpG5uB,KAAKoD,QAAQ8B,UAAU4G,IAAI,uBAG3B9L,KAAKi5C,QAAQ5yB,SAASrmB,KAAKoD,SAE/BpD,KAAK4uB,OAAOxrB,QAAQoiB,aAAaxlB,KAAKoD,QAASpD,KAAK4uB,OAAOyrB,oBAC3D,IAAIlB,EAAkBn5C,KAAKoD,QAAQ8I,cAAc,mBAC7CktC,EAAoBp5C,KAAKoD,QAAQ8I,cAAc,qBAC/CmtC,EAAmBr5C,KAAKoD,QAAQ8I,cAAc,oBAC9CotC,EAAYt5C,KAAKoD,QAAQ8I,cAAc,oBACvCgtC,EAAcl5C,KAAKoD,QACnBm2C,EAAgBJ,EAAkBA,EAAgB5vC,YAAc,EAChEiwC,EAAkBJ,EAAoBA,EAAkB7vC,YAAc,EACtEkwC,EAAiBJ,EAAmBA,EAAiB9vC,YAAc,EACnEmwC,EAAiBJ,EAAYA,EAAU/vC,YAAc,EACrDowC,EAAYT,EAAcA,EAAY3vC,YAAc,GACpDgwC,EAAgBI,GAAaH,EAAkBG,GAAaF,EAAiBE,GAAaD,EAAiBC,IAC3G35C,KAAKi5C,QAAQY,mBAGrBqO,EAAQhoD,UAAU63M,uBAAyB,SAAUhyL,GAC7C/lB,KAAK4uB,OAAOzmB,SAAW4d,IACvB/lB,KAAK4uB,OAAOg/B,QAAU5tD,KAAK4uB,OAAOg/B,QAAQ3e,OAAOlpB,GACjD/lB,KAAK4uB,OAAOwyD,oBAGpBl5B,EAAQhoD,UAAUy4M,uBAAyB,SAAUC,GACjD,GAAIA,EAAU,CACV54M,KAAKo4M,gBAAe,GACpBp4M,KAAK64M,8BAA8B,OAAwBC,UAC3D94M,KAAKi4M,cAAgB,gBAAO,IAAMj4M,KAAK82M,OAAS,aAAc92M,KAAKoD,SACnE,IAAIwvD,EAAQ,gBAAa5yD,KAAKi4M,cAAe,mBAC7CrlJ,EAAM1tD,UAAU4G,IAAI,sBAChB9L,KAAK4uB,OAAO6E,gBACZzzB,KAAKm4M,kBAETn4M,KAAK+4M,aAAa3jB,YAAY,CAAE90L,OAAQN,KAAKi4M,gBAC7Cj4M,KAAKi4M,cAAcl4L,aAGnB/f,KAAK64M,8BAA8B,OAAwB9pG,YAGnE7mD,EAAQhoD,UAAU24M,8BAAgC,SAAUl4L,GACxD,GAAIA,IAAW,OAAwBouF,UAAW,CAK9C,IAJA,IAAIzjG,EAAKtL,KAAK4uB,OAAOxrB,QAAQkI,GACzBm+C,EAAQ,CAACn+C,EAAK,QAASA,EAAK,WAC5Bq+G,EAAkB3pH,KAAK4uB,OAAOixD,wBAC9Bo3H,EAAiB,CAAC3rM,EAAK,kBAAmBA,EAAK,UAAWA,EAAK,WAC1DuC,EAAK,EAAGhK,EAAK7D,KAAKi5C,QAAQwQ,MAAO57C,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC5D,IAAI0/C,EAAO1pD,EAAGgK,GACVqxC,EAAaqO,EAAK3W,SAASj2C,OAASX,KAAKi5C,QAAQ71C,QAAQ8I,cAAcqhD,EAAK3W,UAAY52C,KAAKi5C,QAAQ71C,QAAQ8I,cAAc,IAAMqhD,EAAKjiD,IACtI4zC,IACIuK,EAAMzlD,QAAQupD,EAAKjiD,KAAO,EACtBq+G,EAAgBhpH,OAChBu+C,EAAWv9B,cAAczc,UAAUC,OAAO,YAG1C+5C,EAAWv9B,cAAczc,UAAU4G,IAAI,aAIF,IAArCmrM,EAAejzM,QAAQupD,EAAKjiD,IAC5B4zC,EAAWv9B,cAAczc,UAAUC,OAAO,YAG1C+5C,EAAWv9B,cAAczc,UAAU4G,IAAI,aAKvD,GAAI9L,KAAKi4M,cAAe,CACpB,IAAIrlJ,EAAQ,gBAAa5yD,KAAKi4M,cAAe,mBAC7CrlJ,EAAM1tD,UAAUC,OAAO,sBACvBnF,KAAKo4M,gBAAe,GACpBp4M,KAAKw1L,cACLx1L,KAAKi4M,mBAAgB1sM,GAG7B,GAAIoV,IAAW,OAAwBm4L,SACnC,CAAIrvJ,EAAQ,CAACzpD,KAAK4uB,OAAOxrB,QAAQkI,GAAK,kBAAmBtL,KAAK4uB,OAAOxrB,QAAQkI,GAAK,WAClF,IADA,IACSxH,EAAK,EAAGo3B,EAAKl7B,KAAKi5C,QAAQwQ,MAAO3lD,EAAKo3B,EAAGv6B,OAAQmD,IAAM,CACxDypD,EAAOryB,EAAGp3B,GACVo7C,EAAal/C,KAAKi5C,QAAQ71C,QAAQ8I,cAAc,IAAMqhD,EAAKjiD,IAC3D4zC,IACIuK,EAAMzlD,QAAQupD,EAAKjiD,KAAO,EAC1B4zC,EAAWv9B,cAAczc,UAAUC,OAAO,YAG1C+5C,EAAWv9B,cAAczc,UAAU4G,IAAI,gBAO3Do8C,EAAQhoD,UAAUg4M,oBAAsB,SAAUnyL,GAC9C,IAAIuM,EAAOtyB,KAAK4uB,OACZ+nC,EAAc,GACdqiJ,EAAe,GACftnL,EAAOY,EAAKuzC,aACZozI,EAAU3mL,EAAK8pE,iBAAmB9pE,EAAK8pE,gBAAgBz7F,OACvD+wB,EAAK68E,YACL53C,EAAYtqD,KAAKrM,KAAK82M,OAAS,QAG/BkC,EAAa3sM,KAAKrM,KAAK82M,OAAS,QAEhCplL,EAAKikB,cAAgBsjK,EACrBtiJ,EAAYtqD,KAAKrM,KAAK82M,OAAS,SAG/BkC,EAAa3sM,KAAKrM,KAAK82M,OAAS,SAEhCplL,EAAK88E,eAAiByqG,EACtBtiJ,EAAYtqD,KAAKrM,KAAK82M,OAAS,WAG/BkC,EAAa3sM,KAAKrM,KAAK82M,OAAS,WAEL,UAA3BxkL,EAAKuzC,aAAaihC,KACdx0E,EAAKlvB,QAAQ+U,uBAAuB,eAAexX,SAAW+wB,EAAK68E,aAAe78E,EAAKikB,eACvFghB,EAAYtqD,KAAKrM,KAAK82M,OAAS,WAC/BngJ,EAAYtqD,KAAKrM,KAAK82M,OAAS,aAG/BkC,EAAa3sM,KAAKrM,KAAK82M,OAAS,WAChCkC,EAAa3sM,KAAKrM,KAAK82M,OAAS,YAIhCxkL,EAAKyqB,SAAWrrB,EAAK68E,aAAe78E,EAAKikB,eACzCghB,EAAc,CAAC32D,KAAK82M,OAAS,UAAW92M,KAAK82M,OAAS,WACtDkC,EAAe,CAACh5M,KAAK82M,OAAS,OAAQ92M,KAAK82M,OAAS,QAAS92M,KAAK82M,OAAS,aAG3EkC,EAAa3sM,KAAKrM,KAAK82M,OAAS,WAChCkC,EAAa3sM,KAAKrM,KAAK82M,OAAS,YAGxC92M,KAAK22D,YAAYA,GAAa,GAC9B32D,KAAK22D,YAAYqiJ,GAAc,IAEnC9wJ,EAAQhoD,UAAU6oL,SAAW,WACzB,IAAIt/H,EAAQ,GACR2sC,EAAep2F,KAAK4uB,OAAOqqB,SAAW,GAE1C,GAAqC,kBAAzBj5C,KAAK4uB,OAAc,QAC3B,MAAO,GAE0B,aAAjC5uB,KAAK4uB,OAAO00D,mBACRtjF,KAAK4uB,OAAO4L,gBAAsD,cAApCx6B,KAAK4uB,OAAOoF,eAAexlB,MACzDi7C,EAAMp9C,KAAKrM,KAAKk5M,cAAc,qBAE9Bl5M,KAAK4uB,OAAOmK,cACZ0wB,EAAMp9C,KAAKrM,KAAKk5M,cAAc,oBAGtC,IAAK,IAAIrrM,EAAK,EAAGsrM,EAAiB/iH,EAAcvoF,EAAKsrM,EAAex4M,OAAQkN,IAAM,CAC9E,IAAI0/C,EAAO4rJ,EAAetrM,GAC1B,GAAI7N,KAAK4uB,OAAOgrB,mBACgD,IAD5B,CAAC,QAAS,gBAC1C,YAAa,cAAe,aAAa51C,QAAQupD,IAC5B,OAGzB,cAAeA,GACX,IAAK,SACD9D,EAAMp9C,KAAKrM,KAAKk5M,cAAcl5M,KAAKypD,MAAM8D,KACzC,MACJ,IAAK,SACD9D,EAAMp9C,KAAKrM,KAAKk5M,cAAc3rJ,IAC9B,MACJ,QACI9D,EAAMp9C,KAAKrM,KAAK4hL,QAAQr0H,KASpC,OANIvtD,KAAK4uB,OAAOgrB,kBAAoB55C,KAAK4uB,OAAOqqB,SAAWj5C,KAAK4uB,OAAOqqB,QAAQj1C,QAAQ,WAAa,GAChGylD,EAAMp9C,KAAKrM,KAAKk5M,cAAc,mBAE9Bl5M,KAAK4uB,OAAOgrB,kBAAoB55C,KAAKq3M,8BAA6B,IAClE5tJ,EAAMp9C,KAAKrM,KAAKk5M,cAAc,2BAE3BzvJ,GAEXvB,EAAQhoD,UAAU0hL,QAAU,SAAUw3B,GAClC,IAAI7rJ,EAAOvtD,KAAK22M,gBAAgByC,EAAWtnL,MAC3C,OAAOy7B,EAAO,eAAOA,EAAMA,EAAM6rJ,GAAcA,GAEnDlxJ,EAAQhoD,UAAUg5M,cAAgB,SAAUG,GACxC,OAAOr5M,KAAK22M,gBAAgB,GAAK0C,IAAa,CAAEvnL,KAAMunL,EAAU/tM,GAAItL,KAAK82M,OAAS,IAAMuC,IAU5FnxJ,EAAQhoD,UAAUy2D,YAAc,SAAUlN,EAAOmN,GAC7C,IAAK,IAAI/oD,EAAK,EAAGupD,EAAU3N,EAAO57C,EAAKupD,EAAQz2D,OAAQkN,IAAM,CACzD,IAAI0/C,EAAO6J,EAAQvpD,GACfzK,EAAU,gBAAO,IAAMmqD,EAAMvtD,KAAKoD,SAClCA,GACApD,KAAKi5C,QAAQ0d,YAAYvzD,EAAQgD,QAAQ,mBAAoBwwD,KAIzE1O,EAAQhoD,UAAUq4M,oBAAsB,SAAUxyL,GAC9C,IAAI1iB,EAAQrD,KACRsyB,EAAOtyB,KAAK4uB,OACZ0qL,EAAMt5M,KAAK82M,OACX7pM,EAAgB8Y,EAAK9Y,cACzB,GAAIjN,KAAK4uB,OAAOgrB,kBAAoB7zB,EAAKwnC,KAAKjiD,KAAOguM,EAAM,0BACvDt5M,KAAKu5M,+BAA+BtsM,EAAe8Y,EAAKwnC,KAAKjiD,QAE5D,CACD,eAAOya,EAAM,CAAEtX,QAAQ,IACvB,IAAI+qM,EAAUzzL,EACduM,EAAKrqB,QAAQ,QAAqBuxM,GAAS,SAAUC,GAEjD,GADAA,EAAYxsM,cAAgBwsM,EAAYxsM,cAAgBwsM,EAAYxsM,cAAgBA,GAC/EwsM,EAAYhrM,OACb,QAAS,eAAkBgrM,EAAYlsJ,OAASksJ,EAAYlsJ,KAAKjiD,IAC7D,KAAKguM,EAAM,SACPhnL,EAAK42C,QACL,MACJ,KAAKowI,EAAM,QACPhnL,EAAK07F,YACL,MACJ,KAAKsrF,EAAM,UACPhnL,EAAK4K,UACL,MACJ,KAAKo8K,EAAM,UACPhnL,EAAKyyE,YACL,MACJ,KAAKu0G,EAAM,OACPhnL,EAAK27F,YACL,MACJ,KAAKqrF,EAAM,UACPhnL,EAAKw7F,eACL,MACJ,KAAKwrF,EAAM,UACHG,EAAYxsM,cAAc3M,OAAOgL,KAAOguM,EAAM,iBAAmBj2M,EAAM40M,cACvE50M,EAAMwwB,UAEDvB,EAAKsnB,kBAAqBv2C,EAAM40M,gBACjCwB,EAAYxsM,cAAc3M,OAAO4E,UAAUmB,SAAS,qBACjDozM,EAAYxsM,cAAc3M,OAAOgL,KAAOguM,EAAM,gBAGhDG,EAAYxsM,cAAc3M,OAAO4E,UAAUmB,SAAS,iBAAmBozM,EAAYxsM,cAAc3M,OAAOgL,KAAOguM,EAAM,gBAAkBj2M,EAAM40M,gBAClJ50M,EAAM40M,cAAcx/L,MAAQ,GACxBpV,EAAM40M,gBACN50M,EAAMwnI,MAAQxnI,EAAM40M,cAAct2L,cAAczV,cAAc,YAC9D7I,EAAMwnI,MAAM3lI,UAAUC,OAAO,gBAC7B9B,EAAMwnI,MAAMjgI,gBAAgB,SAC5BvH,EAAMwnI,MAAM9jI,MAAMsuL,OAAS,YAE3BhyL,EAAMuzM,YAAcvzM,EAAMurB,OAAO6E,eAAelzB,IAAII,UACpD0C,EAAMurB,OAAOiF,OAAOxwB,EAAM40M,cAAcx/L,OACxCpV,EAAMuzM,YAAa,IAZvBvzM,EAAMs1M,wBAAuB,GAejC,MACJ,KAAKW,EAAM,iBACP,GAAIj2M,EAAMurB,OAAOgrB,iBACbtnB,EAAK4qG,wCAEJ,CAED,IAAIw8E,EAAar2M,EAAMurB,OAAOxrB,QAAQ8I,cAAc,YAChDjG,EAAIyzM,EAAWtyM,wBAAwBrC,IACvCiB,EAAI0zM,EAAWtyM,wBAAwBpC,KACvC20M,EAAYF,EAAYxsM,cAAc3M,OAE1C2F,EAAIyzM,EAAWtyM,wBAAwBrC,IAAM20M,EAAW3oM,UACxDuhB,EAAK4+F,oBAAoBlrH,EAAGC,EAAG0zM,GAEnC,MACJ,KAAKL,EAAM,oBACPhnL,EAAK1Y,OAAO,QAAqC,CAAE+G,OAAQ,IAC3D2R,EAAKqkE,6BACL,MACJ,KAAK2iH,EAAM,kBACPhnL,EAAK1Y,OAAO,QAAqC,CAAE+G,OAAQ,IAC3D2R,EAAKokE,2BACL,MACJ,KAAK4iH,EAAM,kBACPj2M,EAAMs1M,wBAAuB,GAC7B,YAMxBzwJ,EAAQhoD,UAAUq5M,+BAAiC,SAAUpsM,EAAG7B,GAC5D,IAAInE,EAAM,CAAEpC,IAAK,EAAGC,KAAM,GAC1BhF,KAAK45M,mBAAmB7yM,MAAMksH,QAAU,kCACxC,IAGI3yH,EAHAuE,EAAS7E,KAAK45M,mBAAmBxyM,wBACjCyzH,EAAU76H,KAAK4uB,OAAOxrB,QAAQgE,wBAClCpH,KAAK45M,mBAAmB7yM,MAAMksH,QAAU,kCAGpC3yH,EADA,eAAkB6M,GACTnN,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,IAAMZ,GAGxC6B,EAAE7M,OAEXN,KAAK4uB,OAAOnpB,WACZ0B,EAAM,eAAkB7G,EAAQ,OAAQ,UACpCN,KAAK62M,qBACL1vM,EAAInC,MAAQH,EAAOS,SAIvB6B,EAAM,eAAkB7G,EAAQ,QAAS,UACpCN,KAAK62M,qBACN1vM,EAAInC,MAAQH,EAAOS,OAElB6B,EAAInC,KAAOH,EAAOS,MAAQ,GAAMu1H,EAAQjoE,QACzCzrD,EAAInC,MAAQ,KAGpBhF,KAAK43M,sBAAsB,QAAQzwM,EAAIpC,IAAKoC,EAAInC,MAC5CmI,GAAKA,EAAE+F,gBACP/F,EAAE+F,iBAEN,eAAiBlT,KAAK4uB,OAAOxrB,QAASpD,KAAK43M,sBAAsBx0M,QAAQue,gBAE7EumC,EAAQhoD,UAAU25M,aAAe,WAG7B,IAFA,IAAIpwJ,EAAQ,GACR2sC,EAAep2F,KAAK4uB,OAAOqqB,SAAW,GACjCprC,EAAK,EAAGisM,EAAiB1jH,EAAcvoF,EAAKisM,EAAen5M,OAAQkN,IAAM,CAC9E,IAAI0/C,EAAOusJ,EAAejsM,GACN,kBAAT0/C,GAA+B,kBAATA,GAAqC,cAATA,GAAiC,gBAATA,GACxE,cAATA,GAAiC,UAATA,GACxB9D,EAAMp9C,KAAK,CACPylB,KAAM9xB,KAAK+5M,cAAcxsJ,GACzBjiD,GAAItL,KAAK82M,OAAS,IAAMvpJ,EAAK1rC,cAC7B62C,QAAS,gBAAkBnL,EAAK1rC,cAAgB,aAI5D,OAAO4nC,GAEXvB,EAAQhoD,UAAU65M,cAAgB,SAAUxsJ,GACxC,IAAIroB,EAgBJ,MAfa,kBAATqoB,EACAroB,EAAQllC,KAAKya,KAAKC,YAAY,iBAEhB,cAAT6yC,EACLroB,EAAQllC,KAAKya,KAAKC,YAAY,aAEhB,gBAAT6yC,EACLroB,EAAQllC,KAAKya,KAAKC,YAAY,eAEhB,cAAT6yC,EACLroB,EAAQllC,KAAKya,KAAKC,YAAY,aAEhB,UAAT6yC,IACLroB,EAAQllC,KAAKya,KAAKC,YAAY,UAE3BwqB,GAEXgjB,EAAQhoD,UAAU23M,6BAA+B,WAC7C73M,KAAKya,KAAOza,KAAK6uB,eAAeuxD,WAAW,gBAC3CpgF,KAAK45M,mBAAqB55M,KAAK4uB,OAAOrqB,cAAc,KAAM,CACtD+G,GAAItL,KAAK82M,OAAS,qBAAsBtyM,UAAW,6BAEvDxE,KAAKoD,QAAQuH,aAAa,aAAc3K,KAAKya,KAAKC,YAAY,0BAC9D1a,KAAK4uB,OAAOxrB,QAAQsB,YAAY1E,KAAK45M,oBACrC55M,KAAK43M,sBAAwB,IAAI,OAAK,CAClCntM,SAAUzK,KAAK4uB,OAAOnkB,SAAW,sBAA6BzK,KAAK4uB,OAAOnkB,SAAW,qBACrFhF,UAAWzF,KAAK4uB,OAAOnpB,UACvBkuF,kBAAmB3zF,KAAK4uB,OAAO+kE,kBAC/Bn5E,OAAQxa,KAAK4uB,OAAOpU,OACpBivC,MAAOzpD,KAAK65M,eACZpxL,OAAQzoB,KAAKg6M,+BAA+Bp0M,KAAK5F,QAErDA,KAAK43M,sBAAsBvxL,SAASrmB,KAAK45M,qBAE7C1xJ,EAAQhoD,UAAU85M,+BAAiC,SAAUj0L,GACzD,IAAI1iB,EAAQrD,KACRsyB,EAAOtyB,KAAK4uB,OACZxrB,EAAU2iB,EAAK3iB,QACnB2iB,EAAKwnC,KAAKjiD,GAAKlI,EAAQkI,GACvB,IAAIkuM,EAAU,CAAE/qM,QAAQ,EAAOuB,KAAM,UAAWu9C,KAAMxnC,EAAKwnC,KAAMtgD,cAAe8Y,EAAKrX,OACrF4jB,EAAKrqB,QAAQ,QAAqBuxM,GAAS,SAAUC,GACjD,IAAKA,EAAYhrM,OACb,QAAS,eAAkBgrM,EAAYlsJ,OAASksJ,EAAYlsJ,KAAKjiD,IAC7D,KAAKjI,EAAMyzM,OAAS,iBAChBxkL,EAAK1Y,OAAO,QAAqC,CAAE+G,OAAQ,IAC3D2R,EAAK4qG,oCACL,MACJ,KAAK75H,EAAMyzM,OAAS,SAChBxkL,EAAK42C,QACL,WAKpBhhB,EAAQhoD,UAAU+4L,aAAe,SAAU9rL,GACtB,SAAbA,EAAE0M,QACF7Z,KAAKk4M,uBAGbhwJ,EAAQhoD,UAAU+U,kBAAoB,SAAU9H,GACxCA,EAAE0M,SAAW7Z,KAAK8U,iBAAoB9U,KAAK4uB,OAAOqqB,UAGlDj5C,KAAKoD,SACL,gBAAOpD,KAAKoD,SAEhBpD,KAAK2T,WAETu0C,EAAQhoD,UAAUu0C,aAAe,SAAUtnC,GACrB,KAAdA,EAAEqG,SACFxT,KAAK6zB,SAEL7zB,KAAKi4M,gBACLj4M,KAAK6qI,MAAQ7qI,KAAKi4M,cAAct2L,cAAczV,cAAc,YACxDlM,KAAKi4M,cAAcx/L,MAAM9X,SAAW,eAAkBX,KAAK6qI,QAC3D7qI,KAAK6qI,MAAM3lI,UAAU4G,IAAI,gBACzB9L,KAAK6qI,MAAMlgI,aAAa,QAAS3K,KAAKya,KAAKC,YAAY,gBACvD1a,KAAK6qI,MAAM9jI,MAAMsuL,OAAS,YAG1Br1L,KAAK6qI,MAAM3lI,UAAUC,OAAO,gBAC5BnF,KAAK6qI,MAAMjgI,gBAAgB,SAC3B5K,KAAK6qI,MAAM9jI,MAAMsuL,OAAS,aAItCntI,EAAQhoD,UAAU2zB,OAAS,WACvB7zB,KAAK42M,YAAa,EAClB52M,KAAK4uB,OAAOiF,OAAO7zB,KAAKi4M,cAAcx/L,QAE1CyvC,EAAQhoD,UAAUi4M,gBAAkB,WAC5Bn4M,KAAKi4M,gBACLj4M,KAAKi4M,cAAcx/L,MAAQzY,KAAK4uB,OAAO6E,eAAelzB,MAG9D2nD,EAAQhoD,UAAUq1L,UAAY,WACtBv1L,KAAKi4M,gBACLj4M,KAAK+4M,aAAe,IAAI,OAAU/4M,KAAKi4M,cAAej4M,KAAK6uB,gBAC3D,OAAa/iB,IAAI9L,KAAKi4M,cAAe,QAASj4M,KAAKy0C,aAAcz0C,MACjEA,KAAK+4M,aAAaxjB,aAEtB,OAAazpL,IAAI9L,KAAKoD,QAAS,UAAWpD,KAAKi9J,UAAWj9J,MAC1D,OAAa8L,IAAI9L,KAAKoD,QAAS,WAAYpD,KAAKk9J,WAAYl9J,OAEhEkoD,EAAQhoD,UAAUs1L,YAAc,WACxBx1L,KAAKi4M,gBACL,OAAa9yM,OAAOnF,KAAKi4M,cAAe,QAASj4M,KAAKy0C,cACtDz0C,KAAK+4M,aAAavjB,eAEtB,OAAarwL,OAAOnF,KAAKoD,QAAS,UAAWpD,KAAKi9J,WAClD,OAAa93J,OAAOnF,KAAKoD,QAAS,WAAYpD,KAAKk9J,aAEvDh1G,EAAQhoD,UAAU+8J,UAAY,SAAU9vJ,GACpC,IAAIgoH,EAAcn1H,KAAK4uB,OAAO4xE,YAAY20B,YACtCA,GAAeA,EAAY/xH,UAC3B,gBAAY,CAAC+xH,EAAY/xH,QAAS+xH,EAAYC,gBAAiB,CAAC,YAAa,YAC7ED,EAAY/xH,QAAQ+X,UAAY,GAEpChO,EAAE7M,OAAO6a,SAAW,GAExB+sC,EAAQhoD,UAAUg9J,WAAa,SAAU/vJ,GACrCA,EAAE7M,OAAO6a,UAAY,GAEzB+sC,EAAQhoD,UAAU+5M,oBAAsB,SAAU72M,GAC9C,IAAIgyH,EAAiBhyH,EAAQ8I,cAAc,0CACtCkpH,GAAkBp1H,KAAK4uB,OAAOgrB,mBAAqB55C,KAAKi4M,eACtD70M,EAAQ8B,UAAUmB,SAAS,sBAC9B+uH,EAAiBhyH,EAAQ8I,cAAc,IAAMlM,KAAK82M,OAAS,kBAE/D1hF,EAAer1G,SAEnBmoC,EAAQhoD,UAAUiuL,yBAA2B,WAGzC,IAFA,IAAI+rB,EAA0B,GAAGxsM,MAAMpK,KAAKtD,KAAKoD,QAAQsf,iBAAiB,mDACtEy3L,EAAuB,GAClBn5M,EAAI,EAAGA,EAAIk5M,EAAwBv5M,OAAQK,IAC3C,eAAkBk5M,EAAwBvoM,SAAS3Q,EAAE4Q,WAAY,KAAK1F,cAAc,2CACrFiuM,EAAqB9tM,KAAK6tM,EAAwBvoM,SAAS3Q,EAAE4Q,WAAY,MAGjF,OAAOuoM,GAEXjyJ,EAAQhoD,UAAUk6M,kBAAoB,SAAUjtM,GAC5C,GAAIA,EAAE7M,QAAU,gBAAa6M,EAAE7M,OAAQ,kBAAmB,CACtD,IAAI+5M,EAAe,gBAAaltM,EAAE7M,OAAQ,kBACtC4tL,EAAwBluL,KAAKmuL,2BACjC,GAAiB,QAAbhhL,EAAEwT,QAAiC,aAAbxT,EAAEwT,OAAuB,CAC/C,GAAkB,QAAbxT,EAAEwT,QAAoB05L,IAAiBnsB,EAAsBA,EAAsBvtL,OAAS,IAC5E,aAAbwM,EAAEwT,QAAyB05L,IAAiBnsB,EAAsB,GACtE,OAEJ,IAAK,IAAIltL,EAAI,EAAGA,EAAIktL,EAAsBvtL,OAAQK,IAC9C,GAAIq5M,IAAiBnsB,EAAsBv8K,SAAS3Q,EAAE4Q,WAAY,KAAM,CACpEzE,EAAE+F,iBACF,IAAIzG,EAAqB,QAAbU,EAAEwT,OAAmB3f,EAAI,EAAIA,EAAI,EAE7C,YADAhB,KAAKi6M,oBAAoB/rB,EAAsBv8K,SAASlF,EAAMmF,WAAY,OAKrE,UAAbzE,EAAEwT,QACE3gB,KAAK4uB,OAAOgrB,mBAAqB55C,KAAKi4M,eACnC9qM,EAAE7M,OAAOgL,KAAOtL,KAAK82M,OAAS,iBACjC92M,KAAK24M,wBAAuB,KAK5CzwJ,EAAQhoD,UAAUo6M,gBAAkB,WAC5Bt6M,KAAKoD,SACL,gBAAOpD,KAAKoD,SAEhBpD,KAAK2T,UAETu0C,EAAQhoD,UAAU24C,iBAAmB,WAC7B74C,KAAK4uB,OAAOE,cAGhB9uB,KAAKmkG,YAAc,CAAC,CAAEz1F,MAAO,QAA4BiqF,QAAS34F,KAAKs6M,iBACnE,CAAE5rM,MAAO,QAAmBiqF,QAAS34F,KAAK2T,QAC1C,CAAEjF,MAAO,QAAiBiqF,QAAS34F,KAAKiV,mBACxC,CAAEvG,MAAO,QAA4BiqF,QAAS34F,KAAKm4M,gBAAgBvyM,KAAK5F,OACxE,CAAE0O,MAAO,QAAqBiqF,QAAS34F,KAAKk4M,qBAC5C,CAAExpM,MAAO,QAAuBiqF,QAAS34F,KAAKk4M,qBAC9C,CAAExpM,MAAO,QAA4BiqF,QAAS34F,KAAKi5L,cACnD,CAAEvqL,MAAO,QAAkBiqF,QAAS34F,KAAKk4M,qBACzC,CAAExpM,MAAO,OAAciqF,QAAS34F,KAAKu6M,wBACrC,CAAE7rM,MAAO,QAAsBiqF,QAAS34F,KAAKs6M,iBAC7C,CAAE5rM,MAAO,QAAgBiqF,QAAS34F,KAAKwS,SACvC,CAAE9D,MAAO,QAAmBiqF,QAAS34F,KAAKo6M,oBAC9C,eAAuBp6M,KAAK4uB,OAAQ5uB,KAAKmkG,aAAa,EAAMnkG,MAC5DA,KAAKw6M,oBAAsBx6M,KAAK81L,YAAYlwL,KAAK5F,MACjDA,KAAKy6M,sBAAwBz6M,KAAK81L,YAAYlwL,KAAK5F,MACnDA,KAAK4uB,OAAOiqB,iBAAiB,QAAoB74C,KAAKw6M,qBACtDx6M,KAAK4uB,OAAOiqB,iBAAiB,QAAsB74C,KAAKy6M,yBAE5DvyJ,EAAQhoD,UAAU07C,oBAAsB,WAChC57C,KAAK4uB,OAAOE,cAGhB,eAAuB9uB,KAAK4uB,OAAQ5uB,KAAKmkG,aAAa,GACtDnkG,KAAK4uB,OAAOgtB,oBAAoB,QAAoB57C,KAAKw6M,qBACzDx6M,KAAK4uB,OAAOgtB,oBAAoB,QAAsB57C,KAAKy6M,yBAE/DvyJ,EAAQhoD,UAAUq6M,uBAAyB,SAAUptM,GACjD,IAAI7M,EAAS6M,EAAE7M,OACXw4M,EAAWx4M,EAAO4E,UAAUmB,SAAS,kBAAoB/F,EAAO4E,UAAUmB,SAAS,oBACnFrG,KAAK4uB,OAAOgrB,mBAAqBk/J,GAAY94M,KAAKi4M,gBAC9C,gBAAa9qM,EAAE7M,OAAQ,kBAC3BN,KAAK24M,wBAAuB,IAGpCzwJ,EAAQhoD,UAAU41L,YAAc,WACxB91L,KAAK4uB,OAAOgrB,mBACZ55C,KAAK64M,8BAA8B,OAAwB9pG,WAC3D/uG,KAAKi5C,QAAQY,oBAQrBqO,EAAQhoD,UAAU4U,cAAgB,WAC9B,MAAO,WAEJozC,EA/wBiB,I,6GCbxB7oD,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxCK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAS5D85M,EAAkB,6BAClBC,EAAgB,gBAChBC,EAAY,cACZC,EAAe,qBACfC,EAAc,iBACdC,EAAO,qBACPC,EAAS,gBACTC,EAAiB,mBACjBC,EAAiB,iDACjBC,EAAgB,sCAChBC,EAAY,cACZC,EAAY,cACZC,EAAY,cACZC,EAAc,oBACdC,EAAc,oBACdC,EAAe,iBACfC,EAAa,mBACbC,EAAa,oBACbC,EAAa,sBACbC,EAAmB,yBACnBC,EAAc,wBACdC,EAAmB,sBACnBC,EAAoB,oBACpBC,EAAiB,mBACjBC,EAAgB,iBAChBC,EAAiB,mBACjBC,EAAmB,qBACnB36M,EAAM,QACNu9B,EAAW,aACXq9K,EAAgB,kBAChBC,EAAe,qBACfC,EAAyB,wBACzBC,EAAe,mBACfC,EAAgB,kBAChBC,EAAiB,mBACjBC,EAAc,CAAC,QAAS,QAAS,SACjCC,EAAc,gBACdC,EAAe,sBACfC,EAAe,iBACfC,EAAc,qBACd,EAA2B,SAAUl6M,GAErC,SAASm6M,IACL,OAAkB,OAAXn6M,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAW/D,OAbAX,EAAU29M,EAAWn6M,GAIrBzC,EAAW,CACP,eAAS,KACV48M,EAAU98M,UAAW,YAAQ,GAChCE,EAAW,CACP,eAAS,OACV48M,EAAU98M,UAAW,YAAQ,GAChCE,EAAW,CACP,eAAS,KACV48M,EAAU98M,UAAW,YAAQ,GACzB88M,EAdmB,CAe5B,QAEE,EAA8B,SAAUn6M,GAExC,SAASo6M,IACL,OAAkB,OAAXp6M,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAW/D,OAbAX,EAAU49M,EAAcp6M,GAIxBzC,EAAW,CACP,eAAS,cACV68M,EAAa/8M,UAAW,cAAU,GACrCE,EAAW,CACP,eAAS,WACV68M,EAAa/8M,UAAW,cAAU,GACrCE,EAAW,CACP,eAAS,UACV68M,EAAa/8M,UAAW,aAAS,GAC7B+8M,EAdsB,CAe/B,QAEE,EAA+B,SAAUp6M,GAEzC,SAASq6M,IACL,OAAkB,OAAXr6M,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAiB/D,OAnBAX,EAAU69M,EAAer6M,GAIzBzC,EAAW,CACP,eAAS,KACV88M,EAAch9M,UAAW,eAAW,GACvCE,EAAW,CACP,eAAS,KACV88M,EAAch9M,UAAW,iBAAa,GACzCE,EAAW,CACP,eAAS,IACV88M,EAAch9M,UAAW,iBAAa,GACzCE,EAAW,CACP,eAAS,IACV88M,EAAch9M,UAAW,kBAAc,GAC1CE,EAAW,CACP,eAAS,MACV88M,EAAch9M,UAAW,uBAAmB,GACxCg9M,EApBuB,CAqBhC,QAcE,EAA0B,SAAUr6M,GASpC,SAASs6M,EAASh6M,EAASC,GACvB,IAAIC,EAAQR,EAAOS,KAAKtD,KAAMmD,EAASC,IAAYpD,KAkCnD,OAjCAqD,EAAM+5M,YAAc,CAAEjnH,OAAQ,KAAMknH,UAAU,EAAOjlM,UAAU,GAC/D/U,EAAMi6M,kBAAoB,GAC1Bj6M,EAAMk6M,aAAe,GACrBl6M,EAAMm6M,QAAS,EACfn6M,EAAMo6M,UAAW,EACjBp6M,EAAMq6M,WAAa,GACnBr6M,EAAMs6M,eAAiB,GACvBt6M,EAAM8X,SAAW,IACjB9X,EAAMu6M,YAAc,IACpBv6M,EAAMw6M,2BAA4B,EAClCx6M,EAAM0nC,OAAS,EACf1nC,EAAMy6M,oBAAsB,EAC5Bz6M,EAAMkuH,MAAO,EACbluH,EAAM06M,cAAgB,GACtB16M,EAAM26M,aAAe,cACrB36M,EAAM46M,YAAc,GACpB56M,EAAM66M,WAAa,EACnB76M,EAAM86M,wBAAyB,EAC/B96M,EAAM+6M,YAAc,EACpB/6M,EAAM+T,WAAY,EAMlB/T,EAAMg7M,SAAW,GAMjBh7M,EAAMi7M,UAAY,GAClBj7M,EAAMk7M,gBAAkBp7M,EACjBE,EA8xGX,OAz0GAhE,EAAU89M,EAAUt6M,GAqDpBs6M,EAASj9M,UAAU+U,kBAAoB,SAAUC,EAASC,GACtD,IAAK,IAAItH,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKF,GAAUrH,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC9D,IAAIwH,EAAOxR,EAAGgK,GACd,OAAQwH,GACJ,IAAK,oBACDrV,KAAKw+M,cAAcx+M,KAAKy+M,mBACxBz+M,KAAKm6K,WACL,MACJ,IAAK,UACDn6K,KAAK0+M,mBACL,MACJ,IAAK,WACD1+M,KAAK2+M,uBACL,MACJ,IAAK,YACD3+M,KAAK4+M,SACL5+M,KAAK6+M,mBACL,MACJ,IAAK,UACD7+M,KAAKkY,QAAQwuD,OAAS,eAAkB1mE,KAAKkY,QAAQwuD,QAAU,GAAK1mE,KAAKkY,QAAQwuD,OACjF1mE,KAAKkY,QAAQ5P,MAAQ,eAAkBtI,KAAKkY,QAAQ5P,OAAS,GAAKtI,KAAKkY,QAAQ5P,MAC/EtI,KAAKkY,QAAQ4mM,OAAS,eAAkB9+M,KAAKkY,QAAQ4mM,QAAU,GAAK9+M,KAAKkY,QAAQ4mM,OACjF9+M,KAAK++M,wBACL,MACJ,IAAK,WACD/+M,KAAKg/M,mBACLh/M,KAAKi/M,iBACL,MACJ,IAAK,iBACDj/M,KAAKwgI,0BACLxgI,KAAK4hI,0BACL5hI,KAAKk/M,qBAAoB,GACzB,MACJ,IAAK,QACDl/M,KAAKm/M,qBACL,MACJ,IAAK,kBACDn/M,KAAKo/M,4BACL,MACJ,IAAK,WACD,IAAIv/E,EAAa,eAAS,gBAAiB7/H,KAAKoD,SAC5Cy8H,EAAW,GAAG13H,QACdnI,KAAK6+M,mBAGL7+M,KAAKm6K,WAET,MACJ,IAAK,cACL,IAAK,cACL,IAAK,aACDn6K,KAAKm6K,WACL,MACJ,IAAK,mBACDn6K,KAAKm6K,WACL,MACJ,IAAK,SACDn6K,KAAKya,KAAK4P,UAAUrqB,KAAKwa,QACzBxa,KAAKq/M,oBACLr/M,KAAKs/M,aAAe,eAAS,gBAAiBt/M,KAAKya,MACnD,MACJ,IAAK,WACDza,KAAK4/G,YAAYzqG,EAAQ1K,UACzB,SAIhB0yM,EAASj9M,UAAUm/M,kBAAoB,WAC/B,eAAkBr/M,KAAK42C,YACc,kBAAzB52C,KAAKkY,QAAc,SAC3BlY,KAAKu/M,aAAa92K,UAAqC,cAAxBzoC,KAAKkY,QAAQwuD,OACxC1mE,KAAKw/M,eAAe,UAAYx/M,KAAKkY,QAAQwuD,OACjD1mE,KAAKu/M,aAAa50M,aAAa,QAAS3K,KAAKu/M,aAAa92K,WACtDzoC,KAAKy/M,gBAAkB,eAAkBz/M,KAAKy/M,cAAcvzM,cAAc,IAAM0uM,MAChF56M,KAAKy/M,cAAcvzM,cAAc,IAAM0uM,GAAW9vM,UAAY9K,KAAKw/M,eAAe,mBAG1Fx/M,KAAK0/M,mBAGbvC,EAASj9M,UAAUy/M,YAAc,SAAU9iM,GAEvC,IADA,IAAI+iM,EACK/xM,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKpV,KAAKs/M,cAAezxM,EAAKhK,EAAGlD,OAAQkN,IAAM,CACxE,IAAItN,EAAMsD,EAAGgK,GACT7N,KAAKs/M,aAAa,GAAK/+M,KAASsc,IAChC+iM,EAAWr/M,GAGnB,OAAOq/M,GAEXzC,EAASj9M,UAAUw/M,eAAiB,WAChC,IAAIt8M,EAEJ,GAAIpD,KAAKq+M,SAAS19M,OAAS,IAAM,eAAkBX,KAAKy/M,cAAcvzM,cAAc,IAAM4uM,IACtF,IAAK,IAAI95M,EAAI,EAAGA,EAAIhB,KAAKq+M,SAAS19M,OAAQK,IACtCoC,EAAUpD,KAAKq+M,SAASr9M,GAAGkL,cAAc,kBACzC9I,EAAQ0H,UAAY9K,KAAKw/M,eAAex/M,KAAK2/M,YAAY3/M,KAAKs+M,UAAUt9M,GAAG4sF,SAC3E5tF,KAAKs+M,UAAUt9M,GAAG4sF,OAAS5tF,KAAKw/M,eAAex/M,KAAK2/M,YAAY3/M,KAAKs+M,UAAUt9M,GAAG4sF,SAC9E5tF,KAAKq+M,SAASr9M,GAAGkE,UAAUmB,SAAS41M,IACpCj8M,KAAKq+M,SAASr9M,GAAGkL,cAAc,YAAYvB,aAAa,QAAS3K,KAAKw/M,eAAe,WAErFx/M,KAAKq+M,SAASr9M,GAAGkL,cAAc,qBAC/BlM,KAAKq+M,SAASr9M,GAAGkL,cAAc,YAAYvB,aAAa,QAAS3K,KAAKw/M,eAAe,WAErFx/M,KAAKq+M,SAASr9M,GAAGkL,cAAc,uBAC/BlM,KAAKq+M,SAASr9M,GAAGkL,cAAc,YAAYvB,aAAa,QAAS3K,KAAKw/M,eAAe,WAErFx/M,KAAKq+M,SAASr9M,GAAGkL,cAAc,uBAC/BlM,KAAKq+M,SAASr9M,GAAGkL,cAAc,YAAYvB,aAAa,QAAS3K,KAAKw/M,eAAe,UAEpFx/M,KAAK6/M,aACN7/M,KAAK8/M,aAAar3K,UAAqC,WAAxBzoC,KAAKkY,QAAQ4mM,OACxC9+M,KAAKw/M,eAAe,UAAYx/M,KAAKkY,QAAQ4mM,OACjD9+M,KAAK8/M,aAAan1M,aAAa,QAAS3K,KAAKw/M,eAAe,WAC5Dx/M,KAAKme,YAAYsqB,UAAoC,UAAvBzoC,KAAKkY,QAAQ5P,MACvCtI,KAAKw/M,eAAe,SAAWx/M,KAAKkY,QAAQ5P,MAChDtI,KAAKme,YAAYxT,aAAa,QAAS3K,KAAKw/M,eAAe,YAK3ErC,EAASj9M,UAAU2+M,iBAAmB,WAC9B7+M,KAAK+/M,aACL,eAAO//M,KAAK+/M,YACZ//M,KAAK+/M,WAAa,KAClB//M,KAAKq+M,SAAW,GAChBr+M,KAAKggN,uBAAuBhgN,KAAKs+M,WAC7Bt+M,KAAKigN,gBACLjgN,KAAKkgN,sBACLlgN,KAAKmgN,sBACLngN,KAAKogN,6BAIjBjD,EAASj9M,UAAU4T,UAAY,WAC3B9T,KAAKyuE,WAAa,CAAE4xI,OAAQ,YAAaxqG,MAAO,QAASyqG,OAAQ,SAAUC,gBAAiB,2BACxFC,cAAe,qBAAsBC,mBAAoB,yBACzDC,mBAAoB,yBAA0BC,gBAAiB,2BAC/DC,oBAAqB,wBAAyBC,qBAAsB,6BACpEC,sBAAuB,4BAA6BC,qBAAsB,wBAAyBC,WAAY,YAC/GC,qBAAsB,kBAAmBjrH,MAAO,QAAS7wF,OAAQ,SAAUsJ,OAAQ,SAAU+qG,OAAQ,cACrG0nG,YAAa,qBAAsBC,MAAO,QAASC,OAAQ,SAAUC,MAAO,QAC5EC,iBAAkB,uBAAwBC,qBAAsB,yBAA0BC,WAAY,cACtGnjI,KAAM,QAEVr+E,KAAKya,KAAO,IAAI,OAAK,WAAYza,KAAKyuE,WAAYzuE,KAAKwa,QACvDxa,KAAKs/M,aAAe,eAAS,gBAAiBt/M,KAAKya,MACnDza,KAAKyhN,eACLzhN,KAAKwgI,0BACLxgI,KAAKk/M,qBAAoB,GACzB,IAAIr/E,EAAa,eAAS,gBAAiB7/H,KAAKoD,SAEhD,GAA6B,iBAAzBpD,KAAKoD,QAAQsM,QAA4B,CACzC,IAAIsI,EAAehY,KAAKuE,cAAc,QAAS,CAAEyK,MAAO,CAAER,KAAM,UAC5D/B,EAAQ,EACZ,IAAKA,EAAOA,EAAQzM,KAAKoD,QAAQqkB,WAAW9mB,OAAQ8L,IACA,OAA5CzM,KAAKoD,QAAQqkB,WAAWhb,GAAOwzH,SAC/BjoH,EAAarN,aAAa3K,KAAKoD,QAAQqkB,WAAWhb,GAAOwzH,SAAUjgI,KAAKoD,QAAQqkB,WAAWhb,GAAOyzH,WAEjD,OAA5ClgI,KAAKoD,QAAQqkB,WAAWhb,GAAOwzH,UACpCjoH,EAAarN,aAAa3K,KAAKoD,QAAQqkB,WAAWhb,GAAOwzH,SAAU,eAAY,aAEnFjoH,EAAalN,UAAY9K,KAAKoD,QAAQ0H,UAErCkN,EAAa8P,aAAa,SAC3B9P,EAAarN,aAAa,OAAQ,eAEtC3K,KAAKoD,QAAQsB,YAAYsT,GACzBhY,KAAKoD,QAAU4U,EACf,gBAAS,gBAAiB6nH,EAAY7/H,KAAKoD,SAG3Cy8H,EAAW,GAAG6hF,uBACT,eAAkB7hF,EAAW,GAAG10G,MAAMnb,OAGjC,eAAkB6vH,EAAW,GAAG10G,MAAM7f,KAAO,eAAkBu0H,EAAW,GAAG10G,MAAMnb,MACzFhQ,KAAKoD,QAAQuH,aAAa,OAAQk1H,EAAW,GAAG10G,MAAM7f,IAGtDtL,KAAKoD,QAAQuH,aAAa,OAAQ,eANlC3K,KAAKoD,QAAQuH,aAAa,OAAQk1H,EAAW,GAAG10G,MAAMnb,OAS1D,eAAkBhQ,KAAKoD,QAAQsH,aAAa,UAC5C1K,KAAKoD,QAAQuH,aAAa,OAAQ3K,KAAKoD,QAAQsH,aAAa,OAE3D1K,KAAKoD,QAAQ0kB,aAAa,SAC3B9nB,KAAKoD,QAAQuH,aAAa,OAAQ,QAEtC3K,KAAKo/M,4BACLp/M,KAAKwe,WAAa,CACd0J,MAAO,SAEPloB,KAAKoD,QAAQ0kB,aAAa,cAC1B9nB,KAAKmb,SAAWnb,KAAKoD,QAAQsH,aAAa,aAE9C1K,KAAK2hN,YAAc,OAAQjmK,KAAK1rC,KAChChQ,KAAKg+M,aAAeh+M,KAAKoD,QAAQsH,aAAa,SAElDyyM,EAASj9M,UAAUuhN,aAAe,WAC9B,IAAI/xH,EAAY,eAAQ1vF,KAAKoD,QAAS,QACtC,IAAK,eAAkBssF,GACnB,KAAOA,GAAaA,IAAc9hF,SAASilD,gBAAiB68B,EAAYA,EAAU/tE,cACpD,SAAtB+tE,EAAUhgF,UACV1P,KAAKw9M,QAAS,EACdx9M,KAAKqe,YAAcqxE,EACnBA,EAAU/kF,aAAa,UAAW,uBAClC+kF,EAAU/kF,aAAa,WAAY,yBAKnDwyM,EAASj9M,UAAU6U,eAAiB,WAChC,OAAO/U,KAAKgV,aAAa,CAAC,eAO9BmoM,EAASj9M,UAAU4U,cAAgB,WAC/B,MAAO,YAEXqoM,EAASj9M,UAAUk/M,0BAA4B,WACvCp/M,KAAK4hN,iBACL5hN,KAAKoD,QAAQuH,aAAa,YAAa,QACvC3K,KAAKoD,QAAQuH,aAAa,kBAAmB,UAG7C3K,KAAKoD,QAAQwH,gBAAgB,aAC7B5K,KAAKoD,QAAQwH,gBAAgB,qBASrCuyM,EAASj9M,UAAUyT,OAAS,WACxB3T,KAAK6hN,qBACL7hN,KAAK8hN,mBACL9hN,KAAK4hI,0BACL5hI,KAAK4T,aACL5T,KAAK2+M,uBACL3+M,KAAKw+M,cAAcx+M,KAAKy+M,mBACxBz+M,KAAK4+M,SACL5+M,KAAKm/M,qBACLn/M,KAAK0+M,mBACL1+M,KAAK4/G,eAETu9F,EAASj9M,UAAU2hN,mBAAqB,WACpC7hN,KAAKu/M,aAAev/M,KAAKuE,cAAc,SAAU,CAAEC,UAAW,cAAewK,MAAO,CAAE,KAAQ,YAC9FhP,KAAKu/M,aAAa50M,aAAa,WAAY3K,KAAKmb,UACX,kBAAzBnb,KAAKkY,QAAc,QAC3BlY,KAAKu/M,aAAan6L,YAAuC,cAAxBplB,KAAKkY,QAAQwuD,OAC1C1mE,KAAKw/M,eAAe,UAAYx/M,KAAKkY,QAAQwuD,OACjD1mE,KAAKu/M,aAAa50M,aAAa,QAAS3K,KAAKu/M,aAAa92K,YAG1DzoC,KAAKu/M,aAAa76M,YAAY1E,KAAKkY,QAAQwuD,QAE/C1mE,KAAKoD,QAAQuH,aAAa,aAAc,aAE5CwyM,EAASj9M,UAAUigN,oBAAsB,WACrCngN,KAAKoD,QAAQuH,aAAa,WAAY,MACtC3K,KAAKigN,cAAgBjgN,KAAKuE,cAAc,MAAO,CAAEC,UAAWy2M,IAC5Dj7M,KAAK8/M,aAAe9/M,KAAKuE,cAAc,SAAU,CAAEC,UAAW02M,EAC1DlsM,MAAO,CAAE,KAAQ,SAAU,SAAYhP,KAAK49M,eAChD59M,KAAKme,YAAcne,KAAKuE,cAAc,SAAU,CAAEC,UAAW22M,EACzDnsM,MAAO,CAAE,KAAQ,SAAU,SAAYhP,KAAK49M,eAChD59M,KAAKigN,cAAcv7M,YAAY1E,KAAKme,aACpCne,KAAKigN,cAAcv7M,YAAY1E,KAAK8/M,cACpC9/M,KAAK++M,wBACL/+M,KAAKy/M,cAAc/6M,YAAY1E,KAAKigN,eACpCjgN,KAAKu/M,aAAaz/L,OACb9f,KAAK+hN,gBACN/hN,KAAK8/M,aAAa//L,QAEtB/f,KAAKgiN,0BAGT7E,EAASj9M,UAAU+hN,6BAA+B,SAAU7+M,GACpDA,IAAYpD,KAAKw9M,SACjBx9M,KAAKu/M,aAAaz/L,OAClB9f,KAAKigN,cAAgB78M,EACrBpD,KAAK8/M,aAAe9/M,KAAKigN,cAAc/zM,cAAc,sBACrDlM,KAAKme,YAAcne,KAAKigN,cAAc/zM,cAAc,qBACpDlM,KAAK8/M,aAAa//L,QAClB/f,KAAKkiN,2BACLliN,KAAKgiN,yBACLhiN,KAAKogN,4BAGbjD,EAASj9M,UAAU8hN,uBAAyB,WACxC,OAAal2M,IAAI9L,KAAK8/M,aAAc,QAAS9/M,KAAKmiN,kBAAmBniN,MACrE,OAAa8L,IAAI9L,KAAKme,YAAa,QAASne,KAAKoiN,iBAAkBpiN,OAEvEm9M,EAASj9M,UAAUgiN,yBAA2B,WAC1C,OAAa/8M,OAAOnF,KAAK8/M,aAAc,QAAS9/M,KAAKmiN,mBACrD,OAAah9M,OAAOnF,KAAKme,YAAa,QAASne,KAAKoiN,mBAExDjF,EAASj9M,UAAUggN,oBAAsB,WACjClgN,KAAKigN,gBACLjgN,KAAKkiN,2BACL,eAAOliN,KAAKigN,eACZjgN,KAAKigN,cAAgB,OAG7B9C,EAASj9M,UAAU6+M,sBAAwB,WAUvC,GATqC,kBAAzB/+M,KAAKkY,QAAc,QAC3BlY,KAAKu/M,aAAan6L,YAAuC,cAAxBplB,KAAKkY,QAAQwuD,OAC1C1mE,KAAKw/M,eAAe,UAAYx/M,KAAKkY,QAAQwuD,OACjD1mE,KAAKu/M,aAAa50M,aAAa,QAAS3K,KAAKu/M,aAAan6L,eAG1DplB,KAAKu/M,aAAaz0M,UAAY,GAC9B9K,KAAKu/M,aAAa76M,YAAY1E,KAAKkY,QAAQwuD,SAE3C1mE,KAAK8/M,aAAc,CACnB,IAAIuC,EAAa,eAAkBriN,KAAKkY,QAAQ4mM,QAAU,SAAW9+M,KAAKkY,QAAQ4mM,OAClF9+M,KAAKkY,QAAQ4mM,OAASuD,EACe,kBAAzBriN,KAAKkY,QAAc,QAC3BlY,KAAK8/M,aAAa16L,YAAuC,WAAxBplB,KAAKkY,QAAQ4mM,OAC1C9+M,KAAKw/M,eAAe,UAAYx/M,KAAKkY,QAAQ4mM,OACjD9+M,KAAK8/M,aAAan1M,aAAa,QAAS3K,KAAK8/M,aAAa16L,eAG1DplB,KAAK8/M,aAAah1M,UAAY,GAC9B9K,KAAK8/M,aAAap7M,YAAY1E,KAAKkY,QAAQ4mM,SAGnD,GAAI9+M,KAAKme,YAAa,CAClB,IAAImkM,EAAY,eAAkBtiN,KAAKkY,QAAQ5P,OAAS,QAAUtI,KAAKkY,QAAQ5P,MAC/EtI,KAAKkY,QAAQ5P,MAAQg6M,EACe,kBAAxBtiN,KAAKkY,QAAa,OAC1BlY,KAAKme,YAAYiH,YAAsC,UAAvBplB,KAAKkY,QAAQ5P,MACzCtI,KAAKw/M,eAAe,SAAWx/M,KAAKkY,QAAQ5P,MAChDtI,KAAKme,YAAYxT,aAAa,QAAS3K,KAAKme,YAAYiH,eAGxDplB,KAAKme,YAAYrT,UAAY,GAC7B9K,KAAKme,YAAYzZ,YAAY1E,KAAKkY,QAAQ5P,UAItD60M,EAASj9M,UAAU4hN,iBAAmB,WAClC9hN,KAAKoD,QAAQuH,aAAa,WAAY,MACtC,IAAIsN,EAAejY,KAAKuE,cAAc,OAAQ,CAAEC,UAAWm2M,IAC3D36M,KAAKoD,QAAQue,cAAc6D,aAAavN,EAAcjY,KAAKoD,SAC3DpD,KAAKuiN,gBAAkBviN,KAAKuE,cAAc,MAAO,CAAEC,UAAWq2M,IAC9D76M,KAAKoD,QAAQue,cAAc6D,aAAaxlB,KAAKuiN,gBAAiBviN,KAAKoD,SACnE6U,EAAavT,YAAY1E,KAAKoD,SAC9BpD,KAAKuiN,gBAAgB79M,YAAY1E,KAAKu/M,cACtCv/M,KAAKuiN,gBAAgB79M,YAAYuT,GACjCjY,KAAKy/M,cAAgBz/M,KAAKuE,cAAc,MAAO,CAAEC,UAAWk2M,IAC5D16M,KAAKuiN,gBAAgB5gM,cAAc6D,aAAaxlB,KAAKy/M,cAAez/M,KAAKuiN,iBACzEviN,KAAKy/M,cAAc/6M,YAAY1E,KAAKuiN,iBACpCviN,KAAKwiN,eAETrF,EAASj9M,UAAUi/M,mBAAqB,WACpC,GAAIn/M,KAAKyiN,MAAM9hN,OAAQ,CACnB,GAAIX,KAAK2zF,mBAAqB3zF,KAAKs+M,UAAU39M,OAEzC,YADAX,KAAKggN,uBAAuBhgN,KAAKs+M,WAGrC,GAAI,eAAkBt+M,KAAKyiN,MAAM,GAAGpkI,MAChC,OAEJr+E,KAAK+hN,gBAAiB,EACtB,IAAIU,EAAQ,GAAG/0M,MAAMpK,KAAKtD,KAAKyiN,OAC3BnE,EAAY,GACXt+M,KAAKq9M,WACNr9M,KAAK0iN,YACLD,EAAQ,CAACA,EAAM,KAEnB,IAAK,IAAI50M,EAAK,EAAG80M,EAAUF,EAAO50M,EAAK80M,EAAQhiN,OAAQkN,IAAM,CACzD,IAAIge,EAAO82L,EAAQ90M,GACf+0M,EAAW,CACX5yM,KAAM6b,EAAK7b,KAAO,IAAM6b,EAAKrd,KAAKvK,MAAM,KAAK4nB,EAAKrd,KAAKvK,MAAM,KAAKtD,OAAS,GAC3EkiN,QAAS,GACTxkI,KAAMxyD,EAAKwyD,KACXuP,OAAQ5tF,KAAKw/M,eAAe,wBAC5BhxM,KAAMqd,EAAKrd,KACXs0M,mBAAoB,CAAEC,QAAS,GAAIC,QAAS,IAC5CC,WAAY,KAEhB3E,EAAUjyM,KAAKu2M,GACf5iN,KAAKs+M,UAAUjyM,KAAKu2M,GAExB5iN,KAAKggN,uBAAuB1B,GACvBt+M,KAAK6/M,aAAc7/M,KAAK+/M,YAAe//M,KAAKigN,eAAmBjgN,KAAKw9M,SAAUx9M,KAAKkjN,gBAAkBljN,KAAKmjN,cAC3GnjN,KAAKmgN,sBAETngN,KAAKogN,0BACDpgN,KAAKojN,mBACLpjN,KAAK+qC,MAAQ/qC,KAAKs+M,UAAU39M,OAAS,GAEzCX,KAAK+hN,gBAAiB,IAG9B5E,EAASj9M,UAAUkgN,wBAA0B,WACzC,GAAIpgN,KAAKigN,cAAe,CACpB,IAAI79L,EAAWpiB,KAAKy/M,cAAc/8L,iBAAiB,IAAM05L,GAAkBz7M,OACvEX,KAAKy/M,cAAc/8L,iBAAiB,2CAA2C/hB,OAC/EX,KAAKy/M,cAAc/8L,iBAAiB,QAAUu5L,GAAgBt7M,OAC9DX,KAAKy/M,cAAc/8L,iBAAiB,QAAUs5L,GAAmBr7M,OACjEyhB,EAAW,GAAKA,IAAapiB,KAAKy/M,cAAc/8L,iBAAiB,MAAM/hB,OACvEX,KAAK8/M,aAAan1M,aAAa,WAAY,YAG3C3K,KAAK8/M,aAAal1M,gBAAgB,cAI9CuyM,EAASj9M,UAAUsiN,YAAc,WAC7B,IAAIa,EAAerjN,KAAKuiN,gBAAgBr2M,cAAc,gBACtD,GAAIlM,KAAKsjN,SAAU,CACftjN,KAAKujN,gBAA8C,kBAAnBvjN,KAAa,SAAkBA,KAAKsjN,SAChE,gBAAOtjN,KAAKsjN,SAAU11M,UAC1B,IAAIxK,EAAUpD,KAAKoD,QACfogN,GAAiB,EACrB,MAAOpgN,EAAQqwC,WACXrwC,EAAUA,EAAQqwC,WACdrwC,IAAYpD,KAAKujN,kBACjBC,GAAiB,EACZH,EAIDA,EAAav4M,UAAY9K,KAAKw/M,eAAe,iBAH7Cx/M,KAAKyjN,uBAOZD,GAAkBH,GACnB,gBAAOA,QAGL,eAAkBrjN,KAAKu+M,uBAAsDhzM,IAAlCvL,KAAKu+M,gBAAgB+E,WACtEtjN,KAAKyjN,qBACLzjN,KAAKujN,gBAAkBvjN,KAAKy/M,cAC5Bz/M,KAAKiL,cAAc,CAAEq4M,SAAUtjN,KAAKy/M,gBAAiB,IAEzDz/M,KAAK0jN,kBAETvG,EAASj9M,UAAU++M,eAAiB,WAChC,GAAIj/M,KAAKsjN,SACLtjN,KAAKwiN,kBAEJ,CACDxiN,KAAKujN,gBAAkB,KACvB,IAAIF,EAAerjN,KAAKuiN,gBAAgBr2M,cAAc,gBAClDm3M,GACA,gBAAOA,KAInBlG,EAASj9M,UAAUujN,mBAAqB,WACpC,IAAIE,EAAe3jN,KAAKuE,cAAc,OAAQ,CAAEC,UAAWo2M,IAC3D+I,EAAa74M,UAAY9K,KAAKw/M,eAAe,iBAC7Cx/M,KAAKuiN,gBAAgB79M,YAAYi/M,IAErCxG,EAASj9M,UAAUsgI,wBAA0B,WACzC,IAAK,eAAkBxgI,KAAKggB,gBACxB,IAAK,IAAInS,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKpV,KAAKggB,gBAAiBnS,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC1E,IAAIi0H,EAAMj+H,EAAGgK,GACT8uM,EAAY34M,QAAQ89H,GAAO,GAC3B9hI,KAAKoD,QAAQuH,aAAam3H,EAAK9hI,KAAKggB,eAAe,GAAK8hH,MAKxEq7E,EAASj9M,UAAU0hI,wBAA0B,WACzC,IAAK,eAAkB5hI,KAAKggB,gBACxB,IAAK,IAAInS,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKpV,KAAKggB,gBAAiBnS,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC1E,IAAIi0H,EAAMj+H,EAAGgK,GACb,GAAI8uM,EAAY34M,QAAQ89H,IAAQ,EAC5B,GAAY,UAARA,EAAiB,CACjB,IAAI7hH,EAAsBjgB,KAAKggB,eAAe,GAAK8hH,GAAKjnH,QAAQ,OAAQ,KAAMtO,OACnD,KAAvB0T,GACA,eAAS,CAACjgB,KAAKy/M,eAAgBx/L,EAAmBhc,MAAM,WAG3D,GAAY,UAAR69H,EAAiB,CACtB,IAAI8hF,EAAc5jN,KAAKy/M,cAAc/0M,aAAao3H,GAClD8hF,EAAe,eAAkBA,GAC7B5jN,KAAKggB,eAAe,GAAK8hH,GADoB8hF,EAAc5jN,KAAKggB,eAAe,GAAK8hH,GAExF9hI,KAAKy/M,cAAc90M,aAAam3H,EAAK8hF,QAGrC5jN,KAAKy/M,cAAc90M,aAAam3H,EAAK9hI,KAAKggB,eAAe,GAAK8hH,MAMlFq7E,EAASj9M,UAAUy+M,qBAAuB,WACtC,GAAI3+M,KAAKq9M,WAAar9M,KAAKoD,QAAQ0kB,aAAa,YAAa,CACzD,IAAI+7L,EAAUj2M,SAASk2M,gBAAgB,YACvCD,EAAQprM,MAAQ,WAChBzY,KAAKoD,QAAQ2gN,iBAAiBF,QAExB7jN,KAAKq9M,UACXr9M,KAAKoD,QAAQwH,gBAAgB,aAGrCuyM,EAASj9M,UAAU8jN,gBAAkB,SAAUpB,GACvC5iN,KAAK6/M,YACD7/M,KAAKojN,iBAELpjN,KAAKikN,eAAerB,GAGpB5iN,KAAK8+M,OAAO8D,GAEhB5iN,KAAKkgN,uBAEClgN,KAAKigN,eACXjgN,KAAKmgN,sBAETngN,KAAKogN,2BAETjD,EAASj9M,UAAU+jN,eAAiB,SAAUrB,GAC1C,GAAI5iN,KAAKs+M,UAAU39M,OAASiiN,EAASjiN,SAAW,GACiC,MAA7EX,KAAKs+M,UAAWt+M,KAAKs+M,UAAU39M,OAASiiN,EAASjiN,OAAS,GAAIsiN,WAAoB,EAC9EjjN,KAAKq9M,UAAYr9M,KAAK+qC,MAAQ,MAC5B/qC,KAAK+qC,MAEX,IAAIm5K,GAAoBlkN,KAAKmjN,aACa,kBAA/BnjN,KAAKs+M,UAAUt+M,KAAK+qC,QAC3B/qC,KAAKm+M,wBAAyB,EAC9Bn+M,KAAK8+M,OAAO9+M,KAAKs+M,UAAUt+M,KAAK+qC,OAAQm5K,GACM,MAA1ClkN,KAAKs+M,UAAUt+M,KAAK+qC,OAAOk4K,YAC3BjjN,KAAKikN,eAAerB,MAItB5iN,KAAK+qC,QAInBoyK,EAASj9M,UAAU0/G,YAAc,SAAUC,GACvC,IAAIskG,EAAqBtkG,EACpB,eAAkBA,KACnBskG,EAAsBtkG,EAAYhlG,QAAQ,OAAQ,KAAMtO,QAEvD,eAAkBszG,IAAuC,KAAvBskG,GACnC,gBAAY,CAACnkN,KAAKy/M,eAAgB0E,EAAmBlgN,MAAM,MAE/D,IAAIw9H,EAAuBzhI,KAAKyK,SAC3B,eAAkBzK,KAAKyK,WAA+B,KAAlBzK,KAAKyK,WAC1Cg3H,EAAwBzhI,KAAKyK,SAASoQ,QAAQ,OAAQ,KAAMtO,QAE3D,eAAkBvM,KAAKyK,WAAsC,KAAzBg3H,GACrC,eAAS,CAACzhI,KAAKy/M,eAAgBh+E,EAAqBx9H,MAAMw9H,EAAqBz9H,QAAQ,MAAQ,EAAI,IAAM,OAGjHm5M,EAASj9M,UAAU0T,WAAa,WAC5B,OAAa9H,IAAI9L,KAAKu/M,aAAc,QAASv/M,KAAKokN,kBAAmBpkN,MACrE,OAAa8L,IAAI9L,KAAKoD,QAAS,SAAUpD,KAAKqkN,cAAerkN,MAC7D,OAAa8L,IAAI8B,SAAU,QAAS5N,KAAK49J,YAAa59J,MACtDA,KAAK+mB,eAAiB,IAAI,OAAe/mB,KAAKy/M,cAAe,CACzD9gM,UAAW3e,KAAKgqD,iBAAiBpkD,KAAK5F,MACtCwe,WAAYxe,KAAKwe,WACjBE,UAAW,YAEX1e,KAAKw9M,QACL,OAAa1xM,IAAI9L,KAAKqe,YAAa,QAASre,KAAKskN,UAAWtkN,OAGpEm9M,EAASj9M,UAAUszC,aAAe,WAC9B,OAAaruC,OAAOnF,KAAKu/M,aAAc,QAASv/M,KAAKokN,mBACrD,OAAaj/M,OAAOnF,KAAKoD,QAAS,SAAUpD,KAAKqkN,eACjD,OAAal/M,OAAOyI,SAAU,QAAS5N,KAAK49J,aACxC59J,KAAKw9M,QACL,OAAar4M,OAAOnF,KAAKqe,YAAa,QAASre,KAAKskN,WAEpDtkN,KAAK+mB,gBACL/mB,KAAK+mB,eAAevU,WAG5B2qM,EAASj9M,UAAUokN,UAAY,WAC3BtkN,KAAKm6K,YAETgjC,EAASj9M,UAAU8pD,iBAAmB,SAAU78C,GAC5C,IAAI8E,EAAgB9E,EAAE7M,OACtB,OAAQ6M,EAAEwT,QACN,IAAK,QACD,GAAIxT,EAAE7M,SAAWN,KAAKme,YAClBne,KAAKoiN,wBAEJ,GAAIj1M,EAAE7M,SAAWN,KAAK8/M,aACvB9/M,KAAKmiN,yBAEJ,GAAIh1M,EAAE7M,SAAWN,KAAKu/M,aACvBv/M,KAAKokN,yBAEJ,GAAInyM,EAAc/M,UAAUmB,SAASm2M,GAAe,CACrD,IAAI+H,EAAWvkN,KAAKwkN,mBAAmB,KAAMr3M,GAC7Co3M,EAASE,KAAKxB,WAAa,IAC3BsB,EAASE,KAAK72H,OAAS5tF,KAAKw/M,eAAe,eAC3Cx/M,KAAK0kN,YAAYH,GAAU,QAE1B,GAAItyM,EAAc/M,UAAUmB,SAASo2M,GACtCz8M,KAAK2kN,aAAa3kN,KAAKwkN,mBAAmB,KAAMr3M,GAAIA,QAEnD,GAAI8E,EAAc/M,UAAUmB,SAASs1M,GAAa,CAC/C4I,EAAWvkN,KAAKwkN,mBAAmB,KAAMr3M,GAC7C,GAAK,eAAkBo3M,GAKlB,CACD,IAAIjkN,EAAS6M,EAAE7M,OAAOqhB,cAClBihM,EAAW5iN,KAAKs+M,UAAUt+M,KAAKq+M,SAASr6M,QAAQ1D,IACpDN,KAAKqhN,MAAMuB,QAPX2B,EAASE,KAAKxB,WAAa,IAC3BsB,EAASE,KAAK72H,OAAS5tF,KAAKw/M,eAAe,wBAC3Cx/M,KAAK4kN,YAAYL,EAASE,WAS9BzkN,KAAK6kN,YAAY13M,GACZ8E,EAAc/M,UAAUmB,SAASq1M,IAClC17M,KAAKu/M,aAAax/L,QAG1B5S,EAAE+F,iBACF/F,EAAE8R,kBACF,QAGZk+L,EAASj9M,UAAUskN,mBAAqB,SAAUM,EAAU33M,GACxD,IAAIy1M,EACAmC,EACJ,GAAI,eAAkBD,GAAW,CAC7B,IAAIxkN,EAAS6M,EAAE7M,OAAOqhB,cACtBihM,EAAW5iN,KAAKs+M,UAAUt+M,KAAKq+M,SAASr6M,QAAQ1D,SAGhDsiN,EAAWkC,EAEf,IAAK,IAAI9jN,EAAI,EAAGA,EAAIhB,KAAK29M,eAAeh9M,OAAQK,IACxChB,KAAK29M,eAAe38M,GAAGyjN,KAAKz0M,OAAS4yM,EAAS5yM,OAC9C+0M,EAAiB/kN,KAAK29M,eAAe38M,IAG7C,OAAO+jN,GAEX5H,EAASj9M,UAAU09J,YAAc,WACzB59J,KAAKy/M,eAAiBz/M,KAAK+/M,YAAc//M,KAAK+/M,WAAW7zM,cAAc,IAAMowM,KAC7E1uM,SAASyT,cAAcvB,OACvB9f,KAAK+/M,WAAW7zM,cAAc,IAAMowM,GAAcp3M,UAAUC,OAAOm3M,KAG3Ea,EAASj9M,UAAUkkN,kBAAoB,WACnCpkN,KAAKoD,QAAQ6xB,SAEjBkoL,EAASj9M,UAAUiiN,kBAAoB,WAC/BniN,KAAKojN,iBACLpjN,KAAKikN,eAAejkN,KAAKs+M,WAGzBt+M,KAAK8+M,OAAO9+M,KAAKs+M,YAGzBnB,EAASj9M,UAAUkiN,iBAAmB,WAClCpiN,KAAKm6K,WAEDn6K,KAAKojN,mBACLpjN,KAAK+qC,OAAS,GAElB/qC,KAAK89M,oBAAsB,GAE/BX,EAASj9M,UAAUwjN,eAAiB,WAC5B1jN,KAAKujN,kBACL,OAAaz3M,IAAI9L,KAAKujN,gBAAiB,OAAQvjN,KAAKglN,YAAahlN,MACjE,OAAa8L,IAAI9L,KAAKujN,gBAAiB,WAAYvjN,KAAKilN,UAAWjlN,MACnE,OAAa8L,IAAI9L,KAAKujN,gBAAiB,YAAavjN,KAAKklN,YAAallN,MACtE,OAAa8L,IAAI9L,KAAKujN,gBAAiB,QAASvjN,KAAKmlN,YAAanlN,MAClE,OAAa8L,IAAI9L,KAAKujN,gBAAiB,YAAavjN,KAAKolN,YAAaplN,QAG9Em9M,EAASj9M,UAAU8+M,iBAAmB,WAC9Bh/M,KAAKujN,kBACL,OAAap+M,OAAOnF,KAAKujN,gBAAiB,OAAQvjN,KAAKglN,aACvD,OAAa7/M,OAAOnF,KAAKujN,gBAAiB,WAAYvjN,KAAKilN,WAC3D,OAAa9/M,OAAOnF,KAAKujN,gBAAiB,YAAavjN,KAAKklN,aAC5D,OAAa//M,OAAOnF,KAAKujN,gBAAiB,YAAavjN,KAAKolN,eAGpEjI,EAASj9M,UAAUklN,YAAc,SAAUj4M,GAClCnN,KAAKqY,UAGVrY,KAAKujN,gBAAgBr+M,UAAU4G,IAAI8vM,GACnC57M,KAAKo+M,YAAcp+M,KAAKo+M,YAAc,EACtCjxM,EAAE+F,iBACF/F,EAAE8R,oBAENk+L,EAASj9M,UAAUglN,YAAc,WACxBllN,KAAKqY,UAGVrY,KAAKo+M,YAAcp+M,KAAKo+M,YAAc,EACjCp+M,KAAKo+M,aACNp+M,KAAKujN,gBAAgBr+M,UAAUC,OAAOy2M,KAG9CuB,EAASj9M,UAAU+kN,UAAY,SAAU93M,GAChCnN,KAAKqY,UAGc,YAApBrY,KAAKqlN,aACLl4M,EAAEm4M,aAAaD,WAAarlN,KAAKqlN,WAAWxjM,eAEhD1U,EAAE+F,iBACF/F,EAAE8R,oBAGNk+L,EAASj9M,UAAU8kN,YAAc,SAAU73M,GACvCnN,KAAKo+M,YAAc,EACnBp+M,KAAKujN,gBAAgBr+M,UAAUC,OAAOy2M,GACtC57M,KAAKqkN,cAAcl3M,GACnBA,EAAE+F,iBACF/F,EAAE8R,mBAGNk+L,EAASj9M,UAAUilN,YAAc,SAAUz2M,GACvC,IAAI6+C,EAAO7+C,EAAM62M,cAAc97J,MAI/B,GAHmB,UAAf/6C,EAAMF,MAAyC,SAArBxO,KAAK2hN,aAA+C,SAArB3hN,KAAK2hN,aAA+C,WAArB3hN,KAAK2hN,cAC7F3hN,KAAKoD,QAAQq/M,MAAQ/zM,EAAM62M,cAAc9C,OAEzB,IAAhBl1J,EAAK5sD,QAAiBX,KAAKq9M,SAG/B,IAAK,IAAIoH,EAAO,EAAGA,EAAOl3J,EAAK5sD,OAAQ8jN,IAAQ,CAC3C,IAAIe,EAAY,GAAG93M,MAAMpK,KAAKiqD,GAAMk3J,IACZ,SAAnBe,EAAUC,MAAoBD,EAAUh3M,KAAK5H,MAAM,aACpD5G,KAAK0lN,oBAAoBh3M,EAAO,CAAC82M,EAAUG,cAAc,GAAO,KAI5ExI,EAASj9M,UAAU0lN,iBAAmB,SAAUn5M,GAM5C,IALA,IAAIof,EAAO,GACPg6L,EAAY7lN,KAAKq+M,SAAS5xM,GAC1Bq5M,EAAW9lN,KAAK+lN,eAChBC,GAAgBH,EAAUn7M,aAAa,oBACvCo6E,EAAa,EACR9jF,EAAI,EAAGA,EAAIyL,EAAOzL,IACvB8jF,IAAgB9kF,KAAKq+M,SAASr9M,GAAG0J,aAAa,oBAElD,IAAK,IAAI4sB,EAAIwtD,EAAYxtD,EAAKwtD,EAAakhI,EAAe1uL,IACtDzL,EAAKxf,KAAKy5M,EAASxuL,IAEvB,OAAOzL,GAEXsxL,EAASj9M,UAAU2kN,YAAc,SAAU9+L,GACvC,GAAK/lB,KAAKqY,QAAV,CAGA,IAAIo2B,EAAkB1oB,EAAKzlB,OAAOqhB,cAC9BlV,EAAQzM,KAAKq+M,SAASr6M,QAAQyqC,GAC9Bo3K,EAAY7lN,KAAKq+M,SAAS5xM,GAC1Bw5M,EAAajmN,KAAKkmN,eAClBtD,EAAWqD,EAAajmN,KAAK4lN,iBAAiBn5M,GAASzM,KAAKmmN,gBAAgBnmN,KAAKs+M,UAAU7xM,IAC/F,IAAI,eAAkBm2M,GAAtB,CAGA,GAAI78L,EAAKzlB,OAAO4E,UAAUmB,SAASq1M,KAAgBuK,EAAY,CAE3D,GADArD,EAAS,GAAGK,WAAa,KACpB,eAAkB4C,GAAY,CAC/B,IAAIO,EAAgBP,EAAU35M,cAAc,IAAMwvM,GAClD,eAAc,CAAEp7M,OAAQ8lN,EAAe9gN,MAAO,SAC9C,eAAY8gN,GAEZpmN,KAAKojN,kBAELpjN,KAAKqmN,mBAEHR,EAAU3gN,UAAUmB,SAASq2M,IAC/B18M,KAAKsmN,qBAAoB,QAGvB,eAAQvgM,EAAKzlB,OAAQ,IAAMm7M,IACjCz7M,KAAKmF,OAAOy9M,GAAU,GAAO,GAAO,EAAM78L,GAE9C/lB,KAAKogN,6BAETjD,EAASj9M,UAAUqmN,gBAAkB,SAAU9B,EAAM+B,GACjD,IAAI/5M,EACJ,GAAI+5M,EACKxmN,KAAKmjN,eACN12M,EAAQzM,KAAKs+M,UAAUt6M,QAAQygN,GAC/BzkN,KAAKs+M,UAAU5xM,OAAOD,EAAO,QAHrC,CAOA,IAAIgiC,EAAkBzuC,KAAKymN,aAAahC,GACpC,eAAkBh2K,KAGtBzuC,KAAKoD,QAAQqV,MAAQ,GACrB,eAAOg2B,GACPhiC,EAAQzM,KAAKq+M,SAASr6M,QAAQyqC,GAC9BzuC,KAAKq+M,SAAS3xM,OAAOD,EAAO,GAC5BzM,KAAKs+M,UAAU5xM,OAAOD,EAAO,GACA,IAAzBzM,KAAKq+M,SAAS19M,QAAiB,eAAkBX,KAAK+/M,cACtD,eAAO//M,KAAK+/M,YACZ//M,KAAK+/M,WAAa,KAClB//M,KAAKkgN,uBAELlgN,KAAKojN,kBAED32M,GAASzM,KAAK+qC,SACZ/qC,KAAK+qC,SAInBoyK,EAASj9M,UAAUwmN,mBAAqB,SAAUjC,EAAMn+L,EAAWqgM,EAAgB/6L,GAC/E,IAAIvoB,EAAQrD,KACR+9M,EAAgB0G,EAChBmC,EAAO,IAAI,OAAK5mN,KAAK6mN,cAAcC,UAAW,QAAQ,EAAM,MAChEF,EAAKG,WAAY,EACjB,IAAIC,EAAW,IAAIC,SACnBL,EAAKM,WAAa,SAAU/5M,GACxBmZ,EAAU6gM,eAAiBP,EAAKQ,YAC3BT,EAWDtjN,EAAMgkN,sBAAsB/gM,EAAW0gM,EAAUjJ,EAAe0G,GAVhEphN,EAAM4E,QAAQ,WAAYqe,GAAW,SAAUA,GACvCA,EAAU7X,OACVtB,EAAEsB,QAAS,EAGXpL,EAAMgkN,sBAAsB/gM,EAAW0gM,EAAUjJ,EAAe0G,OAQhFmC,EAAKU,OAAS,SAAUn6M,GAEpB,OADA9J,EAAMkkN,gBAAgBp6M,EAAG4wM,EAAenyL,GACjC,IAGXg7L,EAAKY,QAAU,SAAUr6M,GAErB,OADA9J,EAAMokN,aAAat6M,EAAG4wM,EAAenyL,GAC9B,IAEXg7L,EAAKc,KAAKV,IAEd7J,EAASj9M,UAAUmnN,sBAAwB,SAAU/gM,EAAW0gM,EAAUjJ,EAAe0G,GAErF,IAAIz0M,EAAOhQ,KAAKoD,QAAQsH,aAAa,QACjCm7M,EAAY7lN,KAAKymN,aAAahC,GAClC,IAAK,eAAkBoB,MAAgB,eAAkBA,EAAU35M,cAAc,IAAMsvM,MAClF,eAAkBqK,EAAU35M,cAAc,IAAMqvM,KAAgB,CACjE,IAAI6K,EAAgBP,EAAU35M,cAAc,IAAMsvM,GAC9CqK,EAAU35M,cAAc,IAAMsvM,GAC9BqK,EAAU35M,cAAc,IAAMqvM,GAClC,eAAc,CAAEj7M,OAAQ8lN,EAAe9gN,MAAO,SAC9C,eAAY8gN,GAEZ9/L,EAAUqhM,cAAgB,eAAkB5J,EAAc8E,UAAsC,KAA1B9E,EAAc8E,QACpFmE,EAASY,OAAO53M,EAAM+tM,EAAc8E,QAAS9E,EAAc/tM,MAG3Dg3M,EAASY,OAAO53M,EAAM+tM,EAAc/tM,MAExChQ,KAAK6nN,eAAeb,EAAU1gM,EAAUwhM,iBAG5C3K,EAASj9M,UAAU2nN,eAAiB,SAAUb,EAAUe,GACpD,GAAIA,EAAWpnN,OAAS,GAAKonN,EAAW,GASpC,IARA,IAAIp3L,EAAU,SAAU3vB,GACpB,IAAI6qB,EAAOk8L,EAAW/mN,GAElByX,EAAQhZ,OAAO2V,KAAKyW,GAAMhlB,KAAI,SAAUsG,GACxC,OAAO0e,EAAK,GAAK1e,MAErB65M,EAASY,OAAOnoN,OAAO2V,KAAKyW,GAAM,GAAIpT,IAEjCzX,EAAI,EAAGA,EAAI+mN,EAAWpnN,OAAQK,IACnC2vB,EAAQ3vB,IAKpBm8M,EAASj9M,UAAU8nN,mBAAqB,SAAUC,EAASd,GACvD,GAAIA,EAAexmN,OAAS,GAAKwmN,EAAe,GAS5C,IARA,IAAI9mI,EAAU,SAAUr/E,GACpB,IAAI6qB,EAAOs7L,EAAenmN,GAEtByX,EAAQhZ,OAAO2V,KAAKyW,GAAMhlB,KAAI,SAAUsG,GACxC,OAAO0e,EAAK,GAAK1e,MAErB86M,EAAQC,iBAAiBzoN,OAAO2V,KAAKyW,GAAM,GAAIpT,IAE1CzX,EAAI,EAAGA,EAAImmN,EAAexmN,OAAQK,IACvCq/E,EAAQr/E,IAIpBm8M,EAASj9M,UAAUqnN,gBAAkB,SAAUp6M,EAAGs1M,EAAO+D,GACrD,IAAI2B,EAAWh7M,GAAKA,EAAEqI,cAAgBxV,KAAKooN,YAAYj7M,GAAK,KACxDygF,EAASzgF,EAAE7M,OACf,GAA0B,IAAtBstF,EAAOy6H,YAAoBz6H,EAAOA,QAAU,KAAOA,EAAOA,QAAU,IAAK,CACzE,IAAI7nE,EAAO,CACP5Y,EAAGA,EAAGg7M,SAAUA,EAAUvlF,UAAW,SAAU6hF,KAAMzkN,KAAKsoN,aAAa7F,EAAOziN,KAAKw/M,eAAe,yBAA0B,MAEhIx/M,KAAKiI,QAAQ,UAAW8d,GACxB/lB,KAAKumN,gBAAgB9D,EAAO+D,GAC5B,IAAI/5M,EAAQzM,KAAKs9M,kBAAkBt5M,QAAQy+M,GAC3CziN,KAAKs9M,kBAAkB5wM,OAAOD,EAAO,GACrCzM,KAAKiI,QAAQ,SAAU,CAAEw6M,MAAOziN,KAAKs9M,yBAGrCt9M,KAAKynN,aAAat6M,EAAGs1M,EAAO+D,IAGpCrJ,EAASj9M,UAAUunN,aAAe,SAAUt6M,EAAGs1M,EAAO+D,GAClD,IAAI2B,EAAWh7M,GAAKA,EAAEqI,cAAgBxV,KAAKooN,YAAYj7M,GAAK,KACxD4Y,EAAO,CACP5Y,EAAGA,EAAGg7M,SAAUA,EAAUvlF,UAAW,SAAU6hF,KAAMzkN,KAAKsoN,aAAa7F,EAAOziN,KAAKw/M,eAAe,wBAAyB,MAE/H,IAAKgH,EAAgB,CACjB,IAAI/5M,EAAQzM,KAAKs+M,UAAUt6M,QAAQy+M,GAC/B5Q,EAAc7xM,KAAKq+M,SAAS5xM,GAChC,GAAIolM,EAAa,CACbA,EAAY3sM,UAAUC,OAAO82M,GAC7BpK,EAAY3sM,UAAU4G,IAAIowM,GAC1B,IAAIqM,EAAgB1W,EAAY3lM,cAAc,IAAM8uM,GAChDuN,IACAA,EAAcrjN,UAAUC,OAAO82M,GAC/BsM,EAAcrjN,UAAU4G,IAAIowM,IAGpCl8M,KAAKogN,0BAETpgN,KAAKiI,QAAQ,UAAW8d,GACxB,IAAI8/L,EAAY7lN,KAAKymN,aAAahE,GAElC,IAAK,eAAkBoD,KAAe,eAAkBA,EAAU35M,cAAc,IAAMsvM,IAAe,CACjG,IAAI4K,EAAgBP,EAAU35M,cAAc,IAAMsvM,GAClD,eAAY4K,GACZ,eAAOP,EAAU35M,cAAc,sBAIvCixM,EAASj9M,UAAUsoN,mBAAqB,SAAU95M,GAC9C1O,KAAKyoN,aAAe,GACpB,IAAIh/J,EAAQzpD,KAAKq9M,SACb3uM,EAAM42M,aAAa77J,MAAQ,CAAC/6C,EAAM42M,aAAa77J,MAAM,IACrDi/J,EAAuB1oN,KAAK2oN,qBAAqBl/J,GACrD,GAAKi/J,EAkBL,IAfA,IAAIh3F,EAAU,SAAU1wH,GACpB,IAAIusD,EAAO9D,EAAMzoD,GAAG4nN,mBACpB,GAAIr7J,EAAKs7J,OAAQ,CACb,IAAIC,EAAU,GACd,EAAOrE,MAAK,SAAUsE,GAClB,IAAItiJ,EAAOlZ,EAAKy7J,SAChBF,EAAQz8M,KAAK,CAAE,KAAQo6D,EAAM,KAAQsiJ,OAEzCl4L,EAAO60L,oBAAoBh3M,EAAOo6M,GAAS,QAEtCv7J,EAAK07J,aACVp4L,EAAOq4L,iBAAiB37J,EAAM7+C,IAGlCmiB,EAAS7wB,KACJgB,EAAI,EAAGA,EAAIyoD,EAAM9oD,OAAQK,IAC9B0wH,EAAQ1wH,IAIhBm8M,EAASj9M,UAAUyoN,qBAAuB,SAAUl/J,GAChD,IAAK,IAAIzoD,EAAI,EAAGyoD,GAASzoD,EAAIyoD,EAAM9oD,OAAQK,IAAK,CAC5C,IAAIusD,EAAO9D,EAAMzoD,GAAG4nN,mBACpB,GAAIr7J,EAAK07J,YACL,OAAO,EAGf,OAAO,GAIX9L,EAASj9M,UAAUgpN,iBAAmB,SAAU37J,EAAM7+C,GAElD,GAAI6+C,EAAKs7J,OACL7oN,KAAKyoN,aAAap8M,KAAKkhD,QAEtB,GAAIA,EAAK07J,YAAa,CACvB,IAAIE,EAAkB57J,EAAK67J,eAC3BppN,KAAKqpN,sBAAsBF,EAAiBz6M,KAIpDyuM,EAASj9M,UAAUmpN,sBAAwB,SAAUF,EAAiBz6M,GAClE,IAAIrL,EAAQrD,KACZmpN,EAAgBG,aAAY,SAAUC,GAClC,IAAK,IAAIvoN,EAAI,EAAGA,EAAIuoN,EAAQ5oN,OAAQK,IAChCqC,EAAM6lN,iBAAiBK,EAAQvoN,GAAI0N,GAEvCrL,EAAMmmN,iBAAiB96M,GACnB66M,EAAQ5oN,QACR0C,EAAMgmN,sBAAsBF,OAIxChM,EAASj9M,UAAUspN,iBAAmB,SAAU96M,GAgB5C,IAfA,IAAIrL,EAAQrD,KACRyiN,EAAQ,GACR9tF,EAAU,SAAU3zH,GACpB0pH,EAAO+9F,aAAaznN,GAAGyjN,MAAK,SAAUsE,GAClC,GAAI1lN,EAAMolN,aAAa9nN,OAAQ,CAC3B,IAAI8lE,EAAOpjE,EAAMolN,aAAaznN,GAAGgoN,SACjCvG,EAAMp2M,KAAK,CAAE,KAAQo6D,EAAM,KAAQsiJ,IAC/B/nN,IAAMqC,EAAMolN,aAAa9nN,OAAS,IAClC0C,EAAMolN,aAAe,GACrBplN,EAAMqiN,oBAAoBh3M,EAAO+zM,GAAO,SAKpD/3F,EAAS1qH,KACJgB,EAAI,EAAGA,EAAIhB,KAAKyoN,aAAa9nN,OAAQK,IAC1C2zH,EAAQ3zH,IAGhBm8M,EAASj9M,UAAUmkN,cAAgB,SAAUt+L,GACzC,GAAK/lB,KAAKqY,QAAV,CAGA,IAAIoxM,EAEJ,GAAkB,SAAd1jM,EAAKvX,KACL,GAAIxO,KAAK4hN,gBACL5hN,KAAKwoN,mBAAmBziM,OAEvB,CACD,IAAI08L,EAAQziN,KAAK0pN,cAAgB3jM,EAAKu/L,aAAa7C,MAC1B,SAArBziN,KAAK2hN,aAA+C,SAArB3hN,KAAK2hN,aAA+C,WAArB3hN,KAAK2hN,cACnE3hN,KAAKoD,QAAQq/M,MAAQA,GAErBA,EAAM9hN,OAAS,IACf8oN,EAAczpN,KAAKq9M,SAAWr9M,KAAK2pN,aAAalH,GAAS,CAACA,EAAM,IAChEziN,KAAK0lN,oBAAoB3/L,EAAM0jM,SAKvCA,EAAc,GAAG/7M,MAAMpK,KAAKyiB,EAAKzlB,OAAOmiN,OACxCziN,KAAK0lN,oBAAoB3/L,EAAM0jM,IAE/BzpN,KAAKoX,WAAapX,KAAKmI,UACvB4d,EAAK9G,oBAIbk+L,EAASj9M,UAAU0pN,UAAY,SAAUnF,GACrC,OAAO,IAAIpzL,SAAQ,SAAUlB,EAAS+B,GAClC,IAAI23L,EAAa,IAAIC,WACrBD,EAAWE,cAActF,GACzBoF,EAAWG,OAAS,WAAc,OAAO75L,EAAQ05L,EAAW74L,SAC5D64L,EAAWI,QAAU,SAAU1pH,GAAS,OAAOruE,EAAOquE,QAK9D48G,EAASj9M,UAAUwlN,oBAAsB,SAAU3/L,EAAM0jM,EAAaS,EAAW/iH,GAC7E,IAAI9jG,EAAQrD,KACZA,KAAKu9M,aAAe,GACpB,IAAIj3L,EAAY,CACZ5X,MAAOqX,EACPtX,QAAQ,EACR6vM,UAAW,GACX6L,YAAY,EACZC,kBAAmB,GACnBC,iBAAkB,GAClB/uC,YAAY,EACZ6rC,eAAgB,KAChBW,eAAgB,MAGpB,GAAI2B,EAAY9oN,OAAS,EAGrB,OAFA2lB,EAAUg1J,YAAa,OACvBt7K,KAAKiI,QAAQ,WAAYqe,GAG7BtmB,KAAKuxH,MAAO,EACZ,IAAIqxF,EAAW,GACV5iN,KAAKq9M,WACNr9M,KAAK0iN,WAAU,GACf1iN,KAAK89M,oBAAsB,EAC3B2L,EAAc,CAACA,EAAY,KAE/B,IAAK,IAAIzoN,EAAI,EAAGA,EAAIyoN,EAAY9oN,OAAQK,IAAK,CACzC,IAAIyjN,EAAOyF,EAAYT,EAAYzoN,GAAGyjN,KAAOgF,EAAYzoN,GACzDhB,KAAKsqN,yBAAyBvkM,EAAM0jM,EAAahF,EAAMzjN,EAAG4hN,EAAUsH,EAAW/iH,GAMnF,GAJA7gF,EAAUg4L,UAAYsE,EAClB5iN,KAAKy+M,kBAAkBz6M,QAAQ,MAAQ,IACvChE,KAAKy9M,UAAW,GAEhBz9M,KAAKgL,oBACL,IAAShK,EAAI,EAAGA,EAAI4hN,EAASjiN,OAAQK,IAAK,CAKtC,IAJA,IAAIupN,EAAe,OAAmBC,iBAClCC,EAAmB,OAAmBC,eAAeH,EAAc3H,EAASjxM,SAAS3Q,EAAE4Q,aAAa5B,MACpG26M,EAAkB/H,EAASjxM,SAAS3Q,EAAE4Q,aAAa5B,KACnD46M,GAAS,EACJngC,EAAM,EAAGA,EAAMkgC,EAAgBhqN,OAAQ8pL,IAC5C,GAAIkgC,EAAgBvmF,WAAWqmD,GAAO,IAAK,CACvCmgC,GAAS,EACT,MAGR,IAAIC,EAAe,wCACfC,EAAgBD,EAAaptM,KAAKktM,GACtC,GAAKF,IAAqB7H,EAASjxM,SAAS3Q,EAAE4Q,aAAa5B,QAAW46M,GAAWE,GAAgB,CAC7F,IAAIC,EAAkBtB,EAAY93M,SAAS3Q,EAAE4Q,aAAa5B,KAAK6K,QAAQ,wBAAwB,SAAU7Z,GACrG,MAAO,KAAOA,EAAEojI,WAAW,GAAK,OAEpCw+E,EAASjxM,SAAS3Q,EAAE4Q,aAAa5B,KAAO+6M,EACxCnI,EAASjxM,SAAS3Q,EAAE4Q,aAAag8E,OAAS5tF,KAAKw/M,eAAe,mBAC9DoD,EAASjxM,SAAS3Q,EAAE4Q,aAAaqxM,WAAa,KAIrDjjN,KAAKy9M,WACNmF,EAAW5iN,KAAKgrN,eAAepI,IAEnC5iN,KAAKiI,QAAQ,WAAYqe,GAAW,SAAUA,GAC1CjjB,EAAM4nN,sBAAsB3kM,EAAWs8L,OAG/CzF,EAASj9M,UAAUoqN,yBAA2B,SAAUvkM,EAExD0jM,EAAahF,EAAMzjN,EAAG4hN,EAAUsH,EAAW/iH,GACvC,IAAI+jH,EAAWhB,EAAYT,EAAYzoN,GAAGylE,KAAK89D,UAAU,EAAGklF,EAAYzoN,GAAGylE,KAAK9lE,QAAUwmG,EACtF,eAAYs9G,EAAKz0M,KAAKu0H,UAAU,EAAGkgF,EAAKz0M,KAAKs0H,YAAY,OAAS,IAAMtkI,KAAKmrN,YAAY1G,EAAKz0M,MAC9FhQ,KAAK4hN,gBAAkB6H,EAAYzoN,GAAGoqN,mBAAqB3G,EAAKz0M,KAChEq7M,EAAc,CACdr7M,KAAMk7M,EACNrI,QAAS4B,EACTpmI,KAAMomI,EAAKpmI,KACXuP,OAAQ5tF,KAAKw/M,eAAe,wBAC5BhxM,KAAMxO,KAAKmrN,YAAY1G,EAAKz0M,MAC5B8yM,mBAAoB9iN,KAAKsrN,kBAAkB7G,EAAKpmI,MAChD4kI,WAAY,IACZ33M,GAAI,eAAYm5M,EAAKz0M,KAAKu0H,UAAU,EAAGkgF,EAAKz0M,KAAKs0H,YAAY,OAAS,IAAMtkI,KAAKmrN,YAAY1G,EAAKz0M,OAGlGm3F,IACAkkH,EAAYE,WAAa,SAE7BF,EAAYz9H,OAAoD,KAA3Cy9H,EAAYvI,mBAAmBC,QAAiB/iN,KAAKw/M,eAAe,sBAC1C,KAA3C6L,EAAYvI,mBAAmBE,QAAiBhjN,KAAKw/M,eAAe,sBAAwB6L,EAAYz9H,OAC7D,KAA3Cy9H,EAAYvI,mBAAmBC,SAA6D,KAA3CsI,EAAYvI,mBAAmBE,UAChFqI,EAAYpI,WAAa,KAE7BL,EAASv2M,KAAKg/M,IAElBlO,EAASj9M,UAAU+qN,sBAAwB,SAAU3kM,EAAWs8L,GAC5D,IAAKt8L,EAAU7X,OAAQ,CAInB,GAFAzO,KAAK+9M,cAAgB/9M,KAAK+9M,cAAc9uK,OAAO2zK,GAC/C5iN,KAAK49M,YAAc59M,KAAK69M,0BAA4B,KAAO,IACvD79M,KAAKmjN,aAAc,CACnB,GAAI78L,EAAU6jM,YAAc7jM,EAAU8jM,kBAAkBzpN,OAAS,EAAG,CAChE,IAAK,IAAI22B,EAAI,EAAGA,EAAIhR,EAAU8jM,kBAAkBzpN,OAAQ22B,IACpD,IAAK,IAAIG,EAAI,EAAGA,EAAImrL,EAASjiN,OAAQ82B,IAC7BnR,EAAU8jM,kBAAkB9yL,GAAGhsB,KAAOs3M,EAASnrL,GAAGnsB,KAClDgb,EAAU8jM,kBAAkB9yL,GAAGurL,QAAUD,EAASnrL,GAAGorL,SAIjE,IAAI2I,EAAYxrN,KAAKy9M,SAAWn3L,EAAU8jM,kBACtCpqN,KAAKgrN,eAAe1kM,EAAU8jM,mBAClCpqN,KAAKyrN,qBAAqBD,GAC1BxrN,KAAKs+M,UAAYt+M,KAAKs+M,UAAUrvK,OAAOu8K,GAClCxrN,KAAKw9M,SAAUx9M,KAAKkjN,eACrBljN,KAAKgkN,gBAAgBwH,OAGxB,CAED,GADAxrN,KAAKggN,uBAAuB4C,GACxB5iN,KAAK6/M,YAAc7/M,KAAKikN,gBAAkBjkN,KAAKojN,kBAAoBpjN,KAAKs+M,UAAU39M,OAAS,GAA8D,MAAzDX,KAAKs+M,UAAUt+M,KAAKs+M,UAAU39M,OAAS,GAAGsiN,YAA+E,MAAzDjjN,KAAKs+M,UAAUt+M,KAAKs+M,UAAU39M,OAAS,GAAGsiN,WAE1M,YADAjjN,KAAKs+M,UAAYt+M,KAAKs+M,UAAUrvK,OAAO2zK,IAG3C5iN,KAAKs+M,UAAYt+M,KAAKs+M,UAAUrvK,OAAO2zK,GAClC5iN,KAAKw9M,SAAUx9M,KAAKkjN,eACrBljN,KAAKgkN,gBAAgBpB,GAGxB,eAAkBt8L,EAAU+jM,mBAAoD,KAA/B/jM,EAAU+jM,mBAC5DrqN,KAAKqqN,iBAAmB/jM,EAAU+jM,uBAItCrqN,KAAKs+M,UAAYt+M,KAAKs+M,UAAUrvK,OAAO2zK,GACnC5iN,KAAK6/M,YACL7/M,KAAK8+M,OAAO9+M,KAAKs+M,WAAW,GAGpC,IAAK,IAAI/wJ,EAAO,EAAGA,EAAOvtD,KAAKs+M,UAAU39M,OAAQ4sD,IACL,MAApCvtD,KAAKs+M,UAAU/wJ,GAAM01J,YACrBjjN,KAAKsmN,qBAAoB,GAGjCtmN,KAAKm+M,wBAAyB,IAGtChB,EAASj9M,UAAUgjN,YAAc,WAC7B,IAAIwI,GAAkB,EAItB,OAHI1rN,KAAKw9M,SAAY,eAAkBx9M,KAAK6mN,cAAc8E,UAA2C,KAA/B3rN,KAAK6mN,cAAc8E,UACrFD,GAAkB,GAEfA,GAEXvO,EAASj9M,UAAUgmN,aAAe,WAC9B,IAAIA,GAAe,EAKnB,OAJIlmN,KAAKw9M,SAAY,eAAkBx9M,KAAK6mN,cAAc8E,UAA2C,KAA/B3rN,KAAK6mN,cAAc8E,UACjF,eAAkB3rN,KAAK6mN,cAAcC,YAA+C,KAAjC9mN,KAAK6mN,cAAcC,YAC1EZ,GAAe,GAEZA,GAEX/I,EAASj9M,UAAUwiN,UAAY,SAAUkJ,GAChC,eAAkB5rN,KAAK+/M,cACxB,eAAO//M,KAAK+/M,YACZ//M,KAAK+/M,WAAa,MAEG,SAArB//M,KAAK2hN,aAA2BiK,IAChC5rN,KAAKoD,QAAQqV,MAAQ,IAEzBzY,KAAKq+M,SAAW,GAChBr+M,KAAKs+M,UAAY,GACjBt+M,KAAKkgN,uBAET/C,EAASj9M,UAAUurN,qBAAuB,SAAUnN,GAChD,IAAIuN,EAAoB7rN,KAAKuE,cAAc,MAAO,CAAE+G,GAAI,iBACpDwgN,GAAS,EAEb,GAAI9rN,KAAK+/M,WAAY,CACjB,IAAK,IAAI/+M,EAAI,EAAGA,EAAIhB,KAAK+/M,WAAWr9L,iBAAiB,MAAM/hB,OAAQK,IAAK,CACpE,IAAI6kN,EAAY7lN,KAAK+/M,WAAWr9L,iBAAiB,MAAM1hB,GACvD6qN,EAAkBnnN,YAAYmhN,EAAUn+L,WAAU,IAEtD1nB,KAAKkgN,sBACL,IAAI6L,EAAU,GAAGr+M,MAAMpK,KAAKuoN,EAAkB/2K,YAC9C90C,KAAKgsN,iBACL,IAAK,IAAIv/M,EAAQ,EAAGA,EAAQ6xM,EAAU39M,OAAQ8L,IAAS,CACnD,IAAK,IAAI6qB,EAAI,EAAGA,EAAIt3B,KAAKs+M,UAAU39M,OAAQ22B,IACnCt3B,KAAKs+M,UAAUhnL,GAAGtnB,OAASsuM,EAAU7xM,GAAOuD,OAC5ChQ,KAAK+/M,WAAWr7M,YAAYqnN,EAAQz0L,IACpC,OAAaxrB,IAAIigN,EAAQz0L,GAAGprB,cAAc,YAAa,QAASlM,KAAK6kN,YAAa7kN,MAClFA,KAAKq+M,SAAShyM,KAAK0/M,EAAQz0L,IAC3Bw0L,EAAQr/M,GAGZq/M,IAAUr/M,GACVzM,KAAKggN,uBAAuB,CAAC1B,EAAU7xM,WAK/CzM,KAAKggN,uBAAuB1B,IAGpCnB,EAASj9M,UAAU+rN,QAAU,SAAU9zH,GACnC,OAASA,GAAO,QAAQ16E,KAAK06E,IAEjCglH,EAASj9M,UAAU8qN,eAAiB,SAAUvI,GAC1C,IAAIyJ,EAAYzJ,EAChB,IAAKziN,KAAKisN,QAAQjsN,KAAKy+M,mBAAoB,CAGvC,IAFA,IAAIA,EAAoB,GACpB0N,EAAansN,KAAKy+M,kBAAkBx6M,MAAM,KACrC4J,EAAK,EAAGu+M,EAAeD,EAAYt+M,EAAKu+M,EAAazrN,OAAQkN,IAAM,CACxE,IAAIw+M,EAAYD,EAAav+M,GAC7B4wM,EAAkBpyM,KAAKggN,EAAU9/M,OAAO+/M,qBAE5C,IAAK,IAAItrN,EAAI,EAAGA,EAAIyhN,EAAM9hN,OAAQK,KACgD,IAA1Ey9M,EAAkBz6M,SAAS,IAAMy+M,EAAMzhN,GAAGwN,MAAM89M,uBAChD7J,EAAMzhN,GAAG4sF,OAAS5tF,KAAKw/M,eAAe,mBACtCiD,EAAMzhN,GAAGiiN,WAAa,KAIlC,OAAOiJ,GAEX/O,EAASj9M,UAAUorN,kBAAoB,SAAUiB,GAC7C,IAAIC,EAAe,GACfC,EAAe,GACfF,EAAWvsN,KAAK0sN,YAChBF,EAAexsN,KAAKw/M,eAAe,sBAE9B+M,EAAWvsN,KAAK2sN,YACrBF,EAAezsN,KAAKw/M,eAAe,uBAGnCgN,EAAe,GACfC,EAAe,IAEnB,IAAIt/H,EAAe,CAAE41H,QAASyJ,EAAcxJ,QAASyJ,GACrD,OAAOt/H,GAEXgwH,EAASj9M,UAAU0sN,cAAgB,SAAUhK,GAEzC,IADA,IAAIiK,GAAY,EACP7rN,EAAI,EAAGA,EAAIhB,KAAKyiN,MAAM9hN,OAAQK,IAC/BhB,KAAKyiN,MAAMzhN,GAAGgP,OAAS4yM,EAAS5yM,KAAKtC,MAAM,EAAGk1M,EAAS5yM,KAAKs0H,YAAY,OAAStkI,KAAKyiN,MAAMzhN,GAAGwN,OAASo0M,EAASp0M,OACjHq+M,GAAY,GAGpB,OAAOA,GAEX1P,EAASj9M,UAAU4sN,qBAAuB,SAAUlK,GAChD5iN,KAAKgsN,iBACL,IAAK,IAAIn+M,EAAK,EAAGk/M,EAAanK,EAAU/0M,EAAKk/M,EAAWpsN,OAAQkN,IAAM,CAClE,IAAIm/M,EAAWD,EAAWl/M,GACtBo/M,EAAcjtN,KAAKuE,cAAc,KAAM,CAAEC,UAAWu2M,EAAM/rM,MAAO,CAAE,iBAAkBg+M,EAASh9M,QAClGhQ,KAAKktN,iBAAmBltN,KAAKmtN,iBAAiBntN,KAAK42C,UACnD,IAAIw2K,EAAiBptN,KAAKktN,iBAAiBF,EAAUhtN,KAAM,WAAYA,KAAKoD,QAAQkI,GAAK,WAAYtL,KAAKs4D,iBAAkB,KAAM20J,GAClI,GAAIG,EAAgB,CAChB,IAAIC,EAAe,GAAG3/M,MAAMpK,KAAK8pN,GACjC,eAAOC,EAAcJ,GAEzB,IAAIxgN,EAAQm2M,EAAS5+M,QAAQgpN,GACzB1mM,EAAY,CACZljB,QAAS6pN,EACTnI,SAAUkI,EACVvgN,MAAOA,EACPogN,UAAW7sN,KAAK4sN,cAAcI,IAE9BM,EAAa,CACblqN,QAAS6pN,EACTnI,SAAUkI,EACVvgN,MAAOA,EACPogN,UAAW7sN,KAAK4sN,cAAcI,IAElChtN,KAAKiI,QAAQ,YAAaqe,GAC1BtmB,KAAKiI,QAAQ,oBAAqBqlN,GAClCttN,KAAK+/M,WAAWr7M,YAAYuoN,GAC5BjtN,KAAKq+M,SAAShyM,KAAK4gN,GAEvBjtN,KAAK0L,wBAETyxM,EAASj9M,UAAU8rN,eAAiB,WAC5B,eAAkBhsN,KAAK+/M,cACvB//M,KAAK+/M,WAAa//M,KAAKuE,cAAc,KAAM,CAAEC,UAAWs2M,IACxD96M,KAAKy/M,cAAc/6M,YAAY1E,KAAK+/M,cAI5C5C,EAASj9M,UAAUqtN,aAAe,SAAU3K,EAAUH,GAClD,IAAIpE,EAAWr+M,KAAKuE,cAAc,KAAM,CAAEC,UAAWu2M,IACrDsD,EAAS1zM,aAAa,mBAAoBi4M,EAASjiN,OAAS,IAG5D,IAFA,IACI6sN,EADAC,EAAgBztN,KAAKuE,cAAc,OAAQ,CAAEC,UAAW23M,IAEnDtuM,EAAK,EAAG6/M,EAAa9K,EAAU/0M,EAAK6/M,EAAW/sN,OAAQkN,IAAM,CAClE,IAAIm/M,EAAWU,EAAW7/M,GACtB8/M,EAAc3tN,KAAKuE,cAAc,OAAQ,CAAEC,UAAW42M,IAC1DuS,EAAY7iN,UAAY9K,KAAK4tN,gBAAgBZ,EAASh9M,MACtD,IAAI69M,EAAc7tN,KAAKuE,cAAc,OAAQ,CAAEC,UAAW62M,IACtDyS,EAAW9tN,KAAKmrN,YAAY6B,EAASh9M,MAKzC,GAJA69M,EAAY/iN,UAAY,IAAMgjN,EACzBA,GACDD,EAAY3oN,UAAU4G,IAAI,YAEzB9L,KAAKyF,UAIL,CACD,IAAIsoN,EAAe/tN,KAAKuE,cAAc,OAAQ,CAAEC,UAAW63M,IAC3D0R,EAAarpN,YAAYmpN,GACzBE,EAAarpN,YAAYipN,GACzBF,EAAc/oN,YAAYqpN,QAP1BN,EAAc/oN,YAAYipN,GAC1BF,EAAc/oN,YAAYmpN,GAQ9B7tN,KAAKguN,aAAaL,GAClBH,EAAgBxtN,KAAKiuN,qBAAqBjB,EAAU3O,GAExDA,EAAS35M,YAAY+oN,GACrBztN,KAAKkuN,kBAAkBtL,EAAUvE,GACjC,IAAI5xM,EAAQzM,KAAK+/M,WAAWr9L,iBAAiB,MAAM/hB,OAC/CwtN,EAAUnuN,KAAKuE,cAAc,QAcjC,GAbI85M,EAASn5M,UAAUmB,SAASy2M,IAC5BqR,EAAQjpN,UAAU4G,IAAIkvM,GACtBmT,EAAQjpN,UAAU4G,IAAIgxM,GACtBqR,EAAQ1lL,UAAYm6K,EAASjiN,OAAS,EAAIX,KAAKw/M,eAAe,wBAA0BgO,IAGxFW,EAAQjpN,UAAU4G,IAAI82M,EAASjiN,OAAS,EAAIo8M,EAAczB,GAC1D6S,EAAQ1lL,UAAYm6K,EAASjiN,OAAS,EAAIX,KAAKw/M,eAAe,cAAgB,KAAOoD,EAASjiN,OAAS,MACjGX,KAAKw/M,eAAe,QAAU,KAChCx/M,KAAKouN,YAAYpuN,KAAKquN,YAAYzL,IAAa5iN,KAAKouN,YAAYxL,EAAS,GAAGvkI,MAChFr+E,KAAKsuN,gBAAgB1L,IAEzB6K,EAAc/oN,YAAYypN,GACtB,eAAkB9P,EAASnyM,cAAc,aAAc,CACvD,IAAIqiN,EAAcvuN,KAAKuE,cAAc,OAAQ,CAAEC,UAAW,UAAWwK,MAAO,CAAE,SAAYhP,KAAK49M,eAEtE,SAArB59M,KAAK2hN,aACL4M,EAAYrpN,UAAU4G,IAAI,UAE9ByiN,EAAY5jN,aAAa,QAAS3K,KAAKw/M,eAAe,WACtDnB,EAAS35M,YAAY+oN,GACrBpP,EAAS35M,YAAY6pN,GACrB,OAAaziN,IAAIyiN,EAAa,QAASvuN,KAAK6kN,YAAa7kN,MACzDuuN,EAAYrpN,UAAU4G,IAAIyvM,GAE9B,IAAIj1L,EAAY,CACZljB,QAASi7M,EACTyG,SAAU9kN,KAAKwuN,cAAc5L,EAAUvE,GACvC5xM,MAAOA,EACPogN,UAAW7sN,KAAK4sN,cAAc5sN,KAAKwuN,cAAc5L,EAAUvE,KAE3DiP,EAAa,CACblqN,QAASi7M,EACTyG,SAAU9kN,KAAKwuN,cAAc5L,EAAUvE,GACvC5xM,MAAOA,EACPogN,UAAW7sN,KAAK4sN,cAAc5sN,KAAKwuN,cAAc5L,EAAUvE,KAE/Dr+M,KAAKiI,QAAQ,YAAaqe,GAC1BtmB,KAAKiI,QAAQ,oBAAqBqlN,GAClCttN,KAAK+/M,WAAWr7M,YAAY25M,GAC5Br+M,KAAKq+M,SAAShyM,KAAKgyM,IAEvBlB,EAASj9M,UAAU+tN,qBAAuB,SAAUjB,EAAU3O,GAC1D,IAAImP,EAAgBR,EAASp/H,OACzBk1H,EAAqB9iN,KAAKsrN,kBAAkB0B,EAAS3uI,MACtB,KAA/BykI,EAAmBC,SAAiD,KAA/BD,EAAmBE,UACxDhjN,KAAKyuN,gBAAgBpQ,GACrBmP,EAA+C,KAA/B1K,EAAmBC,QAAiB/iN,KAAKw/M,eAAe,sBACrC,KAA/BsD,EAAmBE,QAAiBhjN,KAAKw/M,eAAe,sBAAwBgO,GAExF,IAAIkB,EAAwB1uN,KAAKgrN,eAAehrN,KAAKmmN,gBAAgB6G,IAAW,GAAGp/H,OAKnF,OAJI8gI,IAA0B1uN,KAAKw/M,eAAe,qBAC9Cx/M,KAAKyuN,gBAAgBpQ,GACrBmP,EAAgBkB,GAEblB,GAEXrQ,EAASj9M,UAAUuuN,gBAAkB,SAAUpQ,GAC3CA,EAASn5M,UAAU4G,IAAIgxM,IAE3BK,EAASj9M,UAAUouN,gBAAkB,SAAU1L,GAC3C,GAAyB,WAArB5iN,KAAK2hN,YAA0B,CAC/B,IAAI3pM,EAAehY,KAAKoD,QAAQskB,WAAU,GAC1C1P,EAAa9S,UAAU4G,IAAI+wM,GAC3B,IAAK,IAAIhvM,EAAK,EAAG8gN,EAAa/L,EAAU/0M,EAAK8gN,EAAWhuN,OAAQkN,IAAM,CAClE,IAAIm/M,EAAW2B,EAAW9gN,GAC1Bm/M,EAAS/5K,MAAQj7B,EAErBA,EAAarN,aAAa,KAAM,eAAY,mBAC5CqN,EAAarN,aAAa,OAAQ3K,KAAKg+M,cACvCh+M,KAAKy/M,cAAcvzM,cAAc,IAAMyuM,GAAej2M,YAAYsT,GACzC,SAArBhY,KAAK2hN,aAA+C,SAArB3hN,KAAK2hN,cACpC3hN,KAAKoD,QAAQqV,MAAQ,MAIjC0kM,EAASj9M,UAAUmuN,YAAc,SAAUzL,GAEvC,IADA,IAAI2J,EAAW,EACN1+M,EAAK,EAAG+gN,EAAahM,EAAU/0M,EAAK+gN,EAAWjuN,OAAQkN,IAAM,CAClE,IAAI42M,EAAOmK,EAAW/gN,GACtB0+M,GAAY9H,EAAKpmI,KAErB,OAAOkuI,GAEXpP,EAASj9M,UAAUsuN,cAAgB,SAAU5L,EAAUvE,GAanD,IAZA,IAAIrtL,EAAS,CACThhB,KAAM,GACN6yM,QAAS,GACTxkI,KAAM,EACNuP,OAAQ,GACRp/E,KAAM,GACNs0M,mBAAoB,CAAEC,QAAS,GAAIC,QAAS,IAC5CC,WAAY,IACZ12I,KAAM8xI,GAENwQ,EAAY,GACZrgN,EAAO,GACFX,EAAK,EAAGihN,EAAalM,EAAU/0M,EAAKihN,EAAWnuN,OAAQkN,IAAM,CAClE,IAAIm/M,EAAW8B,EAAWjhN,GAC1BghN,EAAUxiN,KAAK2gN,EAASh9M,MACxBxB,EAAOw+M,EAASx+M,KAMpB,OAJAwiB,EAAOhhB,KAAO6+M,EAAUviN,KAAK,MAC7B0kB,EAAOqtD,KAAOr+E,KAAKquN,YAAYzL,GAC/B5xL,EAAOxiB,KAAOA,EACdwiB,EAAO48D,OAAS5tF,KAAK+uN,oBAAoBnM,EAAUvE,GAC5CrtL,GAEXmsL,EAASj9M,UAAU6uN,oBAAsB,SAAUnM,EAAUvE,GAGzD,IAFA,IACImP,EADAlgI,GAAU,EAELz/E,EAAK,EAAGmhN,EAAapM,EAAU/0M,EAAKmhN,EAAWruN,OAAQkN,IAAM,CAClE,IAAIm/M,EAAWgC,EAAWnhN,GAC1B2/M,EAAgBR,EAASp/H,OACzB,IAAIk1H,EAAqB9iN,KAAKsrN,kBAAkB0B,EAAS3uI,MACtB,KAA/BykI,EAAmBC,SAAiD,KAA/BD,EAAmBE,UACxD11H,GAAU,EACVkgI,EAA+C,KAA/B1K,EAAmBC,QAAiB/iN,KAAKw/M,eAAe,sBACrC,KAA/BsD,EAAmBE,QAAiBhjN,KAAKw/M,eAAe,sBAAwBgO,GAExF,IAAIkB,EAAwB1uN,KAAKgrN,eAAehrN,KAAKmmN,gBAAgB6G,IAAW,GAAGp/H,OAC/E8gI,IAA0B1uN,KAAKw/M,eAAe,qBAC9ClyH,GAAU,EACVkgI,EAAgBkB,GAYxB,OATKphI,EAKDkgI,EAAgBxtN,KAAKw/M,eAAe,cAAgB,KAAOoD,EAASjiN,OAAS,MACvEX,KAAKw/M,eAAe,QAAU,KAChCx/M,KAAKouN,YAAYpuN,KAAKquN,YAAYzL,KANtCvE,EAASn5M,UAAU4G,IAAIgxM,GACvB0Q,EAAgB5K,EAASjiN,OAAS,EAAIX,KAAKw/M,eAAe,wBAA0BgO,GAOjFA,GAGXrQ,EAASj9M,UAAU+uN,mBAAqB,SAAUrM,EAAUH,GACxDziN,KAAKgsN,iBACL,IAAI3N,EAAWr+M,KAAKuE,cAAc,KAAM,CAAEC,UAAWu2M,IACrDsD,EAAS1zM,aAAa,mBAAoBi4M,EAASjiN,OAAS,IAC5DX,KAAKkuN,kBAAkBtL,EAAUvE,GACjC,IAAIrtL,EAAShxB,KAAKwuN,cAAc5L,EAAUvE,GAC1CA,EAAS1zM,aAAa,iBAAkBqmB,EAAOhhB,MAC/ChQ,KAAKktN,iBAAmBltN,KAAKmtN,iBAAiBntN,KAAK42C,UACnD,IAAIw2K,EAAiBptN,KAAKktN,iBAAiBl8L,EAAQhxB,KAAM,WAAYA,KAAKoD,QAAQkI,GAAK,WAAYtL,KAAKs4D,iBAAkB,KAAM+lJ,GAChI,GAAI+O,EAAgB,CAChB,IAAIC,EAAe,GAAG3/M,MAAMpK,KAAK8pN,GACjC,eAAOC,EAAchP,GAEzB,IAAI5xM,EAAQzM,KAAK+/M,WAAWr9L,iBAAiB,MAAM/hB,OAC9C09M,EAASn5M,UAAUmB,SAASy2M,IAC7B98M,KAAKsuN,gBAAgB1L,GAEzB,IAAIt8L,EAAY,CACZljB,QAASi7M,EACTyG,SAAU9zL,EACVvkB,MAAOA,EACPogN,UAAW7sN,KAAK4sN,cAAc57L,IAE9Bs8L,EAAa,CACblqN,QAASi7M,EACTyG,SAAU9zL,EACVvkB,MAAOA,EACPogN,UAAW7sN,KAAK4sN,cAAc57L,IAElChxB,KAAKiI,QAAQ,YAAaqe,GAC1BtmB,KAAKiI,QAAQ,oBAAqBqlN,GAClCttN,KAAK+/M,WAAWr7M,YAAY25M,GAC5Br+M,KAAKq+M,SAAShyM,KAAKgyM,GACnBr+M,KAAK0L,wBASTyxM,EAASj9M,UAAUgvN,eAAiB,SAAUtM,GAC1C5iN,KAAKs+M,UAAYt+M,KAAKs+M,WAAat+M,KAAKs+M,UAAU39M,OAAS,EAAIX,KAAKs+M,UAAUrvK,OAAO2zK,GAAYA,EACjG5iN,KAAKggN,uBAAuB4C,IAEhCzF,EAASj9M,UAAU8/M,uBAAyB,SAAU4C,GAGlD,GADA5iN,KAAKgsN,iBACiB,KAAlBhsN,KAAK42C,UAAoB,eAAkB52C,KAAK42C,UAS/C,GAAI52C,KAAKkmN,eACVlmN,KAAKy/M,cAAcv6M,UAAU4G,IAAI8wM,GACjC58M,KAAKutN,aAAa3K,EAAU5iN,KAAKoD,QAAQq/M,YAGzC,IAAK,IAAI50M,EAAK,EAAGshN,EAAavM,EAAU/0M,EAAKshN,EAAWxuN,OAAQkN,IAAM,CAClE,IAAIm/M,EAAWmC,EAAWthN,GACtBg4M,EAAY7lN,KAAKuE,cAAc,KAAM,CACrCC,UAAWu2M,EACX/rM,MAAO,CAAE,iBAAkBg+M,EAASh9M,KAAM,mBAAoB,OAE9Do/M,EAAgBpvN,KAAKuE,cAAc,OAAQ,CAAEC,UAAW23M,IACxDkT,EAAcrvN,KAAKuE,cAAc,OAAQ,CAAEC,UAAW42M,EAAWpsM,MAAO,CAAE,MAASg+M,EAASh9M,QAChGq/M,EAAYvkN,UAAY9K,KAAK4tN,gBAAgBZ,EAASh9M,MACtD,IAAIs/M,EAAgBtvN,KAAKuE,cAAc,OAAQ,CAAEC,UAAW62M,IACxDyS,EAAW9tN,KAAKmrN,YAAY6B,EAASh9M,MAKzC,GAJAs/M,EAAcxkN,UAAY,IAAMgjN,EAC3BA,GACDwB,EAAcpqN,UAAU4G,IAAI,YAE3B9L,KAAKyF,UAIL,CACD,IAAIsoN,EAAe/tN,KAAKuE,cAAc,OAAQ,CAAEC,UAAW63M,IAC3D0R,EAAarpN,YAAY4qN,GACzBvB,EAAarpN,YAAY2qN,GACzBD,EAAc1qN,YAAYqpN,QAP1BqB,EAAc1qN,YAAY2qN,GAC1BD,EAAc1qN,YAAY4qN,GAQ9B,IAAI/C,EAAWvsN,KAAKuE,cAAc,OAAQ,CAAEC,UAAW82M,IACvDiR,EAASzhN,UAAY9K,KAAKouN,YAAYpB,EAAS3uI,MAC/C+wI,EAAc1qN,YAAY6nN,GAC1B,IAAIhE,EAAgBvoN,KAAKuE,cAAc,OAAQ,CAAEC,UAAWw2M,IAC5DoU,EAAc1qN,YAAY6jN,GAC1BA,EAAcz9M,UAAYkiN,EAASp/H,OACnCi4H,EAAUnhN,YAAY0qN,GACtB,IAAIb,EAAcvuN,KAAKuE,cAAc,OAAQ,CAAEC,UAAW,WACtDwK,MAAO,CAAE,SAAYhP,KAAK49M,eAEL,SAArB59M,KAAK2hN,aACL4M,EAAYrpN,UAAU4G,IAAI,UAE9ByiN,EAAY5jN,aAAa,QAAS3K,KAAKw/M,eAAe,WACtDqG,EAAUnhN,YAAY6pN,GACtB,OAAaziN,IAAIyiN,EAAa,QAASvuN,KAAK6kN,YAAa7kN,MAC7B,MAAxBgtN,EAAS/J,YACTsF,EAAcrjN,UAAU4G,IAAImwM,GAC5BsS,EAAYrpN,UAAU4G,IAAI0vM,GAC1B+S,EAAY5jN,aAAa,QAAS3K,KAAKw/M,eAAe,YAEzB,MAAxBwN,EAAS/J,aACdsF,EAAcrjN,UAAUC,OAAO82M,GAC/BsM,EAAcrjN,UAAU4G,IAAIswM,IAE5Bp8M,KAAK6/M,YAAsC,MAAxBmN,EAAS/J,YAAqD,KAA/BjjN,KAAK6mN,cAAc8E,UACrEpD,EAAcz9M,UAAY,IAEzByjN,EAAYrpN,UAAUmB,SAASm1M,IAChC+S,EAAYrpN,UAAU4G,IAAIyvM,GAE9B,IAAI9uM,EAAQm2M,EAAS5+M,QAAQgpN,GACzB1mM,EAAY,CACZljB,QAASyiN,EACTf,SAAUkI,EACVvgN,MAAOA,EACPogN,UAAW7sN,KAAK4sN,cAAcI,IAE9BM,EAAa,CACblqN,QAASyiN,EACTf,SAAUkI,EACVvgN,MAAOA,EACPogN,UAAW7sN,KAAK4sN,cAAcI,IAElChtN,KAAKiI,QAAQ,YAAaqe,GAC1BtmB,KAAKiI,QAAQ,oBAAqBqlN,GAClCttN,KAAK+/M,WAAWr7M,YAAYmhN,GAC5B7lN,KAAKq+M,SAAShyM,KAAKw5M,GACnB7lN,KAAKguN,aAAaqB,GAClB,IAAIE,EAAwBvvN,KAAKuxH,KAC7BvxH,KAAK4sN,cAAcI,KACnBhtN,KAAKuxH,MAAO,EACZvxH,KAAKsmN,qBAAoB,GACzBtmN,KAAKuxH,KAAOg+F,QA3FhBvvN,KAAKkmN,gBACLlmN,KAAKy/M,cAAcv6M,UAAU4G,IAAI8wM,GACjC58M,KAAKivN,mBAAmBrM,EAAU5iN,KAAKoD,QAAQq/M,QAG/CziN,KAAK8sN,qBAAqBlK,IA2FtCzF,EAASj9M,UAAUsvN,cAAgB,SAAUC,GACzC,IAAI39L,EAAO29L,EAAYrqM,YACvBqqM,EAAYC,QAAQC,KAAO79L,EAAKpkB,MAAMokB,EAAKnxB,OAAS,KAExDw8M,EAASj9M,UAAUguN,kBAAoB,SAAUtL,EAAUvE,GACvD,IAAK,IAAIxwM,EAAK,EAAG+hN,EAAahN,EAAU/0M,EAAK+hN,EAAWjvN,OAAQkN,IAAM,CAClE,IAAIm/M,EAAW4C,EAAW/hN,GAC1Bm/M,EAASzgJ,KAAO8xI,IAGxBlB,EAASj9M,UAAU8tN,aAAe,SAAUh+M,GACxC,IAAIy/M,EAAcz/M,GACO,SAArBhQ,KAAK2hN,aAA0B8N,EAAYjmN,YAAcimN,EAAY50K,aAIhE40K,EAAYjmN,YAAc,EAAIimN,EAAY50K,cAH/C76C,KAAKwvN,cAAcC,IAO3BtS,EAASj9M,UAAUirN,YAAc,SAAUn7M,GACvC,IAAIq8M,EACA5/M,EAAQuD,EAAKs0H,YAAY,KAI7B,OAHI73H,GAAS,IACT4/M,EAAYr8M,EAAKu0H,UAAU93H,EAAQ,IAEhC4/M,GAAwB,IAEnClP,EAASj9M,UAAU0tN,gBAAkB,SAAU59M,GAC3C,IAAIxB,EAAOxO,KAAKmrN,YAAYn7M,GACxByyG,EAAQzyG,EAAK/L,MAAM,IAAMuK,GAC7B,OAAci0G,EAAM,IAExB06F,EAASj9M,UAAU2vN,qBAAuB,WAOtC,GANI7vN,KAAKo9M,YAAYjnH,QACjBn2F,KAAKoD,QAAQuH,aAAa,SAAU3K,KAAKo9M,YAAYjnH,QAErDn2F,KAAKo9M,YAAYhlM,UACjBpY,KAAKoD,QAAQuH,aAAa,WAAY,YAEtC3K,KAAKo9M,YAAYC,SAAU,CAC3B,IAAIwG,EAAUj2M,SAASk2M,gBAAgB,YACvC9jN,KAAKoD,QAAQ2gN,iBAAiBF,KAGtC1G,EAASj9M,UAAU4vN,eAAiB,SAAUrN,GAG1C,IAFA,IACI5uI,EADAk8I,EAAc,GAET/uN,EAAI,EAAGA,EAAIyhN,EAAM9hN,OAAQK,IAC9B6yE,EAAK7zE,KAAKymN,aAAahE,EAAMzhN,IACxB6yE,EAAG3uE,UAAUmB,SAAS41M,IACvB8T,EAAY1jN,KAAKo2M,EAAMzhN,IAG/B,OAAO+uN,GAEX5S,EAASj9M,UAAUooN,aAAe,SAAU7F,EAAO70H,EAAQq1H,EAAY+M,GAMnE,QALuB,IAAnBA,IAA6BA,GAAiB,GACjC,KAAXpiI,GAAiB,eAAkBA,IAA6B,KAAfq1H,GAAqB,eAAkBA,KAC1FR,EAAM70H,OAASA,EACf60H,EAAMQ,WAAaA,GAEnB+M,EAAgB,CAChB,IAAIn8I,EAAK7zE,KAAKymN,aAAahE,GACtB,eAAkB5uI,IACd,eAAkBA,EAAG3nE,cAAc,IAAM8uM,KAA0B,KAAXptH,GAAiB,eAAkBA,KAC5F/Z,EAAG3nE,cAAc,IAAM8uM,GAAQ51L,YAAcwoE,GAIzD,OAAO60H,GAEXtF,EAASj9M,UAAUumN,aAAe,SAAUhE,GAExC,IADA,IAAIh2M,EACKzL,EAAI,EAAGA,EAAIhB,KAAKs+M,UAAU39M,OAAQK,IAClC,eAAkByhN,KAAa,eAAkBziN,KAAKs+M,UAAUt9M,GAAGsK,KACnE,eAAkBm3M,EAAMn3M,IACYtL,KAAKs+M,UAAUt9M,GAAGgP,OAASyyM,EAAMzyM,KADrChQ,KAAKs+M,UAAUt9M,GAAGgP,OAASyyM,EAAMzyM,MAClEhQ,KAAKs+M,UAAUt9M,GAAGsK,KAAOm3M,EAAMn3M,MAC/BmB,EAAQzL,GAGhB,OAAOhB,KAAKq+M,SAAS5xM,IAEzB0wM,EAASj9M,UAAU+vN,kBAAoB,SAAUpK,GAC7C,IAAIqK,EAAqBlwN,KAAKuE,cAAc,OAAQ,CAAEC,UAAWq3M,IAC7DsU,EAAcnwN,KAAKuE,cAAc,cAAe,CAAEC,UAAWs3M,EAAa9sM,MAAO,CAAEyJ,MAAO,IAAKY,IAAK,SACpG+2M,EAA0BpwN,KAAKuE,cAAc,OAAQ,CAAEC,UAAW+3M,IACtE4T,EAAYxlN,aAAa,QAAS,aAClC,IAAI0lN,EAAkBrwN,KAAKuE,cAAc,OAAQ,CAAEC,UAAWu3M,IAC9DsU,EAAgBjrM,YAAc,KAC9BgrM,EAAwB1rN,YAAYyrN,GACpCD,EAAmBxrN,YAAY0rN,GAC/BF,EAAmBxrN,YAAY2rN,GAC/BxK,EAAU35M,cAAc,IAAMiwM,GAAgBz3M,YAAYwrN,IAG9D/S,EAASj9M,UAAUowN,kBAAoB,SAAUnjN,EAAG0mE,GAChD,IAAKp4D,MAAMtS,KAAKC,MAAO+D,EAAEojN,OAASpjN,EAAEq+L,MAAS,QAAU,eAAkB33H,EAAG3nE,cAAc,IAAM4vM,IAC5F,GAAK,eAAkB97M,KAAKqqN,mBAA+C,KAA1BrqN,KAAKqqN,iBAOlDrqN,KAAKwwN,oBAAoB38I,EAAI1qE,KAAKC,MAAO+D,EAAEojN,OAASpjN,EAAEq+L,MAAS,KAAK55L,WAAa,SAPN,CAC3E,IAAI6G,EAAStP,KAAKC,MAAO+D,EAAEojN,OAASpjN,EAAEq+L,MAAS,KAAQ75L,SAAS3R,KAAKqqN,iBAAkB,IACzE,IAAV5xM,GAAyB,MAAVA,GACfzY,KAAKwwN,oBAAoB38I,EAAI1qE,KAAKC,MAAO+D,EAAEojN,OAASpjN,EAAEq+L,MAAS,KAAK55L,WAAa,OAQjGurM,EAASj9M,UAAUswN,oBAAsB,SAAU38I,EAAI48I,GACnD58I,EAAG3nE,cAAc,IAAM4vM,GAAanxM,aAAa,QAAS,SAAW8lN,GACrE58I,EAAG3nE,cAAc,IAAM6vM,GAAkB32L,YAAcqrM,GAE3DtT,EAASj9M,UAAUwwN,iBAAmB,SAAUvjN,EAAGs1M,EAAOkO,EAAU1I,GAChE,IAAIp0I,EAAK7zE,KAAKymN,aAAahE,GAC3B,IAAI,eAAkB5uI,IAAS88I,EAA/B,CAGA,GAAK,eAAkB98I,GAoBnB7zE,KAAK4wN,oBAAoBnO,EAAOt1M,EAAG86M,OApBX,CAEC,MAArBxF,EAAMQ,YACNjjN,KAAK4wN,oBAAoBnO,EAAOt1M,EAAG86M,EAASp0I,GAE1CA,EAAGnxD,iBAAiB,IAAMm5L,GAAkBl7M,OAAS,IAAMkzE,EAAG3nE,cAAc,IAAM8uM,KACpFnnI,EAAG3nE,cAAc,IAAM8uM,GAAQ91M,UAAU4G,IAAIkwM,GAC7Ch8M,KAAKiwN,kBAAkBp8I,GACvB7zE,KAAK6wN,yBAAyBh9I,EAAImoI,GAClCnoI,EAAG3nE,cAAc,IAAM8uM,GAAQ91M,UAAUC,OAAO+2M,IAEpDl8M,KAAKswN,kBAAkBnjN,EAAG0mE,GAC1B,IAAIi9I,EAAUj9I,EAAG3nE,cAAc,IAAMqvM,GAChC,eAAkBuV,KACnBA,EAAQ5rN,UAAU4G,IAAI4vM,EAAYM,GAClC8U,EAAQnmN,aAAa,QAAS3K,KAAKw/M,eAAe,UAClDsR,EAAQ5rN,UAAUC,OAAOo2M,IAMjC,IAAIx1L,EAAO,CAAE5Y,EAAGA,EAAGy1H,UAAW,SAAU6hF,KAAMzkN,KAAKsoN,aAAa7F,EAAOziN,KAAKw/M,eAAe,cAAe,MAC1Gx/M,KAAKiI,QAAQ,WAAY8d,KAG7Bo3L,EAASj9M,UAAU0wN,oBAAsB,SAAUnO,EAAOt1M,EAAG86M,EAASp0I,GAClE,IAAIxwE,EAAQrD,KACZ,GAAyB,MAArByiN,EAAMQ,WAAoB,CAC1B,IAAI38L,EAAY,CACZ5X,MAAOvB,EACPy1M,SAAUH,EACVh0M,QAAQ,EACRq5M,eAAgB,GAChBX,eAAgB,MAEpBnnN,KAAKiI,QAAQ,YAAaqe,GAAW,SAAUA,GAC3C,GAAIA,EAAU7X,QAEV,GADAg0M,EAAMQ,WAAa,KACd,eAAkBpvI,GAAK,CACxB,IAAIuyI,EAAgBvyI,EAAG3nE,cAAc,IAAMwvM,GACtC,eAAkB0K,KACnB,eAAYA,GACZ,eAAOvyI,EAAG3nE,cAAc,0BAI/B,CACD+7M,EAAQlB,WAAY,EACpBkB,EAAQb,YAAYpxH,QACpB,IAAIgxH,EAAW,IAAIC,SACnB,GAAyB,MAArBxE,EAAMQ,WAAoB,CAC1B,IAAIr4H,EAASvnF,EAAMD,QAAQsH,aAAa,QACxCs8M,EAASY,OAAOh9H,EAAQ63H,EAAMzyM,MAC9Bg3M,EAASY,OAAO,mBAAoBnF,EAAMzyM,MAC1C3M,EAAMwkN,eAAeb,EAAU1gM,EAAUwhM,gBACzC,IAAIiJ,EAAS,IAAI,OAAK1tN,EAAMwjN,cAAcC,UAAW,QAAQ,EAAM,MACnEiK,EAAOhK,WAAY,EACnBgK,EAAO7J,WAAa,SAAU/5M,GACtBmZ,EAAU6gM,gBACV9jN,EAAM2kN,mBAAmB+I,EAAO3J,YAAa9gM,EAAU6gM,iBAG/D4J,EAAOzJ,OAAS,SAAUn6M,GAEtB,OADA9J,EAAM2tN,mBAAmB7jN,EAAGs1M,GACrB,IAEXsO,EAAOrJ,KAAKV,UAMhC7J,EAASj9M,UAAU8wN,mBAAqB,SAAU7jN,EAAGs3M,GACjD,IAAIoB,EAAY7lN,KAAKymN,aAAahC,GAClC,KAAI,eAAkBoB,IAAcA,EAAU35M,cAAc,IAAMyvM,IAAe,eAAkBkK,EAAU35M,cAAc,IAAMwvM,KAAjI,CAGA17M,KAAKsoN,aAAa7D,EAAMzkN,KAAKw/M,eAAe,oBAAqB,KACjEx/M,KAAKixN,mBAAmB9jN,EAAGs3M,EAAMoB,GACjC,IAAIO,EAAgBP,EAAU35M,cAAc,IAAMqvM,GAC7C,eAAkBsK,KACnB,eAAYO,GACP,eAAkBP,EAAU35M,cAAc,qBAC3C,eAAO25M,EAAU35M,cAAc,qBAGvC,IAAIglN,EAAkB/jN,GAAKA,EAAEqI,cAAgBxV,KAAKooN,YAAYj7M,GAAK,KAC/D4Y,EAAO,CAAErX,MAAOvB,EAAGg7M,SAAU+I,EAAiBtuF,UAAW,SAAU6hF,KAAMA,GAC7EzkN,KAAKiI,QAAQ,UAAW8d,KAE5Bo3L,EAASj9M,UAAU+wN,mBAAqB,SAAU9jN,EAAGs3M,EAAMoB,GACvD,IAAIxiN,EAAQrD,KACZA,KAAK6wN,yBAAyBhL,EAAW3J,GACzCl8M,KAAKmxN,kBAAkBtL,EAAW,WAC7B,eAAkBA,EAAU35M,cAAc,oBAC3C25M,EAAU35M,cAAc,kBAAkBhH,UAAU4G,IAAIowM,GAE5D,IAAIkV,EAAavL,EAAU35M,cAAc,IAAMwvM,GAC/C,IAAI,eAAkB0V,GAAtB,CAGAA,EAAWlsN,UAAUC,OAAOu2M,EAAYM,GACxCoV,EAAWlsN,UAAU4G,IAAIyvM,GACzB6V,EAAWzmN,aAAa,QAAS3K,KAAKw/M,eAAe,WACrDx/M,KAAKqxN,YAAcrxN,KAAKuE,cAAc,OAAQ,CAAEC,UAAW,4BAA6BwK,MAAO,CAAE,SAAYhP,KAAK49M,eAClHwT,EAAWzvM,cAAc6D,aAAaxlB,KAAKqxN,YAAaD,GACxDpxN,KAAKqxN,YAAY1mN,aAAa,QAAS3K,KAAKw/M,eAAe,UAC3D,IAAI8R,EAAezL,EAAU35M,cAAc,IAAMyvM,GAEjD2V,EAAaz4K,iBAAiB,SAAS,SAAU1rC,GAC7C9J,EAAMkuN,mBAAmBpkN,EAAGs3M,EAAMoB,GAAW,MAC9C,KAEP1I,EAASj9M,UAAUqxN,mBAAqB,SAAUpkN,EAAGs3M,EAAMoB,EAAWj6L,GAClE64L,EAAKxB,WAAa,IAClBwB,EAAK72H,OAAS5tF,KAAKw/M,eAAe,wBAC7B5zL,IACI,eAAkBi6L,EAAU35M,cAAc,IAAM8uM,KACjD6K,EAAU35M,cAAc,IAAM8uM,GAAQ91M,UAAUC,OAAO+2M,GAEtD,eAAkB2J,EAAU35M,cAAc,IAAMyvM,KACjD,eAAOkK,EAAU35M,cAAc,IAAMyvM,IAEzC37M,KAAKqxN,YAAc,MAGlB,eAAkBxL,IACnBA,EAAU3gN,UAAU4G,IAAI4wM,GAE5B18M,KAAK8+M,OAAO,CAAC2F,KAGjBtH,EAASj9M,UAAUsxN,eAAiB,SAAUrkN,EAAGs3M,EAAMkM,GACnD,IAAI/iI,EAASzgF,EAAE7M,OACf,GAA0B,IAAtBstF,EAAOy6H,YAAoBz6H,EAAOA,QAAU,KAAOA,EAAOA,QAAU,IAAK,CACzE,IAAI/Z,EAAK7zE,KAAKymN,aAAahC,GAC3B,GAAI,eAAkB5wI,MAAS88I,GAAY,eAAkBA,IACzD,OAEJ,IAAK,eAAkB98I,GAAK,CACxB7zE,KAAK6wN,yBAAyBh9I,EAAIooI,GAClCj8M,KAAKmxN,kBAAkBt9I,EAAI,WAC3B,IAAIi9I,EAAUj9I,EAAG3nE,cAAc,IAAMwvM,GAChC,eAAkBoV,KACnBA,EAAQ5rN,UAAU4G,IAAI0vM,GACtBsV,EAAQnmN,aAAa,QAAS3K,KAAKw/M,eAAe,WAClDsR,EAAQ5rN,UAAUC,OAAOu2M,GACzBoV,EAAQ5rN,UAAUC,OAAO62M,IAGjCh8M,KAAKyxN,kBAAkBtkN,EAAGs3M,QAG1BzkN,KAAK0xN,aAAavkN,EAAGs3M,IAG7BtH,EAASj9M,UAAUkoN,YAAc,SAAUj7M,GACvC,IAAI7M,EAAS6M,EAAEqI,cACX2yM,EAAW,CACXE,WAAY/nN,EAAO+nN,WACnBpF,WAAY3iN,EAAOstF,OACnB+jI,WAAYrxN,EAAOqxN,WACnBlpH,QAASnoG,EAAOsxN,wBAChBC,gBAAiBvxN,EAAOuxN,iBAE5B,OAAO1J,GAEXhL,EAASj9M,UAAUuxN,kBAAoB,SAAUtkN,EAAGs3M,GAChD,IAAIphN,EAAQrD,KACRmoN,EAAWh7M,GAAKA,EAAEqI,cAAgBxV,KAAKooN,YAAYj7M,GAAK,KACxDqgN,EAAgBxtN,KAAKw/M,eAAe,wBACpCz5L,EAAO,CACP5Y,EAAGA,EAAGg7M,SAAUA,EAAUvlF,UAAW,SAAU6hF,KAAMzkN,KAAKsoN,aAAa7D,EAAM+I,EAAe,KAAK,GAAQmE,WAAYnE,GAErH3H,EAAY7lN,KAAKymN,aAAahC,GAClC,IAAK,eAAkBoB,GAAY,CAC/B,IAAIiM,EAAajM,EAAU35M,cAAc,IAAMuvM,GAC1C,eAAkBqW,KACnB,eAAYjM,GACZ,eAAOiM,IAGf9xN,KAAKiI,QAAQ,UAAW8d,GAAM,SAAUA,GACpC1iB,EAAMilN,aAAa7D,EAAM1+L,EAAK4rM,WAAY,KAC1CtuN,EAAMi6M,kBAAkBjxM,KAAKo4M,GAC7BphN,EAAM4E,QAAQ,SAAU,CAAEw8M,KAAMphN,EAAMi6M,oBACtCj6M,EAAM+8M,0BACF/8M,EAAMg7M,SAAS19M,OAAS,EACjB0C,EAAMojN,aAAahC,GAAOv/M,UAAUmB,SAASq2M,GAM/Cr5M,EAAMojN,aAAahC,GAAOv/M,UAAUC,OAAOu3M,IAL5Cr5M,EAAMgjN,mBACNhjN,EAAMijN,qBAAoB,IAOxBjjN,EAAM8/M,cACZ9/M,EAAMijN,qBAAoB,OAItCnJ,EAASj9M,UAAUwxN,aAAe,SAAUvkN,EAAGs3M,GAC3C,IAAIphN,EAAQrD,KACR6zE,EAAK7zE,KAAKymN,aAAahC,GACvB0D,EAAWh7M,GAAKA,EAAEqI,cAAgBxV,KAAKooN,YAAYj7M,GAAK,KACxDqgN,EAAgBxtN,KAAKw/M,eAAe,uBACpCz5L,EAAO,CACP5Y,EAAGA,EAAGg7M,SAAUA,EAAUvlF,UAAW,SAAU6hF,KAAMzkN,KAAKsoN,aAAa7D,EAAM+I,EAAe,KAAK,GAAQmE,WAAYnE,GAEpH,eAAkB35I,IACnB7zE,KAAKixN,mBAAmB9jN,EAAGs3M,EAAM5wI,GAErC7zE,KAAKiI,QAAQ,UAAW8d,GAAM,SAAUA,GACpC1iB,EAAMilN,aAAa7D,EAAM1+L,EAAK4rM,WAAY,KAC1CtuN,EAAM+8M,0BACN/8M,EAAMgjN,mBACNhjN,EAAMijN,qBAAoB,OAGlCnJ,EAASj9M,UAAUmmN,iBAAmB,WAC9BrmN,KAAKojN,mBACDpjN,KAAK6/M,WAEL7/M,KAAKgkN,gBAAgBhkN,KAAKs+M,WAG1Bt+M,KAAKmiN,sBAIjBhF,EAASj9M,UAAUomN,oBAAsB,SAAUh4L,GAC3CA,IACEtuB,KAAK89M,sBAGL99M,KAAK89M,oBAEX99M,KAAK+xN,uBAET5U,EAASj9M,UAAU6xN,oBAAsB,WACrC,GAAK/xN,KAAKs+M,UAAU39M,SAAWX,KAAK89M,qBAAwB99M,KAAKuxH,KAAM,CACnEvxH,KAAKuxH,MAAO,EACZ,IAAIjrG,EAAY,CACZs8L,SAAU,IAEdt8L,EAAUs8L,SAAW5iN,KAAKgyN,sBAAsBhyN,KAAK+9M,eACrD/9M,KAAKiI,QAAQ,iBAAkBqe,KAGvC62L,EAASj9M,UAAU8xN,sBAAwB,SAAUjU,GAGjD,IAFA,IAAIkU,EAAa,GACbC,EAAkB,EACbC,EAAkB,EAAGA,EAAkBpU,EAAcp9M,OAAQwxN,IAElE,IADA,IAAIC,EAAmBrU,EAAcoU,GAC5BE,EAAgB,EAAGA,EAAgBryN,KAAKs+M,UAAU39M,OAAQ0xN,IAC3DryN,KAAKs+M,UAAU+T,GAAeriN,OAASoiN,EAAiBpiN,MAAQhQ,KAAKs+M,UAAU+T,GAAezkI,SAAWwkI,EAAiBxkI,SAC1HqkI,EAAWC,GAAmBlyN,KAAKs+M,UAAU+T,KAC3CH,GAId,OAAOD,GAEX9U,EAASj9M,UAAU2wN,yBAA2B,SAAUh9I,EAAIrvE,GACxD,IAAI2rN,EAAct8I,EAAG3nE,cAAc,IAAM4vM,GACpC,eAAkBqU,IACnBA,EAAYjrN,UAAU4G,IAAItH,IAGlC24M,EAASj9M,UAAUixN,kBAAoB,SAAUt9I,EAAIy+I,GACjD,IAAIjvN,EAAQrD,KACP,eAAkB6zE,EAAG3nE,cAAc,IAAM2vM,MAC1C77M,KAAKuyN,kBAAoB,IAAI,OAAU,CAAEvvN,SAAU,OACnDhD,KAAKuyN,kBAAkB5zJ,QAAQkV,EAAG3nE,cAAc,IAAM2vM,GAAmB,CAAE7rM,KAAM,YACjFhQ,KAAKuyN,kBAAkB5zJ,QAAQkV,EAAG3nE,cAAc,IAAM6vM,GAAmB,CAAE/rM,KAAM,YACjF5C,YAAW,WACP/J,EAAMmvN,mBAAmB3+I,EAAIy+I,KAC9B,OAIXnV,EAASj9M,UAAUsyN,mBAAqB,SAAU3+I,EAAIy+I,GACjC,YAAbA,GACAz+I,EAAG3uE,UAAU4G,IAAImwM,GACZ,eAAkBpoI,EAAG3nE,cAAc,IAAM8uM,MAC1CnnI,EAAG3nE,cAAc,IAAM8uM,GAAQ91M,UAAUC,OAAO62M,GAChDh8M,KAAKuyN,kBAAkB5zJ,QAAQkV,EAAG3nE,cAAc,IAAM8uM,GAAS,CAAEhrM,KAAM,WACvE6jE,EAAG3nE,cAAc,IAAM8uM,GAAQ91M,UAAU4G,IAAImwM,KAI5C,eAAkBpoI,EAAG3nE,cAAc,IAAM8uM,MAC1CnnI,EAAG3nE,cAAc,IAAM8uM,GAAQ91M,UAAUC,OAAO62M,GAChDh8M,KAAKuyN,kBAAkB5zJ,QAAQkV,EAAG3nE,cAAc,IAAM8uM,GAAS,CAAEhrM,KAAM,WACvE6jE,EAAG3nE,cAAc,IAAM8uM,GAAQ91M,UAAU4G,IAAIowM,IAGjDroI,EAAG3nE,cAAc,IAAM2vM,IACvB,eAAOhoI,EAAG3nE,cAAc,IAAM2vM,KAGtCsB,EAASj9M,UAAUs+M,cAAgB,SAAU2N,GACtB,KAAfA,GAAsB,eAAkBA,GAIxCnsN,KAAKoD,QAAQwH,gBAAgB,UAH7B5K,KAAKoD,QAAQuH,aAAa,SAAUwhN,IAM5ChP,EAASj9M,UAAUitN,iBAAmB,SAAUsF,GAC5C,GAAIA,EACA,IACI,MAA8B,oBAAnBA,GAAiC,gBAAUA,EAAgB7kN,UAAUjN,OACrE,eAAQ,gBAAO8xN,EAAgB7kN,UAAU9C,UAAUyB,QAGnD,eAAQkmN,GAGvB,MAAOC,GACH,OAAO,eAAQD,KAK3BtV,EAASj9M,UAAU0+M,OAAS,WACpB5+M,KAAKyF,UACL,eAAS,CAACzF,KAAKy/M,eAAgBh+M,GAG/B,gBAAY,CAACzB,KAAKy/M,eAAgBh+M,IAG1C07M,EAASj9M,UAAUs/M,eAAiB,SAAU/wI,GAE1C,OADAzuE,KAAKya,KAAK4P,UAAUrqB,KAAKwa,QAClBxa,KAAKya,KAAKC,YAAY+zD,IAEjC0uI,EAASj9M,UAAUw+M,iBAAmB,WAC7B1+M,KAAKqY,SAYFrY,KAAKy/M,cAAcv6M,UAAUmB,SAAS24B,IACtCh/B,KAAKy/M,cAAcv6M,UAAUC,OAAO65B,IAEnC,eAAkBh/B,KAAKu/M,eAAiBv/M,KAAKoD,QAAQ0kB,aAAa,cACnE9nB,KAAKoD,QAAQwH,gBAAgB,YAC7B5K,KAAKu/M,aAAa30M,gBAAgB,cAEjC,eAAkB5K,KAAKme,cAAgBne,KAAKme,YAAY2J,aAAa,aACtE9nB,KAAKme,YAAYvT,gBAAgB,aAEhC,eAAkB5K,KAAK8/M,eAAiB9/M,KAAK8/M,aAAah4L,aAAa,aACxE9nB,KAAK8/M,aAAah4L,aAAa,cAtBnC9nB,KAAKy/M,cAAcv6M,UAAU4G,IAAIkzB,GACjCh/B,KAAKoD,QAAQuH,aAAa,WAAY,YACtC3K,KAAKu/M,aAAa50M,aAAa,WAAY,YACtC,eAAkB3K,KAAKme,cACxBne,KAAKme,YAAYxT,aAAa,WAAY,YAEzC,eAAkB3K,KAAK8/M,eACxB9/M,KAAK8/M,aAAan1M,aAAa,WAAY,cAmBvDwyM,EAASj9M,UAAUg/M,oBAAsB,SAAU7jM,GAG/C,IAFA,IAAIoM,EAAapM,EAAY,eAAkBrb,KAAKggB,gBAAkB,GAAKvgB,OAAO2V,KAAKpV,KAAKggB,gBACxF,CAAC,SAAU,WAAY,YAClBnS,EAAK,EAAG6b,EAAejC,EAAY5Z,EAAK6b,EAAa/oB,OAAQkN,IAAM,CACxE,IAAIwH,EAAOqU,EAAa7b,GACxB,IAAK,eAAkB7N,KAAKoD,QAAQsH,aAAa2K,IAC7C,OAAQA,GACJ,IAAK,UACI,eAAkBrV,KAAKu+M,uBAAmEhzM,IAA9CvL,KAAKu+M,gBAAgB,sBAC/DljM,KACHrb,KAAKiL,cAAc,CAAEwzM,kBAAmBz+M,KAAKoD,QAAQsH,aAAa,YAAc2Q,GAChFrb,KAAKo9M,YAAYjnH,OAASn2F,KAAKy+M,mBAEnC,MACJ,IAAK,WACD,GAAK,eAAkBz+M,KAAKu+M,uBAA0DhzM,IAArCvL,KAAKu+M,gBAAgB,aAA+BljM,EAAW,CAC5G,IAAIs3M,EAAgD,aAApC3yN,KAAKoD,QAAQsH,aAAa2K,IACF,KAApCrV,KAAKoD,QAAQsH,aAAa2K,IAAoD,SAApCrV,KAAKoD,QAAQsH,aAAa2K,GACxErV,KAAKiL,cAAc,CAAEoyM,SAAUsV,IAAct3M,GAC7Crb,KAAKo9M,YAAYC,UAAW,EAEhC,MACJ,IAAK,WACD,GAAK,eAAkBr9M,KAAKu+M,uBAAyDhzM,IAApCvL,KAAKu+M,gBAAgB,YAA8BljM,EAAW,CAC3G,IAAIwsB,EAAiD,aAApC7nC,KAAKoD,QAAQsH,aAAa2K,IACH,KAApCrV,KAAKoD,QAAQsH,aAAa2K,IAAoD,SAApCrV,KAAKoD,QAAQsH,aAAa2K,GACxErV,KAAKiL,cAAc,CAAEoN,QAASwvB,IAAexsB,GAC7Crb,KAAKo9M,YAAYhlM,UAAW,MAMpD+kM,EAASj9M,UAAU0kN,YAAc,SAAUH,EAAM74L,EAAQgnM,GACrD,IAAI1wM,EAAQ,EACRC,EAAMhZ,KAAKsT,IAAIzc,KAAK6mN,cAAcgM,UAAWpO,EAAKpmI,MAClD5xE,EAAQ,EACRqmN,EAAOrO,EAAK5B,QAAQn1M,MAAMwU,EAAOC,GACjCoiM,EAAW,CAAEwO,WAAYtmN,EAAOqmN,KAAMA,EAAMrO,KAAMA,EAAMviM,MAAOA,EAAOC,IAAKA,EAAK6wM,WAAY,EAAG/K,QAAS,MAC5GjoN,KAAKizN,YAAYxO,EAAMF,EAAU34L,EAAQgnM,IAG7CzV,EAASj9M,UAAU+yN,YAAc,SAAUxO,EAAMF,EAAU34L,EAAQgnM,GAC/D,IAAIvvN,EAAQrD,KACRgnN,EAAW,IAAIC,SACf6L,EAAOrO,EAAK5B,QAAQn1M,MAAM62M,EAASriM,MAAOqiM,EAASpiM,KACvD6kM,EAASY,OAAO5nN,KAAKg+M,aAAc8U,EAAMrO,EAAKz0M,MAC9Cg3M,EAASY,OAAO,cAAerD,EAASwO,WAAWnhN,YACnDo1M,EAASY,OAAO,aAAcrD,EAASwO,WAAWnhN,YAClD,IAAIshN,EAAa/pN,KAAKkQ,IAAIlQ,KAAK2kC,KAAK22K,EAAKpmI,KAAOr+E,KAAK6mN,cAAcgM,WAAY,GAC/E7L,EAASY,OAAO,cAAesL,EAAWthN,YAC1Co1M,EAASY,OAAO,aAAcsL,EAAWthN,YACzC,IAAIg1M,EAAO,IAAI,OAAK,CAAExpL,IAAKp9B,KAAK6mN,cAAc8E,QAASn9M,KAAM,OAAQ2kN,OAAO,EAAMC,YAAa,OAC/FxM,EAAKG,WAAY,EACjBH,EAAKU,OAAS,SAAUn6M,GAEpB,OADA9J,EAAMgwN,oBAAoBlmN,EAAGo3M,EAAU34L,GAChC,IAEXg7L,EAAK0M,iBAAmB,SAAUnmN,GAE9B,OADA9J,EAAMkwN,sBAAsBpmN,EAAGo3M,EAAU34L,GAClC,IAEX,IAAItF,EAAY,CACZs8L,SAAU6B,EACVqD,eAAgB,GAChBr5M,QAAQ,EACRokN,UAA4C,IAAjC7yN,KAAK6mN,cAAcgM,UAAkB,KAAO7yN,KAAK6mN,cAAcgM,WAE9EjM,EAAKM,WAAa,SAAU/5M,GACxBmZ,EAAU6gM,eAAiBP,EAAKQ,YAChC9gM,EAAUktM,kBAAoBjP,EAASwO,WACH,IAAhCzsM,EAAUktM,kBAEVnwN,EAAM4E,QAAQ,YAAaqe,GAAW,SAAUA,GAC5CjjB,EAAMowN,uBAAuBzM,EAAU1gM,EAAWnZ,EAAGs3M,MAIzDphN,EAAM4E,QAAQ,iBAAkBqe,GAAW,SAAUA,GACjDjjB,EAAMowN,uBAAuBzM,EAAU1gM,EAAWnZ,EAAGs3M,OAKjEmC,EAAKY,QAAU,SAAUr6M,GAErB,OADA9J,EAAMqwN,kBAAkBvmN,EAAGo3M,EAAU34L,GAC9B,IAEXg7L,EAAKc,KAAKV,GACVzC,EAAS0D,QAAUrB,GAEvBzJ,EAASj9M,UAAUuzN,uBAAyB,SAAUzM,EAAU1gM,EAAWnZ,EAAGs3M,GACtEn+L,EAAU7X,OACVzO,KAAK2zN,kBAAkBxmN,EAAGmZ,EAAWm+L,GAGrCzkN,KAAK6nN,eAAeb,EAAU1gM,EAAUwhM,iBAGhD3K,EAASj9M,UAAUyzN,kBAAoB,SAAUxmN,EAAGmZ,EAAWm+L,GAC3D,IAAIphN,EAAQrD,KAEZ,GADAmN,EAAEsB,QAAS,EAC2B,MAAlC6X,EAAUs8L,SAASK,WAAvB,CAGA38L,EAAUs8L,SAASK,WAAa,IAChC38L,EAAUs8L,SAASh1H,OAAS5tF,KAAKw/M,eAAe,oBAChD,IAAIqG,EAAY7lN,KAAKymN,aAAangM,EAAUs8L,UAC5C,GAAIiD,EAAW,CACN,eAAkBA,EAAU35M,cAAc,IAAM8uM,MACjD6K,EAAU35M,cAAc,IAAM8uM,GAAQlwM,UAAY9K,KAAKw/M,eAAe,oBACtEqG,EAAU35M,cAAc,IAAM8uM,GAAQ91M,UAAU4G,IAAIowM,IAExDl8M,KAAKqxN,YAAcrxN,KAAKuE,cAAc,OAAQ,CAAEC,UAAW,4BAA6BwK,MAAO,CAAE,SAAYhP,KAAK49M,eAClH,IAAIgW,EAAa/N,EAAU35M,cAAc,IAAMqvM,GAC3CqY,GACAA,EAAWjyM,cAAc6D,aAAaxlB,KAAKqxN,YAAauC,GAE5D5zN,KAAKqxN,YAAY1mN,aAAa,QAAS3K,KAAKw/M,eAAe,UAE3Dx/M,KAAKqxN,YAAYx4K,iBAAiB,SAAS,SAAU1rC,GACjD9J,EAAMkuN,mBAAmBpkN,EAAGs3M,EAAMoB,MACnC,GACH7lN,KAAKogN,6BAGbjD,EAASj9M,UAAU2zN,iBAAmB,WAClC,QAAQ7zN,KAAK6mN,cAAcgM,WAAa,GAAK,eAAkB7yN,KAAK6mN,cAAcgM,aAEtF1V,EAASj9M,UAAUmzN,oBAAsB,SAAUlmN,EAAGo3M,EAAU34L,GAC5D,IAEIi6L,EAFAxiN,EAAQrD,KACRmoN,EAAWh7M,EAAE7M,OAEjB,GAA4B,IAAxB6nN,EAASE,YAAoBF,EAASv6H,QAAU,KAAOu6H,EAASv6H,OAAS,IAAK,CAC9E,IAAIsjI,EAAkB/jN,GAAKA,EAAEqI,cAAgBxV,KAAKooN,YAAYj7M,GAAK,KAC/D+lN,EAAa/pN,KAAKkQ,IAAIlQ,KAAK2kC,KAAKy2K,EAASE,KAAKpmI,KAAOr+E,KAAK6mN,cAAcgM,WAAY,GACpFvsM,EAAY,CACZ5X,MAAOvB,EACPs3M,KAAMF,EAASE,KACfsO,WAAYxO,EAASwO,WACrBG,WAAYA,EACZL,UAAW7yN,KAAK6mN,cAAcgM,UAC9B1K,SAAU+I,GAUd,GARAlxN,KAAKiI,QAAQ,eAAgBqe,IACzB,eAAkBsF,IAAYA,IAC9Bi6L,EAAY7lN,KAAKymN,aAAalC,EAASE,OAE3CzkN,KAAK8zN,eAAevP,GAChBA,EAASpiM,MAAQoiM,EAASE,KAAKpmI,OAC/BkmI,EAASE,KAAKxB,WAAa,KAEE,MAA7BsB,EAASE,KAAKxB,WAAoB,CAClC,IAAIp8B,EAAc,CAAEn4K,MAAOvB,EAAGy1M,SAAU2B,EAASE,KAAMh2M,QAAQ,EAAOq5M,eAAgB,IACtF9nN,KAAKiI,QAAQ,YAAa4+K,GAAa,SAAUvgK,GAE7C,GAAIA,EAAU7X,OAAQ,CAClB81M,EAASE,KAAKxB,WAAa,IAC3B,IAAImD,EAAgBP,EAAU35M,cAAc,IAAMwvM,GAC7C,eAAkBmK,IAAe,eAAkBO,KACpD,eAAYA,GACZ,eAAOP,EAAU35M,cAAc,qBAEnC7I,EAAM0wN,gBAAgBxP,OAErB,CACDA,EAAS0D,QAAQlB,WAAY,EAC7BoB,EAASnyH,QACT,IAAIgxH,EAAW,IAAIC,SACf+M,EAAS3wN,EAAMD,QAAQsH,aAAa,QACxCs8M,EAASY,OAAOoM,EAAQzP,EAASE,KAAKz0M,MACtCg3M,EAASY,OAAO,mBAAoBrD,EAASE,KAAKz0M,MAClDg3M,EAASY,OAAO,kBAAmBrD,EAASE,KAAKz0M,MACjD3M,EAAMwkN,eAAeb,EAAU1gM,EAAUwhM,gBACzC,IAAIlB,EAAO,IAAI,OAAKvjN,EAAMwjN,cAAcC,UAAW,QAAQ,EAAM,MACjEF,EAAKG,WAAY,EACjBH,EAAKU,OAAS,SAAUn6M,GAEpB,OADA9J,EAAM4wN,gBAAgB9mN,EAAGo3M,EAAU34L,GAC5B,IAEXg7L,EAAKc,KAAKV,WAIjB,CACD,GAAKkM,EAAa,IAAO3O,EAASwO,YAAcG,EAAa3O,EAASwO,WAAY,CAC9E,IAAItmN,EAAQzM,KAAK09M,WAAW15M,QAAQugN,GAWpC,OAVI93M,GAAS,GACTzM,KAAK09M,WAAWhxM,OAAOD,EAAO,GAE9B,eAAkBzM,KAAK42C,YAAc,eAAkBhrB,KAAYA,IAAWi6L,IAC1EA,IAAc,eAAkBA,EAAU35M,cAAc,IAAMswM,KAC9D,eAAOqJ,EAAU35M,cAAc,IAAMswM,IAEzCx8M,KAAKk0N,uBAAuB3P,SAEhCvkN,KAAKyxN,kBAAkBtkN,EAAGo3M,EAASE,MAGN,MAA7BF,EAASE,KAAKxB,YACdjjN,KAAK+zN,gBAAgBxP,SAK7BvkN,KAAK0zN,kBAAkBvmN,EAAGo3M,IAGlCpH,EAASj9M,UAAU6zN,gBAAkB,SAAUxP,GAC3CA,EAASriM,MAAQqiM,EAASpiM,IAC1BoiM,EAASpiM,KAAOniB,KAAK6mN,cAAcgM,UACnCtO,EAASpiM,IAAMhZ,KAAKsT,IAAI8nM,EAASpiM,IAAKoiM,EAASE,KAAKpmI,MACpDkmI,EAASwO,YAAc,EACvB/yN,KAAKizN,YAAY1O,EAASE,KAAMF,IAEpCpH,EAASj9M,UAAU+zN,gBAAkB,SAAU9mN,EAAGo3M,EAAU34L,GACxD,GAAI,eAAkB5rB,KAAK42C,WAAc,eAAkBhrB,KAAYA,EAAS,CAC5E,IAAIi6L,EAAY7lN,KAAKymN,aAAalC,EAASE,MACvC2M,EAAavL,EAAU35M,cAAc,IAAMwvM,GAC3C0K,EAAgBgL,EACpBpxN,KAAKsoN,aAAa/D,EAASE,KAAMzkN,KAAKw/M,eAAe,oBAAqB,KAC1Ex/M,KAAK6wN,yBAAyBhL,EAAW3J,GACzCl8M,KAAKmxN,kBAAkBtL,EAAW,WACjCuL,GAAcA,EAAWlsN,UAAUC,OAAOu2M,GAC1C0V,GAAcA,EAAWlsN,UAAU4G,IAAIyvM,GACvC6V,GAAcA,EAAWzmN,aAAa,QAAS3K,KAAKw/M,eAAe,WACpE,IAAI2U,EAAYtO,EAAU35M,cAAc,IAAMswM,GAC7C2X,GAAaA,EAAUjvN,UAAU4G,IAAI6vM,GACrCwY,GAAaA,EAAUjvN,UAAUC,OAAOq3M,GACxC2X,GAAaA,EAAUxpN,aAAa,QAAS3K,KAAKw/M,eAAe,UAC7D,eAAkBqG,IAAe,eAAkBuL,IAChD,eAAkBvL,EAAU35M,cAAc,sBAC9C,eAAYk6M,GACZ,eAAOP,EAAU35M,cAAc,uBAI3CixM,EAASj9M,UAAUghN,YAAc,SAAUqD,EAAUp3M,EAAGye,GACpD24L,EAASE,KAAKxB,WAAa,IAC3BsB,EAASE,KAAK72H,OAAS5tF,KAAKw/M,eAAe,SAC3Cx/M,KAAK8zN,eAAevP,GACpB,IAAIj+L,EAAY,CACZ5X,MAAOvB,GAAQ,KACfs3M,KAAMF,EAASE,KACfsO,WAAYxO,EAASwO,WACrBqB,WAAYjrN,KAAKC,MAAMm7M,EAASE,KAAKpmI,KAAOr+E,KAAK6mN,cAAcgM,WAC/DA,UAAW7yN,KAAK6mN,cAAcgM,WAElC7yN,KAAK0kN,YAAYH,EAAU34L,EAAQtF,IAEvC62L,EAASj9M,UAAUwkN,YAAc,SAAUH,EAAU34L,EAAQtF,GACxB,MAA7Bi+L,EAASE,KAAKxB,aACdsB,EAAS0D,QAAQlB,WAAY,EAC7BxC,EAAS0D,QAAQb,YAAYpxH,SAEjC,IAAI6vH,EAAY7lN,KAAKymN,aAAalC,EAASE,MAC3C,GAAI,eAAkBzkN,KAAK42C,YAAc,eAAkBhrB,KAAYA,GAAS,CAC5E,IAAI3Z,EAAgB4zM,EAAU35M,cAAc,IAAMswM,GAClDvqM,EAAc/M,UAAUC,OAAOq3M,GAC/BvqM,EAAc/M,UAAU4G,IAAI2wM,GAC5BxqM,EAActH,aAAa,QAAS3K,KAAKw/M,eAAe,WACxDvtM,EAAcgiC,mBAAmB/uC,UAAU4G,IAAIyvM,GAC/CtpM,EAAcgiC,mBAAmB/uC,UAAUC,OAAOu2M,GAClDzpM,EAAcgiC,mBAAmBtpC,aAAa,QAAS3K,KAAKw/M,eAAe,WAE/E,IAAK,IAAIx+M,EAAI,EAAGA,EAAIhB,KAAK09M,WAAW/8M,OAAQK,IACpChB,KAAK09M,WAAW18M,GAAGyjN,KAAKz0M,OAASu0M,EAASE,KAAKz0M,MAC/ChQ,KAAK09M,WAAWhxM,OAAO1L,EAAG,GAGlChB,KAAK09M,WAAWrxM,KAAKk4M,GACrBvkN,KAAKiI,QAAQ,UAAWqe,IAE5B62L,EAASj9M,UAAUykN,aAAe,SAAUJ,EAAUp3M,EAAGye,GACrD,IACI3Z,EADA4zM,EAAY7lN,KAAKymN,aAAalC,EAASE,MAEtC,eAAkBoB,KACnB5zM,EAAgB4zM,EAAU35M,cAAc,IAAMuwM,IAE7C,eAAkBxqM,KAAmB,eAAkB2Z,IAAYA,IACpE3Z,EAAc/M,UAAUC,OAAOs3M,GAC/BxqM,EAAc/M,UAAU4G,IAAI0wM,GAC5BvqM,EAActH,aAAa,QAAS3K,KAAKw/M,eAAe,UACxDvtM,EAAcgiC,mBAAmB/uC,UAAUC,OAAOo2M,GAClDtpM,EAAcgiC,mBAAmB/uC,UAAU4G,IAAI4vM,GAC/CzpM,EAAcgiC,mBAAmBtpC,aAAa,QAAS3K,KAAKw/M,eAAe,WAE/E+E,EAASE,KAAK72H,OAAS5tF,KAAKw/M,eAAe,cAC3C+E,EAASE,KAAKxB,WAAa,IAC3BjjN,KAAK8zN,eAAevP,GACpB,IAAIj+L,EAAY,CACZ5X,MAAOvB,GAAQ,KACfs3M,KAAMF,EAASE,KACfsO,WAAYxO,EAASwO,WACrBqB,WAAYjrN,KAAKC,MAAMm7M,EAASE,KAAKpmI,KAAOr+E,KAAK6mN,cAAcgM,WAC/DA,UAAW7yN,KAAK6mN,cAAcgM,WAElC7yN,KAAKiI,QAAQ,WAAYqe,GACzB,IAAK,IAAItlB,EAAI,EAAGA,EAAIhB,KAAK09M,WAAW/8M,OAAQK,IACpChB,KAAK09M,WAAW18M,GAAGmhB,MAAQniB,KAAK09M,WAAW18M,GAAGyjN,KAAKpmI,KACnDr+E,KAAKqzN,oBAAoBlmN,EAAGo3M,EAAU34L,GAGlC5rB,KAAK09M,WAAW18M,GAAGyjN,KAAKz0M,OAASu0M,EAASE,KAAKz0M,OAC/ChQ,KAAK09M,WAAW18M,GAAGkhB,MAAQliB,KAAK09M,WAAW18M,GAAGmhB,IAC9CniB,KAAK09M,WAAW18M,GAAGmhB,IAAMniB,KAAK09M,WAAW18M,GAAGmhB,IAAMniB,KAAK6mN,cAAcgM,UACrE7yN,KAAK09M,WAAW18M,GAAGmhB,IAAMhZ,KAAKsT,IAAIzc,KAAK09M,WAAW18M,GAAGmhB,IAAKniB,KAAK09M,WAAW18M,GAAGyjN,KAAKpmI,MAClFr+E,KAAK09M,WAAW18M,GAAG+xN,WAAa/yN,KAAK09M,WAAW18M,GAAG+xN,WAAa,EAChE/yN,KAAKizN,YAAYjzN,KAAK09M,WAAW18M,GAAGyjN,KAAMzkN,KAAK09M,WAAW18M,GAAI4qB,KAK9EuxL,EAASj9M,UAAU4zN,eAAiB,SAAUvP,IACK,IAA3CvkN,KAAK29M,eAAe35M,QAAQugN,IAI5BvkN,KAAK29M,eAAejxM,OAAO1M,KAAK29M,eAAe35M,QAAQugN,GAAW,GAHlEvkN,KAAK29M,eAAetxM,KAAKk4M,IAOjCpH,EAASj9M,UAAUg0N,uBAAyB,SAAU3P,GAClD,IAAIsB,EAAY7lN,KAAKymN,aAAalC,EAASE,MAC3C,IAAK,eAAkBoB,GAAY,CAC/B7lN,KAAK6wN,yBAAyBhL,EAAW5J,GACzCj8M,KAAKmxN,kBAAkBtL,EAAW,WAClC,IAAIwO,EAAexO,EAAU35M,cAAc,IAAMwvM,GAC5C,eAAkB2Y,KACnBA,EAAanvN,UAAU4G,IAAI0vM,GAC3B6Y,EAAa1pN,aAAa,QAAS3K,KAAKw/M,eAAe,WACvD6U,EAAanvN,UAAUC,OAAOu2M,EAAYM,MAItDmB,EAASj9M,UAAUwzN,kBAAoB,SAAUvmN,EAAGo3M,EAAU34L,GAC1D,IAEIi6L,EAFAxiN,EAAQrD,KACRo0N,EAAajrN,KAAKkQ,IAAIlQ,KAAK2kC,KAAKy2K,EAASE,KAAKpmI,KAAOr+E,KAAK6mN,cAAcgM,WAAY,IAEpF,eAAkB7yN,KAAK42C,YAAc,eAAkBhrB,IAAYA,IACnEi6L,EAAY7lN,KAAKymN,aAAalC,EAASE,OAE3C,IAAIyM,EAAkB/jN,GAAKA,EAAEqI,cAAgBxV,KAAKooN,YAAYj7M,GAAK,KAC/DmZ,EAAY,CACZ5X,MAAOvB,EACPs3M,KAAMF,EAASE,KACfsO,WAAYxO,EAASwO,WACrBG,WAAYkB,EACZvB,UAAW7yN,KAAK6mN,cAAcgM,UAC9BpkN,QAAQ,EACR05M,SAAU+I,GAEdlxN,KAAKiI,QAAQ,eAAgBqe,GAAW,SAAUA,GAE9C,IAAKA,EAAU7X,OACX,GAAI81M,EAASyO,WAAa3vN,EAAMwjN,cAAcmM,WAC1C5lN,YAAW,WACP/J,EAAMixN,aAAazO,EAAWtB,EAAU34L,KACzCvoB,EAAMwjN,cAAc0N,qBAEtB,CACD,IAAK,eAAkB1O,GAAY,CAC/B,IAAIwL,EAAcxL,EAAU35M,cAAc,IAAMswM,GAC5CqJ,EAAU35M,cAAc,IAAMswM,GAAgBqJ,EAAU35M,cAAc,IAAMuwM,GAC3E,eAAkB4U,KACnBA,EAAYnsN,UAAU4G,IAAI6vM,GAC1B0V,EAAYnsN,UAAUC,OAAOq3M,EAAcC,IAE/Cp5M,EAAMwtN,yBAAyBhL,EAAW3J,GAC1C74M,EAAM8tN,kBAAkBtL,EAAW,WACnCA,EAAU35M,cAAc,YAAYhH,UAAUC,OAAO62M,GACrD,IAAIuS,EAAc1I,EAAU35M,cAAc,IAAMwvM,GAC5CmK,EAAU35M,cAAc,IAAMwvM,GAAcmK,EAAU35M,cAAc,IAAMqvM,GAC9EgT,EAAYrpN,UAAUC,OAAOu2M,GACxB,eAAkBmK,EAAU35M,cAAc,IAAMswM,KACjD,eAAOqJ,EAAU35M,cAAc,IAAMswM,IAErC+H,EAASriM,MAAQ,GACjBqsM,EAAYrpN,UAAU4G,IAAI0vM,GAC1B+S,EAAY5jN,aAAa,QAAStH,EAAMm8M,eAAe,aAGvD+O,EAAYrpN,UAAU4G,IAAIyvM,GAC1BgT,EAAY5jN,aAAa,QAAStH,EAAMm8M,eAAe,YAG/D+E,EAASyO,WAAa,EACtB,IAAIwB,EAASjQ,EAASE,KAClBgQ,EAAiBpxN,EAAMm8M,eAAe,uBACtCz5L,EAAO,CACP5Y,EAAGA,EAAGg7M,SAAU+I,EAChBtuF,UAAW,SACX6hF,KAAMphN,EAAMilN,aAAakM,EAAQC,EAAgB,KAAK,GACtD9C,WAAY8C,GAEhBpxN,EAAM4E,QAAQ,UAAW8d,GAAM,SAAUA,GACrC1iB,EAAMilN,aAAakM,EAAQzuM,EAAK4rM,WAAY,KAC5CtuN,EAAMgjN,mBACNhjN,EAAMijN,qBAAoB,WAM9CnJ,EAASj9M,UAAUo0N,aAAe,SAAUzO,EAAWtB,EAAU34L,GACzD,eAAkB5rB,KAAK42C,YAAc,eAAkBhrB,KAAYA,IAAWi6L,GAC9E7lN,KAAK6wN,yBAAyBhL,EAAW3J,GAE7CqI,EAASyO,YAAc,EACvBhzN,KAAKizN,YAAY1O,EAASE,KAAMF,IAEpCpH,EAASj9M,UAAUw0N,qBAAuB,SAAUvnN,GAChD,IAAI8E,EAAgB9E,EAAE7M,OAClBmuC,EAAkBthC,EAAE7M,OAAOqhB,cAC3BlV,EAAQzM,KAAKq+M,SAASr6M,QAAQyqC,GAC9Bm0K,EAAW5iN,KAAKs+M,UAAU7xM,GAC1B83M,EAAWvkN,KAAKwkN,mBAAmB5B,GACnC3wM,EAAc/M,UAAUmB,SAASm2M,GAEjCx8M,KAAKkhN,YAAYqD,EAAUp3M,GAEtB8E,EAAc/M,UAAUmB,SAASo2M,GAEtCz8M,KAAK2kN,aAAaJ,EAAUp3M,GAEvB8E,EAAc/M,UAAUmB,SAASs1M,KAClC4I,EAASE,KAAK72H,SAAW5tF,KAAKw/M,eAAe,oBAC7Cx/M,KAAK20N,YAAYpQ,GAAU,GAG3BvkN,KAAK20N,YAAYpQ,GAAU,KAIvCpH,EAASj9M,UAAUy0N,YAAc,SAAUpQ,EAAUqQ,GAC7CA,GACArQ,EAASpiM,IAAMoiM,EAASpiM,IAAMniB,KAAK6mN,cAAcgM,UACjDtO,EAASriM,MAAQqiM,EAASriM,MAAQliB,KAAK6mN,cAAcgM,UACrD7yN,KAAKizN,YAAY1O,EAASE,KAAMF,KAGhCA,EAASE,KAAKxB,WAAa,IAC3BsB,EAASE,KAAK72H,OAAS5tF,KAAKw/M,eAAe,wBAC3Cx/M,KAAK4kN,YAAYL,EAASE,OAG7BzkN,KAAKymN,aAAalC,EAASE,MAAOv/M,UAAU4G,IAAI4wM,IAGrDS,EAASj9M,UAAUqzN,sBAAwB,SAAUpmN,EAAGo3M,EAAU34L,GAC9D,IAAIvoB,EAAQrD,KACZ,GAAiC,MAA7BukN,EAASE,KAAKxB,WAAlB,CAGiC,MAA7BsB,EAASE,KAAKxB,YAAmD,MAA7BsB,EAASE,KAAKxB,aAClDsB,EAASE,KAAKxB,WAAa,IAC3BsB,EAASE,KAAK72H,OAAS5tF,KAAKw/M,eAAe,eAE/Cx/M,KAAK8zN,eAAevP,GACpB,IAAIsB,EAAY7lN,KAAKymN,aAAalC,EAASE,MAC3C,IAAI,eAAkBoB,GAAtB,CAGA,IAAIyL,EAAezL,EAAU35M,cAAc,IAAMyvM,GAMjD,GALK,eAAkB2V,KACnBA,EAAapsN,UAAU4G,IAAI0wM,GAC3B8U,EAAa3mN,aAAa,QAAS3K,KAAKw/M,eAAe,UACvD8R,EAAapsN,UAAUC,OAAOw2M,KAE7B,eAAkBkK,GAAY,CAC/B,KAAMA,EAAUnjM,iBAAiB,IAAMm5L,GAAkBl7M,OAAS,GAAI,CAClE,IAAI4nN,EAAgB1C,EAAU35M,cAAc,IAAM8uM,GAC9C,eAAkBh7M,KAAK42C,YACvB2xK,EAAcrjN,UAAU4G,IAAIkwM,GAC5BuM,EAAcrjN,UAAUC,OAAO+2M,GAC/Bl8M,KAAKiwN,kBAAkBpK,GACvB7lN,KAAK6wN,yBAAyBhL,EAAW7J,IAE7C,IAAI6Y,EAAYhP,EAAU35M,cAAc,IAAMqvM,GAAesK,EAAU35M,cAAc,IAAMqvM,GACvFsK,EAAU35M,cAAc,IAAMsvM,GAC7B,eAAkBqZ,KACnBA,EAAU3vN,UAAU4G,IAAI4vM,GACxBmZ,EAAUlqN,aAAa,QAAS3K,KAAKw/M,eAAe,UACpDqV,EAAU3vN,UAAUC,OAAOo2M,IAGnC,IAAK9/L,MAAMtS,KAAKC,MAAO+D,EAAEojN,OAASpjN,EAAEq+L,MAAS,OAAS,eAAkBxrM,KAAK42C,WAA0C,MAA7B2tK,EAASE,KAAKxB,WAAoB,CACxH,IAAI6R,OAAc,EACdC,EAAc5rN,KAAK2kC,KAAKy2K,EAASE,KAAKpmI,KAAOr+E,KAAK6mN,cAAcgM,WAAa,EAC7E7yN,KAAK6mN,cAAcgM,WAAakC,IAChCD,EAAc3rN,KAAKC,MAAMm7M,EAASwO,WAAagC,EAAc,KAC7D/0N,KAAKwwN,oBAAoB3K,EAAWiP,EAAYljN,WAAa,MAGzC,IAAxB2yM,EAASwO,YACT/yN,KAAKogN,0BAGb,GAAI,eAAkByF,EAAU35M,cAAc,IAAMswM,KAAkB,eAAkBx8M,KAAK42C,WACtF,eAAkBivK,EAAU35M,cAAc,IAAMsvM,IAAe,CAClEx7M,KAAKqxN,YAAcrxN,KAAKuE,cAAc,OAAQ,CAAEC,UAAW,2BAA4BwK,MAAO,CAAE,SAAYhP,KAAK49M,eACxF,SAArB59M,KAAK2hN,aACL3hN,KAAKqxN,YAAYnsN,UAAU4G,IAAI,UAEnC,IAAIkpN,EAAYnP,EAAU35M,cAAc,IAAMwvM,GAC9CsZ,EAAUrzM,cAAc6D,aAAaxlB,KAAKqxN,YAAa2D,GACvDh1N,KAAKqxN,YAAY1mN,aAAa,QAAS3K,KAAKw/M,eAAe,UAC3Dx/M,KAAKqxN,YAAYx4K,iBAAiB,SAAS,SAAU1rC,GACjD9J,EAAMqxN,qBAAqBvnN,MAC5B,OAWXgwM,EAASj9M,UAAUkuN,YAAc,SAAU6G,GACvC,IAAIj0N,GAAK,EACT,IAAKi0N,EACD,MAAO,SAEX,GACIA,GAAgB,KAChBj0N,UACKi0N,EAAQ,IAKjB,OAJIj0N,GAAK,IACLi0N,GAAgB,KAChBj0N,EAAI,GAEDmI,KAAKkQ,IAAI47M,EAAO,GAAGjmG,QAAQ,GAAK,IAAM,CAAC,KAAM,MAAMhuH,IAS9Dm8M,EAASj9M,UAAUypN,aAAe,SAAUrL,GACxCA,EAAYA,GAAwBt+M,KAAK0pN,cAGzC,IAFA,IAAIjH,EAAQnE,EACRuQ,EAAY,GACP7tN,EAAI,EAAGA,EAAIyhN,EAAM9hN,OAAQK,IAC9B6tN,EAAUxiN,KAAKo2M,EAAMzhN,GAAGgP,MAI5B,IAFA,IAAIklN,EAAkBrG,EAAUpqK,OAC5B0wK,EAAkB,GACbtnN,EAAK,EAAGunN,EAAoBF,EAAiBrnN,EAAKunN,EAAkBz0N,OAAQkN,IACjF,KAAIwnN,EAASD,EAAkBvnN,GAC/B,IAAS7M,EAAI,EAAGA,EAAIyhN,EAAM9hN,OAAQK,IAC1Bq0N,IAAW5S,EAAMzhN,GAAGgP,MACpBmlN,EAAgB9oN,KAAKo2M,EAAMzhN,IAIvC,OAAOm0N,GASXhY,EAASj9M,UAAUsS,QAAU,WACzBxS,KAAKoD,QAAQqV,MAAQ,KACrBzY,KAAKqI,gBACLrI,KAAKm6K,WACLn6K,KAAKwzC,eACLxzC,KAAKg/M,mBACDh/M,KAAKq9M,UACLr9M,KAAKoD,QAAQwH,gBAAgB,YAE5B5K,KAAKqY,SACNrY,KAAKoD,QAAQwH,gBAAgB,YAEjC5K,KAAKoD,QAAQwH,gBAAgB,UAC7B5K,KAAK6vN,uBAEL,IADA,IAAIpoM,EAAa,CAAC,aAAc,YAAa,kBAAmB,YACvD5Z,EAAK,EAAGynN,EAAe7tM,EAAY5Z,EAAKynN,EAAa30N,OAAQkN,IAAM,CACxE,IAAItN,EAAM+0N,EAAaznN,GACvB7N,KAAKoD,QAAQwH,gBAAgBrK,GAE5B,eAAkBP,KAAKy/M,iBACxBz/M,KAAKy/M,cAAc99L,cAAcjd,YAAY1E,KAAKoD,SAClD,eAAOpD,KAAKy/M,gBAEhBz/M,KAAKy/M,cAAgB,KACrBz/M,KAAKy/M,cAAgB,KACrBz/M,KAAKu/M,aAAe,KACpBv/M,KAAKuiN,gBAAkB,KACvBviN,KAAKujN,gBAAkB,KACvBvjN,KAAKsjN,SAAW,KAChBtjN,KAAK+mB,eAAiB,KACtB/mB,KAAKme,YAAc,KACnBne,KAAK8/M,aAAe,KACpBj9M,EAAO3C,UAAUsS,QAAQlP,KAAKtD,OAWlCm9M,EAASj9M,UAAU4+M,OAAS,SAAU2D,EAAO72L,GACzC,IAAIvoB,EAAQrD,KAEZ,GADAyiN,EAAQA,GAAgBziN,KAAKs+M,UACzBt+M,KAAKojN,mBAAqBpjN,KAAKm+M,wBAA0BvyL,GACzD5rB,KAAKikN,eAAexB,OAEnB,CACD,IAAI8S,EAAgBv1N,KAAKmmN,gBAAgB1D,GACrCn8L,EAAY,CACZwhM,eAAgB,GAChBX,eAAgB,KAChB14M,QAAQ,GAEZzO,KAAKiI,QAAQ,eAAgBqe,GAAW,SAAUA,GACzCA,EAAU7X,QACXpL,EAAMmyN,YAAYD,EAAe3pM,QAKjDuxL,EAASj9M,UAAUimN,gBAAkB,SAAU1D,GAC3C,IAAI+S,EAAc,GAOlB,OANI/S,aAAiB7iN,MACjB41N,EAAc/S,EAGd+S,EAAYnpN,KAAKo2M,GAEd+S,GAGXrY,EAASj9M,UAAUu1N,qBAAuB,SAAU7C,EAAW7uN,EAAU2xN,GACrE,IAAIryN,EAAQrD,KACZ,OAAO,IAAIqxB,SAAQ,SAAUlB,EAAS+B,GAClC,IAAIuyL,EAAOphN,EAAM46M,YAAY2U,GAAW/P,QACxC,IACI,IAAI8S,EAAS,IAAI7L,WACjB6L,EAAO3L,OAAS,SAAWjkM,GACvB,OAAO,WACH,IACI,IAAI6vM,EAAW7vM,EAAKiL,OAChBnF,EAAO+pM,EAAWA,EAAS3xN,MAAM,YAAY,GAAK,KACtDksB,EAAQtE,GAEZ,MAAO1e,GACH+kB,EAAO/kB,KARH,CAWbwoN,GACHA,EAAO5L,cAActF,EAAK/2M,MAAM3J,EAAUA,EAAW2xN,IAEzD,MAAOvoN,GACH+kB,EAAO/kB,QAMnBgwM,EAASj9M,UAAU21N,gBAAkB,SAAUvoM,GAE3C,IAAIm1L,EAAQziN,KAAKs+M,UACjB,IAAKmE,GAA0B,IAAjBA,EAAM9hN,OAChB,OAAQ,EAEZ,IAAIqwB,EAASyxL,EAAM9hN,OACnB,OAAOqwB,GAIXmsL,EAASj9M,UAAU41N,YAAc,SAAUrpN,EAAO6gB,GAE9C,IAAIm1L,EAAQziN,KAAKs+M,UACjB,IAAKmE,GAA0B,IAAjBA,EAAM9hN,OAChB,OAAQ,EAEZ,IAAI8jN,EAAOhC,EAAMh2M,GACbspN,EAAY/1N,KAAKk+M,aAErB,OADAl+M,KAAKi+M,YAAY8X,GAAatR,EACvBsR,GAIX5Y,EAASj9M,UAAU81N,YAAc,SAAUvpN,EAAO6gB,GAE9C,IAAIm1L,EAAQziN,KAAKs+M,UACjB,IAAKmE,GAA0B,IAAjBA,EAAM9hN,OAChB,OAAO,KAEX,IAAI8jN,EAAOhC,EAAMh2M,GACjB,OAAKg4M,EAGEzkN,KAAKs+M,UAAU7xM,GAFX,MAIf0wM,EAASj9M,UAAUs1N,YAAc,SAAU/S,EAAO72L,GAC9C,IAAImyL,EAAgB,GACpB,GAAmC,KAA/B/9M,KAAK6mN,cAAc8E,UAAkB,eAAkB3rN,KAAK6mN,cAAc8E,SAA9E,CAGA,IAAK//L,GAAU,eAAkBA,GAC7B,GAAK5rB,KAAKq9M,SAMNU,EAAgB/9M,KAAK8vN,eAAerN,OANpB,CAChB,IAAIgC,EAAO,GACXA,EAAKp4M,KAAKo2M,EAAM,IAChB1E,EAAgB/9M,KAAK8vN,eAAerL,QAOxC1G,EAAgB0E,EAEpB,IAAK,IAAIzhN,EAAI,EAAGA,EAAI+8M,EAAcp9M,OAAQK,IACtChB,KAAKi2N,mBAAmBlY,EAAe/8M,EAAG4qB,KAGlDuxL,EAASj9M,UAAU+1N,mBAAqB,SAAUlY,EAAe/8M,EAAG4qB,GAChE,IAAIvoB,EAAQrD,KAERk2N,EAAel2N,KAAK6zN,mBACpBjN,EAAO,IAAI,OAAK5mN,KAAK6mN,cAAc8E,QAAS,QAAQ,EAAM,MAC9D/E,EAAKG,WAAY,EAEjB,IAAIzgM,EAAY,CACZs8L,SAAU7E,EAAc/8M,GACxB8mN,eAAgB,GAChBr5M,QAAQ,GAERu4M,EAAW,IAAIC,SAWnB,GAVAL,EAAKM,WAAa,SAAU/5M,GACxBmZ,EAAU6gM,eAAiBP,EAAKQ,YAChC/jN,EAAM4E,QAAQ,YAAaqe,GAAW,SAAUA,GAExCA,EAAU7X,QACVpL,EAAMswN,kBAAkBxmN,EAAGmZ,EAAWy3L,EAAc/8M,IAExDqC,EAAMwkN,eAAeb,EAAU1gM,EAAUwhM,oBAGb,MAAhC/J,EAAc/8M,GAAGiiN,WAAoB,CACrC,IAAIkT,EAASn2N,KAAKoD,QAAQsH,aAAa,QACvCs8M,EAASY,OAAOuO,EAAQpY,EAAc/8M,GAAG6hN,QAAS9E,EAAc/8M,GAAGgP,MAC/DkmN,GAAgBnY,EAAc/8M,GAAGq9E,KAAOr+E,KAAK6mN,cAAcgM,UAC3D7yN,KAAK4kN,YAAY7G,EAAc/8M,GAAI4qB,EAAQ5qB,IAG3C4lN,EAAKU,OAAS,SAAUn6M,GACpB,OAAImZ,EAAU7X,QAIVpL,EAAMmuN,eAAerkN,EAAG4wM,EAAc/8M,GAAI4qB,GAHnC,IAOfg7L,EAAK0M,iBAAmB,SAAUnmN,GAC9B,OAAImZ,EAAU7X,QAIVpL,EAAMqtN,iBAAiBvjN,EAAG4wM,EAAc/8M,GAAI4qB,EAAQg7L,GAH7C,IAQfA,EAAKY,QAAU,SAAUr6M,GAErB,OADA9J,EAAMquN,aAAavkN,EAAG4wM,EAAc/8M,IAC7B,IAEX4lN,EAAKc,KAAKV,MAItB7J,EAASj9M,UAAUk2N,YAAc,SAAUC,GAKvC,IAJA,IAAIxQ,EAAY7lN,KAAKq+M,SAASgY,GAC1BvQ,EAAW9lN,KAAK+lN,eAChBC,GAAgBH,EAAUn7M,aAAa,oBACvCo6E,EAAa,EACR9jF,EAAI,EAAGA,EAAIq1N,EAASr1N,IACzB8jF,IAAgB9kF,KAAKq+M,SAASr9M,GAAG0J,aAAa,oBAGlD,IADA,IAAImjH,EAAY/oC,EAAakhI,EAAgB,EACpC1uL,EAAIu2F,EAAUv2F,GAAKwtD,EAAYxtD,IACpCwuL,EAASp5M,OAAO4qB,EAAG,IAe3B6lL,EAASj9M,UAAUiF,OAAS,SAAUy9M,EAAU4D,EAAgBG,EAAgBgB,EAAa5hM,GACzF,IAAI1iB,EAAQrD,KACR,eAAkB2nN,KAClBA,GAAc,GAElB,IAAIrhM,EAAY,CACZ5X,MAAOqX,EACPtX,QAAQ,EACR6vM,UAAW,GACXwJ,eAAgB,GAChBH,YAAaA,EACbR,eAAgB,MAEhBmP,EAAkB,CAClB7nN,QAAQ,EACRq5M,eAAgB,GAChBX,eAAgB,MAEpBnnN,KAAKiI,QAAQ,eAAgBquN,GAAiB,SAAUA,GACpD,IAAKA,EAAgB7nN,OACjB,GAAIpL,EAAM6iN,eACN5/L,EAAUg4L,UAAYsE,EACtBv/M,EAAM4E,QAAQ,WAAYqe,GAAW,SAAUA,GAC3C,IAAKA,EAAU7X,OAIX,IAHA,IAAI8nN,EAAgBlzN,EAAM8iN,gBAAgBvD,GACtC4T,GAAc,EACdH,OAAU,EACLxoN,EAAK,EAAG4oN,EAAkBF,EAAe1oN,EAAK4oN,EAAgB91N,OAAQkN,IAAM,CACjF,IAAIge,EAAO4qM,EAAgB5oN,GAI3B,GAHK2oN,IACDH,EAAUhzN,EAAMg7M,SAASr6M,QAAQ6nB,EAAK0gD,OAEtC8pJ,GAAW,EAAG,CACd,IAAIr+M,EAAgB,eAAkB6T,EAAKonB,OAAsB,KAAbpnB,EAAKonB,MACrDj7B,GACA,eAAOA,GAEX3U,EAAM+yN,YAAYC,GAClB,eAAOhzN,EAAMg7M,SAASgY,IACtBhzN,EAAMg7M,SAAS3xM,OAAO2pN,EAAS,GAC/BG,GAAc,EACdH,GAAW,YAM1B,GAAIhzN,EAAMm6M,SAAW,eAAkBn6M,EAAMwjN,cAAcC,YAAgD,KAAlCzjN,EAAMwjN,cAAcC,WAC9FxgM,EAAUg4L,UAAYj7M,EAAM0iN,eAC5B1iN,EAAM4E,QAAQ,WAAYqe,GAAW,SAAUA,GACtCA,EAAU7X,QACXpL,EAAM82K,kBAIb,CACD,IAAI0qC,EAAc,GAClBjC,EAAY,eAAkBA,GAAuBv/M,EAAMi7M,UAAjBsE,EACtCA,aAAoBhjN,MACpBilN,EAAcjC,EAGdiC,EAAYx4M,KAAKu2M,GAErBt8L,EAAUg4L,UAAYuG,EAyBtB,IAxBA,IAAIiC,EAAYzjN,EAAMwjN,cAAcC,UAChC4P,EAA0B,KAAd5P,IAAoB,eAAkBA,GAClDlrF,EAAU,SAAU6mF,GACpB,IAAIkU,EAAoBtzN,EAAMi6M,kBAAkBt5M,QAAQy+M,IAC9B,MAArBA,EAAMQ,YAA2C,MAArBR,EAAMQ,YAA4C,MAArBR,EAAMQ,aACzC,IAAvB0T,IAA8BD,EAC9BrzN,EAAMqjN,mBAAmBjE,EAAOn8L,EAAWqgM,EAAgBH,GAGtDG,EAQDtjN,EAAMkjN,gBAAgB9D,EAAO+D,GAP7BnjN,EAAM4E,QAAQ,WAAYqe,GAAW,SAAUA,GACtCA,EAAU7X,QACXpL,EAAMkjN,gBAAgB9D,EAAO+D,MAQzCzgM,IAASA,EAAKzlB,OAAO4E,UAAUmB,SAASk1M,IACxCl4M,EAAMijN,qBAAoB,IAGzBz4M,EAAK,EAAG+oN,EAAgB/R,EAAah3M,EAAK+oN,EAAcj2N,OAAQkN,IAAM,CAC3E,IAAI40M,EAAQmU,EAAc/oN,GAC1B+tH,EAAQ6mF,SAY5BtF,EAASj9M,UAAUi6K,SAAW,WAC1B,IAAI92K,EAAQrD,KACZ,GAAI,eAAkBA,KAAK+/M,YAKvB,MAJyB,SAArB//M,KAAK2hN,cACL3hN,KAAKoD,QAAQqV,MAAQ,SAEzBzY,KAAKs+M,UAAY,IAGrB,IAAIh4L,EAAY,CACZ7X,QAAQ,EACR6vM,UAAWt+M,KAAKs+M,WAEpBt+M,KAAKiI,QAAQ,WAAYqe,GAAW,SAAUA,GACrCA,EAAU7X,SACXpL,EAAMq/M,YACNr/M,EAAMy6M,oBAAsB,EAC5Bz6M,EAAM0nC,OAAS,OAW3BoyK,EAASj9M,UAAU6lN,aAAe,SAAUt5M,GACxC,OAAI,eAAkBA,GACXzM,KAAKs+M,UAGLt+M,KAAK4lN,iBAAiBn5M,IAWrC0wM,EAASj9M,UAAUihN,MAAQ,SAAUyB,EAAUh3L,GAC3Cg3L,EAAWA,GAAsB5iN,KAAKs+M,UACtC,IAAIuY,EAAgB72N,KAAKmmN,gBAAgBvD,GACzC5iN,KAAK82N,eAAeD,EAAejrM,IAEvCuxL,EAASj9M,UAAU42N,eAAiB,SAAUlU,EAAUh3L,GAEpD,IADA,IAAI62L,EAAQziN,KAAK+2N,SAASnU,GACjB5hN,EAAI,EAAGA,EAAIyhN,EAAM9hN,OAAQK,IACF,MAAxByhN,EAAMzhN,GAAGiiN,YACTjjN,KAAKkhN,YAAYlhN,KAAKwkN,mBAAmB/B,EAAMzhN,GAAI,MAAO,KAAM4qB,IAI5EuxL,EAASj9M,UAAU62N,SAAW,SAAUnU,GACpC,IAAIH,EAAQ,GAOZ,OANK,eAAkBG,IAAeA,aAAoBhjN,MAItD6iN,EAAQG,EAHRH,EAAMp2M,KAAKu2M,GAKRH,GASXtF,EAASj9M,UAAUkhN,OAAS,SAAUwB,EAAUh3L,GAC5Cg3L,EAAWA,GAAsB5iN,KAAKs+M,UACtC,IAAIuY,EAAgB72N,KAAKmmN,gBAAgBvD,GACzC5iN,KAAKg3N,YAAYH,EAAejrM,IAEpCuxL,EAASj9M,UAAU82N,YAAc,SAAUpU,EAAUh3L,GAEjD,IADA,IAAI62L,EAAQziN,KAAK+2N,SAASnU,GACjB5hN,EAAI,EAAGA,EAAIyhN,EAAM9hN,OAAQK,IACF,MAAxByhN,EAAMzhN,GAAGiiN,YACTjjN,KAAK2kN,aAAa3kN,KAAKwkN,mBAAmB/B,EAAMzhN,GAAI,MAAO,KAAM4qB,IAY7EuxL,EAASj9M,UAAUmhN,MAAQ,SAAUuB,EAAUgS,EAAmBhpM,GAC9Dg3L,EAAWA,GAAsB5iN,KAAKs+M,UACtC,IAAIuY,EAAgB72N,KAAKmmN,gBAAgBvD,GACrC5iN,KAAKojN,kBAAoBpjN,KAAKm+M,yBAC9Bn+M,KAAKm+M,wBAAyB,GAElCn+M,KAAKi3N,iBAAiBJ,EAAejC,EAAmBhpM,IAE5DuxL,EAASj9M,UAAU+2N,iBAAmB,SAAUrU,EAAUgS,EAAmBhpM,GAEzE,IADA,IAAI62L,EAAQziN,KAAK+2N,SAASnU,GACjB5hN,EAAI,EAAGA,EAAIyhN,EAAM9hN,OAAQK,IAC9B,GAA4B,MAAxByhN,EAAMzhN,GAAGiiN,YAA8C,MAAxBR,EAAMzhN,GAAGiiN,WACxC,GAAIjjN,KAAK6mN,cAAcgM,UAAY,GAAK7yN,KAAKwkN,mBAAmB/B,EAAMzhN,GAAI,MACtEhB,KAAK20N,YAAY30N,KAAKwkN,mBAAmB/B,EAAMzhN,GAAI,MAAO4zN,OAEzD,CACD,IAAI/O,OAAY,EACXj6L,IACDi6L,EAAY7lN,KAAKq+M,SAASr+M,KAAKs+M,UAAUt6M,QAAQy+M,EAAMzhN,MAE3DhB,KAAKuxN,mBAAmB,KAAM9O,EAAMzhN,GAAI6kN,EAAWj6L,KAYnEuxL,EAASj9M,UAAUuO,OAAS,SAAUm0M,GAClCA,EAAWA,GAAsB5iN,KAAKs+M,UACtC,IAAI4Y,EAAiBl3N,KAAKmmN,gBAAgBvD,GAC1C5iN,KAAKm3N,aAAaD,IAEtB/Z,EAASj9M,UAAUi3N,aAAe,SAAUvU,GACxC,IAAIH,EAAQziN,KAAK+2N,SAASnU,GAC1B,GAAI5iN,KAAK6mN,cAAcgM,UAAY,GAC/B,IAAK,IAAI7xN,EAAI,EAAGA,EAAIyhN,EAAM9hN,OAAQK,IAC9B,GAA4B,MAAxByhN,EAAMzhN,GAAGiiN,WAAoB,CAC7B,IAAIsB,EAAWvkN,KAAKwkN,mBAAmB/B,EAAMzhN,GAAI,MACjDujN,EAASE,KAAKxB,WAAa,IAC3BsB,EAASE,KAAK72H,OAAS5tF,KAAKw/M,eAAe,oBAC3Cx/M,KAAK8zN,eAAevP,GACpBvkN,KAAKo3N,sBAAsB3U,EAAMzhN,UAKzC,IAASA,EAAI,EAAGA,EAAIyhN,EAAM9hN,OAAQK,IACF,MAAxByhN,EAAMzhN,GAAGiiN,aACTR,EAAMzhN,GAAGiiN,WAAa,IACtBR,EAAMzhN,GAAG4sF,OAAS5tF,KAAKw/M,eAAe,oBACtCx/M,KAAKo3N,sBAAsB3U,EAAMzhN,MAKjDm8M,EAASj9M,UAAUk3N,sBAAwB,SAAU3U,GACjD,IAAIoD,EAAY7lN,KAAKymN,aAAahE,GAClC,IAAK,eAAkBoD,IAAc,eAAkB7lN,KAAK42C,UAAW,CACnE,IAAIwvK,EAAgBP,EAAU35M,cAAc,IAAMwvM,GAClD,eAAc,CAAEp7M,OAAQ8lN,EAAe9gN,MAAO,SAC9C,eAAY8gN,KAGpBhmN,EAAW,CACP,eAAQ,CAAEurN,QAAS,GAAI7E,UAAW,IAAM,IACzC3J,EAASj9M,UAAW,qBAAiB,GACxCE,EAAW,CACP,gBAAS,IACV+8M,EAASj9M,UAAW,wBAAoB,GAC3CE,EAAW,CACP,eAAS,KACV+8M,EAASj9M,UAAW,sBAAkB,GACzCE,EAAW,CACP,eAAS,KACV+8M,EAASj9M,UAAW,gBAAY,GACnCE,EAAW,CACP,gBAAS,IACV+8M,EAASj9M,UAAW,eAAW,GAClCE,EAAW,CACP,eAAS,OACV+8M,EAASj9M,UAAW,gBAAY,GACnCE,EAAW,CACP,gBAAS,IACV+8M,EAASj9M,UAAW,gBAAY,GACnCE,EAAW,CACP,gBAAS,IACV+8M,EAASj9M,UAAW,kBAAc,GACrCE,EAAW,CACP,gBAAS,IACV+8M,EAASj9M,UAAW,2BAAuB,GAC9CE,EAAW,CACP,eAAQ,GAAI,IACb+8M,EAASj9M,UAAW,eAAW,GAClCE,EAAW,CACP,eAAS,KACV+8M,EAASj9M,UAAW,yBAAqB,GAC5CE,EAAW,CACP,eAAS,IACV+8M,EAASj9M,UAAW,mBAAe,GACtCE,EAAW,CACP,eAAS,MACV+8M,EAASj9M,UAAW,mBAAe,GACtCE,EAAW,CACP,eAAS,OACV+8M,EAASj9M,UAAW,gBAAY,GACnCE,EAAW,CACP,eAAW,CAAC,IAAK,IAClB+8M,EAASj9M,UAAW,aAAS,GAChCE,EAAW,CACP,gBAAS,IACV+8M,EAASj9M,UAAW,oBAAgB,GACvCE,EAAW,CACP,gBAAS,IACV+8M,EAASj9M,UAAW,uBAAmB,GAC1CE,EAAW,CACP,eAAS,YACV+8M,EAASj9M,UAAW,kBAAc,GACrCE,EAAW,CACP,kBACD+8M,EAASj9M,UAAW,eAAW,GAClCE,EAAW,CACP,kBACD+8M,EAASj9M,UAAW,sBAAkB,GACzCE,EAAW,CACP,kBACD+8M,EAASj9M,UAAW,iBAAa,GACpCE,EAAW,CACP,kBACD+8M,EAASj9M,UAAW,oBAAgB,GACvCE,EAAW,CACP,kBACD+8M,EAASj9M,UAAW,yBAAqB,GAC5CE,EAAW,CACP,kBACD+8M,EAASj9M,UAAW,gBAAY,GACnCE,EAAW,CACP,kBACD+8M,EAASj9M,UAAW,iBAAa,GACpCE,EAAW,CACP,kBACD+8M,EAASj9M,UAAW,eAAW,GAClCE,EAAW,CACP,kBACD+8M,EAASj9M,UAAW,eAAW,GAClCE,EAAW,CACP,kBACD+8M,EAASj9M,UAAW,gBAAY,GACnCE,EAAW,CACP,kBACD+8M,EAASj9M,UAAW,oBAAgB,GACvCE,EAAW,CACP,kBACD+8M,EAASj9M,UAAW,gBAAY,GACnCE,EAAW,CACP,kBACD+8M,EAASj9M,UAAW,gBAAY,GACnCE,EAAW,CACP,kBACD+8M,EAASj9M,UAAW,cAAU,GACjCE,EAAW,CACP,kBACD+8M,EAASj9M,UAAW,oBAAgB,GACvCE,EAAW,CACP,kBACD+8M,EAASj9M,UAAW,oBAAgB,GACvCE,EAAW,CACP,kBACD+8M,EAASj9M,UAAW,sBAAkB,GACzCE,EAAW,CACP,kBACD+8M,EAASj9M,UAAW,iBAAa,GACpCE,EAAW,CACP,kBACD+8M,EAASj9M,UAAW,eAAW,GAClCE,EAAW,CACP,kBACD+8M,EAASj9M,UAAW,gBAAY,GACnCi9M,EAAW/8M,EAAW,CAClB,QACD+8M,GACIA,EA10GkB,CA20G3B,QCh9GSka,EAAiB,eAAmB,CAC3C9zK,OAAQ,CAAE33B,OAAQ,CAAEmB,QAAS,OAC7BpZ,OAAQ,SAAUpP,GACd,IAAK,OAAW,CACZ,IAAIqoB,EAAK,OAAiBroB,EAAL,OACjBsoB,EAAQ,KAIZ,OAHK,eAAkB7sB,KAAK8sB,OAAOC,WAC/BF,EAAS,OAAoC7sB,KAAK8sB,OAAOC,QAApC/sB,KAAK8sB,OAAOC,WAE9BH,EAAE,MAAO,CAAE40B,MAAO,eAAiB30B,KAIlDF,QAAS,YACA,QAAa3sB,KAAK4rB,QACnB5rB,KAAK4rB,UAGboB,QAAS,CACLw2B,OAAQ,WACJ,MAAO,cAIR8zK,EAAc,CACrBtnN,KAAM,UACNwe,QAAS,SAAUC,GACfA,EAAIC,UAAU4oM,EAAYtnN,KAAMqnN,KAe7BE,GAAyB,eAAmB,CACnD5jN,OAAQ,aAGRqZ,QAAS,CACLw2B,OAAQ,WACJ,MAAO,sBAIRg0K,GAAsB,CAC7BxnN,KAAM,kBACNwe,QAAS,SAAUC,GACfA,EAAIC,UAAU8oM,GAAoBxnN,KAAMunN,MCrDrCv8M,GAAa,CAAC,eAAgB,UAAW,oBAAqB,gBAAiB,aAAc,UAAW,WAAY,kBAAmB,WAAY,aAAc,sBAAuB,oBAAqB,YAAa,UAAW,QAAS,iBAAkB,SAAU,cAAe,cAAe,WAAY,mBAAoB,eAAgB,WAAY,iBAAkB,eAAgB,eAAgB,YAAa,SAAU,eAAgB,eAAgB,iBAAkB,WAAY,UAAW,UAAW,oBAAqB,UAAW,WAAY,WAAY,YAAa,WAAY,WAAY,UAAW,aACzmBiQ,GAAa,GACbC,GAAW,eAAS,CAAEC,MAAOnQ,KAC7BmQ,GAAQD,GAAS,GAAIE,GAAQF,GAAS,GAAIG,GAAY5rB,OAAO2V,KAAKgW,IAC7EC,GAAUhf,KAAK,eAAgB,qBAC/B,IAAK,IAAI,GAAK,EAAGif,GAAeL,GAAY,GAAKK,GAAa3qB,OAAQ,KAAM,CACxE,IAAI4qB,GAAUD,GAAa,IAC3BD,GAAUhf,KAAK,UAAYkf,IAQxB,IAAIksM,GAAoB,eAAmB,CAC9CznN,KAAM,oBACNyb,OAAQ,CAAC,QACTN,MAAOA,GACPC,MAAOA,GACPM,MAAOL,GACPM,QAAS,WAAc,MAAO,CAAEC,OAAQ5rB,KAAK4rB,SAC7CC,KAAM,WACF,MAAO,CACHC,aAAc,IAAI,EAAS,IAC3BC,SAAU/Q,GACVgR,OAAQf,GACRgB,mBAAmB,EACnBC,oBAAoB,EACpBC,UAAW,CAAE,UAAW,mBACxBC,cAAe,GACfC,QAAS,OACTC,mBAAoB,KAG5BC,QAAS,WACLvsB,KAAKysB,iBACLzsB,KAAK8rB,aAAaY,eAAiB1sB,KAAK8rB,aAAa7gB,cACrDjL,KAAK8rB,aAAa7gB,cAAgBjL,KAAKiL,cACvCjL,KAAK8rB,aAAazjB,cAAgBrI,KAAKqI,cACvCrI,KAAK2sB,QAAU3sB,KAAK2sB,SAExBhZ,OAAQ,SAAUpP,GACd,IAAIqoB,EAAK,OAAiBroB,EAAL,OACjBsoB,EAAQ,KAIZ,OAHK,eAAkB7sB,KAAK8sB,OAAOC,WAC/BF,EAAS,OAAoC7sB,KAAK8sB,OAAOC,QAApC/sB,KAAK8sB,OAAOC,WAE9BH,EAAE,QAASC,IAEtBG,QAAS,CACL3kB,cAAe,SAAU4kB,GAIrB,GAHKA,IACDA,EAAgBxtB,OAAO2V,KAAKpV,KAAKssB,oBAAsB,KAEvDW,EAActsB,QAAUX,KAAKssB,mBAC7B,IAAK,IAAIze,EAAK,EAAGqf,EAAkBD,EAAepf,EAAKqf,EAAgBvsB,OAAQkN,IAAM,CACjF,IAAIsf,EAAWD,EAAgBrf,GAC3Buf,EAAoBptB,KAAKssB,mBAAmBa,GAChD,GAAIC,GAAqBA,EAAkBzsB,OAAQ,CAC/C,IAAK,IAAIkD,EAAK,EAAGwpB,EAAsBD,EAAmBvpB,EAAKwpB,EAAoB1sB,OAAQkD,IAAM,CAC7F,IAAIypB,EAAMD,EAAoBxpB,GAC1B2O,EAAU,eAAS,mBAAoB8a,GACvC9a,GACA8a,EAAIC,QAAQC,WAEZF,EAAIxiB,YACJwiB,EAAIxiB,UAAY,WAGjB9K,KAAKssB,mBAAmBa,MAK/CliB,cAAe,SAAUoK,EAAMoY,GAC3B,IAAIpqB,EAAQrD,KACRA,KAAKqsB,SACLrsB,KAAKgsB,OAAUhsB,KAAKgsB,OAAyChsB,KAAKgsB,OAArChsB,KAAK8rB,aAAa4B,aAE/C1tB,KAAK8rB,cAAgB9rB,KAAK8rB,aAAaY,gBACvC1sB,KAAK8rB,aAAaY,eAAerX,EAAMoY,GAEvCpY,GAAQrV,KAAKgsB,QAAUhsB,KAAKgsB,OAAOrrB,QACnClB,OAAO2V,KAAKC,GAAMxO,KAAI,SAAUtG,GAC5B8C,EAAM2oB,OAAOnlB,KAAI,SAAUma,GAClBzgB,IAAQygB,GAAY,cAAcvD,KAAKld,KACpC8C,EAAMgpB,OACNhpB,EAAMyoB,aAAa6B,YAAYC,MAAM,UAAYrtB,EAAK8U,EAAK9U,KAG3D8C,EAAMuqB,MAAM,UAAYrtB,EAAK8U,EAAK9U,IAClC8C,EAAMuqB,MAAM,eAAgBvY,EAAK9U,aAOzDqrB,OAAQ,WACJ5rB,KAAK2sB,WAETyhM,YAAa,SAAU6G,GACnB,OAAOj1N,KAAK8rB,aAAasiM,YAAY6G,IAEzCxmN,OAAQ,SAAUm0M,GACd,OAAO5iN,KAAK8rB,aAAard,OAAOm0M,IAEpCzoC,SAAU,WACN,OAAOn6K,KAAK8rB,aAAaquJ,YAE7B+0C,eAAgB,SAAUtM,GACtB,OAAO5iN,KAAK8rB,aAAaojM,eAAetM,IAE5CmD,aAAc,SAAUt5M,GACpB,OAAOzM,KAAK8rB,aAAai6L,aAAat5M,IAE1C00M,MAAO,SAAUyB,EAAUh3L,GACvB,OAAO5rB,KAAK8rB,aAAaq1L,MAAMyB,EAAUh3L,IAE7CzmB,OAAQ,SAAUy9M,EAAU4D,EAAgBG,EAAgBgB,EAAa5hM,GACrE,OAAO/lB,KAAK8rB,aAAa3mB,OAAOy9M,EAAU4D,EAAgBG,EAAgBgB,EAAa5hM,IAE3Fq7L,OAAQ,SAAUwB,EAAUh3L,GACxB,OAAO5rB,KAAK8rB,aAAas1L,OAAOwB,EAAUh3L,IAE9Cy1L,MAAO,SAAUuB,EAAUgS,EAAmBhpM,GAC1C,OAAO5rB,KAAK8rB,aAAau1L,MAAMuB,EAAUgS,EAAmBhpM,IAEhE+9L,aAAc,SAAUrL,GACpB,OAAOt+M,KAAK8rB,aAAa69L,aAAarL,IAE1C4K,iBAAkB,SAAU37J,EAAM7+C,GAC9B,OAAO1O,KAAK8rB,aAAao9L,iBAAiB37J,EAAM7+C,IAEpDowM,OAAQ,SAAU2D,EAAO72L,GACrB,OAAO5rB,KAAK8rB,aAAagzL,OAAO2D,EAAO72L,OAIxC8rM,GAAiB,CACxB1nN,KAAM,eACNwe,QAAS,SAAUC,GACfA,EAAIC,UAAUgpM,GAAe1nN,KAAMynN,IACnChpM,EAAIC,UAAU8oM,GAAoBxnN,KAAMunN,IACxC9oM,EAAIC,UAAU4oM,EAAYtnN,KAAMqnN,M,kCCrJxC,sFAAIh4N,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxCK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAU5D65I,EAAa,CACbz7G,SAAU,aACVusC,MAAO,YACP5pE,KAAM,cACN88K,KAAM,SACN1oK,MAAO,mBACPtU,IAAK,QACL08K,UAAW,cACXw5C,SAAU,cAeVC,EAAgC,SAAU/0N,GAS1C,SAAS+0N,EAAez0N,EAASC,GAC7B,IAAIC,EAAQR,EAAOS,KAAKtD,KAAMmD,EAASC,IAAYpD,KAEnD,OADAqD,EAAMw0N,gBAAiB,EAChBx0N,EA6wBX,OAxxBAhE,EAAUu4N,EAAgB/0N,GAa1B+0N,EAAe13N,UAAU4T,UAAY,aAQrC8jN,EAAe13N,UAAU6U,eAAiB,WACtC,OAAO/U,KAAKgV,aAAa,KAO7B4iN,EAAe13N,UAAUy5E,OAAS,WAC1B35E,KAAKmiL,UACLniL,KAAK83N,YAEA93N,KAAK+3N,qBAAuB/3N,KAAK63N,gBACtC73N,KAAK8wD,cACL9wD,KAAK83N,aAGL93N,KAAKgzE,cASb4kJ,EAAe13N,UAAUyT,OAAS,WAC9B3T,KAAK2D,aACA3D,KAAKoY,UACNpY,KAAK4T,aAET5T,KAAK6T,kBAUT+jN,EAAe13N,UAAU62D,SAAW,SAAUtN,EAAO33B,GAGjD,IAFA,IAAIg3J,EACA5zF,EAAMl1F,KAAKypD,MAAM9oD,OACZ22B,EAAI,EAAGrU,EAAMjjB,KAAKypD,MAAM9oD,OAAQ22B,EAAIrU,EAAKqU,IAC9C,GAAIxF,IAAS9xB,KAAKypD,MAAMnyB,GAAGxF,KAAM,CAC7BojE,EAAM59D,EACN,MAGR,IAAK,IAAIt2B,EAAIyoD,EAAM9oD,OAAS,EAAGK,GAAK,EAAGA,IAEnC8nL,EAAU,IAAI,OAAK9oL,KAAM,QAASypD,EAAMzoD,IAAI,GAC5ChB,KAAKypD,MAAM/8C,OAAOwoF,EAAK,EAAG4zF,GAEzB9oL,KAAKmiL,WACNniL,KAAK8/K,eAUb83C,EAAe13N,UAAUo3D,YAAc,SAAU7N,EAAOk/H,GAEpD,IADA,IAAIrzK,GAAU,EACLtU,EAAI,EAAGiiB,EAAMwmC,EAAM9oD,OAAQK,EAAIiiB,EAAKjiB,IACzC,IAAK,IAAIs2B,EAAI,EAAGs7D,EAAQ5yF,KAAKypD,MAAM9oD,OAAQ22B,EAAIs7D,EAAOt7D,IAClD,GAAImyB,EAAMzoD,MAAQ2nL,EAAa3oL,KAAKypD,MAAMnyB,GAAGhsB,GAAKtL,KAAKypD,MAAMnyB,GAAGxF,MAAO,CACnE9xB,KAAKypD,MAAM/8C,OAAO4qB,EAAG,GACrBhiB,GAAU,EACV,MAIRA,GAAWtV,KAAKg4N,gBAChBh4N,KAAK8/K,eAGb83C,EAAe13N,UAAU4wD,YAAc,WACnC,IAAIjtD,EACA06C,EAAMv+C,KAAKuE,cAAc,MAAO,CAChCC,UAAWi2I,EAAW1kI,MACtBzK,GAAItL,KAAKoD,QAAQkI,GAAK,WAE1BsC,SAAS6B,KAAK/K,YAAY65C,GAC1Bv+C,KAAKi4N,SAAW,IAAI,OAAM15K,EAAK,CAC3B16B,SAAU7jB,KAAKoD,QACf4gB,UAAW,CAAEze,EAAG,MAAOC,EAAG,QAC1BzB,SAAU,CAAEwB,EAAG,OAAQC,EAAG,UAC1Bse,WAAY,WACZjZ,QAAS7K,KAAKM,OAASN,KAAKk4N,mBAAqB,GACjDzyN,UAAWzF,KAAKyF,YAEpBzF,KAAKi4N,SAAS70N,QAAQuH,aAAa,OAAQ,UAC3C3K,KAAKi4N,SAAS70N,QAAQuH,aAAa,aAAc,iBAC5C,eAAkB3K,KAAKm4N,gBACxBn4N,KAAKm4N,aAAapxN,MAAMC,QAAU,IAEO,UAAzChH,KAAKi4N,SAAS70N,QAAQ2D,MAAMhD,UAC5B/D,KAAKi4N,SAAS1xM,gBAAgBvmB,KAAKoD,SAEvCpD,KAAKi4N,SAAS/lN,OACd,eAAWlS,KAAKoD,SAAUS,EAAK,GAC3BA,EAAG,iBAAmB7D,KAAKypD,MAAM9oD,QAAUX,KAAKM,OAAS,OAAS,QAClEuD,EAAG,iBAAmB,QACtBA,EAAG,QAAU,SACbA,IACA7D,KAAKyK,UACL,eAAS,CAAC8zC,GAAMv+C,KAAKyK,SAASoQ,QAAQ,OAAQ,KAAKtO,OAAOtI,MAAM,MAEpEjE,KAAK63N,gBAAiB,GAE1BD,EAAe13N,UAAUg4N,iBAAmB,WACxC,OAAIl4N,KAAK+3N,oBAAuB/3N,KAAKo4N,iBAAoB,eAAkBp4N,KAAKm4N,cAGhD,kBAAjBn4N,KAAW,OAAiB,gBAAOA,KAAKM,QAAUN,KAAKM,OAF3DN,KAAKm4N,cAIpBP,EAAe13N,UAAU4/K,YAAc,SAAUu4C,GAC7C,IAEI7hI,EACAjpC,EACAsmB,EACAvtD,EALAmjC,EAAQzpD,KAAKypD,MACbg+H,EAAWznL,KAAKs4N,QAAQt4N,KAAKypD,MAAO,WAKpC+zB,EAAKx9E,KAAKg4N,eACVx6I,EACAA,EAAG1yE,UAAY,GAGf0yE,EAAKx9E,KAAKuE,cAAc,KAAM,CAC1ByK,MAAO,CAAE,KAAQ,OAAQ,SAAY,OAG7C,IAAK,IAAIhO,EAAI,EAAGA,EAAIyoD,EAAM9oD,OAAQK,IAAK,CACnCusD,EAAO9D,EAAMzoD,GACb,IAAIssD,EAAWC,EAAKz7B,KACpB+hD,EAAK7zE,KAAKuE,cAAc,KAAM,CAC1BuG,UAAWyiD,EAAKnwB,IAAM,GAAKkwB,EAC3B9oD,UAAW+oD,EAAKa,UAAYqsF,EAAWgkC,KAAO,IAAMhkC,EAAW0jC,UAAY1jC,EAAWgkC,KACtFzvK,MAAOu+C,EAAKa,UAAY,CAAE,KAAQ,YAAa,SAAY,KAAM,aAAc,YAAa,cAAe,QAAW,CAAE,KAAQ,WAAY,SAAY,KAAM,aAAcd,GAC5KhiD,GAAIiiD,EAAKjiD,GAAKiiD,EAAKjiD,GAAK,eAAY,KAAOtL,KAAK8U,gBAAkB,WAElE9U,KAAKgL,oBACL6oE,EAAGzuD,YAAcmoC,EAAKnwB,IAAM,GAAKkwB,EAGjCumB,EAAG/oE,UAAYyiD,EAAKnwB,IAAM,GAAKkwB,EAE/BC,EAAKnwB,MACLy2C,EAAGnvE,YAAY1E,KAAKu4N,aAAahrK,IACjCsmB,EAAG3uE,UAAU4G,IAAI,UAEjByhD,EAAKmL,SACL89B,EAAOx2F,KAAKuE,cAAc,OAAQ,CAAEC,UAAWi2I,EAAW94I,KAAO,IAAM4rD,EAAKmL,UACxEnL,EAAKnwB,IACLy2C,EAAG/+B,WAAW,GAAGpwC,YAAY8xF,GAG7B3iB,EAAGruD,aAAagxE,EAAM3iB,EAAG/+B,WAAW,KAIpC2yI,IAAal6H,EAAKa,WAClBylB,EAAG3uE,UAAU4G,IAAI,gBAGzB,IAAI0sN,EAAiBjrK,EAAKn1C,SACtBm1C,EAAKn1C,UACLy7D,EAAG3uE,UAAU4G,IAAI,cAErBwa,EAAY,CAAEinC,KAAMA,EAAMnqD,QAASywE,GACnC7zE,KAAKiI,QAAQ,mBAAoBqe,GACjC,IAAImyM,EAAgBnyM,EAAUinC,KAAKn1C,SAC/BogN,IAAmBC,IACfnyM,EAAUinC,KAAKn1C,SACfy7D,EAAG3uE,UAAU4G,IAAI,cAGjB+nE,EAAG3uE,UAAUC,OAAO,eAG5Bq4E,EAAG94E,YAAYmvE,GAEfwkJ,GACAr4N,KAAK04N,kBAAkBh0N,YAAY84E,GAEnCiqG,GACA,eAAkBznL,KAAK04N,oBAG/Bd,EAAe13N,UAAUo4N,QAAU,SAAU7uK,EAAO53B,GAChD,IAAK,IAAI7wB,EAAI,EAAGiiB,EAAMwmC,EAAM9oD,OAAQK,EAAIiiB,EAAKjiB,IACzC,GAAIyoD,EAAMzoD,GAAG,GAAK6wB,GACd,OAAO,EAGf,OAAO,GAEX+lM,EAAe13N,UAAUq4N,aAAe,SAAUhrK,GAC9C,IAAID,EAAYttD,KAAwB,oBAAI,OAAmBkL,SAASqiD,EAAKz7B,MAAQy7B,EAAKz7B,KAC1F,OAAO9xB,KAAKuE,cAAc,IAAK,CAAEC,UAAW,yBAA0BsG,UAAWwiD,EAAUt+C,MAAO,CAAE,KAAQu+C,EAAKnwB,QAErHw6L,EAAe13N,UAAUyD,WAAa,WAClC3D,KAAKu2F,OAAS,IAAI,OAAO,CACrB79B,QAAS14D,KAAK04D,QAASO,aAAcj5D,KAAKi5D,aAAcxuD,SAAUzK,KAAKyK,SAAUI,QAAS7K,KAAK6K,QAC/FuN,SAAUpY,KAAKoY,SAAU3S,UAAWzF,KAAKyF,UAAWkuF,kBAAmB3zF,KAAK2zF,oBAEhF3zF,KAAKu2F,OAAOhyF,cAAgBvE,KAAKuE,cACjCvE,KAAKu2F,OAAOlwE,SAASrmB,KAAKoD,SACrBpD,KAAKoD,QAAQkI,KACdtL,KAAKoD,QAAQkI,GAAK,eAAY,KAAOtL,KAAK8U,kBAE9C9U,KAAK24N,kBACL34N,KAAK44N,cAAc,CAAC54N,KAAKoD,UACzBpD,KAAKoD,QAAQuH,aAAa,aAAc3K,KAAKoD,QAAQgiB,YAAcplB,KAAKoD,QAAQgiB,YAAc,kBACzFplB,KAAKM,SAAWN,KAAKo4N,kBAAoBp4N,KAAK+3N,qBAAwB/3N,KAAK+3N,mBAC5E/3N,KAAK8wD,eAGL9wD,KAAK63N,gBAAiB,EAClB73N,KAAKM,SAAWN,KAAKo4N,iBAAmBp4N,KAAK+3N,qBAC7C/3N,KAAKm4N,aAAen4N,KAAKk4N,mBACzBl4N,KAAKm4N,aAAapxN,MAAMC,QAAU,UAI9C4wN,EAAe13N,UAAUk4N,cAAgB,WACrC,IAAKp4N,KAAKoD,QACN,OAAO,EAEX,IAAIkwI,EAAWtzI,KAAKoD,QAAQyvI,gBAC5B,SAAIS,GAAYA,EAASpuI,WAAaouI,EAASpuI,UAAUmB,SAAS,yBAKtEuxN,EAAe13N,UAAUy4N,gBAAkB,WACvC34N,KAAKoD,QAAQsB,YAAY1E,KAAKuE,cAAc,OAAQ,CAChDC,UAAW,8BAAqCxE,KAAKyK,SAASzG,QAAQy2I,EAAWk9E,WAAa,EACxF,SAAW,SAAW,eAGpCC,EAAe13N,UAAU04N,cAAgB,SAAU7rK,GAC/C/sD,KAAK64N,WAAa9rK,GAQtB6qK,EAAe13N,UAAU4U,cAAgB,WACrC,MAAO,gBAEX8iN,EAAe13N,UAAUiiL,QAAU,WAC/B,IAAItlK,GAAM,EAIV,OAHI7c,KAAK63N,iBACLh7M,EAAM7c,KAAK04N,kBAAkBxzN,UAAUmB,SAAS,kBAE7CwW,GAOX+6M,EAAe13N,UAAUsS,QAAU,WAC/B,IAAInP,EAAQrD,KAEZ,GADA6C,EAAO3C,UAAUsS,QAAQlP,KAAKtD,MACD,iBAAzBA,KAAK8U,gBAAoC,CACzC,IAAI0jJ,EACAx4J,KAAKoD,QAAQ8I,cAAc,iBAC3B,eAAOlM,KAAKoD,QAAQ8I,cAAc,iBAElClM,KAAKyK,WACL+tJ,EAAcx4J,KAAKyK,SAASxG,MAAM,MAEtCjE,KAAKu2F,OAAO/jF,UACRgmJ,GACA,gBAAY,CAACx4J,KAAKoD,SAAUo1J,GAEhC,gBAAYx4J,KAAK64N,WAAY,CAAC,aAC9B,IAAIC,EAAW94N,KAAKoD,QAAQsH,aAAa,SAAW,CAAC,gBAAiB,gBAAiB,YAAa,QAC9F,CAAC,gBAAiB,gBAAiB,YAAa,OAAQ,SAC9DouN,EAASplL,SAAQ,SAAUnzC,GACvB8C,EAAMD,QAAQwH,gBAAgBrK,MAElCP,KAAK+4N,oBACL/4N,KAAKg5N,eACLh5N,KAAK63N,gBAAiB,EACjB73N,KAAKoY,UACNpY,KAAKwzC,iBAIjBokL,EAAe13N,UAAU84N,aAAe,WACpC,GAAIh5N,KAAK63N,eAAgB,CAErB,GADA73N,KAAKi4N,SAASzlN,UACVxS,KAAK04N,kBAAmB,CACxB,IAAI/mK,EAAW/jD,SAASgpH,eAAe52H,KAAK04N,kBAAkBptN,IAC1DqmD,IACA,gBAAY,CAACA,GAAW,CAAC,eAAgB,kBACzC,eAAOA,IAGf,OAAaxsD,OAAOnF,KAAK04N,kBAAmB,QAAS14N,KAAKsoC,cAC1D,OAAanjC,OAAOnF,KAAK04N,kBAAmB,UAAW14N,KAAK2gL,iBACxD3gL,KAAK63N,gBAAkB73N,KAAKi4N,WAC5Bj4N,KAAKi4N,SAAS70N,QAAU,KACxBpD,KAAKi4N,cAAW1sN,GAGxBvL,KAAK63N,gBAAiB,GAE1BD,EAAe13N,UAAUw4N,gBAAkB,WACvC,IAAI77M,EAAM,KACV,IAAK7c,KAAKi4N,UAAYj4N,KAAK64N,WAAW,GAAG3zN,UAAUmB,SAAS,eAAgB,CACxE,IAAI4yN,EAAc,eAAaj5N,KAAK64N,WAAW,GAAI,gBAC/CI,IACAj5N,KAAKi4N,SAAWgB,EAAYhB,UAMpC,OAHIj4N,KAAKi4N,WACLp7M,EAAM7c,KAAKi4N,SAAS70N,SAEjByZ,GAEX+6M,EAAe13N,UAAU83N,aAAe,WACpC,IAAIn7M,EAAM,KAIV,OAHI7c,KAAK04N,oBACL77M,EAAM7c,KAAK04N,kBAAkB93M,SAAS,IAEnC/D,GAEX+6M,EAAe13N,UAAU0T,WAAa,WAClC5T,KAAKk5N,yBAA2Bl5N,KAAKm5N,iBAAiBvzN,KAAK5F,MACtDA,KAAK+3N,oBACN,OAAajsN,IAAI8B,SAAU,uBAAwB5N,KAAKk5N,yBAA0Bl5N,MAEtF,OAAa8L,IAAI9L,KAAKoD,QAAS,QAASpD,KAAKsoC,aAActoC,MAC3D,OAAa8L,IAAI9L,KAAKoD,QAAS,UAAWpD,KAAK2gL,gBAAiB3gL,MAChE,OAAa8L,IAAIvF,OAAQ,SAAUvG,KAAK4H,aAAc5H,OAE1D43N,EAAe13N,UAAU0H,aAAe,YAC/B5H,KAAKmiL,WAAaniL,KAAKi4N,UACxBj4N,KAAKi4N,SAAS1xM,gBAAgBvmB,KAAKoD,UAG3Cw0N,EAAe13N,UAAUk5N,gBAAkB,WAClCp5N,KAAKk5N,2BACNl5N,KAAKk5N,yBAA2Bl5N,KAAKm5N,iBAAiBvzN,KAAK5F,OAE/D,IAAImhC,EAAenhC,KAAK04N,kBACpB14N,KAAK+3N,oBACL,OAAajsN,IAAI8B,SAAU,uBAAwB5N,KAAKk5N,yBAA0Bl5N,MAElFmhC,IACA,OAAar1B,IAAIq1B,EAAc,QAASnhC,KAAKsoC,aAActoC,MAC3D,OAAa8L,IAAIq1B,EAAc,UAAWnhC,KAAK2gL,gBAAiB3gL,MAC5DA,KAAKq5N,mBACL,OAAavtN,IAAIq1B,EAAcnhC,KAAKq5N,kBAAmBr5N,KAAKs5N,gBAAiBt5N,OAGrFA,KAAK8vE,SAAW,gBAAa3uC,EAAc,CAAEQ,SAAU,IAAM84G,EAAWgkC,QAE5Em5C,EAAe13N,UAAU64N,kBAAoB,WACzC,IAAI53L,EAAenhC,KAAK04N,kBACpB14N,KAAK+3N,oBACL,OAAa5yN,OAAOyI,SAAU,uBAAwB5N,KAAKk5N,0BAE3D/3L,GAAgBA,EAAaxf,gBAC7B,OAAaxc,OAAOg8B,EAAc,QAASnhC,KAAKsoC,cAChD,OAAanjC,OAAOg8B,EAAc,UAAWnhC,KAAK2gL,iBAC9C3gL,KAAKq5N,mBACL,OAAal0N,OAAOg8B,EAAcnhC,KAAKq5N,kBAAmBr5N,KAAKs5N,kBAGnE,SAAmBt5N,KAAK8vE,UACxB9vE,KAAK8vE,YAUb8nJ,EAAe13N,UAAUygL,gBAAkB,SAAUxzK,GACjD,GAAIA,EAAE7M,SAAWN,KAAKoD,SAA0B,IAAd+J,EAAEqG,UAAmBrG,EAAE8nH,QAAwB,KAAd9nH,EAAEqG,UAAiC,KAAdrG,EAAEqG,QAG1F,OAAQrG,EAAEqG,SACN,KAAK,GACL,KAAK,IACGrG,EAAE8nH,QAAyB,KAAd9nH,EAAEqG,SAAgC,KAAdrG,EAAEqG,QAInCxT,KAAKu9E,iBAAiBpwE,GAHtBnN,KAAK+7I,gBAAgB5uI,GAKzB,MACJ,KAAK,EACL,KAAK,GACL,KAAK,GACL,KAAK,GACDnN,KAAK+7I,gBAAgB5uI,GACrB,QAGZyqN,EAAe13N,UAAUq9E,iBAAmB,SAAUpwE,KAC9CnN,KAAKM,QAAyB,KAAd6M,EAAEqG,SAAgC,KAAdrG,EAAEqG,WAG1CrG,EAAE+F,iBACF,eAAiBlT,KAAKg4N,eAAgB7qN,EAAEqG,WAE5CokN,EAAe13N,UAAU67I,gBAAkB,SAAU5uI,GACjD,IAAInN,KAAKM,QAAyB,KAAd6M,EAAEqG,SAAgC,IAAdrG,EAAEqG,QAG1C,OAAkB,KAAdrG,EAAEqG,SAAkBxT,KAAK64N,WAAW,GAAG3zN,UAAUmB,SAAS,gBAC1DrG,KAAKu5N,cAAcpsN,QACnBnN,KAAK64N,WAAW,GAAG94M,cAGnB5S,EAAE7M,QAAU6M,EAAE7M,OAAOkE,UAAUR,QAAQ,oBAAsB,GAAmB,KAAdmJ,EAAEqG,UAGtD,IAAdrG,EAAEqG,SACFrG,EAAE+F,iBAEY,KAAd/F,EAAEqG,SAAgC,KAAdrG,EAAEqG,SAAgC,IAAdrG,EAAEqG,QACrCxT,KAAKmiL,WACNniL,KAAKgzE,WAAW7lE,EAAGnN,KAAKoD,SAI5BpD,KAAKsoC,aAAan7B,MAG1ByqN,EAAe13N,UAAU6iL,MAAQ,SAAUh2H,GACvC,MAAwB,OAAjBA,EAAKr9C,QAAmBq9C,EAAO,eAAQA,EAAM,OAExD6qK,EAAe13N,UAAUi5N,iBAAmB,SAAUhsN,GAClD,IAAIu+C,EAAOv+C,EAAE7M,QACTN,KAAKi4N,UAAaj4N,KAAKmiL,WAAe,eAAQz2H,EAAM,QAAU1rD,KAAK04N,kBAAkBptN,GAAK,OACvF,eAAQogD,EAAM,QAAU1rD,KAAKoD,QAAQkI,GAAK,OAC7CtL,KAAKgzE,WAAW7lE,IAGxByqN,EAAe13N,UAAUo5N,gBAAkB,SAAUnsN,GACjD,GAAInN,KAAK63N,iBAAmB73N,KAAKmiL,UAAW,CACxC,IAAIq3C,EAAWrsN,EAAE0F,cACjB,GAAI2mN,GAAYA,EAASh1N,UAAUR,QAAQ,WAAa,EAAG,CACvD,IAAI6vE,EAAK7zE,KAAK+iL,MAAMy2C,GACpB,GAAI3lJ,EAAI,CACJ,IAAI6J,EAAQ99E,MAAMM,UAAU8D,QAAQV,KAAKtD,KAAKg4N,eAAep3M,SAAUizD,GACnEtmB,EAAOvtD,KAAKypD,MAAMi0B,GACtB,GAAInwB,EAAM,CACN,IAAIksK,EAAkB,CAAEr2N,QAASywE,EAAItmB,KAAMA,EAAM7+C,MAAOvB,GACxDnN,KAAKiI,QAAQ,SAAUwxN,KAInCz5N,KAAKgzE,WAAW7lE,KAGxByqN,EAAe13N,UAAUooC,aAAe,SAAUn7B,GAC9C,IAAIu+C,EAAOv+C,EAAE7M,OACb,GAAI,eAAQorD,EAAM,QAAU1rD,KAAKoD,QAAQkI,GAAK,OACrCtL,KAAK+3N,oBAAuB/3N,KAAKM,QAA0B,KAAhBN,KAAKM,SAAkBN,KAAKo4N,kBAAoBp4N,KAAK+3N,mBAC7F/3N,KAAK04N,kBAAkBxzN,UAAUmB,SAAS,iBAC1CrG,KAAK83N,UAAU3qN,GAGfnN,KAAKgzE,WAAW7lE,GAGfnN,KAAK63N,eACV73N,KAAKgzE,WAAW7lE,EAAGnN,KAAK64N,WAAW,KAGnC74N,KAAK8wD,cACL9wD,KAAK83N,UAAU3qN,SAInB,GAAI,eAAQu+C,EAAM,QAAU1rD,KAAK04N,kBAAkBptN,GAAK,MAAO,CAC3D,IAAIuoE,EAAK7zE,KAAK+iL,MAAM51K,EAAE7M,QAClBuzE,IACA7zE,KAAKu5N,cAAcpsN,GACnBnN,KAAKgzE,WAAW7lE,EAAGnN,KAAK64N,WAAW,OAKnDjB,EAAe13N,UAAUq5N,cAAgB,SAAUpsN,GAC/C,IAAImZ,EACAo3D,EACAnwB,EACAsmB,EAAK7zE,KAAK+iL,MAAM51K,EAAE7M,QAClBuzE,IACA6J,EAAQ99E,MAAMM,UAAU8D,QAAQV,KAAKtD,KAAKg4N,eAAep3M,SAAUizD,GACnEtmB,EAAOvtD,KAAKypD,MAAMi0B,GACdnwB,IACAjnC,EAAY,CAAEljB,QAASywE,EAAItmB,KAAMA,EAAM7+C,MAAOvB,GAC9CnN,KAAKiI,QAAQ,SAAUqe,MAInCsxM,EAAe13N,UAAU43N,UAAY,SAAU3qN,GAC3C,IAAI9J,EAAQrD,UACF,IAANmN,IAAgBA,EAAI,MACxB,IACIusN,EAAY15N,KAAK04N,kBACrB,GAAK14N,KAAKM,OAIN,GAAIN,KAAK64N,WAAWl4N,OAAS,EAAG,CAC5B,IAAIg5N,EAAc,eAAa35N,KAAK64N,WAAW,GAAI,aAE/Cc,EAAYxxN,SAAWuxN,EAAU5kL,WAAWn0C,OAAS,KAC3C,EAEVg5N,EAAYC,mBAAmB55N,KAAKk4N,mBAAoBl4N,KAAK04N,mBAC7D14N,KAAK0L,6BAKL1L,KAAKmI,SAAWuxN,EAAU5kL,WAAWn0C,OAAS,KACpC,EAEVX,KAAK45N,mBAAmB55N,KAAKk4N,mBAAoBl4N,KAAK04N,mBACtD14N,KAAK0L,6BAnBb1L,KAAK8/K,aAAY,GAuBrB,IAAItiG,EAAKx9E,KAAKg4N,eACdh4N,KAAKo5N,kBACL,IAAIS,EAAiB,CAAEz2N,QAASo6E,EAAI/zB,MAAOzpD,KAAKypD,MAAO/6C,MAAOvB,EAAGsB,QAAQ,GACzEzO,KAAKiI,QAAQ,aAAc4xN,GAAgB,SAAUhqN,GACjD,IAAKA,EAAapB,OAAQ,CACtB,IAAIo0K,EAAOx/K,EAAM20N,eAQjB,GAPA30N,EAAM40N,SAAS/nN,KAAK,KAAM7M,EAAMD,SAChC,eAAS,CAACC,EAAMD,SAAU,YAC1BC,EAAMD,QAAQuH,aAAa,gBAAiB,QAC5CtH,EAAMD,QAAQuH,aAAa,YAAatH,EAAMq1N,kBAAkBptN,IAC5Du3K,GACAA,EAAK9iK,QAEL1c,EAAMoC,WAA+C,QAAlCo9K,EAAKlhK,cAAc5a,MAAM/B,KAAgB,CAC5D,IAAI80N,OAAe,EAEfA,EADAz2N,EAAMD,QAAQue,eAAiBte,EAAMD,QAAQue,cAAczc,UAAUmB,SAAS,uBAC/DhD,EAAMD,QAAQue,cAAcnY,YAG5BnG,EAAMD,QAAQoG,YAEjC,IAAIuwN,EAAYl3C,EAAKlhK,cAAcnY,YAAcswN,EAC7CE,EAAYlzN,WAAW+7K,EAAKlhK,cAAc5a,MAAM/B,MAAQ+0N,EACxDC,EAAY,IACZA,EAAY,GAEhBn3C,EAAKlhK,cAAc5a,MAAM/B,KAAOg1N,EAAY,KAEhD,IAAIC,EAAW,CAAE72N,QAASy/K,EAAMp5H,MAAOpmD,EAAMomD,OAC7CpmD,EAAM4E,QAAQ,OAAQgyN,QAIlCrC,EAAe13N,UAAU8yE,WAAa,SAAU7lE,EAAG8lL,GAC/C,IAAI5vL,EAAQrD,UACF,IAANmN,IAAgBA,EAAI,MACxB,IAAIqwE,EAAKx9E,KAAKg4N,eACVv1C,EAAkB,CAAEr/K,QAASo6E,EAAI/zB,MAAOzpD,KAAKypD,MAAO/6C,MAAOvB,EAAGsB,QAAQ,GAC1EzO,KAAKiI,QAAQ,cAAew6K,GAAiB,SAAU5yK,GACnD,GAAKA,EAAapB,OAiCV+uE,GACAA,EAAGz9D,YAlCe,CACtB,IAAIohB,EAAe99B,EAAMq1N,kBACrBv3L,GACA,OAAah8B,OAAOg8B,EAAc,UAAW99B,EAAMs9K,iBAEvDt9K,EAAM01N,oBACN,IAAI1vC,EAAOhmL,EAAM20N,eACbr6I,OAAa,EACb0rG,IACA1rG,EAAa0rG,EAAKn9K,cAAc,gBAEhCyxE,GACAA,EAAWz4E,UAAUC,OAAO,cAEhC9B,EAAM40N,SAAS/lN,OACf,gBAAY7O,EAAMw1N,WAAY,YAC9Bx1N,EAAMD,QAAQuH,aAAa,gBAAiB,SAC5CtH,EAAMD,QAAQwH,gBAAgB,aAC1BqoL,GACAA,EAASlzK,QAEb,IAAImjK,EAAY,CAAE9/K,QAASimL,EAAM5/H,MAAOpmD,EAAMomD,OAC9CpmD,EAAM4E,QAAQ,QAASi7K,IAClB7/K,EAAM/C,QAAU+oL,GACjB,eAAOA,KAENhmL,EAAM/C,QAAU+C,EAAM+0N,iBAAoB/0N,EAAM/C,SAAW+C,EAAM+0N,kBAC9D/0N,EAAM00N,oBACN10N,EAAM21N,oBAW1BpB,EAAe13N,UAAUszC,aAAe,WAC/BxzC,KAAK+3N,oBACN,OAAa5yN,OAAOyI,SAAU,uBAAwB5N,KAAKk5N,0BAE/D,OAAa/zN,OAAOnF,KAAKoD,QAAS,QAASpD,KAAKsoC,cAChD,OAAanjC,OAAOnF,KAAKoD,QAAS,UAAWpD,KAAK2gL,iBAC9C3gL,KAAK63N,iBACL,OAAa1yN,OAAOnF,KAAK04N,kBAAmB,QAAS14N,KAAKsoC,cAC1D,OAAanjC,OAAOnF,KAAK04N,kBAAmB,UAAW14N,KAAK2gL,kBAEhE,OAAax7K,OAAOoB,OAAQ,SAAUvG,KAAK4H,eAU/CgwN,EAAe13N,UAAU+U,kBAAoB,SAAUC,EAASC,GAC5D,IAEIgsB,EAFA+4L,EAAW,CAAC,UAAW,WAAY,UAAW,eAAgB,WAAY,aAC9El6N,KAAKu2F,OAAOtrF,cAAc,eAASiK,EAASglN,IAExCl6N,KAAK63N,iBACL12L,EAAenhC,KAAK04N,kBACpB14N,KAAKi4N,SAAShtN,cAAc,eAASiK,EAAS,CAAC,gBAEnD,IAAK,IAAIrH,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKF,GAAUrH,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC9D,IAAIwH,EAAOxR,EAAGgK,GACd,OAAQwH,GACJ,IAAK,UACIrV,KAAKoD,QAAQ8I,cAAc,iBAC5BlM,KAAK24N,kBAET,MACJ,IAAK,WACGzjN,EAAQkD,UACRpY,KAAKwzC,eACDxzC,KAAK63N,iBAAmB73N,KAAKmiL,WAC7BniL,KAAKgzE,cAIThzE,KAAK4T,aAET,MACJ,IAAK,WACD,GAAIsB,EAAQzK,SAASzG,QAAQy2I,EAAWk9E,WAAa,GAAKxiN,EAAQ1K,SAASzG,QAAQy2I,EAAWk9E,WAAa,EAAG,CACrG33N,KAAKoD,QAAQ8I,cAAc,iBAC5BlM,KAAK24N,kBAET,IAAIwB,EAAYn6N,KAAKoD,QAAQ8I,cAAc,gBAC3CgJ,EAAQzK,SAASzG,QAAQy2I,EAAWk9E,WAAa,EAAI,eAAUwC,EAAW,CAAC,iBAAkB,CAAC,iBACxF,eAAUA,EAAW,CAAC,gBAAiB,CAAC,kBAE9Cn6N,KAAK63N,iBACD1iN,EAAQ1K,UACR,gBAAY,CAAC02B,GAAehsB,EAAQ1K,SAASxG,MAAM,MAEnDiR,EAAQzK,UACR,eAAS,CAAC02B,GAAejsB,EAAQzK,SAASoQ,QAAQ,OAAQ,KAAKtO,OAAOtI,MAAM,OAGpF,MACJ,IAAK,SACDjE,KAAKi4N,SAASptN,QAAU7K,KAAKk4N,mBAC7Bl4N,KAAKi4N,SAASlwN,WACd,MACJ,IAAK,QACG/H,KAAK63N,gBAAkB73N,KAAKg4N,gBAC5Bh4N,KAAK8/K,cAET,MACJ,IAAK,qBACG5qK,EAAQ6iN,mBACR/3N,KAAKg5N,eAGLh5N,KAAK8wD,cAET,SAWhB8mK,EAAe13N,UAAU+mB,QAAU,WAC/BjnB,KAAKoD,QAAQ2c,SAEjB3f,EAAW,CACP,eAAS,KACVw3N,EAAe13N,UAAW,eAAW,GACxCE,EAAW,CACP,eAAS,KACVw3N,EAAe13N,UAAW,gBAAY,GACzCE,EAAW,CACP,gBAAS,IACVw3N,EAAe13N,UAAW,gBAAY,GACzCE,EAAW,CACP,eAAS,KACVw3N,EAAe13N,UAAW,eAAW,GACxCE,EAAW,CACP,eAAS,SACVw3N,EAAe13N,UAAW,oBAAgB,GAC7CE,EAAW,CACP,gBAAS,IACVw3N,EAAe13N,UAAW,2BAAuB,GACpDE,EAAW,CACP,eAAW,GAAI,SAChBw3N,EAAe13N,UAAW,aAAS,GACtCE,EAAW,CACP,gBAAS,IACVw3N,EAAe13N,UAAW,0BAAsB,GACnDE,EAAW,CACP,eAAS,KACVw3N,EAAe13N,UAAW,cAAU,GACvCE,EAAW,CACP,eAAS,KACVw3N,EAAe13N,UAAW,yBAAqB,GAClDE,EAAW,CACP,kBACDw3N,EAAe13N,UAAW,wBAAoB,GACjDE,EAAW,CACP,kBACDw3N,EAAe13N,UAAW,kBAAc,GAC3CE,EAAW,CACP,kBACDw3N,EAAe13N,UAAW,mBAAe,GAC5CE,EAAW,CACP,kBACDw3N,EAAe13N,UAAW,aAAS,GACtCE,EAAW,CACP,kBACDw3N,EAAe13N,UAAW,YAAQ,GACrCE,EAAW,CACP,kBACDw3N,EAAe13N,UAAW,cAAU,GACvCE,EAAW,CACP,kBACDw3N,EAAe13N,UAAW,eAAW,GACxC03N,EAAiBx3N,EAAW,CACxB,QACDw3N,GACIA,EAzxBwB,CA0xBjC,S,kCC50BF,kDAMIwC,EAAqB,WACrB,SAASA,EAAIj3N,EAASyrB,GAClB,gBAAM5uB,KAAMmD,GACZnD,KAAK4uB,OAASA,EAmDlB,OAjDAwrM,EAAIl6N,UAAUs2B,MAAQ,WAClB,IAAIa,EAAM,IAAI+iM,EAAI,IAGlB,OAFA,gBAAM/iM,EAAKr3B,MACXq3B,EAAIoqB,MAAQzhD,KAAKyhD,MAAM56C,KAAI,SAAU86C,GAAQ,OAAOA,EAAKnrB,WAClDa,GAQX+iM,EAAIl6N,UAAUsoM,YAAc,SAAU38K,GAClC,GAAK7rB,KAAK4uB,OAAV,CAGA,IAAIruB,EAAMP,KAAK6rB,KAAK7rB,KAAK4uB,OAAOkN,0BAA0B,IAC1D97B,KAAK4uB,OAAO2zF,WAAWhiH,EAAKsrB,KAShCuuM,EAAIl6N,UAAU4mH,aAAe,SAAUj1F,EAAOpZ,GAC1C,GAAKzY,KAAK4uB,OAAV,CAGA,IAAIyrM,IAAcr6N,KAAK6rB,KAAK,GAAKgG,GAAOjgB,aAAe6G,EAAM7G,YAC7D,GAAIyoN,EAAJ,CACI,IAAI/3G,EAAYtiH,KAAK4uB,OAAOkN,0BAA0B,GAClDv7B,EAAMP,KAAK6rB,KAAK,GAAKy2F,GACzBtiH,KAAK4uB,OAAOk4F,aAAavmH,EAAKsxB,EAAOpZ,GACrCzY,KAAKs6N,YAAYh4G,EAAWtiH,KAAK6rB,SAMzCuuM,EAAIl6N,UAAUo6N,YAAc,SAAU/5N,EAAKsrB,GACvC,GAAK7rB,KAAK4uB,OAAV,CAGA,IAAI0D,EAAOtyB,KAAK4uB,OACZkH,EAAcxD,EAAKzC,gBAAgBiG,YACvCA,EAAYiH,OAAOx8B,EAAKsrB,KAErBuuM,EAtDa,I,kCCNxB,kDAMIG,EAAsB,WACtB,SAASA,EAAKp3N,GACVnD,KAAKgiF,WAAY,EACjBhiF,KAAKuhF,cAAe,EACpB,gBAAMvhF,KAAMmD,GAOhB,OALAo3N,EAAKr6N,UAAUs2B,MAAQ,WACnB,IAAImrB,EAAO,IAAI44K,EAAK,IAEpB,OADA,gBAAM54K,EAAM3hD,MACL2hD,GAEJ44K,EAXc,I,kCCNzB,8GAOWC,EAAkB,CACzBhvN,KAAM,aACNivN,SAAU,cACVr8I,KAAM,UACN77B,OAAQ,YACR1G,OAAQ,kBACRw5I,OAAQ,aAQRqlC,EAAwB,WAOxB,SAASA,EAAO9rM,GACZ5uB,KAAK26N,QAAS,EACd36N,KAAK46N,UAAW,EAEhB56N,KAAK66N,eAAgB,EACrB76N,KAAK4uB,OAASA,EACV5uB,KAAK4uB,OAAOE,cAGhB9uB,KAAK44C,aAAe,IAAI,OAAmBhqB,GAC3C5uB,KAAK64C,oBAm+BT,OA39BA6hL,EAAOx6N,UAAUiwH,eAAiB,SAAUx4F,GACxC,IAAIgB,OAAwBptB,IAAVosB,GAAiC,OAAVA,GAAkBA,EAAMh3B,QAAU,EACvEX,KAAK4uB,OAAO8H,aAAa7vB,KAAI,SAAUb,GAAK,OAAOA,EAAE6rB,SAA8B,kBAAV8F,EAAsB,CAACA,GAASA,EAC7G33B,KAAK4uB,OAAO+9E,kBAAmB,EAC3B3sG,KAAK4uB,OAAOgrB,kBACZ55C,KAAK4uB,OAAOxrB,QAAQ8B,UAAU4G,IAAI,kBAEtC9L,KAAK86N,WAAWniM,IAEpB+hM,EAAOx6N,UAAU21C,QAAU,WACvB,IAAIklL,EAAW/6N,KAAK4uB,OAAO8H,aAAazC,QAAO,SAAUxzB,GAAK,OAAqB,IAAdA,EAAEo1C,WAClEhvC,KAAI,SAAUpG,GAAK,OAAOA,EAAEoxB,OAASpxB,EAAEyhD,cACxC64K,EAASp6N,OAAS,GAClBX,KAAKmwH,eAAe4qG,GAEgB,SAApC/6N,KAAK4uB,OAAO0hG,eAAexpB,MAC3B9mG,KAAK44C,aAAaiqE,mBAG1B63G,EAAOx6N,UAAU86N,aAAe,SAAUrjM,EAAOlrB,EAAOnB,GACpD,IAII2vN,EASAC,EAbA5oM,EAAOtyB,KAAK4uB,OACZ0tJ,EAAS,EACT1qF,EAAct/D,EAAKohE,iBACnBs8B,EAAe19F,EAAKssB,kBAEpB4zE,EAAe,eACf2oG,EAAgB,OAChBC,EAAe,OACf3sG,EAAc,EACdt6F,EAAM7oB,GAAUtL,KAAK4uB,OAAOq6F,oBAAoBtxF,GAChD+mF,EAAc1+G,KAAK4uB,OAAOwmE,yBAAyBjhE,GACnDknM,EAAkBzpI,EAAY1lF,cAAc,kBAAoBioB,EAAM,MAAMxS,cAAc+F,WAAU,GACpG4zM,EAAmBtrG,EAAattG,iBAAiB,2BAA6Bg8F,EAAc,GAAK,6CAEjG68G,EAAqBv7N,KAAK4uB,OAAOohE,sBAAsBr4D,GACtD,eAAkBrF,EAAKipB,sBACxB0/K,EAAc3oM,EAAKsyF,yBAEnBq2G,IACAC,EAAkBD,EAAYv4M,iBAAiB,iBAAmBg8F,EAAc,GAAK,2BAEzF,IAAI88G,EAAmB,GAAG9tN,MAAMpK,KAAKsuF,EAAY1lF,cAAc,MAAMiM,uBAAuB,uBAC5F,GAAIqjN,EAAiB76N,OAAS,EAC1B,IAAK,IAAIK,EAAI,EAAGA,EAAIw6N,EAAiB76N,OAAQK,IACzCytH,GAAe+sG,EAAiB7pN,SAAS3Q,EAAE4Q,WAAY,KAAKpI,YAGpE,IAAIiyN,EAAiBzrG,EAAa9jH,cAAc,yBAC5C8jH,EAAa9jH,cAAc,uBAC1BlM,KAAK4uB,OAAOuxB,gBAAkBngD,KAAK4uB,OAAOwxB,YAAcq7K,IACzDhtG,GAAegtG,EAAejyN,aAElC,IAAI04C,EAAa,CAACm5K,GACdK,EAAc,GACdC,EAAa,GACjB,GAAIV,EACA,IAASj6N,EAAI,EAAGA,EAAIk6N,EAAgBv6N,OAAQK,IACxC26N,EAAWhqN,SAAS3Q,EAAE4Q,WAAY,KAAOspN,EAAgBvpN,SAAS3Q,EAAE4Q,WAAY,KAAK8V,WAAU,GAGvG,IAAS1mB,EAAI,EAAGA,EAAIs6N,EAAiB36N,OAAQK,IACzC06N,EAAY/pN,SAAS3Q,EAAE4Q,WAAY,KAAO0pN,EAAiB3pN,SAAS3Q,EAAE4Q,WAAY,KAAK8V,WAAU,GAErG,IAAIk0M,EAAU57N,KAAKkyF,YAAYN,EAAa1vC,EAAYswE,GACpDqpG,EAAU,KACVC,EAAW,KACXxpM,EAAK+pE,wBAAwB17F,SAC7Bm7N,EAAW97N,KAAKkyF,YAAY89B,EAAc0rG,EAAaP,IAEvDQ,EAAWh7N,SACXk7N,EAAU77N,KAAKkyF,YAAY+oI,EAAaU,EAAYP,IAExD,IAAIW,EAAgBzpM,EAAKoE,aAAa/kB,SAAS4pN,EAAmB3pN,WAAY,KAC1EtM,EAAQy2N,EAAcz2N,MAAQ,eAAW6D,KAAKkQ,IAAIuiN,EAASE,EAAUD,IACrEG,EAAcD,EAAcnsN,UAAY9I,WAAWi1N,EAAcnsN,SAASgC,YAC1ED,SAASrM,EAAO,IAAM02N,IACtBD,EAAcz2N,MAAQ02N,GAE1Bh8N,KAAK44C,aAAayjI,eAAe/pJ,EAAKoE,aAAa/kB,SAAS4pN,EAAmB3pN,WAAY,MAC3F,IAAIof,EAASsB,EAAKoE,aAAasD,MAAK,SAAUh0B,GAAK,OAAmB,OAAZA,EAAEV,YACzCiG,IAAZvF,EAAEV,OAAuBU,EAAEV,MAAM3E,QAAU,KAClD,IAAe,IAAXqwB,EACA,KAAI5tB,EAAUkvB,EAAKoE,aACnB,IAAS11B,EAAI,EAAGA,EAAIoC,EAAQzC,OAAQK,IAC5BoC,EAAQuO,SAAS3Q,EAAE4Q,WAAY,KAAKglB,UACpC0lJ,GAAkBx1K,WAAW1D,EAAQuO,SAAS3Q,EAAE4Q,WAAY,KAAKtM,QAI7E,IAAI22N,EAAiB3/C,EAAS7tD,EAC1B6tD,EAAS,KACLt8K,KAAK4uB,OAAOuxB,gBAAkBngD,KAAK4uB,OAAOwxB,YAC1CpgD,KAAK44C,aAAayjI,eAAe,IAAI,OAAO,CAAE/2K,MAAO,UAEjB,SAApCtF,KAAK4uB,OAAO0hG,eAAexpB,OAC3Bm1H,EAAiB,QAErBrqI,EAAY7qF,MAAMzB,MAAQ,eAAW22N,GACrCjsG,EAAajpH,MAAMzB,MAAQ,eAAW22N,GACjC,eAAkBhB,KACnBA,EAAYl0N,MAAMzB,MAAQ,eAAW22N,KAGzC3pM,EAAK4nB,gBAAkB5nB,EAAK2nB,4BAC5Bj6C,KAAK44C,aAAay2E,yBAEtB,IAAIkB,EAAa3+B,EAAYpoF,YACzB0yN,EAAgB5pM,EAAK0nB,aAAwB,YAC7CkiL,EAAe3rG,EACV,eAAkBP,EAAa9jH,cAAc,gBAK9C,eAAS,CAAC0lF,EAAao+B,GAAe,CAAC,mBAJvC,eAAS,CAACp+B,GAAc,CAAC,kBACzB,gBAAY,CAACo+B,GAAe,CAAC,mBAOjC,gBAAY,CAACp+B,EAAao+B,GAAe,CAAC,kBAEzC,eAAkBirG,IACnBA,EAAY/1N,UAAU4G,IAAI,kBASlC4uN,EAAOx6N,UAAUsS,QAAU,WACvB,IAAIqtC,EAAc7/C,KAAK4uB,OAAOxrB,QACzBy8C,IAAiBA,EAAY3zC,cAAc,IAAM,SAAyB2zC,EAAY3zC,cAAc,IAAM,WAG/GlM,KAAK44C,aAAe,KACpB54C,KAAKyU,eACLzU,KAAK47C,wBAQT8+K,EAAOx6N,UAAU4U,cAAgB,WAC7B,MAAO,UAEX4lN,EAAOx6N,UAAU46N,WAAa,SAAUnjM,GACpC,IAAK,IAAI32B,EAAI,EAAGA,EAAI22B,EAAMh3B,OAAQK,IAAK,CACnC,IAAIksH,EAAYv1F,EAAMhmB,SAAS3Q,EAAE4Q,WAAY,KACzC8sG,EAAc1+G,KAAK4uB,OAAOohE,sBAAsBk9B,GAChD39F,EAASvvB,KAAK4uB,OAAO8H,aAAa/kB,SAAS+sG,EAAY9sG,WAAY,KACnE8sG,GAAe,IAAM,eAAkBnvF,KAA8B,IAAnBA,EAAOqH,SACzD52B,KAAKg7N,aAAa9tG,EAAWxO,GAGjC1+G,KAAK4uB,OAAO20D,eACZvjF,KAAK4uB,OAAOhV,OAAO,QAAqB,CAAEsoG,KAAM,gBAAiBxc,WAAW,IAE5E1lG,KAAK4uB,OAAOsrB,gBACZl6C,KAAKm8N,sBAAqB,GAAM,IAYxCzB,EAAOx6N,UAAUgyF,YAAc,SAAUlwD,EAAOlQ,EAAMihG,GAClD,IAAIC,EAAahzH,KAAK4uB,OAAOrqB,cAAc,OACvC63N,EAAgBp8N,KAAK4uB,OAAOgrB,iBAAmB,YAAc,GACjEo5E,EAAWxuH,UAAYxE,KAAK4uB,OAAOxrB,QAAQoB,UAAY43N,EACvDppG,EAAWjsH,MAAMksH,QAAU,4DAC3B,IAAIC,EAAWlzH,KAAK4uB,OAAOrqB,cAAc,OACzC2uH,EAAS1uH,UAAYuuH,EACrB,IAAII,EAAUnzH,KAAK4uB,OAAOrqB,cAAc,QAAS,CAAEyK,MAAO,CAAEC,KAAM,UAClEkkH,EAAQ3uH,UAAYw9B,EAAMx9B,UAC1B2uH,EAAQjuH,UAAU4G,IAAI,iBACtBqnH,EAAQpsH,MAAMksH,QAAU,iCAExB,IADA,IAAIG,EAAOpzH,KAAK4uB,OAAOrqB,cAAc,MAC5BvD,EAAI,EAAGA,EAAI8wB,EAAKnxB,OAAQK,IAAK,CAClC,IAAIs+E,EAAK8zC,EAAK1rG,YACd43D,EAAG96E,UAAYw9B,EAAM91B,cAAc,MAAM1H,UACzC86E,EAAG56E,YAAYotB,EAAKngB,SAAS3Q,EAAE4Q,WAAY,MAC3CuhH,EAAQzuH,YAAY46E,GAExB4zC,EAASxuH,YAAYyuH,GACrBH,EAAWtuH,YAAYwuH,GACvBtlH,SAAS6B,KAAK/K,YAAYsuH,GAC1B,IAAIqpG,EAAmBlpG,EAAQ/rH,wBAAwB9B,MAEvD,OADAsI,SAAS6B,KAAKolC,YAAYm+E,GACnB7pH,KAAK2kC,KAAKuuL,IAMrB3B,EAAOx6N,UAAU24C,iBAAmB,WAC5B74C,KAAK4uB,OAAOE,cAGhB9uB,KAAK4uB,OAAOG,GAAG,QAAwB/uB,KAAKs8N,cAAet8N,MAC3DA,KAAK4uB,OAAOG,GAAG,QAA8B/uB,KAAK+hM,sBAAuB/hM,MACzEA,KAAK4uB,OAAOG,GAAG,QAAmB/uB,KAAK4T,WAAY5T,MACnDA,KAAK4uB,OAAOG,GAAG,QAAqB/uB,KAAK61C,QAAS71C,MAClDA,KAAK4uB,OAAOG,GAAG,QAAwB/uB,KAAKs8N,cAAet8N,MAC3DA,KAAK4uB,OAAOG,GAAG,QAAgB/uB,KAAKwS,QAASxS,QAMjD06N,EAAOx6N,UAAU07C,oBAAsB,WAC/B57C,KAAK4uB,OAAOE,cAGhB9uB,KAAK4uB,OAAOyF,IAAI,QAAwBr0B,KAAKs8N,eAC7Ct8N,KAAK4uB,OAAOyF,IAAI,QAA8Br0B,KAAK+hM,uBACnD/hM,KAAK4uB,OAAOyF,IAAI,QAAmBr0B,KAAK4T,YACxC5T,KAAK4uB,OAAOyF,IAAI,QAAwBr0B,KAAKs8N,eAC7Ct8N,KAAK4uB,OAAOyF,IAAI,QAAgBr0B,KAAKwS,WAMzCkoN,EAAOx6N,UAAUyT,OAAS,WACtB3T,KAAKyU,eACLzU,KAAK4T,aACL5T,KAAKu8N,oBAET7B,EAAOx6N,UAAUo8N,cAAgB,WAC7B,GAAIt8N,KAAK4uB,OAAO8kE,iBAAkB,CAE9B,IADA,IAAItwF,EAAUpD,KAAKw8N,oBACVx7N,EAAI,EAAGA,EAAIoC,EAAQzC,OAAQK,IAC5BoC,EAAQuO,SAAS3Q,EAAE4Q,WAAY,KAAK+P,cAAclY,aAAe,IACjErG,EAAQuO,SAAS3Q,EAAE4Q,WAAY,KAAK7K,MAAM1B,OAASjC,EAAQuO,SAAS3Q,EAAE4Q,WAAY,KAAK+P,cAAclY,aAAe,MAG5HzJ,KAAKu8N,qBAGb7B,EAAOx6N,UAAU0T,WAAa,WAC1B,OAAa9H,IAAI9L,KAAK4uB,OAAOyrB,mBAAoB,OAAQtuC,gBAAiB/L,KAAKy8N,iBAAkBz8N,MACjG,OAAa8L,IAAI9L,KAAK4uB,OAAOyrB,mBAAoB,QAAiBr6C,KAAK08N,YAAa18N,OAExF06N,EAAOx6N,UAAUuU,aAAe,WAC5B,OAAatP,OAAOnF,KAAK4uB,OAAOyrB,mBAAoB,OAAQtuC,gBAAiB/L,KAAKy8N,kBAClF,OAAat3N,OAAOnF,KAAK4uB,OAAOyrB,mBAAoB,QAAiBr6C,KAAK08N,cAE9EhC,EAAOx6N,UAAUs8N,kBAAoB,WACjC,MAAO,GAAG9uN,MAAMpK,KAAKtD,KAAK4uB,OAAO8kE,iBAAiBv7E,uBAAuBqiN,EAAgBhvN,QAE7FkvN,EAAOx6N,UAAUq8N,iBAAmB,WAEhC,IADA,IAAIn5N,EAAU,GAAGsK,MAAMpK,KAAKtD,KAAK4uB,OAAO8kE,iBAAiBv7E,uBAAuBqiN,EAAgBC,WACvFz5N,EAAI,EAAGA,EAAIoC,EAAQzC,OAAQK,IAChCoC,EAAQuO,SAAS3Q,EAAE4Q,WAAY,KAAK7K,MAAM1B,OAASjC,EAAQuO,SAAS3Q,EAAE4Q,WAAY,KAAK+P,cAAclY,aAAe,MAG5HixN,EAAOx6N,UAAUw8N,YAAc,SAAUvvN,GACrC,GAAIA,EAAE7M,OAAO4E,UAAUmB,SAAS,cAAe,CAC3C,IAAI6yB,EAAMl5B,KAAK28N,gBAAgBxvN,GAC/B,GAAI+rB,EAAI/J,QACJ,OAEJnvB,KAAKg7N,aAAa9hM,EAAIrH,MAAO7xB,KAAK4uB,OAAOwmE,yBAAyBl8D,EAAI/E,KAAM+E,EAAI/E,KAChF,IAAI0nB,EAAS,eAAQ1uC,EAAE7M,OAAQk6N,EAAgB3+K,QAC/CA,EAAO32C,UAAU4G,IAAI,eAG7B4uN,EAAOx6N,UAAUu8N,iBAAmB,SAAUtvN,GAC1C,IAAK,OAAOyrH,MAIR,OAHA,OAAOA,MAAQxrH,YAAW,WACtB,OAAOwrH,MAAQ,OAChB,KACI54H,KAAKk4L,YAAY/qL,GAGxBL,aAAa,OAAO8rH,OACpB,OAAOA,MAAQ,KACf54H,KAAK08N,YAAYvvN,IAGzButN,EAAOx6N,UAAUg4L,YAAc,SAAU/qL,GACrC,IAAI9J,EAAQrD,KACZ,GAAImN,EAAE7M,OAAO4E,UAAUmB,SAAS,cAAe,CAC3C,IAAKrG,KAAKuiD,OAAQ,CACd,GAAiC,IAA7BviD,KAAKm6C,oBAA2B,CAEhC,GADAn6C,KAAK66N,eAAgB,EACjB76N,KAAK4uB,OAAO8D,cACZ,IAAK,IAAI1xB,EAAI,EAAGA,EAAIhB,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,OAAQK,IAC1DhB,KAAK44C,aAAayjI,eAAe,IAAI,OAAO,CAAE/2K,MAAO,SAAWtE,GAGxE,IAAK,IAAI6M,EAAK,EAAGhK,EAAK7D,KAAK48N,qBAAsB/uN,EAAKhK,EAAGlD,OAAQkN,IAAM,CACnE,IAAIqrB,EAAMr1B,EAAGgK,GACb7N,KAAK44C,aAAayjI,eAAenjJ,GAErCl5B,KAAK44C,aAAaiqE,kBAClB7iH,KAAK66N,eAAgB,EAEzB76N,KAAK68N,4BACL78N,KAAKoD,QAAU+J,EAAE7M,OACjBN,KAAK88N,mBAAqB98N,KAAK4uB,OAAOxrB,QAAQgE,wBAAwB9B,MACtEtF,KAAK+8N,eACL/8N,KAAKuvB,OAASvvB,KAAK28N,gBAAgBxvN,GACnCnN,KAAKoT,MAAQpT,KAAKg9N,UAAU7vN,GACxBnN,KAAKuvB,OAAOqoB,uBAAyB,OACjC53C,KAAK4uB,OAAOnpB,UACZzF,KAAKi9N,SAAWj9N,KAAKuvB,OAAOukC,SAAWhtD,WAAW9G,KAAKuvB,OAAOukC,SAASliD,YAAc,GAC/E9K,WAAW,eAAkB9G,KAAKuvB,OAAOjqB,OAAS,GAAKtF,KAAKuvB,OAAOjqB,MAAMsM,YAG/E5R,KAAKi9N,QAAUn2N,WAAW,eAAkB9G,KAAKuvB,OAAOjqB,OAAS,GAAKtF,KAAKuvB,OAAOjqB,MAAMsM,aACjF5R,KAAKuvB,OAAOukC,SAAWhtD,WAAW9G,KAAKuvB,OAAOukC,SAASliD,YAAc,GAG3E5R,KAAK4uB,OAAOnpB,UACjBzF,KAAKi9N,QAAUn2N,WAAW9G,KAAKuvB,OAAOjqB,MAAMsM,aACrC5R,KAAKuvB,OAAOukC,SAAWhtD,WAAW9G,KAAKuvB,OAAOukC,SAASliD,YAAc,GAG5E5R,KAAKi9N,SAAWj9N,KAAKuvB,OAAOukC,SAAWhtD,WAAW9G,KAAKuvB,OAAOukC,SAASliD,YAAc,GAC/E9K,WAAW,eAAkB9G,KAAKuvB,OAAOjqB,OAAS,GAAKtF,KAAKuvB,OAAOjqB,MAAMsM,YAEnF5R,KAAKi9N,SAAWj9N,KAAKoT,MAEzB,GAAI,OAAQzD,WAAa3P,KAAKuiD,OAAOr9C,UAAUmB,SAASm0N,EAAgBp8I,MACpEp+E,KAAKuiD,OAAOr9C,UAAU4G,IAAI0uN,EAAgBp8I,MAC1C,OAAatyE,IAAI8B,SAAU,OAAQ7B,gBAAiB/L,KAAKk9N,aAAcl9N,MACvE,OAAa8L,IAAI9L,KAAKuiD,OAAQ,OAAQx2C,gBAAiB/L,KAAKk4L,YAAal4L,UAExE,CACD,IAAI+lB,EAAO,CAAE5Y,EAAGA,EAAGoiB,OAAQvvB,KAAKuvB,QAChCvvB,KAAK4uB,OAAO3mB,QAAQ,QAAoB8d,GAAM,SAAUA,GAChDA,EAAKtX,QAAUpL,EAAMurB,OAAOmuB,OAC5B15C,EAAM85N,sBAGV,OAAarxN,IAAI8B,SAAU,OAAQ0G,cAAejR,EAAM+5N,UAAW/5N,GACnE,OAAayI,IAAIzI,EAAMurB,OAAOxrB,QAAS,OAAQigI,eAAgBhgI,EAAMg6N,SAAUh6N,GAC/EA,EAAMi6N,aAAa,cAKnC5C,EAAOx6N,UAAUi9N,mBAAqB,SAAUI,GACxCA,IACA,OAAap4N,OAAOnF,KAAK4uB,OAAOxrB,QAAS,OAAQigI,eAAgBrjI,KAAKq9N,UACtE,OAAal4N,OAAOyI,SAAU,OAAQ0G,cAAetU,KAAKo9N,WAC1Dp9N,KAAKs9N,aAAa,WAElB,OAAQ3tN,WACR,OAAaxK,OAAOyI,SAAU,OAAQ7B,gBAAiB/L,KAAKk9N,cAC5D,OAAa/3N,OAAOnF,KAAKuiD,OAAQ,OAAQx2C,gBAAiB/L,KAAKk4L,cAEnE,eAAOl4L,KAAKuiD,QACZviD,KAAKsV,WAETolN,EAAOx6N,UAAU28K,SAAW,SAAUv3K,EAAOwuD,EAAUlkD,GACnD,OAAIkkD,GAAYxuD,EAAQwuD,EACbA,EAEDlkD,GAAYtK,EAAQsK,EACnBA,EAGAtK,GAGfo1N,EAAOx6N,UAAUs9N,sBAAwB,WAErC,IADA,IAAI1yL,EAAW,GAAGp9B,MAAMpK,KAAKtD,KAAK4uB,OAAOyrB,mBAAmBliC,uBAAuB,eAC1EnX,EAAI,EAAGA,EAAI8pC,EAASnqC,OAAQK,IACjC8pC,EAASn5B,SAAS3Q,EAAE4Q,WAAY,KAAK7K,MAAM1B,OAASrF,KAAKoD,QAAQue,cAAclY,aAAe,MAGtGixN,EAAOx6N,UAAUu9N,WAAa,SAAUluM,EAAQmuM,GAC5C,MAAO,CACHp4N,MAAOwB,WAAW,eAAkB9G,KAAK44C,aAAaikI,SAASttJ,KAAmD,SAAvCvvB,KAAK44C,aAAaikI,SAASttJ,GAAqB,IACrHvvB,KAAK44C,aAAaikI,SAASttJ,GAAQ3d,YAAc8rN,EACvD5pK,SAAUvkC,EAAOukC,SAAWhtD,WAAWyoB,EAAOukC,SAASliD,YAAc,KACrEhC,SAAU2f,EAAO3f,SAAW9I,WAAWyoB,EAAO3f,SAASgC,YAAc,OAG7E8oN,EAAOx6N,UAAUy9N,uBAAyB,SAAUx2N,GAIhD,IAHA,IAAIowB,EAAOv3B,KAAK4uB,OAAO8H,aACnBg2E,EAAa1sG,KAAK4uB,OAAOqrB,2BAA6Bj6C,KAAK4uB,OAAO89E,WAAa,EAC/EukF,EAAK,GAAGvjL,MAAMpK,KAAKtD,KAAK4uB,OAAOyrB,mBAAmBnuC,cAAc,SAASwW,iBAAiB,mBAAmBusB,OAAO,GAAGvhC,MAAMpK,KAAKtD,KAAK4uB,OAAOorB,aAAat3B,iBAAiB,oBACvK1hB,EAAI,EAAGA,EAAIiwL,EAAGtwL,OAAQK,IAAK,CAChC,IAAIotC,EAAO6iJ,EAAGt/K,SAAS3Q,EAAE4Q,WAAY,KACjC2d,OAAS,EACb,GAAI6e,EAAKlpC,UAAUmB,SAAS,iBAAkB,CAC1C,IAAI8tB,EAAMia,EAAK1jC,aAAa,gBAC5B6kB,EAASvvB,KAAK4uB,OAAOkM,eAAe3G,OAEnC,CACD,IAAI1nB,EAAQkF,SAASy8B,EAAK1jC,aAAa,iBAAkB,IACzD6kB,EAASgI,EAAK5lB,SAASlF,EAAMmF,WAAY,KAE7C,IAAItM,EAAQ,EACZ,GAAY,SAAR6B,EAAgB,CACZnH,KAAK4uB,OAAOguB,4BACZt3C,EAAuC,GAA/BtF,KAAK4uB,OAAOsyB,iBAEiB,UAAhClhD,KAAK4uB,OAAO+2D,kBACjBrgF,EAAmD,GAA3CtF,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,QAE9C,IAAK,IAAI22B,EAAI,EAAGA,EAAIC,EAAK52B,OAAQ22B,IAC7B,GAAI/H,EAAO9iB,MAAQ8qB,EAAK5lB,SAAS2lB,EAAE1lB,WAAY,KAAKnF,MAAO,CACvD,GAAI8iB,EAAO4E,MAAQoD,EAAK5lB,SAAS2lB,EAAE1lB,WAAY,KAAKuiB,IAChD,OAE6C,SAA5CoD,EAAK5lB,SAAS2lB,EAAE1lB,WAAY,KAAK03D,QAAqB/xC,EAAK5lB,SAAS2lB,EAAE1lB,WAAY,KAAK2rC,UAC5C,UAA5ChmB,EAAK5lB,SAAS2lB,EAAE1lB,WAAY,KAAK03D,SAC7B/xC,EAAK5lB,SAAS2lB,EAAE1lB,WAAY,KAAKglB,UACjCtxB,GAASwB,WAAWywB,EAAK5lB,SAAS2lB,EAAE1lB,WAAY,KAAKtM,MAAMsM,aAK3E,eAA6Bw8B,GAAkB,IAAV9oC,EAAcA,EAAQA,EAAQ,GAAKonG,EAAa1sG,KAAK4uB,OAAOnpB,UAAW,QAEhH,GAAY,UAAR0B,EAAiB,CACjB7B,EAAwC,UAAhCtF,KAAK4uB,OAAO+2D,iBAA+B3lF,KAAK4uB,OAAOyxB,gBAAkB,GAAK,EACtF,IAAS/oB,EAAIC,EAAK52B,OAAS,EAAG22B,GAAK,EAAGA,IAAK,CACvC,GAAI/H,EAAO4E,MAAQoD,EAAK5lB,SAAS2lB,EAAE1lB,WAAY,KAAKuiB,IAChD,MAE4C,UAA5CoD,EAAK5lB,SAAS2lB,EAAE1lB,WAAY,KAAK03D,QAAkE,UAA5C/xC,EAAK5lB,SAAS2lB,EAAE1lB,WAAY,KAAK03D,QACpF/xC,EAAK5lB,SAAS2lB,EAAE1lB,WAAY,KAAKglB,UACjCtxB,GAASwB,WAAWywB,EAAK5lB,SAAS2lB,EAAE1lB,WAAY,KAAKtM,MAAMsM,aAIvE,eAA6Bw8B,EAAM9oC,EAAQonG,EAAY1sG,KAAK4uB,OAAOnpB,UAAW,YAI1Fi1N,EAAOx6N,UAAU6hM,sBAAwB,WACrC/hM,KAAKm8N,sBAAqB,IAE9BzB,EAAOx6N,UAAUi8N,qBAAuB,SAAUl8G,EAAe29G,GAC7D,IAAIv6N,EAAQrD,KACR0sG,EAAa1sG,KAAK4uB,OAAOqrB,2BAA6Bj6C,KAAK4uB,OAAO89E,WAAa,EACnF,GAAIuT,GAA0C,SAAvBjgH,KAAKuvB,OAAO+5C,QAAqBtpE,KAAKuvB,OAAOguB,UAC/Dv9C,KAAKuvB,OAAOJ,SAA4C,SAAjC,eAAgBnvB,KAAKuvB,QAAsB,CACnE,IAAIsuM,EAAyC,GAA/B79N,KAAK4uB,OAAOsyB,iBACtB/xB,EAAUnvB,KAAK4uB,OAAO8H,aAAazC,QAAO,SAAUiF,GAAO,MAAsB,SAAfA,EAAIowC,QAAqBpwC,EAAIqkB,YAC9F0iE,IAAiB29G,GAClB59N,KAAK89N,cAAc,QAEvB,IAAK,IAAI98N,EAAI,EAAGA,EAAImuB,EAAQxuB,OAAQK,IAAK,CACrC,GAAIi/G,GAAkB9wF,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKnF,MAAQzM,KAAKuvB,OAAO9iB,MAAQ,CAClF,IAAIq+B,EAAW,GAEXA,EADA9qC,KAAK4uB,OAAOwrB,WACD,GAAG1sC,MAAMpK,KAAKtD,KAAK4uB,OAAOyrB,mBAAmB33B,iBAAiB,qBAAuB1hB,EAAI,OAAOiuC,OAAO,GAAGvhC,MAAMpK,KAAKtD,KAAK4uB,OAAOorB,aAAat3B,iBAAiB,qBAAuB1hB,EAAI,QAG1L,GAAG0M,MAAMpK,KAAKtD,KAAK4uB,OAAOorB,aAAat3B,iBAAiB,qBAAuB1hB,EAAI,OAElG8pC,EAAS7W,QAAO,SAAU0tB,GACtB,eAA6BA,EAAMk8K,EAAUnxH,EAAYrpG,EAAMurB,OAAOnpB,UAAW,WAEjFzF,KAAK4uB,OAAOqrB,6BACZ9qB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK8qG,OAASmhH,GAGjD1uM,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKglB,UACpCinM,GAAW/2N,WAAWqoB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKtM,MAAMsM,aAGxE5R,KAAK29N,uBAAuB,QAEhC,GAAI19G,GAAyC,UAAvBjgH,KAAKuvB,OAAO+5C,QAAuBtpE,KAAKuvB,OAAOJ,SAA4C,UAAjC,eAAgBnvB,KAAKuvB,QAAuB,CACxH,IAAIwuM,EAA0C,UAAhC/9N,KAAK4uB,OAAO+2D,iBAA+B3lF,KAAK4uB,OAAOyxB,gBAAkB,GAAK,EACxFlxB,EAAUnvB,KAAK4uB,OAAO8H,aACrBupF,IAAiB29G,GAClB59N,KAAK89N,cAAc,SAEvB,IAAIE,EAAe7uM,EAAQ8E,QAAO,SAAUiF,GAAO,MAAsB,UAAfA,EAAIowC,UAC9D,IAAStoE,EAAImuB,EAAQxuB,OAAS,EAAGK,GAAKmuB,EAAQxuB,OAASq9N,EAAar9N,OAAQK,IAAK,CACzE8pC,EAAW,GAEXA,EADA9qC,KAAK4uB,OAAOwrB,WACD,GAAG1sC,MAAMpK,KAAKtD,KAAK4uB,OAAOyrB,mBAAmB33B,iBAAiB,qBAAuB1hB,EAAI,OAAOiuC,OAAO,GAAGvhC,MAAMpK,KAAKtD,KAAK4uB,OAAOorB,aAAat3B,iBAAiB,qBAAuB1hB,EAAI,QAG1L,GAAG0M,MAAMpK,KAAKtD,KAAK4uB,OAAOorB,aAAat3B,iBAAiB,qBAAuB1hB,EAAI,OAElG8pC,EAAS7W,QAAO,SAAU0tB,GACtB,eAA6BA,EAAMo8K,EAAUrxH,EAAYrpG,EAAMurB,OAAOnpB,UAAW,YAEjFzF,KAAK4uB,OAAOqrB,6BACZ9qB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAK8qG,OAASqhH,GAE7C5uM,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKglB,UACpCmnM,GAAoBj3N,WAAWqoB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKtM,MAAMsM,aAGjF5R,KAAK29N,uBAAuB,SAE5B39N,KAAKuvB,SAAkC,UAAvBvvB,KAAKuvB,OAAO+5C,QAAuBtpE,KAAKuvB,OAAOJ,SAA4C,UAAjC,eAAgBnvB,KAAKuvB,WAC/FvvB,KAAK29N,uBAAuB,QAC5B39N,KAAK29N,uBAAuB,SAC5B39N,KAAK89N,cAAc,QACnB99N,KAAK89N,cAAc,UAEnB99N,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,QAAUX,KAAK4uB,OAAOwI,WAAWz2B,QACnEX,KAAK4uB,OAAOorB,aAAa9tC,cAAc,uBACvClM,KAAKi+N,0BAGbvD,EAAOx6N,UAAU+9N,uBAAyB,WAEtC,IADA,IAAIC,EAAS,GAAGxwN,MAAMpK,KAAKtD,KAAK4uB,OAAOorB,aAAat3B,iBAAiB,uBAC5D1hB,EAAI,EAAGA,EAAIk9N,EAAOv9N,OAAQK,IAAK,CACpC,IAAIs+E,EAAK4+I,EAAOvsN,SAAS3Q,EAAE4Q,WAAY,KACnC0tE,EAAGpzE,cAAc,mBACjB,eAA4BozE,EAAIt/E,KAAK4uB,UAIjD8rM,EAAOx6N,UAAU49N,cAAgB,SAAU32N,GACvC,IAAI9D,EAAQrD,KACR0sG,EAAa1sG,KAAK4uB,OAAOqrB,2BAA6Bj6C,KAAK4uB,OAAO89E,WAAa,EACnF,GAAY,SAARvlG,EAEA,IADA,IAAIm4E,EAAK,GAAG5xE,MAAMpK,KAAKtD,KAAK4uB,OAAOyrB,mBAAmBnuC,cAAc,SAASwW,iBAAiB,OACrF1hB,EAAI,EAAGA,EAAIs+E,EAAG3+E,OAAQK,IAoF3B,IAnFA,IAAIiwL,EAAK,GAAGvjL,MAAMpK,KAAKg8E,EAAG3tE,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,iBAAiB,iCACnEiO,EAAU,SAAU2G,GACpB,IAAI8W,EAAO6iJ,EAAGt/K,SAAS2lB,EAAE1lB,WAAY,KACrC,GAAIw8B,EAAKlpC,UAAUmB,SAAS,oBAAsB+nC,EAAKlpC,UAAUmB,SAAS,qBACtE+nC,EAAKlpC,UAAUmB,SAAS,sBACxB,MAAO,WAEX,IAAIkpB,EAASsB,EAAOstM,iBAAiB/vL,GACjC7W,EAAO1G,EAAOjC,OAAO8H,aACrBpxB,EAAQ,EACRq+E,EAAc,GAClB,GAAI9yD,EAAOjC,OAAOwI,WAAWz2B,QAAUkwB,EAAOjC,OAAO2sB,mBAAoB,CACrE,GAAI1qB,EAAOjC,OAAOorB,aAAat3B,iBAAiB,iBAAiB/hB,OAAQ,CACrE,IAAIyhD,EAAc,GAAG10C,MAAMpK,KAAKutB,EAAOjC,OAAOorB,aAAat3B,iBAAiB,kBAC5E0/B,EAAYnuB,QAAO,SAAUoD,GACzBssD,EAAYt3E,KAAKgrB,EAAInrB,cAAc,kBAAoBqjB,EAAO4E,IAAM,UAG5EwvD,EAAcA,EAAY10C,OAAO,GAAGvhC,MAAMpK,KAAKutB,EAAOjC,OAAO2sB,mBAAmB74B,iBAAiB,kBAAoB6M,EAAO4E,IAAM,QAEtI,GAAIia,EAAKlpC,UAAUmB,SAAS,iBAAkB,CACtCwqB,EAAOjC,OAAOguB,4BACdt3C,EAAyC,GAAjCurB,EAAOjC,OAAOsyB,iBAEiB,UAAlCrwB,EAAOjC,OAAO+2D,kBACnBrgF,EAAqD,GAA7CurB,EAAOjC,OAAO+D,cAAcxD,QAAQxuB,QAEhD,IAAK,IAAIy9N,EAAI,EAAGA,EAAI7mM,EAAK52B,OAAQy9N,IAC7B,GAAI7uM,EAAO9iB,MAAQ8qB,EAAK5lB,SAASysN,EAAExsN,WAAY,KAAKnF,MAAO,CACvD,GAAI8iB,EAAO4E,MAAQoD,EAAK5lB,SAASysN,EAAExsN,WAAY,KAAKuiB,IAChD,OAE6C,SAA5CoD,EAAK5lB,SAASysN,EAAExsN,WAAY,KAAK03D,QAAqB/xC,EAAK5lB,SAASysN,EAAExsN,WAAY,KAAK2rC,UAC5C,UAA5ChmB,EAAK5lB,SAASysN,EAAExsN,WAAY,KAAK03D,SAC7B/xC,EAAK5lB,SAASysN,EAAExsN,WAAY,KAAKglB,UACjCtxB,GAASqM,SAAS4lB,EAAK5lB,SAASysN,EAAExsN,WAAY,KAAKtM,MAAMsM,WAAY,KAKjF+xE,GAAeA,EAAYhjF,QAC3BgjF,EAAY1vD,QAAO,SAAU0tB,GACzB,eAA6BA,EAAMr8C,EAAQonG,EAAYrpG,EAAMurB,OAAOnpB,UAAW,WAGvF,eAA6B2oC,GAAkB,IAAV9oC,EAAcA,EAAQA,EAAQ,GAAKonG,EAAa77E,EAAOjC,OAAOnpB,UAAW,aAI9G,GADAH,EAAyC,GAAjCurB,EAAOjC,OAAOsyB,iBACD,IAAjB3xB,EAAO9iB,MACHk3E,GAAeA,EAAYhjF,QAC3BgjF,EAAY1vD,QAAO,SAAU0tB,GACzB,eAA6BA,EAAMr8C,EAAQonG,EAAYrpG,EAAMurB,OAAOnpB,UAAW,WAGvF,eAA6B2oC,EAAM9oC,EAAQonG,EAAY77E,EAAOjC,OAAOnpB,UAAW,QAC5EorB,EAAOjC,OAAOqrB,6BACd1qB,EAAOmtF,OAASp3G,OAGnB,CACD,IAAK,IAAImyB,EAAI,EAAGA,EAAIF,EAAK52B,OAAQ82B,IAAK,CAClC,GAAIlI,EAAO9iB,MAAQ8qB,EAAK5lB,SAAS8lB,EAAE7lB,WAAY,KAAKnF,OAChD8iB,EAAO4E,MAAQoD,EAAK5lB,SAAS8lB,EAAE7lB,WAAY,KAAKuiB,IAChD,MAEAoD,EAAK5lB,SAAS8lB,EAAE7lB,WAAY,KAAKglB,UACjCtxB,GAASqM,SAAS4lB,EAAK5lB,SAAS8lB,EAAE7lB,WAAY,KAAKtM,MAAMsM,WAAY,KAGzE+xE,GAAeA,EAAYhjF,QAC3BgjF,EAAY1vD,QAAO,SAAU0tB,GACzB,eAA6BA,EAAMr8C,EAAQonG,EAAYrpG,EAAMurB,OAAOnpB,UAAW,WAGvF,eAA6B2oC,EAAM9oC,EAAQonG,EAAY77E,EAAOjC,OAAOnpB,UAAW,QAC5EorB,EAAOjC,OAAOqrB,6BACd1qB,EAAOmtF,OAASp3G,KAK5BurB,EAAS7wB,KACJs3B,EAAI,EAAGA,EAAI25J,EAAGtwL,OAAQ22B,IAC3B3G,EAAQ2G,GAIpB,GAAY,UAARnwB,EAEA,IADIm4E,EAAK,GAAG5xE,MAAMpK,KAAKtD,KAAK4uB,OAAOyrB,mBAAmBnuC,cAAc,SAASwW,iBAAiB,OACrF1hB,EAAI,EAAGA,EAAIs+E,EAAG3+E,OAAQK,IAC3B,CAAIiwL,EAAK,GAAGvjL,MAAMpK,KAAKg8E,EAAG3tE,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,iBAAiB,mCAAvE,IACI29D,EAAU,SAAU/oD,GACpB,IAAI8W,EAAO6iJ,EAAGt/K,SAAS2lB,EAAE1lB,WAAY,KACjC2d,EAASm7F,EAAOyzG,iBAAiB/vL,GACjC7W,EAAOmzF,EAAO97F,OAAO8H,aACrBpxB,EAAQ,EACRq+E,EAAc,GAClB,GAAI+mC,EAAO97F,OAAOwI,WAAWz2B,QAAU+pH,EAAO97F,OAAO2sB,mBAAoB,CACrE,GAAImvE,EAAO97F,OAAOorB,aAAat3B,iBAAiB,iBAAiB/hB,OAAQ,CACrE,IAAIyhD,EAAc,GAAG10C,MAAMpK,KAAKonH,EAAO97F,OAAOorB,aAAat3B,iBAAiB,kBAC5E0/B,EAAYnuB,QAAO,SAAUoD,GACzBssD,EAAYt3E,KAAKgrB,EAAInrB,cAAc,kBAAoBqjB,EAAO4E,IAAM,UAG5EwvD,EAAcA,EAAY10C,OAAO,GAAGvhC,MAAMpK,KAAKonH,EAAO97F,OAAO2sB,mBAAmB74B,iBAAiB,kBAAoB6M,EAAO4E,IAAM,QAEtI,GAAIia,EAAKlpC,UAAUmB,SAAS,iBAAkB,CAC1Cf,EAA0C,UAAlColH,EAAO97F,OAAO+2D,iBAA+B+kC,EAAO97F,OAAOyxB,gBAAkB,GAAK,EAC1F,IAAK,IAAI+9K,EAAI7mM,EAAK52B,OAAS,EAAGy9N,GAAK,EAAGA,IAClC,GAAI7uM,EAAO9iB,MAAQ8qB,EAAK5lB,SAASysN,EAAExsN,WAAY,KAAKnF,MAAO,CACvD,GAAK8iB,EAAOJ,SAAW,eAAcI,EAAQgI,EAAK5lB,SAASysN,EAAExsN,WAAY,KAAKuiB,MAC1E5E,EAAO9iB,MAAQ8qB,EAAK5lB,SAASysN,EAAExsN,WAAY,KAAKnF,MAChD,MAE4C,UAA5C8qB,EAAK5lB,SAASysN,EAAExsN,WAAY,KAAK03D,QACW,UAA5C/xC,EAAK5lB,SAASysN,EAAExsN,WAAY,KAAK03D,QAC7B/xC,EAAK5lB,SAASysN,EAAExsN,WAAY,KAAKglB,UACjCtxB,GAASwB,WAAWywB,EAAK5lB,SAASysN,EAAExsN,WAAY,KAAKtM,MAAMsM,aAKvE+xE,EAAYhjF,QACZgjF,EAAY1vD,QAAO,SAAU0tB,GACzB,eAA6BA,EAAMr8C,EAAQonG,EAAYrpG,EAAMurB,OAAOnpB,UAAW,YAGvF,eAA6B2oC,EAAM9oC,EAAQonG,EAAYge,EAAO97F,OAAOnpB,UAAW,aAE/E,CACDH,EAA0C,UAAlColH,EAAO97F,OAAO+2D,iBAA+B+kC,EAAO97F,OAAOyxB,gBAAkB,GAAK,EAC1F,IAAK,IAAI5oB,EAAIF,EAAK52B,OAAS,EAAG82B,GAAK,EAAGA,IAAK,CACvC,GAAKlI,EAAOJ,SAAW,eAAcI,EAAQgI,EAAK5lB,SAAS8lB,EAAE7lB,WAAY,KAAKuiB,MAC1E5E,EAAO9iB,MAAQ8qB,EAAK5lB,SAAS8lB,EAAE7lB,WAAY,KAAKnF,OAChD8iB,EAAO4E,MAAQoD,EAAK5lB,SAAS8lB,EAAE7lB,WAAY,KAAKuiB,IAChD,MAEAoD,EAAK5lB,SAAS8lB,EAAE7lB,WAAY,KAAKglB,UACjCtxB,GAASqM,SAAS4lB,EAAK5lB,SAAS8lB,EAAE7lB,WAAY,KAAKtM,MAAMsM,WAAY,KAGzE+xE,EAAYhjF,QACZgjF,EAAY1vD,QAAO,SAAU0tB,GACzB,eAA6BA,EAAMr8C,EAAQonG,EAAYrpG,EAAMurB,OAAOnpB,UAAW,YAGvF,eAA6B2oC,EAAM9oC,EAAQonG,EAAYge,EAAO97F,OAAOnpB,UAAW,SAC5EilH,EAAO97F,OAAOqrB,6BACd1qB,EAAOmtF,OAASp3G,KAIxBolH,EAAS1qH,KACb,IAASs3B,EAAI25J,EAAGtwL,OAAS,EAAG22B,GAAK,EAAGA,IAChC+oD,EAAQ/oD,KAKxBojM,EAAOx6N,UAAUi+N,iBAAmB,SAAU/vL,GAC1C,IAAIja,EAAMia,EAAKlpC,UAAUmB,SAAS,mBAAqB+nC,EAAK1jC,aAAa,gBACrE0jC,EAAKliC,cAAc,kBAAkBxB,aAAa,gBACtD,OAAO1K,KAAK4uB,OAAOkM,eAAe3G,IAEtCumM,EAAOx6N,UAAUm9N,SAAW,SAAUlwN,GAClC,IAAI,eAAkBnN,KAAKuvB,QAA3B,CAGIvvB,KAAK4uB,OAAOsrB,gBACZl6C,KAAKm8N,uBAET,IAAI3yN,EAAc,EACd,eAAkBxJ,KAAKuvB,UACvB/lB,EAAc,gBAAaxJ,KAAKoD,QAAS,MAAMoG,aAE/CxJ,KAAK4uB,OAAO20D,gBACZvjF,KAAKw9N,wBACLx9N,KAAKq+N,mBAET,IAAIjrN,EAAQpT,KAAKg9N,UAAU7vN,GACvBuwN,EAAY19N,KAAK4uB,OAAOnpB,YAAc2N,EAAQpT,KAAKoT,OAAUA,EAAQpT,KAAKoT,MAC1Es8H,EAAU1vI,KAAKy9N,WAAWz9N,KAAKuvB,OAAQmuM,GACtChuF,EAAQpqI,QACToqI,EAAQpqI,MAAQ,eAAQtF,KAAKoD,QAAS,MAAMoG,aAEhD,IAAIlE,EAAQtF,KAAK68K,SAASntC,EAAQpqI,MAAOoqI,EAAQ57E,SAAU47E,EAAQ9/H,UAMnE,GALA5P,KAAK4uB,OAAOqD,IAAI,iBAAkB,CAAE1C,OAAQvvB,KAAKuvB,OAAQjqB,MAAOA,MACzDtF,KAAK4uB,OAAOnpB,WAAazF,KAAKi9N,SAAW7pN,GAAWpT,KAAK4uB,OAAOnpB,WAAazF,KAAKi9N,SAAW7pN,KAChG9N,EAAQtF,KAAKuvB,OAAOukC,SAAWhtD,WAAW9G,KAAKuvB,OAAOukC,SAASliD,YAAc,GAC7E5R,KAAKoT,MAAQA,EAAQpT,KAAKi9N,SAE1B33N,IAAUwB,WAAW,eAAkB9G,KAAKuvB,OAAOjqB,QAAgC,SAAtBtF,KAAKuvB,OAAOjqB,MACzEkE,EAAYoI,WAAa5R,KAAKuvB,OAAOjqB,MAAMsM,YAAa,CACxD5R,KAAKoT,MAAQA,EACbpT,KAAKuvB,OAAOjqB,MAAQ,eAAWA,GAC/B,IAAIygB,EAAO,CACP5Y,EAAGA,EACHoiB,OAAQvvB,KAAKuvB,QAGjB,GADAvvB,KAAK4uB,OAAO3mB,QAAQ,QAAiB8d,GACjCA,EAAKtX,OAEL,YADAzO,KAAKm9N,oBAAmB,GAG5B,IAAIhuM,EAAU,CAACnvB,KAAKuvB,QAChB+uM,EAAe,CAACt+N,KAAKuvB,QACrBvvB,KAAKuvB,OAAOJ,UACZA,EAAUnvB,KAAKu+N,cAAcv+N,KAAKuvB,OAAQ,IAC1CJ,EAAUnvB,KAAKw+N,qBAAqBrvM,GAAS,EAAOuuM,GACpDY,EAAet+N,KAAKw+N,qBAAqBrvM,GAAS,EAAMuuM,IAE5D19N,KAAK66N,eAAgB,EACrB,IAAK,IAAIhtN,EAAK,EAAG4wN,EAAiBH,EAAczwN,EAAK4wN,EAAe99N,OAAQkN,IAAM,CAC9E,IAAIqrB,EAAMulM,EAAe5wN,GACzB7N,KAAK44C,aAAayjI,eAAenjJ,EAAK,KAAM,UAEhDl5B,KAAK66N,eAAgB,EACrB76N,KAAK0+N,eAET1+N,KAAK46N,UAAW,IAEpBF,EAAOx6N,UAAUs+N,qBAAuB,SAAUrvM,EAASunD,EAAUgnJ,GAEjE,IADA,IAAIY,EAAe,GACVzwN,EAAK,EAAG+sB,EAAYzL,EAASthB,EAAK+sB,EAAUj6B,OAAQkN,IAAM,CAG/D,IAFA,IAAIqrB,EAAM0B,EAAU/sB,GAChB+zJ,EAAa,EACR5gK,EAAI,EAAGA,EAAImuB,EAAQxuB,OAAQK,IAChC4gK,GAAc96J,WAAWqoB,EAAQxd,SAAS3Q,EAAE4Q,WAAY,KAAKtM,MAAMsM,YAEvE,IAAI89H,EAAU1vI,KAAKy9N,WAAWvkM,EAAMpyB,WAAWoyB,EAAI5zB,OAAUo4N,EAAY97D,GACrEgT,EAAW50K,KAAK68K,SAASntC,EAAQpqI,MAAOoqI,EAAQ57E,SAAU47E,EAAQ9/H,UACjEglK,IAAa9tK,WAAWoyB,EAAI5zB,MAAMsM,cAC/B8kE,IACAx9C,EAAI5zB,MAAQ,eAAWsvK,EAAW,EAAI,EAAIA,IAE9C0pD,EAAajyN,KAAK6sB,IAG1B,OAAOolM,GAEX5D,EAAOx6N,UAAUq+N,cAAgB,SAAUhvM,EAAQovM,GAC/C,IAAK,IAAI9wN,EAAK,EAAGhK,EAAK0rB,EAAOJ,QAASthB,EAAKhK,EAAGlD,OAAQkN,IAAM,CACxD,IAAIqrB,EAAMr1B,EAAGgK,IACO,IAAhBqrB,EAAItC,SAAqBsC,EAAIsc,gBACzBtc,EAAI/J,QACJnvB,KAAKu+N,cAAcrlM,EAAKylM,GAGxBA,EAAWtyN,KAAK6sB,IAI5B,OAAOylM,GAEXjE,EAAOx6N,UAAUk9N,UAAY,SAAUjwN,GACnC,GAAKnN,KAAKuiD,SAAUviD,KAAK4uB,OAAOE,YAAhC,CAGA,IAAIwD,EAAOtyB,KAAK4uB,OAChB,OAAazpB,OAAOnF,KAAK4uB,OAAOxrB,QAAS,OAAQigI,eAAgBrjI,KAAKq9N,UACtE,OAAal4N,OAAOyI,SAAU,OAAQ0G,cAAetU,KAAKo9N,WAC1Dp9N,KAAKs9N,aAAa,UAClB,eAAOt9N,KAAKuiD,QACZ,IAAIx8B,EAAO,CAAE5Y,EAAGA,EAAGoiB,OAAQvvB,KAAKuvB,QAC5B1kB,EAAU7K,KAAK4uB,OAAOorB,aAAa9tC,cAAc,IAAM,QACvD0yN,EAAS/zN,EACT+zN,EAAO3gL,aAAe2gL,EAAOt1N,eAC7BtJ,KAAK4uB,OAAO46B,aAAa5O,aACzBgkL,EAAO73N,MAAMg3C,UAAY,UAE7B/9C,KAAK4uB,OAAO3mB,QAAQ,QAAmB8d,GACvC,eAAQ/lB,KAAKoD,QAAS,iBAAiB8B,UAAU4G,IAAI,aACrD9L,KAAK6+N,oBAAqB,EACtB7+N,KAAK4uB,OAAO20D,gBACZvjF,KAAKw9N,wBACLx9N,KAAK4uB,OAAOhV,OAAO,QAAwB,CAAEsoG,KAAM,cAEvD,IAEI+4G,EAFArpI,EAAct/D,EAAKohE,iBACnBs8B,EAAe19F,EAAKssB,kBAEnB,eAAkBtsB,EAAKipB,sBACxB0/K,EAAc3oM,EAAKsyF,yBAEvB,IAAI2L,EAAa3+B,EAAYpoF,YACzB0yN,EAAgB5pM,EAAK0nB,aAAwB,YAC7CkiL,EAAe3rG,EACV,eAAkBP,EAAa9jH,cAAc,gBAK9C,eAAS,CAAC0lF,EAAao+B,GAAe,CAAC,mBAJvC,eAAS,CAACp+B,GAAc,CAAC,kBACzB,gBAAY,CAACo+B,GAAe,CAAC,mBAOjC,gBAAY,CAACp+B,EAAao+B,GAAe,CAAC,kBAEzC,eAAkBirG,IACnBA,EAAY/1N,UAAU4G,IAAI,iBAE9B9L,KAAKsV,UACLtV,KAAK8+N,eAAe3xN,GACpBnN,KAAK46N,UAAW,IAEpBF,EAAOx6N,UAAU88N,UAAY,SAAU7vN,GACnC,OAAIA,EAAEgG,SAAWhG,EAAEgG,QAAQxS,OAChBwM,EAAEgG,QAAQ,GAAGC,MAGbjG,EAAEiG,OAGjBsnN,EAAOx6N,UAAU08N,mBAAqB,WAElC,IADA,IAAIztM,EAAUnvB,KAAK4uB,OAAO8H,aACjB7oB,EAAK,EAAGhK,EAAK,GAAG6J,MAAM5K,MAAM9C,KAAK4uB,OAAOyrB,mBAAmB33B,iBAAiB,oBAAqB7U,EAAKhK,EAAGlD,OAAQkN,IAEtH,IADA,IAAIyf,EAAMzpB,EAAGgK,GACJ/J,EAAK,EAAGo6B,EAAY/O,EAASrrB,EAAKo6B,EAAUv9B,OAAQmD,IAAM,CAC/D,IAAIyrB,EAAS2O,EAAUp6B,GACvB,GAAIwpB,EAAIphB,cAAc,mBAClBohB,EAAIphB,cAAc,kBAAkBxB,aAAa,kBAAoB6kB,EAAO4E,KAAO5E,EAAOqH,QAAS,CACnGrH,EAAOjqB,MAAQgoB,EAAIlmB,wBAAwB9B,MAC3C,OAIZ,OAAO6pB,GAEXurM,EAAOx6N,UAAU28N,0BAA4B,WACzC,IAAK,IAAIhvN,EAAK,EAAGhK,EAAK7D,KAAK4uB,OAAOo6F,kBAAkBhpH,KAAK4uB,OAAOO,SAAUthB,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC5F,IAAIs2G,EAAgBtgH,EAAGgK,GACvBs2G,EAAc7+G,MAAQtF,KAAK++N,gBAAgB56G,EAAe,KAGlEu2G,EAAOx6N,UAAU6+N,gBAAkB,SAAUxvM,EAAQjqB,GACjD,IAAK,IAAIuI,EAAK,EAAGhK,EAAK0rB,EAAOJ,QAASthB,EAAKhK,EAAGlD,OAAQkN,IAAM,CACxD,IAAIqrB,EAAMr1B,EAAGgK,IACO,IAAhBqrB,EAAItC,UACAsC,EAAI/J,QACJ7pB,EAAQtF,KAAK++N,gBAAgB7lM,EAAK5zB,GAGlCA,GAASwB,WAAWoyB,EAAI5zB,MAAMsM,aAI1C,OAAOtM,GAEXo1N,EAAOx6N,UAAUy8N,gBAAkB,SAAUxvN,GACzC,IAAIw0C,EAAO,eAAQx0C,EAAE7M,OAAQk6N,EAAgB3+K,QAC7C8F,EAAOA,EAAKz1C,cAAc,qBAAuBy1C,EAAKz1C,cAAc,2BACpE,IAAIioB,EAAMwtB,EAAKj3C,aAAa,gBAC5B,OAAO1K,KAAK4uB,OAAOkM,eAAe3G,IAEtCumM,EAAOx6N,UAAUo9N,aAAe,SAAU38M,GACtC,IAAIsvG,EAAa,GAAGviH,MAAMpK,KAAKtD,KAAK4uB,OAAOyrB,mBAAmB33B,iBAAiB,OAC/EutG,EAAW5jH,KAAKrM,KAAK4uB,OAAOxrB,SAC5B,IAAK,IAAIyK,EAAK,EAAGmxN,EAAe/uG,EAAYpiH,EAAKmxN,EAAar+N,OAAQkN,IAAM,CACxE,IAAIwpB,EAAM2nM,EAAanxN,GACvBwpB,EAAInyB,UAAU,GAAKyb,GAAQ65M,EAAgBnlC,UAGnDqlC,EAAOx6N,UAAUoV,QAAU,WACvBtV,KAAKuvB,OAAS,KACdvvB,KAAKoT,MAAQ,KACbpT,KAAKoD,QAAU,KACfpD,KAAKuiD,OAAS,MAElBm4K,EAAOx6N,UAAU68N,aAAe,WAC5B/8N,KAAKuiD,OAASviD,KAAK4uB,OAAOrqB,cAAc,MAAO,CAC3CC,UAAWg2N,EAAgBj4K,SAE/BviD,KAAK4uB,OAAOxrB,QAAQsB,YAAY1E,KAAKuiD,QACrCviD,KAAKq+N,mBAET3D,EAAOx6N,UAAUm+N,gBAAkB,WAI/B,IAHA,IAAIh5N,EAASrF,KAAK4uB,OAAOorB,aAAavwC,aAAezJ,KAAKm6C,oBACtD22F,EAAO,eAAQ9wI,KAAKoD,QAASo3N,EAAgB3+K,QAC7CyjC,EAAK,GAAG5xE,MAAMpK,KAAKtD,KAAK4uB,OAAOyrB,mBAAmB33B,iBAAiB,OAC9D1hB,EAAIs+E,EAAGt7E,QAAQ8sI,EAAKnvH,eAAgB3gB,EAAIs+E,EAAG3+E,QAAUK,GAAK,EAAGA,IAClEqE,GAAUi6E,EAAG3tE,SAAS3Q,EAAE4Q,WAAY,KAAKnI,aAE7C,IAAItC,EAAMnH,KAAKi/N,QAAQnuF,GACvB3pI,EAAInC,MAAShF,KAAK4uB,OAAOnpB,WAAY,EAAQqrI,EAAKtnI,YAAc,EAChExJ,KAAKuiD,OAAOx7C,MAAMksH,QAAU,WAAa5tH,EAAS,YAAc8B,EAAIpC,IAAM,YAAcoE,KAAKo3D,MAAMp5D,EAAInC,MAAQ,MAC3GhF,KAAK4uB,OAAO6D,sBACZzyB,KAAKuiD,OAAOr9C,UAAU4G,IAAI,uBAGlC4uN,EAAOx6N,UAAUi6C,kBAAoB,SAAU90C,GAC3C,IAAIioB,EAAMttB,KAAK4uB,OAAOorB,aAAaqC,WACnC,OAAQ/uB,EAAI2wB,aAAe3wB,EAAIhkB,cAAgBjE,GAC3CioB,EAAIutB,YAAcvtB,EAAI/jB,YAAc,iBAAsB,GAElEmxN,EAAOx6N,UAAUg9N,aAAe,SAAU/vN,GACtC,IAAIqmD,EAAMrmD,EAAE7M,OAAO4E,UACbsuD,EAAIntD,SAASm0N,EAAgBhvN,OAASgoD,EAAIntD,SAASm0N,EAAgBp8I,QAAUp+E,KAAKuiD,SACpF,OAAap9C,OAAOyI,SAAU,OAAQ7B,gBAAiB/L,KAAKk9N,cAC5D,OAAa/3N,OAAOnF,KAAKuiD,OAAQ,OAAQx2C,gBAAiB/L,KAAKk4L,aAC/D,eAAOl4L,KAAKuiD,QACZviD,KAAKsV,YAGbolN,EAAOx6N,UAAUw+N,aAAe,WAC5B,IACI15N,EADA8rI,EAAO,eAAQ9wI,KAAKoD,QAASo3N,EAAgB3+K,QAEjD72C,EAAOmE,KAAKo3D,MAAMvgE,KAAKi/N,QAAQnuF,GAAM9rI,MAAQhF,KAAK4uB,OAAOnpB,WAAY,EAAQqrI,EAAKtnI,YAAc,IAChG,IAAI6nI,EAAc,EACdrsI,EAAOhF,KAAK88N,qBACZ93N,EAAOhF,KAAK88N,mBAAqBzrF,GAErCrxI,KAAKuiD,OAAOx7C,MAAM/B,KAAOA,EAAO,MAEpC01N,EAAOx6N,UAAU++N,QAAU,SAAUlyK,GACjC,IAAI8hE,EAAe,CACf9pH,IAAK,EACLC,KAAM,GAEN8iE,EAAS/a,EAAK3lD,wBACd83N,EAAMnyK,EAAKoyK,cACX/gE,EAAe,gBAAarxG,EAAM,WAAamyK,EAAIrsK,gBACvD,MAAOurG,IACFA,IAAiB8gE,EAAIzvN,MAAQ2uJ,IAAiB8gE,EAAIrsK,kBACnB,WAAhCurG,EAAar3J,MAAMhD,SACnBq6J,EAAeA,EAAa3qH,WAKhC,OAHI2qH,GAAgBA,IAAiBrxG,GAAkC,IAA1BqxG,EAAaluE,WACtD2+B,EAAeuvC,EAAah3J,yBAEzB,CACHrC,IAAK+iE,EAAO/iE,IAAM8pH,EAAa9pH,IAC/BC,KAAM8iE,EAAO9iE,KAAO6pH,EAAa7pH,OAGzC01N,EAAOx6N,UAAU4+N,eAAiB,SAAU3xN,GACxC,IAAI9J,EAAQrD,KACRA,KAAK24H,gBAAkB34H,KAAK46N,WACvB56N,KAAK26N,QAMN7tN,aAAa9M,KAAK26N,QAClB36N,KAAK08N,YAAYvvN,GACjBnN,KAAK26N,OAAS,MAPd36N,KAAK26N,OAASvtN,YAAW,WACrB/J,EAAMs3N,OAAS,OAChB,OASfD,EAAOx6N,UAAUy4H,aAAe,WAC5B,IAAIz8E,EAAY,OAAQA,UAAUr6B,cAClC,MAAO,mBAAmBpE,KAAKy+B,IAEnCw+K,EAAOx6N,UAAUk/N,eAAiB,WAC9Bp/N,KAAK26N,OAAS,MAEXD,EAp/BgB,I,kCCrB3B,8DAAIr7N,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxCK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAM5Dy+N,EAAa,oBACbC,EAAgB,gBAChBzoN,EAAgB,CAAC,QAAS,QAAS,SAanC0oN,EAAyB,SAAU18N,GAQnC,SAAS08N,EAAQp8N,EAASC,GACtB,IAAIC,EAAQR,EAAOS,KAAKtD,KAAMmD,EAASC,IAAYpD,KAQnD,OAPAqD,EAAMqrC,cAAgB,KACtBrrC,EAAM+T,WAAY,EAClB/T,EAAMm8N,eAAgB,EACtBn8N,EAAMm6M,QAAS,EACfn6M,EAAMo8N,mBAAqB,KAC3Bp8N,EAAM8yB,OAAQ,EACd9yB,EAAMq8N,eAAiBv8N,EAChBE,EAmsBX,OAntBAhE,EAAUkgO,EAAS18N,GA0BnB08N,EAAQr/N,UAAU+U,kBAAoB,SAAUC,EAASC,GACrD,IAAK,IAAItH,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKF,GAAUrH,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC9D,IAAIwH,EAAOxR,EAAGgK,GACd,OAAQwH,GACJ,IAAK,iBACD,OAAMmV,eAAexqB,KAAK2/N,gBAC1B,OAAMl1M,YAAYzqB,KAAK4/N,kBAAmB5/N,KAAK8X,eAAgB9X,KAAKga,aACpE,MACJ,IAAK,UACD,OAAMoQ,WAAWpqB,KAAKqY,QAASrY,KAAK4/N,kBAAmB5/N,KAAK8X,eAAgB9X,KAAK2/N,eAAenwN,WAChGxP,KAAKkf,iBACL,MACJ,IAAK,QACD,OAAMhE,SAAShG,EAAQ5P,MAAOtF,KAAK2/N,eAAenwN,WAClD,MACJ,IAAK,QAEG,IAAIqwN,EAAe7/N,KAAKs0H,oBACxBt0H,KAAKs0H,qBAAsB,EACtBt0H,KAAKisN,QAAQjsN,KAAKyY,SACnBzY,KAAKyY,MAAQzY,KAAKyY,MAAM7G,YAE5B5R,KAAKs0H,oBAAsBurG,EAC3B,OAAMhgN,SAAS7f,KAAKyY,MAAOzY,KAAK4/N,kBAAmB5/N,KAAK8X,eAAgB9X,KAAKib,iBACzEjb,KAAKw/N,gBACLx/N,KAAKoD,QAAQqV,MAAQzY,KAAK4/N,kBAAkBnnN,OAEhDzY,KAAKy/N,mBAAqBz/N,KAAK4/N,kBAAkBnnN,OAE5CzY,KAAKoX,WAAapX,KAAKm2B,SAAiC,IAAvBn2B,KAAKqX,eACvCrX,KAAK0uC,cAAgB1uC,KAAKoX,UAAYpX,KAAKyY,MAAQzY,KAAK0uC,cACxD1uC,KAAKqX,eAAgB,IAEhB,eAAkBrX,KAAKoX,aAAepX,KAAKoX,WAC5CpX,KAAKoX,YAAcpX,KAAKqX,eAAmBrX,KAAKoX,WAAa,eAAkBpX,KAAKqX,iBACxFrX,KAAK+iI,mBAGb,MACJ,IAAK,iBAEG/iI,KAAKwgI,0BACLxgI,KAAK4hI,0BACL5hI,KAAKwuE,iBAAgB,GACrBxuE,KAAK8/N,YAAc,eAAkB9/N,KAAK+/N,UAAY,OAAM93F,kBAAkBjoI,KAAK2/N,eAAenwN,UAAWxP,KAAK+/N,UAAY,OAAM93F,kBAAkBjoI,KAAK2/N,eAAenwN,UAAWxP,KAAKoD,SAE9L,MACJ,IAAK,WACD,OAAM+mB,YAAYnqB,KAAKwZ,SAAUxZ,KAAK4/N,mBACtC,MACJ,IAAK,OACsC,aAAnC5/N,KAAK4/N,kBAAkBlwN,UACvB1P,KAAK4/N,kBAAkBj1N,aAAa,OAAQ3K,KAAKwO,MACjD,OAAMy5H,kBAAkBjoI,KAAK2/N,eAAenwN,UAAWxP,KAAKoD,SAC5DpD,KAAK+iI,oBAET,MACJ,IAAK,kBACD,OAAMx4G,eAAevqB,KAAKib,gBAAiBjb,KAAK4/N,kBAAmB5/N,KAAK2/N,gBACxE3/N,KAAKkf,iBACL,MACJ,IAAK,YACD,OAAMoL,aAAatqB,KAAKyF,UAAW,CAACzF,KAAK2/N,eAAenwN,YACxD,MACJ,IAAK,cACD,OAAM0a,eAAelqB,KAAKga,YAAaha,KAAK4/N,mBAC5C,OAAM7nN,eAAe/X,KAAK4/N,kBAAmB5/N,KAAK2/N,eAAenwN,WACjE,MACJ,IAAK,eACyB,OAAtBxP,KAAKggO,cAA+C,KAAtBhgO,KAAKggO,aACnChgO,KAAK4/N,kBAAkBI,aAAehgO,KAAKggO,aAG3ChgO,KAAKonB,iBAAiB,CAAC,iBAE3B,MACJ,IAAK,WACDpnB,KAAKqgB,eAAenL,EAAQzK,SAAU0K,EAAQ1K,UAC9C,MACJ,IAAK,SACDzK,KAAKua,UAAY,IAAI,OAAqBva,KAAKwa,QAC/Cxa,KAAKya,KAAK4P,UAAUrqB,KAAKwa,QACzBxa,KAAKiL,cAAc,CAAE+O,YAAaha,KAAKya,KAAKC,YAAY,iBAAkB,GAC1E,OAAMwP,eAAelqB,KAAKga,YAAaha,KAAK4/N,mBAC5C,SAUhBL,EAAQr/N,UAAU4U,cAAgB,WAC9B,MAAO,WAEXyqN,EAAQr/N,UAAU+rN,QAAU,SAAU9zH,GAClC,OAASA,GAAO,QAAQ16E,KAAK06E,IAEjConI,EAAQr/N,UAAU4T,UAAY,WAO1B,GANA9T,KAAKgtE,aAAehtE,KAAKoD,QAAQskB,WAAU,GAC3C1nB,KAAKqe,YAAc,eAAQre,KAAKoD,QAAS,QACpC,eAAkBpD,KAAKqe,eACxBre,KAAKw9M,QAAS,GAGW,gBAAzBx9M,KAAKoD,QAAQsM,QAA2B,CACxC,IAAImwH,EAAa,eAAS,gBAAiB7/H,KAAKoD,SAC5C4U,EAAehY,KAAK8/N,UACpB9/N,KAAKuE,cAAc,YACnBvE,KAAKuE,cAAc,SACnBkI,EAAQ,EACZ,IAAKA,EAAOA,EAAQzM,KAAKoD,QAAQqkB,WAAW9mB,OAAQ8L,IAAS,CACzD,IAAIuzH,EAAgBhgI,KAAKoD,QAAQqkB,WAAWhb,GAAOwzH,SAC7B,OAAlBD,GAA4C,UAAlBA,GAC1BhoH,EAAarN,aAAaq1H,EAAehgI,KAAKoD,QAAQqkB,WAAWhb,GAAOyzH,WACxEloH,EAAalN,UAAY9K,KAAKoD,QAAQ0H,UAChB,SAAlBk1H,GACAhgI,KAAKoD,QAAQwH,gBAAgB,SAGV,UAAlBo1H,GACLhoH,EAAarN,aAAaq1H,EAAehgI,KAAKoD,QAAQoB,UAAUP,MAAM,KAAKgwB,QAAO,SAAUs5B,GAAQ,OAA+B,IAAxBA,EAAKvpD,QAAQ,UAAiBsI,KAAK,MAGtJtM,KAAKoD,QAAQsB,YAAYsT,GACzBhY,KAAKoD,QAAU4U,EACf,gBAAS,gBAAiB6nH,EAAY7/H,KAAKoD,SAE/CpD,KAAKwgI,0BACLxgI,KAAKwuE,iBAAgB,IAChB,eAAkBxuE,KAAK0/N,sBAAqDn0N,IAAjCvL,KAAK0/N,eAAe,UAAmD,KAAvB1/N,KAAKoD,QAAQqV,OACzGzY,KAAKiL,cAAc,CAAEwN,MAAOzY,KAAKoD,QAAQqV,QAAS,GAEzB,aAAzBzY,KAAKoD,QAAQsM,SACb1P,KAAKoD,QAAQuH,aAAa,OAAQ3K,KAAKwO,MAEzB,SAAdxO,KAAKwO,MACLxO,KAAKoD,QAAQuH,aAAa,OAAQ,WAEtC3K,KAAKua,UAAY,IAAI,OAAqBva,KAAKwa,QAC/C,IAAIi0D,EAAa,CAAEz0D,YAAaha,KAAKga,aAWrC,GAVAha,KAAKya,KAAO,IAAI,OAAK,UAAWg0D,EAAYzuE,KAAKwa,QACJ,KAAzCxa,KAAKya,KAAKC,YAAY,gBACtB1a,KAAKiL,cAAc,CAAE+O,YAAaha,KAAKga,aAAeha,KAAKya,KAAKC,YAAY,iBAAkB,GAE7F1a,KAAKoD,QAAQ0kB,aAAa,OAC3B9nB,KAAKoD,QAAQuH,aAAa,KAAM,eAAY,YAE3C3K,KAAKoD,QAAQ0kB,aAAa,SAC3B9nB,KAAKoD,QAAQuH,aAAa,OAAQ3K,KAAKoD,QAAQsH,aAAa,OAEnC,UAAzB1K,KAAKoD,QAAQsM,SAAuB1P,KAAK8/N,UAAW,CACpD9/N,KAAKw/N,eAAgB,EACrBx/N,KAAK+/N,SAAW//N,KAAKuE,cAAc,YACnCvE,KAAKoD,QAAQqwC,WAAWjuB,aAAaxlB,KAAK+/N,SAAU//N,KAAKoD,SACzDpD,KAAKoD,QAAQuH,aAAa,OAAQ,UAClC3K,KAAK+/N,SAASp1N,aAAa,OAAQ3K,KAAKoD,QAAQsH,aAAa,SAC7D1K,KAAKoD,QAAQwH,gBAAgB,QAC7B5K,KAAK+/N,SAASp1N,aAAa,OAAQ3K,KAAKoD,QAAQsH,aAAa,SAC7D1K,KAAKoD,QAAQwH,gBAAgB,QAC7B5K,KAAK+/N,SAASp1N,aAAa,KAAM,eAAY,aAC7C,IAAIs1N,EAAgB,CAAC,cAAe,WAAY,QAAS,WAAY,OAAQ,gBAC7E,IAASxzN,EAAQ,EAAGA,EAAQzM,KAAKoD,QAAQqkB,WAAW9mB,OAAQ8L,IAAS,CAC7DuzH,EAAgBhgI,KAAKoD,QAAQqkB,WAAWhb,GAAOwzH,SAC/CjgI,KAAKoD,QAAQ0kB,aAAak4G,IAAkBnpH,EAAc7S,QAAQg8H,GAAiB,GAC/D,OAAlBA,GAA4C,SAAlBA,GAA8C,iBAAlBA,IAExDhgI,KAAK+/N,SAASp1N,aAAaq1H,EAAehgI,KAAKoD,QAAQqkB,WAAWhb,GAAOyzH,WACrE+/F,EAAcj8N,QAAQg8H,GAAiB,IACvChgI,KAAKoD,QAAQwH,gBAAgBo1H,GAC7BvzH,SAMpB8yN,EAAQr/N,UAAUsuE,gBAAkB,SAAUnzD,GAG1C,IAFA,IAAIrM,EAAQqM,EAAY,eAAkBrb,KAAKggB,gBAAkB,GAAKvgB,OAAO2V,KAAKpV,KAAKggB,gBACnF,CAAC,cAAe,WAAY,QAAS,WAAY,OAAQ,gBACpDnS,EAAK,EAAGqyN,EAAUlxN,EAAOnB,EAAKqyN,EAAQv/N,OAAQkN,IAAM,CACzD,IAAItN,EAAM2/N,EAAQryN,GAClB,IAAK,eAAkB7N,KAAKoD,QAAQsH,aAAanK,IAC7C,OAAQA,GACJ,IAAK,WACD,GAAK,eAAkBP,KAAK0/N,sBAAuDn0N,IAAnCvL,KAAK0/N,eAAe,YAA8BrkN,EAAW,CACzG,IAAIhD,EAA6C,aAAnCrY,KAAKoD,QAAQsH,aAAanK,IAA0D,KAAnCP,KAAKoD,QAAQsH,aAAanK,IAClD,SAAnCP,KAAKoD,QAAQsH,aAAanK,GAC9BP,KAAKiL,cAAc,CAAEoN,QAASA,IAAYgD,GAE9C,MACJ,IAAK,WACD,GAAK,eAAkBrb,KAAK0/N,sBAAwDn0N,IAApCvL,KAAK0/N,eAAe,aAA+BrkN,EAAW,CAC1G,IAAI7B,EAA8C,aAAnCxZ,KAAKoD,QAAQsH,aAAanK,IAA0D,KAAnCP,KAAKoD,QAAQsH,aAAanK,IAChD,SAAnCP,KAAKoD,QAAQsH,aAAanK,GACjCP,KAAKiL,cAAc,CAAEuO,SAAUA,IAAa6B,GAEhD,MACJ,IAAK,eACI,eAAkBrb,KAAK0/N,sBAA2Dn0N,IAAvCvL,KAAK0/N,eAAe,gBAAkCrkN,IAClGrb,KAAKiL,cAAc,CAAE+O,YAAaha,KAAKoD,QAAQ4W,cAAgBqB,GAEnE,MACJ,IAAK,eACD,GAAK,eAAkBrb,KAAK0/N,sBAA4Dn0N,IAAxCvL,KAAK0/N,eAAe,iBAAmCrkN,EAAW,CAC9G,IAAI8kN,EAAgD,QAA9BngO,KAAKoD,QAAQ48N,aAAyB,MAAQ,KACpEhgO,KAAKiL,cAAc,CAAE+0N,aAAcG,IAAoB9kN,GAE3D,MACJ,IAAK,SACK,eAAkBrb,KAAK0/N,sBAAqDn0N,IAAjCvL,KAAK0/N,eAAe,UAA4BrkN,IAAqC,KAAvBrb,KAAKoD,QAAQqV,OACxHzY,KAAKiL,cAAc,CAAEwN,MAAOzY,KAAKoD,QAAQqV,QAAU4C,GAEvD,MACJ,IAAK,QACI,eAAkBrb,KAAK0/N,sBAAoDn0N,IAAhCvL,KAAK0/N,eAAe,SAA2BrkN,IAC3Frb,KAAKiL,cAAc,CAAEuD,KAAMxO,KAAKoD,QAAQoL,OAAS6M,GAErD,SAWpBkkN,EAAQr/N,UAAUyT,OAAS,WACvB,IAAI8tH,EAAuBzhI,KAAKyK,SAC3B,eAAkBzK,KAAKyK,WAA+B,KAAlBzK,KAAKyK,WAC1Cg3H,EAAuBzhI,KAAKogO,uBAAuBpgO,KAAKyK,WAE5DzK,KAAK4/N,kBAAqB5/N,KAAkB,cAAIA,KAAK+/N,SAAW//N,KAAKoD,QACrEpD,KAAK2/N,eAAiB,OAAM7lN,YAAY,CACpC1W,QAASpD,KAAK4/N,kBACd9nN,eAAgB9X,KAAK8X,eACrBkD,WAAY,CACR3C,QAASrY,KAAKqY,QACd5S,UAAWzF,KAAKyF,UAChBgF,SAAUg3H,EACVjoH,SAAUxZ,KAAKwZ,SACfQ,YAAaha,KAAKga,YAClBiB,gBAAiBjb,KAAKib,mBAG9Bjb,KAAK4hI,0BACD5hI,KAAKw/N,eACLx/N,KAAK4/N,kBAAkBnsL,WAAWjuB,aAAaxlB,KAAKoD,QAASpD,KAAK4/N,mBAEtE5/N,KAAK4T,aACA,eAAkB5T,KAAKyY,SACxB,OAAMoH,SAAS7f,KAAKyY,MAAOzY,KAAK4/N,kBAAmB5/N,KAAK8X,eAAgB9X,KAAKib,iBACzEjb,KAAKw/N,gBACLx/N,KAAKoD,QAAQqV,MAAQzY,KAAK4/N,kBAAkBnnN,QAG/C,eAAkBzY,KAAKyY,SACxBzY,KAAKqgO,aAAergO,KAAKyY,MACzBzY,KAAKsgO,mBAEiB,OAAtBtgO,KAAKggO,cAA+C,KAAtBhgO,KAAKggO,aACnChgO,KAAK4/N,kBAAkBI,aAAehgO,KAAKggO,aAErC,eAAkBhgO,KAAK0/N,sBAA4Dn0N,IAAxCvL,KAAK0/N,eAAe,iBACrE1/N,KAAKonB,iBAAiB,CAAC,iBAE3BpnB,KAAK0uC,cAAgB1uC,KAAKyY,MAC1BzY,KAAKy/N,mBAAqBz/N,KAAKyY,MAC/BzY,KAAK4/N,kBAAkBt/E,aAAetgJ,KAAK4/N,kBAAkBnnN,MAC7D,OAAMyC,SAASlb,KAAKsF,MAAOtF,KAAK2/N,eAAenwN,YAC1C,eAAkB,eAAQxP,KAAKoD,QAAS,cAAgB,eAAQpD,KAAKoD,QAAS,YAAYgV,WAC3FpY,KAAKqY,SAAU,GAEnBrY,KAAK6T,kBAET0rN,EAAQr/N,UAAU0hI,wBAA0B,WACxC,IAAK,eAAkB5hI,KAAKggB,gBACxB,IAAK,IAAInS,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKpV,KAAKggB,gBAAiBnS,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC1E,IAAItN,EAAMsD,EAAGgK,GACb,GAAIgJ,EAAc7S,QAAQzD,IAAQ,EAC9B,GAAY,UAARA,EAAiB,CACjB,IAAI0f,EAAqBjgB,KAAKogO,uBAAuBpgO,KAAKggB,eAAe,GAAKzf,IACnD,KAAvB0f,GACA,eAAS,CAACjgB,KAAK2/N,eAAenwN,WAAYyQ,EAAmBhc,MAAM,WAGtE,GAAY,UAAR1D,EAAiB,CACtB,IAAI2f,EAAWlgB,KAAK2/N,eAAenwN,UAAU9E,aAAanK,GAC1D2f,EAAY,eAAkBA,GAC1BlgB,KAAKggB,eAAe,GAAKzf,GADc2f,EAAWlgB,KAAKggB,eAAe,GAAKzf,GAE/EP,KAAK2/N,eAAenwN,UAAU7E,aAAapK,EAAK2f,QAGhDlgB,KAAK2/N,eAAenwN,UAAU7E,aAAapK,EAAKP,KAAKggB,eAAe,GAAKzf,MAM7Fg/N,EAAQr/N,UAAUsgI,wBAA0B,WACxC,IAAK,eAAkBxgI,KAAKggB,gBACxB,IAAK,IAAInS,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKpV,KAAKggB,gBAAiBnS,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC1E,IAAItN,EAAMsD,EAAGgK,GACTgJ,EAAc7S,QAAQzD,GAAO,IAC7BP,KAAK8/N,YAAc,eAAkB9/N,KAAK+/N,UAAY//N,KAAK+/N,SAASp1N,aAAapK,EAAKP,KAAKggB,eAAe,GAAKzf,IAAQP,KAAKoD,QAAQuH,aAAapK,EAAKP,KAAKggB,eAAe,GAAKzf,OAK/Lg/N,EAAQr/N,UAAUmgB,eAAiB,SAAU0hH,EAAUC,GACnD,OAAMxhH,YAAYxgB,KAAKogO,uBAAuBr+F,GAAW,CAAC/hI,KAAK2/N,eAAenwN,WAAYxP,KAAKogO,uBAAuBp+F,KAE1Hu9F,EAAQr/N,UAAUkgO,uBAAyB,SAAUG,GACjD,IAAIvvM,EAASuvM,EAIb,OAHK,eAAkBA,IAAsC,KAAnBA,IACtCvvM,EAAUuvM,EAAe1lN,QAAQ,OAAQ,KAAMtO,QAE5CykB,GAEXuuM,EAAQr/N,UAAUogO,gBAAkB,WAC3BtgO,KAAKoX,WACNpX,KAAK4/N,kBAAkBj1N,aAAa,QAAS3K,KAAKqgO,eAG1Dd,EAAQr/N,UAAU0T,WAAa,WAC3B,OAAa9H,IAAI9L,KAAK4/N,kBAAmB,QAAS5/N,KAAK4zC,aAAc5zC,MACrE,OAAa8L,IAAI9L,KAAK4/N,kBAAmB,OAAQ5/N,KAAK6zC,gBAAiB7zC,MACvE,OAAa8L,IAAI9L,KAAK4/N,kBAAmB,UAAW5/N,KAAKie,eAAgBje,MACzE,OAAa8L,IAAI9L,KAAK4/N,kBAAmB,QAAS5/N,KAAK2d,aAAc3d,MACrE,OAAa8L,IAAI9L,KAAK4/N,kBAAmB,SAAU5/N,KAAKqwC,cAAerwC,MACnEA,KAAKw9M,QACL,OAAa1xM,IAAI9L,KAAKqe,YAAa,QAASre,KAAKskN,UAAWtkN,MAEhEA,KAAKkf,kBACA,eAAkBlf,KAAK2/N,eAAenwN,UAAUtD,cAAc,mBAA6C,SAAxBlM,KAAK8X,gBACtF9X,KAAK2/N,eAAenwN,UAAUtK,UAAUmB,SAAS,eACpDrG,KAAK2/N,eAAenwN,UAAUtK,UAAUmB,SAAS,cACjD,OAAayF,IAAK9L,KAAK2/N,eAAenwN,UAAUtD,cAAc,iBAAmB,iBAAkBlM,KAAKwgO,iBAAkBxgO,OAGlIu/N,EAAQr/N,UAAUsgO,iBAAmB,WACjCxgO,KAAK2/N,eAAenwN,UAAUtK,UAAU4G,IAAI,iBAC5C,IAAIgoC,EAAQ9zC,KAAK2/N,eAAenwN,UAAUtD,cAAc,iBACnD,eAAkB4nC,KACnBA,EAAM5uC,UAAU4G,IAAI,eAChBgoC,EAAM5uC,UAAUmB,SAAS,mBACzBytC,EAAM5uC,UAAUC,OAAO,oBAInCo6N,EAAQr/N,UAAUugO,WAAa,SAAUhoN,GACrC,IAAIonN,EAAe7/N,KAAKs0H,oBACxBt0H,KAAKs0H,qBAAsB,EAC3Bt0H,KAAKyY,MAAQA,EACA,MAATA,GAAiBzY,KAAK2/N,eAAenwN,UAAUtK,UAAUmB,SAAS,kBAClErG,KAAK2/N,eAAenwN,UAAUtK,UAAUC,OAAO,iBAEnDnF,KAAKs0H,oBAAsBurG,GAE/BN,EAAQr/N,UAAUokN,UAAY,WAO1B,GANItkN,KAAKoX,UACLpX,KAAKygO,WAAW,IAGhBzgO,KAAKygO,WAAWzgO,KAAKqgO,eAEpB,eAAkBrgO,KAAK2/N,gBAAiB,CACzC,IAAI7rL,EAAQ9zC,KAAK2/N,eAAenwN,UAAUtD,cAAc,iBACnD,eAAkB4nC,IAAkC,WAAxB9zC,KAAK8X,iBAC7B,eAAkB9X,KAAKqgO,eAAuC,KAAtBrgO,KAAKqgO,cAC9CvsL,EAAM5uC,UAAU4G,IAAI,kBACpBgoC,EAAM5uC,UAAUC,OAAO,gBAEI,KAAtBnF,KAAKqgO,eACVvsL,EAAM5uC,UAAU4G,IAAI,eACpBgoC,EAAM5uC,UAAUC,OAAO,sBAKvCo6N,EAAQr/N,UAAU0zC,aAAe,SAAU7tB,GACvC,IAAIO,EAAY,CACZ9W,UAAWxP,KAAK2/N,eAAenwN,UAC/Bd,MAAOqX,EACPtN,MAAOzY,KAAKyY,OAEhBzY,KAAKiI,QAAQ,QAASqe,IAE1Bi5M,EAAQr/N,UAAU2zC,gBAAkB,SAAU9tB,GACb,OAAvB/lB,KAAK0uC,eAAyC,OAAf1uC,KAAKyY,OAAmD,KAAjCzY,KAAK4/N,kBAAkBnnN,OAC9EzY,KAAK0uC,gBAAkB1uC,KAAKyY,OAC7BzY,KAAK+iI,iBAAiBh9G,GAAM,GAEhC,IAAIO,EAAY,CACZ9W,UAAWxP,KAAK2/N,eAAenwN,UAC/Bd,MAAOqX,EACPtN,MAAOzY,KAAKyY,OAEhBzY,KAAKiI,QAAQ,OAAQqe,IAEzBi5M,EAAQr/N,UAAU+d,eAAiB,SAAU8H,GACnB,KAAjBA,EAAKvS,SAAmC,IAAjBuS,EAAKvS,WAA4C,OAAvBxT,KAAK0uC,eAAiD,KAAvB1uC,KAAK0uC,eAAyC,OAAf1uC,KAAKyY,OAAiC,KAAfzY,KAAKyY,OAAkD,KAAjCzY,KAAK4/N,kBAAkBnnN,QACpLzY,KAAKiL,cAAc,CAAEwN,MAAOzY,KAAK4/N,kBAAkBnnN,QAAS,IAGpE8mN,EAAQr/N,UAAUyd,aAAe,SAAUoI,GAEvC,IAAI26M,EAAa1gO,KACbsmB,EAAY,CACZ5X,MAAOqX,EACPtN,MAAOzY,KAAK4/N,kBAAkBnnN,MAC9Bi2B,cAAe1uC,KAAKy/N,mBACpBjwN,UAAWxP,KAAK2/N,eAAenwN,WAEnCxP,KAAKy/N,mBAAqBz/N,KAAK4/N,kBAAkBnnN,MAE7CzY,KAAKoX,YACLspN,EAAW57F,YAAY,CAAErsH,MAAOzY,KAAK4/N,kBAAkBnnN,QACvDzY,KAAKqX,eAAgB,GAErBrX,KAAKm2B,QACLn2B,KAAKqX,eAAgB,GAEzBrX,KAAKiI,QAAQ,QAASqe,GACtBP,EAAK9G,mBAETsgN,EAAQr/N,UAAUmwC,cAAgB,SAAUtqB,GACxC/lB,KAAKiL,cAAc,CAAEwN,MAAOzY,KAAK4/N,kBAAkBnnN,QAAS,GACxDzY,KAAK0uC,eAAiB1uC,KAAKyY,OAC3BzY,KAAK+iI,iBAAiBh9G,GAAM,GAEhCA,EAAK9G,mBAETsgN,EAAQr/N,UAAU6iI,iBAAmB,SAAUr0H,EAAOiyN,GAClD,IAAIr6M,EAAY,CACZ5X,MAAOA,EACP+J,MAAOzY,KAAKyY,MACZi2B,cAAe1uC,KAAK0uC,cACpBl/B,UAAWxP,KAAK2/N,eAAenwN,UAC/Bk0H,cAAei9F,IAA4B,EAC3ChyN,aAAcgyN,IAA4B,GAE9C3gO,KAAKqX,eAAgB,EACrBrX,KAAKiI,QAAQ,SAAUqe,GACvBtmB,KAAK0uC,cAAgB1uC,KAAKyY,MAEG,UAAzBzY,KAAKoD,QAAQsM,SAAuB1P,KAAK8/N,WAAmC,YAAtB,OAAQpkL,KAAK1rC,OACnEhQ,KAAKoD,QAAQqV,MAAQzY,KAAK4/N,kBAAkBnnN,QAGpD8mN,EAAQr/N,UAAUgf,eAAiB,WAC3Blf,KAAKib,kBACDjb,KAAKqY,QACL,OAAavM,IAAI9L,KAAK2/N,eAAexhN,YAAa,uBAAwBne,KAAK4gO,kBAAmB5gO,MAGlG,OAAamF,OAAOnF,KAAK2/N,eAAexhN,YAAa,uBAAwBne,KAAK4gO,qBAI9FrB,EAAQr/N,UAAU0gO,kBAAoB,SAAUlyN,GAE5C,GADAA,EAAMwE,kBACAlT,KAAK2/N,eAAexhN,YAAYjZ,UAAUmB,SAASg5N,IAAgBr/N,KAAK2/N,eAAenwN,UAAUtK,UAAUmB,SAAS,kBAAmB,CACzI,OAAMwZ,SAAS,GAAI7f,KAAK4/N,kBAAmB5/N,KAAK8X,eAAgB9X,KAAKib,iBACjEjb,KAAKw/N,gBACLx/N,KAAKoD,QAAQqV,MAAQzY,KAAK4/N,kBAAkBnnN,OAEhDzY,KAAKiL,cAAc,CAAEwN,MAAOzY,KAAK4/N,kBAAkBnnN,QAAS,GAC5D,IAAI6N,EAAY,CACZ5X,MAAOA,EACP+J,MAAOzY,KAAK4/N,kBAAkBnnN,MAC9Bi2B,cAAe1uC,KAAKy/N,mBACpBjwN,UAAWxP,KAAK2/N,eAAenwN,WAKnC,GAHAxP,KAAKiI,QAAQ,QAASqe,GACtBtmB,KAAKy/N,mBAAqBz/N,KAAK4/N,kBAAkBnnN,MACjDzY,KAAK+iI,iBAAiBr0H,GAAO,GACzB,eAAQ1O,KAAKoD,QAAS,QAAS,CAC/B,IAAIA,EAAUpD,KAAKoD,QACfkc,EAAa1R,SAAS2R,YAAY,iBACtCD,EAAWE,UAAU,SAAS,GAAO,GACrCpc,EAAQqc,cAAcH,MAIlCigN,EAAQr/N,UAAUszC,aAAe,WAC7B,OAAaruC,OAAOnF,KAAK4/N,kBAAmB,QAAS5/N,KAAK4zC,cAC1D,OAAazuC,OAAOnF,KAAK4/N,kBAAmB,OAAQ5/N,KAAK6zC,iBACzD,OAAa1uC,OAAOnF,KAAK4/N,kBAAmB,UAAW5/N,KAAKie,gBAC5D,OAAa9Y,OAAOnF,KAAK4/N,kBAAmB,QAAS5/N,KAAK2d,cAC1D,OAAaxY,OAAOnF,KAAK4/N,kBAAmB,SAAU5/N,KAAKqwC,eACvDrwC,KAAKw9M,QACL,OAAar4M,OAAOnF,KAAKqe,YAAa,QAASre,KAAKskN,YAEnD,eAAkBtkN,KAAK2/N,eAAenwN,UAAUtD,cAAc,mBAA6C,SAAxBlM,KAAK8X,gBACtF9X,KAAK2/N,eAAenwN,UAAUtK,UAAUmB,SAAS,cACpDrG,KAAK2/N,eAAenwN,UAAUtK,UAAUmB,SAAS,eACjD,OAAalB,OAAQnF,KAAK2/N,eAAenwN,UAAUtD,cAAc,iBAAmB,iBAAkBlM,KAAKwgO,mBAUnHjB,EAAQr/N,UAAUsS,QAAU,WACxBxS,KAAKwzC,eACwB,UAAzBxzC,KAAKoD,QAAQsM,SAAuB1P,KAAK8/N,YACzC,eAAO9/N,KAAK2/N,eAAenwN,UAAU6lC,qBAAqB,YAAY,IACtEr1C,KAAK4/N,kBAAoB5/N,KAAKoD,QAC9BpD,KAAKoD,QAAQwH,gBAAgB,SAEjC5K,KAAK4/N,kBAAkBnnN,MAAQzY,KAAK4/N,kBAAkBt/E,aACtDtgJ,KAAK4/N,kBAAkB16N,UAAUC,OAAO,WACxCnF,KAAKonB,iBAAiB,CAAC,gBAAiB,gBAAiB,oBACpD,eAAkBpnB,KAAK2/N,kBACxB3/N,KAAK2/N,eAAenwN,UAAUgY,sBAAsB,WAAYxnB,KAAK4/N,mBACrE,eAAO5/N,KAAK2/N,eAAenwN,YAE/BxP,KAAK2/N,eAAiB,KACtB,OAAMntN,UACN3P,EAAO3C,UAAUsS,QAAQlP,KAAKtD,OAUlCu/N,EAAQr/N,UAAUq0B,QAAU,SAAUxwB,EAAUywB,GAC5C,OAAMD,QAAQxwB,EAAUywB,EAAOx0B,KAAK2/N,eAAenwN,UAAWxP,KAAK4/N,kBAAmB5/N,KAAKuE,gBAO/Fg7N,EAAQr/N,UAAU6U,eAAiB,WAC/B,IAAIi3B,EAAY,CAAC,SACjB,OAAOhsC,KAAKgV,aAAag3B,IAS7BuzL,EAAQr/N,UAAUkb,cAAgB,SAAUqM,GACxC,IAAK,IAAI5Z,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKqS,GAAa5Z,EAAKhK,EAAGlD,OAAQkN,IAAM,CACjE,IAAItN,EAAMsD,EAAGgK,GACD,aAARtN,GACAP,KAAKiL,cAAc,CAAEoN,SAAS,IAAS,GACvC,OAAM+R,WAAWpqB,KAAKqY,QAASrY,KAAK4/N,kBAAmB5/N,KAAK8X,eAAgB9X,KAAK2/N,eAAenwN,YAEnF,aAARjP,GACLP,KAAKiL,cAAc,CAAEuO,UAAU,IAAQ,GACvC,OAAM2Q,YAAYnqB,KAAKwZ,SAAUxZ,KAAK4/N,oBAEzB,UAARr/N,EACLP,KAAK4/N,kBAAkB16N,UAAU4G,IAAI2b,EAAW,GAAKlnB,IAExC,gBAARA,GACLP,KAAKiL,cAAc,CAAE+O,YAAayN,EAAW,GAAKlnB,KAAQ,GAC1D,OAAM2pB,eAAelqB,KAAKga,YAAaha,KAAK4/N,qBAE/B,SAARr/N,GAAkBP,KAAK4/N,kBAAkBlwN,QAC9C1P,KAAK4/N,kBAAkBj1N,aAAapK,EAAKknB,EAAW,GAAKlnB,OAarEg/N,EAAQr/N,UAAUknB,iBAAmB,SAAUK,GAC3C,IAAK,IAAI5Z,EAAK,EAAG6b,EAAejC,EAAY5Z,EAAK6b,EAAa/oB,OAAQkN,IAAM,CACxE,IAAItN,EAAMmpB,EAAa7b,GACX,aAARtN,GACAP,KAAKiL,cAAc,CAAEoN,SAAS,IAAQ,GACtC,OAAM+R,WAAWpqB,KAAKqY,QAASrY,KAAK4/N,kBAAmB5/N,KAAK8X,eAAgB9X,KAAK2/N,eAAenwN,YAEnF,aAARjP,GACLP,KAAKiL,cAAc,CAAEuO,UAAU,IAAS,GACxC,OAAM2Q,YAAYnqB,KAAKwZ,SAAUxZ,KAAK4/N,oBAEzB,gBAARr/N,GACLP,KAAKiL,cAAc,CAAE+O,YAAa,OAAQ,GAC1C,OAAMkQ,eAAelqB,KAAKga,YAAaha,KAAK4/N,oBAG5C5/N,KAAK4/N,kBAAkBh1N,gBAAgBrK,KASnDg/N,EAAQr/N,UAAU+mB,QAAU,WACpBrZ,SAASyT,gBAAkBrhB,KAAK4/N,mBAAqB5/N,KAAKqY,UAC1DrY,KAAK4/N,kBAAkB7/M,SACnB/f,KAAK2/N,eAAenwN,UAAUtK,UAAUmB,SAAS,kBAC9CrG,KAAK2/N,eAAenwN,UAAUtK,UAAUmB,SAAS,cACjDrG,KAAK2/N,eAAenwN,UAAUtK,UAAUmB,SAAS,cACpD,eAAS,CAACrG,KAAK2/N,eAAenwN,WAAY,CAAC8vN,MASvDC,EAAQr/N,UAAU6hB,SAAW,WACrBnU,SAASyT,gBAAkBrhB,KAAK4/N,mBAAqB5/N,KAAKqY,UAC1DrY,KAAK4/N,kBAAkB9/M,QACnB9f,KAAK2/N,eAAenwN,UAAUtK,UAAUmB,SAAS,kBAC9CrG,KAAK2/N,eAAenwN,UAAUtK,UAAUmB,SAAS,cACjDrG,KAAK2/N,eAAenwN,UAAUtK,UAAUmB,SAAS,cACpD,gBAAY,CAACrG,KAAK2/N,eAAenwN,WAAY,CAAC8vN,MAI1Dl/N,EAAW,CACP,eAAS,SACVm/N,EAAQr/N,UAAW,YAAQ,GAC9BE,EAAW,CACP,gBAAS,IACVm/N,EAAQr/N,UAAW,gBAAY,GAClCE,EAAW,CACP,eAAS,OACVm/N,EAAQr/N,UAAW,aAAS,GAC/BE,EAAW,CACP,eAAS,UACVm/N,EAAQr/N,UAAW,sBAAkB,GACxCE,EAAW,CACP,eAAS,KACVm/N,EAAQr/N,UAAW,gBAAY,GAClCE,EAAW,CACP,eAAS,OACVm/N,EAAQr/N,UAAW,mBAAe,GACrCE,EAAW,CACP,eAAS,OACVm/N,EAAQr/N,UAAW,oBAAgB,GACtCE,EAAW,CACP,eAAS,KACVm/N,EAAQr/N,UAAW,sBAAkB,GACxCE,EAAW,CACP,gBAAS,IACVm/N,EAAQr/N,UAAW,iBAAa,GACnCE,EAAW,CACP,gBAAS,IACVm/N,EAAQr/N,UAAW,eAAW,GACjCE,EAAW,CACP,gBAAS,IACVm/N,EAAQr/N,UAAW,uBAAmB,GACzCE,EAAW,CACP,gBAAS,IACVm/N,EAAQr/N,UAAW,yBAAqB,GAC3CE,EAAW,CACP,eAAS,OACVm/N,EAAQr/N,UAAW,aAAS,GAC/BE,EAAW,CACP,kBACDm/N,EAAQr/N,UAAW,eAAW,GACjCE,EAAW,CACP,kBACDm/N,EAAQr/N,UAAW,iBAAa,GACnCE,EAAW,CACP,kBACDm/N,EAAQr/N,UAAW,cAAU,GAChCE,EAAW,CACP,kBACDm/N,EAAQr/N,UAAW,YAAQ,GAC9BE,EAAW,CACP,kBACDm/N,EAAQr/N,UAAW,aAAS,GAC/BE,EAAW,CACP,kBACDm/N,EAAQr/N,UAAW,aAAS,GAC/Bq/N,EAAUn/N,EAAW,CACjB,QACDm/N,GACIA,EAptBiB,CAqtB1B,S,kCC1vBF,IAAMsB,EAAkB,GAClBC,EAAoB,QACpBC,EAAuB,IAEvBC,EAAkB,CAEpBC,SAAU,SAAUC,GAChB,OAAOA,EAAM,KAEjBC,QAAS,SAAUD,EAAK75L,EAAc+5L,GAClC,OAAOF,EAAM75L,GAAiB+5L,EAAe,GAAH,IAAS,KAEvDC,YAAa,SAAUH,GACnB,OAAOA,EAAM,SAEjBI,kBAAmB,SAAUJ,EAAK75L,GAC9B,OAAO65L,EAAM75L,EAAe,SAEhCk6L,WAAY,SAAUL,GAClB,OAAOA,EAAM,SAEjBM,QAAS,SAAUN,GACf,OAAOA,EAAML,EAAkBC,EAAoBC,GAIvDU,SAAU,SAAUC,GAChB,OAAa,IAANA,GAEXC,QAAS,SAAUD,EAAKr6L,EAAc+5L,GAClC,OAAOM,EAAMr6L,GAAiB+5L,EAAkB,GAAL,KAE/CQ,YAAa,SAAUF,GACnB,OAAOA,EAAM,UAEjBG,kBAAmB,SAAUH,EAAKr6L,GAC9B,OAAOq6L,EAAMr6L,EAAe,OAEhCy6L,WAAY,SAAUJ,GAClB,OAAOA,EAAM,SAEjBK,QAAS,SAAUL,GACf,OAAOA,EAAMM,eAAiBC,iBAAmBC,oBAAsB,KAK3EC,QAAS,SAAUC,EAAI/6L,EAAc+5L,GACjC,OAAOgB,EAAK/6L,GAAiB+5L,EAAkB,GAAL,IAAW,KAEzDiB,QAAS,SAAUD,EAAI/6L,EAAc+5L,GACjC,OAAOgB,EAAK/6L,GAAiB+5L,EAAkB,GAAL,KAE9CkB,WAAY,SAAUF,EAAI/6L,EAAc+5L,GACpC,OAAOgB,EAAK/6L,GAAiB+5L,EAAkB,GAAL,IAAW,UAEzDmB,iBAAkB,SAAUH,GACxB,OAAOA,EAAK,OAAU,UAE1BI,UAAW,SAAUJ,EAAI/6L,EAAc+5L,GACnC,OAAOgB,EAAK/6L,GAAiB+5L,EAAkB,GAAL,IAAW,UAExDqB,OAAQ,SAAUL,EAAI/6L,GAClB,OAAO+6L,EAAKvB,EAAkBC,EAAoBC,EAAuB,IAAO15L,EAAe,IAIpGq7L,YAAa,SAAUC,GACnB,OAAgB,QAATA,GAEXC,YAAa,SAAUD,GACnB,MAAgB,SAATA,GAEXE,WAAY,SAAUF,EAAQt7L,EAAc+5L,GACxC,OAAOuB,EAASt7L,GAAiB+5L,EAAkB,GAAL,IAAW,UAE7D0B,qBAAsB,SAAUH,EAAQt7L,GACpC,OAAOs7L,EAASt7L,GAEpB07L,cAAe,SAAUJ,GACrB,OAAOA,EAAS,IAEnBK,WAAY,SAAUC,GAClB,OAAOA,EAAQpC,EAAkBC,EAAoBC,EAAuB,SAKjFmC,kBAAmB,SAAUC,EAAc97L,GACvC,OAAO87L,EAAe97L,EAAe,SAEzC+7L,kBAAmB,SAAUD,EAAc97L,GACvC,OAAO87L,EAAe97L,EAAe,UAEzCg8L,iBAAkB,SAAUF,GACxB,MAAsB,SAAfA,EAA2B,QAEtCG,qBAAsB,SAAUH,EAAc97L,GAC1C,OAAO87L,EAAe97L,GAE1Bk8L,oBAAqB,SAAUJ,EAAc97L,GACzC,OAAO87L,EAAe97L,EAAe,IAEvCm8L,iBAAkB,SAAUL,EAAc97L,GACtC,OAAO87L,EAAetC,EAAkBC,EAAoBC,EAAuB15L,EAAe,SAKxGo8L,WAAY,SAAUC,GAClB,OAAe,QAARA,GAEXC,WAAY,SAAUD,GAClB,MAAe,QAARA,GAEXE,UAAW,SAAUF,EAAOr8L,EAAc+5L,GACtC,OAAOsC,EAAQr8L,GAAiB+5L,EAAkB,GAAL,IAAW,UAE5DyC,cAAe,SAAUH,GACrB,OAAe,GAARA,GAEXI,oBAAqB,SAAUJ,EAAOr8L,GAClC,OAAOq8L,EAAQr8L,EAAe,IAElC08L,UAAW,SAAUL,GACjB,OAAOA,EAAQ7C,EAAkBC,EAAoBC,EAAuB,SAIhFiD,QAAS,SAAUC,GACf,OAAOA,EAAMpD,EAAkBC,EAAoBC,GAEvDmD,QAAS,SAAUD,GACf,OAAOA,EAAMpD,EAAkBC,EAAoBC,EAAuB,KAE9EoD,OAAQ,SAAUF,EAAK58L,GACnB,OAAO48L,EAAMpD,EAAkBC,EAAoBC,EAAuB,IAAO15L,EAAe,IAEpG+8L,WAAY,SAAUH,GAClB,OAAOA,EAAMpD,EAAkBC,EAAoBC,EAAuB,SAE9EsD,iBAAkB,SAAUJ,EAAK58L,GAC7B,OAAO48L,EAAMpD,EAAkBC,EAAoBC,EAAuB15L,EAAe,SAE7Fi9L,UAAW,SAAUL,GACjB,OAAOA,EAAMpD,EAAkBC,EAAoBC,EAAuB,SAS9EwD,iBAAkB,SAAUC,EAAYh5B,GACpC,OAAQg5B,EAAa,IAAOh5B,GAEhCi5B,iBAAkB,SAAUC,EAAMl5B,GAC9B,OAAc,IAAVA,EACO,EAEHk5B,EAAOl5B,EAAS,KAW5Bm5B,QAAS,SAAUlhG,EAAYmhG,EAAWC,GAAmD,IAAvCx9L,EAAY3mC,UAAAC,OAAA,QAAA4K,IAAA7K,UAAA,GAAAA,UAAA,GAAG,GAAI0gO,EAAU1gO,UAAAC,OAAA,QAAA4K,IAAA7K,UAAA,IAAAA,UAAA,GAQ/E,OAPiB,MAAbkkO,IACAA,EAAY,MAEE,MAAdC,IACAA,EAAa,MAGTD,GACJ,IAAK,QACD,OAAQC,GACJ,IAAK,MACD,OAAO7kO,KAAK0iO,YAAYj/F,GAE5B,IAAK,MACD,OAAOzjI,KAAK4iO,YAAYn/F,GAE5B,IAAK,KACD,OAAOzjI,KAAK6iO,WAAWp/F,EAAYp8F,EAAc+5L,GAErD,IAAK,OACD,OAAOphO,KAAK8iO,qBAAqBr/F,EAAYp8F,GAEjD,IAAK,QACD,OAAOrnC,KAAK+iO,cAAct/F,GAE9B,IAAK,KACD,OAAOzjI,KAAK8kO,WAAWrhG,GAE3B,QACI,OAAOA,EAGnB,IAAK,MACD,OAAQohG,GACJ,IAAK,MACD,OAAO7kO,KAAKihO,SAASx9F,GAEzB,IAAK,KACD,OAAOzjI,KAAKmhO,QAAQ19F,EAAYp8F,EAAc+5L,GAElD,IAAK,QACD,OAAOphO,KAAKqhO,YAAY59F,GAE5B,IAAK,OACD,OAAOzjI,KAAKshO,kBAAkB79F,EAAYp8F,GAE9C,IAAK,QACD,OAAOrnC,KAAKuhO,WAAW99F,GAE3B,IAAK,KACD,OAAOzjI,KAAK+kO,QAAQthG,GAExB,QACI,OAAOA,EAGnB,IAAK,MACD,OAAQohG,GACJ,IAAK,MACD,OAAO7kO,KAAKyhO,SAASh+F,GAEzB,IAAK,KACD,OAAOzjI,KAAK2hO,QAAQl+F,EAAYp8F,EAAc+5L,GAElD,IAAK,QACD,OAAOphO,KAAK4hO,YAAYn+F,GAE5B,IAAK,OACD,OAAOzjI,KAAK6hO,kBAAkBp+F,EAAYp8F,GAE9C,IAAK,QACD,OAAOrnC,KAAK8hO,WAAWr+F,GAE3B,IAAK,KACD,OAAOzjI,KAAKglO,QAAQvhG,GAExB,QACI,OAAOA,EAGnB,IAAK,KACD,OAAQohG,GACJ,IAAK,MACD,OAAO7kO,KAAKmiO,QAAQ1+F,EAAYp8F,EAAc+5L,GAElD,IAAK,MACD,OAAOphO,KAAKqiO,QAAQ5+F,EAAYp8F,EAAc+5L,GAElD,IAAK,QACD,OAAOphO,KAAKsiO,WAAW7+F,EAAYp8F,EAAc+5L,GAErD,IAAK,OACD,OAAOphO,KAAKuiO,iBAAiB9+F,GAEjC,IAAK,QACD,OAAOzjI,KAAKwiO,UAAU/+F,EAAYp8F,EAAc+5L,GAEpD,IAAK,KACD,OAAOphO,KAAKilO,OAAOxhG,EAAYp8F,GAEnC,QACI,OAAOo8F,EAGnB,IAAK,QACD,OAAQohG,GACJ,IAAK,MACD,OAAO7kO,KAAKyjO,WAAWhgG,GAE3B,IAAK,MACD,OAAOzjI,KAAK2jO,WAAWlgG,GAE3B,IAAK,KACD,OAAOzjI,KAAK4jO,UAAUngG,EAAYp8F,EAAc+5L,GAEpD,IAAK,OACD,OAAOphO,KAAK8jO,oBAAoBrgG,EAAYp8F,GAEhD,IAAK,QACD,OAAOrnC,KAAK6jO,cAAcpgG,GAE9B,IAAK,KACD,OAAOzjI,KAAK+jO,UAAUtgG,GAE1B,QACI,OAAOA,EAGnB,IAAK,OACD,OAAQohG,GACJ,IAAK,MACD,OAAO7kO,KAAKkjO,kBAAkBz/F,EAAYp8F,GAE9C,IAAK,MACD,OAAOrnC,KAAKojO,kBAAkB3/F,EAAYp8F,GAE9C,IAAK,KACD,OAAOrnC,KAAKqjO,iBAAiB5/F,GAEjC,IAAK,QACD,OAAOzjI,KAAKsjO,qBAAqB7/F,EAAYp8F,GAEjD,IAAK,QACD,OAAOrnC,KAAKujO,oBAAoB9/F,EAAYp8F,GAEhD,IAAK,KACD,OAAOrnC,KAAKklO,iBAAiBzhG,EAAYp8F,GAE7C,QACI,OAAOo8F,EAGnB,IAAK,KACD,OAAQohG,GACJ,IAAK,MACD,OAAO7kO,KAAKgkO,QAAQvgG,GACxB,IAAK,MACD,OAAOzjI,KAAKkkO,QAAQzgG,GACxB,IAAK,KACD,OAAOzjI,KAAKmkO,OAAO1gG,EAAYp8F,GACnC,IAAK,QACD,OAAOrnC,KAAKokO,WAAW3gG,GAC3B,IAAK,OACD,OAAOzjI,KAAKqkO,iBAAiB5gG,EAAYp8F,GAC7C,IAAK,QACD,OAAOrnC,KAAKskO,UAAU7gG,GAC1B,QACI,OAAOA,EAEnB,QACI,OAAOA,KAMRu9F,U,kCC9Vf,2EAAI3hO,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxCK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAmB5DukO,EAA6B,SAAUtiO,GASvC,SAASsiO,EAAYhiO,EAASC,GAC1B,OAAOP,EAAOS,KAAKtD,KAAMmD,EAASC,IAAYpD,KAoFlD,OA7FAX,EAAU8lO,EAAatiO,GAiBvBsiO,EAAYjlO,UAAU4T,UAAY,WAC9B9T,KAAKm/K,QAAS,EACdn/K,KAAKoD,QAAQkI,GAAKtL,KAAKoD,QAAQkI,IAAM,eAAY,mBACjDzI,EAAO3C,UAAU4T,UAAUxQ,KAAKtD,OAEpCmlO,EAAYjlO,UAAUyD,WAAa,WAC/Bd,EAAO3C,UAAUyD,WAAWL,KAAKtD,MACjC,eAAWA,KAAKoD,QAAS,CAAE,KAAQ,UAAW,SAAY,MAC1DpD,KAAKoD,QAAQ2D,MAAMgd,OAAS,eAAiB/jB,KAAKoD,SAASwO,YAW/DuzN,EAAYjlO,UAAUwF,KAAO,SAAUX,EAAKC,EAAM1E,GAC9CuC,EAAO3C,UAAU4hL,SAASx+K,KAAKtD,KAAM,KAAM,KAAM+E,EAAKC,EAAM,KAAM1E,IAQtE6kO,EAAYjlO,UAAU2F,MAAQ,WAC1BhD,EAAO3C,UAAU0gL,UAAUt9K,KAAKtD,OAUpCmlO,EAAYjlO,UAAU+U,kBAAoB,SAAUC,EAASC,GACzDtS,EAAO3C,UAAU+U,kBAAkB3R,KAAKtD,KAAMkV,EAASC,GACvD,IAAK,IAAItH,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKF,GAAUrH,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC9D,IAAIwH,EAAOxR,EAAGgK,GACd,OAAQwH,GACJ,IAAK,SACDrV,KAAK6F,QACL7F,KAAKi0B,OAAS/e,EAAQ+e,OACtB,MACJ,IAAK,SACDj0B,KAAKwzC,aAAar+B,EAAQ7U,QAC1BN,KAAK4T,aACL,SAUhBuxN,EAAYjlO,UAAU4U,cAAgB,WAClC,MAAO,eAEX1U,EAAW,CACP,eAAS,KACV+kO,EAAYjlO,UAAW,cAAU,GACpCE,EAAW,CACP,eAAS,KACV+kO,EAAYjlO,UAAW,cAAU,GACpCE,EAAW,CACP,eAAW,GAAI,SAChB+kO,EAAYjlO,UAAW,aAAS,GACnCilO,EAAc/kO,EAAW,CACrB,QACD+kO,GACIA,EA9FqB,CA+F9B,S,gMCnIE9lO,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GA2BxC,EAAgC,SAAU8C,GAE1C,SAASuiO,EAAeC,EAAYx2M,GAChC,IAAIxrB,EAAQR,EAAOS,KAAKtD,KAAMqlO,EAAYx2M,IAAmB7uB,KAM7D,OALAqD,EAAM+zB,WAAa,GACnB/zB,EAAMurB,OAASy2M,EACfhiO,EAAMq3F,QAAU7rE,EAChBxrB,EAAMiiO,eAAiB,IAAI,OAAsBjiO,EAAMurB,QACvDvrB,EAAMw1C,mBACCx1C,EA6OX,OArPAhE,EAAU+lO,EAAgBviO,GAe1BuiO,EAAellO,UAAU4wF,YAAc,WACnC,IAAIvyC,EAAMv+C,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,SACpDwsF,EAAWhxF,KAAK4uB,OAAOrqB,cAAc,MAAO,CAAEC,UAAW,qBAC7D+5C,EAAI75C,YAAYssF,GAChBhxF,KAAKkxF,SAAS3yC,GACgB,MAA1Bv+C,KAAK4uB,OAAOi2F,WACZ7kH,KAAK4uB,OAAOxrB,QAAQoiB,aAAa+4B,EAAKv+C,KAAK4uB,OAAOi2F,YAGlD7kH,KAAK4uB,OAAOxrB,QAAQsB,YAAY65C,IAQxC6mL,EAAellO,UAAUixF,YAAc,WACnC,IAAIH,EAAWhxF,KAAK4jM,mBAAmB,iBACnC5hK,EAAQgvD,EAAS9kF,cAAc,IAAM,QACrCq5N,EAAQvlO,KAAK4uB,OAAOrqB,cAAc,SACtCy9B,EAAMt9B,YAAY6gO,GAClBvlO,KAAKsxF,SAAStvD,IAElBojM,EAAellO,UAAUslO,qBAAuB,SAAUr4N,EAAG60B,EAAOyjM,EAAQC,GACxE,IAAIzyL,EAAQjzC,KAAK4uB,OAAOQ,sBAAsBxvB,OAASI,KAAK4uB,OAAOiB,gBAAgByJ,YAC/Et5B,KAAK4uB,OAAOmyD,cAAgB/gF,KAAK41B,UAAY51B,KAAK4uB,OAAOQ,WAAapvB,KAAK4uB,OAAOwtE,gBAClFupI,EAAY3lO,KAAKslO,eAAe1vM,UAChCkwD,EAAU,eAAkB2/I,GAAUzlO,KAAKslO,eAAe5uM,aAC1D12B,KAAKslO,eAAe5uM,WAAW+uM,GAE/BtuM,EAAO,eAAkBsuM,GAAUzlO,KAAKslO,eAAehlL,aAAarN,EAAO9lC,GAAKnN,KAAKo3B,YACrFp3B,KAAKslO,eAAehlL,aAAarN,EAAO9lC,GAAKnN,KAAKo3B,WAAYquM,EAAQC,GACtEE,EAAWh4N,SAASgpJ,yBACpBivE,EAAc,IAAI,OAAY7lO,KAAK06F,QAAS,KAAM16F,KAAK4uB,QAC3Di3M,EAAYziO,QAAUpD,KAAK4uB,OAAOrqB,cAAc,KAAM,CAAEC,UAAW,eAAgBwK,MAAO,CAAEC,KAAM,SAClG,IAAK,IAAI62N,EAAO,EAAG7iN,EAAM0iN,EAAUhlO,OAAQmlO,EAAO7iN,EAAK6iN,IAAQ,CAC3D,IAAIzuM,EAAMF,EAAKxlB,SAASm0N,EAAKl0N,WAAY,KACzC,GAAKylB,EAAL,CAGA,IAAIioD,EAAKumJ,EAAYlyN,OAAO0jB,EAAKyuD,GACjC,GAAIxG,EAAG58D,iBAAiB,iBAAiB/hB,QAAU2+E,EAAG58D,iBAAiB,iBAAiB/hB,OAEpF,IADA,IAAIggF,EAAKrB,EAAG58D,iBAAiB,iBACpB1hB,EAAI,EAAGA,EAAI2/E,EAAGhgF,OAAQK,IAC3B2/E,EAAGhvE,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,gBAC7C,eAA6B60E,EAAGhvE,SAAS3Q,EAAE4Q,WAAY,KAAU,GAAJ5Q,EAAQhB,KAAK4uB,OAAOnpB,UAAW,QAGhGzF,KAAK4uB,OAAOsrB,gBAAkBolC,EAAG58D,iBAAiB,kBAAkB/hB,QACpE,gBAAY,GAAG+M,MAAMpK,KAAKg8E,EAAG58D,iBAAiB,mBAAoB,CAAC,qBAAsB,wBAE7FkjN,EAASlhO,YAAY46E,IAEzB,IAAIwB,EAAe9gF,KAAK4uB,OAAOmyD,eAAiB/gF,KAAK4uB,OAAOmyD,cAAcC,eACtEhhF,KAAK4uB,OAAOmyD,cAAcC,cAAc74E,SACvCnI,KAAK4uB,OAAOzmB,SAAW24E,IAAiB6kJ,EAAUhlO,QAAUX,KAAK4uB,OAAO4rB,cACzEx6C,KAAK4uB,OAAOwyD,iBAAgB,WACxBp/C,EAAMujM,MAAMz6N,UAAY,GACxBk3B,EAAMujM,MAAM7gO,YAAYkhO,MAI5B5jM,EAAMujM,MAAM7gO,YAAYkhO,GAE5B5lO,KAAKo3B,WAAc,eAAkBjqB,GAASnN,KAAKo3B,WAATjqB,GAE9Ci4N,EAAellO,UAAUoV,QAAU,SAAUnI,GACzC,IAAI2zE,EAAe9gF,KAAK4uB,OAAOmyD,eAAiB/gF,KAAK4uB,OAAOmyD,cAAcC,eACtEhhF,KAAK4uB,OAAOmyD,cAAcC,cAAc74E,SACtCnI,KAAK4uB,OAAOzmB,SAAW24E,IAAkB9gF,KAAK4uB,OAAO4rB,gBACvDx6C,KAAK2xF,WAAW4zI,MAAMz6N,UAAY,IAEtC9K,KAAKwlO,qBAAqBr4N,EAAGnN,KAAK2xF,gBAAYpmF,OAAWA,GACrD,eAAkB4B,IAAMnN,KAAK4uB,OAAO+9E,kBACpC3sG,KAAK4uB,OAAOuhG,iBAEhBnwH,KAAK+lO,YAETX,EAAellO,UAAU8lO,WAAa,WAElC,IAAIC,EAAajmO,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,IAAM,QAAqBA,cAAc,QAAmBwb,WAAU,GACzH1nB,KAAK2xF,WAAWuyE,aAAa+hE,EAAYjmO,KAAK6xF,eAC9C7xF,KAAK+xF,YAAYk0I,IAErBb,EAAellO,UAAUgmO,cAAgB,SAAUngN,GAC/C/lB,KAAKmmO,gBAAgBpgN,EAAKtZ,OAAO1F,MAAMzB,MAAQ,eAAWygB,EAAKzgB,OAC3DtF,KAAK4uB,OAAO4mB,eAAiC,WAAhBzvB,EAAKlM,QAClC7Z,KAAKomO,uBAAuBpmO,KAAK2xF,aAGzCyzI,EAAellO,UAAU6lO,SAAW,SAAU54N,QAChC,IAANA,IAAgBA,EAAI,CACpBnI,KAAMhF,KAAK4uB,OAAOorB,aAAaqC,WAAWvrC,aAE9C9Q,KAAK2xF,WAAWhwE,cAAc7Q,WAAa3D,EAAEnI,MAEjDogO,EAAellO,UAAUimO,gBAAkB,SAAU15N,GACjD,OAAOzM,KAAK6xF,cAAcjxE,SAASjP,SAASlF,EAAMmF,WAAY,MAElEwzN,EAAellO,UAAUm6L,wBAA0B,WAC/Cr6L,KAAKsV,WAET8vN,EAAellO,UAAU24C,iBAAmB,WACxC74C,KAAKmkG,YAAc,CAAC,CAAEz1F,MAAO,QAAiBiqF,QAAS34F,KAAKgmO,YACxD,CAAEt3N,MAAO,QAAoBiqF,QAAS34F,KAAKkmO,eAC3C,CAAEx3N,MAAO,QAAQiqF,QAAS34F,KAAK+lO,UAC/B,CAAEr3N,MAAO,QAAyBiqF,QAAS34F,KAAKq6L,yBAChD,CAAE3rL,MAAO,QAAuBiqF,QAAS34F,KAAK65L,wBAClD,eAAuB75L,KAAK4uB,OAAQ5uB,KAAKmkG,aAAa,EAAMnkG,OAEhEolO,EAAellO,UAAU07C,oBAAsB,WAC3C,eAAuB57C,KAAK4uB,OAAQ5uB,KAAKmkG,aAAa,IAE1DihI,EAAellO,UAAUkmO,uBAAyB,SAAUb,GACxD,IAAItzI,EAAQjyF,KAAK4uB,OAAO8kE,iBACpBzB,GAASszI,IACTA,EAAMx+N,MAAMzB,MAAQ2sF,EAAMlrF,MAAMzB,QAGxC8/N,EAAellO,UAAU25L,sBAAwB,SAAUl9C,GACvD,IAAIvlH,EAAap3B,KAAKqmO,aAAa1pF,GACnC38I,KAAKsV,QAAQ8hB,IAEjBguM,EAAellO,UAAUomO,cAAgB,SAAUz6M,EAAM06M,GAErD,IADA,IAAIhmO,EAAMP,KAAK4uB,OAAOkN,0BAA0B,GACvC96B,EAAI,EAAGA,EAAIulO,EAAG5lO,OAAQK,IAC3B,GAAIulO,EAAG50N,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAKrR,KAASsrB,EAAK,GAAKtrB,GACvD,OAAOS,EAGf,OAAQ,GAEZokO,EAAellO,UAAU01B,QAAU,WAC/B,OAAO51B,KAAK4uB,OAAOiB,gBAAgBiG,YAAYjD,aAAa7yB,KAAK4uB,OAAOiB,gBAAgBuG,eAAc,KAE1GgvM,EAAellO,UAAUmmO,aAAe,SAAU1pF,GAC9CA,EAAaA,aAAsB/8I,MAAQ+8I,EAAa,GACxD,IAWIvgD,EAXAvqE,EAAQ7xB,KAAK4uB,OAAOkN,0BAA0B,GAC9C1M,EAAa,GACb+6L,GAAa,EACb/lH,EAAe,GACfoiI,EAAW,aACXlzM,GAAa,EAsBjB,GArBMtzB,KAAK4uB,OAAOsrF,aAAaruF,KAAKyN,aAAgB,eAAkBt5B,KAAK4uB,OAAOQ,aAC3EpvB,KAAK4uB,OAAOQ,WAAW4B,UAAchxB,KAAK4uB,OAAO4L,gBACjDx6B,KAAK4uB,OAAOoF,eAAe7E,QAAQxuB,QAAWX,KAAK4uB,OAAO6E,eAAelzB,IAAII,UAChF2yB,GAAa,GAIb8oE,GADC,eAAkBp8F,KAAK4uB,OAAOQ,aAAepvB,KAAK4uB,OAAOQ,WAAW4B,OACnDhxB,KAAK4uB,OAAOytE,wBAGZr8F,KAAK4uB,OAAOQ,sBAAsBxvB,MAC/C0zB,EAAatzB,KAAK4uB,OAAO8pG,qBAAuB14H,KAAK4uB,OAAOQ,WAAepvB,KAAK4uB,OAAOQ,WAAW,GAAKo3M,GAAUzwM,KAAKp1B,OACtH2yB,EAAatzB,KAAK4uB,OAAO8pG,qBAAuB14H,KAAK4uB,OAAOQ,WAAW,GAAKo3M,GAAUzwM,KACrF/1B,KAAK4uB,OAAOytE,wBAElBr8F,KAAK4uB,OAAOmyD,gBAAkB/gF,KAAK4uB,OAAOiB,gBAAgByJ,aAC1D8iE,EAAkBp8F,KAAK41B,WAEvB51B,KAAK4uB,OAAO+4E,aACZvD,EAAepkG,KAAK4uB,OAAO+4E,WAAW2mB,mBAEtC7uH,OAAO2V,KAAKgvF,GAAczjG,OAAQ,CAClC,IAAK,IAAIK,EAAI,EAAGA,EAAIo7F,EAAgBz7F,OAAQK,IACxCmpN,GAAa,EAET/lH,EAAa,QAAyBzjG,QAAUX,KAAKsmO,cAAclqI,EAAgBzqF,SAAS3Q,EAAE4Q,WAAY,KAAMwyF,EAAa,UAA6B,IAC1J+lH,GAAa,EAEb/6L,EAAW/iB,KAAK+3F,EAAa,QAAyBpkG,KAAKsmO,cAAclqI,EAAgBzqF,SAAS3Q,EAAE4Q,WAAY,KAAMwyF,EAAa,YAGnIA,EAAa,QAAyBzjG,QAAUX,KAAKsmO,cAAclqI,EAAgBzqF,SAAS3Q,EAAE4Q,WAAY,KAAMwyF,EAAa,UAA6B,EAC1J+lH,GAAa,EAEPA,GACN/6L,EAAW/iB,KAAK+vF,EAAgBzqF,SAAS3Q,EAAE4Q,WAAY,MAG/D,GAAIwyF,EAAa,QAAuBzjG,OACpC,IAASK,EAAI,EAAGA,EAAIojG,EAAa,QAAuBzjG,OAAQK,IAC5DouB,EAAW/iB,KAAK+3F,EAAa,QAAuBzyF,SAAS3Q,EAAE4Q,WAAY,WAKnF,GAAI+qI,EAAWh8I,OAAQ,CACnB,IAAIkrB,EAAO,gBAAcuwE,GACzBhtE,EAAavD,EAAKhlB,KAAI,SAAU0mD,GAC5B,IACI90C,EADAguN,EAAQ,OAAS57B,UAAUh5K,EAAO07B,GAElCm5K,EAAS/pF,EAAW3iH,MAAK,SAAU2sM,GAEnC,OADAluN,EAAQkuN,EACDF,IAAU,OAAS57B,UAAUh5K,EAAO80M,MAE/C,OAAOD,EAASjuN,EAAQ80C,UAI5Bn+B,EAAagtE,EAGrB,IAAIwqI,EAAQjqF,EACPiqF,EAAMp4N,MAAuB,WAAfo4N,EAAMp4N,OACrB4gB,EAAagtE,GAEjB,IACIyqI,EADAnvM,EAAY,GAEZovM,EAAgB9mO,KAAK4uB,OAAOwI,WAChC,IAASp2B,EAAI,EAAGA,EAAI8lO,EAAcnmO,OAAQK,IACtC,IAAK,IAAIs2B,EAAI,EAAGA,EAAIwvM,EAAcn1N,SAAS3Q,EAAE4Q,WAAY,KAAKud,QAAQxuB,OAAQ22B,IAAK,CAC3EzL,EAAO,GAAX,IACIrd,EAAOs4N,EAAcn1N,SAAS3Q,EAAE4Q,WAAY,KAC3Cud,QAAQxd,SAAS2lB,EAAE1lB,WAAY,KAAKpD,KAAKoD,WAC9Cia,EAAOuD,EACPy3M,EAAS,eAAmBr4N,EAAMqd,EAAMi7M,EAAcn1N,SAAS3Q,EAAE4Q,WAAY,KACxEud,QAAQxd,SAAS2lB,EAAE1lB,WAAY,KAAM5R,KAAK4uB,QAC/C8I,EAAUovM,EAAcn1N,SAAS3Q,EAAE4Q,WAAY,KAAKud,QAAQxd,SAAS2lB,EAAE1lB,WAAY,KAAKigB,MAAQ,MAAQrjB,EAAKqT,eAAiBglN,EAGtI,IAAI71M,EAAS,CACTA,OAAQ5B,EACR2b,MAAO3b,EAAWzuB,OAClBy2B,WAAYM,GAEhB,OAAO1G,GAEJo0M,EAtPwB,CAuPjC,Q,YClRE,EAAwC,WACxC,IAAI9lO,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAsBxC,EAAqC,SAAU8C,GAE/C,SAASkkO,IACL,IAAI1jO,EAAmB,OAAXR,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAGhE,OAFAqD,EAAMD,QAAUC,EAAMurB,OACjBrqB,cAAc,KAAM,CAAEC,UAAW,gBAAiBwK,MAAO,CAAEszE,SAAU,KAAMrzE,KAAM,cAC/E5L,EAyEX,OA9EA,EAAU0jO,EAAqBlkO,GAO/BkkO,EAAoB7mO,UAAUkyE,SAAW,SAAUvgD,EAAOhG,EAAM0D,GAC5D,IAAIhvB,EAAO,eAAkBgvB,EAAO/gB,MAC4D+gB,EAAOoJ,WAAnGpJ,EAAOsC,MAAQ,OAAgC,kBAAhBtC,EAAO/gB,KAAoB+gB,EAAO/gB,KAAKqT,cAAgB,IAC1F,OAAOgK,EAAK0D,EAAOoJ,YAAc9M,EAAK0D,EAAOoJ,YAAY,GAAKp4B,GAAO,IAGzEwmO,EAAoB7mO,UAAU01I,SAAW,SAAUxnG,EAAMuT,EAAM91B,EAAMpE,GACjE,IAAI8H,EAASoyB,EAAKpyB,OAElB,GADAvvB,KAAK4uB,OAAOG,GAAG,QAAsB/uB,KAAKgnO,qBAAqB54L,EAAMuT,GAAO3hD,QACtEuvB,EAAOwwB,gBAAkBxwB,EAAOywB,qBAAuBzwB,EAAO0wB,sBAIhE,MAHqC,aAAjCjgD,KAAK4uB,OAAO00D,mBACZl1C,EAAKrnC,MAAMC,QAAU,SAElB,EAG8B,aAAjChH,KAAK4uB,OAAO00D,kBACZl1C,EAAKlpC,UAAU4G,IAAI,qBAG3B,IAAI2tF,EAAUlqE,EAAOmqE,YAAY/3C,EAAKE,UAClC83C,EAAS,GACTstI,EAAUjnO,KAAK4uB,OAAO8J,iBAAiB7M,EAAK0D,EAAOoJ,YAAY9G,OACnE,IAAK,eAAkBo1M,KACnBp7M,EAAK0D,EAAOoJ,YAAYupB,WAAa+kL,EAAQ/kL,WACzC+kL,EAAQ1tM,mBAAmB,CAC3B,IAAIs8G,EAAQoxF,EAAQz1M,WAAWyC,QAAO,SAAU9mB,GAC5C,OAAOA,EAAE85N,EAAQr1M,mBAAqB/F,EAAK0D,EAAOoJ,YAAYp4B,OAC/D,GACCs1I,IACAhqH,EAAK0D,EAAOoJ,YAAYulE,WAAa23C,EAAMoxF,EAAQl1M,kBAI/D,IAAIk+D,EAAkBjwF,KAAK4uB,OAAOzmB,UAAYonB,EAAOwwB,eACd,kBAA3BxwB,EAAqB,eAAiBA,EAAOywB,oBAA8D,kBAAhCzwB,EAA0B,sBAC3GA,EAAO0wB,sBAAgE,kBAAjC1wB,EAA2B,sBACnEuxD,EAAe9gF,KAAK4uB,OAAOmyD,eAAiB/gF,KAAK4uB,OAAOmyD,cAAcC,eACtEhhF,KAAK4uB,OAAOmyD,cAAcC,cAAc74E,QAC5C,GAAI8nF,GAAmBnP,EAAc,CACjC,IAAIzrE,EAAOwW,EAAK0D,EAAOoJ,YACvB,GAAyB,yBAArB8gE,EAAQl/B,UAA4D,wBAArBk/B,EAAQl/B,SAAoC,CAC3F,IAAI2sK,EAAW,WACX3mO,EAAM,MACV8U,EAAK,GAAK6xN,GAAY7xN,EAAK,GAAK9U,GAEpCk5F,EAAQrgE,GAAG/jB,EAAMrV,KAAK4uB,OAAQ6qE,EAAQl/B,SAAUo/B,EAAQ,KAAM,KAAMvrD,GAC/DpuC,KAAK4uB,OAAO4rB,eACbx6C,KAAK4uB,OAAOwyD,uBAIhB,eAAehzC,EAAMqrD,EAAQrgE,GAAGvN,EAAK0D,EAAOoJ,YAAa34B,KAAK4uB,OAAQ6qE,EAAQl/B,SAAUo/B,IAE5F,OAAO,GAEXotI,EAAoB7mO,UAAU8mO,qBAAuB,SAAU54L,EAAMuT,GACjE,IAAIt+C,EAAQrD,KACRmnO,EAAWxlL,EACf,OAAO,SAAU57B,GACb,IAAI47B,EAAOwlL,EACPt1M,EAAQ8vB,EAAKpyB,OAAOoJ,WAAagpB,EAAKpyB,OAAOoJ,WAAa,KAC1DyuM,EAAY,eAAkBv1M,GAE1B,KAFmC9L,EAAK07B,MAAMxtB,QAAO,SAAU0tB,GACnE,OAAOA,EAAKpyB,OAAOoJ,aAAe9G,KACnC,GACCuc,EAAKzsB,eAAiBysB,EAAKzsB,cAAcjX,aAAa,cAAgBqb,EAAKgiG,SAAWl2F,GAASu1M,GAC/Fv1M,IAAUu1M,EAAQ73M,OAAOoJ,YACzBt1B,EAAMkkH,UAAUn5E,EAAMg5L,EAASrhN,EAAK8F,QAIzCk7M,EA/E6B,CAgFtC,QC1FE,EAA2B,WAC3B,SAASM,EAAUz4M,EAAQ8rE,GACvB16F,KAAK4uB,OAASA,EACd5uB,KAAK06F,QAAUA,EACf16F,KAAK64C,mBAsGT,OApGAwuL,EAAUnnO,UAAU4U,cAAgB,WAChC,MAAO,aAEXuyN,EAAUnnO,UAAUonO,eAAiB,WAKjC,IAJA,IAAIjkO,EAAQrD,KACRunO,EAAUvnO,KAAK06F,QAAQta,WAAW,uBAClCltC,EAAW,IAAI,EAAoBlzC,KAAK4uB,OAAQ5uB,KAAK06F,SACrDlsF,EAAO,CAAC,OAASk0C,QAAS,OAASW,eAAgB,OAASP,cACvD9hD,EAAI,EAAGA,EAAIwN,EAAK7N,OAAQK,IAC7BumO,EAAQnmI,gBAAgB5yF,EAAKmD,SAAS3Q,EAAE4Q,WAAY,KAAMshC,GAE9DlzC,KAAKwnO,eAAiB,IAAI,EAAexnO,KAAK4uB,OAAQ5uB,KAAK06F,SAC3D16F,KAAKwnO,eAAe12I,cACpB9wF,KAAKwnO,eAAer2I,cACpB,IAAI6qB,EAAgBh8G,KAAKwnO,eAAep2I,WACpCpxF,KAAK4uB,OAAOxrB,QAAQ66C,cAAgBj+C,KAAK4uB,OAAOytG,UAAUr8H,KAAK4uB,OAAOvpB,SACnE22G,GACH,eAAS,CAACA,GAAgB,CAAC,oBAE/Bh8G,KAAK06F,QAAQsI,SAAS,iBAAkBhjG,KAAKwnO,gBAC7C,IAAIpuM,EAAK,WACL/1B,EAAMokO,qBACNpkO,EAAMurB,OAAOyF,IAAI,QAAW+E,IAEhCp5B,KAAK4uB,OAAOG,GAAG,QAAWqK,EAAIp5B,MAC9BA,KAAK4uB,OAAOG,GAAG,QAAW/uB,KAAKwnO,eAAelyN,QAAStV,KAAKwnO,iBAMhEH,EAAUnnO,UAAUunO,mBAAqB,WACrC,IAAIpkO,EAAQrD,KACZ0nO,EAAgB1nO,KAAK4uB,OAAOwI,YAAY,SAAU7H,GAC9C,IAAI4vE,EAAU,eAAS,eAAgB5vE,GAIvC,GAHK,eAAkB4vE,IACnB5vE,EAAOq2E,oBAAoB,CAAEtpF,OAAQ6iF,IAEV,kBAAnB5vE,EAAa,OAAgB,CACrC,IAAI4mB,EAAiB,IAAI,OACzB5mB,EAAO6mB,aAAaD,EAAeE,kBAAkB,eAAO,GAAI9mB,EAAOjT,eAEtE,GAA+B,kBAAnBiT,EAAa,OAAgB,CAC1C,IAAI6vE,EAAO/7F,EAAMq3F,QAAQta,WAAW,kBACpC7wD,EAAO6mB,aAAagpD,EAAK/oD,kBAAkB,CAAE/5B,OAAQiT,EAAOjT,UAEhEiT,EAAOq2E,oBAAoB,CAAEjtE,WAAYpJ,EAAOoJ,YAAcpJ,EAAOsC,YAG7Ew1M,EAAUnnO,UAAU+U,kBAAoB,SAAU9H,GAC9C,GAAIA,EAAE0M,SAAW7Z,KAAK8U,gBAAtB,CAGI,eAAkB9U,KAAKwnO,iBACvBxnO,KAAKsnO,iBAETtnO,KAAKynO,qBACLznO,KAAKwnO,eAAelyN,UACpB,IAAIqyN,EAAS,IAAI,OAA6B3nO,KAAK4uB,QAC/Cg5M,EAAS,IAAI,OAA2B5nO,KAAK4uB,QACjB,IAA5Bg5M,EAAOhyM,UAAUj1B,QAAiBgnO,EAAOvkL,WACzCpjD,KAAK4uB,OAAOhV,OAAO,QAAc,MAGzCytN,EAAUnnO,UAAU24C,iBAAmB,WAC/B74C,KAAK4uB,OAAOE,cAGhB9uB,KAAK4uB,OAAOG,GAAG,QAAY/uB,KAAKsnO,eAAgBtnO,MAChDA,KAAK4uB,OAAOG,GAAG,QAAU/uB,KAAKiV,kBAAmBjV,MACjDA,KAAK4uB,OAAOG,GAAG,QAAmB/uB,KAAKsV,QAAStV,MAChDA,KAAK4uB,OAAOG,GAAG,QAAS/uB,KAAKwS,QAASxS,QAE1CqnO,EAAUnnO,UAAU07C,oBAAsB,WAClC57C,KAAK4uB,OAAOE,cAGhB9uB,KAAKwnO,eAAe5rL,sBACpB57C,KAAK4uB,OAAOyF,IAAI,QAAYr0B,KAAKsnO,gBACjCtnO,KAAK4uB,OAAOyF,IAAI,QAAWr0B,KAAKwnO,eAAelyN,SAC/CtV,KAAK4uB,OAAOyF,IAAI,QAAUr0B,KAAKiV,mBAC/BjV,KAAK4uB,OAAOyF,IAAI,QAAmBr0B,KAAKsV,SACxCtV,KAAK4uB,OAAOyF,IAAI,QAASr0B,KAAKwS,SAC1BxS,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,IAAM,SACxC,gBAAOlM,KAAK4uB,OAAOxrB,QAAQ8I,cAAc,IAAM,WAGvDm7N,EAAUnnO,UAAUsS,QAAU,WAC1BxS,KAAK47C,uBAETyrL,EAAUnnO,UAAUoV,QAAU,SAAUuW,EAAMzoB,GAC1C,IAAIu5I,EAAa9wH,aAAgBjsB,MAAQisB,EAAO,CAACA,GACjD7rB,KAAK4uB,OAAOhV,OAAO,QAAuB+iI,GACtCv5I,IACAu5I,EAAWtlH,IAAMj0B,GAEjBpD,KAAK4uB,OAAO+D,cAAcxD,QAAQxuB,OAAS,GAC3CX,KAAK4uB,OAAOhV,OAAO,QAAiB+iI,IAGrC0qF,EA1GmB,GAmHvB,SAASK,EAAgBtwM,EAAY2qC,GACxC,IAAK,IAAI/gE,EAAI,EAAGA,EAAIo2B,EAAWz2B,OAAQK,IACnC,IAAK,IAAIs2B,EAAI,EAAGA,EAAIF,EAAWzlB,SAAS3Q,EAAE4Q,WAAY,KAAKud,QAAQxuB,OAAQ22B,IACvEyqC,EAAS3qC,EAAWzlB,SAAS3Q,EAAE4Q,WAAY,KAAKud,QAAQxd,SAAS2lB,EAAE1lB,WAAY,KAAMwlB,EAAWzlB,SAAS3Q,EAAE4Q,WAAY","file":"js/chunk-1a8059fe.97673f85.js","sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, Event, append, compile } from '@syncfusion/ej2-base';\nimport { EventHandler, Touch, Browser, Animation as PopupAnimation, animationMode } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getUniqueID, formatUnit, select, selectAll } from '@syncfusion/ej2-base';\nimport { attributes, closest, removeClass, addClass, remove } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Complex, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '../popup/popup';\nimport { calculatePosition } from '../common/position';\nimport { isCollide, fit } from '../common/collision';\nvar TOUCHEND_HIDE_DELAY = 1500;\nvar TAPHOLD_THRESHOLD = 500;\nvar SHOW_POINTER_TIP_GAP = 0;\nvar HIDE_POINTER_TIP_GAP = 8;\nvar MOUSE_TRAIL_GAP = 2;\nvar POINTER_ADJUST = 2;\nvar ROOT = 'e-tooltip';\nvar RTL = 'e-rtl';\nvar DEVICE = 'e-bigger';\nvar ICON = 'e-icons';\nvar CLOSE = 'e-tooltip-close';\nvar TOOLTIP_WRAP = 'e-tooltip-wrap';\nvar CONTENT = 'e-tip-content';\nvar ARROW_TIP = 'e-arrow-tip';\nvar ARROW_TIP_OUTER = 'e-arrow-tip-outer';\nvar ARROW_TIP_INNER = 'e-arrow-tip-inner';\nvar TIP_BOTTOM = 'e-tip-bottom';\nvar TIP_TOP = 'e-tip-top';\nvar TIP_LEFT = 'e-tip-left';\nvar TIP_RIGHT = 'e-tip-right';\nvar POPUP_ROOT = 'e-popup';\nvar POPUP_OPEN = 'e-popup-open';\nvar POPUP_CLOSE = 'e-popup-close';\nvar POPUP_LIB = 'e-lib';\nvar HIDE_POPUP = 'e-hidden';\nvar POPUP_CONTAINER = 'e-tooltip-popup-container';\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ effect: 'FadeIn', duration: 150, delay: 0 })\n ], Animation.prototype, \"open\", void 0);\n __decorate([\n Property({ effect: 'FadeOut', duration: 150, delay: 0 })\n ], Animation.prototype, \"close\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Represents the Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n *
Show Tooltip
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /* eslint-enable */\n /**\n * Constructor for creating the Tooltip Component\n *\n * @param {TooltipModel} options - specifies the options for the constructor\n * @param {string| HTMLElement} element - specifies the element for the constructor\n *\n */\n function Tooltip(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseMoveEvent = null;\n _this.mouseMoveTarget = null;\n _this.containerElement = null;\n _this.isBodyContainer = true;\n return _this;\n }\n Tooltip.prototype.initialize = function () {\n this.formatPosition();\n addClass([this.element], ROOT);\n };\n Tooltip.prototype.formatPosition = function () {\n var _a, _b;\n if (this.position.indexOf('Top') === 0 || this.position.indexOf('Bottom') === 0) {\n _a = this.position.split(/(?=[A-Z])/), this.tooltipPositionY = _a[0], this.tooltipPositionX = _a[1];\n }\n else {\n _b = this.position.split(/(?=[A-Z])/), this.tooltipPositionX = _b[0], this.tooltipPositionY = _b[1];\n }\n };\n Tooltip.prototype.renderArrow = function () {\n this.setTipClass(this.position);\n var tip = this.createElement('div', { className: ARROW_TIP + ' ' + this.tipClass });\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_OUTER + ' ' + this.tipClass }));\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_INNER + ' ' + this.tipClass }));\n this.tooltipEle.appendChild(tip);\n };\n Tooltip.prototype.setTipClass = function (position) {\n if (position.indexOf('Right') === 0) {\n this.tipClass = TIP_LEFT;\n }\n else if (position.indexOf('Bottom') === 0) {\n this.tipClass = TIP_TOP;\n }\n else if (position.indexOf('Left') === 0) {\n this.tipClass = TIP_RIGHT;\n }\n else {\n this.tipClass = TIP_BOTTOM;\n }\n };\n Tooltip.prototype.renderPopup = function (target) {\n var elePos = this.mouseTrail ? { top: 0, left: 0 } : this.getTooltipPosition(target);\n this.tooltipEle.classList.remove(POPUP_LIB);\n this.popupObj = new Popup(this.tooltipEle, {\n height: this.height,\n width: this.width,\n position: { X: elePos.left, Y: elePos.top },\n enableRtl: this.enableRtl,\n open: this.openPopupHandler.bind(this),\n close: this.closePopupHandler.bind(this)\n });\n };\n Tooltip.prototype.getScalingFactor = function (target) {\n if (!target) {\n return { x: 1, y: 1 };\n }\n var scalingFactors = { x: 1, y: 1 };\n var elementsWithTransform = target.closest('[style*=\"transform: scale\"]');\n if (elementsWithTransform && elementsWithTransform != this.tooltipEle && elementsWithTransform.contains(this.tooltipEle)) {\n var computedStyle = window.getComputedStyle(elementsWithTransform);\n var transformValue = computedStyle.getPropertyValue(\"transform\");\n var matrixValues = transformValue.match(/matrix\\(([^)]+)\\)/)[1].split(\",\").map(parseFloat);\n scalingFactors.x = matrixValues[0];\n scalingFactors.y = matrixValues[3];\n }\n return scalingFactors;\n };\n Tooltip.prototype.getTooltipPosition = function (target) {\n this.tooltipEle.style.display = 'block';\n var parentWithZoomStyle = this.element.closest('[style*=\"zoom\"]');\n if (parentWithZoomStyle) {\n if (!parentWithZoomStyle.contains(this.tooltipEle)) {\n this.tooltipEle.style.zoom = getComputedStyle(parentWithZoomStyle).zoom;\n }\n }\n var pos = calculatePosition(target, this.tooltipPositionX, this.tooltipPositionY, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n var scalingFactors = this.getScalingFactor(target);\n var offsetPos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var collisionPosition = this.calculateElementPosition(pos, offsetPos);\n var collisionLeft = collisionPosition[0];\n var collisionTop = collisionPosition[1];\n var elePos = this.collisionFlipFit(target, collisionLeft, collisionTop);\n if (!this.isBodyContainer) {\n elePos.top -= this.containerElement.getBoundingClientRect().top;\n }\n elePos.left = elePos.left / scalingFactors.x;\n elePos.top = elePos.top / scalingFactors.y;\n this.tooltipEle.style.display = '';\n return elePos;\n };\n Tooltip.prototype.windowResize = function () {\n this.reposition(this.findTarget());\n };\n Tooltip.prototype.reposition = function (target) {\n if (this.popupObj && target) {\n var elePos = this.getTooltipPosition(target);\n this.popupObj.position = { X: elePos.left, Y: elePos.top };\n this.popupObj.dataBind();\n }\n };\n Tooltip.prototype.openPopupHandler = function () {\n if (!this.mouseTrail && this.needTemplateReposition()) {\n this.reposition(this.findTarget());\n }\n this.trigger('afterOpen', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.closePopupHandler = function () {\n if (this.isReact && !(this.opensOn === 'Click' && typeof (this.content) === 'function')) {\n this.clearTemplate(['content']);\n }\n this.clear();\n this.trigger('afterClose', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.calculateTooltipOffset = function (position, xScalingFactor, yScalingFactor) {\n if (xScalingFactor === void 0) { xScalingFactor = 1; }\n if (yScalingFactor === void 0) { yScalingFactor = 1; }\n var pos = { top: 0, left: 0 };\n var tipWidth, tipHeight, tooltipEleWidth, tooltipEleHeight, arrowEle;\n var tipAdjust, tipHeightAdjust, tipWidthAdjust;\n if (xScalingFactor != 1 || yScalingFactor != 1) {\n var tooltipEleRect = this.tooltipEle.getBoundingClientRect();\n var arrowEleRect = void 0;\n tooltipEleWidth = Math.round(tooltipEleRect.width);\n tooltipEleHeight = Math.round(tooltipEleRect.height);\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (arrowEle) {\n arrowEleRect = arrowEle.getBoundingClientRect();\n }\n tipWidth = arrowEle ? Math.round(arrowEleRect.width) : 0;\n tipHeight = arrowEle ? Math.round(arrowEleRect.height) : 0;\n tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (tooltipEleHeight - (this.tooltipEle.clientHeight * yScalingFactor));\n tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (tooltipEleWidth - (this.tooltipEle.clientWidth * xScalingFactor));\n }\n else {\n tooltipEleWidth = this.tooltipEle.offsetWidth;\n tooltipEleHeight = this.tooltipEle.offsetHeight;\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n tipWidth = arrowEle ? arrowEle.offsetWidth : 0;\n tipHeight = arrowEle ? arrowEle.offsetHeight : 0;\n tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (this.tooltipEle.offsetHeight - this.tooltipEle.clientHeight);\n tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (this.tooltipEle.offsetWidth - this.tooltipEle.clientWidth);\n }\n if (this.mouseTrail) {\n tipAdjust += MOUSE_TRAIL_GAP;\n }\n switch (position) {\n case 'RightTop':\n pos.left += tipWidth + tipAdjust;\n pos.top -= tooltipEleHeight - tipHeightAdjust;\n break;\n case 'RightCenter':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'RightBottom':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tipHeightAdjust);\n break;\n case 'BottomRight':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n case 'BottomCenter':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n case 'BottomLeft':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'LeftBottom':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tipHeightAdjust);\n break;\n case 'LeftCenter':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'LeftTop':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight - tipHeightAdjust);\n break;\n case 'TopLeft':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'TopRight':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n default:\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n }\n pos.left += this.offsetX;\n pos.top += this.offsetY;\n return pos;\n };\n Tooltip.prototype.updateTipPosition = function (position) {\n var selEle = selectAll('.' + ARROW_TIP + ',.' + ARROW_TIP_OUTER + ',.' + ARROW_TIP_INNER, this.tooltipEle);\n var removeList = [TIP_BOTTOM, TIP_TOP, TIP_LEFT, TIP_RIGHT];\n removeClass(selEle, removeList);\n this.setTipClass(position);\n addClass(selEle, this.tipClass);\n };\n Tooltip.prototype.adjustArrow = function (target, position, tooltipPositionX, tooltipPositionY) {\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (this.showTipPointer === false || arrowEle === null) {\n return;\n }\n this.updateTipPosition(position);\n var leftValue;\n var topValue;\n this.tooltipEle.style.display = 'block';\n var tooltipWidth = this.tooltipEle.clientWidth;\n var tooltipHeight = this.tooltipEle.clientHeight;\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n var tipWidth = arrowEle.offsetWidth;\n var tipHeight = arrowEle.offsetHeight;\n this.tooltipEle.style.display = '';\n if (this.tipClass === TIP_BOTTOM || this.tipClass === TIP_TOP) {\n if (this.tipClass === TIP_BOTTOM) {\n topValue = '99.9%';\n // Arrow icon aligned -2px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 2) + 'px';\n }\n else {\n topValue = -(tipHeight - 1) + 'px';\n // Arrow icon aligned -6px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 6) + 'px';\n }\n if (target) {\n var tipPosExclude = tooltipPositionX !== 'Center' || (tooltipWidth > target.offsetWidth) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionX === 'Left') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n leftValue = (tooltipWidth - tipWidth - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionX === 'Right') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n leftValue = POINTER_ADJUST + 'px';\n }\n else if ((tipPosExclude) && (this.tipPointerPosition === 'End' || this.tipPointerPosition === 'Start')) {\n leftValue = (this.tipPointerPosition === 'End') ? ((target.offsetWidth + ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2)) - (tipWidth / 2)) - POINTER_ADJUST + 'px'\n : ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2) - (tipWidth / 2) + POINTER_ADJUST + 'px';\n }\n else {\n leftValue = ((tooltipWidth / 2) - (tipWidth / 2)) + 'px';\n }\n }\n }\n else {\n if (this.tipClass === TIP_RIGHT) {\n leftValue = '99.9%';\n // Arrow icon aligned -2px left from ArrowOuterTip div\n arrowInnerELe.style.left = '-' + (tipWidth - 2) + 'px';\n }\n else {\n leftValue = -(tipWidth - 1) + 'px';\n // Arrow icon aligned -2px from ArrowOuterTip width\n arrowInnerELe.style.left = (-(tipWidth) + (tipWidth - 2)) + 'px';\n }\n var tipPosExclude = tooltipPositionY !== 'Center' || (tooltipHeight > target.offsetHeight) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionY === 'Top') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n topValue = (tooltipHeight - tipHeight - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionY === 'Bottom') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n topValue = POINTER_ADJUST + 'px';\n }\n else {\n topValue = ((tooltipHeight / 2) - (tipHeight / 2)) + 'px';\n }\n }\n arrowEle.style.top = topValue;\n arrowEle.style.left = leftValue;\n };\n Tooltip.prototype.renderContent = function (target) {\n var tooltipContent = select('.' + CONTENT, this.tooltipEle);\n if (this.cssClass) {\n addClass([this.tooltipEle], this.cssClass.split(' '));\n }\n if (target && !isNullOrUndefined(target.getAttribute('title'))) {\n target.setAttribute('data-content', target.getAttribute('title'));\n target.removeAttribute('title');\n }\n if (!isNullOrUndefined(this.content)) {\n tooltipContent.innerHTML = '';\n if (this.content instanceof HTMLElement) {\n tooltipContent.appendChild(this.content);\n }\n else if (typeof this.content === 'string') {\n if (this.enableHtmlSanitizer) {\n this.setProperties({ content: SanitizeHtmlHelper.sanitize(this.content) }, true);\n }\n if (this.enableHtmlParse) {\n var tempFunction = compile(this.content);\n var tempArr = tempFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent, this.root);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n }\n else {\n tooltipContent['textContent'] = this.content;\n }\n }\n else {\n var templateFunction = compile(this.content);\n var tempArr = templateFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n this.renderReactTemplates();\n }\n }\n else {\n if (target && !isNullOrUndefined(target.getAttribute('data-content'))) {\n tooltipContent.innerHTML = target.getAttribute('data-content');\n }\n }\n };\n Tooltip.prototype.renderCloseIcon = function () {\n if (!this.isSticky) {\n var existingCloseIcon = this.tooltipEle.querySelector('.' + ICON + '.' + CLOSE);\n if (existingCloseIcon) {\n remove(existingCloseIcon);\n }\n return;\n }\n var tipClose = this.createElement('div', { className: ICON + ' ' + CLOSE });\n this.tooltipEle.appendChild(tipClose);\n EventHandler.add(tipClose, Browser.touchStartEvent, this.onStickyClose, this);\n };\n Tooltip.prototype.addDescribedBy = function (target, id) {\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n if (describedby.indexOf(id) < 0) {\n describedby.push(id);\n }\n attributes(target, { 'aria-describedby': describedby.join(' ').trim(), 'data-tooltip-id': id });\n };\n Tooltip.prototype.removeDescribedBy = function (target) {\n var id = target.getAttribute('data-tooltip-id');\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n var index = describedby.indexOf(id);\n if (index !== -1) {\n describedby.splice(index, 1);\n }\n target.removeAttribute('data-tooltip-id');\n var orgdescribedby = describedby.join(' ').trim();\n if (orgdescribedby) {\n target.setAttribute('aria-describedby', orgdescribedby);\n }\n else {\n target.removeAttribute('aria-describedby');\n }\n };\n Tooltip.prototype.tapHoldHandler = function (evt) {\n clearTimeout(this.autoCloseTimer);\n this.targetHover(evt.originalEvent);\n };\n Tooltip.prototype.touchEndHandler = function (e) {\n var _this = this;\n if (this.isSticky) {\n return;\n }\n var close = function () {\n _this.close();\n };\n this.autoCloseTimer = setTimeout(close, TOUCHEND_HIDE_DELAY);\n };\n Tooltip.prototype.targetClick = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target)) {\n return;\n }\n if (target.getAttribute('data-tooltip-id') === null) {\n this.targetHover(e);\n }\n else if (!this.isSticky) {\n this.hideTooltip(this.animation.close, e, target);\n }\n };\n Tooltip.prototype.targetHover = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target) || (target.getAttribute('data-tooltip-id') !== null && this.closeDelay === 0)) {\n return;\n }\n var targetList = [].slice.call(selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document));\n for (var _i = 0, targetList_1 = targetList; _i < targetList_1.length; _i++) {\n var target_1 = targetList_1[_i];\n this.restoreElement(target_1);\n }\n this.showTooltip(target, this.animation.open, e);\n };\n Tooltip.prototype.mouseMoveBeforeOpen = function (e) {\n this.mouseMoveEvent = e;\n };\n Tooltip.prototype.mouseMoveBeforeRemove = function () {\n if (this.mouseMoveTarget) {\n EventHandler.remove(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen);\n }\n };\n Tooltip.prototype.showTooltip = function (target, showAnimation, e) {\n var _this = this;\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n if (this.openDelay && this.mouseTrail) {\n this.mouseMoveBeforeRemove();\n this.mouseMoveTarget = target;\n EventHandler.add(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen, this);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n var observeCallback = function (beforeRenderArgs) {\n _this.beforeRenderCallback(beforeRenderArgs, target, e, showAnimation);\n };\n this.trigger('beforeRender', this.tooltipEventArgs, observeCallback.bind(this));\n };\n Tooltip.prototype.beforeRenderCallback = function (beforeRenderArgs, target, e, showAnimation) {\n if (beforeRenderArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n }\n else {\n this.isHidden = false;\n if (isNullOrUndefined(this.tooltipEle)) {\n this.ctrlId = this.element.getAttribute('id') ?\n getUniqueID(this.element.getAttribute('id')) : getUniqueID('tooltip');\n this.tooltipEle = this.createElement('div', {\n className: TOOLTIP_WRAP + ' ' + POPUP_ROOT + ' ' + POPUP_LIB, attrs: {\n role: 'tooltip', 'aria-hidden': 'false', 'id': this.ctrlId + '_content'\n }, styles: 'width:' +\n formatUnit(this.width) + ';height:' + formatUnit(this.height) + ';position:absolute;'\n });\n this.tooltipBeforeRender(target, this);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n else {\n if (target) {\n this.adjustArrow(target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n this.addDescribedBy(target, this.ctrlId + '_content');\n this.renderContent(target);\n PopupAnimation.stop(this.tooltipEle);\n this.reposition(target);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n }\n }\n };\n Tooltip.prototype.appendContainer = function (ctrlObj) {\n if (typeof this.container == 'string') {\n if (this.container === 'body') {\n this.containerElement = document.body;\n }\n else {\n this.isBodyContainer = false;\n this.containerElement = select(this.container, document);\n }\n }\n else if (this.container instanceof HTMLElement) {\n this.containerElement = this.container;\n this.isBodyContainer = this.containerElement.tagName === 'BODY';\n }\n if (!this.isBodyContainer) {\n addClass([this.containerElement], POPUP_CONTAINER);\n }\n this.containerElement.appendChild(ctrlObj.tooltipEle);\n };\n Tooltip.prototype.tooltipBeforeRender = function (target, ctrlObj) {\n if (target) {\n if (Browser.isDevice) {\n addClass([ctrlObj.tooltipEle], DEVICE);\n }\n if (ctrlObj.width !== 'auto') {\n ctrlObj.tooltipEle.style.maxWidth = formatUnit(ctrlObj.width);\n }\n ctrlObj.tooltipEle.appendChild(ctrlObj.createElement('div', { className: CONTENT }));\n this.appendContainer(ctrlObj);\n removeClass([ctrlObj.tooltipEle], HIDE_POPUP);\n ctrlObj.addDescribedBy(target, ctrlObj.ctrlId + '_content');\n ctrlObj.renderContent(target);\n addClass([ctrlObj.tooltipEle], POPUP_OPEN);\n if (ctrlObj.showTipPointer) {\n ctrlObj.renderArrow();\n }\n ctrlObj.renderCloseIcon();\n ctrlObj.renderPopup(target);\n ctrlObj.adjustArrow(target, ctrlObj.position, ctrlObj.tooltipPositionX, ctrlObj.tooltipPositionY);\n PopupAnimation.stop(ctrlObj.tooltipEle);\n ctrlObj.reposition(target);\n }\n };\n Tooltip.prototype.tooltipAfterRender = function (target, e, showAnimation, ctrlObj) {\n if (target) {\n removeClass([ctrlObj.tooltipEle], POPUP_OPEN);\n addClass([ctrlObj.tooltipEle], POPUP_CLOSE);\n ctrlObj.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: ctrlObj.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n if (ctrlObj.needTemplateReposition() && !ctrlObj.mouseTrail) {\n ctrlObj.tooltipEle.style.display = 'none';\n }\n var observeCallback = function (observedArgs) {\n ctrlObj.beforeOpenCallback(observedArgs, target, showAnimation, e);\n };\n ctrlObj.trigger('beforeOpen', ctrlObj.tooltipEventArgs, observeCallback.bind(ctrlObj));\n }\n };\n Tooltip.prototype.beforeOpenCallback = function (observedArgs, target, showAnimation, e) {\n var _this = this;\n if (observedArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n this.restoreElement(target);\n }\n else {\n var openAnimation_1 = {\n name: (showAnimation.effect === 'None' && animationMode === 'Enable') ? 'FadeIn' : this.animation.open.effect,\n duration: showAnimation.duration,\n delay: showAnimation.delay,\n timingFunction: 'easeOut'\n };\n if (showAnimation.effect === 'None') {\n openAnimation_1 = undefined;\n }\n if (this.openDelay > 0) {\n var show = function () {\n if (_this.mouseTrail) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', _this.onMouseMove, _this);\n }\n if (_this.popupObj) {\n _this.popupObj.show(openAnimation_1, target);\n if (_this.mouseMoveEvent && _this.mouseTrail) {\n _this.onMouseMove(_this.mouseMoveEvent);\n }\n }\n };\n this.showTimer = setTimeout(show, this.openDelay);\n }\n else {\n if (this.popupObj) {\n this.popupObj.show(openAnimation_1, target);\n }\n }\n }\n if (e) {\n this.wireMouseEvents(e, target);\n }\n };\n Tooltip.prototype.needTemplateReposition = function () {\n // eslint-disable-next-line\n var tooltip = this;\n return !isNullOrUndefined(tooltip.viewContainerRef)\n && typeof tooltip.viewContainerRef !== 'string' || this.isReact;\n };\n Tooltip.prototype.checkCollision = function (target, x, y) {\n var elePos = {\n left: x, top: y, position: this.position,\n horizontal: this.tooltipPositionX, vertical: this.tooltipPositionY\n };\n var affectedPos = isCollide(this.tooltipEle, this.checkCollideTarget(), x, y);\n if (affectedPos.length > 0) {\n elePos.horizontal = affectedPos.indexOf('left') >= 0 ? 'Right' : affectedPos.indexOf('right') >= 0 ? 'Left' :\n this.tooltipPositionX;\n elePos.vertical = affectedPos.indexOf('top') >= 0 ? 'Bottom' : affectedPos.indexOf('bottom') >= 0 ? 'Top' :\n this.tooltipPositionY;\n }\n return elePos;\n };\n Tooltip.prototype.calculateElementPosition = function (pos, offsetPos) {\n return [this.isBodyContainer ? pos.left + offsetPos.left :\n (pos.left - this.containerElement.offsetLeft) + offsetPos.left + window.pageXOffset + this.containerElement.scrollLeft,\n this.isBodyContainer ? pos.top + offsetPos.top :\n (pos.top - this.containerElement.offsetTop) + offsetPos.top + window.pageYOffset + this.containerElement.scrollTop];\n };\n Tooltip.prototype.collisionFlipFit = function (target, x, y) {\n var elePos = this.checkCollision(target, x, y);\n var newpos = elePos.position;\n if (this.tooltipPositionY !== elePos.vertical) {\n newpos = ((this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + this.tooltipPositionX : this.tooltipPositionX + elePos.vertical);\n }\n if (this.tooltipPositionX !== elePos.horizontal) {\n if (newpos.indexOf('Left') === 0) {\n elePos.vertical = (newpos === 'LeftTop' || newpos === 'LeftCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Left');\n }\n if (newpos.indexOf('Right') === 0) {\n elePos.vertical = (newpos === 'RightTop' || newpos === 'RightCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Right');\n }\n elePos.horizontal = this.tooltipPositionX;\n }\n this.tooltipEventArgs = {\n type: null, cancel: false, target: target, event: null,\n element: this.tooltipEle, collidedPosition: newpos\n };\n this.trigger('beforeCollision', this.tooltipEventArgs);\n if (this.tooltipEventArgs.cancel) {\n newpos = this.position;\n }\n else {\n var elePosVertical = elePos.vertical;\n var elePosHorizontal = elePos.horizontal;\n if (elePos.position !== newpos) {\n var pos = calculatePosition(target, elePosHorizontal, elePosVertical, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n var scalingFactors = this.getScalingFactor(target);\n var offsetPos = this.calculateTooltipOffset(newpos, scalingFactors.x, scalingFactors.y);\n offsetPos.top -= this.getOffSetPosition('TopBottom', newpos, this.offsetY);\n offsetPos.left -= this.getOffSetPosition('RightLeft', newpos, this.offsetX);\n elePos.position = newpos;\n var elePosition = this.calculateElementPosition(pos, offsetPos);\n elePos.left = elePosition[0];\n elePos.top = elePosition[1];\n }\n else {\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n }\n }\n var eleOffset = { left: elePos.left, top: elePos.top };\n var position = fit(this.tooltipEle, this.checkCollideTarget(), { X: true, Y: this.windowCollision }, eleOffset);\n this.tooltipEle.style.display = 'block';\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (this.showTipPointer && arrowEle != null && (newpos.indexOf('Bottom') === 0 || newpos.indexOf('Top') === 0)) {\n var arrowleft = parseInt(arrowEle.style.left, 10) - (position.left - elePos.left);\n if (arrowleft < 0) {\n arrowleft = 0;\n }\n else if ((arrowleft + arrowEle.offsetWidth) > this.tooltipEle.clientWidth) {\n arrowleft = this.tooltipEle.clientWidth - arrowEle.offsetWidth;\n }\n arrowEle.style.left = arrowleft.toString() + 'px';\n }\n this.tooltipEle.style.display = '';\n eleOffset.left = position.left;\n eleOffset.top = position.top;\n return eleOffset;\n };\n Tooltip.prototype.getOffSetPosition = function (positionString, newPos, offsetType) {\n return ((positionString.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n (positionString.indexOf(newPos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * offsetType) : 0;\n };\n Tooltip.prototype.checkCollideTarget = function () {\n return !this.windowCollision && this.target ? this.element : null;\n };\n Tooltip.prototype.hideTooltip = function (hideAnimation, e, targetElement) {\n var _this = this;\n if (this.closeDelay > 0) {\n clearTimeout(this.hideTimer);\n clearTimeout(this.showTimer);\n var hide = function () {\n if (_this.closeDelay && _this.tooltipEle && _this.isTooltipOpen) {\n return;\n }\n _this.tooltipHide(hideAnimation, e, targetElement);\n };\n this.hideTimer = setTimeout(hide, this.closeDelay);\n }\n else {\n this.tooltipHide(hideAnimation, e, targetElement);\n }\n };\n Tooltip.prototype.tooltipHide = function (hideAnimation, e, targetElement) {\n var _this = this;\n var target;\n if (e) {\n target = this.target ? (targetElement || e.target) : this.element;\n }\n else {\n target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n // this line commented for close the tooltip popup element even the target element destroyed in a page.\n //if (isNullOrUndefined(target)) { return; }\n this.trigger('beforeClose', this.tooltipEventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.mouseMoveBeforeRemove();\n _this.popupHide(hideAnimation, target, e);\n }\n else {\n _this.isHidden = false;\n }\n });\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.popupHide = function (hideAnimation, target, e) {\n if (target && e) {\n this.restoreElement(target);\n }\n this.isHidden = true;\n var closeAnimation = {\n name: (hideAnimation.effect === 'None' && animationMode === 'Enable') ? 'FadeOut' : this.animation.close.effect,\n duration: hideAnimation.duration,\n delay: hideAnimation.delay,\n timingFunction: 'easeIn'\n };\n if (hideAnimation.effect === 'None') {\n closeAnimation = undefined;\n }\n if (this.popupObj) {\n this.popupObj.hide(closeAnimation);\n }\n };\n Tooltip.prototype.restoreElement = function (target) {\n this.unwireMouseEvents(target);\n if (!isNullOrUndefined(target.getAttribute('data-content'))) {\n target.setAttribute('title', target.getAttribute('data-content'));\n target.removeAttribute('data-content');\n }\n this.removeDescribedBy(target);\n };\n Tooltip.prototype.clear = function () {\n var target = this.findTarget();\n if (target) {\n this.restoreElement(target);\n }\n if (this.tooltipEle) {\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n }\n if (this.isHidden) {\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n this.tooltipEle = null;\n this.popupObj = null;\n }\n };\n Tooltip.prototype.tooltipHover = function (e) {\n if (this.tooltipEle) {\n this.isTooltipOpen = true;\n }\n };\n Tooltip.prototype.tooltipMouseOut = function (e) {\n this.isTooltipOpen = false;\n this.hideTooltip(this.animation.close, e, this.findTarget());\n };\n Tooltip.prototype.onMouseOut = function (e) {\n var enteredElement = e.relatedTarget;\n // don't close the tooltip only if it is tooltip content element\n if (enteredElement && !this.mouseTrail) {\n var checkForTooltipElement = closest(enteredElement, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT);\n if (checkForTooltipElement) {\n EventHandler.add(checkForTooltipElement, 'mouseleave', this.tooltipElementMouseOut, this);\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n if (this.closeDelay === 0) {\n this.clear();\n }\n }\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n this.clear();\n }\n };\n Tooltip.prototype.tooltipElementMouseOut = function (e) {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n EventHandler.remove(this.element, 'mouseleave', this.tooltipElementMouseOut);\n this.clear();\n };\n Tooltip.prototype.onStickyClose = function (e) {\n this.close();\n };\n Tooltip.prototype.onMouseMove = function (event) {\n var eventPageX = 0;\n var eventPageY = 0;\n if (event.type.indexOf('touch') > -1) {\n event.preventDefault();\n eventPageX = event.touches[0].pageX;\n eventPageY = event.touches[0].pageY;\n }\n else {\n eventPageX = event.pageX;\n eventPageY = event.pageY;\n }\n PopupAnimation.stop(this.tooltipEle);\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n this.adjustArrow(event.target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n var scalingFactors = this.getScalingFactor(event.target);\n var pos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var x = eventPageX + pos.left + this.offsetX;\n var y = eventPageY + pos.top + this.offsetY;\n var elePos = this.checkCollision(event.target, x, y);\n if (this.tooltipPositionX !== elePos.horizontal || this.tooltipPositionY !== elePos.vertical) {\n var newpos = (this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + elePos.horizontal : elePos.horizontal + elePos.vertical;\n elePos.position = newpos;\n this.adjustArrow(event.target, elePos.position, elePos.horizontal, elePos.vertical);\n var colpos = this.calculateTooltipOffset(elePos.position, scalingFactors.x, scalingFactors.y);\n elePos.left = eventPageX + colpos.left - this.offsetX;\n elePos.top = eventPageY + colpos.top - this.offsetY;\n }\n this.tooltipEle.style.left = elePos.left + 'px';\n this.tooltipEle.style.top = elePos.top + 'px';\n };\n Tooltip.prototype.keyDown = function (event) {\n if (this.tooltipEle && event.keyCode === 27) {\n this.close();\n }\n };\n Tooltip.prototype.touchEnd = function (e) {\n if (this.tooltipEle && closest(e.target, '.' + ROOT) === null && !this.isSticky) {\n this.close();\n }\n };\n Tooltip.prototype.scrollHandler = function (e) {\n if (this.tooltipEle && !this.isSticky) {\n if (!(closest(e.target, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT))) {\n this.close();\n }\n }\n };\n /**\n * Core method that initializes the control rendering.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.render = function () {\n this.initialize();\n this.wireEvents(this.opensOn);\n this.renderComplete();\n };\n /**\n * Initializes the values of private members.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.preRender = function () {\n this.tipClass = TIP_BOTTOM;\n this.tooltipPositionX = 'Center';\n this.tooltipPositionY = 'Top';\n this.isHidden = true;\n };\n /**\n * Binding events to the Tooltip element.\n *\n * @hidden\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.wireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_1 = triggerList; _i < triggerList_1.length; _i++) {\n var opensOn = triggerList_1[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.wireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.add(this.element, Browser.touchStartEvent, this.targetClick, this);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n this.touchModule = new Touch(this.element, {\n tapHoldThreshold: TAPHOLD_THRESHOLD,\n tapHold: this.tapHoldHandler.bind(this)\n });\n EventHandler.add(this.element, Browser.touchEndEvent, this.touchEndHandler, this);\n }\n else {\n EventHandler.add(this.element, 'mouseover', this.targetHover, this);\n }\n }\n }\n EventHandler.add(document, 'touchend', this.touchEnd, this);\n EventHandler.add(document, 'scroll wheel', this.scrollHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(document, 'keydown', this.keyDown, this);\n };\n Tooltip.prototype.getTriggerList = function (trigger) {\n if (trigger === 'Auto') {\n trigger = (Browser.isDevice) ? 'Hover' : 'Hover Focus';\n }\n return trigger.split(' ');\n };\n Tooltip.prototype.wireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n this.targetsList = targetList;\n for (var _i = 0, targetList_2 = targetList; _i < targetList_2.length; _i++) {\n var target = targetList_2[_i];\n EventHandler.add(target, 'focus', this.targetHover, this);\n }\n }\n else {\n EventHandler.add(this.element, 'focusin', this.targetHover, this);\n }\n };\n Tooltip.prototype.wireMouseEvents = function (e, target) {\n if (this.tooltipEle) {\n if (!this.isSticky) {\n if (e.type === 'focus') {\n EventHandler.add(target, 'blur', this.onMouseOut, this);\n }\n if (e.type === 'focusin') {\n EventHandler.add(target, 'focusout', this.onMouseOut, this);\n }\n if (e.type === 'mouseover') {\n EventHandler.add(target, 'mouseleave', this.onMouseOut, this);\n }\n if (this.closeDelay) {\n EventHandler.add(this.tooltipEle, 'mouseenter', this.tooltipHover, this);\n EventHandler.add(this.tooltipEle, 'mouseleave', this.tooltipMouseOut, this);\n }\n }\n if (this.mouseTrail && this.openDelay === 0) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', this.onMouseMove, this);\n }\n }\n };\n /**\n * Unbinding events from the element on widget destroy.\n *\n * @hidden\n *\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.unwireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_2 = triggerList; _i < triggerList_2.length; _i++) {\n var opensOn = triggerList_2[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.unwireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.targetClick);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n EventHandler.remove(this.element, Browser.touchEndEvent, this.touchEndHandler);\n }\n else {\n EventHandler.remove(this.element, 'mouseover', this.targetHover);\n }\n }\n }\n EventHandler.remove(document, 'touchend', this.touchEnd);\n EventHandler.remove(document, 'scroll wheel', this.scrollHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n EventHandler.remove(document, 'keydown', this.keyDown);\n };\n Tooltip.prototype.unwireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n for (var _i = 0, targetList_3 = targetList; _i < targetList_3.length; _i++) {\n var target = targetList_3[_i];\n EventHandler.remove(target, 'focus', this.targetHover);\n }\n }\n else {\n EventHandler.remove(this.element, 'focusin', this.targetHover);\n }\n };\n Tooltip.prototype.unwireMouseEvents = function (target) {\n if (!this.isSticky) {\n var triggerList = this.getTriggerList(this.opensOn);\n for (var _i = 0, triggerList_3 = triggerList; _i < triggerList_3.length; _i++) {\n var opensOn = triggerList_3[_i];\n if (opensOn === 'Focus') {\n EventHandler.remove(target, 'blur', this.onMouseOut);\n EventHandler.remove(target, 'focusout', this.onMouseOut);\n }\n if (opensOn === 'Hover' && !Browser.isDevice) {\n EventHandler.remove(target, 'mouseleave', this.onMouseOut);\n }\n }\n if (this.closeDelay) {\n EventHandler.remove(target, 'mouseenter', this.tooltipHover);\n EventHandler.remove(target, 'mouseleave', this.tooltipMouseOut);\n }\n }\n if (this.mouseTrail) {\n EventHandler.remove(target, 'mousemove touchstart mouseenter', this.onMouseMove);\n }\n };\n Tooltip.prototype.findTarget = function () {\n var target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n return target;\n };\n /**\n * Core method to return the component name.\n *\n * @private\n *\n * @returns {string} - this method returns module name.\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * Returns the properties to be maintained in the persisted state.\n *\n * @private\n *\n * @returns {string} - this method returns persisted data.\n */\n Tooltip.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Called internally, if any of the property value changed.\n *\n * @private\n *\n * @param {TooltipModel} newProp - this param gives new property values to the method\n * @param {TooltipModel} oldProp - this param gives old property values to the method\n * @returns {void}\n *\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n var targetElement = this.findTarget();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.width = this.tooltipEle.style.maxWidth = formatUnit(newProp.width);\n this.reposition(targetElement);\n }\n break;\n case 'height':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.height = formatUnit(newProp.height);\n this.reposition(targetElement);\n }\n break;\n case 'content':\n if (this.tooltipEle) {\n this.renderContent();\n }\n break;\n case 'opensOn':\n this.unwireEvents(oldProp.opensOn);\n this.wireEvents(newProp.opensOn);\n break;\n case 'position':\n this.formatPosition();\n if (this.tooltipEle && targetElement) {\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n if (arrowInnerELe) {\n arrowInnerELe.style.top = arrowInnerELe.style.left = null;\n }\n this.reposition(targetElement);\n }\n break;\n case 'tipPointerPosition':\n if (this.tooltipEle && targetElement) {\n this.reposition(targetElement);\n }\n break;\n case 'offsetX':\n if (this.tooltipEle) {\n var x = newProp.offsetX - oldProp.offsetX;\n this.tooltipEle.style.left = (parseInt(this.tooltipEle.style.left, 10) + (x)).toString() + 'px';\n }\n break;\n case 'offsetY':\n if (this.tooltipEle) {\n var y = newProp.offsetY - oldProp.offsetY;\n this.tooltipEle.style.top = (parseInt(this.tooltipEle.style.top, 10) + (y)).toString() + 'px';\n }\n break;\n case 'cssClass':\n if (this.tooltipEle) {\n if (oldProp.cssClass) {\n removeClass([this.tooltipEle], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.tooltipEle], newProp.cssClass.split(' '));\n }\n }\n break;\n case 'enableRtl':\n if (this.tooltipEle) {\n if (this.enableRtl) {\n addClass([this.tooltipEle], RTL);\n }\n else {\n removeClass([this.tooltipEle], RTL);\n }\n }\n break;\n case 'isSticky':\n if (this.tooltipEle && targetElement) {\n this.renderCloseIcon();\n this.reposition(targetElement);\n }\n break;\n case 'container':\n if (!isNullOrUndefined(this.containerElement)) {\n removeClass([this.containerElement], POPUP_CONTAINER);\n }\n this.container = newProp.container;\n if (this.tooltipEle && targetElement) {\n this.appendContainer(this);\n this.reposition(targetElement);\n }\n }\n }\n };\n /**\n * It is used to show the Tooltip on the specified target with specific animation settings.\n *\n * @param {HTMLElement} element - Target element where the Tooltip is to be displayed. (It is an optional parameter)\n * @param {TooltipAnimationSettings} animation - Sets the specific animation, while showing the Tooltip on the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.open = function (element, animation) {\n if (isNullOrUndefined(animation)) {\n animation = this.animation.open;\n }\n if (isNullOrUndefined(element)) {\n element = this.element;\n }\n if (element.style.display === 'none') {\n return;\n }\n this.showTooltip(element, animation);\n };\n /**\n * It is used to hide the Tooltip with specific animation effect.\n *\n * @param {TooltipAnimationSettings} animation - Sets the specific animation when hiding Tooltip from the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.close = function (animation) {\n if (!animation) {\n animation = this.animation.close;\n }\n this.hideTooltip(animation);\n };\n /**\n * It is used to refresh the Tooltip content and its position.\n *\n * @param {HTMLElement} target - Target element where the Tooltip content or position needs to be refreshed.\n * @returns {void}\n */\n Tooltip.prototype.refresh = function (target) {\n if (this.tooltipEle) {\n this.renderContent(target);\n }\n if (this.popupObj && target) {\n this.reposition(target);\n }\n if (!isNullOrUndefined(this.targetsList) && !isNullOrUndefined(this.target)) {\n var target_2 = selectAll(this.target, this.element);\n if (target_2.length !== this.targetsList.length) {\n this.unwireEvents(this.opensOn);\n this.wireEvents(this.opensOn);\n }\n }\n };\n /**\n * It is used to destroy the Tooltip component.\n * @method destroy\n * @returns {void}\n * @memberof Tooltip\n */\n Tooltip.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n removeClass([this.element], ROOT);\n this.unwireEvents(this.opensOn);\n this.unwireMouseEvents(this.element);\n this.tooltipEle = null;\n this.popupObj = null;\n var currentTarget = selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', this.element);\n for (var _i = 0, currentTarget_1 = currentTarget; _i < currentTarget_1.length; _i++) {\n var target = currentTarget_1[_i];\n this.restoreElement(target);\n }\n };\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"height\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property('body')\n ], Tooltip.prototype, \"container\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"target\", void 0);\n __decorate([\n Property('TopCenter')\n ], Tooltip.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetY\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"showTipPointer\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableHtmlParse\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"windowCollision\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"tipPointerPosition\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"opensOn\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"mouseTrail\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isSticky\", void 0);\n __decorate([\n Complex({}, Animation)\n ], Tooltip.prototype, \"animation\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"openDelay\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"closeDelay\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeCollision\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"destroyed\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Internationalization, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Animation, Event, extend, L10n, Browser, formatUnit } from '@syncfusion/ej2-base';\nimport { detach, addClass, removeClass, closest, attributes, Touch } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, setValue, getUniqueID } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { Calendar } from '../calendar/calendar';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar ROOT = 'e-datepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar POPUPWRAPPER = 'e-popup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar INPUTCONTAINER = 'e-input-group';\nvar INPUTFOCUS = 'e-input-focus';\nvar INPUTROOT = 'e-input';\nvar ERROR = 'e-error';\nvar ACTIVE = 'e-active';\nvar OVERFLOW = 'e-date-overflow';\nvar DATEICON = 'e-date-icon';\nvar CLEARICON = 'e-clear-icon';\nvar ICONS = 'e-icons';\nvar OPENDURATION = 300;\nvar OFFSETVALUE = 4;\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar NONEDIT = 'e-non-edit';\nvar containerAttr = ['title', 'class', 'style'];\n/**\n * Represents the DatePicker component that allows user to select\n * or enter a date value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DatePicker = /** @class */ (function (_super) {\n __extends(DatePicker, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {DatePickerModel} options - Specifies the DatePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DatePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isDateIconClicked = false;\n _this.isAltKeyPressed = false;\n _this.isInteracted = true;\n _this.invalidValueString = null;\n _this.checkPreviousValue = null;\n _this.maskedDateValue = '';\n _this.isAngular = false;\n _this.preventChange = false;\n _this.isIconClicked = false;\n _this.isDynamicValueChanged = false;\n _this.moduleName = _this.getModuleName();\n _this.isFocused = false;\n _this.isBlur = false;\n _this.isKeyAction = false;\n _this.datepickerOptions = options;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.render = function () {\n this.initialize();\n this.bindEvents();\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n this.setTimeZone(this.serverTimezoneOffset);\n };\n DatePicker.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var serverTimezoneDiff = offsetValue;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date((this.value).getTime() + (timeZoneDiff * 60 * 60 * 1000));\n this.updateInput();\n }\n };\n DatePicker.prototype.isDayLightSaving = function () {\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n DatePicker.prototype.setAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.updateIconState();\n };\n DatePicker.prototype.updateIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n else {\n addClass([this.inputWrapper.container], [NONEDIT]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n };\n DatePicker.prototype.initialize = function () {\n this.checkInvalidValue(this.value);\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n this.createInput();\n this.updateHtmlAttributeToWrapper();\n this.setAllowEdit();\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInput(true);\n this.updateInputValue(this.maskedDateValue);\n }\n else if (!this.enableMask) {\n this.updateInput(true);\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNullOrUndefined(this.value) ? new Date(+this.value) : null;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.inputValueCopy = this.value;\n };\n DatePicker.prototype.createInput = function () {\n var ariaAttrs = {\n 'aria-atomic': 'true', 'aria-expanded': 'false',\n 'role': 'combobox', 'autocomplete': 'off', 'autocorrect': 'off',\n 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-invalid': 'false', 'aria-label': this.getModuleName()\n };\n if (this.getModuleName() === 'datepicker') {\n var l10nLocale = { placeholder: this.placeholder };\n this.globalize = new Internationalization(this.locale);\n this.l10n = new L10n('datepicker', l10nLocale, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (this.fullScreenMode && Browser.isDevice) {\n this.cssClass += ' ' + \"e-popup-expand\";\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n var isBindClearAction = this.enableMask ? false : true;\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n bindClearAction: isBindClearAction,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [INPUTWRAPPER + ' ' + DATEICON + ' ' + ICONS]\n }, this.createElement);\n this.setWidth(this.width);\n if (this.inputElement.name !== '') {\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute('name'));\n }\n else {\n this.inputElement.setAttribute('name', '' + this.element.id);\n }\n attributes(this.inputElement, ariaAttrs);\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n Input.addAttributes({ 'aria-label': 'select', 'role': 'button' }, this.inputWrapper.buttons[0]);\n addClass([this.inputWrapper.container], DATEWRAPPER);\n };\n DatePicker.prototype.updateInput = function (isDynamic, isBlur) {\n if (isDynamic === void 0) { isDynamic = false; }\n if (isBlur === void 0) { isBlur = false; }\n var formatOptions;\n if (this.value && !this.isCalendar()) {\n this.disabledDates(isDynamic, isBlur);\n }\n if (isNaN(+new Date(this.checkValue(this.value)))) {\n this.setProperties({ value: null }, true);\n }\n if (this.strictMode) {\n //calls the Calendar processDate protected method to update the date value according to the strictMode true behaviour.\n _super.prototype.validateDate.call(this);\n this.minMaxUpdates();\n _super.prototype.minMaxUpdate.call(this);\n }\n if (!isNullOrUndefined(this.value)) {\n var dateValue = this.value;\n var dateString = void 0;\n var tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateString = this.globalize.formatDate(this.value, formatOptions);\n }\n if ((+dateValue <= +this.max) && (+dateValue >= +this.min)) {\n this.updateInputValue(dateString);\n }\n else {\n var value = (+dateValue >= +this.max || !+this.value) || (!+this.value || +dateValue <= +this.min);\n if (!this.strictMode && value) {\n this.updateInputValue(dateString);\n }\n }\n }\n if (isNullOrUndefined(this.value) && this.strictMode) {\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n else {\n this.updateInputValue(this.maskedDateValue);\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.updateInputValue(this.invalidValueString);\n }\n this.changedArgs = { value: this.value };\n this.errorClass();\n this.updateIconState();\n };\n DatePicker.prototype.minMaxUpdates = function () {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n };\n DatePicker.prototype.checkStringValue = function (val) {\n var returnDate = null;\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatOptions));\n if (isNullOrUndefined(returnDate) && (this.getModuleName() === 'datetimepicker')) {\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatDateTime));\n }\n return returnDate;\n };\n DatePicker.prototype.checkInvalidValue = function (value) {\n if (!(value instanceof Date) && !isNullOrUndefined(value)) {\n var valueDate = null;\n var valueString = value;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n var invalid = false;\n if (typeof valueString !== 'string') {\n valueString = null;\n invalid = true;\n }\n else {\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n valueDate = this.checkStringValue(valueString);\n if (!valueDate) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // eslint-disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || (/^[a-zA-Z0-9- ]*$/).test(valueString) || isNaN(+new Date(this.checkValue(valueString)))) {\n invalid = true;\n }\n else {\n valueDate = new Date(valueString);\n }\n }\n }\n if (invalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n }\n else {\n this.setProperties({ value: valueDate }, true);\n }\n }\n };\n DatePicker.prototype.bindInputEvent = function () {\n if (!isNullOrUndefined(this.formatString) || this.enableMask) {\n if (this.enableMask || this.formatString.indexOf('y') === -1) {\n EventHandler.add(this.inputElement, 'input', this.inputHandler, this);\n }\n else {\n EventHandler.remove(this.inputElement, 'input', this.inputHandler);\n }\n }\n };\n DatePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dateIconHandler, this);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'keyup', this.keyupHandler, this);\n if (this.enableMask) {\n EventHandler.add(this.inputElement, 'keydown', this.keydownHandler, this);\n }\n this.bindInputEvent();\n // To prevent the twice triggering.\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.resetFormHandler, this);\n }\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardModules = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DatePicker.prototype.keydownHandler = function (e) {\n switch (e.code) {\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'ArrowUp':\n case 'ArrowDown':\n case 'Home':\n case 'End':\n case 'Delete':\n if (this.enableMask && !this.popupObj && !this.readonly) {\n if (e.code !== 'Delete') {\n e.preventDefault();\n }\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n }\n break;\n default:\n break;\n }\n };\n DatePicker.prototype.unBindEvents = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dateIconHandler);\n }\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n EventHandler.remove(this.inputElement, 'keyup', this.keyupHandler);\n if (this.enableMask) {\n EventHandler.remove(this.inputElement, 'keydown', this.keydownHandler);\n }\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n };\n DatePicker.prototype.resetFormHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var value = this.inputElement.getAttribute('value');\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n value = '';\n this.inputValueCopy = null;\n this.inputElement.setAttribute('value', '');\n }\n this.setProperties({ value: this.inputValueCopy }, true);\n this.restoreValue();\n if (this.inputElement) {\n this.updateInputValue(value);\n this.errorClass();\n }\n }\n };\n DatePicker.prototype.restoreValue = function () {\n this.currentDate = this.value ? this.value : new Date();\n this.previousDate = this.value;\n this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.globalize.formatDate(this.inputValueCopy, {\n format: this.formatString, type: 'dateTime', skeleton: 'yMd'\n });\n };\n DatePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n DatePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n DatePicker.prototype.resetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n this.clear(e);\n };\n DatePicker.prototype.mouseUpHandler = function (e) {\n if (this.enableMask) {\n e.preventDefault();\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n }\n };\n DatePicker.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n var clearedArgs = {\n event: event\n };\n this.trigger('cleared', clearedArgs);\n this.invalidValueString = '';\n this.updateInput();\n this.popupUpdate();\n this.changeEvent(event);\n if (this.enableMask) {\n this.notify('clearHandler', {\n module: 'MaskedDateTime'\n });\n }\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n DatePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnDateIconClick');\n };\n DatePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DatePicker.prototype.dateIconHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n this.inputElement.blur();\n }\n e.preventDefault();\n if (!this.readonly) {\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.isDateIconClicked = true;\n this.show(null, e);\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n addClass(this.inputWrapper.buttons, ACTIVE);\n }\n }\n this.isIconClicked = false;\n };\n DatePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (!isNullOrUndefined(this.htmlAttributes[\"\" + key])) {\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.inputWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.inputWrapper.container.getAttribute(key);\n if (!isNullOrUndefined(setStyle)) {\n if (setStyle.charAt(setStyle.length - 1) === ';') {\n setStyle = setStyle + this.htmlAttributes[\"\" + key];\n }\n else {\n setStyle = setStyle + ';' + this.htmlAttributes[\"\" + key];\n }\n }\n else {\n setStyle = this.htmlAttributes[\"\" + key];\n }\n this.inputWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n }\n };\n DatePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n DatePicker.prototype.updateCssClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newCssClass, [this.inputWrapper.container], oldCssClass);\n if (this.popupWrapper) {\n Input.setCssClass(newCssClass, [this.popupWrapper], oldCssClass);\n }\n };\n DatePicker.prototype.calendarKeyActionHandle = function (e) {\n switch (e.action) {\n case 'escape':\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.inputWrapper.container.children[this.index].blur();\n }\n break;\n case 'enter':\n if (!this.isCalendar()) {\n this.show(null, e);\n }\n else {\n if (+this.value !== +this.currentDate && !this.isCalendar()) {\n this.inputWrapper.container.children[this.index].focus();\n }\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n break;\n }\n };\n DatePicker.prototype.inputFocusHandler = function () {\n this.isFocused = true;\n if (!this.enabled) {\n return;\n }\n if (this.enableMask && !this.inputElement.value && this.placeholder) {\n if (this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.inputElement.selectionStart = 0;\n this.inputElement.selectionEnd = this.inputElement.value.length;\n }\n }\n var focusArguments = {\n model: this\n };\n this.isDateIconClicked = false;\n this.trigger('focus', focusArguments);\n this.updateIconState();\n if (this.openOnFocus && !this.isIconClicked) {\n this.show();\n }\n };\n DatePicker.prototype.inputHandler = function () {\n this.isPopupClicked = false;\n if (this.enableMask) {\n this.notify('inputHandler', {\n module: 'MaskedDateTime'\n });\n }\n };\n DatePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.strictModeUpdate();\n if (this.inputElement.value === '' && isNullOrUndefined(this.value)) {\n this.invalidValueString = null;\n this.updateInputValue('');\n }\n this.isBlur = true;\n this.updateInput(false, true);\n this.isBlur = false;\n this.popupUpdate();\n this.changeTrigger(e);\n if (this.enableMask && this.maskedDateValue && this.placeholder && this.floatLabelType !== 'Always') {\n if (this.inputElement.value === this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue('');\n }\n }\n this.errorClass();\n if (this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.getModuleName() === 'datepicker') {\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n if (this.isCalendar()) {\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.calendarKeyboardModules = new KeyboardEvents(this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: this.calendarKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n this.isPopupClicked = false;\n };\n DatePicker.prototype.documentHandler = function (e) {\n if ((!isNullOrUndefined(this.popupObj) && !isNullOrUndefined(this.inputWrapper) && (this.inputWrapper.container.contains(e.target) && e.type !== 'mousedown' ||\n (this.popupObj.element && this.popupObj.element.contains(e.target)))) && e.type !== 'touchstart') {\n e.preventDefault();\n }\n var target = e.target;\n if (!(closest(target, '.e-datepicker.e-popup-wrapper')) && !isNullOrUndefined(this.inputWrapper)\n && !(closest(target, '.' + INPUTCONTAINER) === this.inputWrapper.container)\n && (!target.classList.contains('e-day'))\n && (!target.classList.contains('e-dlg-overlay'))) {\n this.hide(e);\n this.focusOut();\n }\n else if (closest(target, '.e-datepicker.e-popup-wrapper')) {\n // Fix for close the popup when select the previously selected value.\n if (target.classList.contains('e-day')\n && !isNullOrUndefined(e.target.parentElement)\n && e.target.parentElement.classList.contains('e-selected')\n && closest(target, '.e-content')\n && closest(target, '.e-content').classList.contains('e-' + this.depth.toLowerCase())) {\n this.hide(e);\n }\n else if (closest(target, '.e-footer-container')\n && target.classList.contains('e-today')\n && target.classList.contains('e-btn')\n && (+new Date(+this.value) === +_super.prototype.generateTodayVal.call(this, this.value))) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.inputKeyActionHandle = function (e) {\n var clickedView = this.currentView();\n switch (e.action) {\n case 'altUpArrow':\n this.isAltKeyPressed = false;\n this.hide(e);\n this.inputElement.focus();\n break;\n case 'altDownArrow':\n this.isAltKeyPressed = true;\n this.strictModeUpdate();\n this.updateInput();\n this.changeTrigger(e);\n if (this.getModuleName() === 'datepicker') {\n this.show(null, e);\n }\n break;\n case 'escape':\n this.hide(e);\n break;\n case 'enter':\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n if (!this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.isCalendar()) {\n e.preventDefault();\n e.stopPropagation();\n }\n break;\n case 'tab':\n case 'shiftTab':\n {\n var start = this.inputElement.selectionStart;\n var end = this.inputElement.selectionEnd;\n if (this.enableMask && !this.popupObj && !this.readonly) {\n var length_1 = this.inputElement.value.length;\n if ((start === 0 && end === length_1) || (end !== length_1 && e.action === 'tab') || (start !== 0 && e.action === 'shiftTab')) {\n e.preventDefault();\n }\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n start = this.inputElement.selectionStart;\n end = this.inputElement.selectionEnd;\n }\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n if (this.enableMask) {\n this.inputElement.selectionStart = start;\n this.inputElement.selectionEnd = end;\n }\n if (e.action === 'tab' && e.target === this.inputElement && this.isCalendar() && document.activeElement === this.inputElement) {\n e.preventDefault();\n this.headerTitleElement.focus();\n }\n if (e.action === 'shiftTab' && e.target === this.inputElement && this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n break;\n }\n default:\n this.defaultAction(e);\n // Fix for close the popup when select the previously selected value.\n if (e.action === 'select' && clickedView === this.depth) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.defaultAction = function (e) {\n this.previousDate = ((!isNullOrUndefined(this.value) && new Date(+this.value)) || null);\n if (this.isCalendar()) {\n _super.prototype.keyActionHandle.call(this, e);\n if (this.isCalendar()) {\n attributes(this.inputElement, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n }\n }\n };\n DatePicker.prototype.popupUpdate = function () {\n if ((isNullOrUndefined(this.value)) && (!isNullOrUndefined(this.previousDate)) ||\n (((this.getModuleName() !== 'datetimepicker') && (+this.value !== +this.previousDate)) || ((this.getModuleName() === 'datetimepicker') && (+this.value !== +this.previousDateTime)))) {\n if (this.popupObj) {\n if (this.popupObj.element.querySelectorAll('.' + SELECTED).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + SELECTED), [SELECTED]);\n }\n }\n if (!isNullOrUndefined(this.value)) {\n if ((+this.value >= +this.min) && (+this.value <= +this.max)) {\n var targetdate = new Date(this.checkValue(this.value));\n _super.prototype.navigateTo.call(this, 'Month', targetdate);\n }\n }\n }\n };\n DatePicker.prototype.strictModeUpdate = function () {\n var format;\n var pattern = /^y/;\n var charPattern = /[^a-zA-Z]/;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n format = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else if (!pattern.test(this.formatString) || charPattern.test(this.formatString)) {\n format = isNullOrUndefined(this.formatString) ? this.formatString : this.formatString.replace('dd', 'd');\n }\n if (!isNullOrUndefined(format)) {\n var len = format.split('M').length - 1;\n if (len < 3) {\n format = format.replace('MM', 'M');\n }\n }\n else {\n format = this.formatString;\n }\n var dateOptions;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n };\n }\n else {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateOptions = formatOptions;\n }\n var date;\n if (typeof this.inputElement.value === 'string') {\n this.inputElement.value = this.inputElement.value.trim();\n }\n if ((this.getModuleName() === 'datetimepicker')) {\n if (this.checkDateValue(this.globalize.parseDate(this.inputElement.value, dateOptions))) {\n var modifiedValue = this.inputElement.value.replace(/(am|pm|Am|aM|pM|Pm)/g, function (match) { return match.toLocaleUpperCase(); });\n date = this.globalize.parseDate(modifiedValue, dateOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.parseDate(this.inputElement.value, formatOptions);\n }\n }\n else {\n date = this.globalize.parseDate(this.inputElement.value, dateOptions);\n date = (!isNullOrUndefined(date) && isNaN(+date)) ? null : date;\n if (!isNullOrUndefined(this.formatString) && this.inputElement.value !== '' && this.strictMode) {\n if ((this.isPopupClicked || (!this.isPopupClicked && this.inputElement.value === this.previousElementValue))\n && this.formatString.indexOf('y') === -1) {\n date.setFullYear(this.value.getFullYear());\n }\n }\n }\n // EJ2-35061 - To prevent change event from triggering twice when using strictmode and format property\n if ((this.getModuleName() === 'datepicker') && (this.value && !isNaN(+this.value)) && date) {\n date.setHours(this.value.getHours(), this.value.getMinutes(), this.value.getSeconds(), this.value.getMilliseconds());\n }\n if (this.strictMode && date) {\n this.updateInputValue(this.globalize.formatDate(date, dateOptions));\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n else if (!this.strictMode) {\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n if (this.strictMode && !date && this.inputElement.value === (this.enableMask ? this.maskedDateValue : '')) {\n this.setProperties({ value: null }, true);\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n if (isNullOrUndefined(this.value)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n };\n DatePicker.prototype.createCalendar = function () {\n var _this = this;\n this.popupWrapper = this.createElement('div', { className: '' + ROOT + ' ' + POPUPWRAPPER, id: this.inputElement.id + '_options' });\n this.popupWrapper.setAttribute('aria-label', this.element.id);\n this.popupWrapper.setAttribute('role', 'dialog');\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (Browser.isDevice) {\n this.modelHeader();\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-date-modal';\n document.body.className += ' ' + OVERFLOW;\n this.modal.style.display = 'block';\n document.body.appendChild(this.modal);\n }\n //this.calendarElement represent the Calendar object from the Calendar class.\n this.calendarElement.querySelector('table tbody').className = '';\n this.popupObj = new Popup(this.popupWrapper, {\n content: this.calendarElement,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : (this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' }),\n offsetY: OFFSETVALUE,\n targetType: 'container',\n enableRtl: this.enableRtl,\n zIndex: this.zIndex,\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : (this.enableRtl ? { X: 'fit', Y: 'flip' } : { X: 'flip', Y: 'flip' }),\n open: function () {\n if (Browser.isDevice && _this.fullScreenMode) {\n _this.iconRight = parseInt(window.getComputedStyle(_this.calendarElement.querySelector('.e-header.e-month .e-prev')).marginRight, 10) > 16 ? true : false;\n _this.touchModule = new Touch(_this.calendarElement.querySelector(\".e-content.e-month\"), {\n swipe: _this.CalendarSwipeHandler.bind(_this)\n });\n EventHandler.add(_this.calendarElement.querySelector(\".e-content.e-month\"), \"touchstart\", _this.TouchStartHandler, _this);\n }\n if (_this.getModuleName() !== 'datetimepicker') {\n if (document.activeElement !== _this.inputElement) {\n _this.defaultKeyConfigs = extend(_this.defaultKeyConfigs, _this.keyConfigs);\n _this.calendarElement.children[1].firstElementChild.focus();\n _this.calendarKeyboardModules = new KeyboardEvents(_this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n _this.calendarKeyboardModules = new KeyboardEvents(_this.inputWrapper.container.children[_this.index], {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n }\n }\n }, close: function () {\n if (_this.isDateIconClicked) {\n _this.inputWrapper.container.children[_this.index].focus();\n }\n if (_this.value) {\n _this.disabledDates();\n }\n if (_this.popupObj) {\n _this.popupObj.destroy();\n }\n _this.resetCalendar();\n detach(_this.popupWrapper);\n _this.popupObj = _this.popupWrapper = null;\n _this.preventArgs = null;\n _this.calendarKeyboardModules = null;\n _this.setAriaAttributes();\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n this.popupObj.element.className += ' ' + this.cssClass;\n this.setAriaAttributes();\n };\n DatePicker.prototype.CalendarSwipeHandler = function (e) {\n var direction = 0;\n if (this.iconRight) {\n switch (e.swipeDirection) {\n case \"Left\":\n direction = 1;\n break;\n case \"Right\":\n direction = -1;\n break;\n default:\n break;\n }\n }\n else {\n switch (e.swipeDirection) {\n case \"Up\":\n direction = 1;\n break;\n case \"Down\":\n direction = -1;\n break;\n default:\n break;\n }\n }\n if (this.touchStart) {\n if (direction === 1) {\n this.navigateNext(e);\n }\n else if (direction === -1) {\n this.navigatePrevious(e);\n }\n this.touchStart = false;\n }\n };\n DatePicker.prototype.TouchStartHandler = function (e) {\n this.touchStart = true;\n };\n DatePicker.prototype.setAriaDisabled = function () {\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n };\n DatePicker.prototype.modelHeader = function () {\n var dateOptions;\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var yearHeading = this.createElement('h1', { className: 'e-model-year' });\n var h2 = this.createElement('div');\n var daySpan = this.createElement('span', { className: 'e-model-day' });\n var monthSpan = this.createElement('span', { className: 'e-model-month' });\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'y', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'y', skeleton: 'dateTime', calendar: 'islamic' };\n }\n yearHeading.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'E', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'E', skeleton: 'dateTime', calendar: 'islamic' };\n }\n daySpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions) + ', ';\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime', calendar: 'islamic' };\n }\n monthSpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n if (this.fullScreenMode) {\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.modelCloseHandler, this);\n var modelTodayButton = this.calendarElement.querySelector(\"button.e-today\");\n h2.classList.add(\"e-day-wrapper\");\n modelTodayButton.classList.add(\"e-outline\");\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTodayButton);\n }\n if (!this.fullScreenMode)\n modelHeader.appendChild(yearHeading);\n h2.appendChild(daySpan);\n h2.appendChild(monthSpan);\n modelHeader.appendChild(h2);\n this.calendarElement.insertBefore(modelHeader, this.calendarElement.firstElementChild);\n };\n DatePicker.prototype.modelCloseHandler = function (e) {\n this.hide();\n };\n DatePicker.prototype.changeTrigger = function (event) {\n if (this.inputElement.value !== this.previousElementValue) {\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n if (this.isDynamicValueChanged && this.isCalendar()) {\n this.popupUpdate();\n }\n this.changedArgs.value = this.value;\n this.changedArgs.event = event || null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = !isNullOrUndefined(event);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNaN(+new Date(this.checkValue(this.value))) ? new Date(this.checkValue(this.value)) : null;\n this.isInteracted = true;\n }\n }\n this.isKeyAction = false;\n };\n DatePicker.prototype.navigatedEvent = function () {\n this.trigger('navigated', this.navigatedArgs);\n };\n DatePicker.prototype.keyupHandler = function (e) {\n this.isKeyAction = (this.inputElement.value !== this.previousElementValue) ? true : false;\n };\n DatePicker.prototype.changeEvent = function (event) {\n if (!this.isIconClicked && !(this.isBlur || this.isKeyAction)) {\n this.selectCalendar(event);\n }\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n this.changedArgs.event = event ? event : null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = this.isInteracted;\n if (!this.isDynamicValueChanged) {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = this.value && new Date(+this.value);\n if (!this.isDynamicValueChanged) {\n this.hide(event);\n }\n this.previousElementValue = this.inputElement.value;\n this.errorClass();\n }\n else if (event) {\n this.hide(event);\n }\n this.isKeyAction = false;\n };\n DatePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n if (this.enableMask) {\n modules.push({ args: [this], member: 'MaskedDateTime' });\n }\n return modules;\n };\n DatePicker.prototype.selectCalendar = function (e) {\n var date;\n var tempFormat;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else {\n tempFormat = this.formatString;\n }\n if (this.value) {\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n }\n if (!isNullOrUndefined(date)) {\n this.updateInputValue(date);\n if (this.enableMask) {\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n }\n }\n };\n DatePicker.prototype.isCalendar = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + POPUPWRAPPER)) {\n return true;\n }\n return false;\n };\n DatePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(this.width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (this.width) : (formatUnit(this.width));\n }\n else {\n this.inputWrapper.container.style.width = '100%';\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Shows the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.show = function (type, e) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupObj) {\n return;\n }\n else {\n var prevent_1 = true;\n var outOfRange = void 0;\n if (!isNullOrUndefined(this.value) && !(+this.value >= +new Date(this.checkValue(this.min))\n && +this.value <= +new Date(this.checkValue(this.max)))) {\n outOfRange = new Date(this.checkValue(this.value));\n this.setProperties({ 'value': null }, true);\n }\n else {\n outOfRange = this.value || null;\n }\n if (!this.isCalendar()) {\n _super.prototype.render.call(this);\n this.setProperties({ 'value': outOfRange || null }, true);\n this.previousDate = outOfRange;\n this.createCalendar();\n }\n if (Browser.isDevice) {\n this.mobilePopupWrapper = this.createElement('div', { className: 'e-datepick-mob-popup-wrap' });\n document.body.appendChild(this.mobilePopupWrapper);\n }\n this.preventArgs = {\n preventDefault: function () {\n prevent_1 = false;\n },\n popup: this.popupObj,\n event: e || null,\n cancel: false,\n appendTo: Browser.isDevice ? this.mobilePopupWrapper : document.body\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (prevent_1 && !_this.preventArgs.cancel) {\n addClass(_this.inputWrapper.buttons, ACTIVE);\n _this.preventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupObj.refreshPosition(_this.inputElement);\n var openAnimation = {\n name: 'FadeIn',\n duration: Browser.isDevice ? 0 : OPENDURATION\n };\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _super.prototype.setOverlayIndex.call(_this, _this.mobilePopupWrapper, _this.popupObj.element, _this.modal, Browser.isDevice);\n _this.setAriaAttributes();\n }\n else {\n _this.popupObj.destroy();\n _this.popupWrapper = _this.popupObj = null;\n }\n if (!isNullOrUndefined(_this.inputElement) && _this.inputElement.value === '') {\n if (!isNullOrUndefined(_this.tableBodyElement) && _this.tableBodyElement.querySelectorAll('td.e-selected').length > 0) {\n addClass([_this.tableBodyElement.querySelector('td.e-selected')], FOCUSEDDATE);\n removeClass(_this.tableBodyElement.querySelectorAll('td.e-selected'), SELECTED);\n }\n }\n EventHandler.add(document, 'mousedown touchstart', _this.documentHandler, _this);\n });\n if (Browser.isDevice) {\n var dlgOverlay = this.createElement('div', { className: 'e-dlg-overlay' });\n dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.mobilePopupWrapper.appendChild(dlgOverlay);\n }\n }\n };\n /**\n * Hide the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.hide = function (event) {\n var _this = this;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var prevent_2 = true;\n this.preventArgs = {\n preventDefault: function () {\n prevent_2 = false;\n },\n popup: this.popupObj,\n event: event || null,\n cancel: false\n };\n removeClass(this.inputWrapper.buttons, ACTIVE);\n removeClass([document.body], OVERFLOW);\n var eventArgs = this.preventArgs;\n if (this.isCalendar()) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.closeEventCallback(prevent_2, eventArgs);\n });\n }\n else {\n this.closeEventCallback(prevent_2, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n DatePicker.prototype.closeEventCallback = function (prevent, eventArgs) {\n this.preventArgs = eventArgs;\n if (this.isCalendar() && (prevent && !this.preventArgs.cancel)) {\n this.popupObj.hide();\n this.isAltKeyPressed = false;\n this.keyboardModule.destroy();\n removeClass(this.inputWrapper.buttons, ACTIVE);\n }\n this.setAriaAttributes();\n if (Browser.isDevice && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(this.mobilePopupWrapper) && (prevent && (isNullOrUndefined(this.preventArgs) || !this.preventArgs.cancel))) {\n this.mobilePopupWrapper.remove();\n this.mobilePopupWrapper = null;\n }\n }\n EventHandler.remove(document, 'mousedown touchstart', this.documentHandler);\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n /* eslint-disable jsdoc/require-param */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DatePicker.prototype.focusIn = function (triggerEvent) {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n /* eslint-enable jsdoc/require-param */\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DatePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n this.inputElement.blur();\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the DatePicker.\n *\n * @returns {string}\n\n */\n DatePicker.prototype.currentView = function () {\n var currentView;\n if (this.calendarElement) {\n // calls the Calendar currentView public method\n currentView = _super.prototype.currentView.call(this);\n }\n return currentView;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Navigates to specified month or year or decade view of the DatePicker.\n *\n * @param {string} view - Specifies the view of the calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns {void}\n\n */\n DatePicker.prototype.navigateTo = function (view, date) {\n if (this.calendarElement) {\n // calls the Calendar navigateTo public method\n _super.prototype.navigateTo.call(this, view, date);\n }\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DatePicker.prototype.destroy = function () {\n this.unBindEvents();\n _super.prototype.destroy.call(this);\n if (!isNullOrUndefined(this.keyboardModules)) {\n this.keyboardModules.destroy();\n }\n if (this.popupObj && this.popupObj.element.classList.contains(POPUP)) {\n _super.prototype.destroy.call(this);\n }\n var ariaAttrs = {\n 'aria-atomic': 'true', 'aria-disabled': 'true',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-label': this.getModuleName()\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttrs, this.inputElement);\n if (!isNullOrUndefined(this.inputElementCopy.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n this.ensureInputAttribute();\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObj = this.popupWrapper = null;\n this.keyboardModule.destroy();\n }\n if (this.ngTag === null) {\n if (this.inputElement) {\n if (!isNullOrUndefined(this.inputWrapper)) {\n this.inputWrapper.container.insertAdjacentElement('afterend', this.inputElement);\n }\n removeClass([this.inputElement], [INPUTROOT]);\n }\n removeClass([this.element], [ROOT]);\n if (!isNullOrUndefined(this.inputWrapper)) {\n detach(this.inputWrapper.container);\n }\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n this.inputWrapper = null;\n this.keyboardModules = null;\n };\n DatePicker.prototype.ensureInputAttribute = function () {\n var prop = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n prop[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < prop.length; i++) {\n if (isNullOrUndefined(this.inputElementCopy.getAttribute(prop[i]))) {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n this.inputElement.removeAttribute(prop[i]);\n }\n else {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = this.inputElementCopy.getAttribute(prop[i]);\n }\n this.inputElement.setAttribute(prop[i], this.inputElementCopy.getAttribute(prop[i]));\n }\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.preRender = function () {\n this.inputElementCopy = this.element.cloneNode(true);\n removeClass([this.inputElementCopy], [ROOT, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.formElement = closest(this.inputElement, 'form');\n this.index = this.showClearButton ? 2 : 1;\n this.ngTag = null;\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.ngTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n if (this.element.getAttribute('id')) {\n if (this.ngTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.element.id = getUniqueID('ej2-datetimepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n else {\n this.element.id = getUniqueID('ej2-datepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n }\n if (this.ngTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.checkHtmlAttributes(false);\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n _super.prototype.preRender.call(this);\n };\n DatePicker.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n altUpArrow: 'alt+uparrow',\n altDownArrow: 'alt+downarrow',\n escape: 'escape',\n enter: 'enter',\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n shiftTab: 'shift+tab',\n tab: 'tab'\n };\n return this.defaultKeyConfigs;\n };\n DatePicker.prototype.validationAttribute = function (target, inputElement) {\n var nameAttribute = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n inputElement.setAttribute('name', nameAttribute);\n target.removeAttribute('name');\n var attribute = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attribute.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attribute[i]))) {\n continue;\n }\n var attr = target.getAttribute(attribute[i]);\n inputElement.setAttribute(attribute[i], attr);\n target.removeAttribute(attribute[i]);\n }\n };\n DatePicker.prototype.checkFormat = function () {\n var culture = new Internationalization(this.locale);\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (this.format.skeleton !== '' && !isNullOrUndefined(this.format.skeleton)) {\n var skeletonString = this.format.skeleton;\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'dateTime' });\n }\n else {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'date' });\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = this.dateTimeFormat;\n }\n else {\n this.formatString = null;\n }\n }\n }\n else {\n this.formatString = null;\n }\n };\n DatePicker.prototype.checkHtmlAttributes = function (dynamic) {\n this.globalize = new Internationalization(this.locale);\n this.checkFormat();\n this.checkView();\n var attributes = dynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'disabled', 'readonly', 'style', 'name', 'placeholder', 'type'];\n var options;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n };\n }\n else {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['enabled'] === undefined)) || dynamic)) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !dynamic);\n }\n break;\n case 'readonly':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['readonly'] === undefined)) || dynamic)) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !dynamic);\n }\n break;\n case 'placeholder':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['placeholder'] === undefined)) || dynamic)) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !dynamic);\n }\n break;\n case 'style':\n this.inputElement.setAttribute('style', '' + this.inputElement.getAttribute(prop));\n break;\n case 'name':\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute(prop));\n break;\n case 'value':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['value'] === undefined)) || dynamic)) {\n var value = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(value, options), {}), !dynamic);\n }\n break;\n case 'min':\n if ((+this.min === +new Date(1900, 0, 1)) || dynamic) {\n var min = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(min), {}), !dynamic);\n }\n break;\n case 'max':\n if ((+this.max === +new Date(2099, 11, 31)) || dynamic) {\n var max = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(max), {}), !dynamic);\n }\n break;\n case 'type':\n if (this.inputElement.getAttribute(prop) !== 'text') {\n this.inputElement.setAttribute('type', 'text');\n }\n break;\n }\n }\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DatePicker.prototype.getModuleName = function () {\n return 'datepicker';\n };\n DatePicker.prototype.disabledDates = function (isDynamic, isBlur) {\n if (isDynamic === void 0) { isDynamic = false; }\n if (isBlur === void 0) { isBlur = false; }\n var formatOptions;\n var globalize;\n var valueCopy = this.checkDateValue(this.value) ? new Date(+this.value) : new Date(this.checkValue(this.value));\n var previousValCopy = this.previousDate;\n //calls the Calendar render method to check the disabled dates through renderDayCell event and update the input value accordingly.\n this.minMaxUpdates();\n if (!isDynamic || (isDynamic && !isNullOrUndefined(this.renderDayCell))) {\n _super.prototype.render.call(this);\n }\n this.previousDate = previousValCopy;\n var date = valueCopy && +(valueCopy);\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + date);\n if (!this.strictMode) {\n if (typeof this.value === 'string' || ((typeof this.value === 'object') && (+this.value) !== (+valueCopy))) {\n this.setProperties({ value: valueCopy }, true);\n }\n }\n if (!isNullOrUndefined(this.calendarElement) && !isNullOrUndefined(this.calendarElement.querySelectorAll(dateIdString)[0])) {\n if (this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled')) {\n if (!this.strictMode) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n }\n }\n var inputVal;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n inputVal = globalize;\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n inputVal = this.globalize.formatDate(valueCopy, formatOptions);\n }\n if (!this.popupObj) {\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n this.notify('createMask', {\n module: 'MaskedDateTime', isBlur: isBlur\n });\n }\n }\n };\n DatePicker.prototype.setAriaAttributes = function () {\n if (this.isCalendar()) {\n Input.addAttributes({ 'aria-expanded': 'true' }, this.inputElement);\n attributes(this.inputElement, { 'aria-owns': this.inputElement.id + '_options' });\n attributes(this.inputElement, { 'aria-controls': this.inputElement.id });\n if (this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': '' + this.setActiveDescendant() });\n }\n }\n else {\n Input.addAttributes({ 'aria-expanded': 'false' }, this.inputElement);\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-controls');\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n DatePicker.prototype.errorClass = function () {\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + (+this.value));\n var isDisabledDate = this.calendarElement &&\n this.calendarElement.querySelectorAll(dateIdString)[0] &&\n this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled');\n if ((!isNullOrUndefined(this.value) && !isNullOrUndefined(this.min) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !isNullOrUndefined(this.max) && !(new Date(this.value).setMilliseconds(0) >= new Date(this.min).setMilliseconds(0)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n && new Date(this.value).setMilliseconds(0) <= new Date(this.max).setMilliseconds(0)))\n || (!this.strictMode && this.inputElement.value !== '' && this.inputElement.value !== this.maskedDateValue && isNullOrUndefined(this.value) || isDisabledDate)) {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n else if (!isNullOrUndefined(this.inputWrapper)) {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DatePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DatePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n DatePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.isInteracted = false;\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n this.previousElementValue = this.inputElement.value;\n if (isNullOrUndefined(this.value)) {\n if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n }\n else {\n this.updateInputValue('');\n }\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n this.updateInput(true);\n if (+this.previousDate !== +this.value) {\n this.changeTrigger(null);\n }\n this.isInteracted = true;\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'format':\n this.checkFormat();\n this.bindInputEvent();\n this.updateInput();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n break;\n case 'allowEdit':\n this.setAllowEdit();\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n this.setAriaDisabled();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkHtmlAttributes(true);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n if (this.datepickerOptions && this.datepickerOptions.placeholder == null) {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n }\n this.updateInput();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'start':\n case 'depth':\n this.checkView();\n if (this.calendarElement) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n this.index = this.showClearButton ? 2 : 1;\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n this.updateInputValue(this.maskedDateValue);\n this.bindInputEvent();\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.updateInputValue('');\n }\n }\n break;\n default:\n if (this.calendarElement && this.isCalendar()) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property({})\n ], DatePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(1000)\n ], DatePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property('Never')\n ], DatePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], DatePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"destroyed\", void 0);\n DatePicker = __decorate([\n NotifyPropertyChanges\n ], DatePicker);\n return DatePicker;\n}(Calendar));\nexport { DatePicker };\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nexport var properties = ['isLazyUpdate', 'plugins', 'cssClass', 'currency', 'currencyCode', 'decimals', 'enablePersistence', 'enableRtl', 'enabled', 'floatLabelType', 'format', 'htmlAttributes', 'locale', 'max', 'min', 'placeholder', 'readonly', 'showClearButton', 'showSpinButton', 'step', 'strictMode', 'validateDecimalOnType', 'value', 'width', 'blur', 'change', 'created', 'destroyed', 'focus'];\nexport var modelProps = ['value'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents the Essential JS 2 VueJS NumericTextBox Component\n * ```html\n * \n * ```\n */\nexport var NumericTextBoxComponent = vueDefineComponent({\n name: 'NumericTextBoxComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new NumericTextBox({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: false,\n hasInjectedModules: false,\n tagMapper: {},\n tagNameMapper: {},\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('input', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n decrement: function (step) {\n return this.ej2Instances.decrement(step);\n },\n focusIn: function () {\n return this.ej2Instances.focusIn();\n },\n focusOut: function () {\n return this.ej2Instances.focusOut();\n },\n getText: function () {\n return this.ej2Instances.getText();\n },\n increment: function (step) {\n return this.ej2Instances.increment(step);\n },\n }\n});\nexport var NumericTextBoxPlugin = {\n name: 'ejs-numerictextbox',\n install: function (Vue) {\n Vue.component(NumericTextBoxPlugin.name, NumericTextBoxComponent);\n }\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Deferred, Predicate, DataUtil } from '@syncfusion/ej2-data';\nimport { initForeignKeyColumn, getForeignKeyData, generateQuery } from '../base/constant';\nimport { getDatePredicate } from '../base/util';\nimport { Data } from './data';\nimport * as events from '../base/constant';\n/**\n * `ForeignKey` module is used to handle foreign key column's actions.\n */\nvar ForeignKey = /** @class */ (function (_super) {\n __extends(ForeignKey, _super);\n function ForeignKey(parent, serviceLocator) {\n var _this = _super.call(this, parent, serviceLocator) || this;\n _this.parent = parent;\n _this.serviceLocator = serviceLocator;\n _this.initEvent();\n return _this;\n }\n ForeignKey.prototype.initEvent = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initForeignKeyColumn, this.initForeignKeyColumns, this);\n this.parent.on(getForeignKeyData, this.getForeignKeyData, this);\n this.parent.on(generateQuery, this.generateQueryFormData, this);\n };\n ForeignKey.prototype.initForeignKeyColumns = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].dataSource = (columns[parseInt(i.toString(), 10)].dataSource instanceof DataManager ?\n columns[parseInt(i.toString(), 10)].dataSource :\n (isNullOrUndefined(columns[parseInt(i.toString(), 10)].dataSource) ? new DataManager() :\n 'result' in columns[parseInt(i.toString(), 10)].dataSource ? columns[parseInt(i.toString(), 10)].dataSource :\n new DataManager(columns[parseInt(i.toString(), 10)].dataSource)));\n }\n };\n ForeignKey.prototype.eventfPromise = function (args, query, key, column) {\n var state = this.getStateEventArgument(query);\n var def = new Deferred();\n var deff = new Deferred();\n state.action = args.action;\n var dataModule = this.parent.getDataModule();\n if (!isNullOrUndefined(args.action) && args.action.requestType && dataModule.foreignKeyDataState.isDataChanged !== false) {\n dataModule.setForeignKeyDataState({\n isPending: true, resolver: deff.resolve\n });\n deff.promise.then(function () {\n def.resolve(column.dataSource);\n });\n state.setColumnData = this.parent.setForeignKeyData.bind(this.parent);\n this.parent.trigger(events.columnDataStateChange, state);\n }\n else {\n dataModule.setForeignKeyDataState({});\n def.resolve(key);\n }\n return def;\n };\n ForeignKey.prototype.getForeignKeyData = function (args) {\n var _this = this;\n var foreignColumns = args.column ? [args.column] : this.parent.getForeignKeyColumns();\n var allPromise = [];\n var _loop_1 = function (i) {\n var promise = void 0;\n var query = args.isComplex ? this_1.genarateColumnQuery(foreignColumns[parseInt(i.toString(), 10)]) :\n this_1.genarateQuery(foreignColumns[parseInt(i.toString(), 10)], args.result.result, false, true);\n query.params = this_1.parent.query.params;\n var dataSource = foreignColumns[parseInt(i.toString(), 10)].dataSource;\n if (dataSource && 'result' in dataSource) {\n var def = this_1.eventfPromise(args, query, dataSource, foreignColumns[parseInt(i.toString(), 10)]);\n promise = def.promise;\n }\n else if (!dataSource.ready || dataSource.dataSource.offline) {\n promise = dataSource.executeQuery(query);\n }\n else {\n promise = dataSource.ready.then(function () {\n return dataSource.executeQuery(query);\n });\n }\n allPromise.push(promise);\n };\n var this_1 = this;\n for (var i = 0; i < foreignColumns.length; i++) {\n _loop_1(i);\n }\n Promise.all(allPromise).then(function (responses) {\n for (var i = 0; i < responses.length; i++) {\n foreignColumns[parseInt(i.toString(), 10)].columnData = responses[parseInt(i.toString(), 10)].result;\n if (foreignColumns[parseInt(i.toString(), 10)].editType === 'dropdownedit' && 'result' in foreignColumns[parseInt(i.toString(), 10)].dataSource) {\n foreignColumns[parseInt(i.toString(), 10)].edit.params = extend(foreignColumns[parseInt(i.toString(), 10)]\n .edit.params, {\n dataSource: responses[parseInt(i.toString(), 10)].result,\n query: new Query(), fields: {\n value: foreignColumns[parseInt(i.toString(), 10)].foreignKeyField ||\n foreignColumns[parseInt(i.toString(), 10)].field,\n text: foreignColumns[parseInt(i.toString(), 10)].foreignKeyValue\n }\n });\n }\n }\n args.promise.resolve(args.result);\n }).catch(function (e) {\n _this.parent.log(['actionfailure', 'foreign_key_failure']);\n if (args.promise && args.promise.reject) {\n args.promise.reject(e);\n }\n return e;\n });\n };\n ForeignKey.prototype.generateQueryFormData = function (args) {\n args.predicate.predicate = this.genarateQuery(args.column, args.column.columnData, true);\n };\n ForeignKey.prototype.genarateQuery = function (column, e, fromData, needQuery) {\n var gObj = this.parent;\n var predicates = [];\n var query = new Query();\n var field = fromData ? column.foreignKeyField : column.field;\n if (gObj.allowPaging || gObj.enableVirtualization || fromData) {\n e = new DataManager(((gObj.allowGrouping && gObj.groupSettings.columns.length && !fromData) ?\n e.records : e)).executeLocal(new Query().select(field));\n var filteredValue = DataUtil.distinct(e, field, false);\n field = fromData ? column.field : column.foreignKeyField;\n for (var i = 0; i < filteredValue.length; i++) {\n if (filteredValue[parseInt(i.toString(), 10)] && filteredValue[parseInt(i.toString(), 10)].getDay) {\n predicates.push(getDatePredicate({ field: field, operator: 'equal', value: filteredValue[parseInt(i.toString(), 10)], matchCase: false }));\n }\n else {\n predicates.push(new Predicate(field, 'equal', filteredValue[parseInt(i.toString(), 10)], false));\n }\n }\n }\n if (needQuery) {\n return predicates.length ? query.where(Predicate.or(predicates)) : query;\n }\n return (predicates.length ? Predicate.or(predicates) : { predicates: [] });\n };\n ForeignKey.prototype.genarateColumnQuery = function (column) {\n var gObj = this.parent;\n var query = new Query();\n var queryColumn = this.isFiltered(column);\n if (queryColumn.isTrue) {\n query = this.filterQuery(query, queryColumn.column, true);\n }\n if (gObj.searchSettings.key.length) {\n var sSettings = gObj.searchSettings;\n if (column.dataSource instanceof DataManager && (column.dataSource.adaptor.getModuleName &&\n column.dataSource.adaptor.getModuleName() === 'ODataV4Adaptor')) {\n query = this.searchQuery(query, column, true);\n }\n else {\n query.search(sSettings.key, column.foreignKeyValue, sSettings.operator, sSettings.ignoreCase);\n }\n }\n return query;\n };\n ForeignKey.prototype.isFiltered = function (column) {\n var filterColumn = this.parent.filterSettings.columns.filter(function (fColumn) {\n return (fColumn.field === column.foreignKeyValue && fColumn.uid === column.uid);\n });\n return {\n column: filterColumn, isTrue: !!filterColumn.length\n };\n };\n ForeignKey.prototype.getModuleName = function () {\n return 'foreignKey';\n };\n ForeignKey.prototype.destroy = function () {\n this.destroyEvent();\n };\n ForeignKey.prototype.destroyEvent = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initForeignKeyColumn, this.initForeignKeyColumns);\n this.parent.off(getForeignKeyData, this.getForeignKeyData);\n this.parent.off(generateQuery, this.generateQueryFormData);\n };\n return ForeignKey;\n}(Data));\nexport { ForeignKey };\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nexport var properties = ['isLazyUpdate', 'plugins', 'autocomplete', 'cssClass', 'enablePersistence', 'enableRtl', 'enabled', 'floatLabelType', 'htmlAttributes', 'locale', 'multiline', 'placeholder', 'readonly', 'showClearButton', 'type', 'value', 'width', 'blur', 'change', 'created', 'destroyed', 'focus', 'input'];\nexport var modelProps = ['value'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents the Essential JS 2 VueJS TextBox Component\n * ```html\n * \n * ```\n */\nexport var TextBoxComponent = vueDefineComponent({\n name: 'TextBoxComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new TextBox({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: false,\n hasInjectedModules: false,\n tagMapper: {},\n tagNameMapper: {},\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('input', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n addAttributes: function (attributes) {\n return this.ej2Instances.addAttributes(attributes);\n },\n addIcon: function (position, icons) {\n return this.ej2Instances.addIcon(position, icons);\n },\n focusIn: function () {\n return this.ej2Instances.focusIn();\n },\n focusOut: function () {\n return this.ej2Instances.focusOut();\n },\n removeAttributes: function (attributes) {\n return this.ej2Instances.removeAttributes(attributes);\n },\n }\n});\nexport var TextBoxPlugin = {\n name: 'ejs-textbox',\n install: function (Vue) {\n Vue.component(TextBoxPlugin.name, TextBoxComponent);\n }\n};\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { DatePicker } from '@syncfusion/ej2-calendars';\nexport var properties = ['isLazyUpdate', 'plugins', 'allowEdit', 'calendarMode', 'cssClass', 'dayHeaderFormat', 'depth', 'enableMask', 'enablePersistence', 'enableRtl', 'enabled', 'firstDayOfWeek', 'floatLabelType', 'format', 'fullScreenMode', 'htmlAttributes', 'isMultiSelection', 'keyConfigs', 'locale', 'maskPlaceholder', 'max', 'min', 'openOnFocus', 'placeholder', 'readonly', 'serverTimezoneOffset', 'showClearButton', 'showTodayButton', 'start', 'strictMode', 'value', 'values', 'weekNumber', 'weekRule', 'width', 'zIndex', 'blur', 'change', 'cleared', 'close', 'created', 'destroyed', 'focus', 'navigated', 'open', 'renderDayCell'];\nexport var modelProps = ['value'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents the Essential JS 2 VueJS DatePicker Component.\n * ```html\n * \n * ```\n */\nexport var DatePickerComponent = vueDefineComponent({\n name: 'DatePickerComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new DatePicker({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: false,\n hasInjectedModules: true,\n tagMapper: {},\n tagNameMapper: {},\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('input', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n addDate: function (dates) {\n return this.ej2Instances.addDate(dates);\n },\n createContent: function () {\n return this.ej2Instances.createContent();\n },\n currentView: function () {\n return this.ej2Instances.currentView();\n },\n focusIn: function (triggerEvent) {\n return this.ej2Instances.focusIn(triggerEvent);\n },\n focusOut: function () {\n return this.ej2Instances.focusOut();\n },\n hide: function (event) {\n return this.ej2Instances.hide(event);\n },\n navigateTo: function (view, date) {\n return this.ej2Instances.navigateTo(view, date);\n },\n removeDate: function (dates) {\n return this.ej2Instances.removeDate(dates);\n },\n requiredModules: function () {\n return this.ej2Instances.requiredModules();\n },\n show: function (type, e) {\n return this.ej2Instances.show(type, e);\n },\n }\n});\nexport var DatePickerPlugin = {\n name: 'ejs-datepicker',\n install: function (Vue) {\n Vue.component(DatePickerPlugin.name, DatePickerComponent);\n }\n};\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { RadioButton } from '@syncfusion/ej2-buttons';\nexport var properties = ['isLazyUpdate', 'plugins', 'checked', 'cssClass', 'disabled', 'enableHtmlSanitizer', 'enablePersistence', 'enableRtl', 'htmlAttributes', 'label', 'labelPosition', 'locale', 'name', 'value', 'change', 'created'];\nexport var modelProps = ['value'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents the Essential JS 2 VueJS RadioButton Component\n * ```html\n * \n * ```\n */\nexport var RadioButtonComponent = vueDefineComponent({\n name: 'RadioButtonComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new RadioButton({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: false,\n hasInjectedModules: false,\n tagMapper: {},\n tagNameMapper: {},\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('input', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n click: function () {\n return this.ej2Instances.click();\n },\n focusIn: function () {\n return this.ej2Instances.focusIn();\n },\n getSelectedValue: function () {\n return this.ej2Instances.getSelectedValue();\n },\n }\n});\nexport var RadioButtonPlugin = {\n name: 'ejs-radiobutton',\n install: function (Vue) {\n Vue.component(RadioButtonPlugin.name, RadioButtonComponent);\n }\n};\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate, Deferred, UrlAdaptor, RemoteSaveAdaptor } from '@syncfusion/ej2-data';\nimport { setFormatter, isGroupAdaptive, getColumnByForeignKeyValue, refreshFilteredColsUid } from '../base/util';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * Grid data module is used to generate query and data source.\n *\n * @hidden\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n * @hidden\n */\n function Data(parent, serviceLocator) {\n this.dataState = { isPending: false, resolver: null, group: [] };\n this.foreignKeyDataState = { isPending: false, resolver: null };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.initDataManager();\n if (this.parent.isDestroyed || this.getModuleName() === 'foreignKey') {\n return;\n }\n this.parent.on(events.rowsAdded, this.addRows, this);\n this.parent.on(events.rowPositionChanged, this.reorderRows, this);\n this.parent.on(events.rowsRemoved, this.removeRows, this);\n this.parent.on(events.dataSourceModified, this.initDataManager, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.updateData, this.crudActions, this);\n this.parent.on(events.addDeleteAction, this.getData, this);\n this.parent.on(events.autoCol, this.refreshFilteredCols, this);\n this.parent.on(events.columnsPrepared, this.refreshFilteredCols, this);\n }\n Data.prototype.reorderRows = function (e) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, this.dataManager.dataSource.json.splice(e.fromIndex, 1)[0]);\n };\n Data.prototype.getModuleName = function () {\n return 'data';\n };\n /**\n * The function used to initialize dataManager and external query\n *\n * @returns {void}\n */\n Data.prototype.initDataManager = function () {\n var gObj = this.parent;\n this.dataManager = gObj.dataSource instanceof DataManager ? gObj.dataSource :\n (isNullOrUndefined(gObj.dataSource) ? new DataManager() : new DataManager(gObj.dataSource));\n if (gObj.isAngular && !(gObj.query instanceof Query)) {\n gObj.setProperties({ query: new Query() }, true);\n }\n else {\n this.isQueryInvokedFromData = true;\n if (gObj.isVue) {\n gObj.setProperties({ query: gObj.query instanceof Query ? gObj.query : new Query() }, true);\n }\n else {\n gObj.query = gObj.query instanceof Query ? gObj.query : new Query();\n }\n }\n };\n /**\n * The function is used to generate updated Query from Grid model.\n *\n * @param {boolean} skipPage - specifies the boolean to skip the page\n * @param {boolean} isAutoCompleteCall - specifies for auto complete call\n * @returns {Query} returns the Query\n * @hidden\n */\n Data.prototype.generateQuery = function (skipPage, isAutoCompleteCall) {\n var gObj = this.parent;\n var query = gObj.getQuery().clone();\n if (this.parent.columnQueryMode === 'ExcludeHidden') {\n query.select(this.parent.getColumns().filter(function (column) { return !(column.isPrimaryKey !== true && column.visible === false || column.field === undefined); }).map(function (column) { return column.field; }));\n }\n else if (this.parent.columnQueryMode === 'Schema') {\n var selectQueryFields = [];\n var columns = this.parent.columns;\n for (var i = 0; i < columns.length; i++) {\n selectQueryFields.push(columns[parseInt(i.toString(), 10)].field);\n }\n query.select(selectQueryFields);\n }\n this.filterQuery(query);\n this.searchQuery(query);\n this.aggregateQuery(query);\n this.sortQuery(query);\n if (isGroupAdaptive(this.parent)) {\n this.virtualGroupPageQuery(query);\n }\n else {\n this.pageQuery(query, skipPage);\n }\n if (isNullOrUndefined(isAutoCompleteCall) || !isAutoCompleteCall) {\n this.groupQuery(query);\n }\n return query;\n };\n /**\n * @param {Query} query - specifies the query\n * @returns {Query} - returns the query\n * @hidden\n */\n Data.prototype.aggregateQuery = function (query) {\n var rows = this.parent.aggregates;\n for (var i = 0; i < rows.length; i++) {\n var row = rows[parseInt(i.toString(), 10)];\n for (var j = 0; j < row.columns.length; j++) {\n var cols = row.columns[parseInt(j.toString(), 10)];\n var types = cols.type instanceof Array ? cols.type : [cols.type];\n for (var k = 0; k < types.length; k++) {\n query.aggregate(types[parseInt(k.toString(), 10)].toLowerCase(), cols.field);\n }\n }\n }\n return query;\n };\n Data.prototype.virtualGroupPageQuery = function (query) {\n var fName = 'fn';\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[parseInt(i.toString(), 10)][\"\" + fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n };\n Data.prototype.pageQuery = function (query, skipPage) {\n var gObj = this.parent;\n var fName = 'fn';\n var args = { query: query, skipPage: false };\n gObj.notify(events.setVirtualPageQuery, args);\n if (args.skipPage) {\n return query;\n }\n if ((gObj.allowPaging || gObj.enableVirtualization || gObj.enableInfiniteScrolling) && skipPage !== true) {\n gObj.pageSettings.currentPage = Math.max(1, gObj.pageSettings.currentPage);\n if (gObj.pageSettings.pageCount <= 0) {\n gObj.pageSettings.pageCount = 8;\n }\n if (gObj.pageSettings.pageSize <= 0) {\n gObj.pageSettings.pageSize = 12;\n }\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[parseInt(i.toString(), 10)][\"\" + fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n if (!isNullOrUndefined(gObj.infiniteScrollModule) && gObj.enableInfiniteScrolling) {\n this.parent.notify(events.infinitePageQuery, query);\n }\n else {\n query.page(gObj.pageSettings.currentPage, gObj.allowPaging && gObj.pagerModule &&\n (gObj.pagerModule.pagerObj.isAllPage && !gObj.isManualRefresh) &&\n (!this.dataManager.dataSource.offline && !(this.dataManager.adaptor instanceof RemoteSaveAdaptor)) ?\n null : gObj.pageSettings.pageSize);\n }\n }\n return query;\n };\n Data.prototype.groupQuery = function (query) {\n var gObj = this.parent;\n if (gObj.allowGrouping && gObj.groupSettings.columns.length) {\n if (this.parent.groupSettings.enableLazyLoading) {\n query.lazyLoad.push({ key: 'isLazyLoad', value: this.parent.groupSettings.enableLazyLoading });\n }\n var columns = gObj.groupSettings.columns;\n for (var i = 0, len = columns.length; i < len; i++) {\n var column = this.getColumnByField(columns[parseInt(i.toString(), 10)]);\n if (!column) {\n this.parent.log('initial_action', { moduleName: 'group', columnName: columns[parseInt(i.toString(), 10)] });\n }\n var isGrpFmt = column.enableGroupByFormat;\n var format = column.format;\n if (isGrpFmt) {\n query.group(columns[parseInt(i.toString(), 10)], this.formatGroupColumn.bind(this), format);\n }\n else {\n query.group(columns[parseInt(i.toString(), 10)], null);\n }\n }\n }\n return query;\n };\n Data.prototype.sortQuery = function (query) {\n var gObj = this.parent;\n if ((gObj.allowSorting || gObj.allowGrouping) && gObj.sortSettings.columns.length) {\n var columns = gObj.sortSettings.columns;\n var sortGrp = [];\n for (var i = columns.length - 1; i > -1; i--) {\n var col = this.getColumnByField(columns[parseInt(i.toString(), 10)].field);\n if (col) {\n col.setSortDirection(columns[parseInt(i.toString(), 10)].direction);\n }\n else {\n this.parent.log('initial_action', { moduleName: 'sort', columnName: columns[parseInt(i.toString(), 10)].field });\n return query;\n }\n var fn = columns[parseInt(i.toString(), 10)].direction;\n if (col.sortComparer) {\n this.parent.log('grid_sort_comparer');\n fn = !this.isRemote() ? col.sortComparer.bind(col) : columns[parseInt(i.toString(), 10)].direction;\n }\n if (gObj.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) === -1) {\n if (col.isForeignColumn() || col.sortComparer) {\n query.sortByForeignKey(col.field, fn, undefined, columns[parseInt(i.toString(), 10)].direction.toLowerCase());\n }\n else {\n query.sortBy(col.field, fn);\n }\n }\n else {\n sortGrp.push({ direction: fn, field: col.field });\n }\n }\n for (var i = 0, len = sortGrp.length; i < len; i++) {\n if (typeof sortGrp[parseInt(i.toString(), 10)].direction === 'string') {\n query.sortBy(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction);\n }\n else {\n var col = this.getColumnByField(sortGrp[parseInt(i.toString(), 10)].field);\n query.sortByForeignKey(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction, undefined, col.getSortDirection().toLowerCase());\n }\n }\n }\n return query;\n };\n Data.prototype.searchQuery = function (query, fcolumn, isForeignKey) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.getSearchColumnFieldNames();\n var predicateList = [];\n var needForeignKeySearch = false;\n if (this.parent.searchSettings.key.length) {\n needForeignKeySearch = this.parent.getForeignKeyColumns().some(function (col) { return fields.indexOf(col.field) > -1; });\n var adaptor = !isForeignKey ? this.dataManager.adaptor : fcolumn.dataSource.adaptor;\n if (needForeignKeySearch || (adaptor.getModuleName &&\n adaptor.getModuleName() === 'ODataV4Adaptor')) {\n fields = isForeignKey ? [fcolumn.foreignKeyValue] : fields;\n for (var i = 0; i < fields.length; i++) {\n var column = isForeignKey ? fcolumn : this.getColumnByField(fields[parseInt(i.toString(), 10)]);\n if (column.isForeignColumn() && !isForeignKey) {\n predicateList = this.fGeneratePredicate(column, predicateList);\n }\n else {\n predicateList.push(new Predicate(fields[parseInt(i.toString(), 10)], sSettings.operator, sSettings.key, sSettings.ignoreCase, sSettings.ignoreAccent));\n }\n }\n var predList = Predicate.or(predicateList);\n predList.key = sSettings.key;\n query.where(predList);\n }\n else {\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n }\n return query;\n };\n Data.prototype.filterQuery = function (query, column, skipFoerign) {\n var gObj = this.parent;\n var predicateList = [];\n var actualFilter = [];\n var foreignColumn = this.parent.getForeignKeyColumns();\n var foreignColEmpty;\n if (gObj.allowFiltering && gObj.filterSettings.columns.length) {\n var columns = column ? column : gObj.filterSettings.columns;\n var colType = {};\n for (var _i = 0, _a = gObj.getColumns(); _i < _a.length; _i++) {\n var col = _a[_i];\n colType[col.field] = col.filter.type ? col.filter.type : gObj.filterSettings.type;\n }\n var foreignCols = [];\n var defaultFltrCols = [];\n for (var _b = 0, columns_1 = columns; _b < columns_1.length; _b++) {\n var col = columns_1[_b];\n var gridColumn = col.isForeignKey ? gObj.getColumnByUid(col.uid) : gObj.getColumnByField(col.field);\n if (isNullOrUndefined(col.type) && gridColumn && (gridColumn.type === 'date' || gridColumn.type === 'datetime' || gridColumn.type === 'dateonly')) {\n col.type = col.isForeignKey ? gObj.getColumnByUid(col.uid).type : gObj.getColumnByField(col.field).type;\n }\n if (col.isForeignKey) {\n foreignCols.push(col);\n }\n else {\n defaultFltrCols.push(col);\n }\n }\n if (defaultFltrCols.length) {\n for (var i = 0, len = defaultFltrCols.length; i < len; i++) {\n defaultFltrCols[parseInt(i.toString(), 10)].uid = defaultFltrCols[parseInt(i.toString(), 10)].uid ||\n this.parent.grabColumnByFieldFromAllCols(defaultFltrCols[parseInt(i.toString(), 10)].field, defaultFltrCols[parseInt(i.toString(), 10)].isForeignKey).uid;\n }\n var excelPredicate = CheckBoxFilterBase.getPredicate(defaultFltrCols);\n for (var _c = 0, _d = Object.keys(excelPredicate); _c < _d.length; _c++) {\n var prop = _d[_c];\n predicateList.push(excelPredicate[\"\" + prop]);\n }\n }\n if (foreignCols.length) {\n for (var _e = 0, foreignCols_1 = foreignCols; _e < foreignCols_1.length; _e++) {\n var col = foreignCols_1[_e];\n col.uid = col.uid || this.parent.grabColumnByFieldFromAllCols(col.field, col.isForeignKey).uid;\n var column_1 = this.parent.grabColumnByUidFromAllCols(col.uid);\n if (!column_1) {\n this.parent.log('initial_action', { moduleName: 'filter', columnName: col.field });\n }\n if (column_1.isForeignColumn() && getColumnByForeignKeyValue(col.field, foreignColumn) && !skipFoerign) {\n actualFilter.push(col);\n if (!column_1.columnData.length) {\n foreignColEmpty = true;\n }\n predicateList = this.fGeneratePredicate(column_1, predicateList);\n }\n else {\n var excelPredicate = CheckBoxFilterBase.getPredicate(columns);\n for (var _f = 0, _g = Object.keys(excelPredicate); _f < _g.length; _f++) {\n var prop = _g[_f];\n predicateList.push(excelPredicate[\"\" + prop]);\n }\n }\n }\n }\n if (predicateList.length && !foreignColEmpty) {\n query.where(Predicate.and(predicateList));\n }\n else {\n this.parent.notify(events.showEmptyGrid, {});\n }\n }\n return query;\n };\n Data.prototype.fGeneratePredicate = function (col, predicateList) {\n var fPredicate = {};\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(fPredicate.predicate);\n }\n }\n return predicateList;\n };\n /**\n * The function is used to get dataManager promise by executing given Query.\n *\n * @param {object} args - specifies the object\n * @param {string} args.requestType - Defines the request type\n * @param {string[]} args.foreignKeyData - Defines the foreignKeyData.string\n * @param {Object} args.data - Defines the data.\n * @param {number} args.index - Defines the index .\n * @param {Query} query - Defines the query which will execute along with data processing.\n * @returns {Promise} - returns the object\n * @hidden\n */\n Data.prototype.getData = function (args, query) {\n var _this = this;\n if (args === void 0) { args = { requestType: '' }; }\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ?\n args.foreignKeyData : this.parent.getPrimaryKeyFieldNames());\n this.parent.log('datasource_syntax_mismatch', { dataState: this.parent });\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n var def = this.eventPromise(args, query, key);\n return def.promise;\n }\n else {\n var crud = void 0;\n switch (args.requestType) {\n case 'delete':\n query = query ? query : this.generateQuery();\n // eslint-disable-next-line no-case-declarations\n var len = Object.keys(args.data).length;\n if (len === 1) {\n crud = this.dataManager.remove(key, args.data[0], query.fromTable, query);\n }\n else {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n changes.deletedRecords = args.data;\n crud = this.dataManager.saveChanges(changes, key, query.fromTable, query.requiresCount());\n }\n break;\n case 'save':\n query = query ? query : this.generateQuery();\n args.index = isNullOrUndefined(args.index) ? 0 : args.index;\n crud = this.dataManager.insert(args.data, query.fromTable, query, args.index);\n break;\n }\n var promise = 'promise';\n args[\"\" + promise] = crud;\n // eslint-disable-next-line no-prototype-builtins\n if (crud && !Array.isArray(crud) && !crud.hasOwnProperty('deletedRecords')) {\n return crud.then(function () {\n return _this.insert(query, args);\n });\n }\n else {\n return this.insert(query, args);\n }\n }\n };\n Data.prototype.insert = function (query, args) {\n if (args.requestType === 'save') {\n this.parent.notify(events.recordAdded, args);\n }\n return this.executeQuery(query);\n };\n Data.prototype.executeQuery = function (query) {\n var _this = this;\n if (this.dataManager.ready) {\n var deferred_1 = new Deferred();\n var ready = this.dataManager.ready;\n ready.then(function () {\n _this.dataManager.executeQuery(query).then(function (result) {\n deferred_1.resolve(result);\n });\n }).catch(function (e) {\n deferred_1.reject(e);\n });\n return deferred_1.promise;\n }\n else {\n return this.dataManager.executeQuery(query);\n }\n };\n Data.prototype.formatGroupColumn = function (value, field) {\n var serviceLocator = this.serviceLocator;\n var column = this.getColumnByField(field);\n var date = value;\n if (!column.type) {\n column.type = date.getDay ? (date.getHours() > 0 || date.getMinutes() > 0 ||\n date.getSeconds() > 0 || date.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n if (isNullOrUndefined(column.getFormatter())) {\n setFormatter(serviceLocator, column);\n }\n var formatVal = ValueFormatter.prototype.toView(value, column.getFormatter());\n return formatVal;\n };\n Data.prototype.crudActions = function (args) {\n var query = this.generateQuery();\n var promise = null;\n var pr = 'promise';\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ? args.foreignKeyData :\n this.parent.getPrimaryKeyFieldNames());\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.eventPromise(args, query, key);\n }\n switch (args.requestType) {\n case 'save':\n promise = this.dataManager.update(key, args.data, query.fromTable, query, args.previousData);\n break;\n }\n args[\"\" + pr] = promise ? promise : args[\"\" + pr];\n this.parent.notify(events.crudAction, args);\n };\n /**\n * @param {object} changes - specifies the changes\n * @param {string} key - specifies the key\n * @param {object} original - specifies the original data\n * @param {Query} query - specifies the query\n * @returns {Promise} returns the object\n * @hidden\n */\n Data.prototype.saveChanges = function (changes, key, original, query) {\n if (query === void 0) { query = this.generateQuery(); }\n query.requiresCount();\n if ('result' in this.parent.dataSource) {\n var deff = new Deferred();\n var args = {\n requestType: 'batchsave', changes: changes, key: key, query: query,\n endEdit: deff.resolve\n };\n this.setState({ isPending: true, resolver: deff.resolve });\n this.parent.trigger(events.dataSourceChanged, args);\n return deff.promise;\n }\n else {\n var promise = this.dataManager.saveChanges(changes, key, query.fromTable, query, original);\n return promise;\n }\n };\n Data.prototype.getKey = function (keys) {\n if (keys && keys.length) {\n return keys[0];\n }\n return undefined;\n };\n /**\n * @returns {boolean} returns whether its remote data\n * @hidden\n */\n Data.prototype.isRemote = function () {\n return this.dataManager.dataSource.offline !== true && this.dataManager.dataSource.url !== undefined &&\n this.dataManager.dataSource.url !== '';\n };\n Data.prototype.addRows = function (e) {\n for (var i = e.records.length; i > 0; i--) {\n if (this.parent.dataSource instanceof DataManager && this.dataManager.dataSource.offline) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, e.records[i - 1]);\n }\n else if (((!this.parent.getDataModule().isRemote()) && (!isNullOrUndefined(this.parent.dataSource))) &&\n (!this.parent.dataSource.result)) {\n this.parent.dataSource['splice'](e.toIndex, 0, e.records[i - 1]);\n }\n }\n };\n Data.prototype.removeRows = function (e) {\n var json = this.dataManager.dataSource.json;\n if (this.parent.dataSource instanceof DataManager && this.dataManager.dataSource.offline) {\n this.dataManager.dataSource.json = json.filter(function (value) { return e.records.indexOf(value) === -1; });\n }\n else if (((!this.parent.getDataModule().isRemote()) && (!isNullOrUndefined(this.parent.dataSource))) &&\n (!this.parent.dataSource.result)) {\n this.parent.dataSource = json.filter(function (value) { return e.records.indexOf(value) === -1; });\n }\n };\n Data.prototype.getColumnByField = function (field) {\n var col;\n return (this.parent.columnModel).some(function (column) {\n col = column;\n return column.field === field;\n }) && col;\n };\n Data.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowsAdded, this.addRows);\n this.parent.off(events.rowsRemoved, this.removeRows);\n this.parent.off(events.dataSourceModified, this.initDataManager);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.updateData, this.crudActions);\n this.parent.off(events.addDeleteAction, this.getData);\n this.parent.off(events.autoCol, this.refreshFilteredCols);\n this.parent.off(events.columnsPrepared, this.refreshFilteredCols);\n };\n Data.prototype.getState = function () {\n return this.dataState;\n };\n Data.prototype.setState = function (state) {\n return this.dataState = state;\n };\n Data.prototype.getForeignKeyDataState = function () {\n return this.foreignKeyDataState;\n };\n Data.prototype.setForeignKeyDataState = function (state) {\n this.foreignKeyDataState = state;\n };\n Data.prototype.getStateEventArgument = function (query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return extend(data, state.pvtData);\n };\n Data.prototype.eventPromise = function (args, query, key) {\n var _this = this;\n var dataArgs = args;\n var state = this.getStateEventArgument(query);\n var def = new Deferred();\n var deff = new Deferred();\n if ((args.requestType !== undefined || (this.parent.groupSettings.disablePageWiseAggregates && query.queries.some(function (query) { return query.fn === 'onGroup'; })))\n && this.dataState.isDataChanged !== false) {\n state.action = args;\n if (args.requestType === 'save' || args.requestType === 'delete') {\n var editArgs_1 = args;\n editArgs_1.key = key;\n var promise = 'promise';\n editArgs_1[\"\" + promise] = deff.promise;\n editArgs_1.state = state;\n this.setState({ isPending: true, resolver: deff.resolve });\n dataArgs.endEdit = deff.resolve;\n dataArgs.cancelEdit = deff.reject;\n this.parent.trigger(events.dataSourceChanged, editArgs_1);\n deff.promise.then(function () {\n _this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n if (editArgs_1.requestType === 'save') {\n _this.parent.notify(events.recordAdded, editArgs_1);\n }\n _this.parent.trigger(events.dataStateChange, state);\n })\n .catch(function () { return void 0; });\n }\n else {\n this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n this.parent.trigger(events.dataStateChange, state);\n }\n }\n else {\n this.setState({});\n def.resolve(this.parent.dataSource);\n }\n return def;\n };\n /**\n * Gets the columns where searching needs to be performed from the Grid.\n *\n * @returns {string[]} returns the searched column field names\n */\n Data.prototype.getSearchColumnFieldNames = function () {\n var colFieldNames = [];\n var columns = this.parent.getColumns();\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var col = columns_2[_i];\n if (col.allowSearching && !isNullOrUndefined(col.field)) {\n colFieldNames.push(col.field);\n }\n }\n return colFieldNames;\n };\n Data.prototype.refreshFilteredCols = function () {\n if (this.parent.allowFiltering && this.parent.filterSettings.columns.length) {\n refreshFilteredColsUid(this.parent, this.parent.filterSettings.columns);\n }\n };\n return Data;\n}());\nexport { Data };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-unused-expressions */\nimport { Component, EventHandler, Internationalization } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, L10n } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { cldrData, getDefaultDateObject, rippleEffect } from '@syncfusion/ej2-base';\nimport { removeClass, detach, closest, addClass, attributes } from '@syncfusion/ej2-base';\nimport { getValue, getUniqueID, extend, Browser } from '@syncfusion/ej2-base';\nimport { Property, Event, isNullOrUndefined, throwError } from '@syncfusion/ej2-base';\n//class constant defination.\nvar OTHERMONTH = 'e-other-month';\nvar OTHERDECADE = 'e-other-year';\nvar ROOT = 'e-calendar';\nvar DEVICE = 'e-device';\nvar HEADER = 'e-header';\nvar RTL = 'e-rtl';\nvar CONTENT = 'e-content';\nvar CONTENTTABLE = 'e-calandar-content-table';\nvar YEAR = 'e-year';\nvar MONTH = 'e-month';\nvar DECADE = 'e-decade';\nvar ICON = 'e-icons';\nvar PREVICON = 'e-prev';\nvar NEXTICON = 'e-next';\nvar PREVSPAN = 'e-date-icon-prev';\nvar NEXTSPAN = 'e-date-icon-next ';\nvar ICONCONTAINER = 'e-icon-container';\nvar DISABLED = 'e-disabled';\nvar OVERLAY = 'e-overlay';\nvar WEEKEND = 'e-weekend';\nvar WEEKNUMBER = 'e-week-number';\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar FOCUSEDCELL = 'e-focused-cell';\nvar OTHERMONTHROW = 'e-month-hide';\nvar TODAY = 'e-today';\nvar TITLE = 'e-title';\nvar LINK = 'e-day';\nvar CELL = 'e-cell';\nvar WEEKHEADER = 'e-week-header';\nvar ZOOMIN = 'e-zoomin';\nvar FOOTER = 'e-footer-container';\nvar BTN = 'e-btn';\nvar FLAT = 'e-flat';\nvar CSS = 'e-css';\nvar PRIMARY = 'e-primary';\nvar DAYHEADERLONG = 'e-calendar-day-header-lg';\nvar dayMilliSeconds = 86400000;\nvar minutesMilliSeconds = 60000;\n/**\n *\n * @private\n */\nvar CalendarBase = /** @class */ (function (_super) {\n __extends(CalendarBase, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarBaseModel} options - Specifies the CalendarBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function CalendarBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.effect = '';\n _this.isPopupClicked = false;\n _this.isDateSelected = true;\n _this.isTodayClicked = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.previousDates = false;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.render = function () {\n this.rangeValidation(this.min, this.max);\n this.calendarEleCopy = this.element.cloneNode(true);\n if (this.calendarMode === 'Islamic') {\n if (+(this.min.setSeconds(0)) === +new Date(1900, 0, 1, 0, 0, 0)) {\n this.min = new Date(1944, 2, 18);\n }\n if (+this.max === +new Date(2099, 11, 31)) {\n this.max = new Date(2069, 10, 16);\n }\n }\n this.globalize = new Internationalization(this.locale);\n if (isNullOrUndefined(this.firstDayOfWeek) || this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: this.globalize.getFirstDayOfWeek() }, true);\n }\n this.todayDisabled = false;\n this.todayDate = new Date(new Date().setHours(0, 0, 0, 0));\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add(ROOT);\n if (this.enableRtl) {\n this.element.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.element.classList.add(DEVICE);\n }\n attributes(this.element, {\n 'data-role': 'calendar'\n });\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.calendarElement = this.createElement('div');\n this.calendarElement.classList.add(ROOT);\n if (this.enableRtl) {\n this.calendarElement.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.calendarElement.classList.add(DEVICE);\n }\n attributes(this.calendarElement, {\n 'data-role': 'calendar'\n });\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.createHeader();\n this.createContent();\n this.wireEvents();\n };\n CalendarBase.prototype.rangeValidation = function (min, max) {\n if (isNullOrUndefined(min)) {\n this.setProperties({ min: new Date(1900, 0, 1) }, true);\n }\n if (isNullOrUndefined(max)) {\n this.setProperties({ max: new Date(2099, 11, 31) }, true);\n }\n };\n CalendarBase.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n altUpArrow: 'alt+uparrow',\n spacebar: 'space',\n altRightArrow: 'alt+rightarrow',\n altLeftArrow: 'alt+leftarrow'\n };\n return this.defaultKeyConfigs;\n };\n CalendarBase.prototype.validateDate = function (value) {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(this.max))) }, true);\n this.currentDate = this.currentDate ? this.currentDate : new Date(new Date().setHours(0, 0, 0, 0));\n if (!isNullOrUndefined(value) && this.min <= this.max && value >= this.min && value <= this.max) {\n this.currentDate = new Date(this.checkValue(value));\n }\n };\n CalendarBase.prototype.setOverlayIndex = function (popupWrapper, popupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(popupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(popupElement.style.zIndex, 10) ? parseInt(popupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n CalendarBase.prototype.minMaxUpdate = function (value) {\n if (!(+this.min <= +this.max)) {\n this.setProperties({ min: this.min }, true);\n addClass([this.element], OVERLAY);\n }\n else {\n removeClass([this.element], OVERLAY);\n }\n this.min = isNullOrUndefined(this.min) || !(+this.min) ? this.min = new Date(1900, 0, 1) : this.min;\n this.max = isNullOrUndefined(this.max) || !(+this.max) ? this.max = new Date(2099, 11, 31) : this.max;\n if (+this.min <= +this.max && value && +value <= +this.max && +value >= +this.min) {\n this.currentDate = new Date(this.checkValue(value));\n }\n else {\n if (+this.min <= +this.max && !value && +this.currentDate > +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n else {\n if (+this.currentDate < +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n }\n }\n };\n CalendarBase.prototype.createHeader = function () {\n var ariaPrevAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'previous month'\n };\n var ariaNextAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'next month'\n };\n var ariaTitleAttrs = {\n 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'title'\n };\n var tabIndexAttr = { 'tabindex': '0' };\n this.headerElement = this.createElement('div', { className: HEADER });\n var iconContainer = this.createElement('div', { className: ICONCONTAINER });\n this.previousIcon = this.createElement('button', { className: '' + PREVICON, attrs: { type: 'button' } });\n rippleEffect(this.previousIcon, {\n duration: 400,\n selector: '.e-prev',\n isCenterRipple: true\n });\n attributes(this.previousIcon, ariaPrevAttrs);\n attributes(this.previousIcon, tabIndexAttr);\n this.nextIcon = this.createElement('button', { className: '' + NEXTICON, attrs: { type: 'button' } });\n rippleEffect(this.nextIcon, {\n selector: '.e-next',\n duration: 400,\n isCenterRipple: true\n });\n if (this.getModuleName() === 'daterangepicker') {\n attributes(this.previousIcon, { tabIndex: '-1' });\n attributes(this.nextIcon, { tabIndex: '-1' });\n }\n attributes(this.nextIcon, ariaNextAttrs);\n attributes(this.nextIcon, tabIndexAttr);\n this.headerTitleElement = this.createElement('div', { className: '' + LINK + ' ' + TITLE });\n attributes(this.headerTitleElement, ariaTitleAttrs);\n attributes(this.headerTitleElement, tabIndexAttr);\n this.headerElement.appendChild(this.headerTitleElement);\n this.previousIcon.appendChild(this.createElement('span', { className: '' + PREVSPAN + ' ' + ICON }));\n this.nextIcon.appendChild(this.createElement('span', { className: '' + NEXTSPAN + ' ' + ICON }));\n iconContainer.appendChild(this.previousIcon);\n iconContainer.appendChild(this.nextIcon);\n this.headerElement.appendChild(iconContainer);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.headerElement);\n }\n else {\n this.calendarElement.appendChild(this.headerElement);\n }\n this.adjustLongHeaderSize();\n };\n CalendarBase.prototype.createContent = function () {\n this.contentElement = this.createElement('div', { className: CONTENT });\n this.table = this.createElement('table', { attrs: { 'class': CONTENTTABLE, 'tabIndex': '0', 'role': 'grid', 'aria-activedescendant': '', 'aria-labelledby': this.element.id } });\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.contentElement);\n }\n else {\n this.calendarElement.appendChild(this.contentElement);\n }\n this.contentElement.appendChild(this.table);\n this.createContentHeader();\n this.createContentBody();\n if (this.showTodayButton) {\n this.createContentFooter();\n }\n if (this.getModuleName() != 'daterangepicker') {\n EventHandler.add(this.table, 'focus', this.addContentFocus, this);\n EventHandler.add(this.table, 'blur', this.removeContentFocus, this);\n }\n };\n CalendarBase.prototype.addContentFocus = function (args) {\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n if (!isNullOrUndefined(selectedDate)) {\n selectedDate.classList.add(FOCUSEDCELL);\n }\n else if (!isNullOrUndefined(focusedDate)) {\n focusedDate.classList.add(FOCUSEDCELL);\n }\n };\n CalendarBase.prototype.removeContentFocus = function (args) {\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n if (!isNullOrUndefined(selectedDate)) {\n selectedDate.classList.remove(FOCUSEDCELL);\n }\n else if (!isNullOrUndefined(focusedDate)) {\n focusedDate.classList.remove(FOCUSEDCELL);\n }\n };\n CalendarBase.prototype.getCultureValues = function () {\n var culShortNames = [];\n var cldrObj;\n var dayFormat = 'days.stand-alone.' + this.dayHeaderFormat.toLowerCase();\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrObj = (getValue(dayFormat, getDefaultDateObject()));\n }\n else {\n cldrObj = (this.getCultureObjects(cldrData, '' + this.locale));\n }\n if (!isNullOrUndefined(cldrObj)) {\n for (var _i = 0, _a = Object.keys(cldrObj); _i < _a.length; _i++) {\n var obj = _a[_i];\n culShortNames.push(getValue(obj, cldrObj));\n }\n }\n return culShortNames;\n };\n CalendarBase.prototype.toCapitalize = function (text) {\n return !isNullOrUndefined(text) && text.length ? text[0].toUpperCase() + text.slice(1) : text;\n };\n CalendarBase.prototype.createContentHeader = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.element.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n var daysCount = 6;\n var html = '';\n if (this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: 0 }, true);\n }\n this.tableHeadElement = this.createElement('thead', { className: WEEKHEADER });\n if (this.weekNumber) {\n html += '';\n if (this.getModuleName() === 'calendar') {\n addClass([this.element], '' + WEEKNUMBER);\n }\n else {\n addClass([this.calendarElement], '' + WEEKNUMBER);\n }\n }\n // eslint-disable-next-line max-len\n var shortNames = this.getCultureValues().length > 0 && this.getCultureValues() ? this.shiftArray(((this.getCultureValues().length > 0 && this.getCultureValues())), this.firstDayOfWeek) : null;\n if (!isNullOrUndefined(shortNames)) {\n for (var days = 0; days <= daysCount; days++) {\n html += '' + this.toCapitalize(shortNames[days]) + '';\n }\n }\n html = '' + html + '';\n this.tableHeadElement.innerHTML = html;\n this.table.appendChild(this.tableHeadElement);\n };\n CalendarBase.prototype.createContentBody = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content tbody')[0])) {\n detach(this.element.querySelectorAll('.e-content tbody')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content tbody')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content tbody')[0]);\n }\n }\n switch (this.start) {\n case 'Year':\n this.renderYears();\n break;\n case 'Decade':\n this.renderDecades();\n break;\n default:\n this.renderMonths();\n }\n };\n CalendarBase.prototype.updateFooter = function () {\n this.todayElement.textContent = this.l10.getConstant('today');\n this.todayElement.setAttribute('aria-label', this.l10.getConstant('today'));\n this.todayElement.setAttribute('tabindex', '0');\n };\n CalendarBase.prototype.createContentFooter = function () {\n if (this.showTodayButton) {\n var minimum = new Date(+this.min);\n var maximum = new Date(+this.max);\n var l10nLocale = { today: 'Today' };\n this.globalize = new Internationalization(this.locale);\n this.l10 = new L10n(this.getModuleName(), l10nLocale, this.locale);\n this.todayElement = this.createElement('button', { attrs: { role: 'button' } });\n rippleEffect(this.todayElement);\n this.updateFooter();\n addClass([this.todayElement], [BTN, TODAY, FLAT, PRIMARY, CSS]);\n if ((!(+new Date(minimum.setHours(0, 0, 0, 0)) <= +this.todayDate &&\n +this.todayDate <= +new Date(maximum.setHours(0, 0, 0, 0)))) || (this.todayDisabled)) {\n addClass([this.todayElement], DISABLED);\n }\n this.footer = this.createElement('div', { className: FOOTER });\n this.footer.appendChild(this.todayElement);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (!this.todayElement.classList.contains(DISABLED)) {\n EventHandler.add(this.todayElement, 'click', this.todayButtonClick, this);\n }\n }\n };\n CalendarBase.prototype.wireEvents = function (id, ref, keyConfig, moduleName) {\n EventHandler.add(this.headerTitleElement, 'click', this.navigateTitle, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n if (this.getModuleName() === 'calendar') {\n this.keyboardModule = new KeyboardEvents(this.element, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.calendarElement, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n };\n CalendarBase.prototype.dateWireEvents = function (id, ref, keyConfig, moduleName) {\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, keyConfig);\n this.serverModuleName = moduleName;\n };\n CalendarBase.prototype.todayButtonClick = function (e, value, isCustomDate) {\n if (this.showTodayButton) {\n if (this.currentView() === this.depth) {\n this.effect = '';\n }\n else {\n this.effect = 'e-zoomin';\n }\n if (this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.navigateTo(this.depth, new Date(this.checkValue(value)), isCustomDate);\n }\n else {\n this.navigateTo('Month', new Date(this.checkValue(value)), isCustomDate);\n }\n }\n };\n CalendarBase.prototype.resetCalendar = function () {\n this.calendarElement && detach(this.calendarElement);\n this.tableBodyElement && detach(this.tableBodyElement);\n this.table && detach(this.table);\n this.tableHeadElement && detach(this.tableHeadElement);\n this.nextIcon && detach(this.nextIcon);\n this.previousIcon && detach(this.previousIcon);\n this.footer && detach(this.footer);\n this.todayElement = null;\n this.renderDayCellArgs = null;\n this.calendarElement = this.tableBodyElement = this.footer = this.tableHeadElement =\n this.nextIcon = this.previousIcon = this.table = null;\n };\n CalendarBase.prototype.keyActionHandle = function (e, value, multiSelection) {\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate;\n if (multiSelection) {\n if (!isNullOrUndefined(focusedDate) && +value === parseInt(focusedDate.getAttribute('id').split('_')[0], 10)) {\n selectedDate = focusedDate;\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n var view = this.getViewNumber(this.currentView());\n var depthValue = this.getViewNumber(this.depth);\n var levelRestrict = (view === depthValue && this.getViewNumber(this.start) >= depthValue);\n this.effect = '';\n switch (e.action) {\n case 'moveLeft':\n if (this.getModuleName() != 'daterangepicker' && !isNullOrUndefined(e.target) && e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n this.keyboardNavigate(-1, view, e, this.max, this.min);\n e.preventDefault();\n }\n break;\n case 'moveRight':\n if (this.getModuleName() != 'daterangepicker' && !isNullOrUndefined(e.target) && e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n this.keyboardNavigate(1, view, e, this.max, this.min);\n e.preventDefault();\n }\n break;\n case 'moveUp':\n if (this.getModuleName() != 'daterangepicker' && !isNullOrUndefined(e.target) && e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n if (view === 0) {\n this.keyboardNavigate(-7, view, e, this.max, this.min); // move the current date to the previous seven days.\n }\n else {\n this.keyboardNavigate(-4, view, e, this.max, this.min); // move the current year to the previous four days.\n }\n e.preventDefault();\n }\n break;\n case 'moveDown':\n if (this.getModuleName() != 'daterangepicker' && !isNullOrUndefined(e.target) && e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n if (view === 0) {\n this.keyboardNavigate(7, view, e, this.max, this.min);\n }\n else {\n this.keyboardNavigate(4, view, e, this.max, this.min);\n }\n e.preventDefault();\n }\n break;\n case 'select':\n if (e.target === this.headerTitleElement) {\n this.navigateTitle(e);\n }\n else if (e.target === this.previousIcon) {\n this.navigatePrevious(e);\n }\n else if (e.target === this.nextIcon) {\n this.navigateNext(e);\n }\n else if (e.target === this.todayElement) {\n this.todayButtonClick(e, value);\n if (this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') {\n this.element.focus();\n }\n }\n else {\n var element = !isNullOrUndefined(focusedDate) ? focusedDate : selectedDate;\n if (!isNullOrUndefined(element) && !element.classList.contains(DISABLED)) {\n if (levelRestrict) {\n // eslint-disable-next-line radix\n var d = new Date(parseInt('' + (element).id, 0));\n this.selectDate(e, d, (element));\n }\n else {\n this.contentClick(null, --view, (element), value);\n }\n if (this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') {\n this.element.focus();\n }\n }\n }\n break;\n case 'controlUp':\n this.title();\n e.preventDefault();\n break;\n case 'controlDown':\n if (!isNullOrUndefined(focusedDate) && !levelRestrict || !isNullOrUndefined(selectedDate) && !levelRestrict) {\n this.contentClick(null, --view, (focusedDate || selectedDate), value);\n }\n e.preventDefault();\n break;\n case 'home':\n this.currentDate = this.firstDay(this.currentDate);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'end':\n this.currentDate = this.lastDay(this.currentDate, view);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'pageUp':\n this.addMonths(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'pageDown':\n this.addMonths(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageUp':\n this.addYears(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageDown':\n this.addYears(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'controlHome':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 0, 1));\n e.preventDefault();\n break;\n case 'controlEnd':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 11, 31));\n e.preventDefault();\n break;\n case 'tab':\n if ((this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') && e.target === this.todayElement) {\n e.preventDefault();\n this.element.focus();\n this.hide();\n }\n break;\n case 'shiftTab':\n if ((this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') && e.target === this.headerTitleElement) {\n e.preventDefault();\n this.element.focus();\n this.hide();\n }\n break;\n }\n };\n CalendarBase.prototype.keyboardNavigate = function (number, currentView, e, max, min) {\n var date = new Date(this.checkValue(this.currentDate));\n switch (currentView) {\n case 2:\n this.addYears(this.currentDate, number);\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n case 1:\n this.addMonths(this.currentDate, number);\n if (this.calendarMode === 'Gregorian') {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n else {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n break;\n case 0:\n this.addDay(this.currentDate, number, e, max, min);\n if (this.isMinMaxRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n }\n };\n /**\n * Initialize the event handler\n *\n * @param {Date} value - Specifies value of date.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.preRender = function (value) {\n var _this = this;\n this.navigatePreviousHandler = this.navigatePrevious.bind(this);\n this.navigateNextHandler = this.navigateNext.bind(this);\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.navigateHandler = function (e) {\n _this.triggerNavigate(e);\n };\n };\n CalendarBase.prototype.minMaxDate = function (localDate) {\n var currentDate = new Date(new Date(+localDate).setHours(0, 0, 0, 0));\n var minDate = new Date(new Date(+this.min).setHours(0, 0, 0, 0));\n var maxDate = new Date(new Date(+this.max).setHours(0, 0, 0, 0));\n if (+currentDate === +minDate || +currentDate === +maxDate) {\n if (+localDate < +this.min) {\n localDate = new Date(+this.min);\n }\n if (+localDate > +this.max) {\n localDate = new Date(+this.max);\n }\n }\n return localDate;\n };\n CalendarBase.prototype.renderMonths = function (e, value, isCustomDate) {\n var numCells = this.weekNumber ? 8 : 7;\n var tdEles;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(this.currentDate, value, null, null, isCustomDate, e);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n this.createContentHeader();\n if (this.calendarMode === 'Gregorian') {\n this.renderTemplate(tdEles, numCells, MONTH, e, value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(tdEles, numCells, MONTH, e, value);\n }\n };\n CalendarBase.prototype.renderDays = function (currentDate, value, multiSelection, values, isTodayDate, e) {\n var tdEles = [];\n var cellsCount = 42;\n var todayDate = isTodayDate ? new Date(+currentDate) : this.getDate(new Date(), this.timezone);\n var localDate = new Date(this.checkValue(currentDate));\n var minMaxDate;\n var currentMonth = localDate.getMonth();\n this.titleUpdate(currentDate, 'days');\n var d = localDate;\n localDate = new Date(d.getFullYear(), d.getMonth(), 0, d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds());\n while (localDate.getDay() !== this.firstDayOfWeek) {\n this.setStartDate(localDate, -1 * dayMilliSeconds);\n }\n for (var day = 0; day < cellsCount; ++day) {\n var weekEle = this.createElement('td', { className: CELL });\n var weekAnchor = this.createElement('span');\n if (day % 7 === 0 && this.weekNumber) {\n // 6 days are added to get Last day of the week and 3 days are added to get middle day of the week.\n var numberOfDays = this.weekRule === 'FirstDay' ? 6 : (this.weekRule === 'FirstFourDayWeek' ? 3 : 0);\n var finalDate = new Date(localDate.getFullYear(), localDate.getMonth(), (localDate.getDate() + numberOfDays));\n weekAnchor.textContent = '' + this.getWeek(finalDate);\n weekEle.appendChild(weekAnchor);\n addClass([weekEle], '' + WEEKNUMBER);\n tdEles.push(weekEle);\n }\n minMaxDate = new Date(+localDate);\n localDate = this.minMaxDate(localDate);\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full' };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var tdEle = this.dayCell(localDate);\n var title = this.globalize.formatDate(localDate, { type: 'date', skeleton: 'full' });\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, { format: 'd', type: 'date', skeleton: 'yMd' });\n var disabled = (this.min > localDate) || (this.max < localDate);\n if (disabled) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n }\n else {\n dayLink.setAttribute('title', '' + title);\n }\n if (currentMonth !== localDate.getMonth()) {\n addClass([tdEle], OTHERMONTH);\n dayLink.setAttribute('aria-disabled', 'true');\n }\n if (localDate.getDay() === 0 || localDate.getDay() === 6) {\n addClass([tdEle], WEEKEND);\n }\n tdEle.appendChild(dayLink);\n this.renderDayCellArgs = {\n date: localDate,\n isDisabled: false,\n element: tdEle,\n isOutOfRange: disabled\n };\n var argument = this.renderDayCellArgs;\n this.renderDayCellEvent(argument);\n if (argument.isDisabled) {\n var selectDate = new Date(this.checkValue(value));\n var argsDate = new Date(this.checkValue(argument.date));\n if (multiSelection) {\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n var localDateString = +new Date(this.globalize.formatDate(argument.date, { type: 'date', skeleton: 'yMd' }));\n var tempDateString = +new Date(this.globalize.formatDate(values[index], { type: 'date', skeleton: 'yMd' }));\n if (localDateString === tempDateString) {\n values.splice(index, 1);\n index = -1;\n }\n }\n }\n }\n else if (selectDate && +selectDate === +argsDate) {\n this.setProperties({ value: null }, true);\n }\n }\n if (this.renderDayCellArgs.isDisabled && !tdEle.classList.contains(SELECTED)) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n dayLink.setAttribute('aria-disabled', 'true');\n if (+this.renderDayCellArgs.date === +this.todayDate) {\n this.todayDisabled = true;\n }\n }\n var otherMnthBool = tdEle.classList.contains(OTHERMONTH);\n var disabledCls = tdEle.classList.contains(DISABLED);\n if (!disabledCls) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n // to set the value as null while setting the disabled date onProperty change.\n // if (args.isDisabled && +this.value === +args.date) {\n // this.setProperties({ value: null }, true);\n // }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentTarget = void 0;\n if (!isNullOrUndefined(e) && e.type === 'click') {\n currentTarget = e.currentTarget;\n }\n if (multiSelection && !isNullOrUndefined(values) && !disabledCls) {\n for (var tempValue = 0; tempValue < values.length; tempValue++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: null, type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(localDate, formatOptions);\n var tempDateString = this.globalize.formatDate(values[tempValue], formatOptions);\n if ((localDateString === tempDateString && this.getDateVal(localDate, values[tempValue]))\n || (this.getDateVal(localDate, value))) {\n addClass([tdEle], SELECTED);\n }\n if (!isNullOrUndefined(currentTarget) && currentTarget.innerText === tdEle.innerText &&\n this.previousDates && tdEle.classList.contains(SELECTED) && currentTarget.classList.contains(SELECTED)) {\n removeClass([tdEle], SELECTED);\n this.previousDates = false;\n var copyValues = this.copyValues(values);\n for (var i = 0; i < copyValues.length; i++) {\n var type_1 = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions_1 = { format: null, type: 'date', skeleton: 'short', calendar: type_1 };\n var localDateString_1 = this.globalize.formatDate(date, formatOptions_1);\n var tempDateString_1 = this.globalize.formatDate(copyValues[i], formatOptions_1);\n if (localDateString_1 === tempDateString_1) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n values.splice(index, 1);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n if (values.length <= 0) {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n else if (!disabledCls && this.getDateVal(localDate, value)) {\n addClass([tdEle], SELECTED);\n }\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n if (!isNullOrUndefined(date) && date.getFullYear() === todayDate.getFullYear() && date.getMonth() === todayDate.getMonth()\n && date.getDate() === todayDate.getDate()) {\n addClass([tdEle], TODAY);\n }\n tdEles.push(this.renderDayCellArgs.element);\n localDate = new Date(+minMaxDate);\n this.addDay(localDate, 1, null, this.max, this.min);\n }\n return tdEles;\n };\n CalendarBase.prototype.updateFocus = function (otherMonth, disabled, localDate, tableElement, currentDate) {\n if (currentDate.getDate() === localDate.getDate() && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n else {\n // eslint-disable-next-line radix\n if (currentDate >= this.max && parseInt(tableElement.id, 0) === +this.max && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n // eslint-disable-next-line radix\n if (currentDate <= this.min && parseInt(tableElement.id, 0) === +this.min && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n }\n };\n CalendarBase.prototype.renderYears = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var tdEles = [];\n var valueUtil = isNullOrUndefined(value);\n var curDate = new Date(this.checkValue(this.currentDate));\n var mon = curDate.getMonth();\n var yr = curDate.getFullYear();\n var localDate = curDate;\n var curYrs = localDate.getFullYear();\n var minYr = new Date(this.checkValue(this.min)).getFullYear();\n var minMonth = new Date(this.checkValue(this.min)).getMonth();\n var maxYr = new Date(this.checkValue(this.max)).getFullYear();\n var maxMonth = new Date(this.checkValue(this.max)).getMonth();\n localDate.setMonth(0);\n this.titleUpdate(this.currentDate, 'months');\n localDate.setDate(1);\n for (var month = 0; month < 12; ++month) {\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n var localMonth = (value && (value).getMonth() === localDate.getMonth());\n var select = (value && (value).getFullYear() === yr && localMonth);\n var title = this.globalize.formatDate(localDate, { type: 'date', format: 'MMM y' });\n dayLink.textContent = this.toCapitalize(this.globalize.formatDate(localDate, {\n format: null, type: 'dateTime', skeleton: 'MMM'\n }));\n if ((this.min && (curYrs < minYr || (month < minMonth && curYrs === minYr))) || (this.max && (curYrs > maxYr || (month > maxMonth && curYrs >= maxYr)))) {\n addClass([tdEle], DISABLED);\n }\n else if (!valueUtil && select) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getMonth() === mon && this.currentDate.getMonth() === mon) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n localDate.setDate(1);\n localDate.setMonth(localDate.getMonth() + 1);\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n dayLink.setAttribute('title', '' + title);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, YEAR, e, value);\n };\n CalendarBase.prototype.renderDecades = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var yearCell = 12;\n var tdEles = [];\n var localDate = new Date(this.checkValue(this.currentDate));\n localDate.setMonth(0);\n localDate.setDate(1);\n var localYr = localDate.getFullYear();\n var startYr = new Date(localDate.setFullYear((localYr - localYr % 10)));\n var endYr = new Date(localDate.setFullYear((localYr - localYr % 10 + (10 - 1))));\n var startFullYr = startYr.getFullYear();\n var endFullYr = endYr.getFullYear();\n var startHdrYr = this.globalize.formatDate(startYr, {\n format: null, type: 'dateTime', skeleton: 'y'\n });\n var endHdrYr = this.globalize.formatDate(endYr, { format: null, type: 'dateTime', skeleton: 'y' });\n this.headerTitleElement.textContent = startHdrYr + ' - ' + (endHdrYr);\n var start = new Date(localYr - (localYr % 10) - 1, 0, 1);\n var startYear = start.getFullYear();\n for (var rowIterator = 0; rowIterator < yearCell; ++rowIterator) {\n var year = startYear + rowIterator;\n localDate.setFullYear(year);\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, {\n format: null, type: 'dateTime', skeleton: 'y'\n });\n if ((year < startFullYr) || (year > endFullYr)) {\n addClass([tdEle], OTHERDECADE);\n dayLink.setAttribute('aria-disabled', 'true');\n if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n }\n else if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n else if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getFullYear() === this.currentDate.getFullYear() && !tdEle.classList.contains(DISABLED)) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n dayLink.setAttribute('title', '' + dayLink.textContent);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, 'e-decade', e, value);\n };\n CalendarBase.prototype.dayCell = function (localDate) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { skeleton: 'full', type: 'dateTime', calendar: type };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var value;\n if (!isNullOrUndefined(date)) {\n value = date.valueOf();\n }\n var attrs = {\n className: CELL, attrs: { 'id': '' + getUniqueID('' + value), 'aria-selected': 'false' }\n };\n return this.createElement('td', attrs);\n };\n CalendarBase.prototype.firstDay = function (date) {\n var collection = this.currentView() !== 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '');\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.lastDay = function (date, view) {\n var lastDate = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n if (view !== 2) {\n var timeOffset = Math.abs(lastDate.getTimezoneOffset() - this.firstDay(date).getTimezoneOffset());\n if (timeOffset) {\n lastDate.setHours(this.firstDay(date).getHours() + (timeOffset / 60));\n }\n return this.findLastDay(lastDate);\n }\n else {\n return this.findLastDay(this.firstDay(lastDate));\n }\n };\n CalendarBase.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n CalendarBase.prototype.findLastDay = function (date) {\n var collection = this.currentView() === 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '');\n if (collection.length) {\n for (var i = collection.length - 1; i >= 0; i--) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.removeTableHeadElement = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.renderTemplate = function (elements, count, classNm, e, value) {\n var view = this.getViewNumber(this.currentView());\n var trEle;\n this.tableBodyElement = this.createElement('tbody');\n this.table.appendChild(this.tableBodyElement);\n removeClass([this.contentElement, this.headerElement], [MONTH, DECADE, YEAR]);\n addClass([this.contentElement, this.headerElement], [classNm]);\n var weekNumCell = 41;\n var numberCell = 35;\n var otherMonthCell = 6;\n var row = count;\n var rowIterator = 0;\n for (var dayCell = 0; dayCell < elements.length / count; ++dayCell) {\n trEle = this.createElement('tr');\n for (rowIterator = 0 + rowIterator; rowIterator < row; rowIterator++) {\n if (!elements[rowIterator].classList.contains('e-week-number') && !isNullOrUndefined(elements[rowIterator].children[0])) {\n addClass([elements[rowIterator].children[0]], [LINK]);\n rippleEffect(elements[rowIterator].children[0], {\n duration: 600,\n isCenterRipple: true\n });\n }\n trEle.appendChild(elements[rowIterator]);\n if (this.weekNumber && rowIterator === otherMonthCell + 1 && elements[otherMonthCell + 1].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (!this.weekNumber && rowIterator === otherMonthCell && elements[otherMonthCell].\n classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (this.weekNumber) {\n if (rowIterator === weekNumCell && elements[weekNumCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n else {\n if (rowIterator === numberCell && elements[numberCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n }\n row = row + count;\n rowIterator = rowIterator + 0;\n this.tableBodyElement.appendChild(trEle);\n }\n this.table.querySelector('tbody').className = this.effect;\n if (this.calendarMode === 'Gregorian') {\n this.iconHandler();\n }\n else {\n this.islamicModule.islamicIconHandler();\n }\n if (view !== this.getViewNumber(this.currentView()) || (view === 0 && view !== this.getViewNumber(this.currentView()))) {\n this.navigateHandler(e);\n }\n this.setAriaActiveDescendant();\n };\n CalendarBase.prototype.clickHandler = function (e, value) {\n this.clickEventEmitter(e);\n var eve = e.currentTarget;\n var view = this.getViewNumber(this.currentView());\n if (eve.classList.contains(OTHERMONTH)) {\n this.contentClick(e, 0, null, value);\n }\n else if (view === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.contentClick(e, 1, null, value);\n }\n else if (2 === view) {\n this.contentClick(e, 1, null, value);\n }\n else if (!eve.classList.contains(OTHERMONTH) && view === 0) {\n this.selectDate(e, this.getIdValue(e, null), null);\n }\n else {\n this.contentClick(e, 0, eve, value);\n }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n // Content click event handler required for extended components\n CalendarBase.prototype.clickEventEmitter = function (e) {\n e.preventDefault();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.contentClick = function (e, view, element, value) {\n var currentView = this.getViewNumber(this.currentView());\n var d = this.getIdValue(e, element);\n switch (view) {\n case 0:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n detach(this.tableBodyElement);\n this.currentDate = d;\n this.effect = ZOOMIN;\n this.renderMonths(e);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setMonth(d.getMonth());\n if (d.getMonth() > 0 && this.currentDate.getMonth() !== d.getMonth()) {\n this.currentDate.setDate(0);\n }\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.currentDate = d;\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n break;\n case 1:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.selectDate(e, d, null);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.islamicPreviousHeader = this.headerElement.textContent;\n var islamicDate = this.islamicModule.getIslamicDate(d);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, islamicDate.month, 1);\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n }\n };\n CalendarBase.prototype.switchView = function (view, e, multiSelection, isCustomDate) {\n switch (view) {\n case 0:\n detach(this.tableBodyElement);\n this.renderMonths(e, null, isCustomDate);\n break;\n case 1:\n detach(this.tableBodyElement);\n this.renderYears(e);\n break;\n case 2:\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n };\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n CalendarBase.prototype.getModuleName = function () {\n return 'calendar';\n };\n /**\n *\n * @returns {void}\n\n */\n CalendarBase.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n return modules;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n CalendarBase.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarBaseModel} oldProp - Returns the previous property value of the component.\n * @param {boolean} multiSelection - - Specifies whether multiple date selection is enabled or not.\n * @param {Date[]} values - Specifies the dates.\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.onPropertyChanged = function (newProp, oldProp, multiSelection, values) {\n this.effect = '';\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n if (newProp.enableRtl) {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add('e-rtl');\n }\n else {\n this.calendarElement.classList.add('e-rtl');\n }\n }\n else {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.remove('e-rtl');\n }\n else {\n this.calendarElement.classList.remove('e-rtl');\n }\n }\n break;\n case 'dayHeaderFormat':\n this.getCultureValues();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n }\n this.adjustLongHeaderSize();\n break;\n case 'min':\n case 'max':\n this.rangeValidation(this.min, this.max);\n if (prop === 'min') {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(newProp.min))) }, true);\n }\n else {\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(newProp.max))) }, true);\n }\n this.setProperties({ start: this.currentView() }, true);\n if (this.tableBodyElement) {\n detach(this.tableBodyElement);\n }\n this.minMaxUpdate();\n if (multiSelection) {\n this.validateValues(multiSelection, values);\n }\n if (this.getModuleName() !== 'datepicker') {\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentBody();\n }\n if ((this.todayDate < this.min || this.max < this.todayDate) && (this.footer) && (this.todayElement)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n else {\n if ((this.footer) && (this.todayElement) && this.todayElement.classList.contains('e-disabled')) {\n removeClass([this.todayElement], DISABLED);\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n }\n break;\n case 'start':\n case 'depth':\n case 'weekNumber':\n case 'firstDayOfWeek':\n case 'weekRule':\n this.checkView();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n if (this.getModuleName() === 'calendar') {\n var l10nLocale = { today: 'Today' };\n this.l10 = new L10n(this.getModuleName(), l10nLocale, this.locale);\n }\n this.l10.setLocale(this.locale);\n if (this.showTodayButton) {\n this.updateFooter();\n }\n break;\n case 'showTodayButton':\n if (newProp.showTodayButton) {\n this.createContentFooter();\n }\n else {\n if (!isNullOrUndefined(this.todayElement) && !isNullOrUndefined(this.footer)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = undefined;\n }\n }\n this.setProperties({ showTodayButton: newProp.showTodayButton }, true);\n break;\n }\n }\n };\n /**\n * values property updated with considered disabled dates of the calendar.\n *\n * @param {boolean} multiSelection - Specifies whether multiple date selection is enabled.\n * @param {Date[]} values - Specifies the dates to validate.\n * @returns {void}\n */\n CalendarBase.prototype.validateValues = function (multiSelection, values) {\n if (multiSelection && !isNullOrUndefined(values) && values.length > 0) {\n var copyValues = this.copyValues(values);\n for (var skipIndex = 0; skipIndex < copyValues.length; skipIndex++) {\n var tempValue = copyValues[skipIndex];\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var tempValueString = void 0;\n if (this.calendarMode === 'Gregorian') {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'date', skeleton: 'yMd' });\n }\n else {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'dateTime', skeleton: 'full', calendar: 'islamic' });\n }\n var minFormatOption = { type: 'date', skeleton: 'yMd', calendar: type };\n var minStringValue = this.globalize.formatDate(this.min, minFormatOption);\n var minString = minStringValue;\n var maxFormatOption = { type: 'date', skeleton: 'yMd', calendar: type };\n var maxStringValue = this.globalize.formatDate(this.max, maxFormatOption);\n var maxString = maxStringValue;\n if (+new Date(tempValueString) < +new Date(minString) ||\n +new Date(tempValueString) > +new Date(maxString)) {\n copyValues.splice(skipIndex, 1);\n skipIndex = -1;\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n };\n CalendarBase.prototype.setValueUpdate = function () {\n if (!isNullOrUndefined(this.tableBodyElement)) {\n detach(this.tableBodyElement);\n this.setProperties({ start: this.currentView() }, true);\n this.createContentBody();\n }\n };\n CalendarBase.prototype.copyValues = function (values) {\n var copyValues = [];\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n copyValues.push(new Date(+values[index]));\n }\n }\n return copyValues;\n };\n CalendarBase.prototype.titleUpdate = function (date, view) {\n var globalize = new Internationalization(this.locale);\n var dayFormatOptions;\n var monthFormatOptions;\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n if (this.calendarMode === 'Gregorian') {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', skeleton: 'yMMMM', calendar: type });\n monthFormatOptions = globalize.formatDate(date, {\n format: null, type: 'dateTime', skeleton: 'y', calendar: type\n });\n }\n else {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'MMMM y', calendar: type });\n monthFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'y', calendar: type });\n }\n switch (view) {\n case 'days':\n this.headerTitleElement.textContent = this.toCapitalize(dayFormatOptions);\n break;\n case 'months':\n this.headerTitleElement.textContent = monthFormatOptions;\n }\n };\n CalendarBase.prototype.setActiveDescendant = function () {\n var id;\n var focusedEle = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedEle = this.tableBodyElement.querySelector('tr td.e-selected');\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var title;\n var view = this.currentView();\n if (view === 'Month') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'full', calendar: type });\n }\n else if (view === 'Year') {\n if (type !== 'islamic') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'yMMMM', calendar: type });\n }\n else {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'GyMMM', calendar: type });\n }\n }\n else {\n title = this.globalize.formatDate(this.currentDate, {\n format: null, type: 'date', skeleton: 'y', calendar: type\n });\n }\n if (selectedEle || focusedEle) {\n if (!isNullOrUndefined(selectedEle)) {\n selectedEle.setAttribute('aria-selected', 'true');\n }\n (focusedEle || selectedEle).setAttribute('aria-label', title);\n id = (focusedEle || selectedEle).getAttribute('id');\n }\n return id;\n };\n CalendarBase.prototype.iconHandler = function () {\n new Date(this.checkValue(this.currentDate)).setDate(1);\n switch (this.currentView()) {\n case 'Month':\n this.previousIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Year':\n this.previousIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Decade':\n this.previousIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CalendarBase.prototype.destroy = function () {\n if (this.getModuleName() === 'calendar' && this.element) {\n removeClass([this.element], [ROOT]);\n }\n else {\n if (this.calendarElement && this.element) {\n removeClass([this.element], [ROOT]);\n }\n }\n if (this.getModuleName() === 'calendar' && this.element) {\n if (!isNullOrUndefined(this.headerTitleElement)) {\n EventHandler.remove(this.headerTitleElement, 'click', this.navigateTitle);\n }\n if (this.todayElement) {\n EventHandler.remove(this.todayElement, 'click', this.todayButtonClick);\n }\n this.previousIconHandler(true);\n this.nextIconHandler(true);\n this.keyboardModule.destroy();\n this.element.removeAttribute('data-role');\n if (!isNullOrUndefined(this.calendarEleCopy.getAttribute('tabindex'))) {\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.element.removeAttribute('tabindex');\n }\n }\n if (this.element) {\n this.element.innerHTML = '';\n }\n this.todayElement = null;\n this.tableBodyElement = null;\n this.todayButtonEvent = null;\n this.renderDayCellArgs = null;\n this.headerElement = null;\n this.nextIcon = null;\n this.table = null;\n this.tableHeadElement = null;\n this.previousIcon = null;\n this.headerTitleElement = null;\n this.footer = null;\n this.contentElement = null;\n _super.prototype.destroy.call(this);\n };\n CalendarBase.prototype.title = function (e) {\n var currentView = this.getViewNumber(this.currentView());\n this.effect = ZOOMIN;\n this.switchView(++currentView, e);\n };\n CalendarBase.prototype.getViewNumber = function (stringVal) {\n if (stringVal === 'Month') {\n return 0;\n }\n else if (stringVal === 'Year') {\n return 1;\n }\n else {\n return 2;\n }\n };\n CalendarBase.prototype.navigateTitle = function (e) {\n e.preventDefault();\n this.title(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.previous = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, -10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigatePrevious = function (e) {\n !Browser.isDevice && e.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.previous();\n }\n else {\n this.islamicModule.islamicPrevious();\n }\n this.triggerNavigate(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.next = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, 10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigateNext = function (eve) {\n !Browser.isDevice && eve.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.next();\n }\n else {\n this.islamicModule.islamicNext();\n }\n this.triggerNavigate(eve);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n */\n CalendarBase.prototype.navigateTo = function (view, date, isCustomDate) {\n if (+date >= +this.min && +date <= +this.max) {\n this.currentDate = date;\n }\n if (+date <= +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n if (+date >= +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n if ((this.getViewNumber(this.depth) >= this.getViewNumber(view))) {\n if ((this.getViewNumber(this.depth) <= this.getViewNumber(this.start))\n || this.getViewNumber(this.depth) === this.getViewNumber(view)) {\n view = this.depth;\n }\n }\n this.switchView(this.getViewNumber(view), null, null, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n */\n CalendarBase.prototype.currentView = function () {\n if (!isNullOrUndefined(this.contentElement) && this.contentElement.classList.contains(YEAR)) {\n return 'Year';\n }\n else if (!isNullOrUndefined(this.contentElement) && this.contentElement.classList.contains(DECADE)) {\n return 'Decade';\n }\n else {\n return 'Month';\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n CalendarBase.prototype.getDateVal = function (date, value) {\n return (!isNullOrUndefined(value) && date.getDate() === (value).getDate()\n && date.getMonth() === (value).getMonth() && date.getFullYear() === (value).getFullYear());\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.getCultureObjects = function (ld, c) {\n var gregorianFormat = '.dates.calendars.gregorian.days.format.' + this.dayHeaderFormat.toLowerCase();\n var islamicFormat = '.dates.calendars.islamic.days.format.' + this.dayHeaderFormat.toLowerCase();\n var mainVal = 'main.';\n if (this.calendarMode === 'Gregorian') {\n return getValue(mainVal + '' + this.locale + gregorianFormat, ld);\n }\n else {\n return getValue('main.' + '' + this.locale + islamicFormat, ld);\n }\n };\n CalendarBase.prototype.getWeek = function (d) {\n var currentDate = new Date(this.checkValue(d)).valueOf();\n var date = new Date(d.getFullYear(), 0, 1).valueOf();\n return Math.ceil((((currentDate - date) + dayMilliSeconds) / dayMilliSeconds) / 7);\n };\n CalendarBase.prototype.setStartDate = function (date, time) {\n var tzOffset = date.getTimezoneOffset();\n var d = new Date(date.getTime() + time);\n var tzOffsetDiff = d.getTimezoneOffset() - tzOffset;\n date.setTime(d.getTime() + tzOffsetDiff * minutesMilliSeconds);\n };\n CalendarBase.prototype.addMonths = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setMonth(date.getMonth() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, (islamicDate.month) + i, 1);\n }\n };\n CalendarBase.prototype.addYears = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setFullYear(date.getFullYear() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year + i, (islamicDate.month), 1);\n }\n };\n CalendarBase.prototype.getIdValue = function (e, element) {\n var eve;\n if (e) {\n eve = e.currentTarget;\n }\n else {\n eve = element;\n }\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full', calendar: type };\n // eslint-disable-next-line radix\n var dateString = this.globalize.formatDate(new Date(parseInt('' + eve.getAttribute('id'), 0)), dateFormatOptions);\n var date = this.globalize.parseDate(dateString, dateFormatOptions);\n var value = date.valueOf() - date.valueOf() % 1000;\n return new Date(value);\n //return this.globalize.parseDate(dateString, dateFormatOptions);\n };\n CalendarBase.prototype.adjustLongHeaderSize = function () {\n removeClass([this.element], DAYHEADERLONG);\n if (this.dayHeaderFormat === 'Wide') {\n addClass([this.getModuleName() === 'calendar' ? this.element : this.calendarElement], DAYHEADERLONG);\n }\n };\n CalendarBase.prototype.selectDate = function (e, date, node, multiSelection, values) {\n var element = node || e.currentTarget;\n this.isDateSelected = false;\n if (this.currentView() === 'Decade') {\n this.setDateDecade(this.currentDate, date.getFullYear());\n }\n else if (this.currentView() === 'Year') {\n this.setDateYear(this.currentDate, date);\n }\n else {\n if (multiSelection && !this.checkPresentDate(date, values)) {\n var copyValues = this.copyValues(values);\n if (!isNullOrUndefined(values) && copyValues.length > 0) {\n copyValues.push(new Date(this.checkValue(date)));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: values[values.length - 1] }, true);\n }\n else {\n this.setProperties({ values: [new Date(this.checkValue(date))] }, true);\n }\n }\n else {\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n }\n this.currentDate = new Date(this.checkValue(date));\n }\n var tableBodyElement = closest(element, '.' + ROOT);\n if (isNullOrUndefined(tableBodyElement)) {\n tableBodyElement = this.tableBodyElement;\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + SELECTED))) {\n removeClass([tableBodyElement.querySelector('.' + SELECTED)], SELECTED);\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + FOCUSEDDATE))) {\n removeClass([tableBodyElement.querySelector('.' + FOCUSEDDATE)], FOCUSEDDATE);\n }\n if (multiSelection) {\n var copyValues = this.copyValues(values);\n var collection = Array.prototype.slice.call(this.tableBodyElement.querySelectorAll('td'));\n for (var index = 0; index < collection.length; index++) {\n var tempElement = tableBodyElement.querySelectorAll('td' + '.' + FOCUSEDDATE)[0];\n var selectedElement = tableBodyElement.querySelectorAll('td' + '.' + SELECTED)[0];\n if (collection[index] === tempElement) {\n removeClass([collection[index]], FOCUSEDDATE);\n }\n if (collection[index] === selectedElement &&\n !this.checkPresentDate(new Date(parseInt(selectedElement.getAttribute('id').split('_')[0], 10)), values)) {\n removeClass([collection[index]], SELECTED);\n }\n }\n if (element.classList.contains(SELECTED)) {\n removeClass([element], SELECTED);\n for (var i = 0; i < copyValues.length; i++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: null, type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(date, formatOptions);\n var tempDateString = this.globalize.formatDate(copyValues[i], formatOptions);\n if (localDateString === tempDateString) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n addClass([element], FOCUSEDDATE);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n addClass([element], SELECTED);\n }\n }\n else {\n addClass([element], SELECTED);\n }\n this.isDateSelected = true;\n };\n CalendarBase.prototype.checkPresentDate = function (dates, values) {\n var previousValue = false;\n if (!isNullOrUndefined(values)) {\n for (var checkPrevious = 0; checkPrevious < values.length; checkPrevious++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var localDateString = this.globalize.formatDate(dates, {\n format: null, type: 'date', skeleton: 'short', calendar: type\n });\n var tempDateString = this.globalize.formatDate(values[checkPrevious], {\n format: null, type: 'date', skeleton: 'short', calendar: type\n });\n if (localDateString === tempDateString) {\n previousValue = true;\n }\n }\n }\n return previousValue;\n };\n CalendarBase.prototype.setAriaActiveDescendant = function () {\n attributes(this.table, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n };\n CalendarBase.prototype.previousIconHandler = function (disabled) {\n if (disabled) {\n if (!isNullOrUndefined(this.previousIcon)) {\n EventHandler.remove(this.previousIcon, 'click', this.navigatePreviousHandler);\n addClass([this.previousIcon], '' + DISABLED);\n addClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'true');\n }\n }\n else {\n EventHandler.add(this.previousIcon, 'click', this.navigatePreviousHandler);\n removeClass([this.previousIcon], '' + DISABLED);\n removeClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.renderDayCellEvent = function (args) {\n extend(this.renderDayCellArgs, { name: 'renderDayCell' });\n this.trigger('renderDayCell', args);\n };\n CalendarBase.prototype.navigatedEvent = function (eve) {\n extend(this.navigatedArgs, { name: 'navigated', event: eve });\n this.trigger('navigated', this.navigatedArgs);\n };\n CalendarBase.prototype.triggerNavigate = function (event) {\n this.navigatedArgs = { view: this.currentView(), date: this.currentDate };\n this.navigatedEvent(event);\n };\n CalendarBase.prototype.nextIconHandler = function (disabled) {\n if (disabled) {\n if (!isNullOrUndefined(this.previousIcon)) {\n EventHandler.remove(this.nextIcon, 'click', this.navigateNextHandler);\n addClass([this.nextIcon], DISABLED);\n addClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'true');\n }\n }\n else {\n EventHandler.add(this.nextIcon, 'click', this.navigateNextHandler);\n removeClass([this.nextIcon], DISABLED);\n removeClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.compare = function (startDate, endDate, modifier) {\n var start = endDate.getFullYear();\n var end;\n var result;\n end = start;\n result = 0;\n if (modifier) {\n start = start - start % modifier;\n end = start - start % modifier + modifier - 1;\n }\n if (startDate.getFullYear() > end) {\n result = 1;\n }\n else if (startDate.getFullYear() < start) {\n result = -1;\n }\n return result;\n };\n CalendarBase.prototype.isMinMaxRange = function (date) {\n return +date >= +this.min && +date <= +this.max;\n };\n CalendarBase.prototype.isMonthYearRange = function (date) {\n if (this.calendarMode === 'Gregorian') {\n return date.getMonth() >= this.min.getMonth()\n && date.getFullYear() >= this.min.getFullYear()\n && date.getMonth() <= this.max.getMonth()\n && date.getFullYear() <= this.max.getFullYear();\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n return islamicDate.month >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).month\n && islamicDate.year >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).year\n && islamicDate.month <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).month\n && islamicDate.year <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).year;\n }\n };\n CalendarBase.prototype.compareYear = function (start, end) {\n return this.compare(start, end, 0);\n };\n CalendarBase.prototype.compareDecade = function (start, end) {\n return this.compare(start, end, 10);\n };\n CalendarBase.prototype.shiftArray = function (array, i) {\n return array.slice(i).concat(array.slice(0, i));\n };\n CalendarBase.prototype.addDay = function (date, i, e, max, min) {\n var column = i;\n var value = new Date(+date);\n if (!isNullOrUndefined(this.tableBodyElement) && !isNullOrUndefined(e)) {\n while (this.findNextTD(new Date(+date), column, max, min)) {\n column += i;\n }\n var rangeValue = new Date(value.setDate(value.getDate() + column));\n column = (+rangeValue > +max || +rangeValue < +min) ? column === i ? i - i : i : column;\n }\n date.setDate(date.getDate() + column);\n };\n CalendarBase.prototype.findNextTD = function (date, column, max, min) {\n var value = new Date(date.setDate(date.getDate() + column));\n var collection = [];\n var isDisabled = false;\n if ((!isNullOrUndefined(value) && value.getMonth()) === (!isNullOrUndefined(this.currentDate) && this.currentDate.getMonth())) {\n var tdEles = void 0;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(value);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n collection = tdEles.filter(function (element) {\n return element.classList.contains(DISABLED);\n });\n }\n else {\n collection = this.tableBodyElement.querySelectorAll('td.' + DISABLED);\n }\n if (+value <= (+(max)) && +value >= (+(min))) {\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n // eslint-disable-next-line radix\n isDisabled = (+value === +new Date(parseInt(collection[i].id, 0))) ? true : false;\n if (isDisabled) {\n break;\n }\n }\n }\n }\n return isDisabled;\n };\n CalendarBase.prototype.getMaxDays = function (d) {\n var date;\n var tmpDate = new Date(this.checkValue(d));\n date = 28;\n var month = tmpDate.getMonth();\n while (tmpDate.getMonth() === month) {\n ++date;\n tmpDate.setDate(date);\n }\n return date - 1;\n };\n CalendarBase.prototype.setDateDecade = function (date, year) {\n date.setFullYear(year);\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.setDateYear = function (date, value) {\n date.setFullYear(value.getFullYear(), value.getMonth(), date.getDate());\n if (value.getMonth() !== date.getMonth()) {\n date.setDate(0);\n this.currentDate = new Date(this.checkValue(value));\n }\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.compareMonth = function (start, end) {\n var result;\n if (start.getFullYear() > end.getFullYear()) {\n result = 1;\n }\n else if (start.getFullYear() < end.getFullYear()) {\n result = -1;\n }\n else {\n result = start.getMonth() === end.getMonth() ? 0 : start.getMonth() > end.getMonth() ? 1 : -1;\n }\n return result;\n };\n CalendarBase.prototype.checkValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n CalendarBase.prototype.checkView = function () {\n if (this.start !== 'Decade' && this.start !== 'Year') {\n this.setProperties({ start: 'Month' }, true);\n }\n if (this.depth !== 'Decade' && this.depth !== 'Year') {\n this.setProperties({ depth: 'Month' }, true);\n }\n if (this.getViewNumber(this.depth) > this.getViewNumber(this.start)) {\n this.setProperties({ depth: 'Month' }, true);\n }\n };\n CalendarBase.prototype.getDate = function (date, timezone) {\n if (timezone) {\n date = new Date(date.toLocaleString('en-US', { timeZone: timezone }));\n }\n return date;\n };\n __decorate([\n Property(new Date(1900, 0, 1))\n ], CalendarBase.prototype, \"min\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"enabled\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], CalendarBase.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], CalendarBase.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"weekNumber\", void 0);\n __decorate([\n Property('FirstDay')\n ], CalendarBase.prototype, \"weekRule\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], CalendarBase.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"navigated\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"renderDayCell\", void 0);\n CalendarBase = __decorate([\n NotifyPropertyChanges\n ], CalendarBase);\n return CalendarBase;\n}(Component));\nexport { CalendarBase };\n/**\n * Represents the Calendar component that allows the user to select a date.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Calendar = /** @class */ (function (_super) {\n __extends(Calendar, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarModel} options - Specifies the Calendar model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Calendar(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.render = function () {\n if (this.calendarMode === 'Islamic' && this.islamicModule === undefined) {\n throwError('Requires the injectable Islamic modules to render Calendar in Islamic mode');\n }\n if (this.isMultiSelection && typeof this.values === 'object' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var tempValues = [];\n var copyValues = [];\n for (var limit = 0; limit < this.values.length; limit++) {\n if (tempValues.indexOf(+this.values[limit]) === -1) {\n tempValues.push(+this.values[limit]);\n copyValues.push(this.values[limit]);\n }\n }\n this.setProperties({ values: copyValues }, true);\n for (var index = 0; index < this.values.length; index++) {\n if (!this.checkDateValue(this.values[index])) {\n if (typeof (this.values[index]) === 'string' && this.checkDateValue(new Date(this.checkValue(this.values[index])))) {\n var copyDate = new Date(this.checkValue(this.values[index]));\n this.values.splice(index, 1);\n this.values.splice(index, 0, copyDate);\n }\n else {\n this.values.splice(index, 1);\n }\n }\n }\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n this.previousValues = this.values.length;\n }\n this.validateDate();\n this.minMaxUpdate();\n if (this.getModuleName() === 'calendar') {\n this.setEnable(this.enabled);\n this.setClass(this.cssClass);\n }\n _super.prototype.render.call(this);\n if (this.getModuleName() === 'calendar') {\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler.bind(this));\n }\n this.setTimeZone(this.serverTimezoneOffset);\n }\n this.renderComplete();\n };\n Calendar.prototype.setEnable = function (enable) {\n if (!enable) {\n addClass([this.element], DISABLED);\n }\n else {\n removeClass([this.element], DISABLED);\n }\n };\n Calendar.prototype.setClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(oldCssClass) && oldCssClass !== '') {\n removeClass([this.element], oldCssClass.split(' '));\n }\n if (!isNullOrUndefined(newCssClass)) {\n addClass([this.element], newCssClass.split(' '));\n }\n };\n Calendar.prototype.isDayLightSaving = function () {\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n Calendar.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var serverTimezoneDiff = offsetValue;\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date(this.value.getTime() + (timeZoneDiff * 60 * 60 * 1000));\n }\n };\n Calendar.prototype.formResetHandler = function () {\n this.setProperties({ value: null }, true);\n };\n Calendar.prototype.validateDate = function () {\n if (typeof this.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(this.checkValue(this.value))) }, true); // persist the value property.\n }\n _super.prototype.validateDate.call(this, this.value);\n if (!isNullOrUndefined(this.value) && this.min <= this.max && this.value >= this.min && this.value <= this.max) {\n this.currentDate = new Date(this.checkValue(this.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n };\n Calendar.prototype.minMaxUpdate = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.value) && this.value <= this.min && this.min <= this.max) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value >= this.max && this.min <= this.max) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n }\n if (this.getModuleName() !== 'calendar' && !isNullOrUndefined(this.value)) {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.min);\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.max);\n }\n }\n }\n else {\n _super.prototype.minMaxUpdate.call(this, this.value);\n }\n };\n Calendar.prototype.generateTodayVal = function (value) {\n var tempValue = new Date();\n if (!isNullOrUndefined(this.timezone)) {\n tempValue = _super.prototype.getDate.call(this, tempValue, this.timezone);\n }\n if (value && isNullOrUndefined(this.timezone)) {\n tempValue.setHours(value.getHours());\n tempValue.setMinutes(value.getMinutes());\n tempValue.setSeconds(value.getSeconds());\n tempValue.setMilliseconds(value.getMilliseconds());\n }\n else {\n tempValue = new Date(tempValue.getFullYear(), tempValue.getMonth(), tempValue.getDate(), 0, 0, 0, 0);\n }\n return tempValue;\n };\n Calendar.prototype.todayButtonClick = function (e) {\n if (this.showTodayButton) {\n var tempValue = this.generateTodayVal(this.value);\n this.setProperties({ value: tempValue }, true);\n this.isTodayClicked = true;\n this.todayButtonEvent = e;\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (!_super.prototype.checkPresentDate.call(this, tempValue, this.values)) {\n copyValues.push(tempValue);\n this.setProperties({ values: copyValues });\n }\n }\n _super.prototype.todayButtonClick.call(this, e, new Date(+this.value));\n }\n };\n Calendar.prototype.keyActionHandle = function (e) {\n _super.prototype.keyActionHandle.call(this, e, this.value, this.isMultiSelection);\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.preRender = function () {\n var _this = this;\n this.changeHandler = function (e) {\n _this.triggerChange(e);\n };\n this.checkView();\n _super.prototype.preRender.call(this, this.value);\n };\n /**\n * @returns {void}\n\n */\n Calendar.prototype.createContent = function () {\n this.previousDate = this.value;\n this.previousDateTime = this.value;\n _super.prototype.createContent.call(this);\n };\n Calendar.prototype.minMaxDate = function (localDate) {\n return _super.prototype.minMaxDate.call(this, localDate);\n };\n Calendar.prototype.renderMonths = function (e, value, isCustomDate) {\n _super.prototype.renderMonths.call(this, e, this.value, isCustomDate);\n };\n Calendar.prototype.renderDays = function (currentDate, value, isMultiSelect, values, isCustomDate, e) {\n var tempDays = _super.prototype.renderDays.call(this, currentDate, this.value, this.isMultiSelection, this.values, isCustomDate, e);\n if (this.isMultiSelection) {\n _super.prototype.validateValues.call(this, this.isMultiSelection, this.values);\n }\n return tempDays;\n };\n Calendar.prototype.renderYears = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderYears.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderYears(e, this.value);\n }\n };\n Calendar.prototype.renderDecades = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderDecades.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderDecade(e, this.value);\n }\n };\n Calendar.prototype.renderTemplate = function (elements, count, classNm, e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderTemplate.call(this, elements, count, classNm, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(elements, count, classNm, e, this.value);\n }\n this.changedArgs = { value: this.value, values: this.values };\n e && e.type === 'click' && e.currentTarget.classList.contains(OTHERMONTH) ? this.changeHandler(e) : this.changeHandler();\n };\n Calendar.prototype.clickHandler = function (e) {\n var eve = e.currentTarget;\n this.isPopupClicked = true;\n if (eve.classList.contains(OTHERMONTH)) {\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (copyValues.toString().indexOf(this.getIdValue(e, null).toString()) === -1) {\n copyValues.push(this.getIdValue(e, null));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n else {\n this.previousDates = true;\n }\n }\n else {\n this.setProperties({ value: this.getIdValue(e, null) }, true);\n }\n }\n var storeView = this.currentView();\n _super.prototype.clickHandler.call(this, e, this.value);\n if (this.isMultiSelection && this.currentDate !== this.value &&\n !isNullOrUndefined(this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0]) && storeView === 'Year') {\n this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0].classList.remove(FOCUSEDDATE);\n }\n };\n Calendar.prototype.switchView = function (view, e, isMultiSelection, isCustomDate) {\n _super.prototype.switchView.call(this, view, e, this.isMultiSelection, isCustomDate);\n };\n /**\n * To get component name\n *\n * @returns {string} Return the component name.\n * @private\n */\n Calendar.prototype.getModuleName = function () {\n _super.prototype.getModuleName.call(this);\n return 'calendar';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n Calendar.prototype.getPersistData = function () {\n _super.prototype.getPersistData.call(this);\n var keyEntity = ['value', 'values'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n Calendar.prototype.onPropertyChanged = function (newProp, oldProp) {\n this.effect = '';\n this.rangeValidation(this.min, this.max);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n if (this.isDateSelected) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: new Date(this.checkValue(newProp.value)) }, true);\n }\n else {\n newProp.value = new Date(this.checkValue(newProp.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: oldProp.value }, true);\n }\n this.update();\n }\n break;\n case 'values':\n if (this.isDateSelected) {\n if (typeof newProp.values === 'string' || typeof newProp.values === 'number') {\n this.setProperties({ values: null }, true);\n }\n else {\n var copyValues = this.copyValues(this.values);\n for (var index = 0; index < copyValues.length; index++) {\n var tempDate = copyValues[index];\n if (this.checkDateValue(tempDate) && !_super.prototype.checkPresentDate.call(this, tempDate, copyValues)) {\n copyValues.push(tempDate);\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.values.length > 0) {\n this.setProperties({ value: newProp.values[newProp.values.length - 1] }, true);\n }\n }\n this.validateValues(this.isMultiSelection, this.values);\n this.update();\n }\n break;\n case 'isMultiSelection':\n if (this.isDateSelected) {\n this.setProperties({ isMultiSelection: newProp.isMultiSelection }, true);\n this.update();\n }\n break;\n case 'enabled':\n this.setEnable(this.enabled);\n break;\n case 'cssClass':\n if (this.getModuleName() === 'calendar') {\n this.setClass(newProp.cssClass, oldProp.cssClass);\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp, this.isMultiSelection, this.values);\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Calendar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'calendar') {\n this.changedArgs = null;\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler.bind(this));\n }\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n\n */\n Calendar.prototype.navigateTo = function (view, date, isCustomDate) {\n this.minMaxUpdate();\n _super.prototype.navigateTo.call(this, view, date, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n\n */\n Calendar.prototype.currentView = function () {\n return _super.prototype.currentView.call(this);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * This method is used to add the single or multiple dates to the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates to be added to the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.addDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number') {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && (dates).length > 0) {\n var tempDates = dates;\n for (var i = 0; i < tempDates.length; i++) {\n if (this.checkDateValue(tempDates[i]) && !_super.prototype.checkPresentDate.call(this, tempDates[i], copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push(tempDates[i]);\n }\n else {\n copyValues = [new Date(+tempDates[i])];\n }\n }\n }\n }\n else {\n if (this.checkDateValue(dates) && !_super.prototype.checkPresentDate.call(this, dates, copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push((dates));\n }\n else {\n copyValues = [new Date(+dates)];\n }\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.validateValues(this.isMultiSelection, copyValues);\n this.update();\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * This method is used to remove the single or multiple dates from the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates which need to be removed from the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.removeDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && ((dates).length > 0)) {\n var tempDates = dates;\n for (var index = 0; index < tempDates.length; index++) {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +tempDates[index]) {\n copyValues.splice(i, 1);\n }\n }\n }\n }\n else {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +dates) {\n copyValues.splice(i, 1);\n }\n }\n }\n this.setProperties({ values: copyValues }, false);\n this.update();\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * To set custom today date in calendar\n *\n * @param {Date} date - Specifies date value to be set.\n * @private\n * @returns {void}\n */\n Calendar.prototype.setTodayDate = function (date) {\n var todayDate = new Date(+date);\n this.setProperties({ value: todayDate }, true);\n _super.prototype.todayButtonClick.call(this, null, todayDate, true);\n };\n Calendar.prototype.update = function () {\n this.validateDate();\n this.minMaxUpdate();\n _super.prototype.setValueUpdate.call(this);\n };\n Calendar.prototype.selectDate = function (e, date, element) {\n _super.prototype.selectDate.call(this, e, date, element, this.isMultiSelection, this.values);\n if (this.isMultiSelection && !isNullOrUndefined(this.values) && this.values.length > 0) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Calendar.prototype.changeEvent = function (e) {\n if ((this.value && this.value.valueOf()) !== (this.previousDate && +this.previousDate.valueOf())\n || this.isMultiSelection) {\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = new Date(+this.value);\n }\n };\n Calendar.prototype.triggerChange = function (e) {\n if (!isNullOrUndefined(this.todayButtonEvent) && this.isTodayClicked) {\n e = this.todayButtonEvent;\n this.isTodayClicked = false;\n }\n this.changedArgs.event = e || null;\n this.changedArgs.isInteracted = !isNullOrUndefined(e);\n if (!isNullOrUndefined(this.value)) {\n this.setProperties({ value: this.value }, true);\n }\n // eslint-disable-next-line use-isnan\n if (!this.isMultiSelection && +this.value !== Number.NaN && (!isNullOrUndefined(this.value) &&\n !isNullOrUndefined(this.previousDate) || this.previousDate === null\n && !isNaN(+this.value))) {\n this.changeEvent(e);\n }\n else if (!isNullOrUndefined(this.values) && this.previousValues !== this.values.length) {\n this.changeEvent(e);\n this.previousValues = this.values.length;\n }\n };\n __decorate([\n Property(null)\n ], Calendar.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], Calendar.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], Calendar.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Event()\n ], Calendar.prototype, \"change\", void 0);\n Calendar = __decorate([\n NotifyPropertyChanges\n ], Calendar);\n return Calendar;\n}(CalendarBase));\nexport { Calendar };\n","/**\n * Specifies class names\n */\n/** @hidden */\nexport var rowCell = 'e-rowcell';\n/** @hidden */\nexport var gridHeader = 'e-gridheader';\n/** @hidden */\nexport var gridContent = 'e-gridcontent';\n/** @hidden */\nexport var gridFooter = 'e-gridfooter';\n/** @hidden */\nexport var headerContent = 'e-headercontent';\n/** @hidden */\nexport var movableContent = 'e-movablecontent';\n/** @hidden */\nexport var movableHeader = 'e-movableheader';\n/** @hidden */\nexport var frozenContent = 'e-frozencontent';\n/** @hidden */\nexport var frozenHeader = 'e-frozenheader';\n/** @hidden */\nexport var content = 'e-content';\n/** @hidden */\nexport var table = 'e-table';\n/** @hidden */\nexport var row = 'e-row';\n/** @hidden */\nexport var gridChkBox = 'e-gridchkbox';\n/** @hidden */\nexport var editedRow = 'e-editedrow';\n/** @hidden */\nexport var addedRow = 'e-addedrow';\n/**\n * Specifies repeated strings\n */\n/** @hidden */\nexport var changedRecords = 'changedRecords';\n/** @hidden */\nexport var addedRecords = 'addedRecords';\n/** @hidden */\nexport var deletedRecords = 'deletedRecords';\n/** @hidden */\nexport var leftRight = 'Left-Right';\n/** @hidden */\nexport var frozenRight = 'frozen-right';\n/** @hidden */\nexport var frozenLeft = 'frozen-left';\n/** @hidden */\nexport var dataColIndex = 'data-colindex';\n/** @hidden */\nexport var ariaColIndex = 'aria-colindex';\n/** @hidden */\nexport var dataRowIndex = 'data-rowindex';\n/** @hidden */\nexport var ariaRowIndex = 'aria-rowindex';\n/** @hidden */\nexport var tbody = 'tbody';\n/** @hidden */\nexport var colGroup = 'colgroup';\n/** @hidden */\nexport var open = 'open';\n/** @hidden */\nexport var change = 'change';\n/** @hidden */\nexport var focus = 'focus';\n/** @hidden */\nexport var create = 'created';\n/** @hidden */\nexport var beforeOpen = 'beforeOpen';\n/** @hidden */\nexport var downArrow = 'downArrow';\n/** @hidden */\nexport var upArrow = 'upArrow';\n/** @hidden */\nexport var pageUp = 'PageUp';\n/** @hidden */\nexport var pageDown = 'PageDown';\n/** @hidden */\nexport var enter = 'enter';\n/** @hidden */\nexport var shiftEnter = 'shiftEnter';\n/** @hidden */\nexport var tab = 'tab';\n/** @hidden */\nexport var shiftTab = 'shiftTab';\n/** @hidden */\nexport var initialFrozenColumnIndex = 'initialFrozenColumnIndex';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, rippleEffect, NotifyPropertyChanges, Property, closest, setValue } from '@syncfusion/ej2-base';\nimport { addClass, getInstance, getUniqueID, isRippleEnabled, removeClass, attributes, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { detach, Event, EventHandler, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler } from './../common/common';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-radio-wrapper';\nvar ATTRIBUTES = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value', 'id'];\n/**\n * The RadioButton is a graphical user interface element that allows you to select one option from the choices.\n * It contains checked and unchecked states.\n * ```html\n * \n * \n * ```\n */\nvar RadioButton = /** @class */ (function (_super) {\n __extends(RadioButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {RadioButtonModel} options - Specifies Radio button model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function RadioButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n return _this;\n }\n RadioButton_1 = RadioButton;\n RadioButton.prototype.changeHandler = function (event) {\n this.checked = true;\n this.dataBind();\n var value = this.element.getAttribute('value');\n value = this.isVue && value ? this.element.value : this.value;\n var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n this.trigger('change', { value: value, event: event });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n event.stopPropagation();\n }\n };\n RadioButton.prototype.updateChange = function () {\n var input;\n var instance;\n var radioGrp = this.getRadioGroup();\n for (var i = 0; i < radioGrp.length; i++) {\n input = radioGrp[i];\n if (input !== this.element) {\n instance = getInstance(input, RadioButton_1);\n instance.checked = false;\n if (this.tagName === 'EJS-RADIOBUTTON') {\n instance.angularValue = this.value;\n }\n }\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n RadioButton.prototype.destroy = function () {\n var _this = this;\n var radioWrap = this.wrapper;\n _super.prototype.destroy.call(this);\n if (radioWrap) {\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (radioWrap.parentNode) {\n radioWrap.parentNode.insertBefore(this.element, radioWrap);\n }\n detach(radioWrap);\n this.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n radioWrap.removeAttribute(key);\n });\n radioWrap.innerHTML = '';\n this.element = this.wrapper;\n if (this.refreshing) {\n ['e-control', 'e-radio', 'e-lib'].forEach(function (key) {\n _this.element.classList.add(key);\n });\n setValue('ej2_instances', [this], this.element);\n }\n }\n }\n };\n RadioButton.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n RadioButton.prototype.focusOutHandler = function () {\n var label = this.getLabel();\n if (label) {\n label.classList.remove('e-focus');\n }\n };\n RadioButton.prototype.getModuleName = function () {\n return 'radio';\n };\n /**\n * To get the value of selected radio button in a group.\n *\n * @method getSelectedValue\n * @returns {string} - Selected Value\n */\n RadioButton.prototype.getSelectedValue = function () {\n var input;\n var radioGrp = this.getRadioGroup();\n for (var i = 0, len = radioGrp.length; i < len; i++) {\n input = radioGrp[i];\n if (input.checked) {\n return input.value;\n }\n }\n return '';\n };\n RadioButton.prototype.getRadioGroup = function () {\n return document.querySelectorAll('input.e-radio[name=\"' + this.element.getAttribute('name') + '\"]');\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n RadioButton.prototype.getPersistData = function () {\n return this.addOnPersist(['checked']);\n };\n RadioButton.prototype.getWrapper = function () {\n if (this.element) {\n return this.element.parentElement;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.getLabel = function () {\n if (this.element) {\n return this.element.nextElementSibling;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n this.initWrapper();\n this.updateHtmlAttribute();\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n var value = this.element.getAttribute('value');\n var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n if (this.isVue ? this.value && type !== 'boolean' && !value : this.value) {\n this.element.setAttribute('value', this.value);\n }\n if (this.checked) {\n this.element.checked = true;\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n RadioButton.prototype.initWrapper = function () {\n var rippleSpan;\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', { className: WRAPPER });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n wrapper.appendChild(this.element);\n wrapper.appendChild(label);\n if (isRippleEnabled) {\n rippleSpan = this.createElement('span', { className: (RIPPLE) });\n label.appendChild(rippleSpan);\n rippleEffect(rippleSpan, {\n duration: 400,\n isCenterRipple: true\n });\n }\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n label.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n RadioButton.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getLabel().classList.add('e-focus');\n }\n };\n RadioButton.prototype.labelMouseDownHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n RadioButton.prototype.labelMouseLeaveHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.labelMouseUpHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n if (this.initialCheckedValue) {\n attributes(this.element, { 'checked': 'true' });\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {RadioButtonModel} newProp - Specifies New Properties\n * @param {RadioButtonModel} oldProp - Specifies Old Properties\n * @returns {void}\n */\n RadioButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrap = this.getWrapper();\n var label = this.getLabel();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n if (newProp.checked) {\n this.updateChange();\n }\n this.element.checked = newProp.checked;\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrap], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrap], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n label.classList.add(RTL);\n }\n else {\n label.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition':\n if (newProp.labelPosition === 'Before') {\n label.classList.add('e-right');\n }\n else {\n label.classList.remove('e-right');\n }\n break;\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n var type = typeof this.htmlAttributes.value;\n if (!isNullOrUndefined(this.htmlAttributes) && (this.htmlAttributes.value || type === 'boolean' && !this.htmlAttributes.value)) {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttribute();\n break;\n }\n }\n };\n /**\n * Initialize checked Property, Angular and React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.preRender = function () {\n var element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-RADIOBUTTON', 'radio', element, WRAPPER, 'radio');\n this.element = element;\n if (this.element.getAttribute('type') !== 'radio') {\n this.element.setAttribute('type', 'radio');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.tagName === 'EJS-RADIOBUTTON') {\n var formControlName = this.element.getAttribute('formcontrolname');\n if (formControlName) {\n this.setProperties({ 'name': formControlName }, true);\n this.element.setAttribute('name', formControlName);\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n RadioButton.prototype.setDisabled = function () {\n this.element.disabled = true;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RadioButton.prototype.setText = function (text) {\n var label = this.getLabel();\n var textLabel = label.getElementsByClassName(LABEL)[0];\n if (textLabel) {\n textLabel.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n textLabel = this.createElement('span', { className: LABEL, innerHTML: text });\n label.appendChild(textLabel);\n }\n if (this.labelPosition === 'Before') {\n this.getLabel().classList.add('e-right');\n }\n else {\n this.getLabel().classList.remove('e-right');\n }\n };\n RadioButton.prototype.updateHtmlAttribute = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n var wrapper = this.element.parentElement;\n if (ATTRIBUTES.indexOf(key) > -1) {\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ').trim().split(' '));\n }\n else if (key === 'title' || key === 'style') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n else {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n RadioButton.prototype.unWireEvents = function () {\n var label = this.wrapper;\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n var rippleLabel = label.getElementsByTagName('label')[0];\n if (rippleLabel) {\n EventHandler.remove(rippleLabel, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(rippleLabel, 'mouseup', this.labelMouseUpHandler);\n EventHandler.remove(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n RadioButton.prototype.wireEvents = function () {\n var label = this.getLabel();\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var rippleLabel = label.getElementsByClassName(LABEL)[0];\n if (rippleLabel) {\n EventHandler.add(rippleLabel, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(rippleLabel, 'mouseup', this.labelMouseUpHandler, this);\n EventHandler.add(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n };\n /**\n * Click the RadioButton element\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to RadioButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.focusIn = function () {\n this.element.focus();\n };\n var RadioButton_1;\n __decorate([\n Event()\n ], RadioButton.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RadioButton.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RadioButton.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], RadioButton.prototype, \"htmlAttributes\", void 0);\n RadioButton = RadioButton_1 = __decorate([\n NotifyPropertyChanges\n ], RadioButton);\n return RadioButton;\n}(Component));\nexport { RadioButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { merge, isNullOrUndefined, extend, Property } from '@syncfusion/ej2-base';\nimport { Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getUid, templateCompiler, getForeignData, getObject } from '../base/util';\n/**\n * Represents Grid `Column` model class.\n */\nvar Column = /** @class */ (function () {\n function Column(options, parent) {\n var _this = this;\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n *\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n *\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n *\n * @default true\n */\n this.allowResizing = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n *\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowGrouping` set to false, then it disables grouping of a particular column.\n * By default all columns are groupable.\n *\n * @default true\n */\n this.allowGrouping = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n *\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n *\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `enableGroupByFormat` set to true, then it groups the particular column by formatted values.\n *\n * @default true\n */\n this.enableGroupByFormat = false;\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n *\n * @default true\n */\n this.allowEditing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu or checkbox.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n * {% codeBlock src=\"grid/filter-menu-api/index.ts\" %}{% endcodeBlock %}\n *\n * > Check the [`Filter UI`](../../grid/filtering/filter-menu/#custom-component-in-filter-menu) for its customization.\n *\n * @default {}\n */\n this.filter = {};\n /**\n * If `showInColumnChooser` set to false, then hide the particular column in column chooser.\n * By default all columns are displayed in column Chooser.\n *\n * @default true\n */\n this.showInColumnChooser = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n *\n * @default {}\n */\n this.edit = {};\n /**\n * If `allowSearching` set to false, then it disables Searching of a particular column.\n * By default all columns allow Searching.\n *\n * @default true\n */\n this.allowSearching = true;\n /**\n * If `autoFit` set to true, then the particular column content width will be\n * adjusted based on its content in the initial rendering itself.\n * Setting this property as true is equivalent to calling `autoFitColumns` method in the `dataBound` event.\n *\n * @default false\n */\n this.autoFit = false;\n this.sortDirection = 'Descending';\n /**\n * @returns {Function} returns the edit template\n * @hidden */\n this.getEditTemplate = function () { return _this.editTemplateFn; };\n /**\n * @returns {Function} returns the filter template\n * @hidden */\n this.getFilterTemplate = function () { return _this.filterTemplateFn; };\n merge(this, options);\n this.parent = parent;\n if (this.type === 'none') {\n this.type = null;\n }\n else if (this.type) {\n this.type = typeof (this.type) === 'string' ? this.type.toLowerCase() : undefined;\n }\n if (this.editType) {\n this.editType = this.editType.toLowerCase();\n }\n if (isNullOrUndefined(this.uid)) {\n this.uid = getUid('grid-column');\n }\n var valueFormatter = new ValueFormatter();\n if (options.format && (options.format.skeleton || (options.format.format &&\n typeof options.format.format === 'string'))) {\n this.setFormatter(valueFormatter.getFormatFunction(extend({}, options.format)));\n this.setParser(valueFormatter.getParserFunction(options.format));\n }\n this.toJSON = function () {\n var col = {};\n var skip = ['filter', 'dataSource', 'headerText', 'template', 'headerTemplate', 'edit',\n 'editTemplate', 'filterTemplate', 'commandsTemplate', 'parent'];\n var keys = Object.keys(_this);\n for (var i = 0; i < keys.length; i++) {\n if (keys[parseInt(i.toString(), 10)] === 'columns') {\n col[keys[parseInt(i.toString(), 10)]] = [];\n for (var j = 0; j < _this[keys[parseInt(i.toString(), 10)]].length; j++) {\n col[keys[parseInt(i.toString(), 10)]].push(_this[keys[parseInt(i.toString(), 10)]][parseInt(j.toString(), 10)].toJSON());\n }\n }\n else if (skip.indexOf(keys[parseInt(i.toString(), 10)]) < 0) {\n col[keys[parseInt(i.toString(), 10)]] = _this[keys[parseInt(i.toString(), 10)]];\n }\n }\n return col;\n };\n if (!this.field) {\n this.allowFiltering = false;\n this.allowGrouping = false;\n this.allowSorting = false;\n if (this.columns) {\n this.allowResizing = this.columns.some(function (col) {\n return col.allowResizing;\n });\n }\n }\n if (this.commands && !this.textAlign) {\n this.textAlign = 'Right';\n }\n if (this.template || this.commandsTemplate) {\n this.templateFn = templateCompiler(this.template || this.commandsTemplate);\n }\n if (this.headerTemplate) {\n this.headerTemplateFn = templateCompiler(this.headerTemplate);\n }\n if (!isNullOrUndefined(this.filter) && this.filter.itemTemplate) {\n this.fltrTemplateFn = templateCompiler(this.filter.itemTemplate);\n }\n if (this.editTemplate) {\n this.editTemplateFn = templateCompiler(this.editTemplate);\n }\n if (this.filterTemplate) {\n this.filterTemplateFn = templateCompiler(this.filterTemplate);\n }\n if (this.isForeignColumn() &&\n (isNullOrUndefined(this.editType) || this.editType === 'dropdownedit' || this.editType === 'defaultedit')) {\n this.editType = 'dropdownedit';\n if (this.edit.params && this.edit.params.dataSource) {\n this.edit.params.ddEditedData = true;\n }\n this.edit.params = extend({\n dataSource: this.dataSource,\n query: new Query(), fields: { value: this.foreignKeyField || this.field, text: this.foreignKeyValue }\n }, this.edit.params);\n }\n if (this.sortComparer) {\n var a_1 = this.sortComparer;\n this.sortComparer = function (x, y, xObj, yObj) {\n if (typeof a_1 === 'string') {\n a_1 = getObject(a_1, window);\n }\n if (_this.sortDirection === 'Descending') {\n var z = x;\n x = y;\n y = z;\n var obj = xObj;\n xObj = yObj;\n yObj = obj;\n }\n return a_1(x, y, xObj, yObj);\n };\n }\n if (!this.sortComparer && this.isForeignColumn()) {\n this.sortComparer = function (x, y) {\n x = getObject(_this.foreignKeyValue, getForeignData(_this, {}, x)[0]);\n y = getObject(_this.foreignKeyValue, getForeignData(_this, {}, y)[0]);\n return _this.sortDirection === 'Descending' ? DataUtil.fnDescending(x, y) : DataUtil.fnAscending(x, y);\n };\n }\n }\n /**\n * @returns {string} returns the sort direction\n * @hidden */\n Column.prototype.getSortDirection = function () {\n return this.sortDirection;\n };\n /**\n * @param {string} direction - specifies the direction\n * @returns {void}\n * @hidden\n */\n Column.prototype.setSortDirection = function (direction) {\n this.sortDirection = direction;\n };\n /**\n * @returns {freezeTable} returns the FreezeTable\n * @hidden */\n Column.prototype.getFreezeTableName = function () {\n return this.freezeTable;\n };\n /**\n * @param {Column} column - specifies the column\n * @returns {void}\n * @hidden\n */\n Column.prototype.setProperties = function (column) {\n //Angular two way binding\n var keys = Object.keys(column);\n for (var i = 0; i < keys.length; i++) {\n this[keys[parseInt(i.toString(), 10)]] = column[keys[parseInt(i.toString(), 10)]];\n //Refresh the react columnTemplates on state change\n if (this.parent && this.parent.isReact) {\n if (keys[parseInt(i.toString(), 10)] === 'template') {\n this.templateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this.parent.refreshReactColumnTemplateByUid(this.uid, true);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'headerTemplate') {\n this.headerTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this.parent.refreshReactHeaderTemplateByUid(this.uid);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'editTemplate') {\n this.editTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n }\n }\n }\n };\n /**\n * @returns {boolean} returns true for foreign column\n * @hidden\n * It defines the column is foreign key column or not.\n */\n Column.prototype.isForeignColumn = function () {\n return !!(this.dataSource && this.foreignKeyValue);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Column.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getParser = function () {\n return this.parserFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setParser = function (value) {\n this.parserFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getColumnTemplate = function () {\n return this.templateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getHeaderTemplate = function () {\n return this.headerTemplateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getFilterItemTemplate = function () {\n return this.fltrTemplateFn;\n };\n /**\n * @returns {string} returns the string\n * @hidden */\n Column.prototype.getDomSetter = function () {\n return this.disableHtmlEncode ? 'textContent' : 'innerHTML';\n };\n return Column;\n}());\nexport { Column };\n/**\n * Define options for custom command buttons.\n */\nvar CommandColumnModel = /** @class */ (function () {\n function CommandColumnModel() {\n }\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"title\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"buttonOption\", void 0);\n return CommandColumnModel;\n}());\nexport { CommandColumnModel };\n/**\n * Defines Grid column\n */\nvar GridColumn = /** @class */ (function (_super) {\n __extends(GridColumn, _super);\n function GridColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], GridColumn.prototype, \"columns\", void 0);\n return GridColumn;\n}(Column));\nexport { GridColumn };\n/**\n * Defines stacked grid column\n */\nvar StackedColumn = /** @class */ (function (_super) {\n __extends(StackedColumn, _super);\n function StackedColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return StackedColumn;\n}(GridColumn));\nexport { StackedColumn };\n","import { Browser, EventHandler } from '@syncfusion/ej2-base';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\nimport { formatUnit, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getScrollBarWidth, getUpdateUsingRaf } from '../base/util';\nimport { scroll, contentReady, uiUpdate, onEmpty, headerRefreshed, textWrapRefresh, virtualScrollEdit, infiniteScrollHandler, closeFilterDialog } from '../base/constant';\nimport { lazyLoadScrollHandler, checkScrollReset } from '../base/constant';\nimport { ColumnWidthService } from '../services/width-controller';\nimport * as literals from '../base/string-literals';\nimport * as events from '../base/constant';\n/**\n * The `Scroll` module is used to handle scrolling behaviour.\n */\nvar Scroll = /** @class */ (function () {\n /**\n * Constructor for the Grid scrolling.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Scroll(parent) {\n //To maintain scroll state on grid actions.\n this.previousValues = { top: 0, left: 0 };\n this.oneTimeReady = true;\n this.parent = parent;\n this.widthService = new ColumnWidthService(parent);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Scroll.prototype.getModuleName = function () {\n return 'scroll';\n };\n /**\n * @param {boolean} uiupdate - specifies the uiupdate\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setWidth = function (uiupdate) {\n this.parent.element.style.width = formatUnit(this.parent.width);\n if (uiupdate) {\n this.widthService.setWidthToColumns();\n }\n if (this.parent.toolbarModule && this.parent.toolbarModule.toolbar &&\n this.parent.toolbarModule.toolbar.element) {\n var tlbrElement = this.parent.toolbarModule.toolbar.element;\n var tlbrLeftElement = tlbrElement.querySelector('.e-toolbar-left');\n var tlbrCenterElement = tlbrElement.querySelector('.e-toolbar-center');\n var tlbrRightElement = tlbrElement.querySelector('.e-toolbar-right');\n var tlbrItems = tlbrElement.querySelector('.e-toolbar-items');\n var tlbrLeftWidth = tlbrLeftElement ? tlbrLeftElement.clientWidth : 0;\n var tlbrCenterWidth = tlbrCenterElement ? tlbrCenterElement.clientWidth : 0;\n var tlbrRightWidth = tlbrRightElement ? tlbrRightElement.clientWidth : 0;\n var tlbrItemsWidth = tlbrItems ? tlbrItems.clientWidth : 0;\n var tlbrWidth = tlbrElement ? tlbrElement.clientWidth : 0;\n if (!this.parent.enableAdaptiveUI || tlbrLeftWidth > tlbrWidth || tlbrCenterWidth > tlbrWidth || tlbrRightWidth > tlbrWidth ||\n tlbrItemsWidth > tlbrWidth) {\n this.parent.toolbarModule.toolbar.refreshOverflow();\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setHeight = function () {\n var mHdrHeight = 0;\n var content = this.parent.getContent().querySelector('.' + literals.content);\n var height = this.parent.height;\n if (this.parent.enableColumnVirtualization && this.parent.isFrozenGrid() && this.parent.height !== 'auto'\n && this.parent.height.toString().indexOf('%') < 0) {\n height = parseInt(height, 10) - Scroll.getScrollBarWidth();\n }\n if (!this.parent.enableVirtualization && this.parent.frozenRows && this.parent.height !== 'auto') {\n var tbody = this.parent.getHeaderContent()\n .querySelector(literals.tbody + ':not(.e-masked-tbody)');\n mHdrHeight = tbody ? tbody.offsetHeight : 0;\n if (tbody && mHdrHeight) {\n var add = tbody.getElementsByClassName(literals.addedRow).length;\n var height_1 = add * this.parent.getRowHeight();\n mHdrHeight -= height_1;\n }\n else if (!this.parent.isInitialLoad && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && this.parent.getHeaderContent().querySelector('.e-masked-table')) {\n height = parseInt(height, 10) - (this.parent.frozenRows * this.parent.getRowHeight());\n }\n content.style.height = formatUnit(height - mHdrHeight);\n }\n else {\n content.style.height = formatUnit(height);\n }\n this.ensureOverflow(content);\n if (this.parent.isFrozenGrid()) {\n this.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setPadding = function () {\n var content = this.parent.getHeaderContent();\n var scrollWidth = Scroll.getScrollBarWidth() - this.getThreshold();\n var cssProps = this.getCssProperties();\n content.querySelector('.' + literals.headerContent).style[cssProps.border] = scrollWidth > 0 ? '1px' : '0px';\n content.style[cssProps.padding] = scrollWidth > 0 ? scrollWidth + 'px' : '0px';\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removePadding = function (rtl) {\n var cssProps = this.getCssProperties(rtl);\n var hDiv = this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n hDiv.style[cssProps.border] = '';\n hDiv.parentElement.style[cssProps.padding] = '';\n var footerDiv = this.parent.getFooterContent();\n if (footerDiv && footerDiv.classList.contains('e-footerpadding')) {\n footerDiv.classList.remove('e-footerpadding');\n }\n };\n /**\n * Refresh makes the Grid adoptable with the height of parent container.\n *\n * > The [`height`](./#height) must be set to 100%.\n *\n * @returns {void}\n */\n Scroll.prototype.refresh = function () {\n if (this.parent.height !== '100%') {\n return;\n }\n var content = this.parent.getContent();\n this.parent.element.style.height = '100%';\n var height = this.widthService.getSiblingsHeight(content);\n content.style.height = 'calc(100% - ' + height + 'px)'; //Set the height to the '.' + literals.gridContent;\n };\n Scroll.prototype.getThreshold = function () {\n /* Some browsers places the scroller outside the content,\n * hence the padding should be adjusted.*/\n var appName = Browser.info.name;\n if (appName === 'mozilla') {\n return 0.5;\n }\n return 1;\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(onEmpty, this.wireEvents, this);\n this.parent.on(contentReady, this.wireEvents, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n this.parent.on(textWrapRefresh, this.wireEvents, this);\n this.parent.on(headerRefreshed, this.setScrollLeft, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(onEmpty, this.wireEvents);\n this.parent.off(contentReady, this.wireEvents);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n this.parent.off(textWrapRefresh, this.wireEvents);\n this.parent.off(headerRefreshed, this.setScrollLeft);\n this.unwireEvents();\n };\n Scroll.prototype.unwireEvents = function () {\n if (this.parent.frozenRows && this.header) {\n EventHandler.remove(this.header, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(this.header, 'touchmove pointermove', this.onTouchScroll);\n }\n var mScrollBar = this.parent.getContent() ? this.parent.getContent().querySelector('.e-movablescrollbar') : null;\n if (this.parent.isFrozenGrid() && this.parent.enableColumnVirtualization) {\n if (mScrollBar) {\n EventHandler.remove(mScrollBar, 'scroll', this.onCustomScrollbarScroll);\n }\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(this.content, 'touchstart pointerdown', this.setPageXY);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.remove(this.content, 'touchmove pointermove', this.onTouchScroll);\n }\n }\n if (this.header) {\n EventHandler.remove(this.header, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(this.header, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(this.header, 'touchmove pointermove', this.onTouchScroll);\n }\n }\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.contentScrollHandler);\n }\n if (this.header) {\n EventHandler.remove(this.header, 'scroll', this.headerScrollHandler);\n }\n this.contentScrollHandler = null;\n this.headerScrollHandler = null;\n if (this.parent.aggregates.length && this.parent.getFooterContent()) {\n EventHandler.remove(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll);\n }\n };\n Scroll.prototype.setScrollLeft = function () {\n this.parent.getHeaderContent().querySelector('.' + literals.headerContent).scrollLeft = this.previousValues.left;\n };\n Scroll.prototype.onContentScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n var isHeader = element.classList.contains(literals.headerContent);\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n var target = e.target;\n if (_this.parent.frozenRows) {\n if (_this.content.scrollTop > 0 && _this.parent.frozenRows) {\n addClass([_this.parent.element], 'e-top-shadow');\n }\n else {\n removeClass([_this.parent.element], 'e-top-shadow');\n }\n }\n if (_this.parent.element.querySelectorAll('.e-leftfreeze,.e-fixedfreeze,.e-rightfreeze').length) {\n var errorFreeze = _this.parent.getContent().querySelectorAll('.e-freezeerror:not([style*=\"display: none\"])');\n var errorFixed = _this.parent.getContent().querySelectorAll('.e-fixederror:not([style*=\"display: none\"])');\n if (target.scrollLeft !== 0 && _this.parent.getVisibleFrozenLeftCount()) {\n addClass([_this.parent.element], 'e-left-shadow');\n }\n else {\n removeClass([_this.parent.element], 'e-left-shadow');\n }\n var widthVal = Math.round((_this.parent.enableRtl ? target.scrollWidth + target.scrollLeft : target.scrollWidth - target.scrollLeft) +\n (_this.parent.height === 'auto' ? 0 : 1));\n if (widthVal === target.offsetWidth && _this.parent.getVisibleFrozenRightCount()) {\n removeClass([_this.parent.element], 'e-right-shadow');\n }\n else {\n addClass([_this.parent.element], 'e-right-shadow');\n }\n var rows = [].slice.call(_this.parent.getContent().querySelectorAll('.e-row:not(.e-hiddenrow)'));\n if (((rows.length === 1 && errorFreeze.length) ||\n (_this.parent.element.querySelector('.e-freeze-autofill:not([style*=\"display: none\"])')) ||\n errorFixed.length) && target.scrollLeft !== _this.previousValues.left) {\n target.scrollLeft = _this.previousValues.left;\n return;\n }\n if (rows.length !== 1 && (errorFreeze.length || errorFixed.length) && target.scrollTop !== _this.previousValues.top) {\n target.scrollTop = _this.previousValues.top;\n return;\n }\n }\n var left = target.scrollLeft;\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling && !_this.parent.isEdit) {\n _this.parent.notify(infiniteScrollHandler, { target: e.target, isLeft: _this.previousValues.left !== left });\n }\n if (_this.parent.groupSettings.columns.length && _this.parent.groupSettings.enableLazyLoading) {\n var isDown = _this.previousValues.top < _this.parent.getContent().firstElementChild.scrollTop;\n _this.parent.notify(lazyLoadScrollHandler, { scrollDown: isDown });\n }\n _this.parent.notify(virtualScrollEdit, {});\n var isFooter = target.classList.contains('e-summarycontent');\n if (_this.previousValues.left === left) {\n _this.previousValues.top = !isHeader ? _this.previousValues.top : target.scrollTop;\n return;\n }\n _this.parent.notify(closeFilterDialog, e);\n element.scrollLeft = left;\n if (isFooter) {\n _this.header.scrollLeft = left;\n }\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n };\n };\n Scroll.prototype.onCustomScrollbarScroll = function (cont, hdr) {\n var _this = this;\n var content = cont;\n var header = hdr;\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (_this.previousValues.left === left) {\n return;\n }\n content.scrollLeft = left;\n header.scrollLeft = left;\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n if (_this.parent.isDestroyed) {\n return;\n }\n };\n };\n Scroll.prototype.onTouchScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n var isFrozen = _this.parent.isFrozenGrid();\n var pageXY = _this.getPointXY(e);\n var left = element.scrollLeft + (_this.pageXY.x - pageXY.x);\n var mHdr = _this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mCont = _this.parent.getContent().querySelector('.' + literals.content);\n if (_this.previousValues.left === left || (left < 0 || (mHdr.scrollWidth - mHdr.clientWidth) < left)) {\n return;\n }\n e.preventDefault();\n mHdr.scrollLeft = left;\n mCont.scrollLeft = left;\n if (isFrozen && _this.parent.enableColumnVirtualization) {\n var scrollBar = _this.parent.getContent().querySelector('.e-movablescrollbar');\n scrollBar.scrollLeft = left;\n }\n _this.pageXY.x = pageXY.x;\n _this.previousValues.left = left;\n };\n };\n Scroll.prototype.setPageXY = function () {\n var _this = this;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n _this.pageXY = _this.getPointXY(e);\n };\n };\n Scroll.prototype.getPointXY = function (e) {\n var pageXY = { x: 0, y: 0 };\n if (e.touches && e.touches.length) {\n pageXY.x = e.touches[0].pageX;\n pageXY.y = e.touches[0].pageY;\n }\n else {\n pageXY.x = e.pageX;\n pageXY.y = e.pageY;\n }\n return pageXY;\n };\n Scroll.prototype.getScrollbleParent = function (node) {\n if (node === null) {\n return null;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parent = isNullOrUndefined(node.tagName) ? node.scrollingElement : node;\n var overflowY = document.defaultView.getComputedStyle(parent, null).overflowY;\n if (parent.scrollHeight > parent.clientHeight && overflowY !== 'hidden'\n && overflowY !== 'visible' || node.tagName === 'HTML' || node.tagName === 'BODY') {\n return node;\n }\n else {\n return this.getScrollbleParent(node.parentNode);\n }\n };\n /**\n * @param {boolean} isAdd - specifies whether adding/removing the event\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.addStickyListener = function (isAdd) {\n this.parentElement = this.getScrollbleParent(this.parent.element.parentElement);\n if (isAdd && this.parentElement) {\n this.eventElement = this.parentElement.tagName === 'HTML' || this.parentElement.tagName === 'BODY' ? document :\n this.parentElement;\n EventHandler.add(this.eventElement, 'scroll', this.makeStickyHeader, this);\n }\n else if (this.eventElement) {\n EventHandler.remove(this.eventElement, 'scroll', this.makeStickyHeader);\n this.eventElement = null;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.resizeFrozenRowBorder = function () {\n var div;\n if (!this.parent.element.querySelector('.e-frozenrow-border')) {\n div = this.parent.createElement('div', { className: 'e-frozenrow-border' });\n this.parent.element.insertBefore(div, this.parent.element.querySelector('.e-gridcontent'));\n }\n else {\n div = this.parent.element.querySelector('.e-frozenrow-border');\n }\n var scrollWidth = this.parent.height !== 'auto' ? Scroll.getScrollBarWidth() : 0;\n div.style.width = (this.parent.element.offsetWidth - scrollWidth) - 0.5 + 'px';\n };\n Scroll.prototype.wireEvents = function () {\n var _this = this;\n if (this.oneTimeReady) {\n var frzCols = this.parent.isFrozenGrid();\n this.content = this.parent.getContent().querySelector('.' + literals.content);\n this.header = this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mScrollBar = this.parent.getContent().querySelector('.e-movablescrollbar');\n if (this.parent.frozenRows && this.header && this.content) {\n EventHandler.add(this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(this.header, 'touchmove pointermove', this.onTouchScroll(this.content), this);\n }\n if (frzCols && mScrollBar && this.parent.enableColumnVirtualization) {\n EventHandler.add(mScrollBar, 'scroll', this.onCustomScrollbarScroll(this.content, this.header), this);\n EventHandler.add(this.content, 'scroll', this.onCustomScrollbarScroll(mScrollBar, this.header), this);\n EventHandler.add(this.header, 'scroll', this.onCustomScrollbarScroll(mScrollBar, this.content), this);\n EventHandler.add(this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(this.header, 'touchmove pointermove', this.onTouchScroll(this.content), this);\n EventHandler.add(this.content, 'touchstart pointerdown', this.setPageXY(), this);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.add(this.content, 'touchmove pointermove', this.onTouchScroll(this.header), this);\n }\n }\n this.contentScrollHandler = this.onContentScroll(this.header);\n this.headerScrollHandler = this.onContentScroll(this.content);\n EventHandler.add(this.content, 'scroll', this.contentScrollHandler, this);\n EventHandler.add(this.header, 'scroll', this.headerScrollHandler, this);\n if (this.parent.aggregates.length) {\n EventHandler.add(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll(this.content), this);\n }\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(true);\n }\n this.refresh();\n this.oneTimeReady = false;\n }\n var table = this.parent.getContentTable();\n var sLeft;\n var sHeight;\n var clientHeight;\n getUpdateUsingRaf(function () {\n sLeft = _this.header.scrollLeft;\n sHeight = table.scrollHeight;\n clientHeight = _this.parent.getContent().clientHeight;\n }, function () {\n var args = { cancel: false };\n _this.parent.notify(checkScrollReset, args);\n if (sHeight < clientHeight && _this.parent.height !== 'auto') {\n _this.setLastRowCell();\n }\n if (_this.parent.frozenRows) {\n _this.resizeFrozenRowBorder();\n }\n if (!_this.parent.enableVirtualization && !_this.parent.enableInfiniteScrolling) {\n if (!args.cancel) {\n _this.header.scrollLeft = _this.previousValues.left;\n _this.content.scrollLeft = _this.previousValues.left;\n _this.content.scrollTop = _this.previousValues.top;\n }\n }\n if (!_this.parent.enableColumnVirtualization) {\n _this.content.scrollLeft = sLeft;\n if (_this.parent.isFrozenGrid()) {\n _this.previousValues.left = sLeft;\n }\n }\n });\n this.parent.isPreventScrollEvent = false;\n };\n /**\n * @returns {void} returns void\n * @hidden\n */\n Scroll.prototype.setLastRowCell = function () {\n var table = this.parent.getContentTable();\n if (table.querySelector('tr:nth-last-child(2)')) {\n removeClass(table.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n }\n addClass(table.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {ScrollCss} returns the ScrollCss\n * @hidden\n */\n Scroll.prototype.getCssProperties = function (rtl) {\n var css = {};\n var enableRtl = isNullOrUndefined(rtl) ? this.parent.enableRtl : rtl;\n css.border = enableRtl ? 'borderLeftWidth' : 'borderRightWidth';\n css.padding = enableRtl ? 'paddingLeft' : 'paddingRight';\n return css;\n };\n Scroll.prototype.ensureOverflow = function (content) {\n content.style.overflowY = this.parent.height === 'auto' ? 'auto' : 'scroll';\n };\n Scroll.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n this.setPadding();\n this.oneTimeReady = true;\n if (this.parent.height === 'auto') {\n this.removePadding();\n }\n this.wireEvents();\n this.setHeight();\n var width = 'width';\n this.setWidth(!isNullOrUndefined(e.properties[\"\" + width]));\n };\n Scroll.prototype.makeStickyHeader = function () {\n if (this.parent.enableStickyHeader && this.parent.element && this.parent.getContent()) {\n var contentRect = this.parent.getContent().getClientRects()[0];\n if (contentRect) {\n var headerEle = this.parent.getHeaderContent();\n var toolbarEle = this.parent.element.querySelector('.e-toolbar');\n var groupHeaderEle = this.parent.element.querySelector('.e-groupdroparea');\n var height = headerEle.offsetHeight + (toolbarEle ? toolbarEle.offsetHeight : 0) +\n (groupHeaderEle ? groupHeaderEle.offsetHeight : 0);\n var parentTop = this.parentElement.getClientRects()[0].top;\n var top_1 = contentRect.top - (parentTop < 0 ? 0 : parentTop);\n var left = contentRect.left;\n var colMenuEle = document.body.querySelector('#' + this.parent.element.id + '_columnmenu');\n if (top_1 < height && contentRect.bottom > 0) {\n headerEle.classList.add('e-sticky');\n var elemTop = 0;\n if (groupHeaderEle && this.parent.groupSettings.showDropArea) {\n this.setSticky(groupHeaderEle, elemTop, contentRect.width, left, true);\n elemTop += groupHeaderEle.getClientRects()[0].height;\n }\n if (toolbarEle) {\n this.setSticky(toolbarEle, elemTop, contentRect.width, left, true);\n elemTop += toolbarEle.getClientRects()[0].height;\n }\n this.setSticky(headerEle, elemTop, contentRect.width, left, true);\n if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'fixed';\n colMenuEle.style.top = height + 'px';\n }\n }\n else {\n if (headerEle.classList.contains('e-sticky')) {\n this.setSticky(headerEle, null, null, null, false);\n if (toolbarEle) {\n this.setSticky(toolbarEle, null, null, null, false);\n }\n if (groupHeaderEle) {\n this.setSticky(groupHeaderEle, null, null, null, false);\n }\n var ccDlg = this.parent.element.querySelector('.e-ccdlg');\n if (ccDlg) {\n ccDlg.classList.remove('e-sticky');\n }\n if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'absolute';\n var topStyle = contentRect.top - parentTop;\n colMenuEle.style.top = topStyle + 'px';\n }\n }\n }\n this.parent.notify(events.stickyScrollComplete, {});\n }\n }\n };\n Scroll.prototype.setSticky = function (ele, top, width, left, isAdd) {\n if (isAdd) {\n ele.style.width = width + 'px';\n ele.classList.add('e-sticky');\n }\n else {\n ele.classList.remove('e-sticky');\n }\n ele.style.top = top != null ? top + 'px' : '';\n ele.style.left = left !== null ? parseInt(ele.style.left, 10) !== left ? left + 'px' : ele.style.left : '';\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.removeEventListener();\n //Remove Dom event\n var cont = this.parent.getContent().querySelector('.' + literals.content);\n EventHandler.remove(cont, 'scroll', this.onContentScroll);\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(false);\n }\n //Remove padding\n this.removePadding();\n removeClass([this.parent.getHeaderContent().querySelector('.' + literals.headerContent)], literals.headerContent);\n removeClass([cont], literals.content);\n //Remove height\n cont.style.height = '';\n //Remove width\n this.parent.element.style.width = '';\n };\n /**\n * Function to get the scrollbar width of the browser.\n *\n * @returns {number} return the width\n * @hidden\n */\n Scroll.getScrollBarWidth = function () {\n return getScrollBarWidth();\n };\n return Scroll;\n}());\nexport { Scroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { Column } from '../models/column';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { calculateAggregate, getUid } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\n/**\n * Summary row model generator\n *\n * @hidden\n */\nvar SummaryModelGenerator = /** @class */ (function () {\n /**\n * Constructor for Summary row model generator\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function SummaryModelGenerator(parent) {\n this.parent = parent;\n }\n SummaryModelGenerator.prototype.getData = function () {\n var _this = this;\n var rows = [];\n var row = this.parent.aggregates.slice();\n for (var i = 0; i < row.length; i++) {\n var columns = row[parseInt(i.toString(), 10)].columns.filter(function (column) {\n return !(column.footerTemplate || column.groupFooterTemplate || column.groupCaptionTemplate)\n || _this.columnSelector(column);\n });\n if (columns.length) {\n rows.push({ columns: columns });\n }\n }\n return rows;\n };\n SummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.footerTemplate !== undefined;\n };\n SummaryModelGenerator.prototype.getColumns = function (start) {\n var columns = [];\n if (this.parent.detailTemplate || !isNullOrUndefined(this.parent.childGrid)) {\n columns.push(new Column({}));\n }\n if (this.parent.allowGrouping) {\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n columns.push(new Column({}));\n }\n }\n if (this.parent.isRowDragable() && !start) {\n columns.push(new Column({}));\n }\n columns.push.apply(columns, this.parent.getColumns());\n return columns;\n };\n SummaryModelGenerator.prototype.generateRows = function (input, args, start, end, columns) {\n if (input.length === 0) {\n if (args === undefined || !args.count) {\n return [];\n }\n }\n var data = this.buildSummaryData(input, args);\n var rows = [];\n var row = this.getData();\n for (var i = 0; i < row.length; i++) {\n rows.push(this.getGeneratedRow(row[parseInt(i.toString(), 10)], data[parseInt(i.toString(), 10)], args ? args.level : undefined, start, end, args ? args.parentUid : undefined, columns));\n }\n return rows;\n };\n SummaryModelGenerator.prototype.getGeneratedRow = function (summaryRow, data, raw, start, end, parentUid, columns) {\n var tmp = [];\n var indents = this.getIndentByLevel();\n var isDetailGridAlone = !isNullOrUndefined(this.parent.childGrid);\n var indentLength = this.parent.getIndentCount();\n if (this.parent.groupSettings.columns.length && this.parent.allowRowDragAndDrop) {\n indents.push('e-indentcelltop');\n }\n else if (this.parent.isRowDragable() && !start) {\n indents = ['e-indentcelltop'];\n }\n var values = columns ? columns : this.getColumns(start);\n for (var i = 0; i < values.length; i++) {\n tmp.push(this.getGeneratedCell(values[parseInt(i.toString(), 10)], summaryRow, i >= indentLength ? this.getCellType() :\n i === 0 && this.parent.childGrid ? CellType.DetailFooterIntent : CellType.Indent, indents[parseInt(i.toString(), 10)], isDetailGridAlone));\n }\n var row = new Row({ data: data, attributes: { class: 'e-summaryrow' } });\n row.cells = tmp;\n row.uid = getUid('grid-row');\n row.parentUid = parentUid;\n row.isAggregateRow = true;\n row.visible = tmp.some(function (cell) { return cell.isDataCell && cell.visible; });\n return row;\n };\n SummaryModelGenerator.prototype.getGeneratedCell = function (column, summaryRow, cellType, indent, isDetailGridAlone) {\n //Get the summary column by display\n var sColumn = summaryRow.columns.filter(function (scolumn) { return scolumn.columnName === column.field; })[0];\n var attrs = {\n 'style': { 'textAlign': column.textAlign },\n 'e-mappinguid': column.uid, index: column.index\n };\n if (indent) {\n attrs.class = indent;\n }\n if (isNullOrUndefined(indent) && isDetailGridAlone) {\n attrs.class = 'e-detailindentcelltop';\n }\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(sColumn),\n 'isTemplate': sColumn && !isNullOrUndefined(sColumn.footerTemplate\n || sColumn.groupFooterTemplate || sColumn.groupCaptionTemplate),\n 'column': sColumn || {},\n 'attributes': attrs,\n 'cellType': cellType\n };\n opt.column.headerText = column.headerText;\n return new Cell(opt);\n };\n SummaryModelGenerator.prototype.buildSummaryData = function (data, args) {\n var dummy = [];\n var summaryRows = this.getData();\n var single = {};\n for (var i = 0; i < summaryRows.length; i++) {\n single = {};\n var column = summaryRows[parseInt(i.toString(), 10)].columns;\n for (var j = 0; j < column.length; j++) {\n single = this.setTemplate(column[parseInt(j.toString(), 10)], (args && args.aggregates) ? args : data, single);\n }\n dummy.push(single);\n }\n return dummy;\n };\n SummaryModelGenerator.prototype.getIndentByLevel = function () {\n return this.parent.groupSettings.columns.map(function () { return 'e-indentcelltop'; });\n };\n SummaryModelGenerator.prototype.setTemplate = function (column, data, single) {\n var types = column.type;\n var helper = {};\n var formatFn = column.getFormatter() || (function () { return function (a) { return a; }; })();\n var group = data;\n if (!(types instanceof Array)) {\n types = [column.type];\n }\n for (var i = 0; i < types.length; i++) {\n var key = column.field + ' - ' + types[parseInt(i.toString(), 10)].toLowerCase();\n var disp = column.columnName;\n var val = types[parseInt(i.toString(), 10)] !== 'Custom' && group.aggregates && key in group.aggregates ? group.aggregates[\"\" + key] :\n calculateAggregate(types[parseInt(i.toString(), 10)], group.aggregates ? group : data, column, this.parent);\n single[\"\" + disp] = single[\"\" + disp] || {};\n single[\"\" + disp][\"\" + key] = val;\n single[\"\" + disp][types[parseInt(i.toString(), 10)]] = !isNullOrUndefined(val) ? formatFn(val) : ' ';\n if (group.field) {\n single[\"\" + disp].field = group.field;\n single[\"\" + disp].key = group.key;\n }\n }\n helper.format = column.getFormatter();\n column.setTemplate(helper);\n return single;\n };\n SummaryModelGenerator.prototype.getCellType = function () {\n return CellType.Summary;\n };\n return SummaryModelGenerator;\n}());\nexport { SummaryModelGenerator };\nvar GroupSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(GroupSummaryModelGenerator, _super);\n function GroupSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GroupSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupFooterTemplate !== undefined;\n };\n GroupSummaryModelGenerator.prototype.getIndentByLevel = function (level) {\n if (level === void 0) { level = this.parent.groupSettings.columns.length; }\n if (this.parent.allowRowDragAndDrop && this.parent.groupSettings.columns.length) {\n level -= 1;\n }\n return this.parent.groupSettings.columns.map(function (v, indx) { return indx <= level - 1 ? '' : 'e-indentcelltop'; });\n };\n GroupSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.GroupSummary;\n };\n return GroupSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { GroupSummaryModelGenerator };\nvar CaptionSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(CaptionSummaryModelGenerator, _super);\n function CaptionSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CaptionSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupCaptionTemplate !== undefined;\n };\n CaptionSummaryModelGenerator.prototype.getData = function () {\n var initVal = { columns: [] };\n return [_super.prototype.getData.call(this).reduce(function (prev, cur) {\n prev.columns = prev.columns.concat(cur.columns);\n return prev;\n }, initVal)];\n };\n CaptionSummaryModelGenerator.prototype.isEmpty = function () {\n return (this.getData()[0].columns || []).length === 0;\n };\n CaptionSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.CaptionSummary;\n };\n return CaptionSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { CaptionSummaryModelGenerator };\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var ButtonsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-buttons';\n }\n }\n});\nexport var ButtonsPlugin = {\n name: 'e-buttons',\n install: function (Vue) {\n Vue.component(ButtonsPlugin.name, ButtonsDirective);\n }\n};\n/**\n * 'e-button' directive represent a button of Vue Dialog\n * It must be contained in a Dialog component(`ejs-dialog`).\n * ```html\n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var DialogButtonDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-dialogbutton';\n }\n }\n});\nexport var DialogButtonPlugin = {\n name: 'e-dialogbutton',\n install: function (Vue) {\n Vue.component(DialogButtonPlugin.name, DialogButtonDirective);\n }\n};\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { ButtonsDirective, DialogButtonDirective, ButtonsPlugin, DialogButtonPlugin } from './buttons.directive';\nexport var properties = ['isLazyUpdate', 'plugins', 'allowDragging', 'animationSettings', 'buttons', 'closeOnEscape', 'content', 'cssClass', 'enableHtmlSanitizer', 'enablePersistence', 'enableResize', 'enableRtl', 'footerTemplate', 'header', 'height', 'isModal', 'locale', 'minHeight', 'position', 'resizeHandles', 'showCloseIcon', 'target', 'visible', 'width', 'zIndex', 'beforeClose', 'beforeOpen', 'beforeSanitizeHtml', 'close', 'created', 'destroyed', 'drag', 'dragStart', 'dragStop', 'open', 'overlayClick', 'resizeStart', 'resizeStop', 'resizing'];\nexport var modelProps = ['visible'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents the VueJS Dialog component\n * ```html\n * \n * ```\n */\nexport var DialogComponent = vueDefineComponent({\n name: 'DialogComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new Dialog({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: true,\n hasInjectedModules: false,\n tagMapper: { \"e-buttons\": \"e-dialogbutton\" },\n tagNameMapper: {},\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n getButtons: function (index) {\n return this.ej2Instances.getButtons(index);\n },\n getDimension: function () {\n return this.ej2Instances.getDimension();\n },\n hide: function (event) {\n return this.ej2Instances.hide(event);\n },\n refreshPosition: function () {\n return this.ej2Instances.refreshPosition();\n },\n sanitizeHelper: function (value) {\n return this.ej2Instances.sanitizeHelper(value);\n },\n show: function (isFullScreen) {\n return this.ej2Instances.show(isFullScreen);\n },\n }\n});\nexport var DialogPlugin = {\n name: 'ejs-dialog',\n install: function (Vue) {\n Vue.component(DialogPlugin.name, DialogComponent);\n Vue.component(DialogButtonPlugin.name, DialogButtonDirective);\n Vue.component(ButtonsPlugin.name, ButtonsDirective);\n }\n};\n","/**\n * AriaService\n *\n * @hidden\n */\nvar AriaService = /** @class */ (function () {\n function AriaService() {\n }\n AriaService.prototype.setOptions = function (target, options) {\n var props = Object.keys(options);\n for (var i = 0; i < props.length; i++) {\n setStateAndProperties(target, config[props[parseInt(i.toString(), 10)]], options[props[parseInt(i.toString(), 10)]]);\n }\n };\n AriaService.prototype.setExpand = function (target, expand) {\n setStateAndProperties(target, config.expand, expand);\n };\n AriaService.prototype.setSort = function (target, direction) {\n setStateAndProperties(target, config.sort, direction, typeof direction === 'boolean');\n };\n AriaService.prototype.setBusy = function (target, isBusy) {\n setStateAndProperties(target, config.busy, isBusy);\n setStateAndProperties(target, config.invalid, null, true);\n };\n AriaService.prototype.setGrabbed = function (target, isGrabbed, remove) {\n setStateAndProperties(target, config.grabbed, isGrabbed, remove);\n };\n AriaService.prototype.setDropTarget = function (target, isTarget) {\n setStateAndProperties(target, config.dropeffect, 'copy', !isTarget);\n };\n return AriaService;\n}());\nexport { AriaService };\n/**\n * @param {HTMLElement} target - specifies the target\n * @param {string} attribute - specifies the attribute\n * @param {ValueType} value - specifies the value\n * @param {boolean} remove - specifies the boolean for remove\n * @returns {void}\n * @hidden\n */\nfunction setStateAndProperties(target, attribute, value, remove) {\n if (remove && target) {\n target.removeAttribute(attribute);\n return;\n }\n if (target) {\n target.setAttribute(attribute, value);\n }\n}\nvar config = {\n expand: 'aria-expanded',\n role: 'role',\n datarole: 'data-role',\n selected: 'aria-selected',\n multiselectable: 'aria-multiselectable',\n sort: 'aria-sort',\n busy: 'aria-busy',\n invalid: 'aria-invalid',\n grabbed: 'aria-grabbed',\n dropeffect: 'aria-dropeffect',\n haspopup: 'aria-haspopup',\n level: 'aria-level',\n colcount: 'aria-colcount',\n rowcount: 'aria-rowcount'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, EventHandler, Property, Event } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, isVisible, closest, attributes, detach, classList, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { selectAll, setStyleAttribute as setStyle, select } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, getUniqueID, formatUnit, Collection, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Browser, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_ITEMS = 'e-toolbar-items';\nvar CLS_ITEM = 'e-toolbar-item';\nvar CLS_RTL = 'e-rtl';\nvar CLS_SEPARATOR = 'e-separator';\nvar CLS_POPUPICON = 'e-popup-up-icon';\nvar CLS_POPUPDOWN = 'e-popup-down-icon';\nvar CLS_POPUPOPEN = 'e-popup-open';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_POPUPTEXT = 'e-toolbar-text';\nvar CLS_TBARTEXT = 'e-popup-text';\nvar CLS_TBAROVERFLOW = 'e-overflow-show';\nvar CLS_POPOVERFLOW = 'e-overflow-hide';\nvar CLS_TBARBTN = 'e-tbar-btn';\nvar CLS_TBARNAV = 'e-hor-nav';\nvar CLS_TBARSCRLNAV = 'e-scroll-nav';\nvar CLS_TBARRIGHT = 'e-toolbar-right';\nvar CLS_TBARLEFT = 'e-toolbar-left';\nvar CLS_TBARCENTER = 'e-toolbar-center';\nvar CLS_TBARPOS = 'e-tbar-pos';\nvar CLS_HSCROLLCNT = 'e-hscroll-content';\nvar CLS_VSCROLLCNT = 'e-vscroll-content';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_POPUPNAV = 'e-hor-nav';\nvar CLS_POPUPCLASS = 'e-toolbar-pop';\nvar CLS_POPUP = 'e-toolbar-popup';\nvar CLS_TBARBTNTEXT = 'e-tbar-btn-text';\nvar CLS_TBARNAVACT = 'e-nav-active';\nvar CLS_TBARIGNORE = 'e-ignore';\nvar CLS_POPPRI = 'e-popup-alone';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_MULTIROW = 'e-toolbar-multirow';\nvar CLS_MULTIROWPOS = 'e-multirow-pos';\nvar CLS_MULTIROW_SEPARATOR = 'e-multirow-separator';\nvar CLS_EXTENDABLE_SEPARATOR = 'e-extended-separator';\nvar CLS_EXTEANDABLE_TOOLBAR = 'e-extended-toolbar';\nvar CLS_EXTENDABLECLASS = 'e-toolbar-extended';\nvar CLS_EXTENDPOPUP = 'e-expended-nav';\nvar CLS_EXTENDEDPOPOPEN = 'e-tbar-extended';\n/**\n * An item object that is used to configure Toolbar commands.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], Item.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], Item.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], Item.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], Item.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], Item.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], Item.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], Item.prototype, \"align\", void 0);\n __decorate([\n Event()\n ], Item.prototype, \"click\", void 0);\n __decorate([\n Property(-1)\n ], Item.prototype, \"tabIndex\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n/**\n * The Toolbar control contains a group of commands that are aligned horizontally.\n * ```html\n *
\n * \n * ```\n */\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n /**\n * Initializes a new instance of the Toolbar class.\n *\n * @param {ToolbarModel} options - Specifies Toolbar model properties as options.\n * @param { string | HTMLElement} element - Specifies the element that is rendered as a Toolbar.\n */\n function Toolbar(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.resizeContext = _this.resize.bind(_this);\n _this.orientationChangeContext = _this.orientationChange.bind(_this);\n /**\n * Contains the keyboard configuration of the Toolbar.\n */\n _this.keyConfigs = {\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n popupOpen: 'enter',\n popupClose: 'escape',\n tab: 'tab',\n home: 'home',\n end: 'end'\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}.\n */\n Toolbar.prototype.destroy = function () {\n var _this = this;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n var btnItems = this.element.querySelectorAll('.e-control.e-btn');\n [].slice.call(btnItems).forEach(function (el) {\n if (!isNOU(el) && !isNOU(el.ej2_instances) && !isNOU(el.ej2_instances[0]) && !(el.ej2_instances[0].isDestroyed)) {\n el.ej2_instances[0].destroy();\n }\n });\n this.unwireEvents();\n this.tempId.forEach(function (ele) {\n if (!isNOU(_this.element.querySelector(ele))) {\n document.body.appendChild(_this.element.querySelector(ele)).style.display = 'none';\n }\n });\n this.destroyItems();\n while (this.element.lastElementChild) {\n this.element.removeChild(this.element.lastElementChild);\n }\n if (this.trgtEle) {\n this.element.appendChild(this.ctrlTem);\n this.trgtEle = null;\n this.ctrlTem = null;\n }\n if (this.popObj) {\n this.popObj.destroy();\n detach(this.popObj.element);\n }\n if (this.activeEle) {\n this.activeEle = null;\n }\n this.popObj = null;\n this.tbarAlign = null;\n this.tbarItemsCol = [];\n this.remove(this.element, 'e-toolpop');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(' '));\n }\n this.element.removeAttribute('style');\n ['aria-disabled', 'aria-orientation', 'role'].forEach(function (attrb) {\n return _this.element.removeAttribute(attrb);\n });\n _super.prototype.destroy.call(this);\n };\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.preRender = function () {\n var eventArgs = { enableCollision: this.enableCollision, scrollStep: this.scrollStep };\n this.trigger('beforeCreate', eventArgs);\n this.enableCollision = eventArgs.enableCollision;\n this.scrollStep = eventArgs.scrollStep;\n this.scrollModule = null;\n this.popObj = null;\n this.tempId = [];\n this.tbarItemsCol = this.items;\n this.isVertical = this.element.classList.contains(CLS_VERTICAL) ? true : false;\n this.isExtendedOpen = false;\n this.popupPriCount = 0;\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n };\n Toolbar.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resizeContext);\n window.addEventListener('orientationchange', this.orientationChangeContext);\n if (this.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n };\n Toolbar.prototype.wireKeyboardEvent = function () {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs\n });\n EventHandler.add(this.element, 'keydown', this.docKeyDown, this);\n this.updateTabIndex('0');\n };\n Toolbar.prototype.updateTabIndex = function (tabIndex) {\n var ele = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n if (!isNOU(ele) && !isNOU(ele.firstElementChild)) {\n var dataTabIndex = ele.firstElementChild.getAttribute('data-tabindex');\n if (dataTabIndex && dataTabIndex === '-1' && ele.firstElementChild.tagName !== 'INPUT') {\n ele.firstElementChild.setAttribute('tabindex', tabIndex);\n }\n }\n };\n Toolbar.prototype.unwireKeyboardEvent = function () {\n if (this.keyModule) {\n EventHandler.remove(this.element, 'keydown', this.docKeyDown);\n this.keyModule.destroy();\n this.keyModule = null;\n }\n };\n Toolbar.prototype.docKeyDown = function (e) {\n if (e.target.tagName === 'INPUT') {\n return;\n }\n var popCheck = !isNOU(this.popObj) && isVisible(this.popObj.element) && this.overflowMode !== 'Extended';\n if (e.keyCode === 9 && e.target.classList.contains('e-hor-nav') === true && popCheck) {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n var keyCheck = (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 35 || e.keyCode === 36);\n if (keyCheck) {\n e.preventDefault();\n }\n };\n Toolbar.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n this.destroyScroll();\n this.unwireKeyboardEvent();\n window.removeEventListener('resize', this.resizeContext);\n window.removeEventListener('orientationchange', this.orientationChangeContext);\n EventHandler.remove(document, 'scroll', this.docEvent);\n EventHandler.remove(document, 'click', this.docEvent);\n };\n Toolbar.prototype.clearProperty = function () {\n this.tbarEle = [];\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n };\n Toolbar.prototype.docEvent = function (e) {\n var popEle = closest(e.target, '.e-popup');\n if (this.popObj && isVisible(this.popObj.element) && !popEle && this.overflowMode === 'Popup') {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n };\n Toolbar.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n if (this.tbarAlign) {\n this.add(this.scrollModule.element, CLS_TBARPOS);\n }\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Toolbar.prototype.destroyItems = function () {\n if (this.element) {\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) { detach(el); });\n }\n if (this.tbarAlign) {\n var tbarItems = this.element.querySelector('.' + CLS_ITEMS);\n [].slice.call(tbarItems.children).forEach(function (el) {\n detach(el);\n });\n this.tbarAlign = false;\n this.remove(tbarItems, CLS_TBARPOS);\n }\n this.clearProperty();\n };\n Toolbar.prototype.destroyMode = function () {\n if (this.scrollModule) {\n this.remove(this.scrollModule.element, CLS_RTL);\n this.destroyScroll();\n }\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n this.remove(this.element, CLS_EXTEANDABLE_TOOLBAR);\n var tempEle = this.element.querySelector('.e-toolbar-multirow');\n if (tempEle) {\n this.remove(tempEle, CLS_MULTIROW);\n }\n if (this.popObj) {\n this.popupRefresh(this.popObj.element, true);\n }\n };\n Toolbar.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Toolbar.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n Toolbar.prototype.elementFocus = function (ele) {\n var fChild = ele.firstElementChild;\n if (fChild) {\n fChild.focus();\n this.activeEleSwitch(ele);\n }\n else {\n ele.focus();\n }\n };\n Toolbar.prototype.clstElement = function (tbrNavChk, trgt) {\n var clst;\n if (tbrNavChk && this.popObj && isVisible(this.popObj.element)) {\n clst = this.popObj.element.querySelector('.' + CLS_ITEM);\n }\n else if (this.element === trgt || tbrNavChk) {\n clst = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n }\n else {\n clst = closest(trgt, '.' + CLS_ITEM);\n }\n return clst;\n };\n Toolbar.prototype.keyHandling = function (clst, e, trgt, navChk, scrollChk) {\n var popObj = this.popObj;\n var rootEle = this.element;\n var popAnimate = { name: 'FadeOut', duration: 100 };\n var value = e.action === 'moveUp' ? 'previous' : 'next';\n var ele;\n var nodes;\n switch (e.action) {\n case 'moveRight':\n if (this.isVertical) {\n return;\n }\n if (rootEle === trgt) {\n this.elementFocus(clst);\n }\n else if (!navChk) {\n this.eleFocus(clst, 'next');\n }\n break;\n case 'moveLeft':\n if (this.isVertical) {\n return;\n }\n if (!navChk) {\n this.eleFocus(clst, 'previous');\n }\n break;\n case 'home':\n case 'end':\n if (clst) {\n var popupCheck = closest(clst, '.e-popup');\n var extendedPopup = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && extendedPopup && extendedPopup.classList.contains('e-popup-open')) {\n popupCheck = e.action === 'end' ? extendedPopup : null;\n }\n if (popupCheck) {\n if (isVisible(this.popObj.element)) {\n nodes = [].slice.call(popupCheck.children);\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n }\n else {\n nodes = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')');\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n if (ele) {\n this.elementFocus(ele);\n }\n }\n break;\n case 'moveUp':\n case 'moveDown':\n if (!this.isVertical) {\n if (popObj && closest(trgt, '.e-popup')) {\n var popEle = popObj.element;\n var popFrstEle = popEle.firstElementChild;\n if ((value === 'previous' && popFrstEle === clst)) {\n popEle.lastElementChild.firstChild.focus();\n }\n else if (value === 'next' && popEle.lastElementChild === clst) {\n popFrstEle.firstChild.focus();\n }\n else {\n this.eleFocus(clst, value);\n }\n }\n else if (e.action === 'moveDown' && popObj && isVisible(popObj.element)) {\n this.elementFocus(clst);\n }\n }\n else {\n if (e.action === 'moveUp') {\n this.eleFocus(clst, 'previous');\n }\n else {\n this.eleFocus(clst, 'next');\n }\n }\n break;\n case 'tab':\n if (!scrollChk && !navChk) {\n var ele_1 = clst.firstElementChild;\n if (rootEle === trgt) {\n if (this.activeEle) {\n this.activeEle.focus();\n }\n else {\n this.activeEleRemove(ele_1);\n ele_1.focus();\n }\n }\n }\n break;\n case 'popupClose':\n if (popObj && this.overflowMode !== 'Extended') {\n popObj.hide(popAnimate);\n }\n break;\n case 'popupOpen':\n if (!navChk) {\n return;\n }\n if (popObj && !isVisible(popObj.element)) {\n popObj.element.style.top = rootEle.offsetHeight + 'px';\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n else {\n popObj.hide(popAnimate);\n }\n break;\n }\n };\n Toolbar.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n if (trgt.tagName === 'INPUT' || trgt.tagName === 'TEXTAREA' || this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n e.preventDefault();\n var tbrNavChk = trgt.classList.contains(CLS_TBARNAV);\n var tbarScrollChk = trgt.classList.contains(CLS_TBARSCRLNAV);\n var clst = this.clstElement(tbrNavChk, trgt);\n if (clst || tbarScrollChk) {\n this.keyHandling(clst, e, trgt, tbrNavChk, tbarScrollChk);\n }\n };\n /**\n * Specifies the value to disable/enable the Toolbar component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Toolbar will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Toolbar.prototype.disable = function (value) {\n var rootEle = this.element;\n if (value) {\n rootEle.classList.add(CLS_DISABLE);\n }\n else {\n rootEle.classList.remove(CLS_DISABLE);\n }\n if (this.activeEle) {\n this.activeEle.setAttribute('tabindex', this.activeEle.getAttribute('data-tabindex'));\n }\n if (this.scrollModule) {\n this.scrollModule.disable(value);\n }\n if (this.popObj) {\n if (isVisible(this.popObj.element) && this.overflowMode !== 'Extended') {\n this.popObj.hide();\n }\n rootEle.querySelector('#' + rootEle.id + '_nav').setAttribute('tabindex', !value ? '0' : '-1');\n }\n };\n Toolbar.prototype.eleContains = function (el) {\n return el.classList.contains(CLS_SEPARATOR) || el.classList.contains(CLS_DISABLE) || el.getAttribute('disabled') || el.classList.contains(CLS_HIDDEN) || !isVisible(el) || !el.classList.contains(CLS_ITEM);\n };\n Toolbar.prototype.focusFirstVisibleEle = function (nodes) {\n var element;\n var index = 0;\n while (index < nodes.length) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index++;\n }\n return element;\n };\n Toolbar.prototype.focusLastVisibleEle = function (nodes) {\n var element;\n var index = nodes.length - 1;\n while (index >= 0) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index--;\n }\n return element;\n };\n Toolbar.prototype.eleFocus = function (closest, pos) {\n var sib = Object(closest)[pos + 'ElementSibling'];\n if (sib) {\n var skipEle = this.eleContains(sib);\n if (skipEle) {\n this.eleFocus(sib, pos);\n return;\n }\n this.elementFocus(sib);\n }\n else if (this.tbarAlign) {\n var elem = Object(closest.parentElement)[pos + 'ElementSibling'];\n if (!isNOU(elem) && elem.children.length === 0) {\n elem = Object(elem)[pos + 'ElementSibling'];\n }\n if (!isNOU(elem) && elem.children.length > 0) {\n if (pos === 'next') {\n var el = elem.querySelector('.' + CLS_ITEM);\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n el.firstElementChild.focus();\n this.activeEleSwitch(el);\n }\n }\n else {\n var el = elem.lastElementChild;\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n this.elementFocus(el);\n }\n }\n }\n }\n else if (!isNOU(closest)) {\n var tbrItems = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')' + ':not(.' + CLS_DISABLE + ')' + ':not(.' + CLS_HIDDEN + ')');\n if (pos === 'next' && tbrItems) {\n this.elementFocus(tbrItems[0]);\n }\n else if (pos === 'previous' && tbrItems) {\n this.elementFocus(tbrItems[tbrItems.length - 1]);\n }\n }\n };\n Toolbar.prototype.clickHandler = function (e) {\n var _this = this;\n var trgt = e.target;\n var ele = this.element;\n var isPopupElement = !isNOU(closest(trgt, '.' + CLS_POPUPCLASS));\n var clsList = trgt.classList;\n var popupNav = closest(trgt, ('.' + CLS_TBARNAV));\n if (!popupNav) {\n popupNav = trgt;\n }\n if (!ele.children[0].classList.contains('e-hscroll') && !ele.children[0].classList.contains('e-vscroll')\n && (clsList.contains(CLS_TBARNAV))) {\n clsList = trgt.querySelector('.e-icons').classList;\n }\n if (clsList.contains(CLS_POPUPICON) || clsList.contains(CLS_POPUPDOWN)) {\n this.popupClickHandler(ele, popupNav, CLS_RTL);\n }\n var itemObj;\n var clst = closest(e.target, '.' + CLS_ITEM);\n if ((isNOU(clst) || clst.classList.contains(CLS_DISABLE)) && !popupNav.classList.contains(CLS_TBARNAV)) {\n return;\n }\n if (clst) {\n var tempItem = this.items[this.tbarEle.indexOf(clst)];\n itemObj = tempItem;\n }\n var eventArgs = { originalEvent: e, item: itemObj };\n if (itemObj && !isNOU(itemObj.click)) {\n this.trigger('items[' + this.tbarEle.indexOf(clst) + '].click', eventArgs);\n }\n if (!eventArgs.cancel) {\n this.trigger('clicked', eventArgs, function (clickedArgs) {\n if (!isNOU(_this.popObj) && isPopupElement && !clickedArgs.cancel && _this.overflowMode === 'Popup' &&\n clickedArgs.item && clickedArgs.item.type !== 'Input') {\n _this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n });\n }\n };\n Toolbar.prototype.popupClickHandler = function (ele, popupNav, CLS_RTL) {\n var popObj = this.popObj;\n if (isVisible(popObj.element)) {\n popupNav.classList.remove(CLS_TBARNAVACT);\n popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n else {\n if (ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = true;\n popObj.position = { X: 'left', Y: 'top' };\n }\n if (popObj.offsetX === 0 && !ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = false;\n popObj.position = { X: 'right', Y: 'top' };\n }\n popObj.dataBind();\n popObj.refreshPosition();\n popObj.element.style.top = this.getElementOffsetY() + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '0px';\n }\n popupNav.classList.add(CLS_TBARNAVACT);\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.renderComplete();\n if (this.isReact && this.portals && this.portals.length > 0) {\n this.renderReactTemplates(function () {\n _this.refreshOverflow();\n });\n }\n };\n Toolbar.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n if (Browser.info.name !== 'msie' || this.height !== 'auto' || this.overflowMode === 'MultiRow') {\n setStyle(this.element, { 'height': height });\n }\n setStyle(this.element, { 'width': width });\n var ariaAttr = {\n 'role': 'toolbar', 'aria-disabled': 'false',\n 'aria-orientation': !this.isVertical ? 'horizontal' : 'vertical'\n };\n attributes(this.element, ariaAttr);\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Toolbar.prototype.renderControl = function () {\n var ele = this.element;\n this.trgtEle = (ele.children.length > 0) ? ele.querySelector('div') : null;\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n this.renderItems();\n this.renderLayout();\n };\n Toolbar.prototype.renderLayout = function () {\n this.renderOverflowMode();\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.popObj.element.childElementCount > 1 && this.checkPopupRefresh(this.element, this.popObj.element)) {\n this.popupRefresh(this.popObj.element, false);\n }\n this.separator();\n };\n Toolbar.prototype.itemsAlign = function (items, itemEleDom) {\n var innerItem;\n var innerPos;\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n for (var i = 0; i < items.length; i++) {\n innerItem = this.renderSubComponent(items[parseInt(i.toString(), 10)], i);\n if (this.tbarEle.indexOf(innerItem) === -1) {\n this.tbarEle.push(innerItem);\n }\n if (!this.tbarAlign) {\n this.tbarItemAlign(items[parseInt(i.toString(), 10)], itemEleDom, i);\n }\n innerPos = itemEleDom.querySelector('.e-toolbar-' + items[parseInt(i.toString(), 10)].align.toLowerCase());\n if (innerPos) {\n if (!(items[parseInt(i.toString(), 10)].showAlwaysInPopup && items[parseInt(i.toString(), 10)].overflow !== 'Show')) {\n this.tbarAlgEle[(items[parseInt(i.toString(), 10)].align + 's').toLowerCase()].push(innerItem);\n }\n innerPos.appendChild(innerItem);\n }\n else {\n itemEleDom.appendChild(innerItem);\n }\n }\n if (this.isReact) {\n var portals = 'portals';\n this.notify('render-react-toolbar-template', this[\"\" + portals]);\n this.renderReactTemplates();\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.changeOrientation = function () {\n var ele = this.element;\n if (this.isVertical) {\n ele.classList.remove(CLS_VERTICAL);\n this.isVertical = false;\n if (this.height === 'auto' || this.height === '100%') {\n ele.style.height = this.height;\n }\n ele.setAttribute('aria-orientation', 'horizontal');\n }\n else {\n ele.classList.add(CLS_VERTICAL);\n this.isVertical = true;\n ele.setAttribute('aria-orientation', 'vertical');\n setStyle(this.element, { 'height': formatUnit(this.height), 'width': formatUnit(this.width) });\n }\n this.destroyMode();\n this.refreshOverflow();\n };\n Toolbar.prototype.initScroll = function (element, innerItems) {\n if (!this.scrollModule && this.checkOverflow(element, innerItems[0])) {\n if (this.tbarAlign) {\n this.element.querySelector('.' + CLS_ITEMS + ' .' + CLS_TBARCENTER).removeAttribute('style');\n }\n if (this.isVertical) {\n this.scrollModule = new VScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n else {\n this.scrollModule = new HScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n if (this.cssClass) {\n addClass([innerItems[0]], this.cssClass.split(' '));\n }\n var scrollEle = this.scrollModule.element.querySelector('.' + CLS_HSCROLLBAR + ', .' + 'e-vscroll-bar');\n if (scrollEle) {\n scrollEle.removeAttribute('tabindex');\n }\n this.remove(this.scrollModule.element, CLS_TBARPOS);\n setStyle(this.element, { overflow: 'hidden' });\n }\n };\n Toolbar.prototype.itemWidthCal = function (items) {\n var _this = this;\n var width = 0;\n var style;\n [].slice.call(selectAll('.' + CLS_ITEM, items)).forEach(function (el) {\n if (isVisible(el)) {\n style = window.getComputedStyle(el);\n width += _this.isVertical ? el.offsetHeight : el.offsetWidth;\n width += parseFloat(_this.isVertical ? style.marginTop : style.marginRight);\n width += parseFloat(_this.isVertical ? style.marginBottom : style.marginLeft);\n }\n });\n return width;\n };\n Toolbar.prototype.getScrollCntEle = function (innerItem) {\n var trgClass = (this.isVertical) ? '.e-vscroll-content' : '.e-hscroll-content';\n return innerItem.querySelector(trgClass);\n };\n Toolbar.prototype.checkOverflow = function (element, innerItem) {\n if (isNOU(element) || isNOU(innerItem) || !isVisible(element)) {\n return false;\n }\n var eleWidth = this.isVertical ? element.offsetHeight : element.offsetWidth;\n var itemWidth = this.isVertical ? innerItem.offsetHeight : innerItem.offsetWidth;\n if (this.tbarAlign || this.scrollModule || (eleWidth === itemWidth)) {\n itemWidth = this.itemWidthCal(this.scrollModule ? this.getScrollCntEle(innerItem) : innerItem);\n }\n var popNav = element.querySelector('.' + CLS_TBARNAV);\n var scrollNav = element.querySelector('.' + CLS_TBARSCRLNAV);\n var navEleWidth = 0;\n if (popNav) {\n navEleWidth = this.isVertical ? popNav.offsetHeight : popNav.offsetWidth;\n }\n else if (scrollNav) {\n navEleWidth = this.isVertical ? (scrollNav.offsetHeight * (2)) : (scrollNav.offsetWidth * 2);\n }\n if (itemWidth > eleWidth - navEleWidth) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Refresh the whole Toolbar component without re-rendering.\n * - It is used to manually refresh the Toolbar overflow modes such as scrollable, popup, multi row, and extended.\n * - It will refresh the Toolbar component after loading items dynamically.\n *\n * @returns {void}.\n */\n Toolbar.prototype.refreshOverflow = function () {\n this.resize();\n };\n Toolbar.prototype.toolbarAlign = function (innerItems) {\n if (this.tbarAlign) {\n this.add(innerItems, CLS_TBARPOS);\n this.itemPositioning();\n }\n };\n Toolbar.prototype.renderOverflowMode = function () {\n var ele = this.element;\n var innerItems = ele.querySelector('.' + CLS_ITEMS);\n var priorityCheck = this.popupPriCount > 0;\n if (ele && ele.children.length > 0) {\n this.offsetWid = ele.offsetWidth;\n this.remove(this.element, 'e-toolpop');\n if (Browser.info.name === 'msie' && this.height === 'auto') {\n ele.style.height = '';\n }\n switch (this.overflowMode) {\n case 'Scrollable':\n if (isNOU(this.scrollModule)) {\n this.initScroll(ele, [].slice.call(ele.getElementsByClassName(CLS_ITEMS)));\n }\n break;\n case 'Popup':\n this.add(this.element, 'e-toolpop');\n if (this.tbarAlign) {\n this.removePositioning();\n }\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n break;\n case 'MultiRow':\n this.add(innerItems, CLS_MULTIROW);\n if (this.checkOverflow(ele, innerItems) && this.tbarAlign) {\n this.removePositioning();\n this.add(innerItems, CLS_MULTIROWPOS);\n }\n if (ele.style.overflow === 'hidden') {\n ele.style.overflow = '';\n }\n if (Browser.info.name === 'msie' || ele.style.height !== 'auto') {\n ele.style.height = 'auto';\n }\n break;\n case 'Extended':\n this.add(this.element, CLS_EXTEANDABLE_TOOLBAR);\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n }\n }\n };\n Toolbar.prototype.setOverflowAttributes = function (ele) {\n this.createPopupEle(ele, [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, ele)));\n var ariaAttr = {\n 'tabindex': '0', 'role': 'button', 'aria-haspopup': 'true',\n 'aria-label': 'overflow'\n };\n attributes(this.element.querySelector('.' + CLS_TBARNAV), ariaAttr);\n };\n Toolbar.prototype.separator = function () {\n var element = this.element;\n var eleItem = [].slice.call(element.querySelectorAll('.' + CLS_SEPARATOR));\n var multiVar = element.querySelector('.' + CLS_MULTIROW_SEPARATOR);\n var extendVar = element.querySelector('.' + CLS_EXTENDABLE_SEPARATOR);\n var eleInlineItem = this.overflowMode === 'MultiRow' ? multiVar : extendVar;\n if (eleInlineItem !== null) {\n if (this.overflowMode === 'MultiRow') {\n eleInlineItem.classList.remove(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleInlineItem.classList.remove(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n for (var i = 0; i <= eleItem.length - 1; i++) {\n if (eleItem[parseInt(i.toString(), 10)].offsetLeft < 30 && eleItem[parseInt(i.toString(), 10)].offsetLeft !== 0) {\n if (this.overflowMode === 'MultiRow') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n }\n };\n Toolbar.prototype.createPopupEle = function (ele, innerEle) {\n var innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var vertical = this.isVertical;\n if (!innerNav) {\n this.createPopupIcon(ele);\n }\n innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var innerNavDom = (vertical ? innerNav.offsetHeight : innerNav.offsetWidth);\n var eleWidth = ((vertical ? ele.offsetHeight : ele.offsetWidth) - (innerNavDom));\n this.element.classList.remove('e-rtl');\n setStyle(this.element, { direction: 'initial' });\n this.checkPriority(ele, innerEle, eleWidth, true);\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n this.element.style.removeProperty('direction');\n this.createPopup();\n };\n Toolbar.prototype.pushingPoppedEle = function (tbarObj, popupPri, ele, eleHeight, sepHeight) {\n var element = tbarObj.element;\n var poppedEle = [].slice.call(selectAll('.' + CLS_POPUP, element.querySelector('.' + CLS_ITEMS)));\n var nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n var nodeIndex = 0;\n var nodePri = 0;\n poppedEle.forEach(function (el, index) {\n nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n if (el.classList.contains(CLS_TBAROVERFLOW) && nodes.length > 0) {\n if (tbarObj.tbResize && nodes.length > index) {\n ele.insertBefore(el, nodes[parseInt(index.toString(), 10)]);\n ++nodePri;\n }\n else {\n ele.insertBefore(el, ele.children[nodes.length]);\n ++nodePri;\n }\n }\n else if (el.classList.contains(CLS_TBAROVERFLOW)) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (tbarObj.tbResize && el.classList.contains(CLS_POPOVERFLOW) && ele.children.length > 0 && nodes.length === 0) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (el.classList.contains(CLS_POPOVERFLOW)) {\n popupPri.push(el);\n }\n else if (tbarObj.tbResize) {\n ele.insertBefore(el, ele.childNodes[nodeIndex + nodePri]);\n ++nodeIndex;\n }\n else {\n ele.appendChild(el);\n }\n if (el.classList.contains(CLS_SEPARATOR)) {\n setStyle(el, { display: '', height: sepHeight + 'px' });\n }\n else {\n setStyle(el, { display: '', height: eleHeight + 'px' });\n }\n });\n popupPri.forEach(function (el) {\n ele.appendChild(el);\n });\n var tbarEle = selectAll('.' + CLS_ITEM, element.querySelector('.' + CLS_ITEMS));\n for (var i = tbarEle.length - 1; i >= 0; i--) {\n var tbarElement = tbarEle[parseInt(i.toString(), 10)];\n if (tbarElement.classList.contains(CLS_SEPARATOR) && this.overflowMode !== 'Extended') {\n setStyle(tbarElement, { display: 'none' });\n }\n else {\n break;\n }\n }\n };\n Toolbar.prototype.createPopup = function () {\n var element = this.element;\n var sepHeight;\n var sepItem;\n if (this.overflowMode === 'Extended') {\n sepItem = element.querySelector('.' + CLS_SEPARATOR);\n sepHeight =\n (element.style.height === 'auto' || element.style.height === '') ? null : (sepItem && sepItem.offsetHeight);\n }\n var eleItem = element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_POPUP + ')');\n var eleHeight = (element.style.height === 'auto' || element.style.height === '') ? null : (eleItem && eleItem.offsetHeight);\n var ele;\n var popupPri = [];\n if (select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element)) {\n ele = select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element);\n }\n else {\n var extendEle = this.createElement('div', {\n id: element.id + '_popup', className: CLS_POPUPCLASS + ' ' + CLS_EXTENDABLECLASS\n });\n var popupEle = this.createElement('div', { id: element.id + '_popup', className: CLS_POPUPCLASS });\n ele = this.overflowMode === 'Extended' ? extendEle : popupEle;\n }\n this.pushingPoppedEle(this, popupPri, ele, eleHeight, sepHeight);\n this.popupInit(element, ele);\n };\n Toolbar.prototype.getElementOffsetY = function () {\n return (this.overflowMode === 'Extended' && window.getComputedStyle(this.element).getPropertyValue('box-sizing') === 'border-box' ?\n this.element.clientHeight : this.element.offsetHeight);\n };\n Toolbar.prototype.popupInit = function (element, ele) {\n if (!this.popObj) {\n element.appendChild(ele);\n if (this.cssClass) {\n addClass([ele], this.cssClass.split(' '));\n }\n setStyle(this.element, { overflow: '' });\n var eleStyles = window.getComputedStyle(this.element);\n var popup = new Popup(null, {\n relateTo: this.element,\n offsetY: (this.isVertical) ? 0 : this.getElementOffsetY(),\n enableRtl: this.enableRtl,\n open: this.popupOpen.bind(this),\n close: this.popupClose.bind(this),\n collision: { Y: this.enableCollision ? 'flip' : 'none' },\n position: this.enableRtl ? { X: 'left', Y: 'top' } : { X: 'right', Y: 'top' }\n });\n if (this.overflowMode === 'Extended') {\n popup.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n popup.offsetX = 0;\n }\n popup.appendTo(ele);\n EventHandler.add(document, 'scroll', this.docEvent.bind(this));\n EventHandler.add(document, 'click ', this.docEvent.bind(this));\n popup.element.style.maxHeight = popup.element.offsetHeight + 'px';\n if (this.isVertical) {\n popup.element.style.visibility = 'hidden';\n }\n if (this.isExtendedOpen) {\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popupNav.firstElementChild, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.element.querySelector('.' + CLS_EXTENDABLECLASS).classList.add(CLS_POPUPOPEN);\n }\n else {\n popup.hide();\n }\n this.popObj = popup;\n }\n else {\n var popupEle = this.popObj.element;\n setStyle(popupEle, { maxHeight: '', display: 'block' });\n setStyle(popupEle, { maxHeight: popupEle.offsetHeight + 'px', display: '' });\n }\n };\n Toolbar.prototype.tbarPopupHandler = function (isOpen) {\n if (this.overflowMode === 'Extended') {\n if (isOpen) {\n this.add(this.element, CLS_EXTENDEDPOPOPEN);\n }\n else {\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupOpen = function (e) {\n var popObj = this.popObj;\n if (!this.isVertical) {\n popObj.offsetY = this.getElementOffsetY();\n popObj.dataBind();\n }\n var popupEle = this.popObj.element;\n var toolEle = this.popObj.element.parentElement;\n var popupNav = toolEle.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'true');\n setStyle(popObj.element, { height: 'auto', maxHeight: '' });\n popObj.element.style.maxHeight = popObj.element.offsetHeight + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '';\n }\n var popupElePos = popupEle.offsetTop + popupEle.offsetHeight + calculatePosition(toolEle).top;\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.tbarPopupHandler(true);\n var scrollVal = isNOU(window.scrollY) ? 0 : window.scrollY;\n if (!this.isVertical && ((window.innerHeight + scrollVal) < popupElePos) && (this.element.offsetTop < popupEle.offsetHeight)) {\n var overflowHeight = (popupEle.offsetHeight - ((popupElePos - window.innerHeight - scrollVal) + 5));\n popObj.height = overflowHeight + 'px';\n for (var i = 0; i <= popupEle.childElementCount; i++) {\n var ele = popupEle.children[parseInt(i.toString(), 10)];\n if (ele.offsetTop + ele.offsetHeight > overflowHeight) {\n overflowHeight = ele.offsetTop;\n break;\n }\n }\n setStyle(popObj.element, { maxHeight: overflowHeight + 'px' });\n }\n else if (this.isVertical) {\n var tbEleData = this.element.getBoundingClientRect();\n setStyle(popObj.element, { maxHeight: (tbEleData.top + this.element.offsetHeight) + 'px', bottom: 0, visibility: '' });\n }\n if (popObj) {\n var popupOffset = popupEle.getBoundingClientRect();\n if (popupOffset.right > document.documentElement.clientWidth && popupOffset.width > toolEle.getBoundingClientRect().width) {\n popObj.collision = { Y: 'none' };\n popObj.dataBind();\n }\n popObj.refreshPosition();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupClose = function (e) {\n var element = this.element;\n var popupNav = element.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'false');\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.remove(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPDOWN], [CLS_POPUPICON]);\n this.tbarPopupHandler(false);\n };\n Toolbar.prototype.checkPriority = function (ele, inEle, eleWidth, pre) {\n var popPriority = this.popupPriCount > 0;\n var len = inEle.length;\n var eleWid = eleWidth;\n var eleOffset;\n var checkoffset;\n var sepCheck = 0;\n var itemCount = 0;\n var itemPopCount = 0;\n var checkClass = function (ele, val) {\n var rVal = false;\n val.forEach(function (cls) {\n if (ele.classList.contains(cls)) {\n rVal = true;\n }\n });\n return rVal;\n };\n for (var i = len - 1; i >= 0; i--) {\n var mrgn = void 0;\n var compuStyle = window.getComputedStyle(inEle[parseInt(i.toString(), 10)]);\n if (this.isVertical) {\n mrgn = parseFloat((compuStyle).marginTop);\n mrgn += parseFloat((compuStyle).marginBottom);\n }\n else {\n mrgn = parseFloat((compuStyle).marginRight);\n mrgn += parseFloat((compuStyle).marginLeft);\n }\n var fstEleCheck = inEle[parseInt(i.toString(), 10)] === this.tbarEle[0];\n if (fstEleCheck) {\n this.tbarEleMrgn = mrgn;\n }\n eleOffset = this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight : inEle[parseInt(i.toString(), 10)].offsetWidth;\n var eleWid_1 = fstEleCheck ? (eleOffset + mrgn) : eleOffset;\n if (checkClass(inEle[parseInt(i.toString(), 10)], [CLS_POPPRI]) && popPriority) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n if (this.isVertical) {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetTop + inEle[parseInt(i.toString(), 10)].offsetHeight + mrgn) > eleWidth;\n }\n else {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetLeft + inEle[parseInt(i.toString(), 10)].offsetWidth + mrgn) > eleWidth;\n }\n if (checkoffset) {\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_SEPARATOR)) {\n if (this.overflowMode === 'Extended') {\n var sepEle = inEle[parseInt(i.toString(), 10)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n itemPopCount++;\n }\n itemCount++;\n }\n else if (this.overflowMode === 'Popup') {\n if (sepCheck > 0 && itemCount === itemPopCount) {\n var sepEle = inEle[i + itemCount + (sepCheck - 1)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n setStyle(sepEle, { display: 'none' });\n }\n }\n sepCheck++;\n itemCount = 0;\n itemPopCount = 0;\n }\n }\n else {\n itemCount++;\n }\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_TBAROVERFLOW) && pre) {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n else if (!checkClass(inEle[parseInt(i.toString(), 10)], [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n else {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n }\n }\n if (pre) {\n var popedEle = selectAll('.' + CLS_ITEM + ':not(.' + CLS_POPUP + ')', this.element);\n this.checkPriority(ele, popedEle, eleWid, false);\n }\n };\n Toolbar.prototype.createPopupIcon = function (element) {\n var id = element.id.concat('_nav');\n var className = 'e-' + element.id.concat('_nav ' + CLS_POPUPNAV);\n className = this.overflowMode === 'Extended' ? className + ' ' + CLS_EXTENDPOPUP : className;\n var nav = this.createElement('div', { id: id, className: className });\n if (Browser.info.name === 'msie' || Browser.info.name === 'edge') {\n nav.classList.add('e-ie-align');\n }\n var navItem = this.createElement('div', { className: CLS_POPUPDOWN + ' e-icons' });\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n nav.setAttribute('role', 'button');\n element.appendChild(nav);\n };\n Toolbar.prototype.tbarPriRef = function (inEle, indx, sepPri, el, des, elWid, wid, ig, eleStyles) {\n var ignoreCount = ig;\n var popEle = this.popObj.element;\n var query = '.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_TBAROVERFLOW + ')';\n var priEleCnt = selectAll('.' + CLS_POPUP + ':not(.' + CLS_TBAROVERFLOW + ')', popEle).length;\n var checkClass = function (ele, val) {\n return ele.classList.contains(val);\n };\n if (selectAll(query, inEle).length === 0) {\n var eleSep = inEle.children[indx - (indx - sepPri) - 1];\n var ignoreCheck = (!isNOU(eleSep) && checkClass(eleSep, CLS_TBARIGNORE));\n if ((!isNOU(eleSep) && checkClass(eleSep, CLS_SEPARATOR) && !isVisible(eleSep)) || ignoreCheck) {\n eleSep.style.display = 'unset';\n var eleSepWidth = eleSep.offsetWidth + (parseFloat(window.getComputedStyle(eleSep).marginRight) * 2);\n var prevSep = eleSep.previousElementSibling;\n if ((elWid + eleSepWidth) < wid || des) {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n if (!isNOU(prevSep)) {\n prevSep.style.display = '';\n }\n }\n else {\n setStyle(el, eleStyles);\n if (prevSep.classList.contains(CLS_SEPARATOR)) {\n prevSep.style.display = 'none';\n }\n }\n eleSep.style.display = '';\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n }\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - priEleCnt]);\n }\n };\n Toolbar.prototype.popupRefresh = function (popupEle, destroy) {\n var _this = this;\n var ele = this.element;\n var isVer = this.isVertical;\n var innerEle = ele.querySelector('.' + CLS_ITEMS);\n var popNav = ele.querySelector('.' + CLS_TBARNAV);\n if (isNOU(popNav)) {\n return;\n }\n innerEle.removeAttribute('style');\n popupEle.style.display = 'block';\n var dimension;\n if (isVer) {\n dimension = ele.offsetHeight - (popNav.offsetHeight + innerEle.offsetHeight);\n }\n else {\n dimension = ele.offsetWidth - (popNav.offsetWidth + innerEle.offsetWidth);\n }\n var popupEleWidth = 0;\n [].slice.call(popupEle.children).forEach(function (el) {\n popupEleWidth += _this.popupEleWidth(el);\n setStyle(el, { 'position': '' });\n });\n if ((dimension + (isVer ? popNav.offsetHeight : popNav.offsetWidth)) > (popupEleWidth) && this.popupPriCount === 0) {\n destroy = true;\n }\n this.popupEleRefresh(dimension, popupEle, destroy);\n popupEle.style.display = '';\n if (popupEle.children.length === 0 && popNav && this.popObj) {\n detach(popNav);\n popNav = null;\n this.popObj.destroy();\n detach(this.popObj.element);\n this.popObj = null;\n }\n };\n Toolbar.prototype.ignoreEleFetch = function (index, innerEle) {\n var ignoreEle = [].slice.call(innerEle.querySelectorAll('.' + CLS_TBARIGNORE));\n var ignoreInx = [];\n var count = 0;\n if (ignoreEle.length > 0) {\n ignoreEle.forEach(function (ele) {\n ignoreInx.push([].slice.call(innerEle.children).indexOf(ele));\n });\n }\n else {\n return 0;\n }\n ignoreInx.forEach(function (val) {\n if (val <= index) {\n count++;\n }\n });\n return count;\n };\n Toolbar.prototype.checkPopupRefresh = function (root, popEle) {\n popEle.style.display = 'block';\n var elWid = this.popupEleWidth(popEle.firstElementChild);\n popEle.firstElementChild.style.removeProperty('Position');\n var tbarWidth = root.offsetWidth - root.querySelector('.' + CLS_TBARNAV).offsetWidth;\n var tbarItemsWid = root.querySelector('.' + CLS_ITEMS).offsetWidth;\n popEle.style.removeProperty('display');\n if (tbarWidth > (elWid + tbarItemsWid)) {\n return true;\n }\n return false;\n };\n Toolbar.prototype.popupEleWidth = function (el) {\n el.style.position = 'absolute';\n var elWidth = this.isVertical ? el.offsetHeight : el.offsetWidth;\n var btnText = el.querySelector('.' + CLS_TBARBTNTEXT);\n if (el.classList.contains('e-tbtn-align') || el.classList.contains(CLS_TBARTEXT)) {\n var btn = el.children[0];\n if (!isNOU(btnText) && el.classList.contains(CLS_TBARTEXT)) {\n btnText.style.display = 'none';\n }\n else if (!isNOU(btnText) && el.classList.contains(CLS_POPUPTEXT)) {\n btnText.style.display = 'block';\n }\n btn.style.minWidth = '0%';\n elWidth = parseFloat(!this.isVertical ? el.style.minWidth : el.style.minHeight);\n btn.style.minWidth = '';\n btn.style.minHeight = '';\n if (!isNOU(btnText)) {\n btnText.style.display = '';\n }\n }\n return elWidth;\n };\n Toolbar.prototype.popupEleRefresh = function (width, popupEle, destroy) {\n var popPriority = this.popupPriCount > 0;\n var eleSplice = this.tbarEle;\n var priEleCnt;\n var index;\n var innerEle = this.element.querySelector('.' + CLS_ITEMS);\n var ignoreCount = 0;\n var _loop_1 = function (el) {\n if (el.classList.contains(CLS_POPPRI) && popPriority && !destroy) {\n return \"continue\";\n }\n var elWidth = this_1.popupEleWidth(el);\n if (el === this_1.tbarEle[0]) {\n elWidth += this_1.tbarEleMrgn;\n }\n el.style.position = '';\n if (elWidth < width || destroy) {\n var inlineStyles = { minWidth: el.style.minWidth, height: el.style.height, minHeight: el.style.minHeight };\n setStyle(el, { minWidth: '', height: '', minHeight: '' });\n if (!el.classList.contains(CLS_POPOVERFLOW)) {\n el.classList.remove(CLS_POPUP);\n }\n index = this_1.tbarEle.indexOf(el);\n if (this_1.tbarAlign) {\n var pos = this_1.items[parseInt(index.toString(), 10)].align;\n index = this_1.tbarAlgEle[(pos + 's').toLowerCase()].indexOf(el);\n eleSplice = this_1.tbarAlgEle[(pos + 's').toLowerCase()];\n innerEle = this_1.element.querySelector('.' + CLS_ITEMS + ' .' + 'e-toolbar-' + pos.toLowerCase());\n }\n var sepBeforePri_1 = 0;\n if (this_1.overflowMode !== 'Extended') {\n eleSplice.slice(0, index).forEach(function (el) {\n if (el.classList.contains(CLS_TBAROVERFLOW) || el.classList.contains(CLS_SEPARATOR)) {\n if (el.classList.contains(CLS_SEPARATOR)) {\n el.style.display = '';\n width -= el.offsetWidth;\n }\n sepBeforePri_1++;\n }\n });\n }\n ignoreCount = this_1.ignoreEleFetch(index, innerEle);\n if (el.classList.contains(CLS_TBAROVERFLOW)) {\n this_1.tbarPriRef(innerEle, index, sepBeforePri_1, el, destroy, elWidth, width, ignoreCount, inlineStyles);\n width -= el.offsetWidth;\n }\n else if (index === 0) {\n innerEle.insertBefore(el, innerEle.firstChild);\n width -= el.offsetWidth;\n }\n else {\n priEleCnt = selectAll('.' + CLS_TBAROVERFLOW, this_1.popObj.element).length;\n innerEle.insertBefore(el, innerEle.children[(index + ignoreCount) - priEleCnt]);\n width -= el.offsetWidth;\n }\n el.style.height = '';\n }\n else {\n return \"break\";\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = [].slice.call(popupEle.children); _i < _a.length; _i++) {\n var el = _a[_i];\n var state_1 = _loop_1(el);\n if (state_1 === \"break\")\n break;\n }\n var checkOverflow = this.checkOverflow(this.element, this.element.getElementsByClassName(CLS_ITEMS)[0]);\n if (checkOverflow && !destroy) {\n this.renderOverflowMode();\n }\n };\n Toolbar.prototype.removePositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n this.remove(item, CLS_TBARPOS);\n var innerItem = [].slice.call(item.childNodes);\n innerItem[1].removeAttribute('style');\n innerItem[2].removeAttribute('style');\n };\n Toolbar.prototype.refreshPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n this.add(item, CLS_TBARPOS);\n this.itemPositioning();\n };\n Toolbar.prototype.itemPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n var margin;\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n var innerItem;\n if (this.scrollModule) {\n var trgClass = (this.isVertical) ? CLS_VSCROLLCNT : CLS_HSCROLLCNT;\n innerItem = [].slice.call(item.querySelector('.' + trgClass).children);\n }\n else {\n innerItem = [].slice.call(item.childNodes);\n }\n if (this.isVertical) {\n margin = innerItem[0].offsetHeight + innerItem[2].offsetHeight;\n }\n else {\n margin = innerItem[0].offsetWidth + innerItem[2].offsetWidth;\n }\n var tbarWid = this.isVertical ? this.element.offsetHeight : this.element.offsetWidth;\n if (popupNav) {\n tbarWid -= (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth);\n var popWid = (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth) + 'px';\n innerItem[2].removeAttribute('style');\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[2].style.top = popWid;\n }\n else {\n innerItem[2].style.bottom = popWid;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[2].style.left = popWid;\n }\n else {\n innerItem[2].style.right = popWid;\n }\n }\n }\n if (tbarWid <= margin) {\n return;\n }\n var value = (((tbarWid - margin)) - (!this.isVertical ? innerItem[1].offsetWidth : innerItem[1].offsetHeight)) / 2;\n innerItem[1].removeAttribute('style');\n var mrgn = ((!this.isVertical ? innerItem[0].offsetWidth : innerItem[0].offsetHeight) + value) + 'px';\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[1].style.marginBottom = mrgn;\n }\n else {\n innerItem[1].style.marginTop = mrgn;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[1].style.marginRight = mrgn;\n }\n else {\n innerItem[1].style.marginLeft = mrgn;\n }\n }\n };\n Toolbar.prototype.tbarItemAlign = function (item, itemEle, pos) {\n var _this = this;\n if (item.showAlwaysInPopup && item.overflow !== 'Show') {\n return;\n }\n var alignDiv = [];\n alignDiv.push(this.createElement('div', { className: CLS_TBARLEFT }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARCENTER }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARRIGHT }));\n if (pos === 0 && item.align !== 'Left') {\n alignDiv.forEach(function (ele) {\n itemEle.appendChild(ele);\n });\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n else if (item.align !== 'Left') {\n var alignEle = itemEle.childNodes;\n var leftAlign_1 = alignDiv[0];\n [].slice.call(alignEle).forEach(function (el) {\n _this.tbarAlgEle.lefts.push(el);\n leftAlign_1.appendChild(el);\n });\n itemEle.appendChild(leftAlign_1);\n itemEle.appendChild(alignDiv[1]);\n itemEle.appendChild(alignDiv[2]);\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n };\n Toolbar.prototype.ctrlTemplate = function () {\n var _this = this;\n this.ctrlTem = this.trgtEle.cloneNode(true);\n this.add(this.trgtEle, CLS_ITEMS);\n this.tbarEle = [];\n var innerEle = [].slice.call(this.trgtEle.children);\n innerEle.forEach(function (ele) {\n if (ele.tagName === 'DIV') {\n _this.tbarEle.push(ele);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n _this.add(ele, CLS_ITEM);\n }\n });\n };\n Toolbar.prototype.renderItems = function () {\n var ele = this.element;\n var items = this.items;\n if (this.trgtEle != null) {\n this.ctrlTemplate();\n }\n else if (ele && items.length > 0) {\n var itemEleDom = void 0;\n if (ele && ele.children.length > 0) {\n itemEleDom = ele.querySelector('.' + CLS_ITEMS);\n }\n if (!itemEleDom) {\n itemEleDom = this.createElement('div', { className: CLS_ITEMS });\n }\n this.itemsAlign(items, itemEleDom);\n ele.appendChild(itemEleDom);\n }\n };\n Toolbar.prototype.setAttr = function (attr, element) {\n var key = Object.keys(attr);\n var keyVal;\n for (var i = 0; i < key.length; i++) {\n keyVal = key[parseInt(i.toString(), 10)];\n if (keyVal === 'class') {\n this.add(element, attr[\"\" + keyVal]);\n }\n else {\n element.setAttribute(keyVal, attr[\"\" + keyVal]);\n }\n }\n };\n /**\n * Enables or disables the specified Toolbar item.\n *\n * @param {number|HTMLElement|NodeList} items - DOM element or an array of items to be enabled or disabled.\n * @param {boolean} isEnable - Boolean value that determines whether the command should be enabled or disabled.\n * By default, `isEnable` is set to true.\n * @returns {void}.\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n var elements = items;\n var len = elements.length;\n var ele;\n if (isNOU(isEnable)) {\n isEnable = true;\n }\n var enable = function (isEnable, ele) {\n if (isEnable) {\n ele.classList.remove(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n }\n else {\n ele.classList.add(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'true');\n }\n }\n };\n if (!isNOU(len) && len >= 1) {\n for (var a = 0, element = [].slice.call(elements); a < len; a++) {\n var itemElement = element[parseInt(a.toString(), 10)];\n if (typeof (itemElement) === 'number') {\n ele = this.getElementByIndex(itemElement);\n if (isNOU(ele)) {\n return;\n }\n else {\n elements[parseInt(a.toString(), 10)] = ele;\n }\n }\n else {\n ele = itemElement;\n }\n enable(isEnable, ele);\n }\n if (isEnable) {\n removeClass(elements, CLS_DISABLE);\n }\n else {\n addClass(elements, CLS_DISABLE);\n }\n }\n else {\n if (typeof (elements) === 'number') {\n ele = this.getElementByIndex(elements);\n if (isNOU(ele)) {\n return;\n }\n }\n else {\n ele = items;\n }\n enable(isEnable, ele);\n }\n };\n Toolbar.prototype.getElementByIndex = function (index) {\n if (this.tbarEle[parseInt(index.toString(), 10)]) {\n return this.tbarEle[parseInt(index.toString(), 10)];\n }\n return null;\n };\n /**\n * Adds new items to the Toolbar that accepts an array as Toolbar items.\n *\n * @param {ItemModel[]} items - DOM element or an array of items to be added to the Toolbar.\n * @param {number} index - Number value that determines where the command is to be added. By default, index is 0.\n * @returns {void}.\n */\n Toolbar.prototype.addItems = function (items, index) {\n var innerItems;\n this.extendedOpen();\n var itemsDiv = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(itemsDiv)) {\n this.itemsRerender(items);\n return;\n }\n var innerEle;\n var itemAgn = 'Left';\n if (isNOU(index)) {\n index = 0;\n }\n items.forEach(function (e) {\n if (!isNOU(e.align) && e.align !== 'Left' && itemAgn === 'Left') {\n itemAgn = e.align;\n }\n });\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n if (isNOU(item.type)) {\n item.type = 'Button';\n }\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n item.align = itemAgn;\n innerEle = this.renderSubComponent(item, index);\n if (this.tbarEle.length >= index && innerItems.length >= 0) {\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var algIndex = item.align[0] === 'L' ? 0 : item.align[0] === 'C' ? 1 : 2;\n var ele = void 0;\n if (!this.tbarAlign && itemAgn !== 'Left') {\n this.tbarItemAlign(item, itemsDiv, 1);\n this.tbarAlign = true;\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.appendChild(innerEle);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].push(innerEle);\n this.refreshPositioning();\n }\n else if (this.tbarAlign) {\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.insertBefore(innerEle, ele.children[parseInt(index.toString(), 10)]);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].splice(index, 0, innerEle);\n this.refreshPositioning();\n }\n else if (innerItems.length === 0) {\n innerItems = selectAll('.' + CLS_ITEMS, this.element);\n innerItems[0].appendChild(innerEle);\n }\n else {\n innerItems[0].parentNode.insertBefore(innerEle, innerItems[parseInt(index.toString(), 10)]);\n }\n this.items.splice(index, 0, item);\n if (item.template) {\n this.tbarEle.splice(this.tbarEle.length - 1, 1);\n }\n this.tbarEle.splice(index, 0, innerEle);\n index++;\n this.offsetWid = itemsDiv.offsetWidth;\n }\n }\n itemsDiv.style.width = '';\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Removes the items from the Toolbar. Acceptable arguments are index of item/HTMLElement/node list.\n *\n * @param {number|HTMLElement|NodeList|HTMLElement[]} args\n * Index or DOM element or an Array of item which is to be removed from the Toolbar.\n * @returns {void}.\n */\n Toolbar.prototype.removeItems = function (args) {\n var elements = args;\n var index;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (typeof (elements) === 'number') {\n index = parseInt(args.toString(), 10);\n this.removeItemByIndex(index, innerItems);\n }\n else {\n if (elements && elements.length > 1) {\n for (var _i = 0, _a = [].slice.call(elements); _i < _a.length; _i++) {\n var ele = _a[_i];\n index = this.tbarEle.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n }\n }\n else {\n var ele = (elements && elements.length && elements.length === 1) ? elements[0] : args;\n index = innerItems.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n }\n }\n this.resize();\n };\n Toolbar.prototype.removeItemByIndex = function (index, innerItems) {\n if (this.tbarEle[parseInt(index.toString(), 10)] && innerItems[parseInt(index.toString(), 10)]) {\n var eleIdx = this.tbarEle.indexOf(innerItems[parseInt(index.toString(), 10)]);\n if (this.tbarAlign) {\n var indexAgn = this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].indexOf(this.tbarEle[parseInt(eleIdx.toString(), 10)]);\n this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].splice(parseInt(indexAgn.toString(), 10), 1);\n }\n if (this.isReact) {\n this.clearToolbarTemplate(innerItems[parseInt(index.toString(), 10)]);\n }\n var btnItem = innerItems[parseInt(index.toString(), 10)].querySelector('.e-control.e-btn');\n if (!isNOU(btnItem) && !isNOU(btnItem.ej2_instances[0]) && !(btnItem.ej2_instances[0].isDestroyed)) {\n btnItem.ej2_instances[0].destroy();\n }\n detach(innerItems[parseInt(index.toString(), 10)]);\n this.items.splice(eleIdx, 1);\n this.tbarEle.splice(eleIdx, 1);\n }\n };\n Toolbar.prototype.templateRender = function (templateProp, innerEle, item, index) {\n var itemType = item.type;\n var eleObj = templateProp;\n var isComponent;\n if (typeof (templateProp) === 'object') {\n isComponent = typeof (eleObj.appendTo) === 'function';\n }\n if (typeof (templateProp) === 'string' || !isComponent) {\n var templateFn = void 0;\n var val = templateProp;\n var regEx = new RegExp(/<(?=.*? .*?\\/ ?>|br|hr|input|!--|wbr)[a-z]+.*?>|<([a-z]+).*?<\\/\\1>/i);\n val = (typeof (templateProp) === 'string') ? templateProp.trim() : templateProp;\n try {\n if (typeof (templateProp) === 'object' && !isNOU(templateProp.tagName)) {\n innerEle.appendChild(templateProp);\n }\n else if (typeof (templateProp) === 'string' && regEx.test(val)) {\n innerEle.innerHTML = val;\n }\n else if (document.querySelectorAll(val).length) {\n var ele = document.querySelector(val);\n var tempStr = ele.outerHTML.trim();\n innerEle.appendChild(ele);\n ele.style.display = '';\n if (!isNOU(tempStr)) {\n this.tempId.push(val);\n }\n }\n else {\n templateFn = templateCompiler(val);\n }\n }\n catch (e) {\n templateFn = templateCompiler(val);\n }\n var tempArray = void 0;\n if (!isNOU(templateFn)) {\n var toolbarTemplateID = this.element.id + index + '_template';\n tempArray = templateFn({}, this, 'template', toolbarTemplateID, this.isStringTemplate, undefined, undefined, this.root);\n }\n if (!isNOU(tempArray) && tempArray.length > 0) {\n [].slice.call(tempArray).forEach(function (ele) {\n if (!isNOU(ele.tagName)) {\n ele.style.display = '';\n }\n innerEle.appendChild(ele);\n });\n }\n }\n else if (itemType === 'Input') {\n var ele = this.createElement('input');\n if (item.id) {\n ele.id = item.id;\n }\n else {\n ele.id = getUniqueID('tbr-ipt');\n }\n innerEle.appendChild(ele);\n eleObj.appendTo(ele);\n }\n this.add(innerEle, CLS_TEMPLATE);\n var firstChild = innerEle.firstElementChild;\n if (!isNOU(firstChild)) {\n firstChild.setAttribute('tabindex', isNOU(firstChild.getAttribute(\"tabIndex\")) ? '-1' : this.getDataTabindex(firstChild));\n firstChild.setAttribute('data-tabindex', isNOU(firstChild.getAttribute(\"tabIndex\")) ? '-1' : this.getDataTabindex(firstChild));\n }\n this.tbarEle.push(innerEle);\n };\n Toolbar.prototype.buttonRendering = function (item, innerEle) {\n var dom = this.createElement('button', { className: CLS_TBARBTN });\n dom.setAttribute('type', 'button');\n var textStr = item.text;\n var iconCss;\n var iconPos;\n if (item.id) {\n dom.id = item.id;\n }\n else {\n dom.id = getUniqueID('e-tbr-btn');\n }\n var btnTxt = this.createElement('span', { className: 'e-tbar-btn-text' });\n if (textStr) {\n btnTxt.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(textStr) : textStr;\n dom.appendChild(btnTxt);\n dom.classList.add('e-tbtn-txt');\n }\n else {\n this.add(innerEle, 'e-tbtn-align');\n }\n if (item.prefixIcon || item.suffixIcon) {\n if ((item.prefixIcon && item.suffixIcon) || item.prefixIcon) {\n iconCss = item.prefixIcon + ' e-icons';\n iconPos = 'Left';\n }\n else {\n iconCss = item.suffixIcon + ' e-icons';\n iconPos = 'Right';\n }\n }\n var btnObj = new Button({ iconCss: iconCss, iconPosition: iconPos });\n btnObj.createElement = this.createElement;\n btnObj.appendTo(dom);\n if (item.width) {\n setStyle(dom, { 'width': formatUnit(item.width) });\n }\n return dom;\n };\n Toolbar.prototype.renderSubComponent = function (item, index) {\n var dom;\n var innerEle = this.createElement('div', { className: CLS_ITEM });\n var tempDom = this.createElement('div', {\n innerHTML: this.enableHtmlSanitizer && !isNOU(item.tooltipText) ?\n SanitizeHtmlHelper.sanitize(item.tooltipText) : item.tooltipText\n });\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n if (item.htmlAttributes) {\n this.setAttr(item.htmlAttributes, innerEle);\n }\n if (item.tooltipText) {\n innerEle.setAttribute('title', tempDom.textContent);\n }\n if (item.cssClass) {\n innerEle.className = innerEle.className + ' ' + item.cssClass;\n }\n if (item.template) {\n this.templateRender(item.template, innerEle, item, index);\n }\n else {\n switch (item.type) {\n case 'Button':\n dom = this.buttonRendering(item, innerEle);\n dom.setAttribute('tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('data-tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('aria-label', (item.text || item.tooltipText));\n dom.setAttribute('aria-disabled', 'false');\n innerEle.appendChild(dom);\n innerEle.addEventListener('click', this.itemClick.bind(this));\n break;\n case 'Separator':\n this.add(innerEle, CLS_SEPARATOR);\n break;\n }\n }\n if (item.showTextOn) {\n var sTxt = item.showTextOn;\n if (sTxt === 'Toolbar') {\n this.add(innerEle, CLS_POPUPTEXT);\n this.add(innerEle, 'e-tbtn-align');\n }\n else if (sTxt === 'Overflow') {\n this.add(innerEle, CLS_TBARTEXT);\n }\n }\n if (item.overflow) {\n var overflow = item.overflow;\n if (overflow === 'Show') {\n this.add(innerEle, CLS_TBAROVERFLOW);\n }\n else if (overflow === 'Hide') {\n if (!innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPOVERFLOW);\n }\n }\n }\n if (item.overflow !== 'Show' && item.showAlwaysInPopup && !innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPPRI);\n this.popupPriCount++;\n }\n if (item.disabled) {\n this.add(innerEle, CLS_DISABLE);\n }\n if (item.visible === false) {\n this.add(innerEle, CLS_HIDDEN);\n }\n return innerEle;\n };\n Toolbar.prototype.getDataTabindex = function (ele) {\n return isNOU(ele.getAttribute('data-tabindex')) ? '-1' : ele.getAttribute('data-tabindex');\n };\n Toolbar.prototype.itemClick = function (e) {\n this.activeEleSwitch(e.currentTarget);\n };\n Toolbar.prototype.activeEleSwitch = function (ele) {\n this.activeEleRemove(ele.firstElementChild);\n this.activeEle.focus();\n };\n Toolbar.prototype.activeEleRemove = function (curEle) {\n if (!isNOU(this.activeEle)) {\n this.activeEle.setAttribute('tabindex', this.getDataTabindex(this.activeEle));\n }\n this.activeEle = curEle;\n if (this.getDataTabindex(this.activeEle) === '-1') {\n if (isNOU(this.trgtEle) && !curEle.parentElement.classList.contains(CLS_TEMPLATE)) {\n this.updateTabIndex('-1');\n curEle.removeAttribute('tabindex');\n }\n else {\n var tabIndex = parseInt(this.getDataTabindex(this.activeEle)) + 1;\n this.activeEle.setAttribute('tabindex', tabIndex.toString());\n }\n }\n };\n Toolbar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - Returns the module name as string.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.itemsRerender = function (newProp) {\n this.items = this.tbarItemsCol;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n this.destroyMode();\n this.destroyItems();\n this.items = newProp;\n this.tbarItemsCol = this.items;\n this.renderItems();\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Toolbar.prototype.resize = function () {\n var ele = this.element;\n this.tbResize = true;\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.overflowMode === 'Popup') {\n this.popObj.hide();\n }\n var checkOverflow = this.checkOverflow(ele, ele.getElementsByClassName(CLS_ITEMS)[0]);\n if (!checkOverflow) {\n this.destroyScroll();\n var multirowele = ele.querySelector('.' + CLS_ITEMS);\n if (!isNOU(multirowele)) {\n this.remove(multirowele, CLS_MULTIROWPOS);\n if (this.tbarAlign) {\n this.add(multirowele, CLS_TBARPOS);\n }\n }\n }\n if (checkOverflow && this.scrollModule && (this.offsetWid === ele.offsetWidth)) {\n return;\n }\n if (this.offsetWid > ele.offsetWidth || checkOverflow) {\n this.renderOverflowMode();\n }\n if (this.popObj) {\n if (this.overflowMode === 'Extended') {\n var eleStyles = window.getComputedStyle(this.element);\n this.popObj.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n }\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.popupRefresh(this.popObj.element, false);\n if (this.tbarAlign) {\n this.refreshPositioning();\n }\n }\n if (this.element.querySelector('.' + CLS_HSCROLLBAR)) {\n this.scrollStep = this.element.querySelector('.' + CLS_HSCROLLBAR).offsetWidth;\n }\n this.offsetWid = ele.offsetWidth;\n this.tbResize = false;\n this.separator();\n };\n Toolbar.prototype.orientationChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.resize();\n }, 500);\n };\n Toolbar.prototype.extendedOpen = function () {\n var sib = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && sib) {\n this.isExtendedOpen = sib.classList.contains(CLS_POPUPOPEN);\n }\n };\n Toolbar.prototype.updateHideEleTabIndex = function (ele, isHidden, isElement, eleIndex, innerItems) {\n if (isElement) {\n eleIndex = innerItems.indexOf(ele);\n }\n var nextEle = innerItems[++eleIndex];\n while (nextEle) {\n var skipEle = this.eleContains(nextEle);\n if (!skipEle) {\n var dataTabIndex = nextEle.firstElementChild.getAttribute('data-tabindex');\n if (isHidden && dataTabIndex === '-1') {\n nextEle.firstElementChild.setAttribute('tabindex', '0');\n }\n else if (dataTabIndex !== nextEle.firstElementChild.getAttribute('tabindex')) {\n nextEle.firstElementChild.setAttribute('tabindex', dataTabIndex);\n }\n break;\n }\n nextEle = innerItems[++eleIndex];\n }\n };\n Toolbar.prototype.clearToolbarTemplate = function (templateEle) {\n if (this.registeredTemplate && this.registeredTemplate[\"\" + 'template']) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[\"\" + 'template'].length; index++) {\n var registeredItem = registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], [registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)]]);\n break;\n }\n }\n }\n else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[parseInt(index.toString(), 10)];\n var closestItem = closest(portalItem.containerInfo, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], index);\n break;\n }\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {ToolbarModel} newProp - It contains new value of the data.\n * @param {ToolbarModel} oldProp - It contains old value of the data.\n * @returns {void}\n * @private\n */\n Toolbar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var tEle = this.element;\n var wid = tEle.offsetWidth;\n this.extendedOpen();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProb = Object.keys(newProp.items);\n for (var i = 0; i < changedProb.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[parseInt(i.toString(), 10)], 10);\n var property = Object.keys(newProp.items[parseInt(index.toString(), 10)])[0];\n var newProperty = Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property];\n if (this.tbarAlign || property === 'align') {\n this.refresh();\n this.trigger('created');\n break;\n }\n var popupPriCheck = property === 'showAlwaysInPopup' && !newProperty;\n var booleanCheck = property === 'overflow' && this.popupPriCount !== 0;\n if ((popupPriCheck) || (this.items[parseInt(index.toString(), 10)].showAlwaysInPopup) && booleanCheck) {\n --this.popupPriCount;\n }\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var itemCol = [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, tEle));\n if (this.isReact && this.items[parseInt(index.toString(), 10)].template) {\n this.clearToolbarTemplate(itemCol[parseInt(index.toString(), 10)]);\n }\n detach(itemCol[parseInt(index.toString(), 10)]);\n this.tbarEle.splice(index, 1);\n this.addItems([this.items[parseInt(index.toString(), 10)]], index);\n this.items.splice(index, 1);\n if (this.items[parseInt(index.toString(), 10)].template) {\n this.tbarEle.splice(this.items.length, 1);\n }\n }\n }\n else {\n this.itemsRerender(newProp.items);\n }\n break;\n case 'width':\n setStyle(tEle, { 'width': formatUnit(newProp.width) });\n this.refreshOverflow();\n break;\n case 'height':\n setStyle(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'overflowMode':\n this.destroyMode();\n this.renderOverflowMode();\n if (this.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n this.refreshOverflow();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n else {\n this.remove(tEle, CLS_RTL);\n }\n if (!isNOU(this.scrollModule)) {\n if (newProp.enableRtl) {\n this.add(this.scrollModule.element, CLS_RTL);\n }\n else {\n this.remove(this.scrollModule.element, CLS_RTL);\n }\n }\n if (!isNOU(this.popObj)) {\n if (newProp.enableRtl) {\n this.add(this.popObj.element, CLS_RTL);\n }\n else {\n this.remove(this.popObj.element, CLS_RTL);\n }\n }\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n break;\n case 'scrollStep':\n if (this.scrollModule) {\n this.scrollModule.scrollStep = this.scrollStep;\n }\n break;\n case 'enableCollision':\n if (this.popObj) {\n this.popObj.collision = { Y: this.enableCollision ? 'flip' : 'none' };\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'allowKeyboard':\n this.unwireKeyboardEvent();\n if (newProp.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n break;\n }\n }\n };\n /**\n * Shows or hides the Toolbar item that is in the specified index.\n *\n * @param {number | HTMLElement} index - Index value of target item or DOM element of items to be hidden or shown.\n * @param {boolean} value - Based on this Boolean value, item will be hide (true) or show (false). By default, value is false.\n * @returns {void}.\n */\n Toolbar.prototype.hideItem = function (index, value) {\n var isElement = (typeof (index) === 'object') ? true : false;\n var eleIndex = index;\n var ele;\n if (!isElement && isNOU(eleIndex)) {\n return;\n }\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n ele = index;\n }\n else if (this.tbarEle[parseInt(eleIndex.toString(), 10)]) {\n var innerItems_1 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n ele = innerItems_1[parseInt(eleIndex.toString(), 10)];\n }\n if (ele) {\n if (value) {\n ele.classList.add(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(ele.firstElementChild.getAttribute('tabindex')) ||\n ele.firstElementChild.getAttribute('tabindex') !== '-1') {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n }\n else {\n ele.classList.remove(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n this.refreshOverflow();\n }\n };\n __decorate([\n Collection([], Item)\n ], Toolbar.prototype, \"items\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Toolbar.prototype, \"cssClass\", void 0);\n __decorate([\n Property('Scrollable')\n ], Toolbar.prototype, \"overflowMode\", void 0);\n __decorate([\n Property()\n ], Toolbar.prototype, \"scrollStep\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableCollision\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"clicked\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"beforeCreate\", void 0);\n Toolbar = __decorate([\n NotifyPropertyChanges\n ], Toolbar);\n return Toolbar;\n}(Component));\nexport { Toolbar };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-hscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_HSCROLLCON = 'e-hscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVRIGHTARROW = 'e-nav-right-arrow';\nvar CLS_NAVLEFTARROW = 'e-nav-left-arrow';\nvar CLS_HSCROLLNAV = 'e-scroll-nav';\nvar CLS_HSCROLLNAVRIGHT = 'e-scroll-right-nav';\nvar CLS_HSCROLLNAVLEFT = 'e-scroll-left-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_RIGHTOVERLAY = 'e-scroll-right-overlay';\nvar CLS_LEFTOVERLAY = 'e-scroll-left-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * HScroll module is introduces horizontal scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs horizontal scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
\n * \n * ```\n */\nvar HScroll = /** @class */ (function (_super) {\n __extends(HScroll, _super);\n /**\n * Initializes a new instance of the HScroll class.\n *\n * @param {HScrollModel} options - Specifies HScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which horizontal scrolling applies.\n */\n function HScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var element = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (element.id === '') {\n element.id = getUniqueID('hscroll');\n this.uniqueId = true;\n }\n element.style.display = 'block';\n if (this.enableRtl) {\n element.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the horizontal scroll rendering\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlay(this.element);\n }\n this.setScrollState();\n };\n HScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetWidth;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n HScroll.prototype.initialize = function () {\n var scrollEle = this.createElement('div', { className: CLS_HSCROLLCON });\n var scrollDiv = this.createElement('div', { className: CLS_HSCROLLBAR });\n scrollDiv.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollEle.appendChild(ele_1);\n }\n scrollDiv.appendChild(scrollEle);\n ele.appendChild(scrollDiv);\n scrollDiv.style.overflowX = 'hidden';\n this.scrollEle = scrollDiv;\n this.scrollItems = scrollEle;\n };\n HScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n HScroll.prototype.getModuleName = function () {\n return 'hScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n HScroll.prototype.destroy = function () {\n var ele = this.element;\n ele.style.display = '';\n ele.classList.remove(CLS_ROOT);\n ele.classList.remove(CLS_DEVICE);\n ele.classList.remove(CLS_RTL);\n var nav = selectAll('.e-' + ele.id + '_nav.' + CLS_HSCROLLNAV, ele);\n var overlay = selectAll('.' + CLS_OVERLAY, ele);\n [].slice.call(overlay).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n ele.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (nav.length > 0) {\n detach(nav[0]);\n if (!isNullOrUndefined(nav[1])) {\n detach(nav[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the HScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, HScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n HScroll.prototype.disable = function (value) {\n var navEles = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEles).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n HScroll.prototype.createOverlay = function (element) {\n var id = element.id.concat('_nav');\n var rightOverlayEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_RIGHTOVERLAY });\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightEle = this.createElement('div', { id: id.concat('_right'), className: clsRight });\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n rightEle.appendChild(navItem);\n var leftEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_LEFTOVERLAY });\n if (this.ieCheck) {\n rightEle.classList.add('e-ie-align');\n }\n element.appendChild(rightOverlayEle);\n element.appendChild(rightEle);\n element.insertBefore(leftEle, element.firstChild);\n this.eventBinding([rightEle]);\n };\n HScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightAttributes = { 'role': 'button', 'id': id.concat('_right'), 'aria-label': 'Scroll right' };\n var nav = this.createElement('div', { className: clsRight, attrs: rightAttributes });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsLeft = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVLEFT);\n var leftAttributes = { 'role': 'button', 'id': id.concat('_left'), 'aria-label': 'Scroll left' };\n var navEle = this.createElement('div', { className: clsLeft + ' ' + CLS_DISABLE, attrs: leftAttributes });\n navEle.setAttribute('aria-disabled', 'true');\n var navLeftItem = this.createElement('div', { className: CLS_NAVLEFTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navEle.appendChild(navLeftItem);\n nav.appendChild(navItem);\n element.appendChild(nav);\n element.insertBefore(navEle, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navEle.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navEle]);\n };\n HScroll.prototype.onKeyPress = function (e) {\n var _this = this;\n if (e.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, e.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n HScroll.prototype.onKeyUp = function (e) {\n if (e.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n e.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n HScroll.prototype.eventBinding = function (ele) {\n var _this = this;\n [].slice.call(ele).forEach(function (el) {\n new Touch(el, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n el.addEventListener('keydown', _this.onKeyPress.bind(_this));\n el.addEventListener('keyup', _this.onKeyUp.bind(_this));\n el.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n el.addEventListener('touchend', _this.repeatScroll.bind(_this));\n el.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(el, 'click', _this.clickEventHandler, _this);\n });\n };\n HScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n HScroll.prototype.tabHoldHandler = function (e) {\n var _this = this;\n var trgt = e.originalEvent.target;\n trgt = this.contains(trgt, CLS_HSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDis = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDis, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n HScroll.prototype.contains = function (ele, className) {\n return ele.classList.contains(className);\n };\n HScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var rootEle = this.element;\n var classList = trgt.classList;\n if (classList.contains(CLS_HSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (this.contains(rootEle, CLS_RTL) && this.browserCheck) {\n scrollDis = -scrollDis;\n }\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n if (classList.contains(CLS_NAVRIGHTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n else {\n if (classList.contains(CLS_NAVLEFTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n };\n HScroll.prototype.clickEventHandler = function (e) {\n this.eleScrolling(this.scrollStep, e.target, false);\n };\n HScroll.prototype.swipeHandler = function (e) {\n var swipeEle = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceX / (e.velocity * 10);\n }\n else {\n distance = e.distanceX / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Left') {\n swipeEle.scrollLeft += distance * step;\n }\n else if (e.swipeDirection === 'Right') {\n swipeEle.scrollLeft -= distance * step;\n }\n start -= 0.5;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollLeft += scrollVal;\n }\n else {\n this.scrollEle.scrollLeft -= scrollVal;\n }\n if (this.enableRtl && this.scrollEle.scrollLeft > 0) {\n this.scrollEle.scrollLeft = 0;\n }\n };\n HScroll.prototype.frameScrollRequest = function (scrollVal, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollVal, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollVal -= el.offsetWidth;\n });\n }\n var animate = function () {\n var scrollValue;\n var scrollStep;\n if (_this.contains(_this.element, CLS_RTL) && _this.browserCheck) {\n scrollValue = -scrollVal;\n scrollStep = -step;\n }\n else {\n scrollValue = scrollVal;\n scrollStep = step;\n }\n if (scrollValue < step) {\n window.cancelAnimationFrame(scrollStep);\n }\n else {\n _this.scrollUpdating(scrollStep, action);\n scrollVal -= scrollStep;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.touchHandler = function (e) {\n var ele = this.scrollEle;\n var distance = e.distanceX;\n if ((this.ieCheck) && this.contains(this.element, CLS_RTL)) {\n distance = -distance;\n }\n if (e.scrollDirection === 'Left') {\n ele.scrollLeft = ele.scrollLeft + distance;\n }\n else if (e.scrollDirection === 'Right') {\n ele.scrollLeft = ele.scrollLeft - distance;\n }\n };\n HScroll.prototype.arrowDisabling = function (addDisable, removeDisable) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisable) ? removeDisable : addDisable;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisable)) {\n classList(arrowIcon, [CLS_NAVRIGHTARROW], [CLS_NAVLEFTARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVLEFTARROW], [CLS_NAVRIGHTARROW]);\n }\n }\n else if (addDisable && removeDisable) {\n addDisable.classList.add(CLS_DISABLE);\n addDisable.setAttribute('aria-disabled', 'true');\n addDisable.removeAttribute('tabindex');\n removeDisable.classList.remove(CLS_DISABLE);\n removeDisable.setAttribute('aria-disabled', 'false');\n removeDisable.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n HScroll.prototype.scrollHandler = function (e) {\n var target = e.target;\n var width = target.offsetWidth;\n var rootEle = this.element;\n var navLeftEle = this.element.querySelector('.' + CLS_HSCROLLNAVLEFT);\n var navRightEle = this.element.querySelector('.' + CLS_HSCROLLNAVRIGHT);\n var leftOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n var rightOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n var scrollLeft = target.scrollLeft;\n if (scrollLeft <= 0) {\n scrollLeft = -scrollLeft;\n }\n if (this.isDevice) {\n if (this.enableRtl && !(this.browserCheck || this.ieCheck)) {\n leftOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n rightOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n }\n if (scrollLeft < OVERLAY_MAXWID) {\n leftOverlay.style.width = scrollLeft + 'px';\n }\n else {\n leftOverlay.style.width = '40px';\n }\n if ((target.scrollWidth - Math.ceil(width + scrollLeft)) < OVERLAY_MAXWID) {\n rightOverlay.style.width = (target.scrollWidth - Math.ceil(width + scrollLeft)) + 'px';\n }\n else {\n rightOverlay.style.width = '40px';\n }\n }\n if (scrollLeft === 0) {\n this.arrowDisabling(navLeftEle, navRightEle);\n }\n else if (Math.ceil(width + scrollLeft + .1) >= target.scrollWidth) {\n this.arrowDisabling(navRightEle, navLeftEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_HSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {HScrollModel} newProp - It contains the new value of data.\n * @param {HScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n HScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.element.classList.add(CLS_RTL) : this.element.classList.remove(CLS_RTL);\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], HScroll.prototype, \"scrollStep\", void 0);\n HScroll = __decorate([\n NotifyPropertyChanges\n ], HScroll);\n return HScroll;\n}(Component));\nexport { HScroll };\n","const dates = {\r\n addDays: function (date, days) {\r\n date.setDate(date.getDate() + days);\r\n return date;\r\n },\r\n\r\n getTradePeriodName: function (startDate, endDate) {\r\n if (Date.parse(startDate) >= Date.parse(endDate)) {\r\n throw new Error(\"'startDate' must be earlier than the 'endDate'. Please correct the dates.\");\r\n }\r\n\r\n startDate = new Date(startDate);\r\n endDate = new Date(endDate)\r\n\r\n var yearSuffix = startDate.getFullYear().ToString().Substring(2);\r\n var numOfDays = this.getDateDiffInDays(startDate, endDate);\r\n var tradeablePeriod = null;\r\n\r\n // potential M, Q, or CAL periods\r\n if (startDate.getFullYear() === endDate.getFullYear()) {\r\n // month\r\n if (numOfDays <= 31 && numOfDays >= 28) {\r\n startDate = this.addDays(startDate, 1);\r\n tradeablePeriod = startDate.toLocaleString('default', { month: 'short' }) + \"-\" + yearSuffix;\r\n }\r\n\r\n //quarter\r\n if (numOfDays <= 92 && numOfDays >= 90) {\r\n startDate = this.addDays(startDate, 1);\r\n\r\n if (this.getQuarter(startDate) === 1) {\r\n tradeablePeriod = \"Q1-\" + yearSuffix;\r\n } else if (this.getQuarter(startDate) === 2) {\r\n tradeablePeriod = \"Q2-\" + yearSuffix;\r\n } else if (this.getQuarter(startDate) === 3) {\r\n tradeablePeriod = \"Q3-\" + yearSuffix;\r\n } else {\r\n tradeablePeriod = \"Q4-\" + yearSuffix;\r\n }\r\n }\r\n\r\n // summer season\r\n if (numOfDays >= 182 && numOfDays <= 183) {\r\n startDate = this.addDays(startDate, 1);\r\n\r\n if (startDate.toLocaleString('default', { month: 'short' }) === \"Apr\") {\r\n tradeablePeriod = \"Sum-\" + yearSuffix;\r\n }\r\n }\r\n\r\n // calendar\r\n if (numOfDays >= 364 && numOfDays <= 366) {\r\n tradeablePeriod = \"Cal-\" + yearSuffix;\r\n }\r\n } else if (startDate.getFullYear() + 1 === endDate.getFullYear()) {\r\n if (numOfDays >= 182 && numOfDays <= 183) {\r\n startDate = this.addDays(startDate, 1);\r\n\r\n if (startDate.toLocaleString('default', { month: 'short' }) === \"Oct\") {\r\n tradeablePeriod = \"Win-\" + yearSuffix;\r\n }\r\n }\r\n }\r\n\r\n return tradeablePeriod;\r\n },\r\n\r\n getDateDiffInDays: function (startDate, endDate) {\r\n var result = Math.round(Math.abs((startDate - endDate) / (24 * 60 * 60 * 1000))) + 1;\r\n return result;\r\n },\r\n getBusinessDatesCount: function (startDate, endDate) {\r\n if (startDate == undefined || endDate == undefined)\r\n return 0;\r\n\r\n let count = 0;\r\n //set dates to have 0 hours,minutes... as otherwise for october it does the matching and due to daylight saving change it doesnt match the last day and we dont calculate it.\r\n startDate.setHours(0, 0, 0, 0);\r\n endDate.setHours(0, 0, 0, 0);\r\n\r\n const curDate = new Date(startDate.getTime());\r\n while (curDate <= endDate) {\r\n const dayOfWeek = curDate.getDay();\r\n if (dayOfWeek !== 0 && dayOfWeek !== 6) count++;\r\n curDate.setDate(curDate.getDate() + 1);\r\n }\r\n return count;\r\n },\r\n getQuarter: function (date) {\r\n date = new Date(date);\r\n\r\n return Math.floor((date.getMonth() + 3) / 3);\r\n }\r\n}\r\n\r\nexport default dates;","class RMErrorType {\r\n static recordDoesNotExist = new RMErrorType('recordDoesNotExist');\r\n static noVolumesForSelectedPeriod = new RMErrorType('noVolumesForSelectedPeriod');\r\n static noRicForSelectedStateUtilityProduct = new RMErrorType('noRicForSelectedStateUtilityProduct');\r\n static invalidLockedVolume = new RMErrorType('invalidLockedVolume');\r\n static invalidPrice = new RMErrorType('invalidPrice');\r\n static tradePeriodPassed = new RMErrorType('tradePeriodPassed');\r\n static default = new RMErrorType('default');\r\n\r\n constructor(name) {\r\n this.name = name;\r\n }\r\n\r\n toString() {\r\n return `RMErrorType.${this.name}`\r\n }\r\n}\r\n\r\nexport default RMErrorType;","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"tradeMainForm\"}},[_c('div',{staticClass:\"card-body\"},[_c('div',{staticClass:\"e-card\"},[_c('div',{staticClass:\"e-card-header\"},[_c('div',{staticClass:\"e-card-header-caption\"},[_c('h4',[_vm._v(_vm._s(_vm.title))])])]),_c('div',{staticClass:\"e-card-content\"})]),_c('br'),_c('div',{staticClass:\"e-card\"},[_vm._m(0),_c('div',{staticClass:\"e-card-content\"},[_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-12 d-flex justify-content-center input-group\",staticStyle:{\"display\":\"none!important\"},attrs:{\"id\":\"divRadioButtonsClientTradingGroup\"}},[_c('ejs-radiobutton',{attrs:{\"label\":\"Client\",\"id\":\"rbClient\",\"name\":\"default\",\"checked\":\"true\"},nativeOn:{\"click\":function($event){return _vm.tradeClientTradingGroupChanged(true)}}}),_c('ejs-radiobutton',{attrs:{\"label\":\"Trading Group\",\"id\":\"rbTreadingGroup\",\"name\":\"default\"},nativeOn:{\"click\":function($event){return _vm.tradeClientTradingGroupChanged(false)}}})],1)]),_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group required-input\"},[_c('ejs-dropdownlist',{ref:\"dplClients\",attrs:{\"id\":\"clients\",\"name\":\"clients\",\"dataSource\":_vm.clients,\"fields\":_vm.simpleDropdownFields,\"select\":_vm.onClientChange,\"placeholder\":\"Client\",\"width\":\"60%\",\"floatLabelType\":\"Always\",\"enabled\":_vm.clientsEnabled && !_vm.isEditing,\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true},model:{value:(_vm.selectedClientId),callback:function ($$v) {_vm.selectedClientId=$$v},expression:\"selectedClientId\"}})],1),_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-dropdownlist',{ref:\"dplTradingGroups\",attrs:{\"id\":\"tradingGroups\",\"name\":\"tradingGroups\",\"dataSource\":_vm.tradingGroups,\"enabled\":_vm.tradingGroupsEnabled && !_vm.isEditing,\"fields\":_vm.simpleDropdownFields,\"select\":_vm.onTradingGroupChange,\"placeholder\":\"Trading Group\",\"width\":\"60%\",\"floatLabelType\":\"Always\",\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true},model:{value:(_vm.selectedTradingGroupId),callback:function ($$v) {_vm.selectedTradingGroupId=$$v},expression:\"selectedTradingGroupId\"}})],1)]),_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group required-input\"},[_c('ejs-dropdownlist',{ref:\"dplStates\",attrs:{\"id\":\"states\",\"name\":\"states\",\"dataSource\":_vm.states,\"enabled\":_vm.statesEnabled && !_vm.isEditing,\"fields\":_vm.simpleDropdownFields,\"select\":_vm.onStateChange,\"placeholder\":\"Country\",\"width\":\"60%\",\"floatLabelType\":\"Always\",\"allowFiltering\":_vm.allowFiltering,\"actionComplete\":_vm.actionCompleteDropState,\"showClearButton\":true},model:{value:(_vm.selectedStateId),callback:function ($$v) {_vm.selectedStateId=$$v},expression:\"selectedStateId\"}})],1),_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group required-input\"},[_c('ejs-dropdownlist',{ref:\"dplUtilities\",attrs:{\"id\":\"utilities\",\"name\":\"utilities\",\"dataSource\":_vm.utilities,\"enabled\":_vm.utilitiesEnabled && !_vm.isEditing,\"fields\":{ text: 'utilityTypeName', value: 'utilityTypeId' },\"select\":_vm.onUtilityChange,\"placeholder\":\"Utility\",\"width\":\"60%\",\"floatLabelType\":\"Always\",\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true},model:{value:(_vm.selectedUtilityTypeId),callback:function ($$v) {_vm.selectedUtilityTypeId=$$v},expression:\"selectedUtilityTypeId\"}})],1)]),_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group required-input\"},[_c('ejs-dropdownlist',{ref:\"dplCompanies\",attrs:{\"id\":\"companies\",\"name\":\"companies\",\"dataSource\":_vm.companies,\"enabled\":_vm.companiesEnabled && !_vm.isEditing,\"fields\":_vm.simpleDropdownFields,\"select\":_vm.onCompanyChange,\"placeholder\":\"Company\",\"width\":\"60%\",\"floatLabelType\":\"Always\",\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true},model:{value:(_vm.selectedCompanyId),callback:function ($$v) {_vm.selectedCompanyId=$$v},expression:\"selectedCompanyId\"}})],1)]),_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group required-input\"},[_c('ejs-dropdownlist',{ref:\"dplContracts\",attrs:{\"id\":\"contracts\",\"name\":\"contracts\",\"dataSource\":_vm.contracts,\"enabled\":_vm.contractsEnabled && !_vm.isEditing,\"fields\":_vm.simpleDropdownFields,\"select\":_vm.onContractChange,\"placeholder\":\"Contract\",\"width\":\"60%\",\"floatLabelType\":\"Always\",\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true},model:{value:(_vm.selectedContractId),callback:function ($$v) {_vm.selectedContractId=$$v},expression:\"selectedContractId\"}})],1)])])]),_c('br'),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showTradeSection === true),expression:\"showTradeSection === true\"}],staticClass:\"e-card\"},[_vm._m(1),_c('div',{staticClass:\"e-card-content\"},[_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group required-input\"},[_c('ejs-dropdownlist',{ref:\"dplProducts\",attrs:{\"id\":\"products\",\"name\":\"products\",\"dataSource\":_vm.products,\"fields\":_vm.simpleDropdownFields,\"select\":_vm.onProductChange,\"placeholder\":\"Product\",\"width\":\"60%\",\"floatLabelType\":\"Always\",\"enabled\":!_vm.isEditing,\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true},model:{value:(_vm.selectedProductId),callback:function ($$v) {_vm.selectedProductId=$$v},expression:\"selectedProductId\"}})],1),(_vm.showPriceAreaSection)?_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-dropdownlist',{ref:\"dplpriceArea\",attrs:{\"id\":\"priceArea\",\"name\":\"priceArea\",\"dataSource\":_vm.priceAreas,\"fields\":_vm.simpleDropdownFields,\"select\":_vm.onPriceAreaChange,\"enabled\":!_vm.isEditing,\"placeholder\":\"Price Area\",\"width\":\"60%\",\"floatLabelType\":\"Always\",\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true},model:{value:(_vm.selectedPriceAreaId),callback:function ($$v) {_vm.selectedPriceAreaId=$$v},expression:\"selectedPriceAreaId\"}})],1):_vm._e(),(_vm.showPriceAreaTradePeriodSection)?_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group required-input\"},[_c('ejs-dropdownlist',{ref:\"dplTradePeriods\",attrs:{\"id\":\"tradePeriods\",\"name\":\"tradePeriods\",\"dataSource\":_vm.tradePeriods,\"fields\":_vm.simpleDropdownFields,\"select\":_vm.onTradablePeriodChange,\"placeholder\":\"Tradeable Period\",\"width\":\"60%\",\"floatLabelType\":\"Always\",\"enabled\":_vm.tradePeriodsEnabled,\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true},model:{value:(_vm.selectedTradeablePeriodId),callback:function ($$v) {_vm.selectedTradeablePeriodId=$$v},expression:\"selectedTradeablePeriodId\"}})],1):_vm._e()]),(_vm.showFormTradePeriodSection)?_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group required-input\"},[_c('ejs-dropdownlist',{ref:\"dplTradePeriods\",attrs:{\"id\":\"tradePeriods\",\"name\":\"tradePeriods\",\"dataSource\":_vm.tradePeriods,\"fields\":_vm.simpleDropdownFields,\"select\":_vm.onTradablePeriodChange,\"placeholder\":\"Tradeable Period\",\"width\":\"60%\",\"floatLabelType\":\"Always\",\"enabled\":_vm.tradePeriodsEnabled,\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true},model:{value:(_vm.selectedTradeablePeriodId),callback:function ($$v) {_vm.selectedTradeablePeriodId=$$v},expression:\"selectedTradeablePeriodId\"}})],1),_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"})]):_vm._e(),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showTradeSubSection === true),expression:\"showTradeSubSection === true\"}]},[_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-datepicker',{ref:\"dplPeriodStartDate\",attrs:{\"id\":\"periodStartDate\",\"name\":\"periodStartDate\",\"placeholder\":\"Start Date\",\"floatLabelType\":\"Always\",\"firstDayOfWeek\":1,\"format\":_vm.dateFormat,\"width\":\"60%\",\"enabled\":false},model:{value:(_vm.data.periodStartDate),callback:function ($$v) {_vm.$set(_vm.data, \"periodStartDate\", $$v)},expression:\"data.periodStartDate\"}})],1),_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-datepicker',{ref:\"dplPeriodEndDate\",attrs:{\"id\":\"periodEndDate\",\"placeholder\":\"End Date\",\"floatLabelType\":\"Always\",\"firstDayOfWeek\":1,\"format\":_vm.dateFormat,\"width\":\"60%\",\"enabled\":false},model:{value:(_vm.data.periodEndDate),callback:function ($$v) {_vm.$set(_vm.data, \"periodEndDate\", $$v)},expression:\"data.periodEndDate\"}})],1)]),_c('br'),_c('div',{staticClass:\"form-row\"},[_vm._m(2),_c('br'),_c('br'),_c('div',{staticClass:\"form-group col-md-12 d-flex justify-content-center input-group\"},[_c('ejs-radiobutton',{ref:\"simpleTradeEntityType\",attrs:{\"id\":\"simpleTradeEntityTypeRadio\",\"name\":\"tradeEntityType\",\"label\":\"Simple\",\"checked\":\"true\"},nativeOn:{\"click\":function($event){return _vm.tradeEntityTypeChanged(false)}}}),_c('ejs-radiobutton',{ref:\"complexTradeEntityType\",attrs:{\"id\":\"complexTradeEntityTypeRadio\",\"name\":\"tradeEntityType\",\"label\":\"Complex\",\"disabled\":true},nativeOn:{\"click\":function($event){return _vm.tradeEntityTypeChanged(true)}}})],1)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.showComplex),expression:\"!showComplex\"}],staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('div',{staticClass:\"form-row justify-content-center\",staticStyle:{\"width\":\"60%\"}},[_c('div',{staticClass:\"form-group col-md-9 input-group required-input\",staticStyle:{\"padding\":\"0\",\"padding-right\":\"10px\"}},[_c('ejs-numerictextbox',{ref:\"ntbLockedVolume\",attrs:{\"id\":\"lockedVolume\",\"name\":\"lockedVolume\",\"format\":\"n2\",\"showSpinButton\":false,\"step\":_vm.step,\"floatLabelType\":\"Always\",\"focus\":_vm.numericVolumeFocus,\"blur\":_vm.numericn2Blur,\"placeholder\":\"Locked Volume\",\"change\":_vm.setCalculatedLockedVolume(),\"enabled\":_vm.lockVolumeNtbEnabled},model:{value:(_vm.data.lockedVolume),callback:function ($$v) {_vm.$set(_vm.data, \"lockedVolume\", $$v)},expression:\"data.lockedVolume\"}})],1),_c('div',{staticClass:\"col-md-3\",staticStyle:{\"padding\":\"0\"}},[_c('ejs-textbox',{attrs:{\"id\":\"contractTradingUnit\",\"name\":\"contractTradingUnit\",\"floatLabelType\":\"Always\",\"value\":_vm.contractTradingUnit.name,\"placeholder\":\" \",\"enabled\":false}})],1)])]),_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('div',{staticClass:\"form-row justify-content-center\",staticStyle:{\"width\":\"60%\"}},[_c('div',{staticClass:\"form-group col-md-9 input-group required-input\",staticStyle:{\"padding\":\"0\",\"padding-right\":\"10px\"}},[_c('ejs-numerictextbox',{ref:\"ntbPrice\",attrs:{\"id\":\"price1\",\"name\":\"price\",\"format\":\"n3\",\"floatLabelType\":\"Always\",\"showSpinButton\":false,\"step\":_vm.step,\"focus\":_vm.numericPriceFocus,\"blur\":_vm.numericn3Blur,\"placeholder\":\"Price\",\"change\":_vm.setTradedValue,\"enabled\":_vm.allowEdit},model:{value:(_vm.data.price),callback:function ($$v) {_vm.$set(_vm.data, \"price\", $$v)},expression:\"data.price\"}})],1),_c('div',{staticClass:\"col-md-3\",staticStyle:{\"padding\":\"0\"}},[_c('ejs-textbox',{attrs:{\"id\":\"priceUnit\",\"name\":\"priceUnit\",\"floatLabelType\":\"Always\",\"value\":_vm.priceUnit,\"placeholder\":\" \",\"enabled\":false}})],1)])])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.showComplex),expression:\"!showComplex\"}],staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('div',{staticClass:\"form-row justify-content-center\",staticStyle:{\"width\":\"60%\"}},[_c('div',{staticClass:\"form-group col-md-9\",staticStyle:{\"padding\":\"0\",\"padding-right\":\"10px\"}},[_c('ejs-numerictextbox',{attrs:{\"id\":\"calculatedLockedVolume\",\"name\":\"calculatedLockedVolume\",\"showSpinButton\":false,\"step\":_vm.step,\"format\":\"n2\",\"floatLabelType\":\"Always\",\"value\":_vm.calculatedLockedVolume,\"placeholder\":\" \",\"enabled\":false}})],1),_c('div',{staticClass:\"col-md-3\",staticStyle:{\"padding\":\"0\"}},[_c('ejs-textbox',{attrs:{\"id\":\"tradingUnitName\",\"name\":\"tradingUnitName\",\"floatLabelType\":\"Always\",\"value\":_vm.tradingUnitName,\"placeholder\":\" \",\"enabled\":false}})],1)])])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.showComplex),expression:\"!showComplex\"}],staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('div',{staticClass:\"form-row justify-content-center\",staticStyle:{\"width\":\"60%\"}},[_c('div',{staticClass:\"form-group col-md-9\",staticStyle:{\"padding\":\"0\",\"padding-right\":\"10px\"}},[_c('ejs-numerictextbox',{attrs:{\"id\":\"tradedValue\",\"name\":\"tradedValue\",\"floatLabelType\":\"Always\",\"showSpinButton\":false,\"step\":_vm.step,\"format\":\"n3\",\"value\":_vm.tradedValue,\"placeholder\":\"Traded Value\",\"enabled\":false}})],1),_c('div',{staticClass:\"col-md-3\",staticStyle:{\"padding\":\"0\"}},[_c('ejs-textbox',{attrs:{\"id\":\"tradeCurrency\",\"name\":\"tradeCurrency\",\"floatLabelType\":\"Always\",\"value\":_vm.tradeCurrency,\"placeholder\":\" \",\"enabled\":false}})],1)])])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showComplex),expression:\"showComplex\"}],staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-dropdownlist',{ref:\"dplSplitPeriodInto\",attrs:{\"id\":\"splitPeriodInto\",\"name\":\"splitPeriodInto\",\"dataSource\":_vm.splitPeriodInto,\"fields\":_vm.simpleDropdownFields,\"select\":_vm.onSplitPeriodIntoChange,\"placeholder\":\"Split Period Into\",\"width\":\"60%\",\"floatLabelType\":\"Always\",\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true},model:{value:(_vm.data.splitPeriodIntoId),callback:function ($$v) {_vm.$set(_vm.data, \"splitPeriodIntoId\", $$v)},expression:\"data.splitPeriodIntoId\"}})],1)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showComplex),expression:\"showComplex\"}],staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('div',{staticClass:\"form-row justify-content-center\",staticStyle:{\"width\":\"60%\"}},[_c('div',{staticClass:\"form-group col-md-9 input-group required-input\",staticStyle:{\"padding\":\"0\",\"padding-right\":\"10px\"}},[_c('ejs-numerictextbox',{staticClass:\"lockedVolComplex e-control e-numerictextbox e-lib\",attrs:{\"id\":\"lockedVolume\",\"name\":\"lockedVolumeComplex\",\"showSpinButton\":false,\"step\":_vm.step,\"format\":\"n2\",\"floatLabelType\":\"Always\",\"change\":_vm.onLockedVolumeChange,\"focus\":_vm.numericVolumeFocus,\"blur\":_vm.numericn2BlurComplex,\"placeholder\":\"Locked Volume\",\"enabled\":_vm.allowEdit},model:{value:(_vm.data.lockedVolume),callback:function ($$v) {_vm.$set(_vm.data, \"lockedVolume\", $$v)},expression:\"data.lockedVolume\"}})],1),_c('div',{staticClass:\"col-md-3\",staticStyle:{\"padding\":\"0\"}},[_c('ejs-textbox',{attrs:{\"id\":\"contractTradingUnit\",\"name\":\"contractTradingUnit\",\"floatLabelType\":\"Always\",\"value\":_vm.contractTradingUnit.name,\"placeholder\":\" \",\"enabled\":false}})],1)])])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showComplex),expression:\"showComplex\"}],staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-12 d-flex justify-content-center input-group\",staticStyle:{\"padding-top\":\"30px\"}},[_c('ejs-grid',{ref:\"grid\",attrs:{\"width\":\"80%\",\"dataSource\":_vm.cgTrades,\"allowFiltering\":false,\"allowPaging\":false,\"allowResizing\":false,\"allowReordering\":false,\"allowSorting\":false,\"allowExcelExport\":false,\"allowTextWrap\":true,\"actionBegin\":_vm.actionBegin,\"editSettings\":_vm.editSettings}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"id\",\"headerText\":\"Id\",\"visible\":false}}),_c('e-column',{attrs:{\"field\":\"periodName\",\"headerText\":\"Tradeable Period\",\"isPrimaryKey\":true,\"allowEditing\":false}}),_c('e-column',{attrs:{\"field\":\"calculatedLockedVolume\",\"headerText\":\"Calculated Volume\",\"type\":\"number\",\"format\":\"N2\",\"edit\":_vm.numericParams,\"editType\":\"numericedit\",\"allowEditing\":false}}),_c('e-column',{attrs:{\"field\":\"tradingUnitName\",\"headerText\":\"Volume Unit\",\"allowEditing\":false}}),_c('e-column',{attrs:{\"field\":\"price\",\"headerText\":\"Price\",\"edit\":_vm.numericParams,\"format\":\"N3\",\"type\":\"number\",\"allowEditing\":true,\"editType\":\"numericedit\",\"validationRules\":_vm.cgPriceValidationRules}}),_c('e-column',{attrs:{\"field\":\"priceUnit\",\"headerText\":\"Trade Unit\",\"allowEditing\":false}}),_c('e-column',{attrs:{\"field\":\"volumeHedgedPercentage\",\"headerText\":\"Volume Hedged Percentage\",\"allowEditing\":false,\"visible\":false}}),_c('e-column',{attrs:{\"field\":\"periodStartDate\",\"headerText\":\"Period Start Date\",\"allowEditing\":false,\"visible\":false,\"type\":\"date\",\"format\":_vm.dateFormat}}),_c('e-column',{attrs:{\"field\":\"periodEndDate\",\"headerText\":\"Period End Date\",\"allowEditing\":false,\"visible\":false,\"type\":\"date\",\"format\":_vm.dateFormat}})],1),_c('e-aggregates',[_c('e-aggregate',[_c('e-columns',[_c('e-column',{attrs:{\"columnName\":\"calculatedLockedVolume\",\"type\":\"Custom\",\"customAggregate\":_vm.customSumFn,\"footerTemplate\":_vm.footerSum}})],1)],1),_c('e-aggregate',[_c('e-columns',[_c('e-column',{attrs:{\"columnName\":\"price\",\"type\":\"Custom\",\"customAggregate\":_vm.customAggregateFn,\"footerTemplate\":_vm.footerAverage}})],1)],1)],1)],1)],1)]),_c('div',{staticClass:\"form-row\",staticStyle:{\"padding-top\":\"16px\"}},[_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group required-input\"},[_c('ejs-textbox',{attrs:{\"id\":\"tradedBy\",\"name\":\"tradedBy\",\"width\":\"60%\",\"floatLabelType\":\"Always\",\"placeholder\":\"Traded By\",\"enabled\":_vm.tradedbyEnabled},model:{value:(_vm.data.tradedBy),callback:function ($$v) {_vm.$set(_vm.data, \"tradedBy\", $$v)},expression:\"data.tradedBy\"}})],1),_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-textbox',{attrs:{\"id\":\"confirmationReference\",\"name\":\"confirmationReference\",\"width\":\"60%\",\"floatLabelType\":\"Always\",\"placeholder\":\"Confirmation Reference\"},model:{value:(_vm.data.confirmationReference),callback:function ($$v) {_vm.$set(_vm.data, \"confirmationReference\", $$v)},expression:\"data.confirmationReference\"}})],1)]),_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group required-input\"},[_c('ejs-datepicker',{ref:\"tradeDate\",attrs:{\"id\":\"tradeDate\",\"name\":\"tradeDate\",\"placeholder\":\"Trade Date\",\"floatLabelType\":\"Always\",\"width\":\"60%\",\"firstDayOfWeek\":1,\"format\":_vm.dateFormat,\"change\":_vm.onTradeDateChange,\"max\":_vm.maxTradeDate,\"enabled\":_vm.tradeDateEnabled},model:{value:(_vm.data.tradeDate),callback:function ($$v) {_vm.$set(_vm.data, \"tradeDate\", $$v)},expression:\"data.tradeDate\"}})],1),_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-textbox',{attrs:{\"id\":\"supplementaryNote\",\"name\":\"supplementaryNote\",\"width\":\"60%\",\"floatLabelType\":\"Always\",\"placeholder\":\"Supplementary Note\"},model:{value:(_vm.data.supplementaryNote),callback:function ($$v) {_vm.$set(_vm.data, \"supplementaryNote\", $$v)},expression:\"data.supplementaryNote\"}})],1)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isHypothetical),expression:\"!isHypothetical\"}]},[_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-12 d-flex justify-content-center input-group\"},[_c('ejs-uploader',{ref:\"confirmationTradeFiles\",staticClass:\"ignore-validation\",attrs:{\"id\":\"confirmationTradeFiles\",\"name\":\"confirmationTradeFiles\",\"asyncSettings\":_vm.path,\"cssClass\":\"uploder-trade-file\",\"buttons\":{browse: 'Upload Confirmation Trade Files'},\"uploading\":_vm.addHeaders,\"success\":_vm.onUploadSuccess,\"enabled\":true}})],1)]),_c('div',{staticClass:\"form-group col-md-12 d-flex justify-content-center input-group\"},[_c('ejs-dropdownbutton',{ref:\"refDownloadTradeFile\",attrs:{\"name\":\"btnDownloadTradeFile\",\"disabled\":!_vm.isEditing,\"id\":\"btnDownloadTradeFile\",\"cssClass\":\"e-success alfa-light-purple\",\"items\":_vm.tradeFilesItmes,\"select\":_vm.onDownloadTradeFileClick}},[_vm._v(\"Download Trade file\")]),_c('ejs-dropdownbutton',{ref:\"refRemoveTradeFile\",attrs:{\"name\":\"btnRemoveTradeFile\",\"disabled\":false,\"id\":\"btnRemoveTradeFile\",\"cssClass\":\"e-primary\",\"items\":_vm.tradeFilesItmes,\"select\":_vm.onRemoveTradeFileClick}},[_vm._v(\"Remove Trade file\")])],1)])])])])]),_c('br'),_c('div',{staticClass:\"e-card\"},[_c('div',{staticClass:\"e-card-content\"},[_c('div',{staticClass:\"clientButtons\"},[_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-6\"}),_c('div',{staticClass:\"form-group col-md-6\",staticStyle:{\"text-align\":\"right\",\"margin-top\":\"20px\"}},[(_vm.canSave)?_c('ejs-button',{staticStyle:{\"margin-right\":\"10px\"},attrs:{\"id\":\"savebutton\",\"cssClass\":\"e-primary\"},nativeOn:{\"click\":function($event){return _vm.btnSaveClickTrade($event)}}},[_vm._v(\"Save\")]):_vm._e(),_c('ejs-button',{nativeOn:{\"click\":function($event){return _vm.btnBackClick($event)}}},[_vm._v(\"Back\")])],1)])])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"e-card-header\"},[_c('div',{staticClass:\"e-card-header-caption\"},[_c('h5',[_vm._v(\"Contract\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"e-card-header\"},[_c('div',{staticClass:\"e-card-header-caption\"},[_c('h5',[_vm._v(\"Trade\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"form-group col-md-12 d-flex justify-content-center input-group\"},[_c('label',{staticClass:\"e-float-text\",staticStyle:{\"text-align\":\"center\"}},[_vm._v(\"Trade Entity Type\")])])}]\n\nexport { render, staticRenderFns }","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TradeForm.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TradeForm.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TradeForm.vue?vue&type=template&id=b66e3fe8\"\nimport script from \"./TradeForm.vue?vue&type=script&lang=js\"\nexport * from \"./TradeForm.vue?vue&type=script&lang=js\"\nimport style0 from \"./TradeForm.vue?vue&type=style&index=0&id=b66e3fe8&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { print as printWindow, createElement, detach, classList, selectAll, extend } from '@syncfusion/ej2-base';\nimport { getPrintGridModel } from '../base/util';\nimport { Grid } from '../base/grid';\nimport * as events from '../base/constant';\nimport { Deferred } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n/**\n * @returns {string[]} returns the cloned property\n * @hidden\n */\nexport function getCloneProperties() {\n return ['aggregates', 'allowGrouping', 'allowFiltering', 'allowMultiSorting', 'allowReordering', 'allowSorting',\n 'allowTextWrap', 'childGrid', 'columns', 'currentViewData', 'dataSource', 'detailTemplate', 'enableAltRow',\n 'enableColumnVirtualization', 'filterSettings', 'gridLines',\n 'groupSettings', 'height', 'locale', 'pageSettings', 'printMode', 'query', 'queryString', 'enableRtl',\n 'rowHeight', 'rowTemplate', 'sortSettings', 'textWrapSettings', 'allowPaging', 'hierarchyPrintMode', 'searchSettings',\n 'queryCellInfo', 'beforeDataBound'];\n}\n/**\n *\n * The `Print` module is used to handle print action.\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for the Grid print module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {Scroll} scrollModule - specifies the scroll module\n * @hidden\n */\n function Print(parent, scrollModule) {\n this.isAsyncPrint = false;\n this.defered = new Deferred();\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.isContentReady(), this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.on(events.onEmpty, this.onEmpty.bind(this));\n this.parent.on(events.hierarchyPrint, this.hierarchyPrint, this);\n this.scrollModule = scrollModule;\n }\n Print.prototype.isContentReady = function () {\n var _this = this;\n if (this.isPrintGrid() && (this.parent.hierarchyPrintMode === 'None' || !this.parent.childGrid)) {\n return this.contentReady;\n }\n return function () {\n _this.defered.promise.then(function () {\n _this.contentReady();\n });\n if (_this.isPrintGrid()) {\n _this.hierarchyPrint();\n }\n };\n };\n Print.prototype.hierarchyPrint = function () {\n this.removeColGroup(this.parent);\n var printGridObj = window.printGridObj;\n if (printGridObj && !printGridObj.element.querySelector('[aria-busy=true')) {\n printGridObj.printModule.defered.resolve();\n }\n };\n /**\n * By default, prints all the Grid pages and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./printmode/).\n *\n * @returns {void}\n */\n Print.prototype.print = function () {\n this.renderPrintGrid();\n };\n Print.prototype.onEmpty = function () {\n if (this.isPrintGrid()) {\n this.contentReady();\n }\n };\n Print.prototype.actionBegin = function () {\n if (this.isPrintGrid()) {\n this.isAsyncPrint = true;\n }\n };\n Print.prototype.renderPrintGrid = function () {\n var gObj = this.parent;\n var element = createElement('div', {\n id: this.parent.element.id + '_print', className: gObj.element.className + ' e-print-grid'\n });\n element.classList.remove('e-gridhover');\n document.body.appendChild(element);\n var printGrid = new Grid(getPrintGridModel(gObj, gObj.hierarchyPrintMode));\n for (var i = 0; i < printGrid.columns.length; i++) {\n printGrid.columns[parseInt(i.toString(), 10)] = extend({}, printGrid.columns[parseInt(i.toString(), 10)]);\n if (gObj.isFrozenGrid() && !gObj.getFrozenColumns()) {\n printGrid.columns[parseInt(i.toString(), 10)].freeze = undefined;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.isAngular) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n printGrid.viewContainerRef = this.parent.viewContainerRef;\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n printGrid.load = function () { };\n printGrid.query = gObj.getQuery().clone();\n window.printGridObj = printGrid;\n printGrid.isPrinting = true;\n var modules = printGrid.getInjectedModules();\n var injectedModues = gObj.getInjectedModules();\n if (!modules || modules.length !== injectedModues.length) {\n printGrid.setInjectedModules(injectedModues);\n }\n gObj.notify(events.printGridInit, { element: element, printgrid: printGrid });\n this.parent.log('exporting_begin', this.getModuleName());\n printGrid.registeredTemplate = this.parent.registeredTemplate;\n printGrid.isVue = this.parent.isVue;\n printGrid.appendTo(element);\n if (!gObj.isVue3) {\n printGrid.trigger = gObj.trigger;\n }\n };\n Print.prototype.contentReady = function () {\n if (this.isPrintGrid()) {\n var gObj = this.parent;\n if (this.isAsyncPrint) {\n this.printGrid();\n return;\n }\n var args = {\n requestType: 'print',\n element: gObj.element,\n selectedRows: gObj.getContentTable().querySelectorAll('tr[aria-selected=\"true\"]'),\n cancel: false,\n hierarchyPrintMode: gObj.hierarchyPrintMode\n };\n if (!this.isAsyncPrint) {\n gObj.trigger(events.beforePrint, args);\n }\n if (args.cancel) {\n detach(gObj.element);\n return;\n }\n if (!this.isAsyncPrint) {\n this.printGrid();\n }\n }\n };\n Print.prototype.printGrid = function () {\n var gObj = this.parent;\n // Height adjustment on print grid\n if (gObj.height !== 'auto') { // if scroller enabled\n var cssProps = this.scrollModule.getCssProperties();\n var contentDiv = gObj.element.querySelector('.' + literals.content);\n var headerDiv = gObj.element.querySelector('.' + literals.gridHeader);\n contentDiv.style.height = 'auto';\n contentDiv.style.overflowY = 'auto';\n headerDiv.style[cssProps.padding] = '';\n headerDiv.firstElementChild.style[cssProps.border] = '';\n }\n // Grid alignment adjustment on grouping\n if (gObj.allowGrouping) {\n if (!gObj.groupSettings.columns.length) {\n gObj.element.querySelector('.e-groupdroparea').style.display = 'none';\n }\n else {\n this.removeColGroup(gObj);\n }\n }\n // hide horizontal scroll\n for (var _i = 0, _a = [].slice.call(gObj.element.getElementsByClassName(literals.content)); _i < _a.length; _i++) {\n var element = _a[_i];\n element.style.overflowX = 'hidden';\n }\n // Hide the waiting popup\n var waitingPop = [].slice.call(gObj.element.getElementsByClassName('e-spin-show'));\n for (var _b = 0, _c = [].slice.call(waitingPop); _b < _c.length; _b++) {\n var element = _c[_b];\n classList(element, ['e-spin-hide'], ['e-spin-show']);\n }\n this.printGridElement(gObj);\n gObj.isPrinting = false;\n delete window.printGridObj;\n var args = {\n element: gObj.element\n };\n gObj.trigger(events.printComplete, args);\n gObj.destroy();\n this.parent.log('exporting_complete', this.getModuleName());\n };\n Print.prototype.printGridElement = function (gObj) {\n classList(gObj.element, ['e-print-grid-layout'], ['e-print-grid']);\n if (gObj.isPrinting) {\n detach(gObj.element);\n }\n this.printWind = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWind.moveTo(0, 0);\n this.printWind.resizeTo(screen.availWidth, screen.availHeight);\n this.printWind = printWindow(gObj.element, this.printWind);\n };\n Print.prototype.removeColGroup = function (gObj) {\n var depth = gObj.groupSettings.columns.length;\n var element = gObj.element;\n var id = '#' + gObj.element.id;\n if (!depth) {\n return;\n }\n var groupCaption = selectAll('.e-groupcaption', element);\n var colSpan = groupCaption[depth - 1].getAttribute('colspan');\n for (var i = 0; i < groupCaption.length; i++) {\n groupCaption[parseInt(i.toString(), 10)].setAttribute('colspan', colSpan);\n }\n var colGroups = selectAll(\"colgroup\" + id + \"colgroup\", element);\n var contentColGroups = selectAll('.e-content colgroup', element);\n var footerColGroups = selectAll('.e-summarycontent colgroup', element);\n this.hideColGroup(colGroups, depth);\n this.hideColGroup(contentColGroups, depth);\n this.hideColGroup(footerColGroups, depth);\n };\n Print.prototype.hideColGroup = function (colGroups, depth) {\n for (var i = 0; i < colGroups.length; i++) {\n for (var j = 0; j < depth; j++) {\n colGroups[parseInt(i.toString(), 10)].children[parseInt(j.toString(), 10)].style.display = 'none';\n }\n }\n };\n /**\n * To destroy the print\n *\n * @returns {boolean} returns the isPrintGrid or not\n * @hidden\n */\n Print.prototype.isPrintGrid = function () {\n return this.parent.element.id.indexOf('_print') > 0 && this.parent.isPrinting;\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Print.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.contentReady, this.contentReady.bind(this));\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.off(events.onEmpty, this.onEmpty.bind(this));\n this.parent.off(events.hierarchyPrint, this.hierarchyPrint);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Print.prototype.getModuleName = function () {\n return 'print';\n };\n Print.printGridProp = getCloneProperties().concat([events.beforePrint, events.printComplete, events.load]);\n return Print;\n}());\nexport { Print };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { EventHandler, Property, Internationalization, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Animation, Browser } from '@syncfusion/ej2-base';\nimport { cldrData, L10n, Component, getDefaultDateObject, rippleEffect, Event } from '@syncfusion/ej2-base';\nimport { remove, addClass, detach, removeClass, closest, append, attributes, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, getValue, extend, getUniqueID, ChildProperty } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { ListBase } from '@syncfusion/ej2-lists';\nvar WRAPPERCLASS = 'e-time-wrapper';\nvar POPUP = 'e-popup';\nvar ERROR = 'e-error';\nvar POPUPDIMENSION = '240px';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar ROOT = 'e-timepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar CONTENT = 'e-content';\nvar SELECTED = 'e-active';\nvar HOVER = 'e-hover';\nvar NAVIGATION = 'e-navigation';\nvar DISABLED = 'e-disabled';\nvar ICONANIMATION = 'e-icon-anim';\nvar TIMEICON = 'e-time-icon';\nvar CLEARICON = 'e-clear-icon';\nvar FOCUS = 'e-input-focus';\nvar LISTCLASS = 'e-list-item';\nvar HALFPOSITION = 2;\nvar ANIMATIONDURATION = 50;\nvar OVERFLOW = 'e-time-overflow';\nvar OFFSETVAL = 4;\nvar EDITABLE = 'e-non-edit';\nvar wrapperAttributes = ['title', 'class', 'style'];\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var TimePickerBase;\n(function (TimePickerBase) {\n // eslint-disable-next-line max-len, jsdoc/require-jsdoc\n function createListItems(createdEl, min, max, globalize, timeFormat, step) {\n var formatOptions;\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: timeFormat, type: 'time' };\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatOptions = { format: timeFormat, type: 'time', calendar: 'islamic' };\n }\n var start;\n var interval = step * 60000;\n var listItems = [];\n var timeCollections = [];\n start = +(min.setMilliseconds(0));\n var end = +(max.setMilliseconds(0));\n while (end >= start) {\n timeCollections.push(start);\n listItems.push(globalize.formatDate(new Date(start), { format: timeFormat, type: 'time' }));\n start += interval;\n }\n var listTag = ListBase.createList(createdEl, listItems, null, true);\n return { collection: timeCollections, list: listTag };\n }\n TimePickerBase.createListItems = createListItems;\n})(TimePickerBase || (TimePickerBase = {}));\nvar TimeMaskPlaceholder = /** @class */ (function (_super) {\n __extends(TimeMaskPlaceholder, _super);\n function TimeMaskPlaceholder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('day')\n ], TimeMaskPlaceholder.prototype, \"day\", void 0);\n __decorate([\n Property('month')\n ], TimeMaskPlaceholder.prototype, \"month\", void 0);\n __decorate([\n Property('year')\n ], TimeMaskPlaceholder.prototype, \"year\", void 0);\n __decorate([\n Property('day of the week')\n ], TimeMaskPlaceholder.prototype, \"dayOfTheWeek\", void 0);\n __decorate([\n Property('hour')\n ], TimeMaskPlaceholder.prototype, \"hour\", void 0);\n __decorate([\n Property('minute')\n ], TimeMaskPlaceholder.prototype, \"minute\", void 0);\n __decorate([\n Property('second')\n ], TimeMaskPlaceholder.prototype, \"second\", void 0);\n return TimeMaskPlaceholder;\n}(ChildProperty));\nexport { TimeMaskPlaceholder };\n/**\n * TimePicker is an intuitive interface component which provides an options to select a time value\n * from popup list or to set a desired time value.\n * ```\n * \n * \n * ```\n */\nvar TimePicker = /** @class */ (function (_super) {\n __extends(TimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {TimePickerModel} options - Specifies the TimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function TimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.liCollections = [];\n _this.timeCollections = [];\n _this.disableItemCollection = [];\n _this.invalidValueString = null;\n _this.isAngular = false;\n _this.preventChange = false;\n _this.maskedDateValue = '';\n _this.moduleName = _this.getModuleName();\n _this.timeOptions = options;\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n TimePicker.prototype.preRender = function () {\n this.keyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [ROOT, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.angularTag = null;\n this.formElement = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n this.angularTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n this.openPopupEventArgs = {\n appendTo: document.body\n };\n };\n // element creation\n TimePicker.prototype.render = function () {\n this.initialize();\n this.createInputElement();\n this.updateHtmlAttributeToWrapper();\n this.setTimeAllowEdit();\n this.setEnable();\n this.validateInterval();\n this.bindEvents();\n this.validateDisable();\n this.setTimeZone();\n this.setValue(this.getFormattedValue(this.value));\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.checkErrorState(this.maskedDateValue);\n }\n this.anchor = this.inputElement;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.inputEleValue = this.getDateObject(this.inputElement.value);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n };\n TimePicker.prototype.setTimeZone = function () {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var serverTimezoneDiff = this.serverTimezoneOffset;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date((this.value).getTime() + (timeZoneDiff * 60 * 60 * 1000));\n }\n };\n TimePicker.prototype.isDayLightSaving = function () {\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n TimePicker.prototype.setTimeAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.clearIconState();\n };\n TimePicker.prototype.clearIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n else {\n addClass([this.inputWrapper.container], [EDITABLE]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n };\n TimePicker.prototype.validateDisable = function () {\n this.setMinMax(this.initMin, this.initMax);\n if (!isNullOrUndefined(this.value)) {\n this.popupCreation();\n this.popupObj.destroy();\n this.popupWrapper = this.popupObj = null;\n }\n if ((!isNaN(+this.value) && this.value !== null)) {\n if (!this.valueIsDisable(this.value)) {\n //disable value given in value property so reset the date based on current date\n if (this.strictMode) {\n this.resetState();\n }\n this.initValue = null;\n this.initMax = this.getDateObject(this.initMax);\n this.initMin = this.getDateObject(this.initMin);\n this.timeCollections = this.liCollections = [];\n this.setMinMax(this.initMin, this.initMax);\n }\n }\n };\n TimePicker.prototype.validationAttribute = function (target, input) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n input.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attributes[i]))) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n input.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n TimePicker.prototype.initialize = function () {\n this.globalize = new Internationalization(this.locale);\n this.defaultCulture = new Internationalization('en');\n this.checkTimeFormat();\n this.checkInvalidValue(this.value);\n // persist the value property.\n this.setProperties({ value: this.checkDateValue(new Date(this.checkInValue(this.value))) }, true);\n this.setProperties({ min: this.checkDateValue(new Date(this.checkInValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkInValue(this.max))) }, true);\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(this.scrollTo))) }, true);\n if (this.angularTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.checkAttributes(false); //check the input element attributes\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('timepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n this.initValue = this.checkDateValue(this.value);\n this.initMin = this.checkDateValue(this.min);\n this.initMax = this.checkDateValue(this.max);\n this.isNavigate = this.isPreventBlur = this.isTextSelected = false;\n this.activeIndex = this.valueWithMinutes = this.prevDate = null;\n if (!isNullOrUndefined(this.element.getAttribute('id'))) {\n if (this.angularTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n //for angular case\n this.element.id = getUniqueID('ej2_timepicker');\n if (this.angularTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n attributes(this.inputElement, { 'name': this.element.id });\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n };\n TimePicker.prototype.checkTimeFormat = function () {\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (!isNullOrUndefined(this.format.skeleton) && this.format.skeleton !== '') {\n var skeletonString = this.format.skeleton;\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: skeletonString });\n }\n else {\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: 'short' });\n }\n }\n else {\n this.formatString = null;\n }\n };\n TimePicker.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n TimePicker.prototype.createInputElement = function () {\n if (this.fullScreenMode && Browser.isDevice) {\n this.cssClass += ' ' + \"e-popup-expand\";\n }\n var updatedCssClassesValue = this.cssClass;\n var isBindClearAction = this.enableMask ? false : true;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassesValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n bindClearAction: isBindClearAction,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassesValue,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [' e-input-group-icon e-time-icon e-icons']\n }, this.createElement);\n this.inputWrapper.container.style.width = this.setWidth(this.width);\n attributes(this.inputElement, {\n 'aria-autocomplete': 'list', 'tabindex': '0',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-disabled': 'false', 'aria-invalid': 'false'\n });\n if (!this.isNullOrEmpty(this.inputStyle)) {\n Input.addAttributes({ 'style': this.inputStyle }, this.inputElement);\n }\n addClass([this.inputWrapper.container], WRAPPERCLASS);\n };\n TimePicker.prototype.getCldrDateTimeFormat = function () {\n var culture = new Internationalization(this.locale);\n var cldrTime;\n var dateFormat = culture.getDatePattern({ skeleton: 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.cldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.checkInvalidValue = function (value) {\n var isInvalid = false;\n if (typeof value !== 'object' && !isNullOrUndefined(value)) {\n var valueString = value;\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n var valueExpression = null;\n var valueExp = null;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n else if (typeof value === 'string') {\n if (!(/^[a-zA-Z0-9- ]*$/).test(value)) {\n valueExpression = this.setCurrentDate(this.getDateObject(value));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n }));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.formatString, type: 'dateTime', skeleton: 'yMd'\n }));\n }\n }\n }\n }\n valueExp = this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n });\n valueExpression = (!isNullOrUndefined(valueExp) && valueExp instanceof Date && !isNaN(+valueExp)) ? valueExp : null;\n if (isNullOrUndefined(valueExpression) && valueString.replace(/\\s/g, '').length) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // eslint-disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || ((/^[a-zA-Z0-9- ]*$/).test(value)) || isNaN(+new Date('' + valueString))) {\n isInvalid = true;\n }\n else {\n valueExpression = new Date('' + valueString);\n }\n }\n if (isInvalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n this.initValue = null;\n }\n else {\n this.setProperties({ value: valueExpression }, true);\n this.initValue = this.value;\n }\n }\n };\n TimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableMask) {\n modules.push({ args: [this], member: 'MaskedDateTime' });\n }\n return modules;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimePicker.prototype.cldrFormat = function (type) {\n var cldrDateTimeString;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTimeString = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTimeString = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTimeString;\n };\n // destroy function\n TimePicker.prototype.destroy = function () {\n this.hide();\n this.unBindEvents();\n var ariaAttribute = {\n 'aria-autocomplete': 'list', 'tabindex': '0',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-disabled': 'true', 'aria-invalid': 'false'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n if (this.angularTag === null) {\n this.inputWrapper.container.parentElement.appendChild(this.inputElement);\n }\n if (!isNullOrUndefined(this.cloneElement.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n this.ensureInputAttribute();\n this.enableElement([this.inputElement]);\n this.inputElement.classList.remove('e-input');\n if (isNullOrUndefined(this.cloneElement.getAttribute('disabled'))) {\n Input.setEnabled(true, this.inputElement, this.floatLabelType);\n }\n }\n if (this.inputWrapper.container) {\n detach(this.inputWrapper.container);\n }\n this.inputWrapper = this.popupWrapper = this.cloneElement = undefined;\n this.liCollections = this.timeCollections = this.disableItemCollection = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n _super.prototype.destroy.call(this);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n this.rippleFn = null;\n this.openPopupEventArgs = null;\n this.selectedElement = null;\n this.listTag = null;\n this.liCollections = null;\n };\n TimePicker.prototype.ensureInputAttribute = function () {\n var propertyList = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n propertyList[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < propertyList.length; i++) {\n if (!isNullOrUndefined(this.cloneElement.getAttribute(propertyList[i]))) {\n this.inputElement.setAttribute(propertyList[i], this.cloneElement.getAttribute(propertyList[i]));\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = this.cloneElement.getAttribute(propertyList[i]);\n }\n }\n else {\n this.inputElement.removeAttribute(propertyList[i]);\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n }\n }\n };\n //popup creation\n TimePicker.prototype.popupCreation = function () {\n this.popupWrapper = this.createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_popup', 'style': 'visibility:hidden' }\n });\n this.popupWrapper.setAttribute('aria-label', this.element.id);\n this.popupWrapper.setAttribute('role', 'dialog');\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.generateList();\n append([this.listWrapper], this.popupWrapper);\n }\n this.addSelection();\n this.renderPopup();\n detach(this.popupWrapper);\n };\n TimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.popupWrapper.getBoundingClientRect().height;\n return popupHeight > height ? height : popupHeight;\n };\n TimePicker.prototype.generateList = function () {\n this.createListItems();\n this.wireListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n };\n TimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.setPopupWidth(this.width),\n zIndex: this.zIndex,\n targetType: 'relative',\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n enableRtl: this.enableRtl,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n offsetY: OFFSETVAL,\n open: function () {\n _this.popupWrapper.style.visibility = 'visible';\n addClass([_this.inputWrapper.buttons[0]], SELECTED);\n }, close: function () {\n removeClass([_this.inputWrapper.buttons[0]], SELECTED);\n _this.unWireListEvents();\n _this.inputElement.removeAttribute('aria-activedescendant');\n remove(_this.popupObj.element);\n _this.popupObj.destroy();\n _this.popupWrapper.innerHTML = '';\n _this.listWrapper = _this.popupWrapper = _this.listTag = undefined;\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (!Browser.isDevice) {\n this.popupObj.collision = { X: 'none', Y: 'flip' };\n }\n if (Browser.isDevice && this.fullScreenMode) {\n this.popupObj.element.style.maxHeight = \"100%\";\n this.popupObj.element.style.width = \"100%\";\n }\n else {\n this.popupObj.element.style.maxHeight = POPUPDIMENSION;\n }\n if (Browser.isDevice && this.fullScreenMode) {\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var modelTitleSpan = this.createElement(\"span\", { className: \"e-model-title\" });\n modelTitleSpan.textContent = \"Select time\";\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.timePopupCloseHandler, this);\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n this.popupWrapper.insertBefore(modelHeader, this.popupWrapper.firstElementChild);\n }\n };\n TimePicker.prototype.timePopupCloseHandler = function (e) {\n this.hide();\n };\n //util function\n TimePicker.prototype.getFormattedValue = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { skeleton: 'medium', type: 'time' });\n }\n };\n TimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = !this.isNullOrEmpty(this.initValue);\n if (this.checkDateValue(dateValue)) {\n var date = value ? this.initValue.getDate() : DAY;\n var month = value ? this.initValue.getMonth() : MONTH;\n var year = value ? this.initValue.getFullYear() : YEAR;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds());\n }\n }\n return null;\n };\n TimePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassesValue = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassesValue !== '') {\n addClass([this.inputWrapper.container], updatedClassesValue.split(' '));\n }\n }\n else if (key === 'style') {\n var timeStyle = this.inputWrapper.container.getAttribute(key);\n timeStyle = !isNullOrUndefined(timeStyle) ? (timeStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.inputWrapper.container.setAttribute(key, timeStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n TimePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n TimePicker.prototype.updateCssClass = function (cssClassNew, cssClassOld) {\n if (!isNullOrUndefined(cssClassOld)) {\n cssClassOld = (cssClassOld.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(cssClassNew)) {\n cssClassNew = (cssClassNew.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(cssClassNew, [this.inputWrapper.container], cssClassOld);\n if (this.popupWrapper) {\n Input.setCssClass(cssClassNew, [this.popupWrapper], cssClassOld);\n }\n };\n TimePicker.prototype.removeErrorClass = function () {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n };\n TimePicker.prototype.checkErrorState = function (val) {\n var value = this.getDateObject(val);\n if ((this.validateState(value) && !this.invalidValueString) ||\n (this.enableMask && this.inputElement.value === this.maskedDateValue)) {\n this.removeErrorClass();\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n };\n TimePicker.prototype.validateInterval = function () {\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.enableElement([this.inputWrapper.buttons[0]]);\n }\n else {\n this.disableTimeIcon();\n }\n };\n TimePicker.prototype.disableTimeIcon = function () {\n this.disableElement([this.inputWrapper.buttons[0]]);\n this.hide();\n };\n TimePicker.prototype.disableElement = function (element) {\n addClass(element, DISABLED);\n };\n TimePicker.prototype.enableElement = function (element) {\n removeClass(element, DISABLED);\n };\n TimePicker.prototype.selectInputText = function () {\n this.inputElement.setSelectionRange(0, (this.inputElement).value.length);\n };\n TimePicker.prototype.setCursorToEnd = function () {\n this.inputElement.setSelectionRange((this.inputElement).value.length, (this.inputElement).value.length);\n };\n TimePicker.prototype.getMeridianText = function () {\n var meridian;\n if (this.locale === 'en' || this.locale === 'en-US') {\n meridian = getValue('dayPeriods.format.wide', getDefaultDateObject());\n }\n else {\n var gregorianFormat = '.dates.calendars.gregorian.dayPeriods.format.abbreviated';\n var mainVal = 'main.';\n meridian = getValue(mainVal + '' + this.locale + gregorianFormat, cldrData);\n }\n return meridian;\n };\n TimePicker.prototype.getCursorSelection = function () {\n var input = (this.inputElement);\n var start = 0;\n var end = 0;\n if (!isNaN(input.selectionStart)) {\n start = input.selectionStart;\n end = input.selectionEnd;\n }\n return { start: Math.abs(start), end: Math.abs(end) };\n };\n TimePicker.prototype.getActiveElement = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n return this.popupWrapper.querySelectorAll('.' + SELECTED);\n }\n else {\n return null;\n }\n };\n TimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n TimePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n width = (width.match(/px|%|em/)) ? width : formatUnit(width);\n }\n else {\n width = '100%';\n }\n return width;\n };\n TimePicker.prototype.setPopupWidth = function (width) {\n width = this.setWidth(width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n TimePicker.prototype.setScrollPosition = function () {\n var element = this.selectedElement;\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else if (this.popupWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n TimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextEle = element.nextElementSibling;\n var height = nextEle ? nextEle.offsetTop : element.offsetTop;\n var liHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.popupWrapper.scrollTop = nextEle ? (height - (listHeight / HALFPOSITION + liHeight / HALFPOSITION)) : height;\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.setScrollTo = function () {\n var element;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.getText = function () {\n return (isNullOrUndefined(this.checkDateValue(this.value))) ? '' : this.getValue(this.value);\n };\n TimePicker.prototype.getValue = function (value) {\n return (isNullOrUndefined(this.checkDateValue(value))) ? null : this.globalize.formatDate(value, {\n format: this.cldrTimeFormat(), type: 'time'\n });\n };\n TimePicker.prototype.cldrDateFormat = function () {\n var cldrDate;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDate = (getValue('dateFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDate = (this.getCultureDateObject(cldrData, '' + this.locale));\n }\n return cldrDate;\n };\n TimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.formatString)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.dateToNumeric = function () {\n var cldrTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.medium', getDefaultDateObject()));\n }\n else {\n cldrTime = (getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.medium', cldrData));\n }\n return cldrTime;\n };\n TimePicker.prototype.getExactDateTime = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { format: this.dateToNumeric(), type: 'time' });\n }\n };\n TimePicker.prototype.setValue = function (value) {\n var time = this.checkValue(value);\n if (!this.strictMode && !this.validateState(time)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n if (this.isNullOrEmpty(time)) {\n this.initValue = null;\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.initValue = this.compareFormatChange(time);\n }\n }\n this.updateInput(true, this.initValue);\n };\n TimePicker.prototype.compareFormatChange = function (value) {\n if (isNullOrUndefined(value)) {\n return null;\n }\n return (value !== this.getText()) ? this.getDateObject(value) : this.getDateObject(this.value);\n };\n TimePicker.prototype.updatePlaceHolder = function () {\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n };\n //event related functions\n TimePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n TimePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n this.interopAdaptor.invokeMethodAsync('OnTimeIconClick');\n };\n TimePicker.prototype.popupHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n e.preventDefault();\n if (this.isPopupOpen()) {\n this.closePopup(0, e);\n }\n else {\n this.inputElement.focus();\n this.show(e);\n }\n };\n TimePicker.prototype.mouseDownHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.readonly) {\n this.inputElement.setSelectionRange(0, 0);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n }\n };\n TimePicker.prototype.mouseUpHandler = function (event) {\n if (!this.readonly) {\n event.preventDefault();\n if (this.enableMask) {\n event.preventDefault();\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n return;\n }\n else {\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n var curPos = this.getCursorSelection();\n if (!(curPos.start === 0 && curPos.end === this.inputElement.value.length)) {\n if (this.inputElement.value.length > 0) {\n this.cursorDetails = this.focusSelection();\n }\n this.inputElement.setSelectionRange(this.cursorDetails.start, this.cursorDetails.end);\n }\n }\n }\n };\n TimePicker.prototype.focusSelection = function () {\n var regex = new RegExp('^[a-zA-Z0-9]+$');\n var split = this.inputElement.value.split('');\n split.push(' ');\n var curPos = this.getCursorSelection();\n var start = 0;\n var end = 0;\n var isSeparator = false;\n if (!this.isTextSelected) {\n for (var i = 0; i < split.length; i++) {\n if (!regex.test(split[i])) {\n end = i;\n isSeparator = true;\n }\n if (isSeparator) {\n if (curPos.start >= start && curPos.end <= end) {\n // eslint-disable-next-line no-self-assign\n end = end;\n this.isTextSelected = true;\n break;\n }\n else {\n start = i + 1;\n isSeparator = false;\n }\n }\n }\n }\n else {\n start = curPos.start;\n end = curPos.end;\n this.isTextSelected = false;\n }\n return { start: start, end: end };\n };\n TimePicker.prototype.inputHandler = function (event) {\n if (!this.readonly && this.enabled) {\n if (!((event.action == 'right' || event.action == 'left' || event.action == 'tab') || ((event.action == 'home' || event.action == 'end' || event.action == 'up' || event.action == 'down') && !this.isPopupOpen() && !this.enableMask))) {\n event.preventDefault();\n }\n switch (event.action) {\n case 'home':\n case 'end':\n case 'up':\n case 'down':\n if (!this.isPopupOpen()) {\n this.popupCreation();\n this.popupObj.destroy();\n this.popupObj = this.popupWrapper = null;\n }\n if (this.enableMask && !this.readonly && !this.isPopupOpen()) {\n event.preventDefault();\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: event\n });\n }\n if (this.isPopupOpen()) {\n this.keyHandler(event);\n }\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.updateValue(this.valueWithMinutes, event);\n }\n else {\n this.updateValue(this.inputElement.value, event);\n }\n this.hide();\n this.isNavigate = false;\n if (this.isPopupOpen()) {\n event.stopPropagation();\n }\n break;\n case 'open':\n this.show(event);\n break;\n case 'escape':\n this.updateInputValue(this.objToString(this.value));\n if (this.enableMask) {\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n this.previousState(this.value);\n this.hide();\n break;\n case 'close':\n this.hide();\n break;\n case 'right':\n case 'left':\n case 'tab':\n case 'shiftTab':\n if (!this.isPopupOpen() && this.enableMask && !this.readonly) {\n if ((this.inputElement.selectionStart === 0 && this.inputElement.selectionEnd === this.inputElement.value.length) ||\n (this.inputElement.selectionEnd !== this.inputElement.value.length && event.action === 'tab') ||\n (this.inputElement.selectionStart !== 0 && event.action === 'shiftTab') || (event.action === 'left' || event.action === 'right')) {\n event.preventDefault();\n }\n this.notify('keyDownHandler', { module: 'MaskedDateTime',\n e: event\n });\n }\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n TimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n this.setSelection(li, event);\n if (li && li.classList.contains(LISTCLASS)) {\n this.hide();\n }\n };\n TimePicker.prototype.closePopup = function (delay, e) {\n var _this = this;\n if (this.isPopupOpen() && this.popupWrapper) {\n var args = {\n popup: this.popupObj,\n event: e || null,\n cancel: false,\n name: 'open'\n };\n removeClass([document.body], OVERFLOW);\n this.trigger('close', args, function (args) {\n if (!args.cancel) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: delay ? delay : 0\n };\n _this.popupObj.hide(new Animation(animModel));\n removeClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-controls');\n _this.inputElement.removeAttribute('aria-activedescendant');\n EventHandler.remove(document, 'mousedown touchstart', _this.documentClickHandler);\n }\n if (Browser.isDevice && _this.modal) {\n _this.modal.style.display = 'none';\n _this.modal.outerHTML = '';\n _this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(_this.mobileTimePopupWrap)) {\n _this.mobileTimePopupWrap.remove();\n _this.mobileTimePopupWrap = null;\n }\n }\n if (Browser.isDevice && _this.allowEdit && !_this.readonly) {\n _this.inputElement.removeAttribute('readonly');\n }\n });\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n TimePicker.prototype.disposeServerPopup = function () {\n if (this.popupWrapper) {\n this.popupWrapper.style.visibility = 'hidden';\n this.popupWrapper.style.top = '-9999px';\n this.popupWrapper.style.left = '-9999px';\n this.popupWrapper.style.width = '0px';\n this.popupWrapper.style.height = '0px';\n }\n };\n TimePicker.prototype.checkValueChange = function (event, isNavigation) {\n if (!this.strictMode && !this.validateState(this.valueWithMinutes)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.setProperties({ value: this.compareFormatChange(this.inputElement.value) }, true);\n this.initValue = this.valueWithMinutes = this.compareFormatChange(this.inputElement.value);\n this.prevValue = this.inputElement.value;\n if (+this.prevDate !== +this.value) {\n this.changeEvent(event);\n }\n }\n else {\n if (!isNavigation) {\n if ((this.prevValue !== this.inputElement.value) || isNullOrUndefined(this.checkDateValue(this.value))) {\n this.valueProcess(event, this.compareFormatChange(this.inputElement.value));\n }\n }\n else {\n var value = this.getDateObject(new Date(this.timeCollections[this.activeIndex]));\n if (+this.prevDate !== +value) {\n this.valueProcess(event, value);\n }\n }\n }\n };\n TimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setHover(currentLi, HOVER);\n };\n TimePicker.prototype.setHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeHover(className);\n addClass([li], className);\n if (className === NAVIGATION) {\n li.setAttribute('aria-selected', 'true');\n }\n }\n };\n TimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li)) {\n this.checkValue(li.getAttribute('data-value'));\n if (this.enableMask) {\n this.createMask();\n }\n this.selectedElement = li;\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.checkValueChange(event, true);\n }\n };\n TimePicker.prototype.onMouseLeave = function () {\n this.removeHover(HOVER);\n };\n TimePicker.prototype.scrollHandler = function () {\n if (this.getModuleName() === 'timepicker' && Browser.isDevice) {\n return;\n }\n else {\n this.hide();\n }\n };\n TimePicker.prototype.setMinMax = function (minVal, maxVal) {\n if (isNullOrUndefined(this.checkDateValue(minVal))) {\n this.initMin = this.getDateObject('12:00:00 AM');\n }\n if (isNullOrUndefined(this.checkDateValue(maxVal))) {\n this.initMax = this.getDateObject('11:59:59 PM');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimePicker.prototype.validateMinMax = function (dateVal, minVal, maxVal) {\n var value = dateVal instanceof Date ? dateVal : this.getDateObject(dateVal);\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n dateVal = this.strictOperation(this.initMin, this.initMax, dateVal, value);\n }\n else if (+(this.createDateObj(this.getFormattedValue(this.initMin))) >\n +(this.createDateObj(this.getFormattedValue(this.initMax)))) {\n this.disableTimeIcon();\n }\n if (this.strictMode) {\n dateVal = this.valueIsDisable(dateVal) ? dateVal : null;\n }\n this.checkErrorState(dateVal);\n return dateVal;\n };\n TimePicker.prototype.valueIsDisable = function (value) {\n if (this.disableItemCollection.length > 0) {\n if (this.disableItemCollection.length === this.timeCollections.length) {\n return false;\n }\n var time = value instanceof Date ? this.objToString(value) : value;\n for (var index = 0; index < this.disableItemCollection.length; index++) {\n if (time === this.disableItemCollection[index]) {\n return false;\n }\n }\n }\n return true;\n };\n TimePicker.prototype.validateState = function (val) {\n if (!this.strictMode) {\n if (this.valueIsDisable(val)) {\n var value = typeof val === 'string' ? this.setCurrentDate(this.getDateObject(val)) :\n this.setCurrentDate(this.getDateObject(val));\n var maxValue = this.setCurrentDate(this.getDateObject(this.initMax));\n var minValue = this.setCurrentDate(this.getDateObject(this.initMin));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n if ((+(value) > +(maxValue)) || (+(value) < +(minValue))) {\n return false;\n }\n }\n else {\n if ((+(maxValue) < +(minValue)) || this.inputElement.value !== '') {\n return false;\n }\n }\n }\n else {\n return false;\n }\n }\n return true;\n };\n TimePicker.prototype.strictOperation = function (minimum, maximum, dateVal, val) {\n var maxValue = this.createDateObj(this.getFormattedValue(maximum));\n var minValue = this.createDateObj(this.getFormattedValue(minimum));\n var value = this.createDateObj(this.getFormattedValue(val));\n if (this.strictMode) {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n this.initValue = this.getDateObject(maxValue);\n this.updateInputValue(this.getValue(this.initValue));\n if (this.enableMask) {\n this.createMask();\n }\n return this.inputElement.value;\n }\n else if (+minValue >= +value) {\n return this.getDateObject(minValue);\n }\n else if (+value >= +maxValue || +minValue === +maxValue) {\n return this.getDateObject(maxValue);\n }\n }\n else {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n if (!isNaN(+this.createDateObj(dateVal))) {\n return dateVal;\n }\n }\n }\n return dateVal;\n };\n TimePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.popupHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n EventHandler.add(this.inputElement, 'input', this.inputEventHandler, this);\n if (this.enableMask) {\n EventHandler.add(this.inputElement, 'keydown', this.keydownHandler, this);\n }\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyConfigure = extend(this.keyConfigure, this.keyConfigs);\n this.inputEvent = new KeyboardEvents(this.inputWrapper.container, {\n keyAction: this.inputHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n if (this.showClearButton && this.inputElement) {\n EventHandler.add(this.inputElement, 'mousedown', this.mouseDownHandler, this);\n }\n }\n };\n TimePicker.prototype.keydownHandler = function (e) {\n switch (e.code) {\n case 'Delete':\n if (this.enableMask && !this.popupObj && !this.readonly) {\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n }\n break;\n default:\n break;\n }\n };\n TimePicker.prototype.formResetHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var timeValue = this.inputElement.getAttribute('value');\n var val = this.checkDateValue(this.inputEleValue);\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n val = null;\n timeValue = '';\n this.inputElement.setAttribute('value', '');\n }\n this.setProperties({ value: val }, true);\n this.prevDate = this.value;\n this.valueWithMinutes = this.value;\n this.initValue = this.value;\n if (this.inputElement) {\n this.updateInputValue(timeValue);\n if (this.enableMask) {\n if (!timeValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n this.checkErrorState(timeValue);\n this.prevValue = this.inputElement.value;\n }\n }\n };\n TimePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n TimePicker.prototype.inputEventHandler = function () {\n if (this.enableMask) {\n this.notify('inputHandler', {\n module: 'MaskedDateTime'\n });\n }\n };\n TimePicker.prototype.unBindEvents = function () {\n if (this.inputWrapper) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.popupHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n EventHandler.remove(this.inputElement, 'input', this.inputEventHandler);\n if (this.inputEvent) {\n this.inputEvent.destroy();\n }\n EventHandler.remove(this.inputElement, 'mousedown touchstart', this.mouseDownHandler);\n if (this.showClearButton && !isNullOrUndefined(this.inputWrapper) && !isNullOrUndefined(this.inputWrapper.clearButton)) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.clearHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n TimePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n };\n TimePicker.prototype.raiseClearedEvent = function (e) {\n var clearedArgs = {\n event: e\n };\n this.trigger('cleared', clearedArgs);\n };\n TimePicker.prototype.clearHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n if (!isNullOrUndefined(this.value)) {\n this.clear(e);\n }\n else {\n this.resetState();\n this.raiseClearedEvent(e);\n }\n if (this.popupWrapper) {\n this.popupWrapper.scrollTop = 0;\n }\n if (this.enableMask) {\n this.notify('clearHandler', {\n module: 'MaskedDateTime'\n });\n }\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n TimePicker.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.initValue = null;\n this.resetState();\n this.raiseClearedEvent(event);\n this.changeEvent(event);\n };\n TimePicker.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.zIndex = this.zIndex;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['step', 'disabled', 'readonly', 'style', 'name', 'value', 'min', 'max', 'placeholder'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'style':\n this.inputStyle = this.inputElement.getAttribute(prop);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.initValue = value;\n this.updateInput(false, this.initValue);\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n TimePicker.prototype.setCurrentDate = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n return new Date(YEAR, MONTH, DAY, value.getHours(), value.getMinutes(), value.getSeconds());\n };\n TimePicker.prototype.getTextFormat = function () {\n var time = 0;\n if (this.cldrTimeFormat().split(' ')[0] === 'a' || this.cldrTimeFormat().indexOf('a') === 0) {\n time = 1;\n }\n else if (this.cldrTimeFormat().indexOf('a') < 0) {\n var strArray = this.cldrTimeFormat().split(' ');\n for (var i = 0; i < strArray.length; i++) {\n if (strArray[i].toLowerCase().indexOf('h') >= 0) {\n time = i;\n break;\n }\n }\n }\n return time;\n };\n TimePicker.prototype.updateValue = function (value, event) {\n var val;\n if (this.isNullOrEmpty(value)) {\n this.resetState();\n }\n else {\n val = this.checkValue(value);\n if (this.strictMode) {\n // this case set previous value to the text box when set invalid date\n var inputVal = (val === null && value.trim().length > 0) ?\n this.previousState(this.prevDate) : this.inputElement.value;\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n if (!inputVal) {\n this.updateInputValue(this.maskedDateValue);\n }\n if (isNullOrUndefined(val) && value !== this.maskedDateValue) {\n this.createMask();\n }\n if (isNullOrUndefined(val) && value === this.maskedDateValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n }\n this.checkValueChange(event, typeof value === 'string' ? false : true);\n };\n TimePicker.prototype.previousState = function (date) {\n var value = this.getDateObject(date);\n for (var i = 0; i < this.timeCollections.length; i++) {\n if (+value === this.timeCollections[i]) {\n this.activeIndex = i;\n this.selectedElement = this.liCollections[i];\n this.valueWithMinutes = new Date(this.timeCollections[i]);\n break;\n }\n }\n return this.prevValue;\n };\n TimePicker.prototype.resetState = function () {\n this.removeSelection();\n Input.setValue('', this.inputElement, this.floatLabelType, false);\n this.valueWithMinutes = this.activeIndex = null;\n if (!this.strictMode) {\n this.checkErrorState(null);\n }\n };\n TimePicker.prototype.objToString = function (val) {\n if (isNullOrUndefined(this.checkDateValue(val))) {\n return null;\n }\n else {\n return this.globalize.formatDate(val, { format: this.cldrTimeFormat(), type: 'time' });\n }\n };\n TimePicker.prototype.checkValue = function (value) {\n if (!this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.validateValue(date, value);\n }\n this.resetState();\n return this.valueWithMinutes = null;\n };\n TimePicker.prototype.validateValue = function (date, value) {\n var time;\n var val = this.validateMinMax(value, this.min, this.max);\n var newval = this.getDateObject(val);\n if (this.getFormattedValue(newval) !== this.getFormattedValue(this.value)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = this.objToString(this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = this.objToString(this.valueWithMinutes);\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n var value_1 = val.trim().length > 0 ? val : '';\n this.updateInputValue(value_1);\n if (this.enableMask) {\n if (!value_1) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n else {\n this.updateInputValue(time);\n if (this.enableMask) {\n if (time === '') {\n this.updateInputValue(this.maskedDateValue);\n }\n if (isNullOrUndefined(time) && value !== this.maskedDateValue) {\n this.createMask();\n }\n if (isNullOrUndefined(time) && value === this.maskedDateValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n return time;\n };\n TimePicker.prototype.createMask = function () {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n };\n TimePicker.prototype.findNextElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var timeVal = null;\n var count = this.liCollections.length;\n var collections = this.timeCollections;\n if (!isNullOrUndefined(this.checkDateValue(value)) || !isNullOrUndefined(this.activeIndex)) {\n if (event.action === 'home') {\n var index = this.validLiElement(0);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(collections.length - 1, true);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < count; i++) {\n if (+value < this.timeCollections[i]) {\n var index = this.validLiElement(i);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n else if (i === count - 1) {\n var index = this.validLiElement(0);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n }\n }\n else {\n for (var i = count - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n var index = this.validLiElement(i, true);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n else if (i === 0) {\n var index = this.validLiElement(count - 1);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.elementValue(isNullOrUndefined(timeVal) ? null : new Date(timeVal));\n }\n else {\n this.selectNextItem(event);\n }\n };\n TimePicker.prototype.selectNextItem = function (event) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n this.elementValue(new Date(this.timeCollections[index]));\n };\n TimePicker.prototype.elementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.checkValue(value);\n }\n };\n TimePicker.prototype.validLiElement = function (index, backward) {\n var elementIndex = null;\n var items = isNullOrUndefined(this.popupWrapper) ? this.liCollections :\n this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n var isCheck = true;\n if (items.length) {\n if (backward) {\n for (var i = index; i >= 0; i--) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === 0) {\n if (isCheck) {\n index = i = items.length;\n isCheck = false;\n }\n }\n }\n }\n else {\n for (var i = index; i <= items.length - 1; i++) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === items.length - 1) {\n if (isCheck) {\n index = i = -1;\n isCheck = false;\n }\n }\n }\n }\n }\n return elementIndex;\n };\n TimePicker.prototype.keyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0 || !isNullOrUndefined(this.inputWrapper)\n && this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n return;\n }\n var count = this.timeCollections.length;\n if (isNullOrUndefined(this.getActiveElement()) || this.getActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n this.elementValue(new Date(this.timeCollections[index]));\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n var nextItem = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (count) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (count - 1) : this.activeIndex;\n this.activeIndex = index = this.validLiElement(this.activeIndex, (event.keyCode === 40 || event.keyCode === 39) ?\n false : true);\n nextItem = isNullOrUndefined(this.timeCollections[index]) ?\n this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n var index = this.validLiElement(0);\n this.activeIndex = index;\n nextItem = this.timeCollections[index];\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(count - 1, true);\n this.activeIndex = index;\n nextItem = this.timeCollections[index];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.elementValue(new Date(nextItem));\n }\n this.isNavigate = true;\n this.setHover(this.selectedElement, NAVIGATION);\n this.setActiveDescendant();\n if (this.enableMask) {\n this.selectInputText();\n }\n if (this.isPopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setScrollPosition();\n }\n };\n TimePicker.prototype.getCultureTimeObject = function (ld, c) {\n return getValue('main.' + c + '.dates.calendars.gregorian.timeFormats.short', ld);\n };\n TimePicker.prototype.getCultureDateObject = function (ld, c) {\n return getValue('main.' + c + '.dates.calendars.gregorian.dateFormats.short', ld);\n };\n TimePicker.prototype.wireListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n TimePicker.prototype.unWireListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n if (!Browser.isDevice) {\n EventHandler.remove(this.listWrapper, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.listWrapper, 'mouseout', this.onMouseLeave);\n }\n }\n };\n TimePicker.prototype.valueProcess = function (event, value) {\n var result = (isNullOrUndefined(this.checkDateValue(value))) ? null : value;\n if (+this.prevDate !== +result) {\n this.initValue = result;\n this.changeEvent(event);\n }\n };\n TimePicker.prototype.changeEvent = function (e) {\n this.addSelection();\n this.updateInput(true, this.initValue);\n var eventArgs = {\n event: (e || null),\n value: this.value,\n text: (this.inputElement).value,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n eventArgs.value = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n this.prevDate = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.invalidValueString = null;\n this.checkErrorState(this.value);\n };\n TimePicker.prototype.updateInput = function (isUpdate, date) {\n if (isUpdate) {\n this.prevValue = this.getValue(date);\n }\n this.prevDate = this.valueWithMinutes = date;\n if ((typeof date !== 'number') || (this.value && +new Date(+this.value).setMilliseconds(0)) !== +date) {\n this.setProperties({ value: date }, true);\n if (this.enableMask && this.value) {\n this.createMask();\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.checkErrorState(this.invalidValueString);\n this.updateInputValue(this.invalidValueString);\n }\n this.clearIconState();\n };\n TimePicker.prototype.setActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement) && this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n TimePicker.prototype.removeSelection = function () {\n this.removeHover(HOVER);\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + SELECTED);\n if (items.length) {\n removeClass(items, SELECTED);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.removeHover = function (className) {\n var hoveredItem = this.getHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n if (className === NAVIGATION) {\n hoveredItem[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.getHoverItem = function (className) {\n var hoveredItem;\n if (!isNullOrUndefined(this.popupWrapper)) {\n hoveredItem = this.popupWrapper.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n TimePicker.prototype.setActiveClass = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if ((this.timeCollections[i] === +this.getDateObject(this.valueWithMinutes))) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n };\n TimePicker.prototype.addSelection = function () {\n this.selectedElement = null;\n this.removeSelection();\n this.setActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n TimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n TimePicker.prototype.createDateObj = function (val) {\n var formatStr = null;\n var today = this.globalize.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n var value = null;\n if (typeof val === 'string') {\n if (val.toUpperCase().indexOf('AM') > -1 || val.toUpperCase().indexOf('PM') > -1) {\n today = this.defaultCulture.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n value = isNaN(+new Date(today + ' ' + val)) ? null : new Date(new Date(today + ' ' + val).setMilliseconds(0));\n if (isNullOrUndefined(value)) {\n value = this.timeParse(today, val);\n }\n }\n else {\n value = this.timeParse(today, val);\n }\n }\n else if (val instanceof Date) {\n value = val;\n }\n return value;\n };\n TimePicker.prototype.timeParse = function (today, val) {\n var value;\n value = this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.cldrTimeFormat(), type: 'datetime'\n });\n value = isNullOrUndefined(value) ? this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.dateToNumeric(), type: 'datetime'\n }) : value;\n value = isNullOrUndefined(value) ? value : new Date(value.setMilliseconds(0));\n return value;\n };\n TimePicker.prototype.createListItems = function () {\n var _this = this;\n this.listWrapper = this.createElement('div', { className: CONTENT, attrs: { 'tabindex': '-1' } });\n var start;\n var interval = this.step * 60000;\n var listItems = [];\n this.timeCollections = [];\n this.disableItemCollection = [];\n start = +(this.getDateObject(this.initMin).setMilliseconds(0));\n var end = +(this.getDateObject(this.initMax).setMilliseconds(0));\n while (end >= start) {\n this.timeCollections.push(start);\n listItems.push(this.globalize.formatDate(new Date(start), { format: this.cldrTimeFormat(), type: 'time' }));\n start += interval;\n }\n var listBaseOptions = {\n itemCreated: function (args) {\n var eventArgs = {\n element: args.item,\n text: args.text, value: _this.getDateObject(args.text), isDisabled: false\n };\n _this.trigger('itemRender', eventArgs, function (eventArgs) {\n if (eventArgs.isDisabled) {\n eventArgs.element.classList.add(DISABLED);\n }\n if (eventArgs.element.classList.contains(DISABLED)) {\n _this.disableItemCollection.push(eventArgs.element.getAttribute('data-value'));\n }\n });\n }\n };\n this.listTag = ListBase.createList(this.createElement, listItems, listBaseOptions, true);\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options', 'tabindex': '0' });\n append([this.listTag], this.listWrapper);\n };\n TimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObj) && !isNullOrUndefined(this.inputWrapper) && (this.inputWrapper.container.contains(target) && event.type !== 'mousedown' ||\n (this.popupObj.element && this.popupObj.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) && target !== this.inputElement\n && target !== (this.inputWrapper && this.inputWrapper.buttons[0]) &&\n target !== (this.inputWrapper && this.inputWrapper.clearButton) &&\n target !== (this.inputWrapper && this.inputWrapper.container)\n && (!target.classList.contains('e-dlg-overlay'))) {\n if (this.isPopupOpen()) {\n this.hide();\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement)\n && (target === this.popupWrapper);\n }\n }\n };\n TimePicker.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement, this.floatLabelType);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hide();\n addClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.inputElement.tabIndex = -1;\n }\n };\n TimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.initMin = this.checkDateValue(new Date(this.checkInValue(date.min)));\n this.setProperties({ min: this.initMin }, true);\n }\n else {\n this.initMax = this.checkDateValue(new Date(this.checkInValue(date.max)));\n this.setProperties({ max: this.initMax }, true);\n }\n if (this.inputElement.value === '') {\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.checkValue(this.inputElement.value);\n }\n this.checkValueChange(null, false);\n };\n TimePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isPreventBlur && this.isPopupOpen()) {\n this.inputElement.focus();\n return;\n }\n this.closePopup(0, e);\n if (this.enableMask && this.maskedDateValue && this.placeholder && this.floatLabelType !== 'Always') {\n if (this.inputElement.value === this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue('');\n }\n }\n removeClass([this.inputWrapper.container], [FOCUS]);\n if (this.getText() !== this.inputElement.value) {\n this.updateValue((this.inputElement).value, e);\n }\n else if (this.inputElement.value.trim().length === 0) {\n this.resetState();\n }\n this.cursorDetails = null;\n this.isNavigate = false;\n if (this.inputElement.value === '') {\n this.invalidValueString = null;\n }\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n };\n /**\n * Focuses out the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [FOCUS]);\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n };\n TimePicker.prototype.isPopupOpen = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + ROOT)) {\n return true;\n }\n return false;\n };\n TimePicker.prototype.inputFocusHandler = function () {\n if (!this.enabled) {\n return;\n }\n var focusArguments = {\n model: this\n };\n if (!this.readonly && !Browser.isDevice && !this.enableMask) {\n this.selectInputText();\n }\n if (this.enableMask && !this.inputElement.value && this.placeholder) {\n if (this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.inputElement.selectionStart = 0;\n this.inputElement.selectionEnd = this.inputElement.value.length;\n }\n }\n this.trigger('focus', focusArguments);\n this.clearIconState();\n if (this.openOnFocus) {\n this.show();\n }\n };\n /**\n * Focused the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Hides the TimePicker popup.\n *\n * @returns {void}\n\n */\n TimePicker.prototype.hide = function () {\n this.closePopup(100, null);\n this.clearIconState();\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup to show the list items.\n *\n * @returns {void}\n\n */\n TimePicker.prototype.show = function (event) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupWrapper) {\n return;\n }\n else {\n this.popupCreation();\n if (Browser.isDevice && this.listWrapper) {\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n document.body.appendChild(this.modal);\n }\n if (Browser.isDevice) {\n this.mobileTimePopupWrap = this.createElement('div', { className: 'e-timepicker-mob-popup-wrap' });\n document.body.appendChild(this.mobileTimePopupWrap);\n }\n this.openPopupEventArgs = {\n popup: this.popupObj || null,\n cancel: false,\n event: event || null,\n name: 'open',\n appendTo: Browser.isDevice ? this.mobileTimePopupWrap : document.body\n };\n var eventArgs = this.openPopupEventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.openPopupEventArgs = eventArgs;\n if (!_this.openPopupEventArgs.cancel && !_this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n _this.openPopupEventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupAlignment(_this.openPopupEventArgs);\n _this.setScrollPosition();\n if (!Browser.isDevice) {\n _this.inputElement.focus();\n }\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION\n };\n _this.popupObj.refreshPosition(_this.anchor);\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n _this.setActiveDescendant();\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options' });\n attributes(_this.inputElement, { 'aria-controls': _this.inputElement.id });\n addClass([_this.inputWrapper.container], FOCUS);\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n _this.setOverlayIndex(_this.mobileTimePopupWrap, _this.popupObj.element, _this.modal, Browser.isDevice);\n }\n else {\n _this.popupObj.destroy();\n _this.popupWrapper = _this.listTag = undefined;\n _this.liCollections = _this.timeCollections = _this.disableItemCollection = [];\n _this.popupObj = null;\n }\n });\n if (Browser.isDevice) {\n var dlgOverlay = this.createElement('div', { className: 'e-dlg-overlay' });\n dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.mobileTimePopupWrap.appendChild(dlgOverlay);\n }\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n TimePicker.prototype.setOverlayIndex = function (popupWrapper, timePopupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(timePopupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(timePopupElement.style.zIndex, 10) ? parseInt(timePopupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n TimePicker.prototype.formatValues = function (type) {\n var value;\n if (typeof type === 'number') {\n value = formatUnit(type);\n }\n else if (typeof type === 'string') {\n value = (type.match(/px|%|em/)) ? type : isNaN(parseInt(type, 10)) ? type : formatUnit(type);\n }\n return value;\n };\n TimePicker.prototype.popupAlignment = function (args) {\n args.popup.position.X = this.formatValues(args.popup.position.X);\n args.popup.position.Y = this.formatValues(args.popup.position.Y);\n if (!isNaN(parseFloat(args.popup.position.X)) || !isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.targetType = 'container';\n }\n if (!isNaN(parseFloat(args.popup.position.X))) {\n this.popupObj.offsetX = parseFloat(args.popup.position.X);\n }\n if (!isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.offsetY = parseFloat(args.popup.position.Y);\n }\n if (!Browser.isDevice) {\n switch (args.popup.position.X) {\n case 'left':\n break;\n case 'right':\n args.popup.offsetX = this.containerStyle.width;\n break;\n case 'center':\n args.popup.offsetX = -(this.containerStyle.width / 2);\n break;\n }\n switch (args.popup.position.Y) {\n case 'top':\n break;\n case 'bottom':\n break;\n case 'center':\n args.popup.offsetY = -(this.containerStyle.height / 2);\n break;\n }\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.inputWrapper.container;\n this.anchor = this.inputElement;\n this.popupObj.targetType = 'relative';\n }\n }\n else {\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.offsetY = 0;\n this.popupObj.targetType = 'container';\n this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n TimePicker.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TimePicker.prototype.getModuleName = function () {\n return 'timepicker';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {TimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement, this.floatLabelType);\n if (this.readonly) {\n this.hide();\n }\n this.setTimeAllowEdit();\n break;\n case 'enabled':\n this.setProperties({ enabled: newProp.enabled }, true);\n this.setEnable();\n break;\n case 'allowEdit':\n this.setTimeAllowEdit();\n break;\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n break;\n case 'locale':\n this.setProperties({ locale: newProp.locale }, true);\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n if (this.timeOptions && this.timeOptions.placeholder == null) {\n this.updatePlaceHolder();\n }\n this.setValue(this.value);\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'width':\n setStyleAttribute(this.inputWrapper.container, { 'width': this.setWidth(newProp.width) });\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkTimeFormat();\n this.setValue(this.value);\n if (this.enableMask) {\n this.createMask();\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n break;\n case 'value':\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n if (!this.invalidValueString) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(newProp.value)) }, true);\n newProp.value = this.value;\n }\n else {\n if ((newProp.value && +new Date(+newProp.value).setMilliseconds(0)) !== +this.value) {\n newProp.value = this.checkDateValue(new Date('' + newProp.value));\n }\n }\n this.initValue = newProp.value;\n newProp.value = this.compareFormatChange(this.checkValue(newProp.value));\n }\n else {\n this.updateInputValue(this.invalidValueString);\n this.checkErrorState(this.invalidValueString);\n }\n if (this.enableMask && isNullOrUndefined(newProp.value)) {\n this.updateInputValue(this.maskedDateValue);\n this.checkErrorState(this.maskedDateValue);\n }\n this.checkValueChange(null, false);\n if (this.isPopupOpen()) {\n this.setScrollPosition();\n }\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n if (newProp.strictMode) {\n this.checkErrorState(null);\n }\n this.setProperties({ strictMode: newProp.strictMode }, true);\n this.checkValue((this.inputElement).value);\n this.checkValueChange(null, false);\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo)))) {\n if (this.popupWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n this.updateInputValue(this.maskedDateValue);\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.updateInputValue('');\n }\n }\n break;\n }\n }\n };\n TimePicker.prototype.checkInValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property({})\n ], TimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('Never')\n ], TimePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(1000)\n ], TimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(30)\n ], TimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], TimePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"itemRender\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"focus\", void 0);\n TimePicker = __decorate([\n NotifyPropertyChanges\n ], TimePicker);\n return TimePicker;\n}(Component));\nexport { TimePicker };\n/* eslint-enable @typescript-eslint/no-explicit-any */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n///\nimport { EventHandler, Internationalization, Property, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { Animation, Event, cldrData, getDefaultDateObject, detach } from '@syncfusion/ej2-base';\nimport { createElement, remove, addClass, L10n, removeClass, closest, append, attributes } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, isNullOrUndefined, formatUnit, getValue, rippleEffect } from '@syncfusion/ej2-base';\nimport { extend } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DatePicker } from '../datepicker/datepicker';\nimport { TimePickerBase } from '../timepicker/timepicker';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar DATEPICKERROOT = 'e-datepicker';\nvar DATETIMEWRAPPER = 'e-datetime-wrapper';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar HOUR = new Date().getHours();\nvar MINUTE = new Date().getMinutes();\nvar SECOND = new Date().getSeconds();\nvar MILLISECOND = new Date().getMilliseconds();\nvar ROOT = 'e-datetimepicker';\nvar DATETIMEPOPUPWRAPPER = 'e-datetimepopup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar TIMEICON = 'e-time-icon';\nvar INPUTFOCUS = 'e-input-focus';\nvar POPUPDIMENSION = '250px';\nvar ICONANIMATION = 'e-icon-anim';\nvar DISABLED = 'e-disabled';\nvar ERROR = 'e-error';\nvar CONTENT = 'e-content';\nvar NAVIGATION = 'e-navigation';\nvar ACTIVE = 'e-active';\nvar HOVER = 'e-hover';\nvar ICONS = 'e-icons';\nvar HALFPOSITION = 2;\nvar LISTCLASS = 'e-list-item';\nvar ANIMATIONDURATION = 100;\nvar OVERFLOW = 'e-time-overflow';\n/**\n * Represents the DateTimePicker component that allows user to select\n * or enter a date time value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DateTimePicker = /** @class */ (function (_super) {\n __extends(DateTimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DateTimePickerModel} options - Specifies the DateTimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DateTimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.valueWithMinutes = null;\n _this.scrollInvoked = false;\n _this.moduleName = _this.getModuleName();\n _this.formatRegex = /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yyy|yy|y|'[^']*'|'[^']*'/g;\n _this.dateFormatString = '';\n _this.dateTimeOptions = options;\n return _this;\n }\n DateTimePicker.prototype.focusHandler = function () {\n if (!this.enabled) {\n return;\n }\n addClass([this.inputWrapper.container], INPUTFOCUS);\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusIn = function () {\n _super.prototype.focusIn.call(this);\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n DateTimePicker.prototype.blurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isTimePopupOpen() && this.isPreventBlur) {\n this.inputElement.focus();\n return;\n }\n removeClass([this.inputWrapper.container], INPUTFOCUS);\n var blurArguments = {\n model: this\n };\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n this.trigger('blur', blurArguments);\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.destroy = function () {\n if (this.popupObject && this.popupObject.element.classList.contains(POPUP)) {\n this.popupObject.destroy();\n detach(this.dateTimeWrapper);\n this.dateTimeWrapper = undefined;\n this.liCollections = this.timeCollections = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n }\n var ariaAttribute = {\n 'aria-live': 'assertive', 'aria-atomic': 'true', 'aria-invalid': 'false',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObject = this.popupWrapper = null;\n this.keyboardHandler.destroy();\n }\n this.unBindInputEvents();\n this.liCollections = null;\n this.rippleFn = null;\n this.selectedElement = null;\n this.listTag = null;\n this.timeIcon = null;\n this.popupObject = null;\n this.preventArgs = null;\n this.keyboardModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DateTimePicker.prototype.render = function () {\n this.timekeyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.valueWithMinutes = null;\n this.previousDateTime = null;\n this.isPreventBlur = false;\n this.cloneElement = this.element.cloneNode(true);\n this.dateTimeFormat = this.cldrDateTimeFormat();\n this.initValue = this.value;\n if (typeof (this.min) === 'string') {\n this.min = this.checkDateValue(new Date(this.min));\n }\n if (typeof (this.max) === 'string') {\n this.max = this.checkDateValue(new Date(this.max));\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n _super.prototype.updateHtmlAttributeToElement.call(this);\n this.checkAttributes(false);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('datetimepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n _super.prototype.render.call(this);\n this.createInputElement();\n _super.prototype.updateHtmlAttributeToWrapper.call(this);\n this.bindInputEvents();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n this.setValue(true);\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(this.scrollTo))) }, true);\n this.previousDateTime = this.value && new Date(+this.value);\n if (this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n }\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n this.renderComplete();\n };\n DateTimePicker.prototype.setValue = function (isDynamic) {\n if (isDynamic === void 0) { isDynamic = false; }\n this.initValue = this.validateMinMaxRange(this.value);\n if (!this.strictMode && this.isDateObject(this.initValue)) {\n var value = this.validateMinMaxRange(this.initValue);\n Input.setValue(this.getFormattedValue(value), this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value }, true);\n }\n else {\n if (isNullOrUndefined(this.value)) {\n this.initValue = null;\n this.setProperties({ value: null }, true);\n }\n }\n this.valueWithMinutes = this.value;\n _super.prototype.updateInput.call(this, isDynamic);\n };\n DateTimePicker.prototype.validateMinMaxRange = function (value) {\n var result = value;\n if (this.isDateObject(value)) {\n result = this.validateValue(value);\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n }\n }\n this.checkValidState(result);\n return result;\n };\n DateTimePicker.prototype.checkValidState = function (value) {\n this.isValidState = true;\n if (!this.strictMode) {\n if ((+(value) > +(this.max)) || (+(value) < +(this.min))) {\n this.isValidState = false;\n }\n }\n this.checkErrorState();\n };\n DateTimePicker.prototype.checkErrorState = function () {\n if (this.isValidState) {\n removeClass([this.inputWrapper.container], ERROR);\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n }\n attributes(this.inputElement, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n DateTimePicker.prototype.validateValue = function (value) {\n var dateVal = value;\n if (this.strictMode) {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = this.max;\n }\n else if (+value < +this.min) {\n dateVal = this.min;\n }\n else if (+value > +this.max) {\n dateVal = this.max;\n }\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = value;\n }\n }\n return dateVal;\n };\n DateTimePicker.prototype.disablePopupButton = function (isDisable) {\n if (isDisable) {\n addClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n this.hide();\n }\n else {\n removeClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n }\n };\n DateTimePicker.prototype.getFormattedValue = function (value) {\n var dateOptions;\n if (!isNullOrUndefined(value)) {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n return this.globalize.formatDate(value, dateOptions);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.isDateObject = function (value) {\n return (!isNullOrUndefined(value) && !isNaN(+value)) ? true : false;\n };\n DateTimePicker.prototype.createInputElement = function () {\n removeClass([this.inputElement], DATEPICKERROOT);\n removeClass([this.inputWrapper.container], DATEWRAPPER);\n addClass([this.inputWrapper.container], DATETIMEWRAPPER);\n addClass([this.inputElement], ROOT);\n this.renderTimeIcon();\n };\n DateTimePicker.prototype.renderTimeIcon = function () {\n this.timeIcon = Input.appendSpan(INPUTWRAPPER + ' ' + TIMEICON + ' ' + ICONS, this.inputWrapper.container);\n };\n DateTimePicker.prototype.bindInputEvents = function () {\n EventHandler.add(this.timeIcon, 'mousedown', this.timeHandler, this);\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dateHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.blurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.focusHandler, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardHandler = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyAction.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DateTimePicker.prototype.unBindInputEvents = function () {\n EventHandler.remove(this.timeIcon, 'mousedown touchstart', this.timeHandler);\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.dateHandler);\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'blur', this.blurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.focusHandler);\n }\n if (this.keyboardHandler) {\n this.keyboardHandler.destroy();\n }\n };\n DateTimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.timeFormat)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.timeFormat;\n }\n return cldrTime;\n };\n DateTimePicker.prototype.cldrDateTimeFormat = function () {\n var cldrTime;\n var culture = new Internationalization(this.locale);\n var dateFormat = culture.getDatePattern({ skeleton: 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.getCldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n DateTimePicker.prototype.getCldrFormat = function (type) {\n var cldrDateTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTime;\n };\n DateTimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n DateTimePicker.prototype.getCultureTimeObject = function (ld, c) {\n if (this.calendarMode === 'Gregorian') {\n return getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.short', ld);\n }\n else {\n return getValue('main.' + '' + this.locale + '.dates.calendars.islamic.timeFormats.short', ld);\n }\n };\n DateTimePicker.prototype.timeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n if (e.currentTarget === this.timeIcon) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n else {\n this.inputElement.focus();\n this.popupCreation('time', e);\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n }\n this.isIconClicked = false;\n };\n DateTimePicker.prototype.dateHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (e.currentTarget === this.inputWrapper.buttons[0]) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n if (!isNullOrUndefined(this.popupWrapper)) {\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.show = function (type, e) {\n if ((this.enabled && this.readonly) || !this.enabled) {\n return;\n }\n else {\n if (type === 'time' && !this.dateTimeWrapper) {\n if (this.isDatePopupOpen()) {\n this.hide(e);\n }\n this.popupCreation('time', e);\n }\n else if (!this.popupObj) {\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n _super.prototype.show.call(this);\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.toggle = function (e) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n this.show('time', null);\n }\n else if (this.isTimePopupOpen()) {\n this.hide(e);\n _super.prototype.show.call(this, null, e);\n this.popupCreation('date', null);\n }\n else {\n this.show(null, e);\n }\n };\n DateTimePicker.prototype.listCreation = function () {\n var dateObject;\n if (this.calendarMode === 'Gregorian') {\n this.cldrDateTimeFormat().replace(this.formatRegex, this.TimePopupFormat());\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.dateFormatString, type: 'datetime'\n });\n }\n else {\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.cldrDateTimeFormat(), type: 'datetime', calendar: 'islamic'\n });\n }\n var value = isNullOrUndefined(this.value) ? this.inputElement.value !== '' ?\n dateObject : new Date() : this.value;\n this.valueWithMinutes = value;\n this.listWrapper = createElement('div', { className: CONTENT, attrs: { 'tabindex': '0' } });\n var min = this.startTime(value);\n var max = this.endTime(value);\n var listDetails = TimePickerBase.createListItems(this.createElement, min, max, this.globalize, this.cldrTimeFormat(), this.step);\n this.timeCollections = listDetails.collection;\n this.listTag = listDetails.list;\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options' });\n append([listDetails.list], this.listWrapper);\n this.wireTimeListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n };\n DateTimePicker.prototype.popupCreation = function (type, e) {\n if (Browser.isDevice) {\n this.element.setAttribute('readonly', 'readonly');\n }\n if (type === 'date') {\n if (!this.readonly && this.popupWrapper) {\n addClass([this.popupWrapper], DATETIMEPOPUPWRAPPER);\n attributes(this.popupWrapper, { 'id': this.element.id + '_options' });\n }\n }\n else {\n if (!this.readonly) {\n this.dateTimeWrapper = createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_timepopup', 'style': 'visibility:hidden ; display:block' }\n });\n if (!isNullOrUndefined(this.cssClass)) {\n this.dateTimeWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.listCreation();\n append([this.listWrapper], this.dateTimeWrapper);\n }\n document.body.appendChild(this.dateTimeWrapper);\n this.addTimeSelection();\n this.renderPopup();\n this.setTimeScrollPosition();\n this.openPopup(e);\n if (!Browser.isDevice || (Browser.isDevice && !this.fullScreenMode)) {\n this.popupObject.refreshPosition(this.inputElement);\n }\n if (Browser.isDevice && this.fullScreenMode) {\n this.dateTimeWrapper.style.left = '0px';\n }\n if (Browser.isDevice) {\n var dlgOverlay = this.createElement('div', { className: 'e-dlg-overlay' });\n dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.timeModal.appendChild(dlgOverlay);\n }\n }\n }\n };\n DateTimePicker.prototype.openPopup = function (e) {\n var _this = this;\n this.preventArgs = {\n cancel: false,\n popup: this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (!_this.preventArgs.cancel && !_this.readonly) {\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION,\n };\n if (_this.zIndex === 1000) {\n _this.popupObject.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObject.show(new Animation(openAnimation), null);\n }\n addClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options' });\n attributes(_this.inputElement, { 'aria-controls': _this.inputElement.id });\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n }\n });\n };\n DateTimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObject) && (this.inputWrapper.container.contains(target) && event.type !== 'mousedown' ||\n (this.popupObject.element && this.popupObject.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + (this.popupObject && this.popupObject.element.id + '\"]'))) && target !== this.inputElement\n && target !== this.timeIcon && !isNullOrUndefined(this.inputWrapper) && target !== this.inputWrapper.container && !target.classList.contains('e-dlg-overlay')) {\n if (this.isTimePopupOpen()) {\n this.hide(event);\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = ((document.activeElement === this.inputElement) && (Browser.isIE || Browser.info.name === 'edge')\n && target === this.popupObject.element);\n }\n }\n };\n DateTimePicker.prototype.isTimePopupOpen = function () {\n return (this.dateTimeWrapper && this.dateTimeWrapper.classList.contains('' + ROOT)) ? true : false;\n };\n DateTimePicker.prototype.isDatePopupOpen = function () {\n return (this.popupWrapper && this.popupWrapper.classList.contains('' + DATETIMEPOPUPWRAPPER)) ? true : false;\n };\n DateTimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n if (Browser.isDevice) {\n this.timeModal = createElement('div');\n this.timeModal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n this.timeModal.style.display = 'block';\n document.body.appendChild(this.timeModal);\n }\n var offset = 4;\n this.popupObject = new Popup(this.dateTimeWrapper, {\n width: this.setPopupWidth(),\n zIndex: this.zIndex,\n targetType: 'container',\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n enableRtl: this.enableRtl,\n offsetY: offset,\n open: function () {\n _this.dateTimeWrapper.style.visibility = 'visible';\n addClass([_this.timeIcon], ACTIVE);\n if (!Browser.isDevice) {\n _this.timekeyConfigure = extend(_this.timekeyConfigure, _this.keyConfigs);\n _this.inputEvent = new KeyboardEvents(_this.inputWrapper.container, {\n keyAction: _this.timeKeyActionHandle.bind(_this),\n keyConfigs: _this.timekeyConfigure,\n eventName: 'keydown'\n });\n }\n }, close: function () {\n removeClass([_this.timeIcon], ACTIVE);\n _this.unWireTimeListEvents();\n _this.inputElement.removeAttribute('aria-activedescendant');\n remove(_this.popupObject.element);\n _this.popupObject.destroy();\n _this.dateTimeWrapper.innerHTML = '';\n _this.listWrapper = _this.dateTimeWrapper = undefined;\n if (_this.inputEvent) {\n _this.inputEvent.destroy();\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (Browser.isDevice && this.fullScreenMode) {\n this.popupObject.element.style.display = \"flex\";\n this.popupObject.element.style.maxHeight = \"100%\";\n this.popupObject.element.style.width = \"100%\";\n }\n else {\n this.popupObject.element.style.maxHeight = POPUPDIMENSION;\n }\n if (Browser.isDevice && this.fullScreenMode) {\n var modelWrapper = createElement('div', { className: 'e-datetime-mob-popup-wrap' });\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var modelTitleSpan = this.createElement(\"span\", { className: \"e-model-title\" });\n modelTitleSpan.textContent = \"Select time\";\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.dateTimeCloseHandler, this);\n var timeContent = this.dateTimeWrapper.querySelector(\".e-content\");\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n modelWrapper.appendChild(modelHeader);\n modelWrapper.appendChild(timeContent);\n this.dateTimeWrapper.insertBefore(modelWrapper, this.dateTimeWrapper.firstElementChild);\n }\n };\n DateTimePicker.prototype.dateTimeCloseHandler = function (e) {\n this.hide();\n };\n DateTimePicker.prototype.setDimension = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n // eslint-disable-next-line no-self-assign\n width = width;\n }\n else {\n width = '100%';\n }\n return width;\n };\n DateTimePicker.prototype.setPopupWidth = function () {\n var width = this.setDimension(this.width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n DateTimePicker.prototype.wireTimeListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n DateTimePicker.prototype.unWireTimeListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n }\n };\n DateTimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setTimeHover(currentLi, HOVER);\n };\n DateTimePicker.prototype.onMouseLeave = function () {\n this.removeTimeHover(HOVER);\n };\n DateTimePicker.prototype.setTimeHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeTimeHover(className);\n addClass([li], className);\n }\n };\n DateTimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.dateTimeWrapper.getBoundingClientRect().height;\n if (Browser.isDevice && this.fullScreenMode) {\n return popupHeight;\n }\n else {\n return popupHeight > height ? height : popupHeight;\n }\n };\n DateTimePicker.prototype.changeEvent = function (e) {\n _super.prototype.changeEvent.call(this, e);\n if ((this.value && this.value.valueOf()) !== (this.previousDateTime && +this.previousDateTime.valueOf())) {\n this.valueWithMinutes = this.value;\n this.setInputValue('date');\n this.previousDateTime = this.value && new Date(+this.value);\n }\n };\n DateTimePicker.prototype.updateValue = function (e) {\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs = {\n value: this.value, event: e || null,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n this.addTimeSelection();\n this.trigger('change', this.changedArgs);\n this.previousDateTime = this.previousDate = this.value;\n }\n };\n DateTimePicker.prototype.setTimeScrollPosition = function () {\n var popupElement = this.selectedElement;\n if (!isNullOrUndefined(popupElement)) {\n this.findScrollTop(popupElement);\n }\n else if (this.dateTimeWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n DateTimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextElement = element.nextElementSibling;\n var height = nextElement ? nextElement.offsetTop : element.offsetTop;\n var lineHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n if (Browser.isDevice && this.fullScreenMode) {\n var listContent = this.dateTimeWrapper.querySelector('.e-content');\n listContent.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION + lineHeight / HALFPOSITION)) : height;\n }\n else {\n this.dateTimeWrapper.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION + lineHeight / HALFPOSITION)) : height;\n }\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setScrollTo = function () {\n var element;\n var items = this.dateTimeWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length >= 0) {\n this.scrollInvoked = true;\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setInputValue = function (type) {\n if (type === 'date') {\n this.inputElement.value = this.previousElementValue = this.getFormattedValue(this.getFullDateTime());\n this.setProperties({ value: this.getFullDateTime() }, true);\n }\n else {\n var tempVal = this.getFormattedValue(new Date(this.timeCollections[this.activeIndex]));\n Input.setValue(tempVal, this.inputElement, this.floatLabelType, this.showClearButton);\n this.previousElementValue = this.inputElement.value;\n this.setProperties({ value: new Date(this.timeCollections[this.activeIndex]) }, true);\n if (this.enableMask) {\n this.createMask();\n }\n }\n this.updateIconState();\n };\n DateTimePicker.prototype.getFullDateTime = function () {\n var value = null;\n if (this.isDateObject(this.valueWithMinutes)) {\n value = this.combineDateTime(this.valueWithMinutes);\n }\n else {\n value = this.previousDate;\n }\n return this.validateMinMaxRange(value);\n };\n DateTimePicker.prototype.createMask = function () {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n };\n DateTimePicker.prototype.combineDateTime = function (value) {\n if (this.isDateObject(value)) {\n var day = this.previousDate.getDate();\n var month = this.previousDate.getMonth();\n var year = this.previousDate.getFullYear();\n var hour = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n return new Date(year, month, day, hour, minutes, seconds);\n }\n else {\n return this.previousDate;\n }\n };\n DateTimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n if (li && li.classList.contains(LISTCLASS)) {\n this.timeValue = li.getAttribute('data-value');\n this.hide(event);\n }\n this.setSelection(li, event);\n };\n DateTimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li) && !li.classList.contains(ACTIVE)) {\n this.selectedElement = li;\n var index = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.activeIndex = index;\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.updateValue(event);\n }\n };\n DateTimePicker.prototype.setTimeActiveClass = function () {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n if (!isNullOrUndefined(collections)) {\n var items = collections.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if (this.timeCollections[i] === +(this.valueWithMinutes)) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n this.setTimeActiveDescendant();\n break;\n }\n }\n }\n }\n };\n DateTimePicker.prototype.setTimeActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement) && this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n DateTimePicker.prototype.addTimeSelection = function () {\n this.selectedElement = null;\n this.removeTimeSelection();\n this.setTimeActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n DateTimePicker.prototype.removeTimeSelection = function () {\n this.removeTimeHover(HOVER);\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n var items = this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n if (items.length) {\n removeClass(items, ACTIVE);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n DateTimePicker.prototype.removeTimeHover = function (className) {\n var hoveredItem = this.getTimeHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n }\n };\n DateTimePicker.prototype.getTimeHoverItem = function (className) {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n var hoveredItem;\n if (!isNullOrUndefined(collections)) {\n hoveredItem = collections.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n DateTimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n DateTimePicker.prototype.calculateStartEnd = function (value, range, method) {\n var day = value.getDate();\n var month = value.getMonth();\n var year = value.getFullYear();\n var hours = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n var milliseconds = value.getMilliseconds();\n if (range) {\n if (method === 'starttime') {\n return new Date(year, month, day, 0, 0, 0);\n }\n else {\n return new Date(year, month, day, 23, 59, 59);\n }\n }\n else {\n return new Date(year, month, day, hours, minutes, seconds, milliseconds);\n }\n };\n DateTimePicker.prototype.startTime = function (date) {\n var tempStartValue;\n var start;\n var tempMin = this.min;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMin.getDate() && +value.getMonth() === +tempMin.getMonth() &&\n +value.getFullYear() === +tempMin.getFullYear()) || ((+new Date(value.getFullYear(), value.getMonth(), value.getDate())) <=\n +new Date(tempMin.getFullYear(), tempMin.getMonth(), tempMin.getDate()))) {\n start = false;\n tempStartValue = this.min;\n }\n else if (+value < +this.max && +value > +this.min) {\n start = true;\n tempStartValue = value;\n }\n else if (+value >= +this.max) {\n start = true;\n tempStartValue = this.max;\n }\n return this.calculateStartEnd(tempStartValue, start, 'starttime');\n };\n DateTimePicker.prototype.TimePopupFormat = function () {\n var format = '';\n var formatCount = 0;\n var proxy = this;\n function formatValueSpecifier(formattext) {\n switch (formattext) {\n case 'd':\n case 'dd':\n case 'ddd':\n case 'dddd':\n case 'M':\n case 'MM':\n case 'MMM':\n case 'MMMM':\n case 'y':\n case 'yy':\n case 'yyy':\n case 'yyyy':\n if (format == '') {\n format = format + formattext;\n }\n else {\n format = format + \"/\" + formattext;\n }\n formatCount = formatCount + 1;\n break;\n }\n if (formatCount > 2) {\n proxy.dateFormatString = format;\n }\n return format;\n }\n return formatValueSpecifier;\n };\n DateTimePicker.prototype.endTime = function (date) {\n var tempEndValue;\n var end;\n var tempMax = this.max;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMax.getDate() && +value.getMonth() === +tempMax.getMonth() &&\n +value.getFullYear() === +tempMax.getFullYear()) || (+new Date(value.getUTCFullYear(), value.getMonth(), value.getDate()) >=\n +new Date(tempMax.getFullYear(), tempMax.getMonth(), tempMax.getDate()))) {\n end = false;\n tempEndValue = this.max;\n }\n else if (+value < +this.max && +value > +this.min) {\n end = true;\n tempEndValue = value;\n }\n else if (+value <= +this.min) {\n end = true;\n tempEndValue = this.min;\n }\n return this.calculateStartEnd(tempEndValue, end, 'endtime');\n };\n DateTimePicker.prototype.hide = function (e) {\n var _this = this;\n if (this.popupObj || this.dateTimeWrapper) {\n this.preventArgs = {\n cancel: false,\n popup: this.popupObj || this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n if (isNullOrUndefined(this.popupObj)) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.dateTimeCloseEventCallback(e, eventArgs);\n });\n }\n else {\n this.dateTimeCloseEventCallback(e, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n DateTimePicker.prototype.dateTimeCloseEventCallback = function (e, eventArgs) {\n this.preventArgs = eventArgs;\n if (!this.preventArgs.cancel) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n else if (this.isTimePopupOpen()) {\n this.closePopup(e);\n removeClass([document.body], OVERFLOW);\n if (Browser.isDevice && this.timeModal) {\n this.timeModal.style.display = 'none';\n this.timeModal.outerHTML = '';\n this.timeModal = null;\n }\n this.setTimeActiveDescendant();\n }\n }\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateTimePicker.prototype.closePopup = function (e) {\n if (this.isTimePopupOpen() && this.popupObject) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: 0\n };\n this.popupObject.hide(new Animation(animModel));\n this.inputWrapper.container.classList.remove(ICONANIMATION);\n attributes(this.inputElement, { 'aria-expanded': 'false' });\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-controls');\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n }\n };\n DateTimePicker.prototype.preRender = function () {\n this.checkFormat();\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.preRender.call(this);\n removeClass([this.inputElementCopy], [ROOT]);\n };\n DateTimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.setProperties({ min: this.validateValue(date.min) }, true);\n }\n else {\n this.setProperties({ max: this.validateValue(date.max) }, true);\n }\n };\n DateTimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['style', 'name', 'step', 'disabled', 'readonly', 'value', 'min', 'max', 'placeholder', 'type'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'disabled':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === 'true' ||\n this.inputElement.getAttribute(prop) === '' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n DateTimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n if (this.enableMask) {\n modules.push(this.maskedDateModule());\n }\n return modules;\n };\n DateTimePicker.prototype.maskedDateModule = function () {\n var modules = { args: [this], member: 'MaskedDateTime' };\n return modules;\n };\n DateTimePicker.prototype.getTimeActiveElement = function () {\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n return this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.createDateObj = function (val) {\n return val instanceof Date ? val : null;\n };\n DateTimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = this.valueWithMinutes;\n var status_1 = !isNullOrUndefined(value);\n if (this.checkDateValue(dateValue)) {\n var date = status_1 ? value.getDate() : DAY;\n var month = status_1 ? value.getMonth() : MONTH;\n var year = status_1 ? value.getFullYear() : YEAR;\n var hour = status_1 ? value.getHours() : HOUR;\n var minute = status_1 ? value.getMinutes() : MINUTE;\n var second = status_1 ? value.getSeconds() : SECOND;\n var millisecond = status_1 ? value.getMilliseconds() : MILLISECOND;\n if (!this.scrollInvoked) {\n return new Date(year, month, date, hour, minute, second, millisecond);\n }\n else {\n this.scrollInvoked = false;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds(), dateValue.getMilliseconds());\n }\n }\n }\n return null;\n };\n DateTimePicker.prototype.findNextTimeElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var dateTimeVal = null;\n var listCount = this.liCollections.length;\n if (!isNullOrUndefined(this.activeIndex) || !isNullOrUndefined(this.checkDateValue(value))) {\n if (event.action === 'home') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[0])));\n this.activeIndex = 0;\n }\n else if (event.action === 'end') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[this.timeCollections.length - 1])));\n this.activeIndex = this.timeCollections.length - 1;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < listCount; i++) {\n if (+value < this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n else {\n for (var i = listCount - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(isNullOrUndefined(dateTimeVal) ? null : new Date(dateTimeVal));\n }\n };\n DateTimePicker.prototype.setTimeValue = function (date, value) {\n var dateString;\n var time;\n var val = this.validateMinMaxRange(value);\n var newval = this.createDateObj(val);\n if (this.getFormattedValue(newval) !== (!isNullOrUndefined(this.value) ? this.getFormattedValue(this.value) : null)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = new Date(+this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = new Date(+this.valueWithMinutes);\n }\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n return time;\n };\n DateTimePicker.prototype.timeElementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value)) && !this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.setTimeValue(date, value);\n }\n return null;\n };\n DateTimePicker.prototype.timeKeyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0) {\n return;\n }\n var listCount = this.timeCollections.length;\n if (isNullOrUndefined(this.getTimeActiveElement()) || this.getTimeActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n this.activeIndex = 0;\n this.selectedElement = this.liCollections[0];\n this.timeElementValue(new Date(this.timeCollections[0]));\n }\n else {\n this.findNextTimeElement(event);\n }\n }\n }\n else {\n var nextItemValue = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (listCount) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (listCount - 1) : this.activeIndex;\n nextItemValue = isNullOrUndefined(this.timeCollections[index]) ?\n this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n this.activeIndex = 0;\n nextItemValue = this.timeCollections[0];\n }\n else if (event.action === 'end') {\n this.activeIndex = listCount - 1;\n nextItemValue = this.timeCollections[listCount - 1];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(new Date(nextItemValue));\n }\n this.isNavigate = true;\n this.setTimeHover(this.selectedElement, NAVIGATION);\n this.setTimeActiveDescendant();\n if (this.isTimePopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setTimeScrollPosition();\n }\n };\n DateTimePicker.prototype.timeKeyActionHandle = function (event) {\n if (this.enabled) {\n if (event.action !== 'right' && event.action !== 'left' && event.action !== 'tab') {\n event.preventDefault();\n }\n switch (event.action) {\n case 'up':\n case 'down':\n case 'home':\n case 'end':\n this.timeKeyHandler(event);\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs.value = this.value;\n this.addTimeSelection();\n this.previousDateTime = this.value;\n }\n }\n else {\n this.updateValue(event);\n }\n this.hide(event);\n addClass([this.inputWrapper.container], INPUTFOCUS);\n this.isNavigate = false;\n event.stopPropagation();\n break;\n case 'escape':\n this.hide(event);\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n DateTimePicker.prototype.inputKeyAction = function (event) {\n switch (event.action) {\n case 'altDownArrow':\n this.strictModeUpdate();\n this.updateInput();\n this.toggle(event);\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DateTimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DateTimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n\n */\n DateTimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n newProp.value = this.validateValue(newProp.value);\n if (this.enableMask) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(this.getFormattedValue(newProp.value), this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.valueWithMinutes = newProp.value;\n this.setProperties({ value: newProp.value }, true);\n if (this.popupObj) {\n this.popupUpdate();\n }\n this.previousDateTime = new Date(this.inputElement.value);\n this.updateInput();\n this.changeTrigger(null);\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask && this.value) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n this.updateInput();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'cssClass':\n if (!isNullOrUndefined(oldProp.cssClass)) {\n oldProp.cssClass = (oldProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newProp.cssClass)) {\n newProp.cssClass = (newProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newProp.cssClass, [this.inputWrapper.container], oldProp.cssClass);\n if (this.dateTimeWrapper) {\n Input.setCssClass(newProp.cssClass, [this.dateTimeWrapper], oldProp.cssClass);\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n if (this.dateTimeOptions && this.dateTimeOptions.placeholder == null) {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n }\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.updateInput.call(this);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkFormat();\n this.dateTimeFormat = this.formatString;\n this.setValue();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n if (!this.value) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.tabIndex = -1;\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkValue(newProp.scrollTo)))) {\n if (this.dateTimeWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.maskedDateValue = '';\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DateTimePicker.prototype.getModuleName = function () {\n return 'datetimepicker';\n };\n DateTimePicker.prototype.restoreValue = function () {\n this.previousDateTime = this.previousDate;\n this.currentDate = this.value ? this.value : new Date();\n this.valueWithMinutes = this.value;\n this.previousDate = this.value;\n this.previousElementValue = this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.getFormattedValue(this.inputValueCopy);\n };\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"timeFormat\", void 0);\n __decorate([\n Property(30)\n ], DateTimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(1000)\n ], DateTimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property({})\n ], DateTimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"values\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(new Date(1900, 0, 1))\n ], DateTimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], DateTimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], DateTimePicker.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"weekNumber\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], DateTimePicker.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], DateTimePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"destroyed\", void 0);\n DateTimePicker = __decorate([\n NotifyPropertyChanges\n ], DateTimePicker);\n return DateTimePicker;\n}(DatePicker));\nexport { DateTimePicker };\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TradeForm.vue?vue&type=style&index=0&id=b66e3fe8&prod&lang=css\"","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, extend, deleteObject, Property, addClass, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @param {Object} props - Specifies the properties\n * @param {string[]} model - Specifies the model\n * @returns {Object} Component Model\n */\nexport function getModel(props, model) {\n var obj = extend({}, props);\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((model).indexOf(prop) < 0) {\n deleteObject(obj, prop);\n }\n }\n return obj;\n}\n/** @hidden\n * @param {HTMLElement} ul - Specifies the UL element\n * @param {number} keyCode - Specifies the keycode\n * @returns {void}\n */\nexport function upDownKeyHandler(ul, keyCode) {\n var defaultIdx = keyCode === 40 ? 0 : ul.childElementCount - 1;\n var liIdx = defaultIdx;\n var li;\n var selectedLi = ul.querySelector('.e-selected');\n if (selectedLi) {\n selectedLi.classList.remove('e-selected');\n }\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains('e-focused')) {\n li = ul.children[i];\n liIdx = i;\n li.classList.remove('e-focused');\n if (keyCode === 40) {\n liIdx++;\n }\n else {\n liIdx--;\n }\n if (liIdx === (keyCode === 40 ? ul.childElementCount : -1)) {\n liIdx = defaultIdx;\n }\n }\n }\n li = ul.children[liIdx];\n liIdx = isValidLI(ul, li, liIdx, keyCode);\n if (liIdx !== -1) {\n addClass([ul.children[liIdx]], 'e-focused');\n ul.children[liIdx].focus();\n }\n}\n/**\n * Get Valid LI element\n *\n * @param {HTMLElement} ul - Specifies the UL element\n * @param {Element} li - Specifies the LI element\n * @param {number} index - Specifies the index\n * @param {number} keyCode - Specifies the keycode\n * @param {number} count - Specifies the count\n * @returns {number} - Index\n */\nfunction isValidLI(ul, li, index, keyCode, count) {\n if (count === void 0) { count = 0; }\n if (li.classList.contains('e-separator') || li.classList.contains('e-disabled')) {\n if (index === (keyCode === 40 ? ul.childElementCount - 1 : 0)) {\n index = keyCode === 40 ? 0 : ul.childElementCount - 1;\n }\n else {\n if (keyCode === 40) {\n index++;\n }\n else {\n index--;\n }\n }\n }\n li = ul.children[index];\n if (li.classList.contains('e-separator') || li.classList.contains('e-disabled')) {\n count++;\n if (count === ul.childElementCount) {\n return index = -1;\n }\n index = isValidLI(ul, li, index, keyCode, count);\n }\n return index;\n}\n/** @hidden\n * @param {HTMLElement} popup - Specifies the popup element.\n * @returns {void}\n */\nexport function setBlankIconStyle(popup, blankIcon) {\n var blankIconList = [].slice.call(popup.getElementsByClassName('e-blank-icon'));\n if (blankIcon) {\n var menuItem = [].slice.call(popup.getElementsByClassName('e-item'));\n menuItem.forEach(function (li) {\n if (li.style.paddingLeft || li.style.paddingRight) {\n li.removeAttribute('style');\n }\n });\n }\n if (!blankIconList.length) {\n return;\n }\n var iconLi = popup.querySelector('.e-item:not(.e-blank-icon):not(.e-separator)');\n if (isNullOrUndefined(iconLi)) {\n return;\n }\n if (iconLi.classList.contains('e-url')) {\n iconLi = iconLi.querySelector('.e-menu-url');\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n var cssProp;\n var enableRtl = popup.classList.contains('e-rtl');\n if (enableRtl) {\n cssProp = { padding: 'paddingRight', margin: 'marginLeft' };\n }\n else {\n cssProp = { padding: 'paddingLeft', margin: 'marginRight' };\n }\n /* eslint-disable */\n var size = parseInt(getComputedStyle(icon).fontSize, 10) + parseInt((enableRtl ? getComputedStyle(icon)[cssProp.margin] : getComputedStyle(icon)[cssProp.margin]), 10)\n + parseInt(getComputedStyle(iconLi).paddingLeft, 10) + \"px\";\n blankIconList.forEach(function (li) {\n if (li.classList.contains('e-url')) {\n li.querySelector('.e-menu-url').style[cssProp.padding] = size;\n }\n else {\n li.style[cssProp.padding] = size;\n }\n });\n /* eslint-enable */\n}\n/**\n * Defines the items of Split Button/DropDownButton.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"separator\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"url\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Internationalization, setCulture } from '@syncfusion/ej2-base';\n/**\n * ValueFormatter class to globalize the value.\n *\n * @hidden\n */\nvar ValueFormatter = /** @class */ (function () {\n function ValueFormatter(cultureName) {\n this.intl = new Internationalization();\n if (!isNullOrUndefined(cultureName)) {\n this.intl.culture = cultureName;\n }\n }\n ValueFormatter.prototype.getFormatFunction = function (format) {\n if (format.type) {\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n ValueFormatter.prototype.getParserFunction = function (format) {\n if (format.type) {\n return this.intl.getDateParser(format);\n }\n else {\n return this.intl.getNumberParser(format);\n }\n };\n ValueFormatter.prototype.fromView = function (value, format, type) {\n if ((type === 'date' || type === 'datetime' || type === 'number') && (!isNullOrUndefined(format))) {\n return format(value);\n }\n else {\n return value;\n }\n };\n ValueFormatter.prototype.toView = function (value, format) {\n var result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n };\n ValueFormatter.prototype.setCulture = function (cultureName) {\n if (!isNullOrUndefined(cultureName)) {\n setCulture(cultureName);\n }\n };\n return ValueFormatter;\n}());\nexport { ValueFormatter };\n","import { isNullOrUndefined, extend, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { attributes as addAttributes } from '@syncfusion/ej2-base';\nimport { rowDataBound, queryCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, getObject, extendObjWithFn, applyStickyLeftRightPosition, groupCaptionRowLeftRightPos, resetColspanGroupCaption } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport * as literals from '../base/string-literals';\n/**\n * RowRenderer class which responsible for building row content.\n *\n * @hidden\n */\nvar RowRenderer = /** @class */ (function () {\n function RowRenderer(serviceLocator, cellType, parent) {\n this.isSpan = false;\n this.cellType = cellType;\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n this.element = this.parent.createElement('tr', { attrs: { role: 'row' } });\n }\n /* eslint-disable */\n /**\n * Function to render the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the columns\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @param {Element} cloneNode - specifies the cloneNode\n * @returns {Element} returns the element\n */\n /* eslint-enable */\n RowRenderer.prototype.render = function (row, columns, attributes, rowTemplate, cloneNode) {\n return this.refreshRow(row, columns, attributes, rowTemplate, cloneNode);\n };\n /* eslint-disable */\n /**\n * Function to refresh the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the column\n * @param {boolean} isChanged - specifies isChanged\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.refresh = function (row, columns, isChanged, attributes, rowTemplate) {\n var _this = this;\n if (isChanged) {\n row.data = extendObjWithFn({}, row.changes);\n this.refreshMergeCells(row);\n }\n var node = this.parent.element.querySelector('[data-uid=' + row.uid + ']');\n var tr = this.refreshRow(row, columns, attributes, rowTemplate, null, isChanged);\n var cells = [].slice.call(tr.cells);\n var tempCells = [].slice.call(node.querySelectorAll('.e-templatecell'));\n if (this.parent.isReact && tempCells.length) {\n var _loop_1 = function (col) {\n if (col.template) {\n setTimeout(function () {\n _this.parent.refreshReactColumnTemplateByUid(col.uid, true);\n }, 0);\n return \"break\";\n }\n };\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n var state_1 = _loop_1(col);\n if (state_1 === \"break\")\n break;\n }\n }\n var attr = [].slice.call(tr.attributes);\n attr.map(function (item) {\n node.setAttribute(item['name'], item['value']);\n });\n node.innerHTML = '';\n for (var _a = 0, cells_1 = cells; _a < cells_1.length; _a++) {\n var cell = cells_1[_a];\n node.appendChild(cell);\n }\n };\n // tslint:disable-next-line:max-func-body-length\n RowRenderer.prototype.refreshRow = function (row, columns, attributes, rowTemplate, cloneNode, isEdit) {\n var tr = !isNullOrUndefined(cloneNode) ? cloneNode : this.element.cloneNode();\n var rowArgs = { data: row.data };\n var cellArgs = { data: row.data };\n var chekBoxEnable = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox' && col.field; })[0];\n var value = false;\n if (chekBoxEnable) {\n value = getObject(chekBoxEnable.field, rowArgs.data);\n }\n var selIndex = this.parent.getSelectedRowIndexes();\n if (row.isDataRow) {\n row.isSelected = selIndex.indexOf(row.index) > -1 || value;\n }\n if (row.isDataRow && this.parent.isCheckBoxSelection\n && this.parent.checkAllRows === 'Check' && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n row.isSelected = true;\n if (selIndex.indexOf(row.index) === -1) {\n selIndex.push(row.index);\n }\n }\n this.buildAttributeFromRow(tr, row);\n addAttributes(tr, extend({}, attributes, {}));\n setStyleAndAttributes(tr, row.attributes);\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var _loop_2 = function (i, len) {\n var cell = row.cells[parseInt(i.toString(), 10)];\n cell.isSelected = row.isSelected;\n cell.isColumnSelected = cell.column.isSelected;\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[parseInt(i.toString(), 10)].cellType\n || CellType.Data);\n var attrs = { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' };\n if (row.isExpand && row.cells[parseInt(i.toString(), 10)].cellType === CellType.DetailExpand) {\n attrs['class'] = this_1.parent.isPrinting ? 'e-detailrowcollapse' : 'e-detailrowexpand';\n }\n var td = cellRenderer.render(row.cells[parseInt(i.toString(), 10)], row.data, attrs, row.isExpand, isEdit);\n if (row.cells[parseInt(i.toString(), 10)].cellType !== CellType.Filter) {\n if (row.cells[parseInt(i.toString(), 10)].cellType === CellType.Data\n || row.cells[parseInt(i.toString(), 10)].cellType === CellType.CommandColumn) {\n var isReactChild = this_1.parent.parentDetails && this_1.parent.parentDetails.parentInstObj &&\n this_1.parent.parentDetails.parentInstObj.isReact;\n if (((this_1.parent.isReact && this_1.parent.requireTemplateRef) || (isReactChild &&\n this_1.parent.parentDetails.parentInstObj.requireTemplateRef)) && cell.isTemplate) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this_1;\n thisRef_1.parent.renderTemplates(function () {\n if (typeof (cell.column.template) !== 'string') {\n var ariaAttr = td.getAttribute('aria-label');\n td.setAttribute('aria-label', td.innerText + ariaAttr);\n }\n thisRef_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: thisRef_1.parent.requestTypeAction\n }));\n });\n }\n else {\n this_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: this_1.parent.requestTypeAction\n }));\n }\n var isRowSpanned = false;\n if (row.index > 0 && this_1.isSpan) {\n var rowsObject = this_1.parent.getRowsObject();\n var prevRowCells = this_1.parent.groupSettings.columns.length > 0 &&\n !rowsObject[row.index - 1].isDataRow ? rowsObject[row.index].cells : rowsObject[row.index - 1].cells;\n var uid_1 = 'uid';\n var prevRowCell = prevRowCells.filter(function (cell) {\n return cell.column.uid === row.cells[parseInt(i.toString(), 10)].column[\"\" + uid_1];\n })[0];\n isRowSpanned = prevRowCell.isRowSpanned ? prevRowCell.isRowSpanned : prevRowCell.rowSpanRange > 1;\n }\n if (cellArgs.colSpan > 1 || row.cells[parseInt(i.toString(), 10)].cellSpan > 1 || cellArgs.rowSpan > 1\n || isRowSpanned) {\n this_1.isSpan = true;\n var cellMerge = new CellMergeRender(this_1.serviceLocator, this_1.parent);\n td = cellMerge.render(cellArgs, row, i, td);\n }\n }\n if (!row.cells[parseInt(i.toString(), 10)].isSpanned) {\n tr.appendChild(td);\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = row.cells.length; i < len; i++) {\n _loop_2(i, len);\n }\n var emptyColspan = 0;\n if (this.parent.groupSettings.columns.length && this.parent.getFrozenLeftColumnsCount()) {\n if (tr.classList.contains('e-groupcaptionrow')) {\n var freezeCells = [].slice.call(tr.querySelectorAll('.e-leftfreeze,.e-unfreeze,.e-rightfreeze,.e-fixedfreeze,.e-freezerightborder,.e-freezeleftborder'));\n if (freezeCells.length) {\n removeClass(freezeCells, ['e-leftfreeze', 'e-unfreeze', 'e-rightfreeze', 'e-fixedfreeze', 'e-freezerightborder', 'e-freezeleftborder']);\n }\n if (tr.querySelector('.e-summarycell')) {\n groupCaptionRowLeftRightPos(tr, this.parent);\n }\n else {\n for (var j = 0; j < tr.childNodes.length; j++) {\n var td = tr.childNodes[parseInt(j.toString(), 10)];\n td.classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td, j * 30, this.parent.enableRtl, 'Left');\n if (td.classList.contains('e-groupcaption')) {\n var oldColspan = parseInt(td.getAttribute('colspan'), 10);\n var colspan = resetColspanGroupCaption(this.parent, j);\n td.setAttribute('colspan', colspan.toString());\n emptyColspan = oldColspan - colspan;\n }\n }\n if (emptyColspan) {\n var td = this.parent.createElement('TD', {\n className: 'e-groupcaption',\n attrs: { colspan: emptyColspan.toString(), id: this.parent.element.id + 'captioncell', tabindex: '-1' }\n });\n tr.appendChild(td);\n }\n }\n }\n if (tr.querySelectorAll('.e-leftfreeze').length &&\n (tr.querySelectorAll('.e-indentcell').length || tr.querySelectorAll('.e-grouptopleftcell').length)) {\n var td = tr.querySelectorAll('.e-indentcell, .e-grouptopleftcell');\n for (var i = 0; i < td.length; i++) {\n td[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td[parseInt(i.toString(), 10)], i * 30, this.parent.enableRtl, 'Left');\n }\n }\n }\n var args = { row: tr, rowHeight: this.parent.rowHeight };\n if (row.isDataRow) {\n var eventArg_1 = extend(rowArgs, args);\n eventArg_1.isSelectable = true;\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var cellTemplate = eventArg_1.row.querySelectorAll('.e-templatecell');\n if (((this.parent.isReact && this.parent.requireTemplateRef) || (isReactChild &&\n this.parent.parentDetails.parentInstObj.requireTemplateRef)) && cellTemplate.length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this;\n thisRef_2.parent.renderTemplates(function () {\n thisRef_2.parent.trigger(rowDataBound, eventArg_1);\n if (!eventArg_1.isSelectable) {\n row.isSelectable = eventArg_1.isSelectable;\n thisRef_2.disableRowSelection(thisRef_2, row, args, eventArg_1);\n }\n });\n }\n else {\n this.parent.trigger(rowDataBound, eventArg_1);\n }\n row.isSelectable = eventArg_1.isSelectable;\n var isDraggable = this.parent.isRowDragable();\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n var primaryKey_1 = this.parent.getPrimaryKeyFieldNames()[0];\n var pKey_1 = row.data ? row.data[\"\" + primaryKey_1] : null;\n var SelectedRecords = eventArg_1.isSelectable ? this.parent.partialSelectedRecords :\n this.parent.disableSelectedRecords;\n if (!SelectedRecords.some(function (data) { return data[\"\" + primaryKey_1] === pKey_1; })) {\n SelectedRecords.push(row.data);\n }\n }\n if (!eventArg_1.isSelectable) {\n this.disableRowSelection(this, row, args, eventArg_1);\n }\n if (this.parent.childGrid || isDraggable || this.parent.detailTemplate) {\n var td = tr.querySelectorAll('.e-rowcell:not(.e-hide)')[0];\n if (td) {\n td.classList.add('e-detailrowvisible');\n }\n }\n }\n if (this.parent.enableVirtualization) {\n rowArgs.rowHeight = this.parent.rowHeight;\n }\n if (rowArgs.rowHeight) {\n tr.style.height = rowArgs.rowHeight + 'px';\n }\n else if (this.parent.rowHeight && (tr.querySelector('.e-headercell') || tr.querySelector('.e-groupcaption'))) {\n tr.style.height = this.parent.rowHeight + 'px';\n }\n if (row.cssClass) {\n tr.classList.add(row.cssClass);\n }\n if (row.lazyLoadCssClass) {\n tr.classList.add(row.lazyLoadCssClass);\n }\n if (this.parent.rowRenderingMode === 'Vertical' && this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Header'\n || this.parent.textWrapSettings.wrapMode === 'Both')) {\n tr.classList.add('e-verticalwrap');\n }\n var vFTable = this.parent.enableColumnVirtualization;\n if (!vFTable && this.parent.aggregates.length && this.parent.element.scrollHeight > this.parent.height) {\n for (var i = 0; i < this.parent.aggregates.length; i++) {\n var property = 'properties';\n var column = 'columns';\n if (this.parent.aggregates[parseInt(i.toString(), 10)][\"\" + property][\"\" + column][0].footerTemplate) {\n var summarycell = [].slice.call(tr.getElementsByClassName('e-summarycell'));\n if (summarycell.length) {\n var lastSummaryCell = (summarycell[summarycell.length - 1]);\n addClass([lastSummaryCell], ['e-lastsummarycell']);\n var firstSummaryCell = (summarycell[0]);\n addClass([firstSummaryCell], ['e-firstsummarycell']);\n }\n }\n }\n }\n return tr;\n };\n RowRenderer.prototype.disableRowSelection = function (thisRef, row, args, eventArg) {\n var selIndex = this.parent.getSelectedRowIndexes();\n this.parent.selectionModule.isPartialSelection = true;\n row.isSelected = false;\n var selRowIndex = selIndex.indexOf(row.index);\n if (selRowIndex > -1) {\n selIndex.splice(selRowIndex, 1);\n }\n var chkBox = args.row.querySelectorAll('.e-rowcell.e-gridchkbox');\n var isDrag = eventArg.row.querySelector('.e-rowdragdrop');\n var cellIdx = thisRef.parent.groupSettings.columns.length + (isDrag || thisRef.parent.isDetail() ? 1 : 0);\n for (var i = 0; i < chkBox.length; i++) {\n chkBox[parseInt(i.toString(), 10)].firstElementChild.classList.add('e-checkbox-disabled');\n chkBox[parseInt(i.toString(), 10)].querySelector('.e-frame').classList.remove('e-check');\n }\n if (row.cells.length) {\n for (var i = cellIdx; i < row.cells.length; i++) {\n var cell = eventArg.row.querySelector('.e-rowcell[data-colindex=\"' + row.cells[parseInt(i.toString(), 10)].index + '\"]');\n if (cell) {\n removeClass([cell], ['e-selectionbackground', 'e-active']);\n }\n }\n }\n if (isDrag) {\n removeClass([isDrag], ['e-selectionbackground', 'e-active']);\n }\n };\n ;\n RowRenderer.prototype.refreshMergeCells = function (row) {\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n cell.isSpanned = false;\n }\n return row;\n };\n /* eslint-disable */\n /**\n * Function to check and add alternative row css class.\n *\n * @param {Element} tr - specifies the tr element\n * @param {Row} row - specifies the row\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.buildAttributeFromRow = function (tr, row) {\n var attr = {};\n var prop = { 'rowindex': literals.dataRowIndex, 'dataUID': 'data-uid', 'ariaSelected': 'aria-selected' };\n var classes = [];\n if (row.isDataRow) {\n classes.push(literals.row);\n }\n if (row.isAltRow) {\n classes.push('e-altrow');\n }\n if (row.isCaptionRow) {\n classes.push('e-groupcaptionrow');\n }\n if (row.isAggregateRow && row.parentUid) {\n classes.push('e-groupfooterrow');\n }\n if (!isNullOrUndefined(row.index)) {\n attr[literals.ariaRowIndex] = row.index + 1;\n attr[prop.rowindex] = row.index;\n }\n if (row.rowSpan) {\n attr.rowSpan = row.rowSpan;\n }\n if (row.uid) {\n attr[prop.dataUID] = row.uid;\n }\n if (row.isSelected) {\n attr[prop.ariaSelected] = true;\n }\n if (row.visible === false) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(tr, attr);\n };\n return RowRenderer;\n}());\nexport { RowRenderer };\n","import { isNullOrUndefined, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Row } from '../models/row';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\nimport { getUid } from '../base/util';\nimport { getForeignData } from '../../grid/base/util';\nimport * as events from '../base/constant';\n/**\n * RowModelGenerator is used to generate grid data rows.\n *\n * @hidden\n */\nvar RowModelGenerator = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function RowModelGenerator(parent) {\n this.parent = parent;\n }\n RowModelGenerator.prototype.generateRows = function (data, args) {\n var rows = [];\n var startIndex = this.parent.enableVirtualization && args ? args.startIndex : 0;\n startIndex = this.parent.enableInfiniteScrolling && args ? this.getInfiniteIndex(args) : startIndex;\n if (this.parent.enableImmutableMode && args && args.startIndex) {\n startIndex = args.startIndex;\n }\n for (var i = 0, len = Object.keys(data).length; i < len; i++, startIndex++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(data[parseInt(i.toString(), 10)], startIndex);\n }\n return rows;\n };\n RowModelGenerator.prototype.ensureColumns = function () {\n //TODO: generate dummy column for group, detail here;\n var cols = [];\n if (this.parent.detailTemplate || this.parent.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n cols.push(this.generateCell(args, null, CellType.DetailExpand));\n }\n if (this.parent.isRowDragable()) {\n cols.push(this.generateCell({}, null, CellType.RowDragIcon));\n }\n return cols;\n };\n RowModelGenerator.prototype.generateRow = function (data, index, cssClass, indent, pid, tIndex, parentUid) {\n var options = {};\n options.foreignKeyData = {};\n options.uid = getUid('grid-row');\n options.data = data;\n options.index = index;\n options.indent = indent;\n options.tIndex = tIndex;\n options.isDataRow = true;\n options.parentGid = pid;\n options.parentUid = parentUid;\n if (this.parent.isPrinting) {\n if (this.parent.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (this.parent.hierarchyPrintMode === 'Expanded' && this.parent.expandedRows && this.parent.expandedRows[parseInt(index.toString(), 10)]) {\n options.isExpand = this.parent.expandedRows[parseInt(index.toString(), 10)].isExpand;\n }\n }\n options.cssClass = cssClass;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isSelected = this.parent.getSelectedRowIndexes().indexOf(index) > -1;\n this.refreshForeignKeyRow(options);\n var cells = this.ensureColumns();\n var row = new Row(options, this.parent);\n row.cells = this.parent.getFrozenMode() === 'Right' ? this.generateCells(options).concat(cells)\n : cells.concat(this.generateCells(options));\n return row;\n };\n RowModelGenerator.prototype.refreshForeignKeyRow = function (options) {\n var foreignKeyColumns = this.parent.getForeignKeyColumns();\n for (var i = 0; i < foreignKeyColumns.length; i++) {\n setValue(foreignKeyColumns[parseInt(i.toString(), 10)].field, getForeignData(foreignKeyColumns[parseInt(i.toString(), 10)], options.data), options.foreignKeyData);\n }\n };\n RowModelGenerator.prototype.generateCells = function (options) {\n var dummies = this.parent.getColumns();\n var tmp = [];\n for (var i = 0; i < dummies.length; i++) {\n tmp.push(this.generateCell(dummies[parseInt(i.toString(), 10)], options.uid, isNullOrUndefined(dummies[parseInt(i.toString(), 10)].commands) ? undefined : CellType.CommandColumn, null, i, options.foreignKeyData));\n }\n return tmp;\n };\n /**\n *\n * @param {Column} column - Defines column details\n * @param {string} rowId - Defines row id\n * @param {CellType} cellType - Defines cell type\n * @param {number} colSpan - Defines colSpan\n * @param {number} oIndex - Defines index\n * @param {Object} foreignKeyData - Defines foreign key data\n * @returns {Cell} returns cell model\n * @hidden\n */\n RowModelGenerator.prototype.generateCell = function (column, rowId, cellType, colSpan, oIndex, foreignKeyData) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(column.field || column.template),\n 'isTemplate': !isNullOrUndefined(column.template),\n 'rowID': rowId,\n 'column': column,\n 'cellType': !isNullOrUndefined(cellType) ? cellType : CellType.Data,\n 'colSpan': colSpan,\n 'commands': column.commands,\n 'isForeignKey': column.isForeignColumn && column.isForeignColumn(),\n 'foreignKeyData': column.isForeignColumn && column.isForeignColumn() && getValue(column.field, foreignKeyData)\n };\n if (opt.isDataCell || opt.column.type === 'checkbox' || opt.commands) {\n opt.index = oIndex;\n }\n return new Cell(opt);\n };\n RowModelGenerator.prototype.refreshRows = function (input) {\n for (var i = 0; i < input.length; i++) {\n this.refreshForeignKeyRow(input[parseInt(i.toString(), 10)]);\n input[parseInt(i.toString(), 10)].cells = this.generateCells(input[parseInt(i.toString(), 10)]);\n }\n return input;\n };\n RowModelGenerator.prototype.getInfiniteIndex = function (args) {\n return args.requestType === 'infiniteScroll' || args.requestType === 'delete' || args.action === 'add'\n ? (isNullOrUndefined(args.startIndex) ? args['index'] : args.startIndex) : 0;\n };\n return RowModelGenerator;\n}());\nexport { RowModelGenerator };\n","/**\n * Defines types of Cell\n *\n * @hidden\n */\nexport var CellType;\n(function (CellType) {\n /** Defines CellType as Data */\n CellType[CellType[\"Data\"] = 0] = \"Data\";\n /** Defines CellType as Header */\n CellType[CellType[\"Header\"] = 1] = \"Header\";\n /** Defines CellType as Summary */\n CellType[CellType[\"Summary\"] = 2] = \"Summary\";\n /** Defines CellType as GroupSummary */\n CellType[CellType[\"GroupSummary\"] = 3] = \"GroupSummary\";\n /** Defines CellType as CaptionSummary */\n CellType[CellType[\"CaptionSummary\"] = 4] = \"CaptionSummary\";\n /** Defines CellType as Filter */\n CellType[CellType[\"Filter\"] = 5] = \"Filter\";\n /** Defines CellType as Indent */\n CellType[CellType[\"Indent\"] = 6] = \"Indent\";\n /** Defines CellType as GroupCaption */\n CellType[CellType[\"GroupCaption\"] = 7] = \"GroupCaption\";\n /** Defines CellType as GroupCaptionEmpty */\n CellType[CellType[\"GroupCaptionEmpty\"] = 8] = \"GroupCaptionEmpty\";\n /** Defines CellType as Expand */\n CellType[CellType[\"Expand\"] = 9] = \"Expand\";\n /** Defines CellType as HeaderIndent */\n CellType[CellType[\"HeaderIndent\"] = 10] = \"HeaderIndent\";\n /** Defines CellType as StackedHeader */\n CellType[CellType[\"StackedHeader\"] = 11] = \"StackedHeader\";\n /** Defines CellType as DetailHeader */\n CellType[CellType[\"DetailHeader\"] = 12] = \"DetailHeader\";\n /** Defines CellType as DetailExpand */\n CellType[CellType[\"DetailExpand\"] = 13] = \"DetailExpand\";\n /** Defines CellType as CommandColumn */\n CellType[CellType[\"CommandColumn\"] = 14] = \"CommandColumn\";\n /** Defines CellType as DetailFooterIntent */\n CellType[CellType[\"DetailFooterIntent\"] = 15] = \"DetailFooterIntent\";\n /** Defines CellType as RowDrag */\n CellType[CellType[\"RowDragIcon\"] = 16] = \"RowDragIcon\";\n /** Defines CellType as RowDragHeader */\n CellType[CellType[\"RowDragHIcon\"] = 17] = \"RowDragHIcon\";\n})(CellType || (CellType = {}));\n/**\n * Defines types of Render\n *\n * @hidden\n */\nexport var RenderType;\n(function (RenderType) {\n /** Defines RenderType as Header */\n RenderType[RenderType[\"Header\"] = 0] = \"Header\";\n /** Defines RenderType as Content */\n RenderType[RenderType[\"Content\"] = 1] = \"Content\";\n /** Defines RenderType as Summary */\n RenderType[RenderType[\"Summary\"] = 2] = \"Summary\";\n})(RenderType || (RenderType = {}));\n/**\n * Defines Predefined toolbar items.\n *\n * @hidden\n */\nexport var ToolbarItem;\n(function (ToolbarItem) {\n ToolbarItem[ToolbarItem[\"Add\"] = 0] = \"Add\";\n ToolbarItem[ToolbarItem[\"Edit\"] = 1] = \"Edit\";\n ToolbarItem[ToolbarItem[\"Update\"] = 2] = \"Update\";\n ToolbarItem[ToolbarItem[\"Delete\"] = 3] = \"Delete\";\n ToolbarItem[ToolbarItem[\"Cancel\"] = 4] = \"Cancel\";\n ToolbarItem[ToolbarItem[\"Print\"] = 5] = \"Print\";\n ToolbarItem[ToolbarItem[\"Search\"] = 6] = \"Search\";\n ToolbarItem[ToolbarItem[\"ColumnChooser\"] = 7] = \"ColumnChooser\";\n ToolbarItem[ToolbarItem[\"PdfExport\"] = 8] = \"PdfExport\";\n ToolbarItem[ToolbarItem[\"ExcelExport\"] = 9] = \"ExcelExport\";\n ToolbarItem[ToolbarItem[\"CsvExport\"] = 10] = \"CsvExport\";\n ToolbarItem[ToolbarItem[\"WordExport\"] = 11] = \"WordExport\";\n})(ToolbarItem || (ToolbarItem = {}));\n/**\n * Defines types of responsive dialogs\n *\n * @hidden\n */\nexport var ResponsiveDialogAction;\n(function (ResponsiveDialogAction) {\n /** Defines dialog type as Edit */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isEdit\"] = 0] = \"isEdit\";\n /** Defines dialog type as Add */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isAdd\"] = 1] = \"isAdd\";\n /** Defines dialog type as Sort */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isSort\"] = 2] = \"isSort\";\n /** Defines dialog type as Filter */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isFilter\"] = 3] = \"isFilter\";\n /** Defines dialog type as ColMenu */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isColMenu\"] = 4] = \"isColMenu\";\n /** Defines dialog type as ColumChooser */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isColumnChooser\"] = 5] = \"isColumnChooser\";\n})(ResponsiveDialogAction || (ResponsiveDialogAction = {}));\n/**\n * Defines responsive toolbar actions\n *\n * @hidden\n */\nexport var ResponsiveToolbarAction;\n(function (ResponsiveToolbarAction) {\n /** Defines initial responsive toolbar buttons */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isInitial\"] = 0] = \"isInitial\";\n /** Defines responsive toolbar search */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isSearch\"] = 1] = \"isSearch\";\n})(ResponsiveToolbarAction || (ResponsiveToolbarAction = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID, removeClass } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach, createElement as buildTag } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-vscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_VSCROLLBAR = 'e-vscroll-bar';\nvar CLS_VSCROLLCON = 'e-vscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVUPARROW = 'e-nav-up-arrow';\nvar CLS_NAVDOWNARROW = 'e-nav-down-arrow';\nvar CLS_VSCROLLNAV = 'e-scroll-nav';\nvar CLS_VSCROLLNAVUP = 'e-scroll-up-nav';\nvar CLS_VSCROLLNAVDOWN = 'e-scroll-down-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_UPOVERLAY = 'e-scroll-up-overlay';\nvar CLS_DOWNOVERLAY = 'e-scroll-down-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * VScroll module is introduces vertical scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs vertical scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
\n * \n * ```\n */\nvar VScroll = /** @class */ (function (_super) {\n __extends(VScroll, _super);\n /**\n * Initializes a new instance of the VScroll class.\n *\n * @param {VScrollModel} options - Specifies VScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which vertical scrolling applies.\n */\n function VScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var ele = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (ele.id === '') {\n ele.id = getUniqueID('vscroll');\n this.uniqueId = true;\n }\n ele.style.display = 'block';\n if (this.enableRtl) {\n ele.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the vertical scroll rendering\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollEventHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlayElement(this.element);\n }\n this.setScrollState();\n EventHandler.add(this.element, 'wheel', this.wheelEventHandler, this);\n };\n VScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetHeight;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n VScroll.prototype.initialize = function () {\n var scrollCnt = buildTag('div', { className: CLS_VSCROLLCON });\n var scrollBar = buildTag('div', { className: CLS_VSCROLLBAR });\n scrollBar.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollCnt.appendChild(ele_1);\n }\n scrollBar.appendChild(scrollCnt);\n ele.appendChild(scrollBar);\n scrollBar.style.overflow = 'hidden';\n this.scrollEle = scrollBar;\n this.scrollItems = scrollCnt;\n };\n VScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n VScroll.prototype.getModuleName = function () {\n return 'vScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n VScroll.prototype.destroy = function () {\n var el = this.element;\n el.style.display = '';\n removeClass([this.element], [CLS_ROOT, CLS_DEVICE, CLS_RTL]);\n var navs = selectAll('.e-' + el.id + '_nav.' + CLS_VSCROLLNAV, el);\n var overlays = selectAll('.' + CLS_OVERLAY, el);\n [].slice.call(overlays).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n el.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (navs.length > 0) {\n detach(navs[0]);\n if (!isNullOrUndefined(navs[1])) {\n detach(navs[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollEventHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the VScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, VScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n VScroll.prototype.disable = function (value) {\n var navEle = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEle).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n VScroll.prototype.createOverlayElement = function (element) {\n var id = element.id.concat('_nav');\n var downOverlayEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_DOWNOVERLAY });\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var downEle = buildTag('div', { id: id.concat('down'), className: clsDown });\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n downEle.appendChild(navItem);\n var upEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_UPOVERLAY });\n if (this.ieCheck) {\n downEle.classList.add('e-ie-align');\n }\n element.appendChild(downOverlayEle);\n element.appendChild(downEle);\n element.insertBefore(upEle, element.firstChild);\n this.eventBinding([downEle]);\n };\n VScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var nav = buildTag('div', { id: id.concat('_down'), className: clsDown });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsUp = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVUP);\n var navElement = buildTag('div', { id: id.concat('_up'), className: clsUp + ' ' + CLS_DISABLE });\n navElement.setAttribute('aria-disabled', 'true');\n var navUpItem = buildTag('div', { className: CLS_NAVUPARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navElement.appendChild(navUpItem);\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n element.appendChild(nav);\n element.insertBefore(navElement, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navElement.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navElement]);\n };\n VScroll.prototype.onKeyPress = function (ev) {\n var _this = this;\n if (ev.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, ev.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n VScroll.prototype.onKeyUp = function (ev) {\n if (ev.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n ev.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n VScroll.prototype.eventBinding = function (element) {\n var _this = this;\n [].slice.call(element).forEach(function (ele) {\n new Touch(ele, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n ele.addEventListener('keydown', _this.onKeyPress.bind(_this));\n ele.addEventListener('keyup', _this.onKeyUp.bind(_this));\n ele.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n ele.addEventListener('touchend', _this.repeatScroll.bind(_this));\n ele.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(ele, 'click', _this.clickEventHandler, _this);\n });\n };\n VScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n VScroll.prototype.tabHoldHandler = function (ev) {\n var _this = this;\n var trgt = ev.originalEvent.target;\n trgt = this.contains(trgt, CLS_VSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDistance = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDistance, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n VScroll.prototype.contains = function (element, className) {\n return element.classList.contains(className);\n };\n VScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var classList = trgt.classList;\n if (classList.contains(CLS_VSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (classList.contains(CLS_NAVDOWNARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else if (classList.contains(CLS_NAVUPARROW)) {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n };\n VScroll.prototype.clickEventHandler = function (event) {\n this.eleScrolling(this.scrollStep, event.target, false);\n };\n VScroll.prototype.wheelEventHandler = function (e) {\n e.preventDefault();\n this.frameScrollRequest(this.scrollStep, (e.deltaY > 0 ? 'add' : ''), false);\n };\n VScroll.prototype.swipeHandler = function (e) {\n var swipeElement = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceY / (e.velocity * 10);\n }\n else {\n distance = e.distanceY / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Up') {\n swipeElement.scrollTop += distance * step;\n }\n else if (e.swipeDirection === 'Down') {\n swipeElement.scrollTop -= distance * step;\n }\n start -= 0.02;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollTop += scrollVal;\n }\n else {\n this.scrollEle.scrollTop -= scrollVal;\n }\n };\n VScroll.prototype.frameScrollRequest = function (scrollValue, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollValue, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollValue -= el.offsetHeight;\n });\n }\n var animate = function () {\n if (scrollValue < step) {\n window.cancelAnimationFrame(step);\n }\n else {\n _this.scrollUpdating(step, action);\n scrollValue -= step;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.touchHandler = function (e) {\n var el = this.scrollEle;\n var distance = e.distanceY;\n if (e.scrollDirection === 'Up') {\n el.scrollTop = el.scrollTop + distance;\n }\n else if (e.scrollDirection === 'Down') {\n el.scrollTop = el.scrollTop - distance;\n }\n };\n VScroll.prototype.arrowDisabling = function (addDisableCls, removeDisableCls) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisableCls) ? removeDisableCls : addDisableCls;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisableCls)) {\n classList(arrowIcon, [CLS_NAVDOWNARROW], [CLS_NAVUPARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVUPARROW], [CLS_NAVDOWNARROW]);\n }\n }\n else {\n addDisableCls.classList.add(CLS_DISABLE);\n addDisableCls.setAttribute('aria-disabled', 'true');\n addDisableCls.removeAttribute('tabindex');\n removeDisableCls.classList.remove(CLS_DISABLE);\n removeDisableCls.setAttribute('aria-disabled', 'false');\n removeDisableCls.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n VScroll.prototype.scrollEventHandler = function (e) {\n var target = e.target;\n var height = target.offsetHeight;\n var navUpEle = this.element.querySelector('.' + CLS_VSCROLLNAVUP);\n var navDownEle = this.element.querySelector('.' + CLS_VSCROLLNAVDOWN);\n var upOverlay = this.element.querySelector('.' + CLS_UPOVERLAY);\n var downOverlay = this.element.querySelector('.' + CLS_DOWNOVERLAY);\n var scrollTop = target.scrollTop;\n if (scrollTop <= 0) {\n scrollTop = -scrollTop;\n }\n if (this.isDevice) {\n if (scrollTop < OVERLAY_MAXWID) {\n upOverlay.style.height = scrollTop + 'px';\n }\n else {\n upOverlay.style.height = '40px';\n }\n if ((target.scrollHeight - Math.ceil(height + scrollTop)) < OVERLAY_MAXWID) {\n downOverlay.style.height = (target.scrollHeight - Math.ceil(height + scrollTop)) + 'px';\n }\n else {\n downOverlay.style.height = '40px';\n }\n }\n if (scrollTop === 0) {\n this.arrowDisabling(navUpEle, navDownEle);\n }\n else if (Math.ceil(height + scrollTop + .1) >= target.scrollHeight) {\n this.arrowDisabling(navDownEle, navUpEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_VSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {VScrollModel} newProp - It contains the new value of data.\n * @param {VScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n VScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(CLS_RTL);\n }\n else {\n this.element.classList.remove(CLS_RTL);\n }\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], VScroll.prototype, \"scrollStep\", void 0);\n VScroll = __decorate([\n NotifyPropertyChanges\n ], VScroll);\n return VScroll;\n}(Component));\nexport { VScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { selectAll, select, createElement, Base, detach } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined, EventHandler } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Event, onIntlChange } from '@syncfusion/ej2-base';\nimport { Internationalization, L10n } from '@syncfusion/ej2-base';\n/**\n * global declarations\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport var regex = {\n /* eslint-disable no-useless-escape */\n EMAIL: new RegExp('^[A-Za-z0-9._%+-]{1,}@[A-Za-z0-9._%+-]{1,}([.]{1}[a-zA-Z0-9]{2,}' +\n '|[.]{1}[a-zA-Z0-9]{2,4}[.]{1}[a-zA-Z0-9]{2,4})$'),\n /* eslint-disable-next-line security/detect-unsafe-regex */\n URL: /^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/m,\n DATE_ISO: new RegExp('^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$'),\n DIGITS: new RegExp('^[0-9]*$'),\n PHONE: new RegExp('^[+]?[0-9]{9,13}$'),\n CREDITCARD: new RegExp('^\\\\d{13,16}$')\n /* eslint-enable no-useless-escape */\n};\n/**\n * ErrorOption values\n *\n * @private\n */\nexport var ErrorOption;\n(function (ErrorOption) {\n /**\n * Defines the error message.\n */\n ErrorOption[ErrorOption[\"Message\"] = 0] = \"Message\";\n /**\n * Defines the error element type.\n */\n ErrorOption[ErrorOption[\"Label\"] = 1] = \"Label\";\n})(ErrorOption || (ErrorOption = {}));\n/**\n * FormValidator class enables you to validate the form fields based on your defined rules\n * ```html\n *
\n * \n * \n *
\n * \n * ```\n */\nvar FormValidator = /** @class */ (function (_super) {\n __extends(FormValidator, _super);\n /**\n * Initializes the FormValidator.\n *\n * @param {string | HTMLFormElement} element - Specifies the element to render as component.\n * @param {FormValidatorModel} options - Specifies the FormValidator model.\n * @private\n */\n function FormValidator(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.validated = [];\n _this.errorRules = [];\n _this.allowSubmit = false;\n _this.required = 'required';\n _this.infoElement = null;\n _this.inputElement = null;\n _this.selectQuery = 'input:not([type=reset]):not([type=button]), select, textarea';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.localyMessage = {};\n /**\n * Specifies the default messages for validation rules.\n *\n * @default { List of validation message }\n */\n _this.defaultMessages = {\n required: 'This field is required.',\n email: 'Please enter a valid email address.',\n url: 'Please enter a valid URL.',\n date: 'Please enter a valid date.',\n dateIso: 'Please enter a valid date ( ISO ).',\n creditcard: 'Please enter valid card number',\n number: 'Please enter a valid number.',\n digits: 'Please enter only digits.',\n maxLength: 'Please enter no more than {0} characters.',\n minLength: 'Please enter at least {0} characters.',\n rangeLength: 'Please enter a value between {0} and {1} characters long.',\n range: 'Please enter a value between {0} and {1}.',\n max: 'Please enter a value less than or equal to {0}.',\n min: 'Please enter a value greater than or equal to {0}.',\n regex: 'Please enter a correct value.',\n tel: 'Please enter a valid phone number.',\n pattern: 'Please enter a correct pattern value.',\n equalTo: 'Please enter the valid match text'\n };\n if (typeof _this.rules === 'undefined') {\n _this.rules = {};\n }\n _this.l10n = new L10n('formValidator', _this.defaultMessages, _this.locale);\n if (_this.locale) {\n _this.localeFunc();\n }\n onIntlChange.on('notifyExternalChange', _this.afterLocalization, _this);\n element = typeof element === 'string' ? select(element, document) : element;\n // Set novalidate to prevent default HTML5 form validation\n if (_this.element != null) {\n _this.element.setAttribute('novalidate', '');\n _this.inputElements = selectAll(_this.selectQuery, _this.element);\n _this.createHTML5Rules();\n _this.wireEvents();\n }\n else {\n return undefined;\n }\n return _this;\n }\n FormValidator_1 = FormValidator;\n /* eslint-enable @typescript-eslint/no-explicit-any */\n /**\n * Add validation rules to the corresponding input element based on `name` attribute.\n *\n * @param {string} name `name` of form field.\n * @param {Object} rules Validation rules for the corresponding element.\n * @returns {void}\n */\n FormValidator.prototype.addRules = function (name, rules) {\n if (name) {\n // eslint-disable-next-line no-prototype-builtins\n if (this.rules.hasOwnProperty(name)) {\n extend(this.rules[\"\" + name], rules, {});\n }\n else {\n this.rules[\"\" + name] = rules;\n }\n }\n };\n /**\n * Remove validation to the corresponding field based on name attribute.\n * When no parameter is passed, remove all the validations in the form.\n *\n * @param {string} name Input name attribute value.\n * @param {string[]} rules List of validation rules need to be remove from the corresponding element.\n * @returns {void}\n */\n FormValidator.prototype.removeRules = function (name, rules) {\n if (!name && !rules) {\n this.rules = {};\n }\n else if (this.rules[\"\" + name] && !rules) {\n delete this.rules[\"\" + name];\n }\n else if (!isNullOrUndefined(this.rules[\"\" + name] && rules)) {\n for (var i = 0; i < rules.length; i++) {\n delete this.rules[\"\" + name][rules[parseInt(i.toString())]];\n }\n }\n else {\n return;\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Validate the current form values using defined rules.\n * Returns `true` when the form is valid otherwise `false`\n *\n * @param {string} selected - Optional parameter to validate specified element.\n * @returns {boolean}\n */\n FormValidator.prototype.validate = function (selected) {\n var rules = Object.keys(this.rules);\n if (selected && rules.length) {\n this.validateRules(selected);\n //filter the selected element it don't have any valid input element\n return rules.indexOf(selected) !== -1 && this.errorRules.filter(function (data) {\n return data.name === selected;\n }).length === 0;\n }\n else {\n this.errorRules = [];\n for (var _i = 0, rules_1 = rules; _i < rules_1.length; _i++) {\n var name_1 = rules_1[_i];\n this.validateRules(name_1);\n }\n return this.errorRules.length === 0;\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Reset the value of all the fields in form.\n *\n * @returns {void}\n */\n FormValidator.prototype.reset = function () {\n this.element.reset();\n this.clearForm();\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Get input element by name.\n *\n * @param {string} name - Input element name attribute value.\n * @returns {HTMLInputElement}\n */\n FormValidator.prototype.getInputElement = function (name) {\n this.inputElement = (select('[name=\"' + name + '\"]', this.element));\n return this.inputElement;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Destroy the form validator object and error elements.\n *\n * @returns {void}\n */\n FormValidator.prototype.destroy = function () {\n this.reset();\n this.unwireEvents();\n this.rules = {};\n var elements = selectAll('.' + this.errorClass + ', .' + this.validClass, this.element);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element = elements_1[_i];\n detach(element);\n }\n _super.prototype.destroy.call(this);\n this.infoElement = null;\n onIntlChange.off('notifyExternalChange', this.afterLocalization);\n };\n /**\n * @param {FormValidatorModel} newProp - Returns the dynamic property value of the component.\n * @param {FormValidatorModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FormValidator.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'locale':\n this.localeFunc();\n break;\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n FormValidator.prototype.localeFunc = function () {\n for (var _i = 0, _a = Object.keys(this.defaultMessages); _i < _a.length; _i++) {\n var key = _a[_i];\n this.l10n.setLocale(this.locale);\n var value = this.l10n.getConstant(key);\n this.localyMessage[\"\" + key] = value;\n }\n };\n /**\n * @private\n * @returns {string} - Returns the component name.\n */\n FormValidator.prototype.getModuleName = function () {\n return 'formvalidator';\n };\n /**\n * @param {any} args - Specifies the culture name.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n FormValidator.prototype.afterLocalization = function (args) {\n this.locale = args.locale;\n this.localeFunc();\n };\n /**\n * Allows you to refresh the form validator base events to the elements inside the form.\n *\n * @returns {void}\n */\n FormValidator.prototype.refresh = function () {\n this.unwireEvents();\n this.inputElements = selectAll(this.selectQuery, this.element);\n this.wireEvents();\n };\n FormValidator.prototype.clearForm = function () {\n this.errorRules = [];\n this.validated = [];\n var elements = selectAll(this.selectQuery, this.element);\n for (var _i = 0, elements_2 = elements; _i < elements_2.length; _i++) {\n var element = elements_2[_i];\n var input = element;\n input.removeAttribute('aria-invalid');\n var inputParent = input.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (input.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.remove(this.errorClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.remove(this.errorClass);\n }\n else {\n input.classList.remove(this.errorClass);\n }\n if (input.name.length > 0) {\n this.getInputElement(input.name);\n this.getErrorElement(input.name);\n this.hideMessage(input.name);\n }\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (input.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.remove(this.validClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.remove(this.validClass);\n }\n else {\n input.classList.remove(this.validClass);\n }\n }\n };\n FormValidator.prototype.createHTML5Rules = function () {\n var defRules = ['required', 'validateHidden', 'regex', 'rangeLength', 'maxLength', 'minLength', 'dateIso', 'digits',\n 'pattern', 'data-val-required', 'type', 'data-validation', 'min', 'max', 'range', 'equalTo', 'data-val-minlength-min',\n 'data-val-equalto-other', 'data-val-maxlength-max', 'data-val-range-min', 'data-val-regex-pattern', 'data-val-length-max',\n 'data-val-creditcard', 'data-val-phone'];\n var acceptedTypes = ['hidden', 'email', 'url', 'date', 'number', 'tel'];\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n // Default attribute rules\n var allRule = {};\n for (var _b = 0, defRules_1 = defRules; _b < defRules_1.length; _b++) {\n var rule = defRules_1[_b];\n if (input.getAttribute(rule) !== null) {\n switch (rule) {\n case 'required':\n this.defRule(input, allRule, rule, input.required);\n break;\n case 'data-validation':\n rule = input.getAttribute(rule);\n this.defRule(input, allRule, rule, true);\n break;\n case 'type':\n if (acceptedTypes.indexOf(input.type) !== -1) {\n this.defRule(input, allRule, input.type, true);\n }\n break;\n case 'rangeLength':\n case 'range':\n this.defRule(input, allRule, rule, JSON.parse(input.getAttribute(rule)));\n break;\n case 'equalTo':\n {\n var id = input.getAttribute(rule);\n this.defRule(input, allRule, rule, id);\n }\n break;\n default:\n if (input.getAttribute('data-val') === 'true') {\n this.annotationRule(input, allRule, rule, input.getAttribute(rule));\n }\n else {\n this.defRule(input, allRule, rule, input.getAttribute(rule));\n }\n }\n }\n }\n //adding pattern type validation\n if (Object.keys(allRule).length !== 0) {\n this.addRules(input.name, allRule);\n }\n }\n };\n FormValidator.prototype.annotationRule = function (input, ruleCon, ruleName, value) {\n var annotationRule = ruleName.split('-');\n var rulesList = ['required', 'creditcard', 'phone', 'maxlength', 'minlength', 'range', 'regex', 'equalto'];\n var ruleFirstName = annotationRule[annotationRule.length - 1];\n var ruleSecondName = annotationRule[annotationRule.length - 2];\n if (rulesList.indexOf(ruleFirstName) !== -1) {\n switch (ruleFirstName) {\n case 'required':\n this.defRule(input, ruleCon, 'required', value);\n break;\n case 'creditcard':\n this.defRule(input, ruleCon, 'creditcard', value);\n break;\n case 'phone':\n this.defRule(input, ruleCon, 'tel', value);\n break;\n }\n }\n else if (rulesList.indexOf(ruleSecondName) !== -1) {\n switch (ruleSecondName) {\n case 'maxlength':\n this.defRule(input, ruleCon, 'maxLength', value);\n break;\n case 'minlength':\n this.defRule(input, ruleCon, 'minLength', value);\n break;\n case 'range':\n {\n var minvalue = input.getAttribute('data-val-range-min');\n var maxvalue = input.getAttribute('data-val-range-max');\n this.defRule(input, ruleCon, 'range', [minvalue, maxvalue]);\n }\n break;\n case 'equalto':\n {\n var id = input.getAttribute(ruleName).split('.');\n this.defRule(input, ruleCon, 'equalTo', id[id.length - 1]);\n }\n break;\n case 'regex':\n this.defRule(input, ruleCon, 'regex', value);\n break;\n }\n }\n };\n FormValidator.prototype.defRule = function (input, ruleCon, ruleName, value) {\n var message = input.getAttribute('data-' + ruleName + '-message');\n var annotationMessage = input.getAttribute('data-val-' + ruleName);\n var customMessage;\n if (this.rules[input.name] && ruleName !== 'validateHidden' && ruleName !== 'hidden') {\n this.getInputElement(input.name);\n customMessage = this.getErrorMessage(this.rules[input.name][\"\" + ruleName], ruleName);\n }\n if (message) {\n value = [value, message];\n }\n else if (annotationMessage) {\n value = [value, annotationMessage];\n }\n else if (customMessage) {\n value = [value, customMessage];\n }\n ruleCon[\"\" + ruleName] = value;\n };\n // Wire events to the form elements\n FormValidator.prototype.wireEvents = function () {\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n if (FormValidator_1.isCheckable(input)) {\n EventHandler.add(input, 'click', this.clickHandler, this);\n }\n else if (input.tagName === 'SELECT') {\n EventHandler.add(input, 'change', this.changeHandler, this);\n }\n else {\n EventHandler.add(input, 'focusout', this.focusOutHandler, this);\n EventHandler.add(input, 'keyup', this.keyUpHandler, this);\n }\n }\n EventHandler.add(this.element, 'submit', this.submitHandler, this);\n EventHandler.add(this.element, 'reset', this.resetHandler, this);\n };\n // UnWire events to the form elements\n FormValidator.prototype.unwireEvents = function () {\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n EventHandler.clearEvents(input);\n }\n EventHandler.remove(this.element, 'submit', this.submitHandler);\n EventHandler.remove(this.element, 'reset', this.resetHandler);\n };\n // Handle input element focusout event\n FormValidator.prototype.focusOutHandler = function (e) {\n this.trigger('focusout', e);\n //FormValidator.triggerCallback(this.focusout, e);\n var element = e.target;\n if (this.rules[element.name]) {\n if (this.rules[element.name][this.required] || element.value.length > 0) {\n this.validate(element.name);\n }\n else if (this.validated.indexOf(element.name) === -1) {\n this.validated.push(element.name);\n }\n }\n };\n // Handle input element keyup event\n FormValidator.prototype.keyUpHandler = function (e) {\n this.trigger('keyup', e);\n var element = e.target;\n // List of keys need to prevent while validation\n var excludeKeys = [16, 17, 18, 20, 35, 36, 37, 38, 39, 40, 45, 144, 225];\n if (e.which === 9 && (!this.rules[element.name] || (this.rules[element.name] && !this.rules[element.name][this.required]))) {\n return;\n }\n if (this.validated.indexOf(element.name) !== -1 && this.rules[element.name] && excludeKeys.indexOf(e.which) === -1) {\n this.validate(element.name);\n }\n };\n // Handle input click event\n FormValidator.prototype.clickHandler = function (e) {\n this.trigger('click', e);\n var element = e.target;\n // If element type is not submit allow validation\n if (element.type !== 'submit') {\n this.validate(element.name);\n }\n else if (element.getAttribute('formnovalidate') !== null) {\n // Prevent form validation, if submit button has formnovalidate attribute\n this.allowSubmit = true;\n }\n };\n // Handle input change event\n FormValidator.prototype.changeHandler = function (e) {\n this.trigger('change', e);\n var element = e.target;\n this.validate(element.name);\n };\n // Handle form submit event\n FormValidator.prototype.submitHandler = function (e) {\n this.trigger('submit', e);\n //FormValidator.triggerCallback(this.submit, e);\n // Prevent form submit if validation failed\n if (!this.allowSubmit && !this.validate()) {\n e.preventDefault();\n }\n else {\n this.allowSubmit = false;\n }\n };\n // Handle form reset\n FormValidator.prototype.resetHandler = function () {\n this.clearForm();\n };\n // Validate each rule based on input element name\n FormValidator.prototype.validateRules = function (name) {\n if (!this.rules[\"\" + name]) {\n return;\n }\n var rules = Object.keys(this.rules[\"\" + name]);\n var hiddenType = false;\n var validateHiddenType = false;\n var vhPos = rules.indexOf('validateHidden');\n var hPos = rules.indexOf('hidden');\n this.getInputElement(name);\n if (hPos !== -1) {\n hiddenType = true;\n }\n if (vhPos !== -1) {\n validateHiddenType = true;\n }\n if (!hiddenType || (hiddenType && validateHiddenType)) {\n if (vhPos !== -1) {\n rules.splice(vhPos, 1);\n }\n if (hPos !== -1) {\n rules.splice((hPos - 1), 1);\n }\n this.getErrorElement(name);\n for (var _i = 0, rules_2 = rules; _i < rules_2.length; _i++) {\n var rule = rules_2[_i];\n var errorMessage = this.getErrorMessage(this.rules[\"\" + name][\"\" + rule], rule);\n var errorRule = { name: name, message: errorMessage };\n var eventArgs = {\n inputName: name,\n element: this.inputElement,\n message: errorMessage\n };\n if (!this.isValid(name, rule) && !this.inputElement.classList.contains(this.ignore)) {\n this.removeErrorRules(name);\n this.errorRules.push(errorRule);\n // Set aria attributes to invalid elements\n this.inputElement.setAttribute('aria-invalid', 'true');\n this.inputElement.setAttribute('aria-describedby', this.inputElement.id + '-info');\n var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (this.inputElement.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.add(this.errorClass);\n inputParent.classList.remove(this.validClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.errorClass);\n grandParent.classList.remove(this.validClass);\n }\n else {\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n }\n if (!this.infoElement) {\n this.createErrorElement(name, errorRule.message, this.inputElement);\n }\n else {\n this.showMessage(errorRule);\n }\n eventArgs.errorElement = this.infoElement;\n eventArgs.status = 'failure';\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (this.inputElement.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.add(this.errorClass);\n inputParent.classList.remove(this.validClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.errorClass);\n grandParent.classList.remove(this.validClass);\n }\n else {\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n }\n this.optionalValidationStatus(name, eventArgs);\n this.trigger('validationComplete', eventArgs);\n // Set aria-required to required rule elements\n if (rule === 'required') {\n this.inputElement.setAttribute('aria-required', 'true');\n }\n break;\n }\n else {\n this.hideMessage(name);\n eventArgs.status = 'success';\n this.trigger('validationComplete', eventArgs);\n }\n }\n }\n else {\n return;\n }\n };\n // Update the optional validation status\n FormValidator.prototype.optionalValidationStatus = function (name, refer) {\n if (!this.rules[\"\" + name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n refer.status = '';\n this.hideMessage(name);\n }\n };\n // Check the input element whether it's value satisfy the validation rule or not\n FormValidator.prototype.isValid = function (name, rule) {\n var params = this.rules[\"\" + name][\"\" + rule];\n var param = (params instanceof Array && typeof params[1] === 'string') ? params[0] : params;\n var currentRule = this.rules[\"\" + name][\"\" + rule];\n var args = { value: this.inputElement.value, param: param, element: this.inputElement, formElement: this.element };\n this.trigger('validationBegin', args);\n if (!args.param && rule === 'required') {\n return true;\n }\n if (currentRule && typeof currentRule[0] === 'function') {\n var fn = currentRule[0];\n return fn.call(this, { element: this.inputElement, value: this.inputElement.value });\n }\n else if (FormValidator_1.isCheckable(this.inputElement)) {\n if (rule !== 'required') {\n return true;\n }\n return selectAll('input[name=\"' + name + '\"]:checked', this.element).length > 0;\n }\n else {\n return FormValidator_1.checkValidator[\"\" + rule](args);\n }\n };\n // Return default error message or custom error message\n FormValidator.prototype.getErrorMessage = function (ruleValue, rule) {\n var message = this.inputElement.getAttribute('data-' + rule + '-message') ?\n this.inputElement.getAttribute('data-' + rule + '-message') :\n (ruleValue instanceof Array && typeof ruleValue[1] === 'string') ? ruleValue[1] :\n (Object.keys(this.localyMessage).length !== 0) ? this.localyMessage[\"\" + rule] : this.defaultMessages[\"\" + rule];\n var formats = message.match(/{(\\d)}/g);\n if (!isNullOrUndefined(formats)) {\n for (var i = 0; i < formats.length; i++) {\n var value = ruleValue instanceof Array ? ruleValue[parseInt(i.toString())] : ruleValue;\n message = message.replace(formats[parseInt(i.toString())], value);\n }\n }\n return message;\n };\n // Create error element based on name and error message\n FormValidator.prototype.createErrorElement = function (name, message, input) {\n var errorElement = createElement(this.errorElement, {\n className: this.errorClass,\n innerHTML: message,\n attrs: { for: name }\n });\n // Create message design if errorOption is message\n if (this.errorOption === ErrorOption.Message) {\n errorElement.classList.remove(this.errorClass);\n errorElement.classList.add('e-message');\n errorElement = createElement(this.errorContainer, { className: this.errorClass, innerHTML: errorElement.outerHTML });\n }\n errorElement.id = this.inputElement.name + '-info';\n // Append error message into MVC error message element\n if (this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]')) {\n this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]').appendChild(errorElement);\n }\n else if (input.hasAttribute('data-msg-containerid') === true) {\n // Append error message into custom div element\n var containerId = input.getAttribute('data-msg-containerid');\n var divElement = select('#' + containerId, this.element);\n divElement.appendChild(errorElement);\n }\n else if (this.customPlacement != null) {\n // Call custom placement function if customPlacement is not null\n this.customPlacement.call(this, this.inputElement, errorElement);\n }\n else {\n var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper')) {\n grandParent.insertBefore(errorElement, inputParent.nextSibling);\n }\n else if (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper')) {\n grandParent.parentElement.insertBefore(errorElement, grandParent.nextSibling);\n }\n else {\n inputParent.insertBefore(errorElement, this.inputElement.nextSibling);\n }\n }\n errorElement.style.display = 'block';\n this.getErrorElement(name);\n this.validated.push(name);\n this.checkRequired(name);\n };\n // Get error element by name\n FormValidator.prototype.getErrorElement = function (name) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass, this.inputElement.parentElement);\n if (!this.infoElement) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass + '[for=\"' + name + '\"]', this.element);\n }\n return this.infoElement;\n };\n // Remove existing rule from errorRules object\n FormValidator.prototype.removeErrorRules = function (name) {\n for (var i = 0; i < this.errorRules.length; i++) {\n var rule = this.errorRules[parseInt(i.toString())];\n if (rule.name === name) {\n this.errorRules.splice(i, 1);\n }\n }\n };\n // Show error message to the input element\n FormValidator.prototype.showMessage = function (errorRule) {\n this.infoElement.style.display = 'block';\n this.infoElement.innerHTML = errorRule.message;\n this.checkRequired(errorRule.name);\n };\n // Hide error message based on input name\n FormValidator.prototype.hideMessage = function (name) {\n if (this.infoElement) {\n this.infoElement.style.display = 'none';\n this.removeErrorRules(name);\n var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (this.inputElement.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.add(this.validClass);\n inputParent.classList.remove(this.errorClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.validClass);\n grandParent.classList.remove(this.errorClass);\n }\n else {\n this.inputElement.classList.add(this.validClass);\n this.inputElement.classList.remove(this.errorClass);\n }\n this.inputElement.setAttribute('aria-invalid', 'false');\n }\n };\n // Check whether the input element have required rule and its value is not empty\n FormValidator.prototype.checkRequired = function (name) {\n if (!this.rules[\"\" + name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n this.hideMessage(name);\n }\n };\n // Return boolean result if the input have chekcable or submit types\n FormValidator.isCheckable = function (input) {\n var inputType = input.getAttribute('type');\n return inputType && (inputType === 'checkbox' || inputType === 'radio' || inputType === 'submit');\n };\n var FormValidator_1;\n // List of function to validate the rules\n FormValidator.checkValidator = {\n required: function (option) {\n return !isNaN(Date.parse(option.value)) ? !isNaN(new Date(option.value).getTime()) : option.value.toString().length > 0;\n },\n email: function (option) {\n return regex.EMAIL.test(option.value);\n },\n url: function (option) {\n return regex.URL.test(option.value);\n },\n dateIso: function (option) {\n return regex.DATE_ISO.test(option.value);\n },\n tel: function (option) {\n return regex.PHONE.test(option.value);\n },\n creditcard: function (option) {\n return regex.CREDITCARD.test(option.value);\n },\n number: function (option) {\n return !isNaN(Number(option.value)) && option.value.indexOf(' ') === -1;\n },\n digits: function (option) {\n return regex.DIGITS.test(option.value);\n },\n maxLength: function (option) {\n return option.value.length <= option.param;\n },\n minLength: function (option) {\n return option.value.length >= option.param;\n },\n rangeLength: function (option) {\n var param = option.param;\n return option.value.length >= param[0] && option.value.length <= param[1];\n },\n range: function (option) {\n var param = option.param;\n return !isNaN(Number(option.value)) && Number(option.value) >= param[0] && Number(option.value) <= param[1];\n },\n date: function (option) {\n if (!isNullOrUndefined(option.param) && (typeof (option.param) === 'string' && option.param !== '')) {\n var globalize = new Internationalization;\n var dateOptions = { format: option.param.toString(), type: 'dateTime', skeleton: 'yMd' };\n var dateValue = globalize.parseDate(option.value, dateOptions);\n return (!isNullOrUndefined(dateValue) && dateValue instanceof Date && !isNaN(+dateValue));\n }\n else {\n return !isNaN(new Date(option.value).getTime());\n }\n },\n max: function (option) {\n if (!isNaN(Number(option.value))) {\n // Maximum rule validation for number\n return +option.value <= option.param;\n }\n // Maximum rule validation for date\n return new Date(option.value).getTime() <= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n },\n min: function (option) {\n if (!isNaN(Number(option.value))) {\n // Minimum rule validation for number\n return +option.value >= option.param;\n }\n else if ((option.value).indexOf(',') !== -1) {\n var uNum = (option.value).replace(/,/g, '');\n return parseFloat(uNum) >= option.param;\n }\n else {\n // Minimum rule validation for date\n return new Date(option.value).getTime() >= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n }\n },\n regex: function (option) {\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n return new RegExp(option.param).test(option.value);\n },\n equalTo: function (option) {\n var compareTo = option.formElement.querySelector('#' + option.param);\n option.param = compareTo.value;\n return option.param === option.value;\n }\n };\n __decorate([\n Property('')\n ], FormValidator.prototype, \"locale\", void 0);\n __decorate([\n Property('e-hidden')\n ], FormValidator.prototype, \"ignore\", void 0);\n __decorate([\n Property()\n ], FormValidator.prototype, \"rules\", void 0);\n __decorate([\n Property('e-error')\n ], FormValidator.prototype, \"errorClass\", void 0);\n __decorate([\n Property('e-valid')\n ], FormValidator.prototype, \"validClass\", void 0);\n __decorate([\n Property('label')\n ], FormValidator.prototype, \"errorElement\", void 0);\n __decorate([\n Property('div')\n ], FormValidator.prototype, \"errorContainer\", void 0);\n __decorate([\n Property(ErrorOption.Label)\n ], FormValidator.prototype, \"errorOption\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"focusout\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"keyup\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"submit\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"validationBegin\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"validationComplete\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"customPlacement\", void 0);\n FormValidator = FormValidator_1 = __decorate([\n NotifyPropertyChanges\n ], FormValidator);\n return FormValidator;\n}(Base));\nexport { FormValidator };\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nexport var properties = ['isLazyUpdate', 'plugins', 'content', 'cssClass', 'disabled', 'enableHtmlSanitizer', 'enablePersistence', 'enableRtl', 'iconCss', 'iconPosition', 'isPrimary', 'isToggle', 'locale', 'created'];\nexport var modelProps = [];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents the Essential JS 2 VueJS Button Component\n * ```html\n * Button\n * ```\n */\nexport var ButtonComponent = vueDefineComponent({\n name: 'ButtonComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new Button({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: false,\n hasInjectedModules: false,\n tagMapper: {},\n tagNameMapper: {},\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('button', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n custom: function () {\n this.updated();\n },\n click: function () {\n return this.ej2Instances.click();\n },\n focusIn: function () {\n return this.ej2Instances.focusIn();\n },\n }\n});\nexport var ButtonPlugin = {\n name: 'ejs-button',\n install: function (Vue) {\n Vue.component(ButtonPlugin.name, ButtonComponent);\n }\n};\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, closest as getClosest, remove } from '@syncfusion/ej2-base';\nimport { classList } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowRenderer } from './row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport * as events from '../base/constant';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { parentsUntil, wrap, measureColumnDepth, appendChildren, addFixedColumnBorder } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar HeaderRender = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function HeaderRender(parent, serviceLocator) {\n var _this = this;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n this.isFirstCol = false;\n this.isReplaceDragEle = true;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = _this.draggable.currentStateTarget;\n var parentEle = parentsUntil(target, 'e-headercell');\n if (!(gObj.allowReordering || gObj.allowGrouping) || (!isNullOrUndefined(parentEle)\n && parentEle.getElementsByClassName('e-checkselectall').length > 0)) {\n return false;\n }\n var visualElement = _this.parent.createElement('div', { className: 'e-cloneproperties e-dragclone e-headerclone' });\n var element = target.classList.contains('e-headercell') ? target : parentEle;\n if (!element || (!gObj.allowReordering && element.classList.contains('e-stackedheadercell'))) {\n return false;\n }\n var height = element.offsetHeight;\n var headercelldiv = element.querySelector('.e-headercelldiv') || element.querySelector('.e-stackedheadercelldiv');\n var col;\n if (headercelldiv) {\n if (element.querySelector('.e-stackedheadercelldiv')) {\n col = gObj.getStackedHeaderColumnByHeaderText(headercelldiv.innerText.trim(), gObj.columns);\n }\n else {\n col = gObj.getColumnByUid(headercelldiv.getAttribute('e-mappinguid'));\n }\n _this.column = col;\n if (_this.column.lockColumn) {\n return false;\n }\n visualElement.setAttribute('e-mappinguid', _this.column.uid);\n }\n if (col && !isNullOrUndefined(col.headerTemplate)) {\n if (!isNullOrUndefined(col.headerTemplate)) {\n var colIndex = gObj.getColumnIndexByField(col.field);\n var result = col.getHeaderTemplate()(extend({ 'index': colIndex }, col), gObj, 'headerTemplate');\n var isReactCompiler = gObj.isReact && typeof (col.headerTemplate) !== 'string';\n var isReactChild = gObj.parentDetails && gObj.parentDetails.parentInstObj &&\n gObj.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n gObj.renderTemplates();\n }\n appendChildren(visualElement, result);\n }\n else {\n visualElement.innerHTML = col.headerTemplate;\n }\n if (!isNullOrUndefined(visualElement.firstChild) && visualElement.firstChild.nodeType === 1) {\n visualElement.firstChild.style.pointerEvents = 'none';\n }\n }\n else {\n visualElement.innerHTML = headercelldiv ?\n col.headerText : element.firstElementChild.innerHTML;\n }\n visualElement.style.width = element.offsetWidth + 'px';\n visualElement.style.height = element.offsetHeight + 'px';\n visualElement.style.lineHeight = (height - 6).toString() + 'px';\n gObj.element.appendChild(visualElement);\n return visualElement;\n };\n this.dragStart = function (e) {\n var gObj = _this.parent;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n gObj.notify(events.columnDragStart, { target: _this.draggable.currentStateTarget, column: _this.column, event: e.event });\n };\n this.drag = function (e) {\n var gObj = _this.parent;\n var target = e.target;\n if (target) {\n var closest = getClosest(target, '.e-grid');\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n if (!closest || closest.getAttribute('id') !== gObj.element.getAttribute('id')) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n if (gObj.allowReordering) {\n gObj.element.querySelector('.e-reorderuparrow').style.display = 'none';\n gObj.element.querySelector('.e-reorderdownarrow').style.display = 'none';\n }\n if (!gObj.groupSettings.allowReordering) {\n return;\n }\n }\n gObj.notify(events.columnDrag, { target: e.target, column: _this.column, event: e.event });\n }\n };\n this.dragStop = function (e) {\n var gObj = _this.parent;\n var cancel;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n if ((!parentsUntil(e.target, 'e-headercell') && !parentsUntil(e.target, 'e-groupdroparea')) ||\n (!gObj.allowReordering && parentsUntil(e.target, 'e-headercell')) ||\n (!e.helper.getAttribute('e-mappinguid') && parentsUntil(e.target, 'e-groupdroparea'))) {\n remove(e.helper);\n cancel = true;\n }\n gObj.notify(events.columnDragStop, { target: e.target, event: e.event, column: _this.column, cancel: cancel });\n };\n this.drop = function (e) {\n var gObj = _this.parent;\n var uid = e.droppedElement.getAttribute('e-mappinguid');\n var closest = getClosest(e.target, '.e-grid');\n remove(e.droppedElement);\n if (closest && closest.getAttribute('id') !== gObj.element.getAttribute('id') ||\n !(gObj.allowReordering || gObj.allowGrouping)) {\n return;\n }\n gObj.notify(events.headerDrop, { target: e.target, uid: uid, droppedElement: e.droppedElement });\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.widthService = this.serviceLocator.getService('widthService');\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.columnPositionChanged, this.colPosRefresh, this);\n this.parent.on(events.initialEnd, this.renderCustomToolbar, this);\n if (this.parent.rowRenderingMode === 'Vertical') {\n this.parent.on(events.uiUpdate, this.updateCustomResponsiveToolbar, this);\n }\n }\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderPanel = function () {\n var div = this.parent.element.querySelector('.' + literals.gridHeader);\n var isRendered = (div != null);\n div = isRendered ? div : this.parent.createElement('div', { className: 'e-gridheader' });\n var innerDiv = isRendered ? div.querySelector('.' + literals.headerContent) :\n this.parent.createElement('div', { className: literals.headerContent });\n this.toggleStackClass(div);\n div.appendChild(innerDiv);\n this.setPanel(div);\n if (!isRendered) {\n this.parent.element.appendChild(div);\n }\n };\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderTable = function () {\n var headerDiv = this.getPanel();\n headerDiv.appendChild(this.createHeaderTable());\n this.setTable(headerDiv.querySelector('.' + literals.table));\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n this.parent.notify(events.headerRefreshed, { rows: this.rows });\n };\n /**\n * Get the header content div element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getPanel = function () {\n return this.headerPanel;\n };\n /**\n * Set the header content div element of grid\n *\n * @param {Element} panel - specifies the panel element\n * @returns {void}\n */\n HeaderRender.prototype.setPanel = function (panel) {\n this.headerPanel = panel;\n };\n /**\n * Get the header table element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getTable = function () {\n return this.headerTable;\n };\n /**\n * Set the header table element of grid\n *\n * @param {Element} table - specifies the table element\n * @returns {void}\n */\n HeaderRender.prototype.setTable = function (table) {\n this.headerTable = table;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.setColGroup = function (colGroup) {\n return this.colgroup = colGroup;\n };\n /**\n * Get the header row element collection.\n *\n * @returns {Element[]} returns the element\n */\n HeaderRender.prototype.getRows = function () {\n var table = this.getTable();\n return table.tHead.rows;\n };\n /**\n * The function is used to create header table elements\n *\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createHeaderTable = function () {\n var table = this.createTable();\n var innerDiv = this.getPanel().querySelector('.' + literals.headerContent);\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * The function is used to create header table elements\n *\n * @param {Element} tableEle - specifies the table Element\n * @param {freezeTable} tableName - specifies the table name\n * @returns {Element} returns the element\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.createHeader = function (tableEle, tableName) {\n if (tableEle === void 0) { tableEle = null; }\n var gObj = this.parent;\n if (this.getTable()) {\n remove(this.getTable());\n }\n var table = this.parent.createElement('table', { className: literals.table, attrs: { cellspacing: '0.25px', role: 'presentation' } });\n var findHeaderRow = this.createHeaderContent(tableName);\n var thead = findHeaderRow.thead;\n var tbody = this.parent.createElement(literals.tbody, { className: this.parent.frozenRows ? '' : 'e-hide', attrs: { role: 'rowgroup' } });\n this.caption = this.parent.createElement('caption', { innerHTML: this.parent.element.id + '_header_table', className: 'e-hide' });\n var colGroup = this.parent.createElement(literals.colGroup);\n var rowBody = this.parent.createElement('tr', { attrs: { role: 'row' } });\n var bodyCell;\n var rows = this.rows = findHeaderRow.rows;\n for (var i = 0, len = rows.length; i < len; i++) {\n for (var j = 0, len_1 = rows[parseInt(i.toString(), 10)].cells.length; j < len_1; j++) {\n bodyCell = this.parent.createElement('td');\n rowBody.appendChild(bodyCell);\n }\n }\n if (gObj.allowFiltering || gObj.allowSorting || gObj.allowGrouping) {\n table.classList.add('e-sortfilter');\n }\n this.updateColGroup(colGroup);\n tbody.appendChild(rowBody);\n table.appendChild(this.setColGroup(colGroup));\n table.appendChild(thead);\n table.appendChild(tbody);\n table.appendChild(this.caption);\n return table;\n };\n /**\n * @param {Element} tableEle - specifies the column\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createTable = function (tableEle) {\n if (tableEle === void 0) { tableEle = null; }\n return this.createHeader(tableEle);\n };\n HeaderRender.prototype.createHeaderContent = function (tableName) {\n var gObj = this.parent;\n var columns = gObj.getColumns();\n var thead = this.parent.createElement('thead', { attrs: { 'role': 'rowgroup' } });\n var colHeader = this.parent.createElement('tr', { className: 'e-columnheader', attrs: { role: 'row' } });\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Header, gObj);\n rowRenderer.element = colHeader;\n var rows = [];\n var headerRow;\n this.colDepth = measureColumnDepth(gObj.columns);\n for (var i = 0, len = this.colDepth; i < len; i++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(i);\n rows[parseInt(i.toString(), 10)].cells = [];\n }\n rows = this.ensureColumns(rows);\n rows = this.getHeaderCells(rows, tableName);\n if (gObj.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n for (var i = 0, len = rows.length; i < len; i++) {\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n for (var i = 0, len = this.colDepth; i < len; i++) {\n headerRow = rowRenderer.render(rows[parseInt(i.toString(), 10)], columns);\n if (this.parent.rowHeight && headerRow.querySelector('.e-headercell')) {\n headerRow.style.height = this.parent.rowHeight + 'px';\n }\n addFixedColumnBorder(headerRow);\n thead.appendChild(headerRow);\n }\n var findHeaderRow = {\n thead: thead,\n rows: rows\n };\n return findHeaderRow;\n };\n HeaderRender.prototype.updateColGroup = function (colGroup) {\n var cols = this.parent.getColumns();\n var col;\n var indexes = this.parent.getColumnIndexesInView();\n colGroup.id = this.parent.element.id + literals.colGroup;\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n continue;\n }\n col = this.parent.createElement('col', { className: 'e-group-intent' });\n colGroup.appendChild(col);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n col = this.parent.createElement('col', { className: 'e-detail-intent' });\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n col = this.parent.createElement('col');\n if (cols[parseInt(i.toString(), 10)].visible === false) {\n setStyleAttribute(col, { 'display': 'none' });\n }\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n return colGroup;\n };\n HeaderRender.prototype.ensureColumns = function (rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n var gObj = this.parent;\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (gObj.allowGrouping) {\n for (var c = 0, len_2 = gObj.groupSettings.columns.length; c < len_2; c++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(c) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (gObj.detailTemplate || gObj.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell(args, CellType.DetailHeader));\n }\n if (gObj.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n return rows;\n };\n HeaderRender.prototype.getHeaderCells = function (rows, tableName) {\n var thead = this.parent.getHeaderTable() && this.parent.getHeaderTable().querySelector('thead');\n var cols = this.parent.enableColumnVirtualization ?\n this.parent.getColumns(this.parent.enablePersistence) : this.parent.columns;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n if (this.parent.lockcolPositionCount) {\n for (var i = 0; i < cols.length; i++) {\n this.lockColsRendered = false;\n rows = this.appendCells(cols[parseInt(i.toString(), 10)], rows, 0, i === 0, false, i === (cols.length - 1), thead, tableName, false);\n }\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.notfrzIdx = 0;\n this.lockColsRendered = true;\n rows = this.appendCells(cols[parseInt(i.toString(), 10)], rows, 0, i === 0, false, i === (len - 1), thead, tableName, false);\n }\n return rows;\n };\n HeaderRender.prototype.appendCells = function (cols, rows, index, isFirstObj, isFirstCol, isLastCol, isMovable, tableName, isStackLastCol) {\n var lastCol = isLastCol ? isStackLastCol ? 'e-laststackcell' : 'e-lastcell' : '';\n var isLockColumn = !this.parent.lockcolPositionCount\n || (cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered);\n if (!cols.columns) {\n if (isLockColumn) {\n rows[parseInt(index.toString(), 10)].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n if (this.parent.lockcolPositionCount) {\n if ((this.frzIdx + this.notfrzIdx < this.parent.frozenColumns) &&\n ((cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered))) {\n this.frzIdx++;\n }\n else {\n this.notfrzIdx++;\n }\n }\n else {\n this.frzIdx++;\n }\n }\n else {\n this.isFirstCol = false;\n var colSpan = this.getCellCnt(cols, 0);\n if (colSpan) {\n var stackedLockColsCount = this.getStackedLockColsCount(cols, 0);\n var isStackedLockColumn = this.parent.lockcolPositionCount === 0\n || (!this.lockColsRendered && stackedLockColsCount !== 0)\n || (this.lockColsRendered && (colSpan - stackedLockColsCount) !== 0);\n if (isStackedLockColumn) {\n rows[parseInt(index.toString(), 10)].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols,\n colSpan: this.getColSpan(colSpan, stackedLockColsCount),\n className: isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')\n }));\n }\n }\n if (this.parent.lockcolPositionCount && !this.lockColsRendered) {\n for (var i = 0; i < cols.columns.length; i++) {\n rows = this.appendCells(cols.columns[parseInt(i.toString(), 10)], rows, index + 1, isFirstObj, i === 0, i === (cols.columns.length - 1) && isLastCol, isMovable, tableName, false);\n }\n }\n if (this.lockColsRendered) {\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n isFirstObj = isFirstObj && i === 0;\n var isFirstCol_1 = this.isFirstCol = cols.columns[parseInt(i.toString(), 10)].visible\n && !isFirstObj;\n var isLaststackedCol = i === (len - 1) && isLastCol;\n rows = this.appendCells(cols.columns[parseInt(i.toString(), 10)], rows, index + 1, isFirstObj, isFirstCol_1 && !isLaststackedCol, isLaststackedCol, isMovable, tableName, true);\n }\n }\n }\n return rows;\n };\n HeaderRender.prototype.getStackedLockColsCount = function (col, lockColsCount) {\n if (col.columns) {\n for (var i = 0; i < col.columns.length; i++) {\n lockColsCount = this.getStackedLockColsCount(col.columns[parseInt(i.toString(), 10)], lockColsCount);\n }\n }\n else if (col.lockColumn) {\n lockColsCount++;\n }\n return lockColsCount;\n };\n HeaderRender.prototype.getColSpan = function (colSpan, stackedLockColsCount) {\n colSpan = !this.lockColsRendered ? stackedLockColsCount : colSpan - stackedLockColsCount;\n return colSpan;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.generateRow = function (index) {\n return new Row({});\n };\n HeaderRender.prototype.generateCell = function (column, cellType, rowSpan, className, rowIndex, colIndex) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'isTemplate': !isNullOrUndefined(column.headerTemplate),\n 'rowID': '',\n 'column': column,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'className': className,\n 'index': rowIndex,\n 'colIndex': colIndex\n };\n if (!opt.rowSpan || opt.rowSpan < 2) {\n delete opt.rowSpan;\n }\n return new Cell(opt);\n };\n /**\n * Function to hide header table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n HeaderRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var displayVal;\n var idx;\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n setStyleAttribute(this.getColGroup().children[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n this.refreshUI();\n };\n HeaderRender.prototype.colPosRefresh = function () {\n this.refreshUI();\n };\n /**\n * Refresh the header of the Grid.\n *\n * @returns {void}\n */\n HeaderRender.prototype.refreshUI = function () {\n var headerDiv = this.getPanel();\n this.toggleStackClass(headerDiv);\n var table = this.freezeReorder ? this.headerPanel.querySelector('.' + literals.movableHeader).querySelector('.' + literals.table)\n : this.getTable();\n var tableName = undefined;\n if (table) {\n remove(table);\n table.removeChild(table.firstChild);\n table.removeChild(table.childNodes[0]);\n var colGroup = this.parent.createElement(literals.colGroup);\n var findHeaderRow = this.createHeaderContent(tableName);\n this.rows = findHeaderRow.rows;\n table.insertBefore(findHeaderRow.thead, table.firstChild);\n this.updateColGroup(colGroup);\n table.insertBefore(this.setColGroup(colGroup), table.firstChild);\n this.appendContent(table);\n this.parent.notify(events.colGroupRefresh, {});\n this.widthService.setWidthToColumns();\n this.parent.updateDefaultCursor();\n this.initializeHeaderDrag();\n var rows = [].slice.call(headerDiv.querySelectorAll('tr.e-columnheader'));\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n var gCells = [].slice.call(row.getElementsByClassName('e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n }\n this.parent.notify(events.headerRefreshed, { rows: this.rows });\n if (this.parent.enableColumnVirtualization && parentsUntil(table, literals.movableHeader)) {\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: false, isXaxis: true } });\n }\n if (this.parent.allowTextWrap && this.parent.textWrapSettings.wrapMode === 'Header') {\n wrap(rows, true);\n }\n }\n var firstHeaderCell = this.parent.getHeaderContent().querySelector('.e-headercell:not(.e-hide)');\n if (!isNullOrUndefined(firstHeaderCell)) {\n firstHeaderCell.tabIndex = 0;\n }\n };\n HeaderRender.prototype.toggleStackClass = function (div) {\n var column = this.parent.columns;\n var stackedHdr = column.some(function (column) { return !isNullOrUndefined(column.columns); });\n if (stackedHdr) {\n div.classList.add('e-stackedheader');\n }\n else {\n div.classList.remove('e-stackedheader');\n }\n };\n HeaderRender.prototype.appendContent = function (table) {\n this.getPanel().querySelector('.' + literals.headerContent).appendChild(table);\n };\n HeaderRender.prototype.getCellCnt = function (col, cnt) {\n if (col.columns) {\n for (var i = 0, len = col.columns.length; i < len; i++) {\n cnt = this.getCellCnt(col.columns[parseInt(i.toString(), 10)], cnt);\n }\n }\n else {\n if (col.visible) {\n cnt++;\n }\n }\n return cnt;\n };\n HeaderRender.prototype.initializeHeaderDrag = function () {\n var gObj = this.parent;\n if (!(this.parent.allowReordering || (this.parent.allowGrouping && this.parent.groupSettings.showDropArea))) {\n return;\n }\n this.draggable = new Draggable(gObj.getHeaderContent(), {\n dragTarget: '.e-headercell',\n distance: 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop,\n abort: '.e-rhandler',\n isReplaceDragEle: this.isReplaceDragEle\n });\n this.parent.on(events.destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.initializeHeaderDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.getHeaderContent(), {\n accept: '.e-dragclone',\n drop: this.drop\n });\n this.parent.on(events.destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n if (this.draggable && !this.draggable.isDestroyed) {\n this.draggable.destroy();\n }\n };\n HeaderRender.prototype.renderCustomToolbar = function () {\n var _this = this;\n var gObj = this.parent;\n if (gObj.rowRenderingMode === 'Vertical' && !gObj.toolbar\n && (gObj.allowSorting || (gObj.allowFiltering && gObj.filterSettings.type !== 'FilterBar'))) {\n var div = gObj.createElement('div', { className: 'e-res-toolbar e-toolbar' });\n var toolbarItems = gObj.createElement('div', { className: 'e-toolbar-items' });\n var toolbarLeft = gObj.createElement('div', { className: 'e-toolbar-left' });\n var count = this.parent.allowFiltering && this.parent.allowSorting ? 2 : 1;\n for (var i = 0; i < count; i++) {\n var toolbarItem = gObj.createElement('div', { className: 'e-toolbar-item e-gridresponsiveicons e-icons e-tbtn-align' });\n var cls = count === 1 ? this.parent.allowSorting ? 'sort'\n : 'filter' : i === 1 ? 'sort' : 'filter';\n var button = gObj.createElement('button', { className: 'e-tbar-btn e-control e-btn e-lib e-icon-btn' });\n var span = gObj.createElement('span', { className: 'e-btn-icon e-res' + cls + '-icon e-icons' });\n button.appendChild(span);\n var btnObj = new Button({\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n btnObj.appendTo(button);\n button.onclick = function (e) {\n if (e.target.classList.contains('e-ressort-btn')\n || e.target.classList.contains('e-ressort-icon')) {\n _this.parent.showResponsiveCustomSort();\n }\n else {\n _this.parent.showResponsiveCustomFilter();\n }\n };\n toolbarItem.appendChild(button);\n toolbarLeft.appendChild(toolbarItem);\n }\n toolbarItems.appendChild(toolbarLeft);\n div.appendChild(toolbarItems);\n gObj.element.insertBefore(div, this.parent.element.querySelector('.' + literals.gridHeader));\n }\n else {\n if (gObj.enableAdaptiveUI && !gObj.toolbar) {\n gObj.getContent().classList.add('e-responsive-header');\n }\n }\n };\n HeaderRender.prototype.updateCustomResponsiveToolbar = function (args) {\n var resToolbar = this.parent.element.querySelector('.e-responsive-toolbar');\n if (args.module === 'toolbar') {\n if (resToolbar) {\n remove(resToolbar);\n }\n else {\n this.renderCustomToolbar();\n }\n }\n };\n return HeaderRender;\n}());\nexport { HeaderRender };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, extend, addClass } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { setStyleAndAttributes, appendChildren, addStickyColumnPosition } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\nimport { AriaService } from '../services/aria-service';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { headerCellInfo } from '../base/constant';\n/**\n * HeaderCellRenderer class which responsible for building header cell content.\n *\n * @hidden\n */\nvar HeaderCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderCellRenderer, _super);\n function HeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent\n .createElement('TH', { className: 'e-headercell', attrs: { tabindex: '-1', role: 'columnheader' } });\n _this.ariaService = new AriaService();\n _this.hTxtEle = _this.parent.createElement('span', { className: 'e-headertext' });\n _this.sortEle = _this.parent.createElement('div', { className: 'e-sortfilterdiv e-icons', attrs: { 'aria-hidden': 'true' } });\n _this.gui = _this.parent.createElement('div');\n _this.chkAllBox = _this.parent.createElement('input', { className: 'e-checkselectall', attrs: { 'type': 'checkbox', 'aria-label': _this.localizer.getConstant('SelectAllCheckbox') } });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n *\n * @returns {string | Element} returns the element\n */\n HeaderCellRenderer.prototype.getGui = function () {\n return this.gui.cloneNode();\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the column\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the aattributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter', attrs: { 'aria-hidden': 'true' } });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Element} node - specifies the noe\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.refresh = function (cell, node) {\n this.clean(node);\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter', attrs: { 'aria-hidden': 'true' } });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n HeaderCellRenderer.prototype.clean = function (node) {\n node.innerHTML = '';\n };\n /* tslint:disable-next-line:max-func-body-length */\n HeaderCellRenderer.prototype.prepareHeader = function (cell, node, fltrMenuEle) {\n var column = cell.column;\n var ariaAttr = {};\n var elementDesc = '';\n //Prepare innerHtml\n var innerDIV = this.getGui();\n var hValueAccer;\n attributes(innerDIV, {\n 'e-mappinguid': column.uid,\n 'class': 'e-headercelldiv'\n });\n if (!isNullOrUndefined(column.headerValueAccessor)) {\n hValueAccer = this.getValue(column.headerText, column);\n }\n if (column.type !== 'checkbox') {\n var value = column.headerText;\n if (!isNullOrUndefined(hValueAccer)) {\n value = hValueAccer;\n }\n var headerText = this.hTxtEle.cloneNode();\n headerText[column.getDomSetter()] = this.parent.sanitize(value);\n innerDIV.appendChild(headerText);\n }\n else {\n column.editType = 'booleanedit';\n var checkAllWrap = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.chkAllBox.id = 'checkbox-' + column.uid;\n checkAllWrap.insertBefore(this.chkAllBox.cloneNode(), checkAllWrap.firstChild);\n if (this.parent.cssClass) {\n addClass([checkAllWrap], [this.parent.cssClass]);\n }\n innerDIV.appendChild(checkAllWrap);\n innerDIV.classList.add('e-headerchkcelldiv');\n }\n this.buildAttributeFromCell(node, cell);\n this.appendHtml(node, innerDIV);\n node.appendChild(this.sortEle.cloneNode());\n if ((this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') &&\n (column.allowFiltering && !isNullOrUndefined(column.field)) &&\n !(this.parent.showColumnMenu && column.showColumnMenu)) {\n attributes(fltrMenuEle, {\n 'e-mappinguid': 'e-flmenu-' + column.uid\n });\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('FilterDescription') : this.localizer.getConstant('FilterDescription');\n node.classList.add('e-fltr-icon');\n var matchFlColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFlColumns.length) {\n var foreignColumn = this.parent.getForeignKeyColumns();\n for (var index = 0; index < this.parent.columns.length; index++) {\n for (var count = 0; count < this.parent.filterSettings.columns.length; count++) {\n if (this.parent.filterSettings.columns[parseInt(count.toString(), 10)].field === column.field\n || (foreignColumn.length\n && column.foreignKeyValue === this.parent.filterSettings.columns[parseInt(count.toString(), 10)].field)) {\n fltrMenuEle.classList.add('e-filtered');\n matchFlColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.appendChild(fltrMenuEle.cloneNode());\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.allowSorting && column.allowSorting) {\n ariaAttr.sort = 'none';\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('SortDescription') : this.localizer.getConstant('SortDescription');\n }\n if ((this.parent.allowGrouping && column.allowGrouping) || this.parent.allowReordering && column.allowReordering) {\n ariaAttr.grabbed = false;\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('GroupDescription') : this.localizer.getConstant('GroupDescription');\n }\n if (this.parent.showColumnMenu && column.type !== 'checkbox' && !column.template) {\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('ColumnMenuDescription') : this.localizer.getConstant('ColumnMenuDescription');\n }\n node = this.extendPrepareHeader(column, node);\n var result;\n var gridObj = this.parent;\n var colIndex = gridObj.getColumnIndexByField(column.field);\n if (!isNullOrUndefined(column.headerTemplate)) {\n //need to pass the template id for blazor headertemplate\n var headerTempID = gridObj.element.id + column.uid + 'headerTemplate';\n var str = 'isStringTemplate';\n var col = column;\n var isReactCompiler = this.parent.isReact && typeof (column.headerTemplate) !== 'string';\n var isReactChild_1 = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild_1) {\n var copied = { 'index': colIndex };\n node.firstElementChild.innerHTML = '';\n column.getHeaderTemplate()(extend(copied, col), gridObj, 'headerTemplate', headerTempID, this.parent[\"\" + str], null, node.firstElementChild);\n this.parent.renderTemplates();\n }\n else {\n result = column.getHeaderTemplate()(extend({ 'index': colIndex }, col), gridObj, 'headerTemplate', headerTempID, this.parent[\"\" + str], undefined, undefined, this.parent['root']);\n node.firstElementChild.innerHTML = '';\n appendChildren(node.firstElementChild, result);\n }\n }\n this.ariaService.setOptions(node, ariaAttr);\n if (!isNullOrUndefined(column.headerTextAlign) || !isNullOrUndefined(column.textAlign)) {\n var alignment = column.headerTextAlign || column.textAlign;\n innerDIV.style.textAlign = alignment;\n if (alignment === 'Right' || alignment === 'Left') {\n node.classList.add(alignment === 'Right' ? 'e-rightalign' : 'e-leftalign');\n }\n else if (alignment === 'Center') {\n node.classList.add('e-centeralign');\n }\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if ((column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip'))\n && !(gridObj.allowTextWrap && (gridObj.textWrapSettings.wrapMode === 'Header'\n || gridObj.textWrapSettings.wrapMode === 'Both'))) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n if (elementDesc) {\n var titleElem = (this.parent.createElement('span', { id: 'headerTitle-' + column.uid, innerHTML: elementDesc, attrs: { style: 'display:none' } }));\n node.appendChild(titleElem);\n node.setAttribute('aria-describedby', titleElem.id);\n }\n node.setAttribute('aria-rowspan', (!isNullOrUndefined(cell.rowSpan) ? cell.rowSpan : 1).toString());\n node.setAttribute('aria-colspan', '1');\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (((this.parent.isReact && this.parent.requireTemplateRef)\n || (isReactChild && this.parent.parentDetails.parentInstObj.requireTemplateRef))\n && !isNullOrUndefined(column.headerTemplate)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(headerCellInfo, { cell: cell, node: node });\n });\n }\n else {\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n }\n if (this.parent.isFrozenGrid()) {\n addStickyColumnPosition(this.parent, column, node);\n }\n return node;\n };\n HeaderCellRenderer.prototype.getValue = function (field, column) {\n return column.headerValueAccessor(field, column);\n };\n HeaderCellRenderer.prototype.extendPrepareHeader = function (column, node) {\n if (this.parent.showColumnMenu && column.showColumnMenu && !isNullOrUndefined(column.field)) {\n var element = (this.parent.createElement('div', { className: 'e-icons e-columnmenu', attrs: { 'aria-hidden': 'true' } }));\n var matchFilteredColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFilteredColumns.length) {\n for (var i = 0; i < this.parent.columns.length; i++) {\n for (var j = 0; j < this.parent.filterSettings.columns.length; j++) {\n if (this.parent.filterSettings.columns[parseInt(j.toString(), 10)].field === column.field) {\n element.classList.add('e-filtered');\n matchFilteredColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.classList.add('e-fltr-icon');\n node.appendChild(element);\n }\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHtml\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n return HeaderCellRenderer;\n}(CellRenderer));\nexport { HeaderCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { headerCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, appendChildren, frozenDirection, isChildColumn, applyStickyLeftRightPosition } from '../base/util';\n/**\n * StackedHeaderCellRenderer class which responsible for building stacked header cell content.\n *\n * @hidden\n */\nvar StackedHeaderCellRenderer = /** @class */ (function (_super) {\n __extends(StackedHeaderCellRenderer, _super);\n function StackedHeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', {\n className: 'e-headercell e-stackedheadercell', attrs: {\n tabindex: '-1', role: 'columnheader'\n }\n });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n StackedHeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var div = this.parent.createElement('div', {\n className: 'e-stackedheadercelldiv',\n attrs: { 'e-mappinguid': cell.column.uid }\n });\n var column = cell.column;\n node.appendChild(div);\n if (!isNullOrUndefined(column.headerTemplate)) {\n appendChildren(div, column.getHeaderTemplate()(column, this.parent, 'headerTemplate'));\n }\n else {\n this.appendHtml(div, this.parent.sanitize(column.headerText), column.getDomSetter());\n }\n if (cell.column.toolTip) {\n node.setAttribute('title', cell.column.toolTip);\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n node.classList.add('e-ellipsistooltip');\n }\n if (!isNullOrUndefined(cell.column.textAlign)) {\n div.style.textAlign = cell.column.textAlign;\n }\n if (cell.column.customAttributes) {\n setStyleAndAttributes(node, cell.column.customAttributes);\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-colspan', cell.colSpan.toString());\n node.setAttribute('aria-rowspan', '1');\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = cell.column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n if (frozenDirection(column) === 'Left') {\n node.classList.add('e-leftfreeze');\n if (column.border === 'Left') {\n node.classList.add('e-freezeleftborder');\n }\n if (column.index === 0) {\n applyStickyLeftRightPosition(node, (this.parent.getIndentCount() * 30), this.parent.enableRtl, 'Left');\n }\n else {\n var cols = this.parent.getColumns();\n var width = this.parent.getIndentCount() * 30;\n for (var i = 0; i < cols.length; i++) {\n if (column.index < cols[parseInt(i.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, this.parent.enableRtl, 'Left');\n }\n }\n else if (frozenDirection(column) === 'Right') {\n node.classList.add('e-rightfreeze');\n var cols = this.parent.getColumns();\n var width = this.parent.getFrozenMode() === 'Right' && this.parent.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (isChildColumn(column, cols[parseInt(i.toString(), 10)].uid) || column.index > cols[parseInt(i.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, this.parent.enableRtl, 'Right');\n if (column.border === 'Right') {\n node.classList.add('e-freezerightborder');\n }\n }\n else if (frozenDirection(column) === 'Fixed') {\n node.classList.add('e-fixedfreeze');\n var cols = this.parent.getColumns();\n var width = 0;\n if (this.parent.getVisibleFrozenLeftCount()) {\n width = this.parent.getIndentCount() * 30;\n }\n else if (this.parent.getFrozenMode() === 'Right') {\n width = this.parent.groupSettings.columns.length * 30;\n }\n for (var i = 0; i < cols.length; i++) {\n if (column.index > cols[parseInt(i.toString(), 10)].index) {\n if ((cols[parseInt(i.toString(), 10)].freeze === 'Left' || cols[parseInt(i.toString(), 10)].isFrozen) ||\n cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n }\n applyStickyLeftRightPosition(node, width - 1, this.parent.enableRtl, 'Left');\n width = this.parent.getFrozenMode() === 'Right' && this.parent.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (column.index < cols[parseInt(i.toString(), 10)].index) {\n if (isChildColumn(column, cols[parseInt(i.toString(), 10)].uid) ||\n column.index > cols[parseInt(i.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].freeze === 'Right' || cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n }\n applyStickyLeftRightPosition(node, width - 1, this.parent.enableRtl, 'Right');\n }\n else {\n node.classList.add('e-unfreeze');\n }\n return node;\n };\n return StackedHeaderCellRenderer;\n}(CellRenderer));\nexport { StackedHeaderCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { setStyleAndAttributes } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\n/**\n * IndentCellRenderer class which responsible for building group indent cell.\n *\n * @hidden\n */\nvar IndentCellRenderer = /** @class */ (function (_super) {\n __extends(IndentCellRenderer, _super);\n function IndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-indentcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n IndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n setStyleAndAttributes(node, cell.attributes);\n return node;\n };\n return IndentCellRenderer;\n}(CellRenderer));\nexport { IndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { appendChildren, templateCompiler } from '../base/util';\nimport { CellType } from '../base/enum';\n/**\n * GroupCaptionCellRenderer class which responsible for building group caption cell.\n *\n * @hidden\n */\nvar GroupCaptionCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionCellRenderer, _super);\n function GroupCaptionCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cellUid = 0;\n _this.element = _this.parent\n .createElement('TD', { className: 'e-groupcaption',\n attrs: { id: _this.parent.element.id + 'captioncell', tabindex: '-1' } });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the GroupedData\n * @returns {Element} returns the element\n */\n GroupCaptionCellRenderer.prototype.render = function (cell, data) {\n this.element.id = this.parent.element.id + 'captioncell' + this.cellUid++;\n var node = this.element.cloneNode();\n var gObj = this.parent;\n var column = cell.column;\n var domSetter = column.getDomSetter ? column.getDomSetter() : 'innerHTML';\n var result;\n var fKeyValue;\n var gTemplateValue;\n data.headerText = cell.column.headerText;\n if (cell.isForeignKey) {\n fKeyValue = this.format(cell.column, cell.column.valueAccessor('foreignKey', data, cell.column));\n }\n var value = cell.isForeignKey ? fKeyValue : cell.column.enableGroupByFormat ? data.key :\n this.format(cell.column, cell.column.valueAccessor('key', data, cell.column));\n for (var j = 0; j < gObj.aggregates.length; j++) {\n var _loop_1 = function (i) {\n if (gObj.getVisibleColumns()[0].field === gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .field && gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].groupCaptionTemplate) {\n var gCaptionTemp = gObj.aggregates[parseInt(j.toString(), 10)]\n .columns[parseInt(i.toString(), 10)].groupCaptionTemplate;\n if (typeof gCaptionTemp === 'string' && gCaptionTemp.includes('$')) {\n gTemplateValue = gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .groupCaptionTemplate.split('$')[0] + data[gObj.getVisibleColumns()[0].field][gObj\n .aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].type] +\n gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .groupCaptionTemplate.split('}')[1];\n }\n else {\n var column_1 = (gObj.aggregates[parseInt(j.toString(), 10)]\n .columns[parseInt(i.toString(), 10)]);\n var tempObj = column_1.getTemplate(CellType.CaptionSummary);\n var tempID = '';\n if (!isNullOrUndefined(tempObj)) {\n var tempValue_1 = tempObj.fn(data[column_1.columnName], this_1.parent, tempObj.property, tempID);\n if (this_1.parent.isReact && typeof column_1.groupCaptionTemplate !== 'string') {\n this_1.parent.renderTemplates(function () {\n if (tempValue_1 && tempValue_1.length) {\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n node.appendChild(tempValue_1[0]);\n }\n else {\n node.innerText += ' ' + tempValue_1[0].textContent;\n }\n }\n });\n }\n else {\n if (tempValue_1 && tempValue_1.length) {\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n gTemplateValue = tempValue_1;\n }\n else {\n gTemplateValue = tempValue_1[0].textContent;\n }\n }\n }\n }\n }\n return \"break\";\n }\n };\n var this_1 = this;\n for (var i = 0; i < gObj.aggregates[parseInt(j.toString(), 10)].columns.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n }\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n var isReactCompiler = this.parent.isReact && typeof (gObj.groupSettings.captionTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n var tempID = gObj.element.id + 'captionTemplate';\n templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent, 'captionTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else if (this.parent.isVue) {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent);\n }\n else {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data);\n }\n if (!isReactCompiler && !isReactChild) {\n appendChildren(node, result);\n if (gTemplateValue && gTemplateValue.length && gTemplateValue[0].textContent) {\n node.appendChild(gTemplateValue[0]);\n }\n }\n }\n else {\n if (gObj.groupSettings.enableLazyLoading) {\n node[\"\" + domSetter] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n else {\n node[\"\" + domSetter] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n ' - ' + data.count + ' ' + (data.count < 2 ? this.localizer.getConstant('Item') : this.localizer.getConstant('Items'))\n + (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-label', node.innerHTML + this.localizer.getConstant('GroupCaption'));\n node.setAttribute('title', node.textContent);\n return node;\n };\n return GroupCaptionCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionCellRenderer };\n/**\n * GroupCaptionEmptyCellRenderer class which responsible for building group caption empty cell.\n *\n * @hidden\n */\nvar GroupCaptionEmptyCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionEmptyCellRenderer, _super);\n function GroupCaptionEmptyCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-groupcaption' });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the Object\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {number} data.count - Defines the count\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n GroupCaptionEmptyCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.innerHTML = ' ';\n node.setAttribute('colspan', cell.colSpan.toString());\n return node;\n };\n return GroupCaptionEmptyCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionEmptyCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { IndentCellRenderer } from './indent-cell-renderer';\nimport { CellType } from '../base/enum';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar ExpandCellRenderer = /** @class */ (function (_super) {\n __extends(ExpandCellRenderer, _super);\n function ExpandCellRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Function to render the expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {Object} attr - specifies the attribute\n * @param {boolean} isExpand - specifies isexpand\n * @returns {Element} returns the element\n */\n ExpandCellRenderer.prototype.render = function (cell, data, attr, isExpand) {\n var node = this.element.cloneNode();\n node.setAttribute('ej-mappingname', data.field);\n node.setAttribute('ej-mappingvalue', data.key);\n node.setAttribute('aria-expanded', isExpand ? 'true' : 'false');\n node.setAttribute('tabindex', '-1');\n if (this.parent.infiniteScrollSettings && this.parent.infiniteScrollSettings.enableCache) {\n cell.cellType = CellType.Indent;\n node.className = isExpand ? 'e-recordplusexpand e-disablepointer' : 'e-recordpluscollapse e-disablepointer';\n }\n else {\n node.className = isExpand ? 'e-recordplusexpand' : 'e-recordpluscollapse';\n node.appendChild(this.parent.createElement('a', {\n className: isExpand ? 'e-icons e-gdiagonaldown e-icon-gdownarrow' : 'e-icons e-gnextforward e-icon-grightarrow',\n attrs: { href: '#', 'title': isExpand ? 'expanded' : 'collapsed' }\n }));\n }\n return node;\n };\n return ExpandCellRenderer;\n}(IndentCellRenderer));\nexport { ExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * HeaderIndentCellRenderer class which responsible for building header indent cell.\n *\n * @hidden\n */\nvar HeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderIndentCellRenderer, _super);\n function HeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-grouptopleftcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-headercelldiv e-emptycell', innerHTML: '' }));\n return node;\n };\n return HeaderIndentCellRenderer;\n}(CellRenderer));\nexport { HeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar DetailHeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(DetailHeaderIndentCellRenderer, _super);\n function DetailHeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-detailheadercell' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DetailHeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return DetailHeaderIndentCellRenderer;\n}(CellRenderer));\nexport { DetailHeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar DetailExpandCellRenderer = /** @class */ (function (_super) {\n __extends(DetailExpandCellRenderer, _super);\n function DetailExpandCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-detailrowcollapse',\n attrs: { 'aria-expanded': 'false', tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n DetailExpandCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n if (attributes && !isNullOrUndefined(attributes['class'])) {\n node.className = '';\n node.className = attributes['class'];\n node.appendChild(this.parent.createElement('a', { className: 'e-icons e-dtdiagonaldown e-icon-gdownarrow', attrs: {\n href: '#', 'title': this.localizer.getConstant('Expanded')\n } }));\n }\n else {\n node.appendChild(this.parent.createElement('a', { className: 'e-icons e-dtdiagonalright e-icon-grightarrow', attrs: {\n href: '#', 'title': this.localizer.getConstant('Collapsed')\n } }));\n }\n if (cell.isSelected) {\n node.classList.add('e-selectionbackground', 'e-active');\n }\n return node;\n };\n return DetailExpandCellRenderer;\n}(CellRenderer));\nexport { DetailExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\nimport { applyStickyLeftRightPosition } from '../base/util';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar RowDragDropRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropRenderer, _super);\n function RowDragDropRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-rowdragdrop e-rowdragdropcell',\n attrs: { tabindex: '-1', role: 'gridcell' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropRenderer.prototype.render = function (cell, data) {\n var nodeElement = this.element.cloneNode();\n nodeElement.appendChild(this.parent.createElement('div', {\n className: 'e-icons e-rowcelldrag e-dtdiagonalright e-icon-rowdragicon',\n attrs: { 'aria-hidden': 'true' }\n }));\n if (cell.isSelected) {\n nodeElement.classList.add('e-selectionbackground');\n nodeElement.classList.add('e-active');\n }\n if (this.parent.getVisibleFrozenRightCount() || this.parent.getVisibleFrozenLeftCount()) {\n nodeElement.classList.add('e-leftfreeze');\n var width = this.parent.getFrozenMode() === 'Right' ? 0 : this.parent.groupSettings.columns.length * 30;\n applyStickyLeftRightPosition(nodeElement, width, this.parent.enableRtl, this.parent.getFrozenMode() === 'Right' ? 'Right' : 'Left');\n }\n return nodeElement;\n };\n return RowDragDropRenderer;\n}(CellRenderer));\nexport { RowDragDropRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { createElement } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { applyStickyLeftRightPosition } from '../base/util';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar RowDragDropHeaderRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropHeaderRenderer, _super);\n function RowDragDropHeaderRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-rowdragheader' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropHeaderRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(createElement('div', { className: 'e-emptycell' }));\n if (this.parent.getVisibleFrozenRightCount() || this.parent.getVisibleFrozenLeftCount()) {\n node.classList.add('e-leftfreeze');\n var width = this.parent.getFrozenMode() === 'Right' ? 0 : this.parent.groupSettings.columns.length * 30;\n applyStickyLeftRightPosition(node, width, this.parent.enableRtl, this.parent.getFrozenMode() === 'Right' ? 'Right' : 'Left');\n }\n return node;\n };\n return RowDragDropHeaderRenderer;\n}(CellRenderer));\nexport { RowDragDropHeaderRenderer };\n","import { remove, resetBlazorTemplate, blazorTemplates, getValue } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Deferred, Predicate, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RenderType, CellType } from '../base/enum';\nimport { Data } from '../actions/data';\nimport { Column } from '../models/column';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport * as events from '../base/constant';\nimport { prepareColumns, setFormatter, isGroupAdaptive, getDatePredicate, getObject, clearReactVueTemplates } from '../base/util';\nimport { ContentRender } from '../renderer/content-renderer';\nimport { HeaderRender } from '../renderer/header-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\nimport { StackedHeaderCellRenderer } from '../renderer/stacked-cell-renderer';\nimport { IndentCellRenderer } from '../renderer/indent-cell-renderer';\nimport { GroupCaptionCellRenderer, GroupCaptionEmptyCellRenderer } from '../renderer/caption-cell-renderer';\nimport { ExpandCellRenderer } from '../renderer/expand-cell-renderer';\nimport { HeaderIndentCellRenderer } from '../renderer/header-indent-renderer';\nimport { DetailHeaderIndentCellRenderer } from '../renderer/detail-header-indent-renderer';\nimport { DetailExpandCellRenderer } from '../renderer/detail-expand-cell-renderer';\nimport { RowDragDropRenderer } from './row-drag-drop-renderer';\nimport { RowDragDropHeaderRenderer } from '../renderer/row-drag-header-indent-render';\nimport * as literals from '../base/string-literals';\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} locator - specifies the serviceLocator\n */\n function Render(parent, locator) {\n this.emptyGrid = false;\n this.counter = 0;\n this.parent = parent;\n this.locator = locator;\n this.data = new Data(parent, locator);\n this.l10n = locator.getService('localization');\n this.ariaService = this.locator.getService('ariaService');\n this.renderer = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n /**\n * To initialize grid header, content and footer rendering\n *\n * @returns {void}\n */\n Render.prototype.render = function () {\n var gObj = this.parent;\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer.renderPanel();\n this.contentRenderer.renderPanel();\n if (gObj.getColumns().length) {\n this.isLayoutRendered = true;\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.emptyRow(false);\n }\n this.parent.scrollModule.setWidth();\n this.parent.scrollModule.setHeight();\n if (this.parent.height !== 'auto') {\n this.parent.scrollModule.setPadding();\n }\n this.refreshDataManager();\n };\n /**\n * Refresh the entire Grid.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n */\n Render.prototype.refresh = function (e) {\n var _this = this;\n if (e === void 0) { e = { requestType: 'refresh' }; }\n var gObj = this.parent;\n gObj.notify(e.requestType + \"-begin\", e);\n gObj.trigger(events.actionBegin, e, function (args) {\n if (args === void 0) { args = { requestType: 'refresh' }; }\n if (args.cancel) {\n gObj.notify(events.cancelBegin, args);\n if (args.action === 'clearFilter' && _this.parent.filterSettings.type === 'Menu') {\n _this.parent.filterSettings.columns[_this.parent.filterModule.filterObjIndex] = _this.parent.filterModule.prevFilterObject;\n var iconClass = _this.parent.showColumnMenu && _this.parent.filterModule['column'].showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var col = _this.parent.element.querySelector('[e-mappinguid=\"' + _this.parent.filterModule['column'].uid + '\"]').parentElement;\n var flIcon = col.querySelector(iconClass);\n if (!isNullOrUndefined(_this.parent.filterModule.prevFilterObject)) {\n flIcon.classList.add('e-filtered');\n }\n }\n if (args.action === 'clear-filter' && (_this.parent.filterSettings.type === 'CheckBox' || _this.parent.filterSettings.type === 'Excel')) {\n _this.parent.filterSettings.columns = _this.parent.filterModule.checkboxPrevFilterObject;\n }\n if (args.requestType === 'grouping') {\n // Remove the dropped column name from groupsettings.columns if args.cancel is true \n var index = gObj.groupSettings.columns.indexOf(args.columnName);\n if (index !== -1) {\n gObj.setProperties({ groupSettings: { Columns: gObj.groupSettings.columns.splice(index, 1) } }, true);\n gObj.setProperties({ sortSettings: { Columns: gObj.sortSettings.columns.splice(index, 1) } }, true);\n var column = gObj.getColumnByField(args.columnName);\n var headerCell = gObj.getColumnHeaderByField(column.field);\n column.visible = (!isNullOrUndefined(headerCell) && !headerCell.classList.contains('e-hide'));\n }\n }\n return;\n }\n if (gObj.allowSelection && (args.action === 'clearFilter' || args.action === 'clear-filter' ||\n (args.requestType === 'searching' && args.searchString === '') || args.action === 'add')) {\n gObj.selectionModule['rmtHdrChkbxClicked'] = false;\n }\n if (gObj.allowPaging && gObj.pageSettings.pageSizes && gObj.pagerModule.pagerObj.isAllPage &&\n (args.action === 'add' && args.requestType === 'save') && gObj.pagerModule.pagerObj.checkAll) {\n gObj.setProperties({ pageSettings: { pageSize: gObj.pageSettings.pageSize + 1 } }, true);\n }\n if (args.requestType === 'delete' && gObj.allowPaging) {\n var dataLength = args.data.length;\n var count = gObj.pageSettings.totalRecordsCount - dataLength;\n var currentViewData = gObj.getCurrentViewRecords().length;\n // eslint-disable-next-line max-len\n if ((!(currentViewData - dataLength) && count && ((gObj.pageSettings.currentPage - 1) * gObj.pageSettings.pageSize) === count) || (count && count <= dataLength)) {\n gObj.prevPageMoving = true;\n gObj.setProperties({\n pageSettings: {\n totalRecordsCount: count, currentPage: Math.ceil(count / gObj.pageSettings.pageSize)\n }\n }, true);\n gObj.pagerModule.pagerObj.totalRecordsCount = count;\n }\n }\n if (args.requestType === 'reorder' && _this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else if ((args.requestType === 'paging' || args.requestType === 'columnstate' || args.requestType === 'reorder')\n && _this.parent.groupSettings.enableLazyLoading && _this.parent.groupSettings.columns.length\n && (_this.parent.enableVirtualization ? _this.parent.lazyLoadRender :\n _this.parent.contentModule).getGroupCache()[_this.parent.pageSettings.currentPage]) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else {\n _this.refreshDataManager(args);\n }\n });\n };\n /**\n * @returns {void}\n * @hidden\n */\n Render.prototype.resetTemplates = function () {\n var gObj = this.parent;\n var gridColumns = gObj.getColumns();\n if (gObj.detailTemplate) {\n var detailTemplateID = gObj.element.id + 'detailTemplate';\n blazorTemplates[\"\" + detailTemplateID] = [];\n resetBlazorTemplate(detailTemplateID, 'DetailTemplate');\n }\n if (gObj.groupSettings.captionTemplate) {\n resetBlazorTemplate(gObj.element.id + 'captionTemplate', 'CaptionTemplate');\n }\n if (gObj.rowTemplate) {\n resetBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate');\n }\n if (gObj.toolbarTemplate) {\n resetBlazorTemplate(gObj.element.id + 'toolbarTemplate', 'ToolbarTemplate');\n }\n if (gObj.pageSettings.template) {\n resetBlazorTemplate(gObj.element.id + '_template', 'pageSettings');\n }\n for (var i = 0; i < gridColumns.length; i++) {\n if (gridColumns[parseInt(i.toString(), 10)].template) {\n blazorTemplates[gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid] = [];\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid, 'Template');\n }\n if (gridColumns[parseInt(i.toString(), 10)].headerTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid + 'headerTemplate', 'HeaderTemplate');\n }\n if (gridColumns[parseInt(i.toString(), 10)].filterTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid + 'filterTemplate', 'FilterTemplate');\n }\n }\n var guid = 'guid';\n for (var k = 0; k < gObj.aggregates.length; k++) {\n for (var j = 0; j < gObj.aggregates[parseInt(k.toString(), 10)].columns.length; j++) {\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].footerTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'footerTemplate';\n resetBlazorTemplate(tempID, 'FooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupFooterTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'groupFooterTemplate';\n resetBlazorTemplate(tempID, 'GroupFooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupCaptionTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'groupCaptionTemplate';\n resetBlazorTemplate(tempID, 'GroupCaptionTemplate');\n }\n }\n }\n };\n Render.prototype.refreshComplete = function (e) {\n this.parent.trigger(events.actionComplete, e);\n };\n /**\n * The function is used to refresh the dataManager\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n Render.prototype.refreshDataManager = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n var maskRow = (gObj.loadingIndicator.indicatorType === 'Shimmer' && args.requestType !== 'virtualscroll'\n && args.requestType !== 'infiniteScroll') || ((args.requestType === 'virtualscroll' || args.requestType === 'infiniteScroll')\n && gObj.enableVirtualMaskRow);\n if (args.requestType !== 'virtualscroll' && !args.isCaptionCollapse && !maskRow) {\n this.parent.showSpinner();\n }\n if (maskRow) {\n gObj.showMaskRow(args.requestType === 'virtualscroll' ? args.virtualInfo.sentinelInfo.axis\n : args.requestType === 'infiniteScroll' ? args.direction : undefined);\n }\n this.parent.notify(events.resetInfiniteBlocks, args);\n this.emptyGrid = false;\n var dataManager;\n var isFActon = this.isNeedForeignAction();\n this.ariaService.setBusy(this.parent.getContent().querySelector('.' + literals.content), true);\n if (isFActon) {\n var deffered = new Deferred();\n dataManager = this.getFData(deffered, args);\n }\n if (!dataManager) {\n if (gObj.allowPaging && !gObj.getDataModule().dataManager.dataSource.offline && gObj.pageSettings\n && gObj.pageSettings.pageSizes && gObj.pagerModule && gObj.pagerModule.pagerObj && gObj.pagerModule.pagerObj.isAllPage) {\n gObj.pagerModule.pagerObj.isAllPage = undefined;\n }\n dataManager = this.data.getData(args, this.data.generateQuery().requiresCount());\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dataManager = dataManager.then(function (e) {\n var query = _this.data.generateQuery().requiresCount();\n if (_this.emptyGrid) {\n var def = new Deferred();\n def.resolve({ result: [], count: 0 });\n return def.promise;\n }\n return _this.data.getData(args, query);\n });\n }\n if (this.parent.getForeignKeyColumns().length && (!isFActon || this.parent.searchSettings.key.length)) {\n var deffered_1 = new Deferred();\n dataManager = dataManager.then(function (e) {\n _this.parent.notify(events.getForeignKeyData, { dataManager: dataManager, result: e, promise: deffered_1, action: args });\n return deffered_1.promise;\n });\n }\n if (this.parent.groupSettings.disablePageWiseAggregates && this.parent.groupSettings.columns.length) {\n dataManager = dataManager.then(function (e) { return _this.validateGroupRecords(e); });\n }\n dataManager.then(function (e) { return _this.dataManagerSuccess(e, args); })\n .catch(function (e) { return _this.dataManagerFailure(e, args); });\n };\n Render.prototype.getFData = function (deferred, args) {\n this.parent.notify(events.getForeignKeyData, { isComplex: true, promise: deferred, action: args });\n return deferred.promise;\n };\n Render.prototype.isNeedForeignAction = function () {\n var gObj = this.parent;\n return !!((gObj.allowFiltering && gObj.filterSettings.columns.length) ||\n (gObj.searchSettings.key.length)) && this.foreignKey(this.parent.getForeignKeyColumns());\n };\n Render.prototype.foreignKey = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n var fbool = false;\n fbool = _this.parent.filterSettings.columns.some(function (value) {\n return col.uid === value.uid;\n });\n return !!(fbool || _this.parent.searchSettings.key.length);\n });\n };\n Render.prototype.sendBulkRequest = function (args) {\n var _this = this;\n args.requestType = 'batchsave';\n var gObj = this.parent;\n if (gObj.allowPaging && gObj.pageSettings.pageSizes && gObj.pagerModule.pagerObj.isAllPage && gObj.pagerModule.pagerObj.checkAll) {\n var dataLength = args['changes'].addedRecords.length;\n if (dataLength) {\n gObj.setProperties({ pageSettings: { pageSize: gObj.pageSettings.pageSize + dataLength } }, true);\n }\n }\n if (gObj.allowPaging && (args.changes.addedRecords.length ||\n args.changes.deletedRecords.length ||\n args.changes.changedRecords.length) && gObj.pageSettings\n && gObj.pageSettings.pageSizes && gObj.pagerModule && gObj.pagerModule.pagerObj\n && !gObj.getDataModule().dataManager.dataSource.offline && gObj.pagerModule.pagerObj.isAllPage) {\n gObj.pagerModule.pagerObj.isAllPage = undefined;\n }\n var promise = this.data.saveChanges(args.changes, this.parent.getPrimaryKeyFieldNames()[0], args.original);\n var query = this.data.generateQuery().requiresCount();\n if (this.data.dataManager.dataSource.offline) {\n this.refreshDataManager({ requestType: 'batchsave' });\n return;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n promise.then(function (e) {\n _this.data.getData(args, query)\n .then(function (e) { return _this.dmSuccess(e, args); })\n .catch(function (e) { return _this.dmFailure(e, args); });\n })\n .catch(function (e) { return _this.dmFailure(e, args); });\n }\n };\n Render.prototype.dmSuccess = function (e, args) {\n this.dataManagerSuccess(e, args);\n };\n Render.prototype.dmFailure = function (e, args) {\n this.dataManagerFailure(e, args);\n };\n /**\n * Render empty row to Grid which is used at the time to represent to no records.\n *\n * @returns {void}\n * @hidden\n */\n Render.prototype.renderEmptyRow = function () {\n this.emptyRow(true);\n };\n Render.prototype.emptyRow = function (isTrigger) {\n var gObj = this.parent;\n var tbody = this.contentRenderer.getTable().querySelector(literals.tbody);\n if (!isNullOrUndefined(tbody)) {\n remove(tbody);\n }\n tbody = this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var spanCount = gObj.allowRowDragAndDrop && isNullOrUndefined(gObj.rowDropSettings.targetID) ? 1 : 0;\n if (gObj.detailTemplate || gObj.childGrid) {\n ++spanCount;\n }\n var tr = this.parent.createElement('tr', { className: 'e-emptyrow', attrs: { role: 'row' } });\n var td;\n if (gObj.emptyRecordTemplate) {\n var emptyRecordTemplateID = gObj.element.id + 'emptyRecordTemplate';\n td = this.parent.createElement('td', { attrs: { colspan: (gObj.getVisibleColumns().length + spanCount + gObj.groupSettings.columns.length).toString() } });\n if (gObj.isVue) {\n td.appendChild(gObj.getEmptyRecordTemplate()(gObj.dataSource, gObj, 'emptyRecordTemplate', emptyRecordTemplateID, undefined, undefined, undefined, this.parent['root'])[1]);\n }\n else {\n td.appendChild(gObj.getEmptyRecordTemplate()(gObj.dataSource, gObj, 'emptyRecordTemplate', emptyRecordTemplateID, undefined, undefined, undefined, this.parent['root'])[0]);\n }\n if (gObj.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n td = this.parent.createElement('td', {\n innerHTML: this.l10n.getConstant('EmptyRecord'),\n attrs: { colspan: (gObj.getVisibleColumns().length + spanCount + gObj.groupSettings.columns.length).toString() }\n });\n }\n if (gObj.isFrozenGrid()) {\n td.classList.add('e-leftfreeze');\n td.style.left = 0 + 'px';\n }\n if (gObj.frozenRows && gObj.element.querySelector('.e-frozenrow-border')) {\n this.parent.element.querySelector('.e-frozenrow-border').classList.add('e-frozenrow-empty');\n }\n tr.appendChild(td);\n tbody.appendChild(tr);\n this.contentRenderer.renderEmpty(tbody);\n if (isTrigger) {\n this.parent.trigger(events.dataBound, {});\n this.parent.notify(events.onEmpty, { rows: [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })] });\n }\n };\n Render.prototype.dynamicColumnChange = function () {\n if (this.parent.getCurrentViewRecords().length) {\n this.updateColumnType(this.parent.getCurrentViewRecords()[0]);\n }\n };\n Render.prototype.updateColumnType = function (record) {\n var columns = this.parent.getColumns();\n var value;\n var cFormat = 'customFormat';\n var equalTo = 'equalTo';\n var data = record && record.items ? record.items[0] : record;\n var fmtr = this.locator.getService('valueFormatter');\n for (var i = 0, len = columns.length; i < len; i++) {\n value = getObject(columns[parseInt(i.toString(), 10)].field || '', data);\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)][\"\" + cFormat])) {\n columns[parseInt(i.toString(), 10)].format = columns[parseInt(i.toString(), 10)][\"\" + cFormat];\n }\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules)\n && !isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo])) {\n columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0] = this.parent.element.id + columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0];\n }\n if (columns[parseInt(i.toString(), 10)].isForeignColumn() && columns[parseInt(i.toString(), 10)].columnData) {\n value = getObject(columns[parseInt(i.toString(), 10)].foreignKeyValue || '', columns[parseInt(i.toString(), 10)].columnData[0]);\n }\n if (!isNullOrUndefined(value)) {\n this.isColTypeDef = true;\n if (!columns[parseInt(i.toString(), 10)].type) {\n columns[parseInt(i.toString(), 10)].type = value.getDay ? (value.getHours() > 0 || value.getMinutes() > 0 ||\n value.getSeconds() > 0 || value.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n }\n else {\n columns[parseInt(i.toString(), 10)].type = columns[parseInt(i.toString(), 10)].type || null;\n }\n var valueFormatter = new ValueFormatter();\n if (columns[parseInt(i.toString(), 10)].format && (columns[parseInt(i.toString(), 10)].format.skeleton\n || (columns[parseInt(i.toString(), 10)].format.format &&\n typeof columns[parseInt(i.toString(), 10)].format.format === 'string'))) {\n columns[parseInt(i.toString(), 10)].setFormatter(valueFormatter.getFormatFunction(extend({}, columns[parseInt(i.toString(), 10)].format)));\n columns[parseInt(i.toString(), 10)].setParser(valueFormatter.getParserFunction(columns[parseInt(i.toString(), 10)].format));\n }\n if (typeof (columns[parseInt(i.toString(), 10)].format) === 'string') {\n setFormatter(this.locator, columns[parseInt(i.toString(), 10)]);\n }\n else if (!columns[parseInt(i.toString(), 10)].format && columns[parseInt(i.toString(), 10)].type === 'number') {\n columns[parseInt(i.toString(), 10)].setParser(fmtr.getParserFunction({ format: 'n2' }));\n }\n if (columns[parseInt(i.toString(), 10)].type === 'dateonly' && !columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = 'yMd';\n setFormatter(this.locator, columns[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * @param {ReturnType} e - specifies the return type\n * @param {NotifyArgs} args - specifies the Notifyargs\n * @returns {void}\n * @hidden\n */\n // tslint:disable-next-line:max-func-body-length\n Render.prototype.dataManagerSuccess = function (e, args) {\n var _this = this;\n var gObj = this.parent;\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n e.actionArgs = args;\n var isInfiniteDelete = this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache &&\n !gObj.groupSettings.enableLazyLoading && (args.requestType === 'delete' || (args.requestType === 'save' &&\n this.parent.infiniteScrollModule.requestType === 'add' && !(gObj.sortSettings.columns.length ||\n gObj.filterSettings.columns.length || this.parent.groupSettings.columns.length || gObj.searchSettings.key)));\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(events.beforeDataBound, e, function (dataArgs) {\n if (dataArgs.cancel) {\n return;\n }\n dataArgs.result = isNullOrUndefined(dataArgs.result) ? [] : dataArgs.result;\n var len = Object.keys(dataArgs.result).length;\n if (_this.parent.isDestroyed) {\n return;\n }\n if ((!gObj.getColumns().length && !len) && !(gObj.columns.length && gObj.columns[0] instanceof Column)) {\n gObj.hideSpinner();\n return;\n }\n if (_this.isInfiniteEnd(args) && !len) {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n return;\n }\n _this.parent.isEdit = false;\n _this.parent.notify(events.editReset, {});\n _this.parent.notify(events.tooltipDestroy, {});\n if (args && args.requestType !== 'infiniteScroll') {\n _this.parent.notify(events.commandColumnDestroy, { type: 'refreshCommandColumn' });\n }\n _this.contentRenderer.prevCurrentView = _this.parent.currentViewData.slice();\n gObj.currentViewData = dataArgs.result;\n gObj.notify(events.refreshInfiniteCurrentViewData, { args: args, data: dataArgs.result });\n if (dataArgs.count && !gObj.allowPaging && (gObj.enableVirtualization || gObj.enableInfiniteScrolling)) {\n gObj.totalDataRecordsCount = dataArgs.count;\n }\n if (!len && dataArgs.count && gObj.allowPaging && args && args.requestType !== 'delete') {\n if (_this.parent.groupSettings.enableLazyLoading\n && (args.requestType === 'grouping' || args.requestType === 'ungrouping')) {\n _this.parent.notify(events.groupComplete, args);\n }\n gObj.prevPageMoving = true;\n gObj.pageSettings.totalRecordsCount = dataArgs.count;\n if (args.requestType !== 'paging') {\n gObj.pageSettings.currentPage = Math.ceil(dataArgs.count / gObj.pageSettings.pageSize);\n }\n gObj.dataBind();\n return;\n }\n if ((!gObj.getColumns().length && len || !_this.isLayoutRendered) && !isGroupAdaptive(gObj)) {\n gObj.removeMaskRow();\n _this.updatesOnInitialRender(dataArgs);\n }\n if (!_this.isColTypeDef && gObj.getCurrentViewRecords()) {\n if (_this.data.dataManager.dataSource.offline && gObj.dataSource && gObj.dataSource.length) {\n _this.updateColumnType(gObj.dataSource[0]);\n }\n else {\n _this.updateColumnType(gObj.getCurrentViewRecords()[0]);\n }\n }\n if (!_this.parent.isInitialLoad && _this.parent.groupSettings.disablePageWiseAggregates &&\n !_this.parent.groupSettings.columns.length) {\n dataArgs.result = _this.parent.dataSource instanceof Array ? _this.parent.dataSource : _this.parent.currentViewData;\n }\n if ((_this.parent.isReact || _this.parent.isVue) && !isNullOrUndefined(args) && args.requestType !== 'infiniteScroll' && !args.isFrozen) {\n clearReactVueTemplates(_this.parent, ['footerTemplate']);\n }\n if (_this.parent.isAngular && _this.parent.allowGrouping && _this.parent.groupSettings.captionTemplate\n && !(!isNullOrUndefined(args) && args.requestType === 'infiniteScroll')) {\n _this.parent.destroyTemplate(['groupSettings_captionTemplate']);\n }\n _this.parent.notify(events.dataReady, extend({ count: dataArgs.count, result: dataArgs.result, aggregates: dataArgs.aggregates }, args));\n if ((gObj.groupSettings.columns.length || (args && args.requestType === 'ungrouping'))\n && (args && args.requestType !== 'filtering')) {\n _this.headerRenderer.refreshUI();\n }\n if (len) {\n if (isGroupAdaptive(gObj)) {\n var content = 'content';\n args.scrollTop = { top: _this.contentRenderer[\"\" + content].scrollTop };\n }\n if (!isInfiniteDelete) {\n if (_this.parent.enableImmutableMode) {\n _this.contentRenderer.immutableModeRendering(args);\n }\n else {\n _this.contentRenderer.refreshContentRows(args);\n }\n }\n else {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n }\n }\n else {\n if (args && args.isCaptionCollapse) {\n return;\n }\n if (!gObj.getColumns().length) {\n gObj.element.innerHTML = '';\n alert(_this.l10n.getConstant('EmptyDataSourceError')); //ToDO: change this alert as dialog\n return;\n }\n _this.contentRenderer.setRowElements([]);\n _this.contentRenderer.setRowObjects([]);\n _this.ariaService.setBusy(_this.parent.getContent().querySelector('.' + literals.content), false);\n gObj.removeMaskRow();\n _this.renderEmptyRow();\n if (gObj.enableColumnVirtualization && !len) {\n _this.parent.notify(events.contentReady, { rows: gObj.getRowsObject(), args: {} });\n }\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, args);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n args.rows = [];\n args.isFrozen = !args.isFrozen;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.parent.autoFit) {\n _this.parent.preventAdjustColumns();\n }\n _this.parent.hideSpinner();\n }\n _this.parent.notify(events.toolbarRefresh, {});\n _this.setRowCount(_this.parent.getCurrentViewRecords().length);\n if ('query' in e) {\n _this.parent.getDataModule().isQueryInvokedFromData = false;\n }\n });\n };\n /**\n * @param {object} e - specifies the object\n * @param {Object[]} e.result - specifies the result\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n Render.prototype.dataManagerFailure = function (e, args) {\n if (!isNullOrUndefined(this.parent.contentModule)) {\n this.ariaService.setOptions(this.parent.getContent().querySelector('.' + literals.content), { busy: false, invalid: true });\n this.setRowCount(1);\n }\n this.parent.trigger(events.actionFailure, { error: e });\n this.parent.hideSpinner();\n this.parent.removeMaskRow();\n if (args.requestType === 'save' || args.requestType === 'delete'\n || args.name === 'bulk-save') {\n return;\n }\n this.parent.currentViewData = [];\n this.renderEmptyRow();\n if (!this.parent.isInitialLoad) {\n this.parent.focusModule.setFirstFocusableTabIndex();\n }\n this.parent.log('actionfailure', { error: e });\n };\n Render.prototype.setRowCount = function (dataRowCount) {\n this.ariaService.setOptions(this.parent.element, {\n rowcount: dataRowCount ? dataRowCount.toString() : '1'\n });\n };\n Render.prototype.isInfiniteEnd = function (args) {\n return this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache && args.requestType === 'delete';\n };\n Render.prototype.updatesOnInitialRender = function (e) {\n this.isLayoutRendered = true;\n var isEmptyCol = false;\n if (this.parent.columns.length < 1) {\n this.buildColumns(e.result[0]);\n isEmptyCol = true;\n }\n prepareColumns(this.parent.columns, null, this.parent);\n if (isEmptyCol) {\n this.parent.notify(events.refreshSplitFrozenColumn, {});\n }\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.parent.isAutoGen = true;\n this.parent.notify(events.autoCol, {});\n };\n Render.prototype.iterateComplexColumns = function (obj, field, split) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n var childKeys = typeof obj[keys[parseInt(i.toString(), 10)]] === 'object'\n && obj[keys[parseInt(i.toString(), 10)]] && !(obj[keys[parseInt(i.toString(), 10)]] instanceof Date) ?\n Object.keys(obj[keys[parseInt(i.toString(), 10)]]) : [];\n if (childKeys.length) {\n this.iterateComplexColumns(obj[keys[parseInt(i.toString(), 10)]], field + (keys[parseInt(i.toString(), 10)] + '.'), split);\n }\n else {\n split[this.counter] = field + keys[parseInt(i.toString(), 10)];\n this.counter++;\n }\n }\n };\n Render.prototype.buildColumns = function (record) {\n var cols = [];\n var complexCols = {};\n this.iterateComplexColumns(record, '', complexCols);\n var columns = Object.keys(complexCols).filter(function (e) { return complexCols[\"\" + e] !== 'BlazId'; }).\n map(function (field) { return complexCols[\"\" + field]; });\n for (var i = 0, len = columns.length; i < len; i++) {\n cols[parseInt(i.toString(), 10)] = { 'field': columns[parseInt(i.toString(), 10)] };\n if (this.parent.enableColumnVirtualization) {\n cols[parseInt(i.toString(), 10)].width = !isNullOrUndefined(cols[parseInt(i.toString(), 10)].width) ?\n cols[parseInt(i.toString(), 10)].width : 200;\n }\n }\n this.parent.setProperties({ 'columns': cols }, true);\n };\n Render.prototype.instantiateRenderer = function () {\n this.renderer.addRenderer(RenderType.Header, new HeaderRender(this.parent, this.locator));\n this.renderer.addRenderer(RenderType.Content, new ContentRender(this.parent, this.locator));\n var cellrender = this.locator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Header, new HeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Data, new CellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Indent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaption, new GroupCaptionCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaptionEmpty, new GroupCaptionEmptyCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Expand, new ExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.HeaderIndent, new HeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailHeader, new DetailHeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragHIcon, new RowDragDropHeaderRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailExpand, new DetailExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailFooterIntent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragIcon, new RowDragDropRenderer(this.parent, this.locator));\n };\n Render.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialLoad, this.instantiateRenderer, this);\n this.parent.on('refreshdataSource', this.dataManagerSuccess, this);\n this.parent.on(events.modelChanged, this.refresh, this);\n this.parent.on(events.refreshComplete, this.refreshComplete, this);\n this.parent.on(events.bulkSave, this.sendBulkRequest, this);\n this.parent.on(events.showEmptyGrid, function () { _this.emptyGrid = true; }, this);\n this.parent.on(events.autoCol, this.dynamicColumnChange, this);\n };\n /**\n * @param {ReturnType} e - specifies the Return type\n * @returns {Promise} returns the object\n * @hidden\n */\n Render.prototype.validateGroupRecords = function (e) {\n var _this = this;\n var index = e.result.length - 1;\n if (index < 0) {\n return Promise.resolve(e);\n }\n var group0 = e.result[0];\n var groupN = e.result[parseInt(index.toString(), 10)];\n var predicate = [];\n var addWhere = function (input) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n predicate.push(new Predicate('field', '==', groups[parseInt(i.toString(), 10)].field).and(_this.getPredicate('key', 'equal', groups[parseInt(i.toString(), 10)].key)));\n }\n input.where(Predicate.or(predicate));\n };\n var query = new Query();\n addWhere(query);\n var curDm = new DataManager(e.result);\n var curFilter = curDm.executeLocal(query);\n var newQuery = this.data.generateQuery(true);\n var rPredicate = [];\n if (this.data.isRemote()) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n rPredicate.push(this.getPredicate(groups[parseInt(i.toString(), 10)].field, 'equal', groups[parseInt(i.toString(), 10)].key));\n }\n newQuery.where(Predicate.or(rPredicate));\n }\n else {\n addWhere(newQuery);\n }\n var deferred = new Deferred();\n this.data.getData({}, newQuery).then(function (r) {\n _this.updateGroupInfo(curFilter, r.result);\n deferred.resolve(e);\n }).catch(function (e) { return deferred.reject(e); });\n return deferred.promise;\n };\n Render.prototype.getPredicate = function (key, operator, value) {\n if (value instanceof Date) {\n return getDatePredicate({ field: key, operator: operator, value: value });\n }\n return new Predicate(key, operator, value);\n };\n Render.prototype.updateGroupInfo = function (current, untouched) {\n var dm = new DataManager(untouched);\n var elements = current;\n for (var i = 0; i < elements.length; i++) {\n var uGroup = dm.executeLocal(new Query()\n .where(new Predicate('field', '==', elements[parseInt(i.toString(), 10)].field).and(this.getPredicate('key', 'equal', elements[parseInt(i.toString(), 10)].key))))[0];\n elements[parseInt(i.toString(), 10)].count = uGroup.count;\n var itemGroup = elements[parseInt(i.toString(), 10)].items;\n var uGroupItem = uGroup.items;\n if (itemGroup.GroupGuid) {\n elements[parseInt(i.toString(), 10)].items =\n this.updateGroupInfo(elements[parseInt(i.toString(), 10)].items, uGroup.items);\n }\n var rows = this.parent.aggregates;\n for (var j = 0; j < rows.length; j++) {\n var row = rows[parseInt(j.toString(), 10)];\n for (var k = 0; k < row.columns.length; k++) {\n var types = row.columns[parseInt(k.toString(), 10)].type instanceof Array ?\n (row.columns[parseInt(k.toString(), 10)].type) :\n [(row.columns[parseInt(k.toString(), 10)].type)];\n for (var l = 0; l < types.length; l++) {\n var key = row.columns[parseInt(k.toString(), 10)].field + ' - ' + types[parseInt(l.toString(), 10)].toLowerCase();\n var data = itemGroup.level ? uGroupItem.records : uGroup.items;\n var context = this.parent;\n if (types[parseInt(l.toString(), 10)] === 'Custom') {\n var data_1 = itemGroup.level ? uGroupItem : uGroup;\n var temp = row.columns[parseInt(k.toString(), 10)]\n .customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = temp ? temp.call(context, data_1, row.columns[parseInt(k.toString(), 10)]) : '';\n }\n else {\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = DataUtil.aggregates[types[parseInt(l.toString(), 10)].toLowerCase()](data, row.columns[parseInt(k.toString(), 10)].field);\n }\n }\n }\n }\n }\n return current;\n };\n return Render;\n}());\nexport { Render };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\n/**\n * CellRendererFactory\n *\n * @hidden\n */\nvar CellRendererFactory = /** @class */ (function () {\n function CellRendererFactory() {\n this.cellRenderMap = {};\n }\n CellRendererFactory.prototype.addCellRenderer = function (name, type) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[\"\" + name])) {\n this.cellRenderMap[\"\" + name] = type;\n }\n };\n CellRendererFactory.prototype.getCellRenderer = function (name) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[\"\" + name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The cellRenderer \" + name + \" is not found\";\n }\n else {\n return this.cellRenderMap[\"\" + name];\n }\n };\n return CellRendererFactory;\n}());\nexport { CellRendererFactory };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ResponsiveDialogRenderer } from '../renderer/responsive-dialog-renderer';\n/**\n * ServiceLocator\n *\n * @hidden\n */\nvar ServiceLocator = /** @class */ (function () {\n function ServiceLocator() {\n this.services = {};\n }\n ServiceLocator.prototype.register = function (name, type) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n this.services[\"\" + name] = type;\n }\n };\n ServiceLocator.prototype.getService = function (name) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The service \" + name + \" is not registered\";\n }\n return this.services[\"\" + name];\n };\n ServiceLocator.prototype.registerAdaptiveService = function (type, isAdaptiveUI, action) {\n if (isAdaptiveUI) {\n type.responsiveDialogRenderer = new ResponsiveDialogRenderer(type.parent, type.serviceLocator);\n type.responsiveDialogRenderer.action = action;\n }\n else {\n if (type.responsiveDialogRenderer) {\n type.responsiveDialogRenderer.removeEventListener();\n type.responsiveDialogRenderer = undefined;\n }\n }\n };\n return ServiceLocator;\n}());\nexport { ServiceLocator };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\n/**\n * RendererFactory\n *\n * @hidden\n */\nvar RendererFactory = /** @class */ (function () {\n function RendererFactory() {\n this.rendererMap = {};\n }\n RendererFactory.prototype.addRenderer = function (name, type) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n this.rendererMap[\"\" + rName] = type;\n }\n };\n RendererFactory.prototype.getRenderer = function (name) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The renderer \" + rName + \" is not found\";\n }\n else {\n return this.rendererMap[\"\" + rName];\n }\n };\n return RendererFactory;\n}());\nexport { RendererFactory };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the paging behavior of the Grid.\n */\nvar PageSettings = /** @class */ (function (_super) {\n __extends(PageSettings, _super);\n function PageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(12)\n ], PageSettings.prototype, \"pageSize\", void 0);\n __decorate([\n Property(8)\n ], PageSettings.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], PageSettings.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], PageSettings.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"pageSizes\", void 0);\n __decorate([\n Property(null)\n ], PageSettings.prototype, \"template\", void 0);\n return PageSettings;\n}(ChildProperty));\nexport { PageSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the column chooser behavior of the Grid.\n */\nvar ColumnChooserSettings = /** @class */ (function (_super) {\n __extends(ColumnChooserSettings, _super);\n function ColumnChooserSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('startsWith')\n ], ColumnChooserSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(false)\n ], ColumnChooserSettings.prototype, \"ignoreAccent\", void 0);\n return ColumnChooserSettings;\n}(ChildProperty));\nexport { ColumnChooserSettings };\n","import { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\n/**\n * The `Search` module is used to handle search action.\n */\nvar Search = /** @class */ (function () {\n /**\n * Constructor for Grid search module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Search(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * Searches Grid records by given key.\n *\n * > You can customize the default search action by using [`searchSettings`](./searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n * @returns {void}\n */\n Search.prototype.search = function (searchString) {\n var gObj = this.parent;\n searchString = isNullOrUndefined(searchString) ? '' : searchString;\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.search, arg1: searchString });\n return;\n }\n if (searchString !== gObj.searchSettings.key) {\n // Check searchString is decimal or integer and parseFloat to remove trailing zeros\n /* eslint-disable-next-line */\n gObj.searchSettings.key = /^\\d+(\\.\\d+)?$/.test(searchString) ? parseFloat(searchString).toString() : searchString.toString();\n gObj.dataBind();\n }\n else if (this.refreshSearch) {\n gObj.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.searchComplete, this.onSearchComplete, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.actionCompleteFunc = this.onActionComplete.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.cancelBegin, this.cancelBeginEvent, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.searchComplete, this.onSearchComplete);\n this.parent.off(events.destroy, this.destroy);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.cancelBegin, this.cancelBeginEvent);\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Search.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @param {NotifyArgs} e - specfies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (!isNullOrUndefined(e.properties.key)) {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin, searchString: this.parent.searchSettings.key\n });\n }\n else {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin\n });\n }\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onSearchComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, {\n searchString: this.parent.searchSettings.key, requestType: 'searching', type: events.actionComplete\n }));\n };\n /**\n * The function used to store the requestType\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onActionComplete = function (e) {\n this.refreshSearch = e.requestType !== 'searching';\n };\n Search.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'searching') {\n this.parent.setProperties({ searchSettings: { key: '' } }, true);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Search.prototype.getModuleName = function () {\n return 'search';\n };\n return Search;\n}());\nexport { Search };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject, isGroupAdaptive, isActionPrevent, addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\n/**\n * The `ShowHide` module is used to control column visibility.\n */\nvar ShowHide = /** @class */ (function () {\n /**\n * Constructor for the show hide module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function ShowHide(parent) {\n this.colName = [];\n this.isShowHide = false;\n this.parent = parent;\n this.addEventListener();\n }\n ShowHide.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.batchCancel, handler: this.batchChanges },\n { event: events.batchCnfrmDlgCancel, handler: this.resetColumnState }\n ];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ShowHide.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n ShowHide.prototype.batchChanges = function () {\n if (this.isShowHide) {\n this.isShowHide = false;\n this.setVisible(this.colName, this.changedCol);\n this.changedCol = this.colName = [];\n }\n };\n /**\n * Shows a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to show.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.show = function (columnName, showBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, showBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].visible = true;\n }\n this.setVisible(columns);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to hide.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.hide = function (columnName, hideBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, hideBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].visible = false;\n }\n this.setVisible(columns);\n };\n ShowHide.prototype.getToggleFields = function (key) {\n var finalized = [];\n if (typeof key === 'string') {\n finalized = [key];\n }\n else {\n finalized = key;\n }\n return finalized;\n };\n ShowHide.prototype.getColumns = function (keys, getKeyBy) {\n var _this = this;\n var columns = iterateArrayOrObject(keys, function (key) {\n return iterateArrayOrObject(_this.parent.columnModel, function (item) {\n if (item[\"\" + getKeyBy] === key) {\n return item;\n }\n return undefined;\n })[0];\n });\n return columns;\n };\n ShowHide.prototype.batchActionPrevent = function (columns, changedStateColumns) {\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n if (isActionPrevent(this.parent)) {\n this.colName = columns;\n this.changedCol = changedStateColumns;\n this.parent.closeEdit();\n return false;\n }\n return true;\n };\n ShowHide.prototype.resetColumnState = function () {\n if (this.isShowHide) {\n for (var i = 0; i < this.colName.length; i++) {\n this.colName[parseInt(i.toString(), 10)].visible = !this.colName[parseInt(i.toString(), 10)].visible;\n }\n }\n };\n /**\n * Shows or hides columns by given column collection.\n *\n * @private\n * @param {Column[]} columns - Specifies the columns.\n * @param {Column[]} changedStateColumns - specifies the changedStateColumns\n * @returns {void}\n */\n ShowHide.prototype.setVisible = function (columns, changedStateColumns) {\n var _this = this;\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n this.isShowHide = true;\n if (!this.batchActionPrevent(columns, changedStateColumns)) {\n return;\n }\n changedStateColumns = (changedStateColumns.length > 0) ? changedStateColumns : columns;\n var args = {\n requestType: 'columnstate',\n cancel: false,\n columns: changedStateColumns\n };\n var cancel = 'cancel';\n if (this.parent.enableInfiniteScrolling && this.parent.allowGrouping\n && this.parent.groupModule.groupSettings.columns.length > 0) {\n this.parent.contentModule.visibleRows = [];\n }\n this.parent.trigger(events.actionBegin, args, function (showHideArgs) {\n var currentViewCols = _this.parent.getColumns();\n columns = isNullOrUndefined(columns) ? currentViewCols : columns;\n if (showHideArgs[\"\" + cancel]) {\n _this.parent.notify(events.resetColumns, { showHideArgs: showHideArgs });\n if (columns.length > 0) {\n columns[0].visible = true;\n }\n return;\n }\n if (isGroupAdaptive(_this.parent)) {\n _this.parent.contentModule.emptyVcRows();\n }\n if (_this.parent.allowSelection && _this.parent.getSelectedRecords().length &&\n !_this.parent.selectionSettings.persistSelection) {\n _this.parent.clearSelection();\n }\n if (_this.parent.enableColumnVirtualization) {\n var colsInCurrentView = columns.filter(function (col1) { return (currentViewCols.some(function (col2) { return col1.field === col2.field; })); });\n if (colsInCurrentView.length) {\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n }\n else {\n if (_this.parent.isFrozenGrid() && columns.length) {\n _this.parent.notify(events.refreshFrozenPosition, { isModeChg: true });\n }\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n var params = {\n requestType: 'columnstate',\n columns: changedStateColumns\n };\n _this.parent.trigger(events.actionComplete, params);\n if (_this.parent.columnQueryMode !== 'All') {\n _this.parent.refresh();\n }\n });\n if (this.parent.autoFit && !this.parent.groupSettings.columns.length) {\n this.parent.preventAdjustColumns();\n }\n };\n return ShowHide;\n}());\nexport { ShowHide };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { compile } from '@syncfusion/ej2-base';\nimport { getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { Property, Collection, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the Grid's aggregate column.\n */\nvar AggregateColumn = /** @class */ (function (_super) {\n __extends(AggregateColumn, _super);\n function AggregateColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.templateFn = {};\n return _this;\n }\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the Function\n * @hidden\n */\n AggregateColumn.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Object} helper - specifies the helper\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setTemplate = function (helper) {\n if (helper === void 0) { helper = {}; }\n if (this.footerTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.Summary)] = { fn: compile(this.footerTemplate, helper),\n property: 'footerTemplate' };\n }\n if (this.groupFooterTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.GroupSummary)] = { fn: compile(this.groupFooterTemplate, helper),\n property: 'groupFooterTemplate' };\n }\n if (this.groupCaptionTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.CaptionSummary)] = { fn: compile(this.groupCaptionTemplate, helper),\n property: 'groupCaptionTemplate' };\n }\n };\n /**\n * @param {CellType} type - specifies the cell type\n * @returns {Object} returns the object\n * @hidden\n */\n AggregateColumn.prototype.getTemplate = function (type) {\n return this.templateFn[getEnumValue(CellType, type)];\n };\n /**\n * @param {Object} prop - returns the Object\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setPropertiesSilent = function (prop) {\n this.setProperties(prop, true);\n };\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"columnName\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"format\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupFooterTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupCaptionTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"customAggregate\", void 0);\n return AggregateColumn;\n}(ChildProperty));\nexport { AggregateColumn };\n/**\n * Configures the aggregate rows.\n */\nvar AggregateRow = /** @class */ (function (_super) {\n __extends(AggregateRow, _super);\n function AggregateRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], AggregateColumn)\n ], AggregateRow.prototype, \"columns\", void 0);\n return AggregateRow;\n}(ChildProperty));\nexport { AggregateRow };\n","import { Browser, remove, EventHandler, isUndefined, closest, classList } from '@syncfusion/ej2-base';\nimport { parentsUntil, isGroupAdaptive } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n */\nvar Clipboard = /** @class */ (function () {\n /**\n * Constructor for the Grid clipboard module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @hidden\n */\n function Clipboard(parent, serviceLocator) {\n this.copyContent = '';\n this.isSelect = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.keyPressed, this.keyDownHandler, this);\n this.parent.on(events.click, this.clickHandler, this);\n this.parent.on(events.onEmpty, this.initialEnd, this);\n EventHandler.add(this.parent.element, 'keydown', this.pasteHandler, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.keyPressed, this.keyDownHandler);\n this.parent.off(events.contentReady, this.initialEnd);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.onEmpty, this.initialEnd);\n EventHandler.remove(this.parent.element, 'keydown', this.pasteHandler);\n };\n Clipboard.prototype.clickHandler = function (e) {\n var target = e.target;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n target = parentsUntil(target, 'e-rowcell');\n };\n Clipboard.prototype.pasteHandler = function (e) {\n var _this = this;\n var grid = this.parent;\n var isMacLike = /(Mac)/i.test(navigator.platform);\n var selectedRowCellIndexes = this.parent.getSelectedRowCellIndexes();\n if (e.keyCode === 67 && isMacLike && e.metaKey && !grid.isEdit) {\n this.copy();\n }\n if (selectedRowCellIndexes.length && e.keyCode === 86 && ((!isMacLike && e.ctrlKey) || (isMacLike && e.metaKey)) && !grid.isEdit) {\n var target = closest(document.activeElement, '.' + literals.rowCell);\n if (!this.clipBoardTextArea || !target || !grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow') {\n return;\n }\n this.activeElement = document.activeElement;\n var x_1 = window.scrollX;\n var y_1 = window.scrollY;\n this.clipBoardTextArea.focus();\n setTimeout(function () {\n _this.activeElement.focus();\n window.scrollTo(x_1, y_1);\n _this.paste(_this.clipBoardTextArea.value, selectedRowCellIndexes[0].rowIndex, selectedRowCellIndexes[0].cellIndexes[0]);\n }, isMacLike ? 100 : 10);\n }\n };\n /**\n * Paste data from clipboard to selected cells.\n *\n * @param {boolean} data - Specifies the date for paste.\n * @param {boolean} rowIndex - Specifies the row index.\n * @param {boolean} colIndex - Specifies the column index.\n * @returns {void}\n */\n Clipboard.prototype.paste = function (data, rowIndex, colIndex) {\n var grid = this.parent;\n var cIdx = colIndex;\n var rIdx = rowIndex;\n var col;\n var value;\n var isAvail;\n var rows = data.split('\\n');\n var cols;\n for (var r = 0; r < rows.length; r++) {\n cols = rows[parseInt(r.toString(), 10)].split('\\t');\n cIdx = colIndex;\n if ((r === rows.length - 1 && rows[parseInt(r.toString(), 10)] === '') || isUndefined(grid.getRowByIndex(rIdx))) {\n cIdx++;\n break;\n }\n for (var c = 0; c < cols.length; c++) {\n isAvail = grid.getCellFromIndex(rIdx, cIdx);\n if (!isAvail) {\n cIdx++;\n break;\n }\n col = grid.getColumnByIndex(cIdx);\n value = col.getParser() ? col.getParser()(cols[parseInt(c.toString(), 10)]) : cols[parseInt(c.toString(), 10)];\n if (col.allowEditing && !col.isPrimaryKey && !col.template) {\n var args = {\n column: col,\n data: value,\n rowIndex: rIdx\n };\n this.parent.trigger(events.beforePaste, args);\n rIdx = args.rowIndex;\n if (!args.cancel) {\n if (grid.editModule) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.data));\n }\n else {\n grid.editModule.updateCell(rIdx, col.field, args.data);\n }\n }\n }\n }\n cIdx++;\n }\n rIdx++;\n }\n grid.selectionModule.selectCellsByRange({ rowIndex: rowIndex, cellIndex: colIndex }, { rowIndex: rIdx - 1, cellIndex: cIdx - 1 });\n var cell = this.parent.getCellFromIndex(rIdx - 1, cIdx - 1);\n if (cell) {\n classList(cell, ['e-focus', 'e-focused'], []);\n }\n this.clipBoardTextArea.value = '';\n };\n Clipboard.prototype.initialEnd = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.parent.off(events.contentReady, this.initialEnd);\n this.clipBoardTextArea = this.parent.createElement('textarea', {\n className: 'e-clipboard',\n styles: 'opacity: 0',\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('ClipBoard') }\n });\n this.parent.element.appendChild(this.clipBoardTextArea);\n };\n Clipboard.prototype.keyDownHandler = function (e) {\n if (e.action === 'ctrlPlusC') {\n this.copy();\n }\n else if (e.action === 'ctrlShiftPlusH') {\n this.copy(true);\n }\n };\n Clipboard.prototype.setCopyData = function (withHeader) {\n if (window.getSelection().toString() === '') {\n this.clipBoardTextArea.value = this.copyContent = '';\n var rows = this.parent.getDataRows();\n if (this.parent.selectionSettings.mode !== 'Cell') {\n var selectedIndexes = this.parent.getSelectedRowIndexes().sort(function (a, b) { return a - b; });\n if (withHeader) {\n var headerTextArray = [];\n for (var i = 0; i < this.parent.getVisibleColumns().length; i++) {\n headerTextArray[parseInt(i.toString(), 10)] = this.parent\n .getVisibleColumns()[parseInt(i.toString(), 10)].headerText;\n }\n this.getCopyData(headerTextArray, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < selectedIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var leftCols = [];\n var idx = selectedIndexes[parseInt(i.toString(), 10)];\n if (!isGroupAdaptive(this.parent) && (this.parent.enableVirtualization ||\n (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) ||\n (this.parent.groupSettings.columns.length && this.parent.groupSettings.enableLazyLoading))) {\n idx = rows.map(function (m) { return m.getAttribute('data-rowindex'); }).indexOf(selectedIndexes[parseInt(i.toString(), 10)].toString());\n }\n leftCols.push.apply(leftCols, [].slice.call(rows[parseInt(idx.toString(), 10)].querySelectorAll('.e-rowcell:not(.e-hide)')));\n this.getCopyData(leftCols, false, '\\t', withHeader);\n }\n }\n else {\n var obj = this.checkBoxSelection();\n if (obj.status) {\n if (withHeader) {\n var headers = [];\n for (var i = 0; i < obj.colIndexes.length; i++) {\n var colHeader = this.parent.getColumnHeaderByIndex(obj.colIndexes[parseInt(i.toString(), 10)]);\n if (!colHeader.classList.contains('e-hide')) {\n headers.push(colHeader);\n }\n }\n this.getCopyData(headers, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < obj.rowIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var cells = [].slice.call(rows[obj.rowIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-cellselectionbackground:not(.e-hide)'));\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n this.getCopyData([].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground')), true, '\\n', withHeader);\n }\n }\n var args = {\n data: this.copyContent,\n cancel: false\n };\n this.parent.trigger(events.beforeCopy, args);\n if (args.cancel) {\n return;\n }\n this.clipBoardTextArea.value = this.copyContent = args.data;\n if (!Browser.userAgent.match(/ipad|ipod|iphone/i)) {\n this.clipBoardTextArea.select();\n }\n else {\n this.clipBoardTextArea.setSelectionRange(0, this.clipBoardTextArea.value.length);\n }\n this.isSelect = true;\n }\n };\n Clipboard.prototype.getCopyData = function (cells, isCell, splitKey, withHeader) {\n var isElement = typeof cells[0] !== 'string';\n for (var j = 0; j < cells.length; j++) {\n if (withHeader && isCell) {\n var colIdx = parseInt(cells[parseInt(j.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n this.copyContent += this.parent.getColumns()[parseInt(colIdx.toString(), 10)].headerText + '\\n';\n }\n if (isElement) {\n if (!cells[parseInt(j.toString(), 10)].classList.contains('e-hide')) {\n this.copyContent += cells[parseInt(j.toString(), 10)].innerText;\n }\n }\n else {\n this.copyContent += cells[parseInt(j.toString(), 10)];\n }\n if (j < cells.length - 1) {\n this.copyContent += splitKey;\n }\n }\n };\n /**\n * Copy selected rows or cells data into clipboard.\n *\n * @returns {void}\n * @param {boolean} withHeader - Specifies whether the column header data need to be copied or not.\n */\n Clipboard.prototype.copy = function (withHeader) {\n if (document.queryCommandSupported('copy') && this.clipBoardTextArea) {\n this.setCopyData(withHeader);\n document.execCommand('copy');\n this.clipBoardTextArea.blur();\n }\n if (this.isSelect) {\n window.getSelection().removeAllRanges();\n this.isSelect = false;\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Clipboard.prototype.getModuleName = function () {\n return 'clipboard';\n };\n /**\n * To destroy the clipboard\n *\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.destroy = function () {\n this.removeEventListener();\n if (this.clipBoardTextArea) {\n remove(this.clipBoardTextArea);\n }\n };\n Clipboard.prototype.checkBoxSelection = function () {\n var gridObj = this.parent;\n var obj = { status: false };\n if (gridObj.selectionSettings.mode === 'Cell') {\n var rowCellIndxes = gridObj.getSelectedRowCellIndexes();\n var str = void 0;\n var rowIndexes = [];\n var i = void 0;\n for (i = 0; i < rowCellIndxes.length; i++) {\n if (rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.length) {\n rowIndexes.push(rowCellIndxes[parseInt(i.toString(), 10)].rowIndex);\n }\n if (rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.length) {\n if (!str) {\n str = JSON.stringify(rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.sort());\n }\n if (str !== JSON.stringify(rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.sort())) {\n break;\n }\n }\n }\n rowIndexes.sort(function (a, b) { return a - b; });\n if (i === rowCellIndxes.length) {\n obj = { status: true, rowIndexes: rowIndexes, colIndexes: rowCellIndxes[0].cellIndexes };\n }\n }\n return obj;\n };\n return Clipboard;\n}());\nexport { Clipboard };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isNullOrUndefined, setValue, getValue, defaultCurrencyCode } from '@syncfusion/ej2-base';\nimport { Component, ChildProperty, Browser, closest, extend } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, append, remove, classList, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { Property, Collection, Complex, Event, NotifyPropertyChanges, L10n } from '@syncfusion/ej2-base';\nimport { EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { createSpinner, hideSpinner, showSpinner, Tooltip } from '@syncfusion/ej2-popups';\nimport { iterateArrayOrObject, prepareColumns, parentsUntil, wrap, templateCompiler, isGroupAdaptive, refreshForeignData, getScrollBarWidth } from './util';\nimport { getRowHeight, setColumnIndex, Global, ispercentageWidth, getNumberFormat, getTransformValues } from './util';\nimport { setRowElements, resetRowIndex, compareChanges, getCellByColAndRowIndex, performComplexDataOperation } from './util';\nimport * as events from '../base/constant';\nimport { Render } from '../renderer/render';\nimport { Column } from '../models/column';\nimport { RenderType } from './enum';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { CellRendererFactory } from '../services/cell-render-factory';\nimport { ServiceLocator } from '../services/service-locator';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RendererFactory } from '../services/renderer-factory';\nimport { ColumnWidthService } from '../services/width-controller';\nimport { AriaService } from '../services/aria-service';\nimport { FocusStrategy } from '../services/focus-strategy';\nimport { PageSettings } from '../models/page-settings';\nimport { ColumnChooserSettings } from '../models/column-chooser-settings';\nimport { Selection } from '../actions/selection';\nimport { Search } from '../actions/search';\nimport { ShowHide } from '../actions/show-hide';\nimport { Scroll } from '../actions/scroll';\nimport { Print } from '../actions/print';\nimport { AggregateRow } from '../models/aggregate';\nimport { Clipboard } from '../actions/clipboard';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @class */ (function (_super) {\n __extends(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n __decorate([\n Property(false)\n ], SortDescriptor.prototype, \"isFromGroup\", void 0);\n return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of Grid.\n */\nvar SortSettings = /** @class */ (function (_super) {\n __extends(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\n/**\n * Represents the predicate for the filter column.\n */\nvar Predicate = /** @class */ (function (_super) {\n __extends(Predicate, _super);\n function Predicate() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Predicate.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"matchCase\", void 0);\n __decorate([\n Property(false)\n ], Predicate.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"predicate\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualFilterValue\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualOperator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ejpredicate\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"uid\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"isForeignKey\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"condition\", void 0);\n return Predicate;\n}(ChildProperty));\nexport { Predicate };\n/**\n * Configures the infinite scroll behavior of Grid.\n */\nvar InfiniteScrollSettings = /** @class */ (function (_super) {\n __extends(InfiniteScrollSettings, _super);\n function InfiniteScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], InfiniteScrollSettings.prototype, \"enableCache\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"maxBlocks\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"initialBlocks\", void 0);\n return InfiniteScrollSettings;\n}(ChildProperty));\nexport { InfiniteScrollSettings };\n/**\n * Configures the filtering behavior of the Grid.\n */\nvar FilterSettings = /** @class */ (function (_super) {\n __extends(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Predicate)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('FilterBar')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate([\n Property('OnEnter')\n ], FilterSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], FilterSettings.prototype, \"showFilterBarStatus\", void 0);\n __decorate([\n Property(1500)\n ], FilterSettings.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Property(50)\n ], FilterSettings.prototype, \"itemsCount\", void 0);\n __decorate([\n Property('Shimmer')\n ], FilterSettings.prototype, \"loadingIndicator\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"enableCaseSensitivity\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"showFilterBarOperator\", void 0);\n return FilterSettings;\n}(ChildProperty));\nexport { FilterSettings };\n/**\n * Configures the selection behavior of the Grid.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate([\n Property('Default')\n ], SelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enableSimpleMultiRowSelection\", void 0);\n __decorate([\n Property(true)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"allowColumnSelection\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Configures the search behavior of the Grid.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('')\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], SearchSettings.prototype, \"ignoreAccent\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n/**\n * Configures the row drop settings of the Grid.\n */\nvar RowDropSettings = /** @class */ (function (_super) {\n __extends(RowDropSettings, _super);\n function RowDropSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RowDropSettings.prototype, \"targetID\", void 0);\n return RowDropSettings;\n}(ChildProperty));\nexport { RowDropSettings };\n/**\n * Configures the text wrap settings of the Grid.\n */\nvar TextWrapSettings = /** @class */ (function (_super) {\n __extends(TextWrapSettings, _super);\n function TextWrapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Both')\n ], TextWrapSettings.prototype, \"wrapMode\", void 0);\n return TextWrapSettings;\n}(ChildProperty));\nexport { TextWrapSettings };\n/**\n * Configures the resize behavior of the Grid.\n */\nvar ResizeSettings = /** @class */ (function (_super) {\n __extends(ResizeSettings, _super);\n function ResizeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], ResizeSettings.prototype, \"mode\", void 0);\n return ResizeSettings;\n}(ChildProperty));\nexport { ResizeSettings };\n/**\n * Configures the group behavior of the Grid.\n */\nvar GroupSettings = /** @class */ (function (_super) {\n __extends(GroupSettings, _super);\n function GroupSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showDropArea\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showToggleButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showGroupedColumn\", void 0);\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showUngroupButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"disablePageWiseAggregates\", void 0);\n __decorate([\n Property([])\n ], GroupSettings.prototype, \"columns\", void 0);\n __decorate([\n Property()\n ], GroupSettings.prototype, \"captionTemplate\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"enableLazyLoading\", void 0);\n return GroupSettings;\n}(ChildProperty));\nexport { GroupSettings };\n/**\n * Configures the edit behavior of the Grid.\n */\nvar EditSettings = /** @class */ (function (_super) {\n __extends(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property('Normal')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"allowEditOnDblClick\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"showConfirmDialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate([\n Property()\n ], EditSettings.prototype, \"template\", void 0);\n __decorate([\n Property()\n ], EditSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property()\n ], EditSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate([\n Property({})\n ], EditSettings.prototype, \"dialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\n/**\n * Configures the Loading Indicator of the Grid.\n */\nvar LoadingIndicator = /** @class */ (function (_super) {\n __extends(LoadingIndicator, _super);\n function LoadingIndicator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Spinner')\n ], LoadingIndicator.prototype, \"indicatorType\", void 0);\n return LoadingIndicator;\n}(ChildProperty));\nexport { LoadingIndicator };\n/**\n * Represents the Grid component.\n * ```html\n *
\n * \n * ```\n */\nvar Grid = /** @class */ (function (_super) {\n __extends(Grid, _super);\n /**\n * Constructor for creating the component\n *\n * @param {GridModel} options - specifies the options\n * @param {string | HTMLElement} element - specifies the element\n * @hidden\n */\n function Grid(options, element) {\n var _this_1 = _super.call(this, options, element) || this;\n _this_1.isPreventScrollEvent = false;\n _this_1.inViewIndexes = [];\n _this_1.keyA = false;\n _this_1.frozenRightCount = 0;\n _this_1.freezeColumnRefresh = true;\n _this_1.rightcount = 0;\n _this_1.frozenLeftCount = 0;\n _this_1.leftcount = 0;\n _this_1.tablesCount = 1;\n _this_1.movableCount = 0;\n _this_1.movablecount = 0;\n _this_1.fixedcount = 0;\n _this_1.fixedCount = 0;\n _this_1.visibleFrozenLeft = 0;\n _this_1.visibleFrozenFixed = 0;\n _this_1.isPreparedFrozenColumns = false;\n _this_1.visibleFrozenRight = 0;\n _this_1.visibleMovable = 0;\n _this_1.frozenLeftColumns = [];\n _this_1.frozenRightColumns = [];\n _this_1.movableColumns = [];\n _this_1.fixedColumns = [];\n _this_1.stackedLeft = [];\n _this_1.stackedRight = [];\n _this_1.stackedFixed = [];\n _this_1.stackedMovable = [];\n _this_1.stackedarrayLeft = [];\n _this_1.stackedarrayRight = [];\n _this_1.stackedarrayFixed = [];\n _this_1.stackedarrayMovable = [];\n _this_1.media = {};\n /** @hidden */\n _this_1.tableIndex = 0;\n _this_1.componentRefresh = Component.prototype.refresh;\n _this_1.isChangeDataSourceCall = false;\n _this_1.mergedColumns = false;\n /** @hidden */\n _this_1.isVirtualAdaptive = false;\n /** @hidden */\n /**\n * * If `requireTemplateRef` is set to false in the load event, then the template element can't be accessed in grid queryCellInfo, and rowDataBound events.\n * * By default, React's grid queryCellInfo and rowDataBound events allow access to the template element.\n * * Avoid accessing the template elements in the grid queryCellInfo and rowDataBound events to improve rendering performance by setting this value as false.\n *\n * @default true\n */\n _this_1.requireTemplateRef = true;\n /** @hidden */\n _this_1.vRows = [];\n /** @hidden */\n _this_1.vcRows = [];\n /** @hidden */\n _this_1.vGroupOffsets = {};\n /** @hidden */\n _this_1.rowUid = 0;\n /** @hidden */\n _this_1.translateX = 0;\n /** @hidden */\n _this_1.isManualRefresh = false;\n /** @hidden */\n _this_1.isAutoFitColumns = false;\n /** @hidden */\n _this_1.enableDeepCompare = false;\n /** @hidden */\n _this_1.totalDataRecordsCount = 0;\n /** @hidden */\n _this_1.disableSelectedRecords = [];\n /** @hidden */\n _this_1.partialSelectedRecords = [];\n /** @hidden */\n _this_1.islazyloadRequest = false;\n /** @hidden */\n _this_1.lockcolPositionCount = 0;\n /** @hidden */\n _this_1.prevPageMoving = false;\n /** @hidden */\n _this_1.pageTemplateChange = false;\n /** @hidden */\n _this_1.isAutoGen = false;\n /** @hidden */\n _this_1.isAutoGenerateColumns = false;\n _this_1.mediaBindInstance = {};\n /** @hidden */\n _this_1.commandDelIndex = undefined;\n /** @hidden */\n _this_1.asyncTimeOut = 50;\n /** @hidden */\n _this_1.isExportGrid = false;\n // enable/disable logger for MVC & Core\n _this_1.enableLogger = true;\n _this_1.needsID = true;\n Grid_1.Inject(Selection);\n setValue('mergePersistData', _this_1.mergePersistGridData, _this_1);\n return _this_1;\n }\n Grid_1 = Grid;\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} returns the persist data\n */\n Grid.prototype.getPersistData = function () {\n var keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'groupSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'scrollPosition'];\n var ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent'],\n groupSettings: ['showDropArea', 'showToggleButton', 'showGroupedColumn', 'showUngroupButton',\n 'disablePageWiseAggregates', 'hideCaptionCount'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: [], scrollPosition: []\n };\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[parseInt(i.toString(), 10)]];\n for (var _i = 0, _a = ignoreOnPersist[keyEntity[parseInt(i.toString(), 10)]]; _i < _a.length; _i++) {\n var val = _a[_i];\n delete currentObject[\"\" + val];\n }\n }\n var temp = this.pageSettings.template;\n var settings = Object.assign({ template: undefined }, this.pageSettings);\n this.setProperties({ pageSettings: settings }, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n delete this.groupSettings['properties']['captionTemplate'];\n }\n this.pageTemplateChange = !isNullOrUndefined(this.pagerTemplate);\n var persistData = this.addOnPersist(keyEntity);\n settings.template = temp;\n this.setProperties({ pageSettings: settings }, true);\n return persistData;\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} Returns the module Declaration\n * @hidden\n */\n Grid.prototype.requiredModules = function () {\n this.setFrozenCount();\n this.enableInfiniteAggrgate();\n var modules = [];\n if (this.isDestroyed) {\n return modules;\n }\n if (this.allowFiltering) {\n modules.push({\n member: 'filter',\n args: [this, this.filterSettings, this.serviceLocator]\n });\n }\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport',\n args: [this, this.serviceLocator]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this]\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this, this.sortSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings]\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this, this.selectionSettings, this.serviceLocator]\n });\n }\n modules.push({\n member: 'resize',\n args: [this]\n });\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this]\n });\n }\n if (this.allowRowDragAndDrop) {\n modules.push({\n member: 'rowDragAndDrop',\n args: [this]\n });\n }\n if (this.allowGrouping) {\n modules.push({\n member: 'group',\n args: [this, this.groupSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.aggregates.length) {\n modules.push({ member: 'aggregate', args: [this, this.serviceLocator] });\n }\n if (this.isDetail()) {\n modules.push({\n member: 'detailRow',\n args: [this, this.serviceLocator]\n });\n }\n if (this.toolbar || this.toolbarTemplate) {\n modules.push({\n member: 'toolbar',\n args: [this, this.serviceLocator]\n });\n }\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n modules.push({\n member: 'virtualscroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.getFrozenColumns() || this.frozenRows || this.frozenRightCount || this.frozenLeftCount) {\n modules.push({ member: 'freeze', args: [this, this.serviceLocator] });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this, this.serviceLocator]\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this, this.serviceLocator]\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n };\n Grid.prototype.extendRequiredModules = function (modules) {\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.groupSettings.enableLazyLoading) {\n modules.push({\n member: 'lazyLoadGroup',\n args: [this, this.serviceLocator]\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'columnChooser',\n args: [this, this.serviceLocator]\n });\n }\n if (this.isForeignKeyEnabled(this.columns)) {\n modules.push({ member: 'foreignKey', args: [this, this.serviceLocator] });\n }\n if (this.enableLogger) {\n modules.push({ member: 'logger', args: [this] });\n }\n };\n /**\n * For internal use only - Initialize the event handler;\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.preRender = function () {\n this.serviceLocator = new ServiceLocator;\n this.initProperties();\n this.initializeServices();\n };\n Grid.prototype.initProperties = function () {\n this.isInitial = true;\n this.sortedColumns = [];\n this.inViewIndexes = [];\n this.mediaCol = [];\n this.isInitialLoad = false;\n this.allowServerDataBinding = false;\n this.ignoreCollectionWatch = true;\n this.mergeCells = {};\n this.isEdit = false;\n this.checkAllRows = 'None';\n this.isCheckBoxSelection = false;\n this.isPersistSelection = false;\n this.componentRefresh = Component.prototype.refresh;\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith', wildCard: 'wildcard',\n isNull: 'isnull', notNull: 'notnull', like: 'like'\n };\n this.defaultLocale = {\n EmptyRecord: 'No records to display',\n True: 'true',\n False: 'false',\n InvalidFilterMessage: 'Invalid Filter Data',\n GroupDropArea: 'Drag a column header here to group its column',\n UnGroup: 'Click here to ungroup',\n UnGroupButton: 'Click here to ungroup',\n GroupDisable: 'Grouping is disabled for this column',\n FilterbarTitle: '\\'s filter bar cell',\n EmptyDataSourceError: 'DataSource must not be empty at initial load since columns are generated from dataSource in AutoGenerate Column Grid',\n // Toolbar Items\n Add: 'Add',\n Edit: 'Edit',\n Cancel: 'Cancel',\n Update: 'Update',\n Delete: 'Delete',\n Print: 'Print',\n Pdfexport: 'PDF Export',\n Excelexport: 'Excel Export',\n Wordexport: 'Word Export',\n Csvexport: 'CSV Export',\n Search: 'Search',\n Columnchooser: 'Columns',\n Save: 'Save',\n Item: 'item',\n Items: 'items',\n EditOperationAlert: 'No records selected for edit operation',\n DeleteOperationAlert: 'No records selected for delete operation',\n SaveButton: 'Save',\n OKButton: 'OK',\n CancelButton: 'Cancel',\n EditFormTitle: 'Details of ',\n AddFormTitle: 'Add New Record',\n BatchSaveConfirm: 'Are you sure you want to save changes?',\n BatchSaveLostChanges: 'Unsaved changes will be lost. Are you sure you want to continue?',\n ConfirmDelete: 'Are you sure you want to Delete Record?',\n CancelEdit: 'Are you sure you want to Cancel the changes?',\n ChooseColumns: 'Choose Column',\n ColumnMenu: 'Column Menu',\n SearchColumns: 'search columns',\n Matchs: 'No matches found',\n FilterButton: 'Filter',\n ClearButton: 'Clear',\n StartsWith: 'Starts With',\n NotStartsWith: 'Does Not Start With',\n Like: 'Like',\n EndsWith: 'Ends With',\n NotEndsWith: 'Does Not End With',\n Contains: 'Contains',\n NotContains: 'Does Not Contain',\n IsNull: 'Null',\n NotNull: 'Not Null',\n IsEmpty: 'Empty',\n IsNotEmpty: 'Not Empty',\n Equal: 'Equal',\n NotEqual: 'Not Equal',\n LessThan: 'Less Than',\n LessThanOrEqual: 'Less Than Or Equal',\n GreaterThan: 'Greater Than',\n GreaterThanOrEqual: 'Greater Than Or Equal',\n ChooseDate: 'Choose a Date',\n EnterValue: 'Enter the value',\n Copy: 'Copy',\n Group: 'Group by this column',\n Ungroup: 'Ungroup by this column',\n GroupButton: 'Group button',\n UnGroupAria: 'ungroup button',\n GroupSeperator: 'Separator for the grouped columns',\n UnGroupIcon: 'ungroup the grouped column ',\n GroupedSortIcon: 'sort the grouped column ',\n GroupedDrag: 'Drag the grouped column',\n GroupCaption: ' is groupcaption cell',\n CheckBoxLabel: 'checkbox',\n SelectAllCheckbox: 'Select all checkbox',\n SelectRow: 'Select row',\n autoFitAll: 'Autofit all columns',\n autoFit: 'Autofit this column',\n AutoFitAll: 'Autofit all columns',\n AutoFit: 'Autofit this column',\n Export: 'Export',\n FirstPage: 'First Page',\n LastPage: 'Last Page',\n PreviousPage: 'Previous Page',\n NextPage: 'Next Page',\n SortAscending: 'Sort Ascending',\n SortDescending: 'Sort Descending',\n EditRecord: 'Edit Record',\n DeleteRecord: 'Delete Record',\n FilterMenu: 'Filter',\n SelectAll: 'Select All',\n AddCurrentSelection: 'Add current selection to filter',\n Blanks: 'Blanks',\n FilterTrue: 'True',\n FilterFalse: 'False',\n NoResult: 'No matches found',\n ClearFilter: 'Clear Filter',\n Clear: 'Clear',\n NumberFilter: 'Number Filters',\n TextFilter: 'Text Filters',\n DateFilter: 'Date Filters',\n DateTimeFilter: 'DateTime Filters',\n MatchCase: 'Match Case',\n Between: 'Between',\n CustomFilter: 'Custom Filter',\n CustomFilterPlaceHolder: 'Enter the value',\n CustomFilterDatePlaceHolder: 'Choose a date',\n AND: 'AND',\n OR: 'OR',\n ShowRowsWhere: 'Show rows where:',\n ToolbarMenuDialogARIA: 'Toolbar menu dialog',\n FilterMenuDialogARIA: 'Filter menu',\n ExcelFilterDialogARIA: 'Excel filter',\n CheckBoxFilterDialogARIA: 'Checkbox filter',\n DialogEditARIA: 'Edit dialog',\n ColumnMenuDialogARIA: 'Column menu dialog',\n CustomFilterDialogARIA: 'Customer filter dialog',\n SortAtoZ: 'Sort A to Z',\n SortZtoA: 'Sort Z to A',\n SortByOldest: 'Sort by Oldest',\n SortByNewest: 'Sort by Newest',\n SortSmallestToLargest: 'Sort Smallest to Largest',\n SortLargestToSmallest: 'Sort Largest to Smallest',\n Sort: 'Sort',\n FilterDescription: 'Press Alt Down to open filter Menu',\n SortDescription: 'Press Enter to sort',\n ColumnMenuDescription: 'Press Alt Down to open Column Menu',\n GroupDescription: 'Press Ctrl space to group',\n ColumnHeader: ' column header ',\n TemplateCell: ' is template cell',\n CommandColumnAria: 'is Command column column header ',\n DialogEdit: 'Dialog edit',\n ClipBoard: 'clipboard',\n AscendingText: 'Ascending',\n DescendingText: 'Descending',\n NoneText: 'None',\n Expanded: 'Expanded',\n Collapsed: 'Collapsed'\n };\n this.keyConfigs = {\n downArrow: 'downarrow',\n upArrow: 'uparrow',\n rightArrow: 'rightarrow',\n leftArrow: 'leftarrow',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftRight: 'shift+rightarrow',\n shiftLeft: 'shift+leftarrow',\n home: 'home',\n end: 'end',\n escape: 'escape',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n ctrlAltPageUp: 'ctrl+alt+pageup',\n ctrlAltPageDown: 'ctrl+alt+pagedown',\n altPageUp: 'alt+pageup',\n altPageDown: 'alt+pagedown',\n altDownArrow: 'alt+downarrow',\n altUpArrow: 'alt+uparrow',\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlPlusA: 'ctrl+A',\n ctrlPlusP: 'ctrl+P',\n insert: 'insert',\n delete: 'delete',\n f2: 'f2',\n enter: 'enter',\n ctrlEnter: 'ctrl+enter',\n shiftEnter: 'shift+enter',\n tab: 'tab',\n shiftTab: 'shift+tab',\n space: 'space',\n ctrlPlusC: 'ctrl+C',\n ctrlShiftPlusH: 'ctrl+shift+H',\n ctrlSpace: 'ctrl+space',\n ctrlLeftArrow: 'ctrl+leftarrow',\n ctrlRightArrow: 'ctrl+rightarrow'\n };\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.render = function () {\n this.log(['module_missing', 'promise_enabled', 'locale_missing', 'check_datasource_columns']);\n this.ariaService.setOptions(this.element, { role: 'grid' });\n createSpinner({ target: this.element, cssClass: this.cssClass ? this.cssClass : null }, this.createElement);\n this.renderModule = new Render(this, this.serviceLocator);\n this.searchModule = new Search(this);\n this.scrollModule = new Scroll(this);\n this.notify(events.initialLoad, {});\n if ((this.getDataModule().dataManager.dataSource.offline === true || this.getDataModule().dataManager.dataSource.url === undefined) &&\n !(!isNullOrUndefined(this.dataSource) && this.dataSource.result)) {\n this.isVirtualAdaptive = true;\n }\n if (this.isReact) {\n var args = { requireTemplateRef: this.requireTemplateRef };\n this.trigger(events.load, args);\n if (!args.requireTemplateRef) {\n this.requireTemplateRef = args.requireTemplateRef;\n }\n }\n else {\n this.trigger(events.load);\n }\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n if (this.enableColumnVirtualization && this.isChangeDataSourceCall && this.columnModel) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.isPreparedFrozenColumns = true;\n if (this.enablePersistence) {\n this.notify(events.columnsPrepared, {});\n }\n this.getMediaColumns();\n setColumnIndex(this.columns);\n if (this.isFrozenGrid() && !this.mergedColumns) {\n this.setInitialFrozenColumnIndex(this.columns);\n }\n this.checkLockColumns(this.columns);\n this.getColumns();\n this.processModel();\n this.gridRender();\n this.wireEvents();\n this.addListener();\n this.updateDefaultCursor();\n this.updateStackedFilter();\n if (this.loadingIndicator.indicatorType === 'Spinner') {\n this.showSpinner();\n }\n this.notify(events.initialEnd, {});\n if (this.loadingIndicator.indicatorType === 'Shimmer') {\n this.refreshMaskRow();\n }\n if (this.refreshing) {\n this.trigger('created');\n }\n };\n Grid.prototype.setInitialFrozenColumnIndex = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n var column = columns[parseInt(i.toString(), 10)];\n column[\"\" + literals.initialFrozenColumnIndex] = column.index;\n if (column.columns) {\n this.setInitialFrozenColumnIndex(column.columns);\n }\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.showSpinner = function () {\n if (!this.isExportGrid) {\n showSpinner(this.element);\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.hideSpinner = function () {\n if (!this.isExportGrid) {\n hideSpinner(this.element);\n }\n };\n Grid.prototype.showMaskRow = function (axisDirection, dialogElement) {\n if (isNullOrUndefined(this.headerModule) || isNullOrUndefined(this.contentModule)) {\n return;\n }\n var gridHeader = this.getHeaderContent().firstChild;\n var gridContent = this.getContent().firstChild;\n var gridFooter = this.getFooterContent();\n if (dialogElement) {\n var dialogHolder = dialogElement.querySelector('.e-checkboxlist');\n var maskRowCount = Math.floor(dialogHolder.getBoundingClientRect().height / this.getRowHeight());\n var maskTemplate = '
'\n + '
'\n + this.getShimmerTemplate() + this.getShimmerTemplate() + '
';\n dialogHolder.innerHTML = '';\n for (var i = 0; i < maskRowCount; i++) {\n dialogHolder.innerHTML += maskTemplate;\n var maskSpan = [].slice.call(dialogHolder\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n return;\n }\n if ((!this.enableRtl && !this.getHeaderContent().style.paddingRight)\n || (this.enableRtl && !this.getHeaderContent().style.paddingLeft)) {\n gridContent.style.overflowY = 'hidden';\n }\n if (!this.isInitialLoad && !this.getColumns().length) {\n var contentHeight = gridContent.getBoundingClientRect().height;\n var maskTableHeight = contentHeight === 0 ? this.allowPaging ? this.pageSettings.pageSize * this.getRowHeight()\n : window.innerHeight : contentHeight;\n var contentRowCount = Math.ceil(maskTableHeight / this.getRowHeight());\n if (this.rowRenderingMode !== 'Vertical') {\n this.headerMaskTable = this.createEmptyMaskTable(gridHeader, 1);\n }\n this.contentMaskTable = this.createEmptyMaskTable(gridContent, contentRowCount);\n return;\n }\n this.maskRowContentScroll = (this.enableVirtualization || this.enableColumnVirtualization) && axisDirection ? true : false;\n if (!this.contentMaskTable) {\n var content = gridContent;\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n if (!isNullOrUndefined(content.querySelector('tbody'))) {\n this.contentMaskTable = this.createMaskTable(content, this.getContentMaskColumns(), axisDirection);\n }\n }\n if (!this.headerMaskTable && (this.isFrozenGrid() || (this.enableColumnVirtualization && axisDirection === 'X'))) {\n var content = gridHeader;\n if (this.enableColumnVirtualization && axisDirection === 'X') {\n content = content.querySelector('.e-virtualtable');\n }\n this.headerMaskTable = this.createMaskTable(content, this.getContentMaskColumns(), axisDirection);\n }\n if (gridFooter && gridFooter.querySelector('.e-summaryrow')) {\n var gridFooterContent = gridFooter.firstChild;\n if (!this.footerContentMaskTable) {\n var footerContent = gridFooterContent;\n this.footerContentMaskTable = this.createMaskTable(footerContent);\n }\n }\n if (!(this.enableVirtualization && axisDirection)) {\n EventHandler.add(gridContent, 'scroll', this.translateMaskRow, this);\n }\n };\n Grid.prototype.getContentMaskColumns = function () {\n return this.getColumns();\n };\n Grid.prototype.createEmptyMaskTable = function (maskElement, rowCount) {\n var table = this.createElement('table', { className: 'e-table e-masked-table' });\n var tbody = this.createElement('tbody', { className: 'e-masked-tbody' });\n var row = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {\n style: 'height: ' + this.getRowHeight() + 'px;'\n } });\n var cell = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n cell.innerHTML = this.getShimmerTemplate();\n row.appendChild(cell);\n for (var i = 0; i < rowCount; i++) {\n tbody.appendChild(row.cloneNode(true));\n }\n table.appendChild(tbody);\n maskElement.appendChild(table);\n return table;\n };\n Grid.prototype.createMaskTable = function (element, columns, axisDirection) {\n var parentElement = element;\n var header = closest(parentElement, '.e-gridheader') ? true : false;\n var content = closest(parentElement, '.e-gridcontent') ? true : false;\n var footer = closest(parentElement, '.e-gridfooter') ? true : false;\n var gridContent = this.getContent().firstChild;\n var gridContentScrollHeight = gridContent.scrollHeight;\n var table = parentElement.querySelector('table');\n var maskTable = table.cloneNode();\n maskTable.removeAttribute('role');\n maskTable.removeAttribute('id');\n maskTable.style.position = 'absolute';\n maskTable.style.zIndex = '5';\n maskTable.style.width = table.getBoundingClientRect().width + 'px';\n if (header && !(this.enableColumnVirtualization && axisDirection === 'X')) {\n maskTable.style.transform = 'translate(0px,'\n + table.querySelector('thead').getBoundingClientRect().height + 'px)';\n }\n maskTable.setAttribute('class', 'e-table e-masked-table');\n var maskColgroup = table.querySelector('colgroup').cloneNode(true);\n maskColgroup.removeAttribute('id');\n maskColgroup.setAttribute('class', 'e-masked-colgroup');\n maskTable.appendChild(maskColgroup);\n if (header && this.enableColumnVirtualization && axisDirection === 'X') {\n var row = this.createMaskRow(maskColgroup, columns);\n if (this.isFrozenGrid()) {\n var frzTd = [].slice.call(row.querySelectorAll('.e-rowcell'));\n for (var i = 0; i < frzTd.length; i++) {\n if (i < this.frozenLeftCount) {\n if (this.frozenLeftCount - 1 === i) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-freezeleftborder');\n }\n frzTd[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.left = (columns[parseInt(i.toString(), 10)].valueX -\n this.translateX) + 'px';\n }\n else if ((frzTd.length - this.frozenRightCount) <= i && columns[parseInt(i.toString(), 10)]) {\n if ((frzTd.length - this.frozenRightCount) === i) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-freezerightborder');\n }\n frzTd[parseInt(i.toString(), 10)].classList.add('e-rightfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.right = (this.translateX +\n columns[parseInt(i.toString(), 10)].valueX) + 'px';\n }\n }\n }\n var thead = table.querySelector('thead');\n var rows = [].slice.call(thead.querySelectorAll('tr'));\n var maskTHead = thead.cloneNode();\n maskTHead.removeAttribute('role');\n maskTHead.setAttribute('class', 'e-masked-thead');\n var rowCount = rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTHead.appendChild(row.cloneNode(true));\n maskTHead.childNodes[parseInt(i.toString(), 10)].style\n .height = rows[parseInt(i.toString(), 10)].getBoundingClientRect().height + 'px';\n }\n maskTable.appendChild(maskTHead);\n }\n var maskTBody = table.querySelector('tbody').cloneNode();\n maskTBody.removeAttribute('role');\n maskTBody.setAttribute('class', 'e-masked-tbody');\n var tbody = table.querySelector('tbody');\n if (content || header) {\n var rowCountElement = gridContent;\n var rowCount = Math.ceil(rowCountElement.getBoundingClientRect().height / this.getRowHeight());\n if (tbody.querySelector('.e-emptyrow') || !tbody.childNodes.length || (content && this.childGrid)) {\n var row = this.createMaskRow(maskColgroup, columns);\n var altRow = row.cloneNode(true);\n altRow.classList.add('e-altrow');\n for (var i = 0; i < rowCount; i++) {\n var altNumber = 1;\n maskTBody.appendChild((i + altNumber) % 2 === 0 ? altRow.cloneNode(true) : row.cloneNode(true));\n }\n }\n else {\n var rowsQuery = 'tr:not([style*=\"display:none\"]):not([style*=\"display: none\"])';\n var rows = [].slice.call(tbody.querySelectorAll(rowsQuery));\n var addEditRow = tbody.querySelector('.e-addedrow, .e-editedrow');\n var addEditRowIndex = void 0;\n if (addEditRow) {\n addEditRowIndex = rows.indexOf(addEditRow);\n if (this.isFrozenGrid() && this.enableColumnVirtualization) {\n var frzTd = [].slice.call(rows[addEditRowIndex + 1].querySelectorAll('.e-rowcell'));\n for (var i = 0; i < frzTd.length; i++) {\n if (i < this.frozenLeftCount) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.left = (columns[parseInt(i.toString(), 10)].valueX - this.translateX) + 'px';\n }\n else if ((frzTd.length - this.frozenRightCount) <= i && columns[parseInt(i.toString(), 10)]) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-rightfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.right = (this.translateX +\n columns[parseInt(i.toString(), 10)].valueX) + 'px';\n }\n }\n }\n if (addEditRow.classList.contains('e-addedrow')) {\n rows.splice(addEditRowIndex, 2);\n }\n else {\n rows.splice(addEditRowIndex, 1);\n }\n }\n rowCount = (this.enableVirtualization || this.enableColumnVirtualization) && axisDirection ? rows.length\n : rowCount <= rows.length ? rowCount : rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTBody.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n if (addEditRow && addEditRow.classList.contains('e-editedrow') && addEditRowIndex < rowCount) {\n var addEditMaskRow = maskTBody.childNodes[parseInt(addEditRowIndex.toString(), 10)];\n addEditMaskRow.style.height = this.getRowHeight() + 'px';\n addEditMaskRow.classList.add('e-row');\n if (addEditRow.classList.contains('e-altrow')) {\n addEditMaskRow.classList.add('e-altrow');\n }\n }\n }\n }\n maskTable.appendChild(maskTBody);\n if (footer) {\n var tfoot = table.querySelector('tfoot');\n var maskTFoot = tfoot.cloneNode();\n maskTFoot.setAttribute('class', 'e-masked-tfoot');\n var rows = [].slice.call(tfoot.querySelectorAll('tr'));\n for (var i = 0; i < rows.length; i++) {\n maskTFoot.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n maskTable.appendChild(maskTFoot);\n }\n if (header && this.isFrozenGrid() && !this.enableColumnVirtualization) {\n this.getHeaderContent().querySelector('.' + literals.headerContent).style.position = 'relative';\n }\n parentElement.insertBefore(maskTable, parentElement.firstChild);\n if (content && !(this.enableVirtualization && axisDirection)) {\n var minScrollTop = gridContentScrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = gridContent.scrollTop <= minScrollTop ? gridContent.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(parentElement, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n return maskTable;\n };\n Grid.prototype.applyMaskRow = function (row, rowHeight) {\n var maskRow = row;\n maskRow.removeAttribute('role');\n maskRow.removeAttribute('aria-rowindex');\n maskRow.removeAttribute('data-rowindex');\n maskRow.removeAttribute('data-uid');\n maskRow.classList.add('e-masked-row');\n maskRow.style.height = rowHeight + 'px';\n var maskCells = [].slice.call(maskRow.childNodes);\n for (var i = 0; i < maskCells.length; i++) {\n var maskCell = maskCells[parseInt(i.toString(), 10)];\n var displayAsCheckBoxCell = maskCell.firstChild && maskCell.firstChild.classList\n && maskCell.firstChild.classList.contains('e-checkbox-wrapper');\n maskCell.removeAttribute('role');\n maskCell.removeAttribute('tabindex');\n maskCell.removeAttribute('aria-label');\n if (this.enableColumnVirtualization && maskCell.classList.contains('e-fixedfreeze')) {\n removeClass([maskCell], ['e-fixedfreeze', 'e-freezeleftborder', 'e-freezerightborder']);\n addClass([maskCell], ['e-unfreeze']);\n }\n if (!(this.enableColumnVirtualization && (maskCell.classList.contains('e-leftfreeze') ||\n maskCell.classList.contains('e-rightfreeze')))) {\n maskCell.removeAttribute('data-colindex');\n }\n maskCell.removeAttribute('aria-colindex');\n maskCell.removeAttribute('index');\n maskCell.removeAttribute('ej-mappingname');\n maskCell.removeAttribute('ej-mappingvalue');\n maskCell.removeAttribute('e-mappinguid');\n maskCell.removeAttribute('aria-expanded');\n maskCell.classList.add('e-masked-cell');\n maskCell.innerHTML = this.getShimmerTemplate();\n if (maskCell.classList.contains('e-recordplusexpand') || maskCell.classList.contains('e-recordpluscollapse')) {\n maskCell.firstChild.classList.add('e-mask-group-intent');\n }\n else if (maskCell.classList.contains('e-gridchkbox') || displayAsCheckBoxCell) {\n maskCell.firstChild.classList.add('e-mask-checkbox-intent');\n }\n else if (maskCell.classList.contains('e-rowdragdrop')) {\n maskCell.firstChild.classList.add('e-mask-drag-intent');\n }\n else if (maskCell.classList.contains('e-indentcell')) {\n maskCell.innerHTML = '';\n }\n }\n return maskRow;\n };\n Grid.prototype.createMaskRow = function (refColgroup, refColumns) {\n var colgroup = refColgroup;\n var columns = refColumns;\n var row = this.createElement('tr', { className: 'e-masked-row e-row' });\n if (this.rowRenderingMode !== 'Vertical') {\n row.style.height = this.getRowHeight() + 'px';\n }\n var td = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n for (var i = 0, colIndex = 0; i < colgroup.childNodes.length; i++) {\n var col = colgroup.childNodes[parseInt(i.toString(), 10)];\n var localTD = td.cloneNode();\n localTD.innerHTML = this.getShimmerTemplate();\n if (!(col.classList.contains('e-group-intent') || col.classList.contains('e-detail-intent')\n || col.classList.contains('e-drag-intent'))) {\n if (this.rowRenderingMode === 'Vertical' && columns[parseInt(colIndex.toString(), 10)]) {\n localTD.setAttribute('data-cell', columns[parseInt(colIndex.toString(), 10)].headerText ?\n columns[parseInt(colIndex.toString(), 10)].headerText : columns[parseInt(colIndex.toString(), 10)].field);\n }\n if (col.style.display === 'none') {\n localTD.classList.add('e-hide');\n }\n else {\n localTD.style.textAlign = columns[parseInt(colIndex.toString(), 10)]\n && columns[parseInt(colIndex.toString(), 10)].textAlign ?\n columns[parseInt(colIndex.toString(), 10)].textAlign.toLowerCase()\n : this.enableRtl ? 'right' : 'left';\n if (columns[parseInt(colIndex.toString(), 10)] && (columns[parseInt(colIndex.toString(), 10)].type === 'checkbox'\n || columns[parseInt(colIndex.toString(), 10)].displayAsCheckBox)) {\n localTD.firstChild.classList.add('e-mask-checkbox-intent');\n }\n }\n colIndex++;\n }\n else {\n if (col.classList.contains('e-group-intent')) {\n localTD.firstChild.classList.add('e-mask-group-intent');\n }\n else if (col.classList.contains('e-detail-intent')) {\n localTD.firstChild.classList.add('e-mask-detail-intent');\n }\n else if (col.classList.contains('e-drag-intent')) {\n localTD.firstChild.classList.add('e-mask-drag-intent');\n }\n }\n row.appendChild(localTD);\n }\n return row;\n };\n Grid.prototype.getShimmerTemplate = function () {\n if (this.maskRowContentScroll) {\n return '';\n }\n return '';\n };\n Grid.prototype.addShimmerEffect = function () {\n this.maskRowContentScroll = false;\n var maskSpan = [].slice.call(this.element.querySelectorAll('.e-mask:not(.e-shimmer-wave)'));\n for (var i = 0; i < maskSpan.length; i++) {\n if (maskSpan[parseInt(i.toString(), 10)]) {\n maskSpan[parseInt(i.toString(), 10)].classList.add('e-shimmer-wave');\n }\n }\n };\n Grid.prototype.translateMaskRow = function (e) {\n var target = e.target;\n var maskTables = target.querySelectorAll('.e-masked-table');\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n var minScrollTop = target.scrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = target.scrollTop <= minScrollTop ? target.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(maskTable, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n }\n };\n Grid.prototype.removeMaskRow = function () {\n if (!isNullOrUndefined(this.contentModule)) {\n var gridContent = this.getContent().firstChild;\n EventHandler.remove(gridContent, 'scroll', this.translateMaskRow);\n }\n if (this.headerMaskTable && this.isFrozenGrid() && !this.enableColumnVirtualization) {\n this.getHeaderContent().querySelector('.' + literals.headerContent).style.position = '';\n }\n var maskTables = [this.headerMaskTable,\n this.contentMaskTable, this.footerContentMaskTable];\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n remove(maskTable);\n }\n }\n this.headerMaskTable = null;\n this.contentMaskTable = null;\n this.footerContentMaskTable = null;\n };\n Grid.prototype.refreshMaskRow = function () {\n var gridContent = this.getContent().firstChild;\n if (!this.isInitialLoad && !this.getColumns().length) {\n return;\n }\n if (this.contentMaskTable && gridContent.querySelector('.e-masked-table')) {\n var content = gridContent;\n if (this.enableVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content);\n }\n };\n Grid.prototype.refreshMaskRowColgroupWidth = function (content) {\n var table = content.querySelector('table:not(.e-masked-table)');\n var colgroup = table.querySelector(literals.colGroup).cloneNode(true);\n var maskTable = content.querySelector('.e-masked-table');\n colgroup.removeAttribute('id');\n colgroup.setAttribute('class', 'e-masked-colgroup');\n for (var i = 0; i < colgroup.childNodes.length; i++) {\n colgroup.childNodes[parseInt(i.toString(), 10)].removeAttribute('class');\n }\n remove(maskTable.querySelector('.e-masked-colgroup'));\n maskTable.insertBefore(colgroup, maskTable.firstChild);\n maskTable.style.width = table.getBoundingClientRect().width + 'px';\n };\n Grid.prototype.updateStackedFilter = function () {\n if (this.allowFiltering && this.filterSettings.type === 'FilterBar' &&\n this.getHeaderContent().getElementsByClassName('e-stackedheadercell').length) {\n this.getHeaderContent().classList.add('e-stackedfilter');\n }\n else {\n this.getHeaderContent().classList.remove('e-stackedfilter');\n }\n };\n Grid.prototype.getMediaColumns = function () {\n if (!this.enableColumnVirtualization) {\n var gcol = this.getColumns();\n this.getShowHideService = this.serviceLocator.getService('showHideService');\n if (!isNullOrUndefined(gcol)) {\n for (var index = 0; index < gcol.length; index++) {\n if (!isNullOrUndefined(gcol[parseInt(index.toString(), 10)].hideAtMedia)\n && (isNullOrUndefined(gcol[parseInt(index.toString(), 10)].visible)\n || gcol[parseInt(index.toString(), 10)].visible)) {\n this.pushMediaColumn(gcol[parseInt(index.toString(), 10)], index);\n }\n }\n }\n }\n this.updateFrozenColumnsWidth();\n };\n Grid.prototype.pushMediaColumn = function (col, index) {\n this.mediaCol.push(col);\n this.media[col.uid] = window.matchMedia(col.hideAtMedia);\n this.mediaQueryUpdate(index, this.media[col.uid]);\n this.mediaBindInstance[parseInt(index.toString(), 10)] = this.mediaQueryUpdate.bind(this, index);\n this.media[col.uid].addListener(this.mediaBindInstance[parseInt(index.toString(), 10)]);\n };\n /**\n * @param {Column} col - specifies the column\n * @returns {void}\n * @hidden\n */\n Grid.prototype.updateMediaColumns = function (col) {\n if (!this.enableColumnVirtualization) {\n var index = this.getColumnIndexByUid(col.uid);\n for (var i = 0; i < this.mediaCol.length; i++) {\n if (col.uid === this.mediaCol[parseInt(i.toString(), 10)].uid) {\n this.mediaCol.splice(i, 1);\n return;\n }\n }\n this.pushMediaColumn(col, index);\n }\n };\n /**\n * @param {number} columnIndex - specifies the column index\n * @param {MediaQueryList} e - specifies the MediaQueryList\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mediaQueryUpdate = function (columnIndex, e) {\n var col = this.getColumns()[parseInt(columnIndex.toString(), 10)];\n if (this.mediaCol.some(function (mediaColumn) { return mediaColumn.uid === col.uid; })) {\n col.visible = e.matches;\n if (this.isInitialLoad) {\n this.invokedFromMedia = true;\n if (col.visible) {\n this.showHider.show(col.headerText, 'headerText');\n }\n else {\n this.showHider.hide(col.headerText, 'headerText');\n }\n }\n }\n };\n Grid.prototype.refreshMediaCol = function () {\n this.isInitialLoad = true;\n var footerContent = this.element.querySelector('.' + literals.gridFooter);\n if (this.aggregates.length && this.element.scrollHeight > parseInt(this.height.toString(), 10) && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n var checkboxColumn = this.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length === 0 || checkboxColumn.length && this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n this.isCheckBoxSelection = false;\n }\n if (this.rowRenderingMode === 'Vertical') {\n if (this.enableHover) {\n this.setProperties({ enableAdaptiveUI: true, enableHover: false }, true);\n removeClass([this.element], 'e-gridhover');\n }\n }\n if (this.enableAdaptiveUI && this.scrollModule) {\n this.scrollModule.refresh();\n }\n if (this.isFrozenGrid() && this.isAutoGenerateColumns) {\n this.widthService.setWidthToColumns();\n this.isAutoGenerateColumns = false;\n }\n };\n Grid.prototype.removeMediaListener = function () {\n for (var i = 0; i < this.mediaCol.length; i++) {\n this.media[this.mediaCol[parseInt(i.toString(), 10)].uid]\n .removeListener(this.mediaBindInstance[this.mediaCol[parseInt(i.toString(), 10)].index]);\n }\n };\n /**\n * For internal use only - Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.eventInitializer = function () {\n //eventInitializer\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n *\n * @function destroy\n * @returns {void}\n */\n Grid.prototype.destroy = function () {\n var gridElement = this.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.' + literals.gridHeader) &&\n gridElement.querySelector('.' + literals.gridContent) ? true : false;\n if (hasGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n this.removeMediaListener();\n this.notify(events.destroy, {});\n this.destroyDependentModules();\n if (this.isReact) {\n this.destroyTemplate(['template']);\n }\n if (this.isVue) {\n this.destroyTemplate();\n }\n if (hasGridChild) {\n _super.prototype.destroy.call(this);\n }\n this.toolTipObj.destroy();\n if (this.isReact && !Browser.isIE) {\n this.element.innerHTML = '';\n }\n var modules = ['renderModule', 'headerModule', 'contentModule', 'valueFormatterService',\n 'serviceLocator', 'ariaService', 'keyboardModule', 'widthService', 'searchModule', 'showHider',\n 'scrollModule', 'printModule', 'clipboardModule', 'focusModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[parseInt(i.toString(), 10)]]) {\n this[modules[parseInt(i.toString(), 10)]] = null;\n }\n }\n this.element.innerHTML = '';\n classList(this.element, [], ['e-rtl', 'e-gridhover', 'e-responsive', 'e-default', 'e-device', 'e-grid-min-height']);\n };\n Grid.prototype.destroyDependentModules = function () {\n var gridElement = this.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.scrollModule.destroy();\n this.keyboardModule.destroy();\n this.focusModule.destroy();\n this.clipboardModule.destroy();\n this.printModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Grid.prototype.getModuleName = function () {\n return 'grid';\n };\n Grid.prototype.enableBoxSelection = function () {\n if (this.enableAutoFill) {\n this.selectionSettings.cellSelectionMode = 'BoxWithBorder';\n this.element.classList.add('e-afenabled');\n }\n else {\n this.element.classList.remove('e-afenabled');\n }\n };\n Grid.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {GridModel} newProp - Defines new properties\n * @param {GridModel} oldProp - Defines old properties\n * @returns {void}\n * @hidden\n */\n Grid.prototype.onPropertyChanged = function (newProp, oldProp) {\n var requireRefresh = false;\n var requireGridRefresh = false;\n var freezeRefresh = false;\n var checkCursor;\n var args = { requestType: 'refresh' };\n var childGridParent = null;\n var parentInstance = null;\n if (this.isDestroyed) {\n return;\n }\n this.log('module_missing');\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n var properties = Object.keys(newProp);\n if (properties.indexOf('columns') > -1) {\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n }\n this.updateColumnObject();\n requireGridRefresh = true;\n }\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'allowPaging':\n this.notify(events.uiUpdate, { module: 'pager', enable: this.allowPaging });\n requireRefresh = true;\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'pageSettings':\n if (this.pageTemplateChange) {\n this.pageTemplateChange = false;\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n break;\n }\n if (this.pagerModule && this.pagerModule.isCancel) {\n this.pagerModule.isCancel = false;\n return;\n }\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n if (isNullOrUndefined(newProp.pageSettings.currentPage) && isNullOrUndefined(newProp.pageSettings.pageSize)\n && isNullOrUndefined(newProp.pageSettings.totalRecordsCount)\n || !isNullOrUndefined(oldProp.pageSettings) &&\n ((newProp.pageSettings.currentPage !== oldProp.pageSettings.currentPage)\n && !this.enableColumnVirtualization && !this.enableVirtualization\n && this.pageSettings.totalRecordsCount <= this.pageSettings.pageSize)) {\n requireRefresh = true;\n }\n if (this.pagerModule && this.pagerModule.isCancel) {\n this.pagerModule.isCancel = false;\n }\n break;\n case 'allowSorting':\n this.notify(events.uiUpdate, { module: 'sort', enable: this.allowSorting });\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'allowFiltering':\n this.updateStackedFilter();\n this.notify(events.uiUpdate, { module: 'filter', enable: this.allowFiltering });\n requireRefresh = true;\n if (this.filterSettings.type !== 'FilterBar') {\n this.refreshHeader();\n }\n else {\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n }\n break;\n case 'height':\n case 'width':\n this.notify(events.uiUpdate, { module: 'scroll', properties: { width: newProp.width, height: newProp.height } });\n if (this.allowPaging) {\n this.pagerModule.refresh();\n }\n break;\n case 'allowReordering':\n this.headerModule.refreshUI();\n checkCursor = true;\n break;\n case 'allowRowDragAndDrop':\n this.notify(events.uiUpdate, { module: 'rowDragAndDrop', enable: this.allowRowDragAndDrop });\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'allowSelection':\n this.notify(events.uiUpdate, { module: 'selection', enable: this.allowSelection });\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'enableAutoFill':\n if (this.selectionModule) {\n this.enableBoxSelection();\n this.selectionModule.updateAutoFillPosition();\n }\n break;\n case 'rowTemplate':\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n requireRefresh = true;\n break;\n case 'emptyRecordTemplate':\n this.emptyRecordTemplateFn = templateCompiler(this.emptyRecordTemplate);\n requireRefresh = true;\n break;\n case 'detailTemplate':\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n requireRefresh = true;\n break;\n case 'allowGrouping':\n this.notify(events.uiUpdate, { module: 'group', enable: this.allowGrouping });\n this.headerModule.refreshUI();\n requireRefresh = true;\n checkCursor = true;\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'enableInfiniteScrolling':\n case 'childGrid':\n requireRefresh = true;\n childGridParent = this.parentDetails ? document.querySelector(\"#\" + this.parentDetails.parentID) : null;\n parentInstance = childGridParent ? childGridParent.ej2_instances[0] : null;\n if (this.childGrid && parentInstance && isNullOrUndefined(parentInstance.childGrid.childGrid)) {\n var childGridObject = Object.assign({}, parentInstance.childGrid, { childGrid: newProp.childGrid });\n parentInstance.setProperties({ childGrid: childGridObject }, true);\n while (!isNullOrUndefined(parentInstance.parentDetails)) {\n var currentParent = document.querySelector(\"#\" + parentInstance.parentDetails.parentID);\n var currentParentInstance = currentParent ? currentParent.ej2_instances[0] : null;\n if (currentParentInstance) {\n var currentChildObject = Object.assign({}, currentParentInstance.childGrid);\n currentChildObject.childGrid = parentInstance.childGrid;\n currentParentInstance.setProperties({ childGrid: currentChildObject }, true);\n }\n parentInstance = currentParentInstance;\n }\n }\n this.headerModule.refreshUI();\n break;\n case 'toolbar':\n this.notify(events.uiUpdate, { module: 'toolbar' });\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'groupSettings':\n this.notify(events.inBoundModelChanged, {\n module: 'group', properties: newProp.groupSettings,\n oldProperties: oldProp.groupSettings\n });\n break;\n case 'aggregates':\n if (!this.aggregates.length && this.allowGrouping && this.groupSettings.columns.length) {\n requireRefresh = true;\n }\n this.notify(events.uiUpdate, { module: 'aggregate', properties: newProp });\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'frozenColumns':\n case 'frozenRows':\n case 'enableVirtualization':\n case 'enableColumnVirtualization':\n case 'currencyCode':\n case 'locale':\n this.log('frozen_rows_columns');\n freezeRefresh = true;\n requireGridRefresh = true;\n break;\n case 'query':\n if (!this.getDataModule().isQueryInvokedFromData) {\n requireRefresh = true;\n }\n this.getDataModule().isQueryInvokedFromData = false;\n break;\n case 'autoFit':\n if (this.autoFit) {\n this.preventAdjustColumns();\n }\n else {\n this.restoreAdjustColumns();\n }\n break;\n default:\n this.extendedPropertyChange(prop, newProp, requireGridRefresh);\n }\n }\n if (checkCursor) {\n this.updateDefaultCursor();\n }\n if (requireGridRefresh) {\n if (freezeRefresh || this.getFrozenColumns() || this.frozenRows) {\n this.freezeRefresh();\n }\n else {\n this.refresh();\n }\n }\n else if (requireRefresh) {\n this.notify(events.modelChanged, args);\n requireRefresh = false;\n this.maintainSelection(newProp.selectedRowIndex);\n }\n };\n Grid.prototype.extendedPropertyChange = function (prop, newProp, requireGridRefresh) {\n switch (prop) {\n case 'enableRtl':\n this.updateRTL();\n if (this.allowPaging) {\n this.element.querySelector('.e-gridpager').ej2_instances[0].enableRtl = newProp.enableRtl;\n this.element.querySelector('.e-gridpager').ej2_instances[0].dataBind();\n }\n if (this.height !== 'auto') {\n this.scrollModule.removePadding(!newProp.enableRtl);\n this.scrollModule.setPadding();\n }\n if (this.toolbar && this.toolbarModule) {\n this.toolbarModule.getToolbar().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.toolbarModule.getToolbar().ej2_instances[0].dataBind();\n }\n if (this.contextMenuItems && this.contextMenuModule) {\n this.contextMenuModule.getContextMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.contextMenuModule.getContextMenu().ej2_instances[0].dataBind();\n }\n if (this.showColumnMenu && this.columnMenuModule && !this.enableAdaptiveUI) {\n this.columnMenuModule.getColumnMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.columnMenuModule.getColumnMenu().ej2_instances[0].dataBind();\n }\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n this.refreshHeader();\n }\n this.notify(events.rtlUpdated, {});\n break;\n case 'enableAltRow':\n this.renderModule.refresh();\n break;\n case 'allowResizing':\n this.headerModule.refreshUI();\n this.updateResizeLines();\n break;\n case 'rowHeight':\n if (this.rowHeight) {\n addClass([this.element], 'e-grid-min-height');\n }\n else {\n removeClass([this.element], 'e-grid-min-height');\n }\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'gridLines':\n this.updateGridLines();\n break;\n case 'showColumnMenu':\n this.headerModule.refreshUI();\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: true });\n break;\n case 'columnMenuItems':\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: this.columnMenuItems });\n break;\n case 'contextMenuItems':\n this.notify(events.uiUpdate, { module: 'contextMenu', enable: this.contextMenuItems });\n break;\n case 'showColumnChooser':\n this.notify(events.uiUpdate, { module: 'columnChooser', enable: this.showColumnChooser });\n break;\n case 'filterSettings':\n this.updateStackedFilter();\n this.notify(events.inBoundModelChanged, { module: 'filter', properties: newProp.filterSettings });\n break;\n case 'searchSettings':\n this.notify(events.inBoundModelChanged, { module: 'search', properties: newProp.searchSettings });\n break;\n case 'sortSettings':\n this.notify(events.inBoundModelChanged, { module: 'sort' });\n break;\n case 'selectionSettings':\n this.notify(events.inBoundModelChanged, { module: 'selection', properties: newProp.selectionSettings });\n break;\n case 'editSettings':\n this.notify(events.inBoundModelChanged, { module: 'edit', properties: newProp.editSettings });\n break;\n case 'allowTextWrap':\n case 'textWrapSettings':\n if (this.allowTextWrap) {\n this.applyTextWrap();\n }\n else {\n this.removeTextWrap();\n }\n this.notify(events.freezeRender, { case: 'textwrap', isModeChg: (prop === 'textWrapSettings') });\n break;\n case 'dataSource':\n // eslint-disable-next-line no-case-declarations\n var pending_1 = this.getDataModule().getState();\n if (this.allowSelection && this.isPersistSelection && !(pending_1 && pending_1.isPending)) {\n this.clearSelection();\n }\n if (!isNullOrUndefined(this.dataSource) && this.dataSource.result) {\n this.isVirtualAdaptive = false;\n }\n if (Object.getPrototypeOf(newProp).deepWatch) {\n var pKeyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0, props = Object.keys(newProp.dataSource); i < props.length; i++) {\n this.setRowData(getValue(pKeyField, this.dataSource[props[parseInt(i.toString(), 10)]]), this.dataSource[props[parseInt(i.toString(), 10)]]);\n }\n }\n else if (pending_1.isPending) {\n var gResult = !isNullOrUndefined(this.dataSource) ? this.dataSource.result : [];\n var names = (pending_1.group || []);\n if (names.length && !this.groupSettings.enableLazyLoading && !(gResult.length && gResult[0].field)) {\n for (var i = 0; i < names.length; i++) {\n gResult = DataUtil.group(gResult, names[parseInt(i.toString(), 10)], pending_1.aggregates || []);\n }\n }\n this.dataSource = {\n result: gResult, count: this.dataSource.count,\n aggregates: this.dataSource.aggregates\n };\n this.getDataModule().setState({});\n pending_1.resolver(this.dataSource);\n }\n else {\n this.getDataModule().setState({ isDataChanged: false });\n this.notify(events.dataSourceModified, {});\n if (!requireGridRefresh) {\n this.renderModule.refresh();\n if (this.isCheckBoxSelection) {\n this.notify(events.beforeRefreshOnDataChange, {});\n }\n }\n }\n this.scrollRefresh();\n break;\n case 'enableHover':\n // eslint-disable-next-line no-case-declarations\n var action = newProp.enableHover ? addClass : removeClass;\n action([this.element], 'e-gridhover');\n break;\n case 'selectedRowIndex':\n if (!this.isSelectedRowIndexUpdating) {\n this.selectRow(newProp.selectedRowIndex);\n }\n this.isSelectedRowIndexUpdating = false;\n break;\n case 'resizeSettings':\n this.widthService.setWidthToTable();\n break;\n case 'enableAdaptiveUI':\n this.notify(events.setFullScreenDialog, {});\n break;\n case 'rowRenderingMode':\n this.enableVerticalRendering();\n this.notify(events.rowModeChange, {});\n this.refresh();\n break;\n case 'enableStickyHeader':\n this.scrollModule.addStickyListener(newProp.enableStickyHeader);\n break;\n }\n };\n Grid.prototype.maintainSelection = function (index) {\n var _this_1 = this;\n if (index !== -1) {\n var fn_1 = function () {\n _this_1.selectRow(index);\n _this_1.off(events.contentReady, fn_1);\n };\n this.on(events.contentReady, fn_1, this);\n }\n };\n /**\n * @param {Object} prop - Defines the property\n * @param {boolean} muteOnChange - Defines the mute on change\n * @returns {void}\n * @private\n */\n Grid.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n var filterSettings = 'filterSettings';\n if (prop[\"\" + filterSettings] && this.filterModule && muteOnChange) {\n this.filterModule.refreshFilter();\n }\n };\n /**\n * @hidden\n * @returns {number} - Returns the tables count\n */\n Grid.prototype.getTablesCount = function () {\n return this.tablesCount;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateDefaultCursor = function () {\n var headerCells = [].slice.call(this.getHeaderContent().querySelectorAll('.e-headercell:not(.e-stackedheadercell)'));\n var stdHdrCell = [].slice.call(this.getHeaderContent().getElementsByClassName('e-stackedheadercell'));\n var cols = this.getColumns();\n for (var i = 0; i < headerCells.length; i++) {\n var cell = headerCells[parseInt(i.toString(), 10)];\n if (this.allowGrouping || this.allowReordering || this.allowSorting) {\n if (!cols[parseInt(i.toString(), 10)].allowReordering || !cols[parseInt(i.toString(), 10)].allowSorting\n || !cols[parseInt(i.toString(), 10)].allowGrouping) {\n cell.classList.add('e-defaultcursor');\n }\n else {\n cell.classList.add('e-mousepointer');\n }\n }\n }\n for (var count = 0; count < stdHdrCell.length; count++) {\n if (this.allowReordering) {\n stdHdrCell[parseInt(count.toString(), 10)].classList.add('e-mousepointer');\n }\n }\n };\n Grid.prototype.updateColumnModel = function (columns, isRecursion) {\n for (var i = 0, len = columns.length; i < len; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.updateColumnModel(columns[parseInt(i.toString(), 10)].columns, true);\n }\n else {\n this.columnModel.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n if (isNullOrUndefined(isRecursion) || !isRecursion) {\n this.updateLockableColumns();\n }\n };\n Grid.prototype.getFrozenLeftCount = function () {\n return this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n };\n Grid.prototype.isFrozenGrid = function () {\n return this.getFrozenColumns() !== 0 || this.frozenLeftColumns.length !== 0 || this.frozenRightColumns.length !== 0 ||\n this.fixedColumns.length !== 0;\n };\n Grid.prototype.getFrozenMode = function () {\n return this.frozenName;\n };\n Grid.prototype.updateLockableColumns = function () {\n var cols = this.columnModel;\n var frozenCount = 0;\n var movableCount = 0;\n var frozenColumns = this.getFrozenColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].lockColumn) {\n if (i < frozenColumns) {\n cols.splice(frozenCount, 0, cols.splice(i, 1)[0]);\n frozenCount++;\n }\n else {\n cols.splice(frozenColumns + movableCount, 0, cols.splice(i, 1)[0]);\n movableCount++;\n }\n }\n }\n };\n Grid.prototype.checkLockColumns = function (cols) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n this.checkLockColumns(cols[parseInt(i.toString(), 10)].columns);\n }\n else if (cols[parseInt(i.toString(), 10)].lockColumn) {\n this.lockcolPositionCount++;\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.leftrightColumnWidth = function (position) {\n var cols = position === 'left' ? this.getFrozenLeftColumns() : position === 'right' ? this.getFrozenRightColumns() : [];\n var width = 0;\n cols.filter(function (col) {\n if (col.visible) {\n width += parseInt(col.width.toString(), 10);\n }\n });\n return width;\n };\n /**\n * Gets the columns from the Grid.\n *\n * @param {boolean} isRefresh - Defines the boolean whether to refresh\n * @returns {Column[]} - returns the column\n */\n Grid.prototype.getColumns = function (isRefresh) {\n var _this_1 = this;\n var inview = this.inViewIndexes.map(function (v) { return v - _this_1.groupSettings.columns.length; }).filter(function (v) { return v > -1; });\n var vLen = inview.length;\n if (!this.enableColumnVirtualization || isNullOrUndefined(this.columnModel) || this.columnModel.length === 0 || isRefresh) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n var columns = vLen === 0 ? this.columnModel :\n this.columnModel.slice(inview[0], inview[vLen - 1] + 1);\n var left = [];\n var right = [];\n var movable = [];\n var isLeftRightFrozen = this.enableColumnVirtualization && this.isPreparedFrozenColumns && vLen === 0;\n if (isLeftRightFrozen) {\n this.frozenRightColumns = [];\n this.frozenLeftColumns = [];\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n left.push(columns[parseInt(i.toString(), 10)]);\n if (isLeftRightFrozen) {\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n right.push(columns[parseInt(i.toString(), 10)]);\n if (isLeftRightFrozen) {\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n else {\n movable.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n if (this.enableColumnVirtualization && this.isFrozenGrid()) {\n if (this.frozenLeftColumns.length) {\n left = this.frozenLeftColumns;\n }\n if (this.frozenRightColumns.length) {\n right = this.frozenRightColumns;\n }\n }\n return left.concat(movable).concat(right);\n };\n /**\n * @private\n * @param {string} stackedHeader - Defines the stacked header\n * @param {Column[]} col - Defines the column\n * @returns {Column} Returns the Column\n */\n Grid.prototype.getStackedHeaderColumnByHeaderText = function (stackedHeader, col) {\n for (var i = 0; i < col.length; i++) {\n var individualColumn = col[parseInt(i.toString(), 10)];\n if (individualColumn.field === stackedHeader || individualColumn.headerText === stackedHeader) {\n this.stackedColumn = individualColumn;\n break;\n }\n else if (individualColumn.columns) {\n this.getStackedHeaderColumnByHeaderText(stackedHeader, individualColumn.columns);\n }\n }\n return this.stackedColumn;\n };\n /**\n * @private\n * @returns {number[]} Returns the column indexes\n */\n Grid.prototype.getColumnIndexesInView = function () {\n return this.inViewIndexes;\n };\n /**\n * @private\n * @returns {Query} - returns the query\n */\n Grid.prototype.getQuery = function () {\n return this.query;\n };\n /**\n * @private\n * @returns {object} - returns the locale constants\n */\n Grid.prototype.getLocaleConstants = function () {\n return this.defaultLocale;\n };\n /**\n * @param {number[]} indexes - specifies the indexes\n * @returns {void}\n * @private\n */\n Grid.prototype.setColumnIndexesInView = function (indexes) {\n this.inViewIndexes = indexes;\n };\n /**\n * Gets the visible columns from the Grid.\n *\n * @returns {Column[]} returns the column\n */\n Grid.prototype.getVisibleColumns = function () {\n return this.getCurrentVisibleColumns();\n };\n /**\n * Gets the header div of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getHeaderContent = function () {\n return this.headerModule.getPanel();\n };\n /**\n * Sets the header div of the Grid to replace the old header.\n *\n * @param {Element} element - Specifies the Grid header.\n *\n * @returns {void}\n */\n Grid.prototype.setGridHeaderContent = function (element) {\n this.headerModule.setPanel(element);\n };\n /**\n * Gets the content table of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getContentTable = function () {\n return this.contentModule.getTable();\n };\n /**\n * Sets the content table of the Grid to replace the old content table.\n *\n * @param {Element} element - Specifies the Grid content table.\n *\n * @returns {void}\n */\n Grid.prototype.setGridContentTable = function (element) {\n this.contentModule.setTable(element);\n };\n /**\n * Gets the content div of the Grid.\n *\n * @returns {Element} Returns the element\n */\n Grid.prototype.getContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * Sets the content div of the Grid to replace the old Grid content.\n *\n * @param {Element} element - Specifies the Grid content.\n *\n * @returns {void}\n */\n Grid.prototype.setGridContent = function (element) {\n this.contentModule.setPanel(element);\n };\n /**\n * Gets the header table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getHeaderTable = function () {\n return this.headerModule.getTable();\n };\n /**\n * Sets the header table of the Grid to replace the old one.\n *\n * @param {Element} element - Specifies the Grid header table.\n *\n * @returns {void}\n */\n Grid.prototype.setGridHeaderTable = function (element) {\n this.headerModule.setTable(element);\n };\n /**\n * Gets the footer div of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContent = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement;\n };\n /**\n * Gets the footer table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContentTable = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement.firstChild.firstChild;\n };\n /**\n * Gets the pager of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getPager = function () {\n return this.gridPager; //get element from pager\n };\n /**\n * Sets the pager of the Grid to replace the old pager.\n *\n * @param {Element} element - Specifies the Grid pager.\n *\n * @returns {void}\n */\n Grid.prototype.setGridPager = function (element) {\n this.gridPager = element;\n };\n /**\n * Gets a row by index.\n *\n * @param {number} index - Specifies the row index.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getRowByIndex = function (index) {\n if (this.enableVirtualization && this.groupSettings.enableLazyLoading) {\n return this.lazyLoadRender.getRowByIndex(index);\n }\n else {\n return this.contentModule.getRowByIndex(index);\n }\n };\n /**\n * Gets a movable tables row by index.\n *\n * @param {number} index - Specifies the row index.\n *\n * @returns {Element} returns the element\n\n */\n Grid.prototype.getMovableRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Gets a frozen tables row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n\n */\n Grid.prototype.getFrozenRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Gets all the data rows of the Grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets a frozen right tables row element by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n\n */\n Grid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n *\n * @param {Element | EventTarget} target - specifies the element\n *\n * @returns {RowInfo} returns the row info\n */\n Grid.prototype.getRowInfo = function (target) {\n var ele = target;\n var args = { target: target };\n if (!isNullOrUndefined(target) && isNullOrUndefined(parentsUntil(ele, 'e-detailrowcollapse')\n && isNullOrUndefined(parentsUntil(ele, 'e-recordplusexpand')))) {\n var cell = closest(ele, '.' + literals.rowCell);\n if (!cell) {\n var row_1 = closest(ele, '.' + literals.row);\n if (!isNullOrUndefined(row_1) && !row_1.classList.contains('e-addedrow')) {\n var rowObj = this.getRowObjectFromUID(row_1.getAttribute('data-uid'));\n var rowIndex = parseInt(row_1.getAttribute(literals.dataRowIndex), 10);\n args = { row: row_1, rowData: rowObj.data, rowIndex: rowIndex };\n }\n return args;\n }\n var cellIndex = parseInt(cell.getAttribute(literals.dataColIndex), 10);\n var row_2 = closest(cell, '.' + literals.row);\n if (!isNullOrUndefined(cell) && !isNaN(cellIndex) && !isNullOrUndefined(row_2)) {\n var rowIndex = parseInt(row_2.getAttribute(literals.dataRowIndex), 10);\n var rows = this.contentModule.getRows();\n var index = cellIndex + this.getIndentCount();\n var rowsObject = rows.filter(function (r) { return r.uid === row_2.getAttribute('data-uid'); });\n var rowData = {};\n var column = void 0;\n if (Object.keys(rowsObject).length) {\n rowData = rowsObject[0].data;\n column = rowsObject[0].cells[parseInt(index.toString(), 10)].column;\n }\n args = { cell: cell, cellIndex: cellIndex, row: row_2, rowIndex: rowIndex, rowData: rowData, column: column, target: target };\n }\n }\n return args;\n };\n /**\n * Gets the Grid's movable content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n\n */\n Grid.prototype.getMovableRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets the Grid's frozen right content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n\n */\n Grid.prototype.getFrozenRightRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets all the Grid's data rows.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getDataRows = function () {\n return this.getAllDataRows();\n };\n /**\n * @param {boolean} includeAdd - specifies includeAdd\n * @returns {Element[]} returns the element\n * @hidden\n */\n Grid.prototype.getAllDataRows = function (includeAdd) {\n if (isNullOrUndefined(this.getContentTable().querySelector(literals.tbody))) {\n return [];\n }\n var tbody = this.getContentTable().querySelector(literals.tbody);\n var rows = [].slice.call(tbody.children);\n if (this.frozenRows) {\n var hdrTbody = this.getHeaderTable().querySelector(literals.tbody);\n var freezeRows = [].slice.call(hdrTbody.children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * @param {HTMLElement[]} fRows - Defines the frozen Rows\n * @param {HTMLElement[]} mrows - Defines the movable Rows\n * @returns {HTMLElement[]} Returns the element\n * @hidden\n */\n Grid.prototype.addMovableRows = function (fRows, mrows) {\n for (var i = 0, len = mrows.length; i < len; i++) {\n fRows.push(mrows[parseInt(i.toString(), 10)]);\n }\n return fRows;\n };\n Grid.prototype.generateDataRows = function (rows, includAdd) {\n var dRows = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n if (rows[parseInt(i.toString(), 10)].classList.contains(literals.row)\n && (!rows[parseInt(i.toString(), 10)].classList.contains('e-hiddenrow') || includAdd)) {\n if (this.isCollapseStateEnabled()) {\n dRows[parseInt(rows[parseInt(i.toString(), 10)].getAttribute('data-rowindex'), 10)] = rows[parseInt(i.toString(), 10)];\n }\n else {\n dRows.push(rows[parseInt(i.toString(), 10)]);\n }\n }\n }\n return dRows;\n };\n /**\n * Gets all the Grid's movable table data rows.\n *\n * @returns {Element[]} Returns the element\n\n */\n Grid.prototype.getMovableDataRows = function () {\n return this.getAllMovableDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n\n * @hidden\n */\n Grid.prototype.getAllMovableDataRows = function (includeAdd) {\n return this.getAllDataRows(includeAdd);\n };\n /**\n * Gets all the Grid's frozen table data rows.\n *\n * @returns {Element[]} returns the element\n\n */\n Grid.prototype.getFrozenDataRows = function () {\n return this.getAllFrozenDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n\n * @hidden\n */\n Grid.prototype.getAllFrozenDataRows = function (includeAdd) {\n return this.getAllDataRows(includeAdd);\n };\n /**\n * Gets all the Grid's frozen right table data rows.\n *\n * @returns {Element[]} Returns the Element\n\n */\n Grid.prototype.getFrozenRightDataRows = function () {\n return this.getAllFrozenRightDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n\n * @hidden\n */\n Grid.prototype.getAllFrozenRightDataRows = function (includeAdd) {\n return this.getAllDataRows(includeAdd);\n };\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n *\n * @returns {void}\n */\n Grid.prototype.setCellValue = function (key, field, value) {\n var cells = 'cells';\n var rowData = 'data';\n var rowIdx = 'index';\n var rowuID = 'uid';\n var pkName = this.getPrimaryKeyFieldNames()[0];\n var cell = new CellRenderer(this, this.serviceLocator);\n var fieldIdx = this.getColumnIndexByField(field);\n var col = this.getColumnByField(field);\n var rowObjects = this.contentModule.getRows();\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var tr = selectedRow ? this.element.querySelector('[data-uid=' + selectedRow[\"\" + rowuID] + ']') : null;\n if (!isNullOrUndefined(tr)) {\n if (typeof value === 'string') {\n value = this.sanitize(value);\n }\n setValue(field, value, selectedRow[\"\" + rowData]);\n var left = 0;\n if (this.isRowDragable()) {\n left++;\n }\n var td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n if (!isNullOrUndefined(td)) {\n var Idx = 0;\n if (this.groupSettings.columns.length) {\n fieldIdx = fieldIdx + this.groupSettings.columns.length;\n }\n if (this.childGrid || this.detailTemplate) {\n fieldIdx++;\n }\n if (this.isRowDragable()) {\n fieldIdx++;\n }\n var sRow = selectedRow[\"\" + cells][fieldIdx - Idx];\n cell.refreshTD(td, sRow, selectedRow[\"\" + rowData], { index: selectedRow[\"\" + rowIdx] });\n if (this.isReact) {\n td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n }\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n /* tslint:disable:no-string-literal */\n if (!isNullOrUndefined(selectedRow) && !isNullOrUndefined(selectedRow['changes'])) {\n selectedRow['changes'][\"\" + field] = value;\n }\n /* tslint:disable:no-string-literal */\n this.trigger(events.queryCellInfo, {\n cell: td, column: col, data: selectedRow[\"\" + rowData]\n });\n if (this.isReact && td.getAttribute('tabindex') === '0' && td.classList.contains('e-focused')) {\n td.focus();\n }\n }\n }\n else {\n return;\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @param {boolean} renderTemplates - Defines renderTemplates need to invoke\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactColumnTemplateByUid = function (columnUid, renderTemplates) {\n var _this_1 = this;\n if (this.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.clearTemplate(['columnTemplate'], undefined, function () {\n var isChildGrid = _this_1.childGrid && _this_1.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = isChildGrid ? _this_1.getContentTable().querySelectorAll('.e-row') :\n _this_1.getDataRows();\n _this_1.refreshReactTemplateTD(rows, isChildGrid);\n if (renderTemplates) {\n _this_1.renderTemplates();\n }\n });\n }\n };\n /**\n * @param {Element[] | NodeListOf} rows - Defines the rows\n * @param {boolean} isChildGrid - Defines whether it is a Hierarchy Grid.\n * @param {boolean} isFrozen - Defines whether it is a Frozen Grid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactTemplateTD = function (rows, isChildGrid, isFrozen) {\n var cells = 'cells';\n var rowIdx = 'index';\n var indent = this.getIndentCount();\n var childIndent = 0;\n var isChildRow = false;\n for (var j = 0; j < rows.length; j++) {\n var rowsObj = this.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid')) {\n var gridObj = parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n childIndent = gridObj.getIndentCount();\n isChildRow = true;\n }\n if (rowsObj && rowsObj.isDataRow && !isNullOrUndefined(rowsObj.index) &&\n !rows[parseInt(j.toString(), 10)].classList.contains('e-editedrow')) {\n for (var i = 0; i < rowsObj[\"\" + cells].length; i++) {\n var cell = rowsObj[\"\" + cells][parseInt(i.toString(), 10)];\n if (cell.isTemplate) {\n var cellRenderer = new CellRenderer(this, this.serviceLocator);\n var td = isChildGrid ? rows[parseInt(j.toString(), 10)]\n .children[cell.index + (isChildRow ? childIndent : indent)] : this.getCellFromIndex(j, isFrozen ? cell.index : i - indent);\n cellRenderer.refreshTD(td, cell, rowsObj.data, { index: rowsObj[\"\" + rowIdx] });\n }\n }\n }\n isChildRow = false;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshGroupCaptionFooterTemplate = function () {\n var isChildGrid = this.childGrid && this.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = this.getContentTable().querySelectorAll('.e-groupcaptionrow, .e-groupfooterrow');\n for (var i = 0; i < rows.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var gridObj = this;\n var rowsObj = this.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid')) {\n gridObj = parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n }\n if (rowsObj) {\n var cells = rowsObj.cells.filter(function (cell) { return cell.isDataCell; });\n var args = { cells: cells, data: rowsObj.data, dataUid: rowsObj.uid };\n gridObj.notify(events.refreshAggregateCell, args);\n }\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactHeaderTemplateByUid = function (columnUid) {\n if (this.isReact) {\n var cells = 'cells';\n var rowsObj = this.headerModule.rows;\n var cellIndex = this.getNormalizedColumnIndex(columnUid);\n var _loop_1 = function (j) {\n var cell = rowsObj[parseInt(j.toString(), 10)][\"\" + cells][parseInt(cellIndex.toString(), 10)];\n if (cell && cell.column.uid === columnUid) {\n var headerCellRenderer = new HeaderCellRenderer(this_1, this_1.serviceLocator);\n var td = parentsUntil(this_1.element.querySelectorAll('[e-mappinguid=' + columnUid + ']')[0], 'e-templatecell');\n headerCellRenderer.refresh(cell, td);\n var cols = this_1.sortSettings.columns;\n var columnIndex = cols.findIndex(function (col) { return col.field === cell.column.field; });\n if (columnIndex !== -1) {\n var header = this_1.getColumnHeaderByField(cell.column.field);\n this_1.ariaService.setSort(header, (cols[parseInt(columnIndex.toString(), 10)].direction).toLowerCase());\n if (cols.length > 1) {\n header.querySelector('.e-headercelldiv').insertBefore(this_1.createElement('span', { className: 'e-sortnumber', innerHTML: (columnIndex + 1).toString() }), header.querySelector('.e-headertext'));\n }\n var filterElement = header.querySelector('.e-sortfilterdiv');\n if (cols[parseInt(columnIndex.toString(), 10)].direction === 'Ascending') {\n classList(filterElement, ['e-ascending', 'e-icon-ascending'], []);\n }\n else {\n classList(filterElement, ['e-descending', 'e-icon-descending'], []);\n }\n }\n }\n };\n var this_1 = this;\n for (var j = 0; j < rowsObj.length; j++) {\n _loop_1(j);\n }\n }\n };\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n *\n * @returns {void}\n */\n Grid.prototype.setRowData = function (key, rowData) {\n var rowuID = 'uid';\n var rowObjects = this.contentModule.getRows();\n var pkName = this.getPrimaryKeyFieldNames()[0];\n if (this.groupSettings.columns.length > 0 && this.aggregates.length > 0) {\n rowObjects = rowObjects.filter(function (row) { return row.isDataRow; });\n }\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var selectRowEle = selectedRow ? [].slice.call(this.element.querySelectorAll('[data-uid=' + selectedRow[\"\" + rowuID] + ']')) : undefined;\n if (!isNullOrUndefined(selectedRow) && selectRowEle.length) {\n selectedRow.changes = rowData;\n if (this.frozenRows) {\n var fRowTr = this.getRowsObject()[selectedRow.index];\n this.setFrozenRowData(fRowTr, rowData);\n }\n else {\n this.setFrozenRowData(selectedRow, rowData);\n }\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n }\n else {\n return;\n }\n };\n Grid.prototype.setFrozenRowData = function (fTr, rowData) {\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this);\n fTr.changes = rowData;\n refreshForeignData(fTr, this.getForeignKeyColumns(), fTr.changes);\n rowRenderer.refresh(fTr, this.getColumns(), true);\n };\n /**\n * Gets a cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n var col = this.getColumnByIndex(columnIndex);\n return getCellByColAndRowIndex(this, col, rowIndex, columnIndex);\n };\n /**\n * Gets a movable table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n return this.getCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a frozen right table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n return this.getCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a column header by column index.\n *\n * @param {number} index - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getColumnHeaderByIndex = function (index) {\n return this.getHeaderTable().getElementsByClassName('e-headercell')[parseInt(index.toString(), 10)];\n };\n /**\n * Gets a movable column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getMovableColumnHeaderByIndex = function (index) {\n return this.getColumnHeaderByIndex(index);\n };\n /**\n * Gets a frozen right column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n return this.getColumnHeaderByIndex(index);\n };\n /**\n * Gets a frozen left column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.getColumnHeaderByIndex(index);\n };\n /**\n * @param {string} uid - Defines the uid\n * @param {boolean} isMovable - Defines isMovable\n * @param {boolean} isFrozenRight - Defines isFrozenRight\n * @returns {Row} Returns the row object\n * @hidden\n */\n Grid.prototype.getRowObjectFromUID = function (uid) {\n var rows = this.contentModule.getRows();\n var row = this.rowObject(rows, uid);\n if (isNullOrUndefined(row) && this.enableVirtualization && this.groupSettings.columns.length > 0) {\n row = this.rowObject(this.vRows, uid);\n return row;\n }\n return row;\n };\n Grid.prototype.rowObject = function (rows, uid) {\n if (rows) {\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.uid === uid) {\n return row;\n }\n }\n }\n return null;\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n\n */\n Grid.prototype.getMovableRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n\n */\n Grid.prototype.getFrozenRightRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * Gets a column header by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByField = function (field) {\n var column = this.getColumnByField(field);\n return column ? this.getColumnHeaderByUid(column.uid) : undefined;\n };\n /**\n * Gets a column header by UID.\n *\n * @param {string} uid - Specifies the column uid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByUid = function (uid) {\n var element = this.getHeaderContent().querySelector('[e-mappinguid=' + uid + ']');\n return element ? element.parentElement : undefined;\n };\n /**\n * @hidden\n * @param {number} index - Defines the index\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByIndex = function (index) {\n var column;\n this.getColumns().some(function (col, i) {\n column = col;\n return i === index;\n });\n return column;\n };\n /**\n * Gets a Column by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets a column index by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {number} Returns the index by field\n */\n Grid.prototype.getColumnIndexByField = function (field) {\n var cols = this.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * Gets a column by UID.\n *\n * @param {string} uid - Specifies the column UID.\n *\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByUid = function (uid) {\n return iterateArrayOrObject(this.getColumns().concat(this.getStackedColumns(this.columns)), function (item) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * @param {Column[]} columns - Defines the columns\n * @param {Column[]} stackedColumn - Defines the stacked columns\n * @returns {Column[]} Returns the columns\n * @hidden\n */\n Grid.prototype.getStackedColumns = function (columns, stackedColumn) {\n if (stackedColumn === void 0) { stackedColumn = []; }\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (column.columns) {\n stackedColumn.push(column);\n this.getStackedColumns(column.columns, stackedColumn);\n }\n }\n return stackedColumn;\n };\n /**\n * Gets a column index by UID.\n *\n * @param {string} uid - Specifies the column UID.\n *\n * @returns {number} Returns the column by index\n */\n Grid.prototype.getColumnIndexByUid = function (uid) {\n var index = iterateArrayOrObject(this.getColumns(), function (item, index) {\n if (item.uid === uid) {\n return index;\n }\n return undefined;\n })[0];\n return !isNullOrUndefined(index) ? index : -1;\n };\n /**\n * Gets UID by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {string} Returns the column by field\n */\n Grid.prototype.getUidByColumnField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item.uid;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets column index by column uid value.\n *\n * @private\n * @param {string} uid - Specifies the column uid.\n * @returns {number} Returns the column by field\n */\n Grid.prototype.getNormalizedColumnIndex = function (uid) {\n var index = this.getColumnIndexByUid(uid);\n return index + this.getIndentCount();\n };\n /**\n * Gets indent cell count.\n *\n * @private\n * @returns {number} Returns the indent count\n */\n Grid.prototype.getIndentCount = function () {\n var index = 0;\n if (this.allowGrouping) {\n index += this.groupSettings.columns.length;\n }\n if (this.isDetail()) {\n index++;\n }\n if (this.isRowDragable() && isNullOrUndefined(this.rowDropSettings.targetID)) {\n index++;\n }\n /**\n * TODO: index normalization based on the stacked header, grouping and detailTemplate\n * and frozen should be handled here\n */\n return index;\n };\n /**\n * Gets the collection of column fields.\n *\n * @returns {string[]} Returns the Field names\n */\n Grid.prototype.getColumnFieldNames = function () {\n var columnNames = [];\n var column;\n for (var i = 0, len = this.getColumns().length; i < len; i++) {\n column = this.getColumns()[parseInt(i.toString(), 10)];\n if (column.visible) {\n columnNames.push(column.field);\n }\n }\n return columnNames;\n };\n /**\n * Gets a compiled row template.\n *\n * @returns {Function} Returns the row TEmplate\n * @private\n */\n Grid.prototype.getRowTemplate = function () {\n return this.rowTemplateFn;\n };\n /**\n * Gets a compiled empty Record template.\n *\n * @returns {Function} Returns the empty Record template\n * @private\n */\n Grid.prototype.getEmptyRecordTemplate = function () {\n return this.emptyRecordTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function} Returns the Detail template\n */\n Grid.prototype.getDetailTemplate = function () {\n return this.detailTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function}Returns the Edit template\n */\n Grid.prototype.getEditTemplate = function () {\n return this.editTemplateFn;\n };\n /**\n * Gets a compiled dialog edit header template.\n *\n * @private\n * @returns {Function} returns template function\n */\n Grid.prototype.getEditHeaderTemplate = function () {\n return this.editHeaderTemplateFn;\n };\n /**\n * Gets a compiled dialog edit footer template.\n *\n * @private\n * @returns {Function} Returns the Footer template\n */\n Grid.prototype.getEditFooterTemplate = function () {\n return this.editFooterTemplateFn;\n };\n /**\n * Get the names of the primary key columns of the Grid.\n *\n * @returns {string[]} Returns the field names\n */\n Grid.prototype.getPrimaryKeyFieldNames = function () {\n var keys = [];\n for (var k = 0; k < this.columnModel.length; k++) {\n if (this.columnModel[parseInt(k.toString(), 10)].isPrimaryKey) {\n keys.push(this.columnModel[parseInt(k.toString(), 10)].field);\n }\n }\n return keys;\n };\n /**\n * Refreshes the Grid header and content.\n *\n * @returns {void}\n */\n Grid.prototype.refresh = function () {\n if (!this.isDestroyed) {\n this.isManualRefresh = true;\n this.headerModule.refreshUI();\n this.updateStackedFilter();\n this.renderModule.refresh();\n }\n };\n /**\n * Refreshes the Grid header.\n *\n * @returns {void}\n */\n Grid.prototype.refreshHeader = function () {\n this.headerModule.refreshUI();\n };\n /**\n * Gets the collection of selected rows.\n *\n * @returns {Element[]} Returns the element\n */\n Grid.prototype.getSelectedRows = function () {\n return this.selectionModule ? this.selectionModule.selectedRecords : [];\n };\n /**\n * Gets the collection of selected row indexes.\n *\n * @returns {number[]} Returns the Selected row indexes\n */\n Grid.prototype.getSelectedRowIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowIndexes : [];\n };\n /**\n * Gets the collection of selected row and cell indexes.\n *\n * @returns {number[]} Returns the Selected row cell indexes\n */\n Grid.prototype.getSelectedRowCellIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowCellIndexes : [];\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} Returns the selected records\n * @isGenericType true\n */\n Grid.prototype.getSelectedRecords = function () {\n return this.selectionModule ? this.selectionModule.getSelectedRecords() : [];\n };\n /**\n * Gets the collection of selected columns uid.\n *\n * @returns {string[]} Returns the selected column uid\n * @isGenericType true\n */\n Grid.prototype.getSelectedColumnsUid = function () {\n var _this_1 = this;\n var uid = [];\n if (this.selectionModule) {\n this.selectionModule.selectedColumnsIndexes.filter(function (i) { return uid.push(_this_1.getColumns()[parseInt(i.toString(), 10)].uid); });\n }\n return uid;\n };\n /**\n * Gets the data module.\n *\n * @returns {Data} Returns the data\n */\n Grid.prototype.getDataModule = function () {\n return this.renderModule.data;\n };\n /**\n * Shows a column by its column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n *\n * @returns {void}\n */\n Grid.prototype.showColumns = function (keys, showBy) {\n showBy = showBy ? showBy : 'headerText';\n this.showHider.show(keys, showBy);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n *\n * @returns {void}\n */\n Grid.prototype.hideColumns = function (keys, hideBy) {\n hideBy = hideBy ? hideBy : 'headerText';\n this.showHider.hide(keys, hideBy);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen column\n */\n Grid.prototype.getFrozenColumns = function () {\n return this.frozenColumns + this.getFrozenCount(this.columns, 0, 0);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Right column count\n */\n Grid.prototype.getFrozenRightColumnsCount = function () {\n return this.frozenRightCount || this.rightcount;\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Left column\n */\n Grid.prototype.getFrozenLeftColumnsCount = function () {\n return this.frozenLeftCount || this.leftcount;\n };\n /**\n * @hidden\n * @returns {number} Returns the movable column count\n */\n Grid.prototype.getMovableColumnsCount = function () {\n return this.movableCount || this.movablecount;\n };\n Grid.prototype.updateFrozenColumnsWidth = function () {\n if (this.isFrozenGrid() && !this.enableColumnVirtualization) {\n var gcol = this.getColumns();\n var isAutoWidth = true;\n var autoCol_1 = 0;\n var difference_1 = 0;\n var autoWidth_1 = 0;\n var _loop_2 = function (i) {\n var col = gcol[parseInt(i.toString(), 10)];\n if (isNullOrUndefined(col.width) && (col.freeze === 'Left' || col.freeze === 'Right' || col.freeze === 'Fixed' || col.isFrozen)) {\n col.width = Math.max(200, col.minWidth ? parseFloat(col.minWidth.toString()) : 0);\n }\n if (col.width === 'auto' && (col.freeze === 'Left' || col.freeze === 'Right' || col.freeze === 'Fixed' || col.isFrozen)) {\n var tWidth_1 = 0;\n if (isAutoWidth) {\n gcol.filter(function (cols) {\n if (cols.visible) {\n if (cols.width === 'auto') {\n autoCol_1++;\n }\n if (cols.width !== 'auto') {\n var width = !isNullOrUndefined(cols.width) ? parseFloat(cols.width.toString()) :\n Math.max(200, cols.minWidth ? parseFloat(cols.minWidth.toString()) : 0);\n tWidth_1 += width;\n }\n }\n });\n var gWidth = this_2.isPercentageWidthGrid() || this_2.width === 'auto' ? this_2.element.getBoundingClientRect().width :\n parseFloat(this_2.width.toString());\n difference_1 = this_2.height === 'auto' ? gWidth - tWidth_1 : ((gWidth - tWidth_1) - getScrollBarWidth());\n if (difference_1 < 0) {\n difference_1 = 0;\n }\n autoWidth_1 = parseFloat((difference_1 / autoCol_1).toString());\n gcol.filter(function (col) {\n if (col.visible) {\n if (col.minWidth && parseFloat(col.minWidth.toString()) > autoWidth_1) {\n difference_1 = difference_1 - parseFloat(col.minWidth.toString());\n autoCol_1--;\n }\n }\n });\n isAutoWidth = false;\n }\n if (col.minWidth && parseFloat(col.minWidth.toString()) > autoWidth_1) {\n col.width = parseFloat(col.minWidth.toString());\n }\n else {\n col.width = difference_1 / autoCol_1;\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < gcol.length; i++) {\n _loop_2(i);\n }\n }\n };\n Grid.prototype.refreshSplitFrozenColumn = function () {\n this.splitFrozenCount(this.columns);\n this.updateFrozenColumnsWidth();\n this.isAutoGenerateColumns = true;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setFrozenCount = function () {\n this.frozenLeftCount = this.frozenRightCount = this.movableCount = 0;\n this.visibleFrozenLeft = this.visibleFrozenRight = this.visibleMovable = 0;\n this.frozenLeftColumns = [];\n this.frozenRightColumns = [];\n this.movableColumns = [];\n this.fixedColumns = [];\n this.splitFrozenCount(this.columns);\n this.leftcount = this.frozenLeftCount;\n this.rightcount = this.frozenRightCount;\n this.movablecount = this.movableCount;\n // if (this.frozenColumns && (this.frozenLeftCount || this.frozenRightCount)) {\n // this.setProperties({ frozenColumns: 0 }, true);\n // }\n if (this.frozenLeftCount && !this.frozenRightCount) {\n this.frozenName = 'Left';\n }\n else if (this.frozenRightCount && !this.frozenLeftCount) {\n this.frozenName = 'Right';\n }\n else if (this.frozenLeftCount && this.frozenRightCount) {\n this.frozenName = 'Left-Right';\n }\n else if (this.frozenColumns || this.frozenRows) {\n this.frozenName = 'Left';\n }\n else {\n this.frozenName = undefined;\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen left count\n */\n Grid.prototype.getVisibleFrozenLeftCount = function () {\n return this.visibleFrozenLeft;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen Right count\n */\n Grid.prototype.getVisibleFrozenRightCount = function () {\n return this.visibleFrozenRight;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible movable count\n */\n Grid.prototype.getVisibleMovableCount = function () {\n return this.visibleMovable;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenRightColumns = function () {\n return this.frozenRightColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenLeftColumns = function () {\n return this.frozenLeftColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getMovableColumns = function () {\n return this.movableColumns;\n };\n Grid.prototype.splitStackedColumns = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.splitStackedColumns(columns[parseInt(i.toString(), 10)].columns);\n }\n else {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenLeft++;\n }\n this.leftcount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenRight++;\n }\n this.rightcount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenFixed++;\n }\n this.fixedcount++;\n }\n else {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleMovable++;\n }\n this.movablecount++;\n }\n }\n }\n };\n Grid.prototype.pushStackedColumns = function (columns, index, arr, col, stackedcol) {\n arr[parseInt(index.toString(), 10)] = col.headerText;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n index = index + 1;\n this.pushStackedColumns(columns[parseInt(i.toString(), 10)].columns, index, arr, columns[parseInt(i.toString(), 10)], stackedcol);\n index = index - 1;\n }\n else {\n var stockCol = [];\n stockCol = arr.slice().slice(0, index + 1);\n if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n this.stackedLeft.push(stockCol);\n this.stackedarrayLeft.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n this.stackedRight.push(stockCol);\n this.stackedarrayRight.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n this.stackedFixed.push(stockCol);\n this.stackedarrayFixed.push(columns[parseInt(i.toString(), 10)]);\n }\n else {\n this.stackedMovable.push(stockCol);\n this.stackedarrayMovable.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n Grid.prototype.pushallcol = function (text, text1, col, columns, isTrue) {\n if (col.headerText === text1) {\n if (isTrue) {\n col.columns.push(columns);\n }\n else {\n col.columns.push({ headerText: text, columns: [] });\n }\n }\n else {\n if (col.columns && col.columns.length) {\n for (var i = 0; i < col.columns.length; i++) {\n this.pushallcol(text, text1, col.columns[parseInt(i.toString(), 10)], columns, isTrue);\n }\n }\n }\n };\n Grid.prototype.resetStackedColumns = function (headercol, gridcolumns, freeze) {\n var col = {};\n var tempHead = [];\n for (var i = 1; i <= headercol.length; i++) {\n var firstcol = headercol[i - 1];\n for (var j = 0; j < firstcol.length; j++) {\n if (!col.columns && i === 1) {\n col = { headerText: firstcol[parseInt(j.toString(), 10)], columns: [] };\n tempHead.push(firstcol[parseInt(j.toString(), 10)]);\n }\n else {\n if (tempHead.indexOf(firstcol[parseInt(j.toString(), 10)]) === -1) {\n this.pushallcol(firstcol[parseInt(j.toString(), 10)], firstcol[j - 1], col);\n tempHead.push(firstcol[parseInt(j.toString(), 10)]);\n }\n }\n if (j === firstcol.length - 1) {\n this.pushallcol(null, firstcol[parseInt(j.toString(), 10)], col, gridcolumns[i - 1], true);\n var count = 0;\n while (count !== headercol.length - 1 && i !== headercol.length) {\n if (firstcol.toString() === headercol[parseInt(i.toString(), 10)].toString()) {\n i++;\n this.pushallcol(null, firstcol[parseInt(j.toString(), 10)], col, gridcolumns[i - 1], true);\n }\n count++;\n }\n }\n }\n }\n if (freeze === 'Left') {\n this.frozenLeftColumns.push(col);\n }\n else if (freeze === 'Right') {\n this.frozenRightColumns.push(col);\n }\n else {\n this.movableColumns.push(col);\n }\n };\n Grid.prototype.splitFrozenCount = function (columns) {\n if (this.frozenColumns || (this.changedProperties && this.changedProperties.frozenColumns === 0)) {\n var cols = !this.enableColumnVirtualization || (this.enableColumnVirtualization && this.isPreparedFrozenColumns) ?\n this.enableColumnVirtualization && this.columnModel && this.columnModel.length ? this.columnModel :\n this.getColumns() : this.columns;\n if (!this.changedProperties || (this.changedProperties && !this.changedProperties.frozenColumns)) {\n for (var i = 0; i < cols.length; i++) {\n if (this.frozenColumns > i) {\n cols[parseInt(i.toString(), 10)].freeze = 'Left';\n }\n else if (cols[parseInt(i.toString(), 10)].freeze === 'Right' || cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n cols[parseInt(i.toString(), 10)].freeze = cols[parseInt(i.toString(), 10)].freeze;\n }\n else {\n cols[parseInt(i.toString(), 10)].freeze = undefined;\n }\n }\n }\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.leftcount = 0;\n this.rightcount = 0;\n this.movablecount = 0;\n this.fixedcount = 0;\n var arr = [];\n this.splitStackedColumns(columns[parseInt(i.toString(), 10)].columns);\n if (this.leftcount && !this.rightcount && !this.movablecount && !this.fixedcount) {\n this.frozenLeftCount += this.leftcount;\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (this.rightcount && !this.leftcount && !this.movablecount && !this.fixedcount) {\n this.frozenRightCount += this.rightcount;\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (this.movablecount && !this.leftcount && !this.rightcount && !this.fixedcount) {\n this.movableCount += this.movablecount;\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (this.fixedcount && !this.leftcount && !this.rightcount && !this.movablecount) {\n this.fixedCount += this.fixedcount;\n this.fixedColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount += this.movablecount;\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else {\n this.frozenLeftCount += this.leftcount;\n this.frozenRightCount += this.rightcount;\n this.movableCount += this.movablecount;\n this.fixedCount += this.fixedcount;\n this.leftcount = 0;\n this.rightcount = 0;\n this.movablecount = 0;\n this.fixedcount = 0;\n this.stackedLeft = [];\n this.stackedRight = [];\n this.stackedFixed = [];\n this.stackedMovable = [];\n this.stackedarrayLeft = [];\n this.stackedarrayRight = [];\n this.stackedarrayFixed = [];\n this.stackedarrayMovable = [];\n this.pushStackedColumns(columns[parseInt(i.toString(), 10)].columns, 0, arr, columns[parseInt(i.toString(), 10)], { headerText: columns[parseInt(i.toString(), 10)].headerText, columns: [] });\n if (this.stackedarrayLeft.length) {\n this.resetStackedColumns(this.stackedLeft, this.stackedarrayLeft, 'Left');\n }\n if (this.stackedarrayRight.length) {\n this.resetStackedColumns(this.stackedRight, this.stackedarrayRight, 'Right');\n }\n if (this.stackedarrayFixed.length) {\n this.resetStackedColumns(this.stackedFixed, this.stackedarrayFixed, 'Fixed');\n }\n if (this.stackedarrayMovable.length) {\n this.resetStackedColumns(this.stackedMovable, this.stackedarrayMovable, 'Movable');\n }\n this.stackedLeft = [];\n this.stackedRight = [];\n this.stackedMovable = [];\n this.stackedFixed = [];\n this.stackedarrayLeft = [];\n this.stackedarrayRight = [];\n this.stackedarrayMovable = [];\n this.stackedarrayFixed = [];\n }\n }\n else {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenRight++;\n }\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenRightCount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenLeft++;\n }\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenLeftCount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n this.fixedColumns.push(columns[parseInt(i.toString(), 10)]);\n this.fixedCount++;\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount++;\n }\n else {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleMovable++;\n }\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount++;\n }\n }\n }\n if (this.frozenLeftColumns.length) {\n var cols = this.frozenLeftColumns[this.frozenLeftColumns.length - 1];\n this.removeBorder(this.frozenLeftColumns);\n this.frozenLeftBorderColumns(cols instanceof Column ? this.lastVisibleLeftCol(this.frozenLeftColumns) : cols);\n }\n if (this.frozenRightColumns.length) {\n var cols = this.frozenRightColumns[0];\n this.removeBorder(this.frozenRightColumns);\n this.frozenRightBorderColumns(cols instanceof Column ? this.firstVisibleRightCol(this.frozenRightColumns) : cols);\n }\n if ((this.frozenLeftColumns.length || this.frozenRightColumns.length) && this.freezeColumnRefresh) {\n var cols = (this.frozenLeftColumns.concat(this.movableColumns)).concat(this.frozenRightColumns);\n this.setProperties({ columns: cols }, true);\n this.freezeColumnRefresh = false;\n }\n };\n Grid.prototype.removeBorder = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns && columns[parseInt(i.toString(), 10)].columns.length) {\n if (columns[parseInt(i.toString(), 10)].border === 'Right' ||\n columns[parseInt(i.toString(), 10)].border === 'Left') {\n columns[parseInt(i.toString(), 10)].border = undefined;\n }\n this.removeBorder(columns[parseInt(i.toString(), 10)].columns);\n }\n else {\n if (columns[parseInt(i.toString(), 10)].border === 'Right' ||\n columns[parseInt(i.toString(), 10)].border === 'Left') {\n columns[parseInt(i.toString(), 10)].border = undefined;\n }\n }\n }\n };\n Grid.prototype.isVisibleColumns = function (column, arr) {\n if (column.columns && column.columns.length) {\n for (var i = 0; i < column.columns.length; i++) {\n this.isVisibleColumns(column.columns[parseInt(i.toString(), 10)], arr);\n if (column.columns[parseInt(i.toString(), 10)].visible &&\n isNullOrUndefined(column.columns[parseInt(i.toString(), 10)].columns) &&\n (!isNullOrUndefined(column.columns[parseInt(i.toString(), 10)].freeze) ||\n column.columns[parseInt(i.toString(), 10)].isFrozen)) {\n arr.push('true');\n }\n }\n }\n else {\n if (column.visible && (!isNullOrUndefined(column.freeze) || column.isFrozen)) {\n arr.push('true');\n }\n }\n };\n Grid.prototype.lastVisibleLeftCol = function (columns) {\n var column;\n for (var i = columns.length - 1; i >= 0; i--) {\n var arr = [];\n this.isVisibleColumns(columns[parseInt(i.toString(), 10)], arr);\n if (columns[parseInt(i.toString(), 10)].visible && arr.indexOf('true') !== -1) {\n column = columns[parseInt(i.toString(), 10)];\n break;\n }\n }\n return column;\n };\n Grid.prototype.firstVisibleRightCol = function (columns) {\n var column;\n for (var i = 0; i < columns.length; i++) {\n var arr = [];\n this.isVisibleColumns(columns[parseInt(i.toString(), 10)], arr);\n if (columns[parseInt(i.toString(), 10)].visible && arr.indexOf('true') !== -1) {\n column = columns[parseInt(i.toString(), 10)];\n break;\n }\n }\n return column;\n };\n Grid.prototype.frozenLeftBorderColumns = function (columns) {\n if (isNullOrUndefined(columns)) {\n return;\n }\n if (columns.columns && columns.columns.length) {\n columns.border = 'Left';\n var cols = columns.columns[columns.columns.length - 1];\n this.frozenLeftBorderColumns(cols instanceof Column && cols.columns ? this.lastVisibleLeftCol(columns.columns) : cols);\n }\n else {\n columns.border = 'Left';\n }\n };\n Grid.prototype.frozenRightBorderColumns = function (columns) {\n if (isNullOrUndefined(columns)) {\n return;\n }\n if (columns.columns && columns.columns.length) {\n columns.border = 'Right';\n var cols = columns.columns[0];\n this.frozenRightBorderColumns(cols instanceof Column && cols.columns ? this.firstVisibleRightCol(columns.columns) : cols);\n }\n else {\n columns.border = 'Right';\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible frozen columns count\n */\n Grid.prototype.getVisibleFrozenColumns = function () {\n return this.getVisibleFrozenColumnsCount() + this.getVisibleFrozenCount(this.columns, 0);\n };\n /**\n * Get the current Filter operator and field.\n *\n * @returns {FilterUI} Returns the filter UI\n */\n Grid.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n Grid.prototype.getVisibleFrozenColumnsCount = function () {\n var visibleFrozenColumns = 0;\n var columns = this.columnModel;\n for (var i = 0; i < this.frozenColumns; i++) {\n if (columns[parseInt(i.toString(), 10)].visible) {\n visibleFrozenColumns++;\n }\n }\n if ((this.frozenLeftCount || this.leftcount) || (this.frozenRightCount || this.rightcount)) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible && (columns[parseInt(i.toString(), 10)].freeze === 'Left'\n || columns[parseInt(i.toString(), 10)].freeze === 'Right')) {\n visibleFrozenColumns++;\n }\n }\n }\n return visibleFrozenColumns;\n };\n Grid.prototype.getVisibleFrozenCount = function (cols, cnt) {\n if ((!this.frozenLeftCount && !this.leftcount) && (!this.frozenRightCount || !this.rightcount)) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n cnt = this.getVisibleFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].isFrozen && cols[parseInt(i.toString(), 10)].visible) {\n cnt++;\n }\n }\n }\n }\n return cnt;\n };\n Grid.prototype.getFrozenCount = function (cols, cnt, index) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n cnt = this.getFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt, index);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].isFrozen && index > this.frozenColumns - 1) {\n cnt++;\n }\n index++;\n }\n }\n return cnt;\n };\n /**\n * Navigates to the specified target page.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n *\n * @returns {void}\n */\n Grid.prototype.goToPage = function (pageNo) {\n if (this.pagerModule) {\n this.pagerModule.goToPage(pageNo);\n }\n };\n /**\n * Defines the text of external message.\n *\n * @param {string} message - Defines the message to update.\n *\n * @returns {void}\n */\n Grid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule && !this.pagerTemplate) {\n this.pagerModule.updateExternalMessage(message);\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n *\n * @returns {void}\n */\n Grid.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n if (this.sortModule) {\n this.sortModule.sortColumn(columnName, direction, isMultiSort);\n }\n };\n /**\n * Remove the existing columns along with the grid actions like sorting, filtering, searching, grouping, aggregate, etc., and grid will refresh with new columns based on the updated new data source.\n * > * If no columns are specified while changing the data source, then the columns are auto generated in the Grid based on the list of columns in the updated data source.\n *\n * @param {Object | DataManager | DataResult} dataSource - Assign the new datasource.\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines columns.\n * @returns {void}\n *\n *\n * ```typescript\n * \n *
\n * \n * ```\n *\n */\n Grid.prototype.changeDataSource = function (dataSource, columns) {\n this.isChangeDataSourceCall = true;\n this.setProperties({ sortSettings: { columns: [] } }, true);\n this.setProperties({ filterSettings: { columns: [] } }, true);\n this.setProperties({ searchSettings: { key: '' } }, true);\n if (this.allowGrouping) {\n this.setProperties({ groupSettings: { columns: [] } }, true);\n }\n if (columns && columns.length) {\n this.setProperties({ columns: columns }, true);\n }\n if (dataSource) {\n if (isNullOrUndefined(columns)) {\n this.setProperties({ columns: [] }, true);\n }\n this.setProperties({ dataSource: dataSource }, true);\n }\n this.freezeRefresh();\n this.isChangeDataSourceCall = false;\n };\n /**\n * Clears all the sorted columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearSorting = function () {\n if (this.sortModule) {\n this.sortModule.clearSorting();\n }\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeSortColumn = function (field) {\n if (this.sortModule) {\n this.sortModule.removeSortColumn(field);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.clearGridActions = function () {\n this.setProperties({ sortSettings: { columns: [] } }, true);\n this.setProperties({ filterSettings: { columns: [] } }, true);\n this.setProperties({ searchSettings: { key: '' } }, true);\n if (this.allowGrouping) {\n this.setProperties({ groupSettings: { columns: [] } }, false);\n }\n else {\n this.freezeRefresh();\n }\n };\n /**\n * Filters grid row by column name with the given options.\n *\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the grid filters the records with exact match. if false, it filters case\n * insensitive records (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true,\n * then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n *\n * @returns {void}\n */\n Grid.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n if (this.filterModule) {\n this.filterModule.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n }\n };\n /**\n * Clears all the filtered rows of the Grid.\n *\n * @param {string[]} fields - Defines the Fields\n * @returns {void}\n */\n Grid.prototype.clearFiltering = function (fields) {\n if (this.filterModule) {\n this.filterModule.clearFiltering(fields);\n }\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n if (this.filterModule) {\n this.filterModule.removeFilteredColsByField(field, isClearFilterBar);\n }\n };\n /**\n * Selects a row by given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n *\n * @returns {void}\n */\n Grid.prototype.selectRow = function (index, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectRow(index, isToggle);\n }\n };\n /**\n * Selects a collection of rows by indexes.\n *\n * @param {number[]} rowIndexes - Specifies the row indexes.\n *\n * @returns {void}\n */\n Grid.prototype.selectRows = function (rowIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectRows(rowIndexes);\n }\n };\n /**\n * Deselects the current selected rows and cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearSelection();\n }\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n *\n * @returns {void}\n */\n Grid.prototype.selectCell = function (cellIndex, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectCell(cellIndex, isToggle);\n }\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n *\n * @returns {void}\n */\n Grid.prototype.selectCellsByRange = function (startIndex, endIndex) {\n this.selectionModule.selectCellsByRange(startIndex, endIndex);\n };\n /**\n * Searches Grid records using the given key.\n * You can customize the default search option by using the\n * [`searchSettings`](./#searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n *\n * @returns {void}\n */\n Grid.prototype.search = function (searchString) {\n if (this.searchModule) {\n this.searchModule.search(searchString);\n }\n };\n /**\n * By default, prints all the pages of the Grid and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./#printmode).\n *\n * @returns {void}\n */\n Grid.prototype.print = function () {\n if (this.printModule) {\n this.printModule.print();\n }\n };\n /**\n * Delete a record with Given options. If fieldname and data is not given then grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldname - Defines the primary key field, 'Name of the column'.\n * @param {Object} data - Defines the JSON data of the record to be deleted.\n * @returns {void}\n */\n Grid.prototype.deleteRecord = function (fieldname, data) {\n if (this.editModule) {\n this.editModule.deleteRecord(fieldname, data);\n }\n };\n /**\n * Starts edit the selected row. At least one row must be selected before invoking this method.\n * `editSettings.allowEditing` should be true.\n * {% codeBlock src='grid/startEdit/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n Grid.prototype.startEdit = function () {\n if (this.editModule) {\n this.editModule.startEdit();\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n Grid.prototype.endEdit = function () {\n if (this.editModule) {\n this.editModule.endEdit();\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n Grid.prototype.closeEdit = function () {\n if (this.editModule) {\n this.editModule.closeEdit();\n }\n };\n /**\n * Adds a new record to the Grid. Without passing parameters, it adds empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n * @returns {void}\n */\n Grid.prototype.addRecord = function (data, index) {\n if (this.editModule) {\n this.editModule.addRecord(data, index);\n }\n };\n /**\n * Delete any visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n Grid.prototype.deleteRow = function (tr) {\n if (this.editModule) {\n this.editModule.deleteRow(tr);\n }\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n *\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n *\n * @returns {void}\n */\n Grid.prototype.editCell = function (index, field) {\n if (this.editModule) {\n this.editModule.editCell(index, field);\n }\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n * {% codeBlock src='grid/saveCell/index.md' %}{% endcodeBlock %}\n */\n Grid.prototype.saveCell = function () {\n if (this.editModule) {\n this.editModule.saveCell();\n }\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n *\n * @returns {void}\n */\n Grid.prototype.updateCell = function (rowIndex, field, value) {\n if (this.editModule) {\n this.editModule.updateCell(rowIndex, field, value);\n }\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * {% codeBlock src='grid/updateRow/index.md' %}{% endcodeBlock %}\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n *\n * @returns {void}\n */\n Grid.prototype.updateRow = function (index, data) {\n if (this.editModule) {\n this.editModule.updateRow(index, data);\n }\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} Returns the batch changes\n */\n Grid.prototype.getBatchChanges = function () {\n if (this.editModule) {\n return this.editModule.getBatchChanges();\n }\n return {};\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n *\n * @returns {void}\n */\n Grid.prototype.enableToolbarItems = function (items, isEnable) {\n if (this.toolbarModule) {\n this.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * Copy the selected rows or cells data into clipboard.\n *\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n * @returns {void}\n */\n Grid.prototype.copy = function (withHeader) {\n if (this.clipboardModule) {\n this.clipboardModule.copy(withHeader);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.recalcIndentWidth = function () {\n var _this_1 = this;\n if (!this.getHeaderTable().querySelector('.e-emptycell')) {\n return;\n }\n if ((!this.groupSettings.columns.length && !this.isDetail() && !this.isRowDragable()) ||\n this.getHeaderTable().querySelector('.e-emptycell').getAttribute('indentRefreshed') ||\n !this.getContentTable()) {\n return;\n }\n var indentWidth = this.getHeaderTable().querySelector('.e-emptycell').parentElement.offsetWidth;\n var headerCol = [].slice.call(this.getHeaderTable().querySelector(literals.colGroup).childNodes);\n var contentCol = [].slice.call(this.getContentTable().querySelector(literals.colGroup).childNodes);\n var perPixel = indentWidth / 30;\n var i = this.getFrozenMode() === 'Right' ? this.groupSettings.columns.length + this.getColumns().length : 0;\n var parentOffset = this.element.offsetWidth;\n var applyWidth = function (index, width) {\n if (ispercentageWidth(_this_1)) {\n var newWidth = (width / parentOffset * 100).toFixed(1) + '%';\n headerCol[parseInt(index.toString(), 10)].style.width = newWidth;\n contentCol[parseInt(index.toString(), 10)].style.width = newWidth;\n }\n else {\n headerCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n contentCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n }\n _this_1.notify(events.columnWidthChanged, { index: index, width: width });\n };\n if (perPixel >= 1) {\n indentWidth = (30 / perPixel);\n }\n if (indentWidth < 1) {\n indentWidth = 1;\n }\n if (this.enableColumnVirtualization || this.isAutoGen || (this.columns.length === this.groupSettings.columns.length)) {\n indentWidth = 30;\n }\n while (i < this.groupSettings.columns.length) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isDetail()) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isRowDragable()) {\n applyWidth(i, indentWidth);\n }\n this.isAutoGen = false;\n this.getHeaderTable().querySelector('.e-emptycell').setAttribute('indentRefreshed', 'true');\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.resetIndentWidth = function () {\n if (ispercentageWidth(this)) {\n this.getHeaderTable().querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.widthService.setWidthToColumns();\n this.recalcIndentWidth();\n if (this.autoFit) {\n this.preventAdjustColumns();\n }\n }\n if ((this.width === 'auto' || typeof (this.width) === 'string' && this.width.indexOf('%') !== -1)\n && this.getColumns().filter(function (col) { return (!col.width || col.width === 'auto') && col.minWidth; }).length > 0) {\n var tgridWidth = this.widthService.getTableWidth(this.getColumns());\n this.widthService.setMinwidthBycalculation(tgridWidth);\n }\n if (this.isFrozenGrid() && this.enableColumnVirtualization && this.widthService) {\n this.widthService.refreshFrozenScrollbar();\n }\n if (this.allowTextWrap && this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n if (this.frozenRows && this.scrollModule) {\n this.scrollModule.resizeFrozenRowBorder();\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns isRowDragable\n */\n Grid.prototype.isRowDragable = function () {\n return this.allowRowDragAndDrop && !this.rowDropSettings.targetID;\n };\n /**\n * Changes the Grid column positions by field names.\n *\n * @param {string} fromFName - Defines the origin field name.\n * @param {string} toFName - Defines the destination field name.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumns = function (fromFName, toFName) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumns(fromFName, toFName);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByIndex multiple times,\n * then you won't get the same results every time.\n *\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByIndex(fromIndex, toIndex);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByTargetIndex multiple times,\n * then you will get the same results every time.\n *\n * @param {string} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByTargetIndex(fieldName, toIndex);\n }\n };\n /**\n * Changes the Grid Row position with given indexes.\n *\n * @param {number} fromIndexes - Defines the origin Indexes.\n * @param {number} toIndex - Defines the destination Index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderRows = function (fromIndexes, toIndex) {\n if (this.rowDragAndDropModule) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex);\n }\n };\n /**\n * @param {ReturnType} e - Defines the Return type\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshDataSource = function (e) {\n this.notify('refreshdataSource', e);\n };\n /**\n * @param {boolean} enable -Defines the enable\n * @returns {void}\n * @hidden\n */\n Grid.prototype.disableRowDD = function (enable) {\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n var headerRows = headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell');\n var rows = this.getRows();\n var disValue = enable ? 'none' : '';\n setStyleAttribute(headerTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n setStyleAttribute(contentTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n for (var i = 0; i < this.getRows().length; i++) {\n var ele = rows[parseInt(i.toString(), 10)].firstElementChild;\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n for (var j = 0; j < headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell').length; j++) {\n var ele = headerRows[parseInt(j.toString(), 10)];\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n };\n /**\n * Changes the column width to automatically fit its content to ensure that the width shows the content without wrapping/hiding.\n * > * This method ignores the hidden columns.\n * > * Uses the `autoFitColumns` method in the `dataBound` event to resize at initial rendering.\n *\n * @param {string |string[]} fieldNames - Defines the column names.\n * @returns {void}\n *\n *\n * ```typescript\n *
\n * \n * ```\n *\n */\n Grid.prototype.autoFitColumns = function (fieldNames) {\n if (this.resizeModule) {\n this.resizeModule.autoFitColumns(fieldNames);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.preventAdjustColumns = function () {\n if ((this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var columns = this.getColumns();\n var headerTable = this.getHeaderTable();\n var tableWidth = 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible) {\n if (this.groupSettings.columns.length\n && this.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) > -1) {\n var headerCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll(':not(.e-group-intent):not(.e-detail-intent):not(.e-drag-intent)'));\n if (headerCol[parseInt(i.toString(), 10)].style.display === 'none') {\n continue;\n }\n }\n if (columns[parseInt(i.toString(), 10)].width) {\n tableWidth += parseFloat(columns[parseInt(i.toString(), 10)].width.toString());\n }\n else {\n tableWidth = 0;\n break;\n }\n }\n }\n if (tableWidth) {\n var percentageWidth = this.isPercentageWidthGrid();\n var unit = this.widthUnit(percentageWidth);\n var contentTable = this.getContentTable();\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var indentWidth = this.defaultIndentWidth(percentageWidth);\n var indentWidthUnitFormat = indentWidth.toString() + unit;\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n var contentIndentCol = [].slice.call(contentTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n for (var i = 0; i < headerIndentCol.length; i++) {\n headerIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n contentIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n tableWidth += indentWidth;\n }\n }\n if ((percentageWidth && tableWidth < 100)\n || (!percentageWidth && tableWidth < contentTable.parentElement.clientWidth)) {\n if (!isNullOrUndefined(contentTable.querySelector('.e-emptyrow'))) {\n addClass([headerTable], ['e-tableborder']);\n removeClass([contentTable], ['e-tableborder']);\n }\n else {\n addClass([headerTable, contentTable], ['e-tableborder']);\n }\n }\n var tableWidthUnitFormat = tableWidth.toString() + unit;\n headerTable.style.setProperty('width', tableWidthUnitFormat);\n contentTable.style.setProperty('width', tableWidthUnitFormat);\n }\n else {\n this.restoreAdjustColumns();\n }\n };\n Grid.prototype.restoreAdjustColumns = function () {\n if ((this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n removeClass([headerTable, contentTable], ['e-tableborder']);\n headerTable.style.removeProperty('width');\n contentTable.style.removeProperty('width');\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var percentageWidth = this.isPercentageWidthGrid();\n var indentWidthUnitFormat_1 = this.defaultIndentWidth(percentageWidth).toString() + this.widthUnit(percentageWidth);\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n headerIndentCol.forEach(function (element) {\n element.style.setProperty('width', indentWidthUnitFormat_1);\n });\n headerTable.querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.recalcIndentWidth();\n }\n };\n Grid.prototype.widthUnit = function (percentageWidth) {\n return percentageWidth ? '%' : 'px';\n };\n Grid.prototype.defaultIndentWidth = function (percentageWidth) {\n return percentageWidth ? parseFloat((30 / this.element.offsetWidth * 100).toFixed(1)) : 30;\n };\n Grid.prototype.isPercentageWidthGrid = function () {\n return this.getColumns()[0].width.toString().indexOf('%') > -1;\n };\n /**\n * @param {number} x - Defines the number\n * @param {number} y - Defines the number\n * @param {Element} target - Defines the Element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createColumnchooser = function (x, y, target) {\n if (this.columnChooserModule) {\n this.columnChooserModule.renderColumnChooser(x, y, target);\n }\n };\n Grid.prototype.initializeServices = function () {\n this.serviceLocator.register('widthService', this.widthService = new ColumnWidthService(this));\n this.serviceLocator.register('cellRendererFactory', new CellRendererFactory);\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n this.serviceLocator.register('localization', this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale));\n this.serviceLocator.register('valueFormatter', this.valueFormatterService = new ValueFormatter(this.locale));\n this.serviceLocator.register('showHideService', this.showHider = new ShowHide(this));\n this.serviceLocator.register('ariaService', this.ariaService = new AriaService());\n this.serviceLocator.register('focus', this.focusModule = new FocusStrategy(this));\n };\n Grid.prototype.processModel = function () {\n var gCols = this.groupSettings.columns;\n var sCols = this.sortSettings.columns;\n var flag;\n var j;\n if (this.allowGrouping) {\n var _loop_3 = function (i, len) {\n j = 0;\n for (var sLen = sCols.length; j < sLen; j++) {\n if (sCols[parseInt(j.toString(), 10)].field === gCols[parseInt(i.toString(), 10)]) {\n flag = true;\n break;\n }\n }\n if (!flag) {\n sCols.push({ field: gCols[parseInt(i.toString(), 10)], direction: 'Ascending', isFromGroup: true });\n }\n else {\n if (this_3.allowSorting) {\n this_3.sortedColumns.push(sCols[parseInt(j.toString(), 10)].field);\n }\n else {\n sCols[parseInt(j.toString(), 10)].direction = 'Ascending';\n }\n }\n if (!this_3.groupSettings.showGroupedColumn) {\n var column = this_3.enableColumnVirtualization ?\n this_3.columns.filter(function (c) { return c.field === gCols[parseInt(i.toString(), 10)]; })[0]\n : this_3.getColumnByField(gCols[parseInt(i.toString(), 10)]);\n if (column) {\n column.visible = false;\n }\n else {\n this_3.log('initial_action', { moduleName: 'group', columnName: gCols[parseInt(i.toString(), 10)] });\n }\n }\n };\n var this_3 = this;\n for (var i = 0, len = gCols.length; i < len; i++) {\n _loop_3(i, len);\n }\n }\n if (!gCols.length) {\n for (var i = 0; i < sCols.length; i++) {\n this.sortedColumns.push(sCols[parseInt(i.toString(), 10)].field);\n }\n }\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n this.emptyRecordTemplateFn = templateCompiler(this.emptyRecordTemplate);\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n this.editTemplateFn = templateCompiler(this.editSettings.template);\n this.editHeaderTemplateFn = templateCompiler(this.editSettings.headerTemplate);\n this.editFooterTemplateFn = templateCompiler(this.editSettings.footerTemplate);\n if (!isNullOrUndefined(this.parentDetails)) {\n var value = isNullOrUndefined(this.parentDetails.parentKeyFieldValue) ? 'undefined' :\n this.parentDetails.parentKeyFieldValue;\n this.query.where(this.queryString, 'equal', value, true);\n }\n this.initForeignColumn();\n };\n Grid.prototype.initForeignColumn = function () {\n if (this.isForeignKeyEnabled(this.getColumns())) {\n this.notify(events.initForeignKeyColumn, this.getForeignKeyColumns());\n }\n };\n Grid.prototype.enableVerticalRendering = function () {\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n else {\n this.element.classList.remove('e-row-responsive');\n }\n };\n Grid.prototype.gridRender = function () {\n var _a;\n this.updateRTL();\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n if (this.enableHover) {\n this.element.classList.add('e-gridhover');\n }\n if (Browser.isDevice) {\n this.element.classList.add('e-device');\n }\n if (this.rowHeight) {\n this.element.classList.add('e-grid-min-height');\n }\n if (this.cssClass) {\n if (this.cssClass.indexOf(' ') !== -1) {\n (_a = this.element.classList).add.apply(_a, this.cssClass.split(' '));\n }\n else {\n this.element.classList.add(this.cssClass);\n }\n }\n // If the below if statement is removed, then drag and drop between grids will not work in firefox browser.\n if (this.allowRowDragAndDrop && this.rowDropSettings.targetID && Browser.info.name === 'mozilla') {\n this.element.classList.add('e-disableuserselect');\n }\n classList(this.element, ['e-responsive', 'e-default'], []);\n var rendererFactory = this.serviceLocator.getService('rendererFactory');\n this.headerModule = rendererFactory.getRenderer(RenderType.Header);\n this.contentModule = rendererFactory.getRenderer(RenderType.Content);\n this.printModule = new Print(this, this.scrollModule);\n this.clipboardModule = new Clipboard(this, this.serviceLocator);\n this.renderModule.render();\n this.eventInitializer();\n this.createGridPopUpElement();\n this.widthService.setWidthToColumns();\n this.updateGridLines();\n this.applyTextWrap();\n this.createTooltip(); //for clip mode ellipsis\n this.enableBoxSelection();\n };\n Grid.prototype.dataReady = function () {\n this.scrollModule.setWidth();\n this.scrollModule.setHeight();\n if (this.height !== 'auto') {\n this.scrollModule.setPadding();\n }\n };\n Grid.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Grid.prototype.createGridPopUpElement = function () {\n var popup = this.createElement('div', { className: 'e-gridpopup', styles: 'display:none;' });\n var content = this.createElement('div', { className: literals.content, attrs: { tabIndex: '-1' } });\n append([content, this.createElement('div', { className: 'e-uptail e-tail' })], popup);\n content.appendChild(this.createElement('span'));\n append([content, this.createElement('div', { className: 'e-downtail e-tail' })], popup);\n this.element.appendChild(popup);\n };\n Grid.prototype.updateGridLines = function () {\n classList(this.element, [], ['e-verticallines', 'e-horizontallines', 'e-hidelines', 'e-bothlines']);\n switch (this.gridLines) {\n case 'Horizontal':\n this.element.classList.add('e-horizontallines');\n break;\n case 'Vertical':\n this.element.classList.add('e-verticallines');\n break;\n case 'None':\n this.element.classList.add('e-hidelines');\n break;\n case 'Both':\n this.element.classList.add('e-bothlines');\n break;\n }\n this.updateResizeLines();\n };\n Grid.prototype.updateResizeLines = function () {\n if (this.allowResizing &&\n !(this.gridLines === 'Vertical' || this.gridLines === 'Both')) {\n this.element.classList.add('e-resize-lines');\n }\n else {\n this.element.classList.remove('e-resize-lines');\n }\n };\n /**\n * The function is used to apply text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyTextWrap = function () {\n if (this.allowTextWrap) {\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n switch (this.textWrapSettings.wrapMode) {\n case 'Header':\n wrap(this.element, false);\n wrap(this.getContent(), false);\n wrap(headerRows, true);\n break;\n case 'Content':\n wrap(this.getContent(), true);\n wrap(this.element, false);\n wrap(headerRows, false);\n break;\n default:\n wrap(this.element, true);\n wrap(this.getContent(), false);\n wrap(headerRows, false);\n }\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n }\n };\n /**\n * The function is used to remove text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeTextWrap = function () {\n wrap(this.element, false);\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n wrap(headerRows, false);\n wrap(this.getContent(), false);\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n };\n /**\n * The function is used to add Tooltip to the grid cell that has ellipsiswithtooltip clip mode.\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createTooltip = function () {\n this.toolTipObj = new Tooltip({\n opensOn: 'custom',\n content: '',\n cssClass: this.cssClass ? this.cssClass : null\n }, this.element);\n };\n /** @hidden\n * @returns {void}\n */\n Grid.prototype.freezeRefresh = function () {\n if (this.enableVirtualization || this.enableInfiniteScrolling) {\n this.pageSettings.currentPage = 1;\n }\n this.componentRefresh();\n };\n Grid.prototype.getTooltipStatus = function (element) {\n var headerTable = this.getHeaderTable();\n var headerDivTag = this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical' ? 'e-gridcontent' : 'e-gridheader';\n var htable = this.createTable(headerTable, headerDivTag, 'header');\n var ctable = this.createTable(headerTable, headerDivTag, 'content');\n var table = element.classList.contains('e-headercell') ? htable : ctable;\n var ele = element.classList.contains('e-headercell') ? 'th' : 'tr';\n table.querySelector(ele).className = element.className;\n table.querySelector(ele).innerHTML = element.innerHTML;\n var width = table.querySelector(ele).getBoundingClientRect().width;\n document.body.removeChild(htable);\n document.body.removeChild(ctable);\n if ((width > element.getBoundingClientRect().width && !element.classList.contains('e-editedbatchcell')) ||\n (this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical' &&\n width > (element.getBoundingClientRect().width * 0.55) - (this.height !== 'auto' ? 16 : 0))) {\n return true;\n }\n return false;\n };\n Grid.prototype.mouseMoveHandler = function (e) {\n if (this.isEllipsisTooltip()) {\n var element = parentsUntil(e.target, 'e-ellipsistooltip');\n if (this.prevElement !== element || e.type === 'mouseout') {\n this.toolTipObj.close();\n }\n var tagName = e.target.tagName;\n var elemNames = ['A', 'BUTTON', 'INPUT'];\n if (element && e.type !== 'mouseout' && !(Browser.isDevice && elemNames.indexOf(tagName) !== -1)) {\n if (this.getTooltipStatus(element)) {\n var col = this.getColumns()[parseInt(element.getAttribute(literals.dataColIndex), 10)];\n var domSetter = col.disableHtmlEncode ? 'innerText' : 'innerHTML';\n var contentDiv = this.createElement('div');\n if (element.getElementsByClassName('e-headertext').length) {\n var innerElement = element.getElementsByClassName('e-headertext')[0];\n contentDiv[\"\" + domSetter] = this.sanitize(innerElement.innerText);\n this.toolTipObj.content = contentDiv;\n }\n else {\n contentDiv[\"\" + domSetter] = this.sanitize(element.innerText);\n this.toolTipObj.content = contentDiv;\n }\n this.prevElement = element;\n if (this.enableHtmlSanitizer) {\n this.toolTipObj.enableHtmlSanitizer = true;\n }\n if (col.disableHtmlEncode) {\n this.toolTipObj.enableHtmlParse = false;\n }\n this.toolTipObj['open'](element);\n }\n }\n }\n };\n Grid.prototype.isEllipsisTooltip = function () {\n var cols = this.getColumns();\n if (this.clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n }\n return false;\n };\n Grid.prototype.scrollHandler = function () {\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n };\n /**\n * To create table for ellipsiswithtooltip\n *\n * @param {Element} table - Defines the table\n * @param {string} tag - Defines the tag\n * @param {string} type - Defines the type\n * @returns {HTMLDivElement} Returns the HTML div ELement\n * @hidden\n */\n Grid.prototype.createTable = function (table, tag, type) {\n var myTableDiv = this.createElement('div');\n myTableDiv.className = this.element.className;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n var mySubDiv = this.createElement('div');\n mySubDiv.className = tag;\n var myTable = this.createElement('table');\n myTable.className = table.className;\n myTable.style.cssText = 'table-layout: auto;width: auto';\n var ele = (type === 'header') ? 'th' : 'td';\n var myTr = this.createElement('tr', { attrs: { role: 'row' } });\n var mytd = this.createElement(ele);\n myTr.appendChild(mytd);\n myTable.appendChild(myTr);\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n return myTableDiv;\n };\n Grid.prototype.onKeyPressed = function (e) {\n if (e.action === 'tab' || e.action === 'shiftTab') {\n this.toolTipObj.close();\n }\n };\n /**\n * Binding events to the element while component creation.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'dblclick', this.dblClickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'resize', this.resetIndentWidth, this);\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.getContent().firstElementChild, 'scroll', this.scrollHandler, this);\n EventHandler.add(this.element, 'mouseover', this.mouseMoveHandler, this);\n EventHandler.add(this.element, 'mouseout', this.mouseMoveHandler, this);\n EventHandler.add(this.getContent(), 'touchstart', this.tapEvent, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.mouseClickHandler);\n EventHandler.remove(this.element, 'touchend', this.mouseClickHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'dblclick', this.dblClickHandler);\n EventHandler.remove(this.getContent().firstElementChild, 'scroll', this.scrollHandler);\n EventHandler.remove(this.element, 'mouseover', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'mouseout', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(this.getContent(), 'touchstart', this.tapEvent);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'resize', this.resetIndentWidth);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.addListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.on(events.dataReady, this.dataReady, this);\n this.on(events.contentReady, this.recalcIndentWidth, this);\n this.on(events.headerRefreshed, this.recalcIndentWidth, this);\n this.on(events.refreshFrozenPosition, this.refreshFrozenPosition, this);\n this.on(events.refreshSplitFrozenColumn, this.refreshSplitFrozenColumn, this);\n this.dataBoundFunction = this.refreshMediaCol.bind(this);\n this.addEventListener(events.dataBound, this.dataBoundFunction);\n this.on(events.keyPressed, this.onKeyPressed, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.dataReady, this.dataReady);\n this.off(events.contentReady, this.recalcIndentWidth);\n this.off(events.headerRefreshed, this.recalcIndentWidth);\n this.on(events.refreshFrozenPosition, this.refreshFrozenPosition, this);\n this.on(events.refreshSplitFrozenColumn, this.refreshSplitFrozenColumn, this);\n this.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.off(events.keyPressed, this.onKeyPressed);\n };\n /**\n * Get current visible data of grid.\n *\n * @returns {Object[]} Returns the current view records\n *\n * @isGenericType true\n */\n Grid.prototype.getCurrentViewRecords = function () {\n if (isGroupAdaptive(this)) {\n return isNullOrUndefined(this.currentViewData.records) ?\n this.currentViewData : this.currentViewData.records;\n }\n if (this.groupSettings.enableLazyLoading) {\n return this.currentViewData;\n }\n return (this.allowGrouping && this.groupSettings.columns.length && this.currentViewData.length\n && this.currentViewData.records) ? this.currentViewData.records\n : this.currentViewData;\n };\n Grid.prototype.mouseClickHandler = function (e) {\n if (this.isChildGrid(e) || (parentsUntil(e.target, 'e-gridpopup') && e.touches) ||\n this.element.getElementsByClassName('e-cloneproperties').length || this.checkEdit(e)) {\n return;\n }\n if (((!this.allowRowDragAndDrop && (parentsUntil(e.target, literals.gridContent) ||\n e.target.tagName === 'TD')) || (!(this.allowGrouping || this.allowReordering) &&\n parentsUntil(e.target, 'e-gridheader'))) && e.touches) {\n return;\n }\n if (parentsUntil(e.target, 'e-gridheader') && this.allowRowDragAndDrop &&\n !(parentsUntil(e.target, 'e-filterbarcell')) && (e.target &&\n ['A', 'BUTTON', 'INPUT'].indexOf(e.target.tagName) === -1)) {\n e.preventDefault();\n }\n var args = this.getRowInfo(e.target);\n var cancel = 'cancel';\n args[\"\" + cancel] = false;\n var isDataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n isDataRow = rowObj ? rowObj.isDataRow : false;\n }\n if (isDataRow) {\n this.trigger(events.recordClick, args);\n }\n this.notify(events.click, e);\n };\n Grid.prototype.checkEdit = function (e) {\n var tr = parentsUntil(e.target, literals.row);\n var isEdit = this.editSettings.mode !== 'Batch' &&\n this.isEdit && tr && (tr.classList.contains(literals.editedRow) || tr.classList.contains(literals.addedRow));\n return !parentsUntil(e.target, 'e-unboundcelldiv') && (isEdit || (parentsUntil(e.target, literals.rowCell) &&\n parentsUntil(e.target, literals.rowCell).classList.contains('e-editedbatchcell')));\n };\n Grid.prototype.dblClickHandler = function (e) {\n var grid = parentsUntil(e.target, 'e-grid');\n if (isNullOrUndefined(grid) || grid.id !== this.element.id || closest(e.target, '.e-unboundcelldiv')) {\n return;\n }\n var dataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n dataRow = rowObj ? rowObj.isDataRow : false;\n }\n var args = this.getRowInfo(e.target);\n args.target = e.target;\n if (dataRow) {\n this.trigger(events.recordDoubleClick, args);\n }\n this.notify(events.dblclick, e);\n };\n Grid.prototype.focusOutHandler = function (e) {\n if (this.isChildGrid(e)) {\n return;\n }\n if (!parentsUntil(e.target, 'e-grid')) {\n this.element.querySelector('.e-gridpopup').style.display = 'None';\n }\n var filterClear = this.element.querySelector('.e-cancel:not(.e-hide)');\n if (filterClear && !filterClear.parentElement.classList.contains('e-tbar-btn')) {\n filterClear.classList.add('e-hide');\n }\n var relatedTarget = e.relatedTarget;\n var ariaOwns = relatedTarget ? relatedTarget.getAttribute('aria-owns') : null;\n if ((!relatedTarget || (!parentsUntil(relatedTarget, 'e-grid') &&\n (!isNullOrUndefined(ariaOwns) &&\n (ariaOwns)) !== e.target.getAttribute('aria-owns')))\n && !this.keyPress && this.isEdit && !Browser.isDevice) {\n if (this.editSettings.mode === 'Batch' && !(((parentsUntil(relatedTarget, 'e-ddl') || parentsUntil(relatedTarget, 'e-ddt')) &&\n parentsUntil(relatedTarget, 'e-multi-select-list-wrapper')) && parentsUntil(relatedTarget, 'e-input-group'))\n && (parentsUntil(relatedTarget, 'e-uploader') || !(relatedTarget &&\n isNullOrUndefined(parentsUntil(relatedTarget, 'e-input-group'))))) {\n this.editModule.saveCell();\n this.notify(events.editNextValCell, {});\n }\n if (this.editSettings.mode === 'Normal') {\n this.editModule.editFormValidate();\n }\n }\n this.keyPress = false;\n };\n Grid.prototype.isChildGrid = function (e) {\n var gridElement = parentsUntil(e.target, 'e-grid');\n if ((gridElement && gridElement.id !== this.element.id) || (parentsUntil(e.target, 'e-unboundcelldiv') &&\n isNullOrUndefined(gridElement))) {\n return true;\n }\n return false;\n };\n /**\n * @param {Object} persistedData - Defines the persisted data\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mergePersistGridData = function (persistedData) {\n var data = this.getLocalData();\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n if (this.enableVirtualization && dataObj.pageSettings) {\n dataObj.pageSettings.currentPage = 1;\n }\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof this[\"\" + key] === 'object') && !isNullOrUndefined(this[\"\" + key])) {\n if (Array.isArray(this[\"\" + key]) && key === 'columns') {\n this.setFrozenCount();\n setColumnIndex(this[\"\" + key]);\n this.mergeColumns(dataObj[\"\" + key], this[\"\" + key]);\n this.mergedColumns = true;\n this[\"\" + key] = dataObj[\"\" + key];\n }\n else {\n extend(this[\"\" + key], dataObj[\"\" + key]);\n }\n }\n else {\n this[\"\" + key] = dataObj[\"\" + key];\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n Grid.prototype.mergeColumns = function (storedColumn, columns) {\n var storedColumns = storedColumn;\n var isFrozenGrid = this.isFrozenGrid();\n var _loop_4 = function (i) {\n var localCol = columns.filter(function (tCol) { return isFrozenGrid ?\n tCol.index === storedColumns[parseInt(i.toString(), 10)][\"\" + literals.initialFrozenColumnIndex] :\n tCol.index === storedColumns[parseInt(i.toString(), 10)].index; })[0];\n if (!isNullOrUndefined(localCol)) {\n if (isFrozenGrid) {\n localCol = extend({}, localCol, {}, true);\n localCol.freeze = storedColumns[parseInt(i.toString(), 10)].freeze;\n }\n if (localCol.columns && localCol.columns.length) {\n this_4.mergeColumns(storedColumns[parseInt(i.toString(), 10)].columns, localCol.columns);\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n else {\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n }\n };\n var this_4 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_4(i);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns the isDetail\n */\n Grid.prototype.isDetail = function () {\n return !isNullOrUndefined(this.detailTemplate) || !isNullOrUndefined(this.childGrid);\n };\n Grid.prototype.isCommandColumn = function (columns) {\n var _this_1 = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this_1.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n Grid.prototype.isForeignKeyEnabled = function (columns) {\n var _this_1 = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this_1.isForeignKeyEnabled(col.columns);\n }\n return !!(col.dataSource && col.foreignKeyValue);\n });\n };\n Grid.prototype.keyPressHandler = function (e) {\n var presskey = extend(e, { cancel: false });\n this.trigger('keyPressed', presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n };\n Grid.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) { //alt j\n if (this.keyA) { //alt A J\n this.notify(events.groupCollapse, { target: e.target, collapse: false });\n this.keyA = false;\n }\n else {\n if (this.focusModule && this.focusModule.currentInfo && this.focusModule.currentInfo.element) {\n removeClass([this.focusModule.currentInfo.element, this.focusModule.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.focusModule.currentInfo.element.tabIndex = -1;\n }\n if (!this.element.classList.contains('e-childgrid')) {\n this.element.focus();\n }\n }\n }\n if (e.keyCode === 87) { //alt w\n var focusModule = this.focusModule;\n if (focusModule) {\n if (!this.currentViewData.length) {\n return;\n }\n focusModule.focusContent();\n focusModule.addOutline();\n }\n }\n if (e.keyCode === 65) { //alt A\n this.keyA = true;\n }\n if (e.keyCode === 72 && this.keyA) { //alt A H\n this.notify(events.groupCollapse, { target: e.target, collapse: true });\n this.keyA = false;\n }\n }\n if (e.keyCode === 13) {\n this.notify(events.enterKeyHandler, e);\n }\n };\n Grid.prototype.keyActionHandler = function (e) {\n if (this.isChildGrid(e) ||\n (this.isEdit && e.action !== 'escape' && e.action !== 'enter' && e.action !== 'shiftEnter'\n && e.action !== 'tab' && e.action !== 'shiftTab')) {\n return;\n }\n else {\n this.keyPress = true;\n }\n if (this.allowKeyboard) {\n if (e.action === 'ctrlPlusP') {\n e.preventDefault();\n this.print();\n }\n this.notify(events.keyPressed, e);\n }\n };\n /**\n * @param {Function[]} modules - Defines the modules\n * @returns {void}\n * @hidden\n */\n Grid.prototype.setInjectedModules = function (modules) {\n this.injectedModules = modules;\n };\n Grid.prototype.updateColumnObject = function () {\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n setColumnIndex(this.columns);\n this.initForeignColumn();\n this.notify(events.autoCol, {});\n };\n Grid.prototype.refreshFrozenPosition = function (obj) {\n if (obj && obj.isModeChg) {\n this.refreshColumns();\n this.notify(events.refreshResizePosition, {});\n }\n else {\n this.refreshColumns();\n }\n };\n /**\n * Gets the foreign columns from Grid.\n *\n * @returns {Column[]} Returns Foreign key column\n */\n Grid.prototype.getForeignKeyColumns = function () {\n return this.getColumns().filter(function (col) {\n return col.isForeignColumn();\n });\n };\n /**\n * @hidden\n * @returns {number} Returns row height\n */\n Grid.prototype.getRowHeight = function () {\n return this.rowHeight ? this.rowHeight : getRowHeight(this.element);\n };\n /**\n * Refreshes the Grid column changes.\n *\n * @returns {void}\n */\n Grid.prototype.refreshColumns = function () {\n this.freezeColumnRefresh = true;\n this.setFrozenCount();\n this.updateFrozenColumnsWidth();\n if (this.isFrozenGrid()) {\n this.isPreventScrollEvent = true;\n }\n this.updateColumnObject();\n this.checkLockColumns(this.getColumns());\n this.refresh();\n if (this.isFrozenGrid() && this.enableColumnVirtualization) {\n var left = this.getContent().querySelector('.e-movablescrollbar').scrollLeft;\n this.getHeaderContent().querySelector('.' + literals.headerContent).scrollLeft = left;\n this.getContent().querySelector('.' + literals.content).scrollLeft = left;\n }\n };\n /**\n * Export Grid data to Excel file(.xlsx).\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns the excelexport\n */\n Grid.prototype.excelExport = function (excelExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n workbook, isBlob) {\n if (this.exportGrids && this.exportGrids.length) {\n var gridIds = this.exportGrids.slice();\n return this.exportMultipleExcelGrids(gridIds, excelExportProperties, isMultipleExport, workbook, isBlob);\n }\n else {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n }\n };\n /**\n * Export Grid data to CSV file.\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns csv export\n */\n Grid.prototype.csvExport = function (excelExportProperties, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isMultipleExport, workbook, isBlob) {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, true, isBlob) : null;\n };\n /**\n * Export Grid data to PDF document.\n *\n * @param {pdfExportProperties} pdfExportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Define to enable multiple export.\n * @param {pdfDoc} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n *\n * @returns {Promise} Returns pdfexport\n */\n Grid.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n if (this.exportGrids && this.exportGrids.length) {\n var gridIds = this.exportGrids.slice();\n return this.exportMultiplePdfGrids(gridIds, pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n }\n else {\n return this.pdfExportModule ? this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) : null;\n }\n };\n Grid.prototype.exportMultiplePdfGrids = function (gridIds, pdfExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n pdfDoc, isBlob) {\n var _this = this;\n if (gridIds.length !== 0) {\n var currentGridId = gridIds.shift();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentGridInstance = document.getElementById(currentGridId).ej2_instances[0];\n var exportPromise = currentGridInstance.pdfExportModule ?\n currentGridInstance.pdfExportModule.Map(currentGridInstance, pdfExportProperties, isMultipleExport, pdfDoc, isBlob)\n : Promise.resolve();\n return exportPromise.then(function (exportedGridResults) {\n isMultipleExport = gridIds.length === 1 ? false : true;\n return _this.exportMultiplePdfGrids(gridIds, pdfExportProperties, isMultipleExport, exportedGridResults, isBlob);\n });\n }\n return null;\n };\n Grid.prototype.exportMultipleExcelGrids = function (gridIds, excelExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n workbook, isBlob) {\n var _this = this;\n if (gridIds.length !== 0) {\n var currentGridId = gridIds.shift();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentGridInstance = document.getElementById(currentGridId).ej2_instances[0];\n var exportPromise = currentGridInstance.excelExportModule ?\n currentGridInstance.excelExportModule.Map(currentGridInstance, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n return exportPromise.then(function (exportedGridResults) {\n isMultipleExport = gridIds.length === 1 ? false : true;\n return _this.exportMultipleExcelGrids(gridIds, excelExportProperties, isMultipleExport, exportedGridResults, isBlob);\n });\n }\n return null;\n };\n /**\n * Groups a column by column name.\n *\n * @param {string} columnName - Defines the column name to group.\n *\n * @returns {void}\n */\n Grid.prototype.groupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.groupColumn(columnName);\n }\n };\n /**\n * Expands all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupExpandAll = function () {\n if (this.groupModule) {\n this.groupModule.expandAll();\n }\n };\n /**\n * Collapses all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupCollapseAll = function () {\n if (this.groupModule) {\n this.groupModule.collapseAll();\n }\n };\n /**\n * Expands or collapses grouped rows by target element.\n *\n * @param {Element} target - Defines the target element of the grouped row.\n * @returns {void}\n */\n // public expandCollapseRows(target: Element): void {\n // if (this.groupModule) {\n // this.groupModule.expandCollapseRows(target);\n // }\n // }\n /**\n * Clears all the grouped columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearGrouping = function () {\n if (this.groupModule) {\n this.groupModule.clearGrouping();\n }\n };\n /**\n * Ungroups a column by column name.\n *\n * {% codeBlock src='grid/ungroupColumn/index.md' %}{% endcodeBlock %}\n *\n * @param {string} columnName - Defines the column name to ungroup.\n *\n * @returns {void}\n */\n Grid.prototype.ungroupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.ungroupColumn(columnName);\n }\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} x - Defines the X axis.\n * @param {number} y - Defines the Y axis.\n *\n * @returns {void}\n */\n Grid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n };\n Grid.prototype.scrollRefresh = function () {\n var _this_1 = this;\n var refresh = function () {\n _this_1.scrollModule.refresh();\n _this_1.off(events.contentReady, refresh);\n };\n this.on(events.contentReady, refresh, this);\n };\n /**\n * Collapses a detail row with the given target.\n *\n * @param {Element} target - Defines the expanded element to collapse.\n * @returns {void}\n */\n // public detailCollapse(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.collapse(target);\n // }\n // }\n /**\n * Collapses all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailCollapseAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.collapseAll();\n }\n };\n /**\n * Expands a detail row with the given target.\n *\n * @param {Element} target - Defines the collapsed element to expand.\n * @returns {void}\n */\n // public detailExpand(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.expand(target);\n // }\n // }\n /**\n * Expands all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailExpandAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.expandAll();\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearCellSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearCellSelection();\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Grid.prototype.clearRowSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearRowSelection();\n }\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n *\n * @returns {void}\n */\n Grid.prototype.selectCells = function (rowCellIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectCells(rowCellIndexes);\n }\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n *\n * @returns {void}\n */\n Grid.prototype.selectRowsByRange = function (startIndex, endIndex) {\n if (this.selectionModule) {\n this.selectionModule.selectRowsByRange(startIndex, endIndex);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns whether context menu is open or not\n */\n Grid.prototype.isContextMenuOpen = function () {\n return this.contextMenuModule && this.contextMenuModule.isOpen;\n };\n /**\n * @param {Function} module - Defines the module\n * @returns {boolean} return the injected modules\n * @hidden\n */\n Grid.prototype.ensureModuleInjected = function (module) {\n return this.getInjectedModules().indexOf(module) >= 0;\n };\n /**\n * Destroys the given template reference.\n *\n * @param {string[]} propertyNames - Defines the collection of template name.\n * @param {any} index - specifies the index\n *\n * @returns {void}\n */\n // eslint-disable-next-line\n Grid.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * @param {string | string[]} type - Defines the type\n * @param {Object} args - Defines the arguments\n * @returns {void}\n * @hidden\n * @private\n */\n Grid.prototype.log = function (type, args) {\n // eslint-disable-next-line\n this.loggerModule ? this.loggerModule.log(type, args) : (function () { return 0; })();\n };\n /**\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyBiggerTheme = function (element) {\n if (this.element.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n };\n /**\n * @hidden\n * @returns {Object} Returns the previous row data\n */\n Grid.prototype.getPreviousRowData = function () {\n var previousRowData = this.getRowsObject()[this.getRows().length - 1].data;\n return previousRowData;\n };\n /**\n * Hides the scrollbar placeholder of Grid content when grid content is not overflown.\n *\n * @returns {void}\n */\n Grid.prototype.hideScroll = function () {\n var content = this.getContent().querySelector('.' + literals.content);\n if (content.scrollHeight <= content.clientHeight) {\n this.scrollModule.removePadding();\n content.style.overflowY = 'auto';\n }\n };\n /**\n * Get row index by primary key or row data.\n *\n * @param {string | Object} value - Defines the primary key value.\n *\n * @returns {number} Returns the index\n */\n Grid.prototype.getRowIndexByPrimaryKey = function (value) {\n var pkName = this.getPrimaryKeyFieldNames()[0];\n value = typeof value === 'object' ? value[\"\" + pkName] : value;\n var rows = this.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isDetailRow || rows[parseInt(i.toString(), 10)].isCaptionRow) {\n continue;\n }\n var pKvalue = rows[parseInt(i.toString(), 10)].data[\"\" + pkName];\n if (pkName.split('.').length > 1) {\n pKvalue = performComplexDataOperation(pkName, rows[parseInt(i.toString(), 10)].data);\n }\n if (pKvalue === value) {\n return rows[parseInt(i.toString(), 10)].index;\n }\n }\n return -1;\n };\n /**\n * @param {string} field - Defines the field name\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByFieldFromAllCols = function (field, isForeignKey) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if ((!isForeignKey && field === gCols[parseInt(i.toString(), 10)].field) ||\n (isForeignKey && gCols[parseInt(i.toString(), 10)].isForeignColumn() &&\n field === gCols[parseInt(i.toString(), 10)].foreignKeyValue)) {\n column = gCols[parseInt(i.toString(), 10)];\n break;\n }\n }\n return column;\n };\n /**\n * @param {string} uid - Defines the uid\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByUidFromAllCols = function (uid) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (uid === gCols[parseInt(i.toString(), 10)].uid) {\n column = gCols[parseInt(i.toString(), 10)];\n }\n }\n return column;\n };\n /**\n * Get all filtered records from the Grid and it returns array of objects for the local dataSource, returns a promise object if the Grid has remote data.\n *\n * @returns {Object[] | Promise} Returns the filtered records\n */\n Grid.prototype.getFilteredRecords = function () {\n if ((this.allowFiltering && this.filterSettings.columns.length) || this.searchSettings.key.length) {\n var query = this.renderModule.data.generateQuery(true);\n if (this.dataSource && this.renderModule.data.isRemote() && this.dataSource instanceof DataManager) {\n return this.renderModule.data.getData(this.dataSource, query);\n }\n else {\n if (this.dataSource instanceof DataManager) {\n return this.dataSource.executeLocal(query);\n }\n else {\n return new DataManager(this.dataSource, query).executeLocal(query);\n }\n }\n }\n return [];\n };\n Grid.prototype.getUserAgent = function () {\n var userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad|macintosh/.test(userAgent);\n };\n /**\n * @param {TouchEventArgs} e - Defines the TouchEventArgs\n * @returns {void}\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n // eslint-disable-next-line\n Grid.prototype.tapEvent = function (e) {\n if (this.getUserAgent()) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.dblClickHandler(e);\n this.notify(events.doubleTap, e);\n }\n }\n };\n /**\n * @param {string} prefix - specifies the prefix\n * @returns {string} returns the row uid\n * @hidden\n */\n Grid.prototype.getRowUid = function (prefix) {\n return \"\" + prefix + this.rowUid++;\n };\n /**\n * @param {string} uid - specifies the uid\n * @returns {Element} returns the element\n * @hidden\n */\n Grid.prototype.getRowElementByUID = function (uid) {\n var rowEle;\n var rows = [];\n var cntRows = [].slice.call(this.getContent().querySelector(literals.tbody).children);\n if (this.frozenRows) {\n rows = [].slice.call(this.getHeaderContent().querySelector(literals.tbody).children);\n rows = rows.concat(cntRows);\n }\n else {\n rows = cntRows;\n }\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n if (row.getAttribute('data-uid') === uid) {\n rowEle = row;\n break;\n }\n }\n return rowEle;\n };\n /**\n * Gets the hidden columns from the Grid.\n *\n * @returns {Column[]} Returns the Column\n */\n Grid.prototype.getHiddenColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible === false) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * Calculates the page size by parent element height\n *\n * @param {number | string } containerHeight - specifies the container height\n * @returns {number} returns the page size\n */\n Grid.prototype.calculatePageSizeByParentHeight = function (containerHeight) {\n if (this.allowPaging) {\n if ((this.allowTextWrap && this.textWrapSettings.wrapMode === 'Header') || (!this.allowTextWrap)) {\n var pagesize = 0;\n if (containerHeight.indexOf('%') !== -1) {\n containerHeight = parseInt(containerHeight, 10) / 100 * this.element.clientHeight;\n }\n var nonContentHeight = this.getNoncontentHeight() + this.getRowHeight();\n if (containerHeight > nonContentHeight) {\n var contentHeight = 0;\n contentHeight = containerHeight - this.getNoncontentHeight();\n pagesize = (contentHeight / this.getRowHeight());\n }\n if (pagesize > 0) {\n return Math.floor(pagesize);\n }\n }\n }\n return 0;\n };\n Grid.prototype.getNoncontentHeight = function () {\n var height = 0;\n if (!isNullOrUndefined(this.getHeaderContent().clientHeight)) {\n height += this.getHeaderContent().clientHeight;\n }\n if (this.toolbar && !isNullOrUndefined(this.element.querySelector('.e-toolbar').clientHeight)) {\n height += this.element.querySelector('.e-toolbar').clientHeight;\n }\n if (this.allowPaging && !isNullOrUndefined(this.element.querySelector('.e-gridpager').clientHeight)) {\n height += this.element.querySelector('.e-gridpager').clientHeight;\n }\n if (this.showColumnChooser && !isNullOrUndefined(this.element.querySelector('.e-columnheader').clientHeight)) {\n height += this.element.querySelector('.e-columnheader').clientHeight;\n }\n if (this.allowGrouping && this.groupSettings.showDropArea && !isNullOrUndefined(this.element.querySelector('.e-groupdroparea').clientHeight)) {\n height += this.element.querySelector('.e-groupdroparea').clientHeight;\n }\n if (this.aggregates.length > 0 && !isNullOrUndefined(this.element.querySelector('.e-summaryrow').clientHeight)) {\n for (var i = 0; i < this.element.getElementsByClassName('e-summaryrow').length; i++) {\n height += this.element.getElementsByClassName('e-summaryrow')[parseInt(i.toString(), 10)].clientHeight;\n }\n }\n return height;\n };\n /**\n *To perform aggregate operation on a column.\n *\n * @param {AggregateColumnModel} summaryCol - Pass Aggregate Column details.\n * @param {Object} summaryData - Pass JSON Array for which its field values to be calculated.\n *\n * @returns {number} returns the summary values\n */\n Grid.prototype.getSummaryValues = function (summaryCol, summaryData) {\n return DataUtil.aggregates[summaryCol.type.toLowerCase()](summaryData, summaryCol.field);\n };\n /**\n * Sends a Post request to export Grid to Excel file in server side.\n *\n * @param {string} url - Pass Url for server side excel export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverExcelExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to Pdf file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverPdfExport = function (url) {\n this.isExcel = false;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to CSV file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverCsvExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * @param {string} url - Defines exporting url\n * @returns {void}\n * @hidden\n */\n Grid.prototype.exportGrid = function (url) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var grid = this;\n var query = grid.getDataModule().generateQuery(true);\n var state = new UrlAdaptor().processQuery(new DataManager({ url: '' }), query);\n var queries = JSON.parse(state.data);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var gridModel = JSON.parse(this.addOnPersist(['allowGrouping', 'allowPaging', 'pageSettings', 'sortSettings', 'allowPdfExport', 'allowExcelExport', 'aggregates',\n 'filterSettings', 'groupSettings', 'columns', 'locale', 'searchSettings']));\n var include = ['field', 'headerText', 'type', 'format', 'visible', 'foreignKeyValue', 'foreignKeyField',\n 'template', 'index', 'width', 'textAlign', 'headerTextAlign', 'columns'];\n gridModel.filterSettings.columns = queries.where;\n gridModel.searchSettings.fields = queries.search && queries.search[0]['fields'] || [];\n gridModel.sortSettings.columns = queries.sorted;\n gridModel.columns = this.setHeaderText(gridModel.columns, include);\n var form = this.createElement('form', { id: 'ExportForm', styles: 'display:none;' });\n var gridInput = this.createElement('input', { id: 'gridInput', attrs: { name: 'gridModel' } });\n gridInput.value = JSON.stringify(gridModel);\n form.method = 'POST';\n form.action = url;\n form.appendChild(gridInput);\n document.body.appendChild(form);\n form.submit();\n form.remove();\n };\n /**\n * @param {Column[]} columns - Defines array of columns\n * @param {string[]} include - Defines array of sting\n * @returns {Column[]} returns array of columns\n * @hidden\n */\n Grid.prototype.setHeaderText = function (columns, include) {\n for (var i = 0; i < columns.length; i++) {\n var column = this.getColumnByUid(columns[parseInt(i.toString(), 10)].uid);\n columns[parseInt(i.toString(), 10)].headerText = column.headerText;\n if (!isNullOrUndefined(column.template)) {\n columns[parseInt(i.toString(), 10)].template = 'true';\n }\n if (columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = getNumberFormat(this.getFormat(columns[parseInt(i.toString(), 10)].format), columns[parseInt(i.toString(), 10)].type, this.isExcel, defaultCurrencyCode);\n }\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.setHeaderText(columns[parseInt(i.toString(), 10)].columns, include);\n }\n var keys = Object.keys(columns[parseInt(i.toString(), 10)]);\n for (var j = 0; j < keys.length; j++) {\n if (include.indexOf(keys[parseInt(j.toString(), 10)]) < 0) {\n delete columns[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]];\n }\n }\n }\n return columns;\n };\n Grid.prototype.getFormat = function (format) {\n return typeof (format) === 'object' ? !isNullOrUndefined(format.format) ?\n format.format : format.skeleton : format;\n };\n /**\n * @hidden\n * @returns {boolean} returns the isCollapseStateEnabled\n */\n Grid.prototype.isCollapseStateEnabled = function () {\n var isExpanded = 'isExpanded';\n return this[\"\" + isExpanded] === false;\n };\n /**\n * @param {number} key - Defines the primary key value.\n * @param {Object} rowData - Defines the rowData\n * @returns {void}\n */\n Grid.prototype.updateRowValue = function (key, rowData) {\n var args = {\n requestType: 'save', data: rowData\n };\n this.showSpinner();\n this.notify(events.updateData, args);\n this.refresh();\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setForeignKeyData = function () {\n this.dataBind();\n var colpending = this.getDataModule().getForeignKeyDataState();\n if (colpending.isPending) {\n this.getDataModule().setForeignKeyDataState({});\n colpending.resolver();\n }\n else {\n this.getDataModule().setForeignKeyDataState({ isDataChanged: false });\n if (this.contentModule || this.headerModule) {\n this.renderModule.render();\n }\n }\n };\n /**\n * @param {string} field - specifies the field\n * @returns {void}\n * @hidden\n */\n Grid.prototype.resetFilterDlgPosition = function (field) {\n var header = this.getColumnHeaderByField(field);\n if (header) {\n var target = header.querySelector('.e-filtermenudiv');\n var filterDlg = this.element.querySelector('.e-filter-popup');\n if (target && filterDlg) {\n var gClient = this.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n if (filterDlg) {\n if ((filterDlg.offsetWidth + fClient.right) > gClient.right) {\n filterDlg.style.left = ((fClient.right - filterDlg.offsetWidth) - gClient.left).toString() + 'px';\n }\n else {\n filterDlg.style.left = (fClient.right - gClient.left).toString() + 'px';\n }\n }\n }\n }\n };\n /**\n * @param {any} callBack - specifies the callBack method\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line\n Grid.prototype.renderTemplates = function (callBack) {\n var isReactChild = this.parentDetails && this.parentDetails.parentInstObj && this.parentDetails.parentInstObj.isReact;\n if (isReactChild && this['portals']) {\n this.parentDetails.parentInstObj['portals'] = this.parentDetails.parentInstObj['portals']\n .concat(this['portals']);\n this.parentDetails.parentInstObj.renderTemplates(callBack);\n this['portals'] = undefined;\n }\n else {\n var portals = 'portals';\n this.notify('reactTemplateRender', this[\"\" + portals]);\n this.renderReactTemplates(callBack);\n }\n };\n /**\n * Apply the changes to the Grid without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchUpdate = function (changes) {\n this.processRowChanges(changes);\n };\n /**\n * Apply the changes to the Grid in one batch after 50ms without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchAsyncUpdate = function (changes) {\n this.processBulkRowChanges(changes);\n };\n Grid.prototype.processBulkRowChanges = function (changes) {\n var _this_1 = this;\n if (!this.dataToBeUpdated) {\n this.dataToBeUpdated = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n setTimeout(function () {\n _this_1.processRowChanges(_this_1.dataToBeUpdated);\n _this_1.dataToBeUpdated = null;\n }, this.asyncTimeOut);\n }\n else {\n var loopstring = [literals.addedRecords, literals.changedRecords, literals.deletedRecords];\n var keyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < loopstring.length; i++) {\n if (changes[loopstring[parseInt(i.toString(), 10)]]) {\n compareChanges(this, changes, loopstring[parseInt(i.toString(), 10)], keyField);\n }\n }\n }\n };\n Grid.prototype.processRowChanges = function (changes) {\n var _this_1 = this;\n var keyField = this.getPrimaryKeyFieldNames()[0];\n changes = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n var promise = this.getDataModule().saveChanges(changes, keyField, {}, this.getDataModule().generateQuery().requiresCount());\n if (this.getDataModule().isRemote()) {\n promise.then(function () {\n _this_1.setNewData();\n });\n }\n else {\n this.setNewData();\n }\n };\n Grid.prototype.setNewData = function () {\n var _this_1 = this;\n var oldValues = JSON.parse(JSON.stringify(this.getCurrentViewRecords()));\n var getData = this.getDataModule().getData({}, this.getDataModule().generateQuery().requiresCount());\n getData.then(function (e) {\n _this_1.bulkRefresh(e.result, oldValues, e.count);\n });\n };\n Grid.prototype.deleteRowElement = function (row) {\n var tr = this.getRowElementByUID(row.uid);\n remove(tr);\n };\n Grid.prototype.bulkRefresh = function (result, oldValues, count) {\n var _this_1 = this;\n var rowObj = this.getRowsObject();\n var keyField = this.getPrimaryKeyFieldNames()[0];\n var _loop_5 = function (i) {\n if (!result.filter(function (e) { return e[\"\" + keyField] === rowObj[parseInt(i.toString(), 10)].data[\"\" + keyField]; }).length) {\n this_5.deleteRowElement(rowObj[parseInt(i.toString(), 10)]);\n rowObj.splice(i, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_5 = this, out_i_1;\n for (var i = 0; i < rowObj.length; i++) {\n _loop_5(i);\n i = out_i_1;\n }\n var _loop_6 = function (i) {\n var isRowExist;\n oldValues.filter(function (e) {\n if (e[\"\" + keyField] === result[parseInt(i.toString(), 10)][\"\" + keyField]) {\n if (e !== result[parseInt(i.toString(), 10)]) {\n _this_1.setRowData(result[parseInt(i.toString(), 10)][\"\" + keyField], result[parseInt(i.toString(), 10)]);\n }\n isRowExist = true;\n }\n });\n if (!isRowExist) {\n this_6.renderRowElement(result[parseInt(i.toString(), 10)], i);\n }\n };\n var this_6 = this;\n for (var i = 0; i < result.length; i++) {\n _loop_6(i);\n }\n this.currentViewData = result;\n var rows = [].slice.call(this.getContentTable().getElementsByClassName(literals.row));\n resetRowIndex(this, this.getRowsObject(), rows);\n setRowElements(this);\n if (this.allowPaging) {\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: { totalRecordsCount: count } });\n }\n };\n Grid.prototype.renderRowElement = function (data, index) {\n var row = new RowRenderer(this.serviceLocator, null, this);\n var model = new RowModelGenerator(this);\n var modelData = model.generateRows([data]);\n var tr = row.render(modelData[0], this.getColumns());\n this.addRowObject(modelData[0], index);\n var tbody = this.getContentTable().querySelector(literals.tbody);\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (this.frozenRows && this.element.querySelector('.e-frozenrow-empty')) {\n this.element.querySelector('.e-frozenrow-empty').classList.remove('e-frozenrow-empty');\n }\n }\n if (this.frozenRows && index < this.frozenRows) {\n tbody = this.getHeaderContent().querySelector(literals.tbody);\n }\n else {\n tbody = this.getContent().querySelector(literals.tbody);\n }\n tbody = this.getContent().querySelector(literals.tbody);\n tbody.appendChild(tr);\n };\n Grid.prototype.addRowObject = function (row, index) {\n this.getRowsObject().splice(index, 1, row);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateVisibleExpandCollapseRows = function () {\n var rows = this.getRowsObject();\n for (var i = 0, len = rows.length; i < len; i++) {\n if ((rows[parseInt(i.toString(), 10)].isDataRow || rows[parseInt(i.toString(), 10)].isAggregateRow)\n && this.getRowElementByUID(rows[parseInt(i.toString(), 10)].uid).style.display === 'none') {\n rows[parseInt(i.toString(), 10)].visible = false;\n }\n else {\n rows[parseInt(i.toString(), 10)].visible = true;\n }\n }\n };\n /**\n * Method to sanitize any suspected untrusted strings and scripts before rendering them.\n *\n * @param {string} value - Specifies the html value to sanitize\n * @returns {string} Returns the sanitized html string\n * @hidden\n */\n Grid.prototype.sanitize = function (value) {\n if (this.enableHtmlSanitizer) {\n return SanitizeHtmlHelper.sanitize(value);\n }\n return value;\n };\n /**\n * @param {string | number} height - specifies the height\n * @returns {number | string} - specifies the height number\n * @hidden\n */\n Grid.prototype.getHeight = function (height) {\n if (!Number.isInteger(height) && height.indexOf('%') !== -1) {\n height = parseInt(height, 10) / 100 * this.element.clientHeight;\n }\n else if (!Number.isInteger(height) && this.height !== 'auto') {\n height = parseInt(height, 10);\n }\n else {\n height = this.height;\n }\n return height;\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right content\n\n */\n Grid.prototype.getFrozenRightContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header\n\n */\n Grid.prototype.getFrozenRightHeader = function () {\n return this.headerModule.getPanel();\n };\n /**\n * @hidden\n * @returns {Element} - returns movable header tbody\n\n */\n Grid.prototype.getMovableHeaderTbody = function () {\n return this.getHeaderContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns movable content tbody\n\n */\n Grid.prototype.getMovableContentTbody = function () {\n return this.getContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen header tbody\n\n */\n Grid.prototype.getFrozenHeaderTbody = function () {\n return this.getHeaderContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen left content tbody\n\n */\n Grid.prototype.getFrozenLeftContentTbody = function () {\n return this.getContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header tbody\n\n */\n Grid.prototype.getFrozenRightHeaderTbody = function () {\n return this.getHeaderContent().querySelector(literals.tbody);\n };\n /**\n * @returns {Element} returns frozen right content tbody\n\n * @hidden\n */\n Grid.prototype.getFrozenRightContentTbody = function () {\n return this.getContent().querySelector(literals.tbody);\n };\n /**\n * @param {boolean} isCustom - Defines custom filter dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomFilter = function (isCustom) {\n if (this.filterModule) {\n this.filterModule.showCustomFilter(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * @param {boolean} isCustom - Defines custom sort dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomSort = function (isCustom) {\n if (this.sortModule) {\n this.sortModule.showCustomSort(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * @param {boolean} isCustom - Defines custom column chooser dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomColumnChooser = function (isCustom) {\n if (this.columnChooserModule) {\n this.columnChooserModule.showCustomColumnChooser(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * To manually show the vertical row mode filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveFilterDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomFilter(true);\n }\n };\n /**\n * To manually show the vertical row sort filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveSortDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomSort(true);\n }\n };\n /**\n * @param {boolean} isColVirtualization - Defines column virtualization\n * @returns {Column[]} returns array of column models\n * @hidden\n */\n Grid.prototype.getCurrentVisibleColumns = function (isColVirtualization) {\n var cols = [];\n var gridCols = isColVirtualization ? this.getColumns() : this.columnModel;\n for (var _i = 0, gridCols_1 = gridCols; _i < gridCols_1.length; _i++) {\n var col = gridCols_1[_i];\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n };\n Grid.prototype.enableInfiniteAggrgate = function () {\n if (this.enableInfiniteScrolling && this.groupSettings.columns.length && !this.groupSettings.disablePageWiseAggregates\n && !this.groupSettings.enableLazyLoading) {\n this.setProperties({ groupSettings: { disablePageWiseAggregates: true } }, true);\n }\n };\n var Grid_1;\n __decorate([\n Property([])\n ], Grid.prototype, \"currentViewData\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"parentDetails\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"showHider\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableHover\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAutoFill\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableStickyHeader\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, TextWrapSettings)\n ], Grid.prototype, \"textWrapSettings\", void 0);\n __decorate([\n Complex({}, ResizeSettings)\n ], Grid.prototype, \"resizeSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPaging\", void 0);\n __decorate([\n Complex({}, PageSettings)\n ], Grid.prototype, \"pageSettings\", void 0);\n __decorate([\n Complex({}, LoadingIndicator)\n ], Grid.prototype, \"loadingIndicator\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableVirtualMaskRow\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], Grid.prototype, \"searchSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowSorting\", void 0);\n __decorate([\n Property('Ellipsis')\n ], Grid.prototype, \"clipMode\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowMultiSorting\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], Grid.prototype, \"sortSettings\", void 0);\n __decorate([\n Complex({}, InfiniteScrollSettings)\n ], Grid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowSelection\", void 0);\n __decorate([\n Property(-1)\n ], Grid.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], Grid.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property('Horizontal')\n ], Grid.prototype, \"rowRenderingMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Complex({}, RowDropSettings)\n ], Grid.prototype, \"rowDropSettings\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], Grid.prototype, \"filterSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowGrouping\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"autoFit\", void 0);\n __decorate([\n Complex({}, GroupSettings)\n ], Grid.prototype, \"groupSettings\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], Grid.prototype, \"editSettings\", void 0);\n __decorate([\n Collection([], AggregateRow)\n ], Grid.prototype, \"aggregates\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnChooser\", void 0);\n __decorate([\n Complex({}, ColumnChooserSettings)\n ], Grid.prototype, \"columnChooserSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHeaderFocus\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"width\", void 0);\n __decorate([\n Property('Default')\n ], Grid.prototype, \"gridLines\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"rowTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"emptyRecordTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"detailTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"childGrid\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"queryString\", void 0);\n __decorate([\n Property('AllPages')\n ], Grid.prototype, \"printMode\", void 0);\n __decorate([\n Property('Expanded')\n ], Grid.prototype, \"hierarchyPrintMode\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], Grid.prototype, \"rowHeight\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"query\", void 0);\n __decorate([\n Property('USD')\n ], Grid.prototype, \"currencyCode\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"exportGrids\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbar\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbarTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"pagerTemplate\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenRows\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenColumns\", void 0);\n __decorate([\n Property('')\n ], Grid.prototype, \"cssClass\", void 0);\n __decorate([\n Property('All')\n ], Grid.prototype, \"columnQueryMode\", void 0);\n __decorate([\n Property({})\n ], Grid.prototype, \"currentAction\", void 0);\n __decorate([\n Property('')\n ], Grid.prototype, \"ej2StatePersistenceVersion\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"printComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportDetailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportDetailTemplate\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"detailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenColumnChooser\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenAdaptiveDialog\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchCancel\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"commandClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSaved\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"keyPressed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"checkBoxChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePaste\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeAutoFill\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportGroupCaption\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupExpand\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupCollapse\", void 0);\n Grid = Grid_1 = __decorate([\n NotifyPropertyChanges\n ], Grid);\n return Grid;\n}(Component));\nexport { Grid };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property, setValue } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { addClass, detach, getUniqueID, isRippleEnabled, removeClass, rippleEffect, closest } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler, setHiddenInput } from './../common/common';\nvar CHECK = 'e-check';\nvar DISABLED = 'e-checkbox-disabled';\nvar FRAME = 'e-frame';\nvar INDETERMINATE = 'e-stop';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RIPPLECHECK = 'e-ripple-check';\nvar RIPPLEINDETERMINATE = 'e-ripple-stop';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-checkbox-wrapper';\nvar containerAttr = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value', 'id'];\n/**\n * The CheckBox is a graphical user interface element that allows you to select one or more options from the choices.\n * It contains checked, unchecked, and indeterminate states.\n * ```html\n * \n * \n * ```\n */\nvar CheckBox = /** @class */ (function (_super) {\n __extends(CheckBox, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {CheckBoxModel} options - Specifies checkbox model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function CheckBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n _this.isMouseClick = false;\n _this.clickTriggered = false;\n _this.validCheck = true;\n return _this;\n }\n CheckBox.prototype.changeState = function (state, isInitialize) {\n var ariaState;\n var rippleSpan;\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n if (isRippleEnabled) {\n rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n }\n if (state === 'check') {\n if (frameSpan) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n }\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLEINDETERMINATE);\n rippleSpan.classList.add(RIPPLECHECK);\n }\n ariaState = 'true';\n this.element.checked = true;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = false;\n this.validCheck = false;\n }\n else if (this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n }\n else if (state === 'uncheck') {\n if (frameSpan) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n }\n if (rippleSpan) {\n removeClass([rippleSpan], [RIPPLECHECK, RIPPLEINDETERMINATE]);\n }\n ariaState = 'false';\n this.element.checked = false;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = true;\n this.validCheck = false;\n }\n else if (this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n }\n else {\n if (frameSpan) {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n }\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLECHECK);\n rippleSpan.classList.add(RIPPLEINDETERMINATE);\n }\n ariaState = 'mixed';\n this.element.indeterminate = true;\n this.indeterminate = true;\n }\n };\n CheckBox.prototype.clickHandler = function (event) {\n if (event.target.tagName === 'INPUT' && this.clickTriggered) {\n if (this.isVue) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n this.clickTriggered = false;\n return;\n }\n if (event.target.tagName === 'SPAN' || event.target.tagName === 'LABEL') {\n this.clickTriggered = true;\n }\n if (this.isMouseClick) {\n this.focusOutHandler();\n this.isMouseClick = false;\n }\n if (this.indeterminate) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n this.indeterminate = false;\n this.element.indeterminate = false;\n }\n else if (this.checked) {\n this.changeState('uncheck');\n this.checked = false;\n }\n else {\n this.changeState('check');\n this.checked = true;\n }\n var changeEventArgs = { checked: this.updateVueArrayModel(false), event: event };\n this.trigger('change', changeEventArgs);\n event.stopPropagation();\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CheckBox.prototype.destroy = function () {\n var _this = this;\n var wrapper = this.getWrapper();\n _super.prototype.destroy.call(this);\n if (this.wrapper) {\n wrapper = this.wrapper;\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (this.getWrapper() && wrapper.parentNode) {\n wrapper.parentNode.insertBefore(this.element, wrapper);\n }\n detach(wrapper);\n this.element.checked = false;\n if (this.indeterminate) {\n this.element.indeterminate = false;\n }\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n this.element = wrapper;\n if (this.refreshing) {\n ['e-control', 'e-checkbox', 'e-lib'].forEach(function (key) {\n _this.element.classList.add(key);\n });\n setValue('ej2_instances', [this], this.element);\n }\n }\n }\n };\n CheckBox.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n CheckBox.prototype.focusOutHandler = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n wrapper.classList.remove('e-focus');\n }\n this.isFocused = false;\n };\n /**\n * Gets the module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n CheckBox.prototype.getModuleName = function () {\n return 'checkbox';\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n CheckBox.prototype.getPersistData = function () {\n return this.addOnPersist(['checked', 'indeterminate']);\n };\n CheckBox.prototype.getWrapper = function () {\n if (this.element && this.element.parentElement) {\n return this.element.parentElement.parentElement;\n }\n else {\n return null;\n }\n };\n CheckBox.prototype.getLabel = function () {\n if (this.element) {\n return this.element.parentElement;\n }\n else {\n return null;\n }\n };\n CheckBox.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n if (this.value) {\n this.element.setAttribute('value', this.value);\n if (this.isVue && typeof this.value === 'boolean' && this.value === true) {\n this.setProperties({ 'checked': true }, true);\n }\n }\n if (this.checked) {\n this.changeState('check', true);\n }\n if (this.indeterminate) {\n this.changeState();\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n CheckBox.prototype.initWrapper = function () {\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', {\n className: WRAPPER\n });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n var frameSpan = this.createElement('span', { className: 'e-icons ' + FRAME });\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n wrapper.appendChild(label);\n label.appendChild(this.element);\n setHiddenInput(this, label);\n label.appendChild(frameSpan);\n if (isRippleEnabled) {\n var rippleSpan = this.createElement('span', { className: RIPPLE });\n if (this.labelPosition === 'Before') {\n label.appendChild(rippleSpan);\n }\n else {\n label.insertBefore(rippleSpan, frameSpan);\n }\n rippleEffect(rippleSpan, { duration: 400, isCenterRipple: true });\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n CheckBox.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getWrapper().classList.add('e-focus');\n }\n };\n CheckBox.prototype.labelMouseDownHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n CheckBox.prototype.labelMouseLeaveHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n CheckBox.prototype.labelMouseUpHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = 0; i < rippleElem.length - 1; i++) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {CheckBoxModel} newProp - Specifies new Properties\n * @param {CheckBoxModel} oldProp - Specifies old Properties\n *\n * @returns {void}\n */\n CheckBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n this.indeterminate = false;\n this.element.indeterminate = false;\n this.changeState(newProp.checked ? 'check' : 'uncheck');\n break;\n case 'indeterminate':\n if (newProp.indeterminate) {\n this.changeState();\n }\n else {\n this.element.indeterminate = false;\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.wrapper = this.getWrapper();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n wrapper.classList.remove(DISABLED);\n wrapper.setAttribute('aria-disabled', 'false');\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition': {\n var label = wrapper.getElementsByClassName(LABEL)[0];\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n detach(label);\n if (newProp.labelPosition === 'After') {\n labelWrap.appendChild(label);\n }\n else {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n break;\n }\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n if (this.isVue && typeof newProp.value === 'object') {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToWrapper();\n break;\n }\n }\n };\n /**\n * Initialize Angular, React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.preRender = function () {\n var element = this.element;\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-CHECKBOX', 'checkbox', element, WRAPPER, 'checkbox');\n this.element = element;\n if (this.element.getAttribute('type') !== 'checkbox') {\n this.element.setAttribute('type', 'checkbox');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.render = function () {\n this.initWrapper();\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.updateHtmlAttributeToWrapper();\n this.updateVueArrayModel(true);\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n CheckBox.prototype.setDisabled = function () {\n var wrapper = this.getWrapper();\n this.element.disabled = true;\n wrapper.classList.add(DISABLED);\n wrapper.setAttribute('aria-disabled', 'true');\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n CheckBox.prototype.setText = function (text) {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n return;\n }\n var label = wrapper.getElementsByClassName(LABEL)[0];\n if (label) {\n label.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n label = this.createElement('span', { className: LABEL, innerHTML: text });\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n if (this.labelPosition === 'Before') {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n else {\n labelWrap.appendChild(label);\n }\n }\n };\n CheckBox.prototype.changeHandler = function (e) {\n e.stopPropagation();\n };\n CheckBox.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n this.element.checked = this.initialCheckedValue;\n };\n CheckBox.prototype.unWireEvents = function () {\n var wrapper = this.wrapper;\n EventHandler.remove(wrapper, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.remove(label, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(label, 'mouseup', this.labelMouseUpHandler);\n EventHandler.remove(label, 'mouseleave', this.labelMouseLeaveHandler);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.remove(formElem, 'reset', this.formResetHandler);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.remove(this.element, 'change', this.changeHandler);\n }\n };\n CheckBox.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.add(wrapper, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.add(label, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(label, 'mouseup', this.labelMouseUpHandler, this);\n EventHandler.add(label, 'mouseleave', this.labelMouseLeaveHandler, this);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.add(formElem, 'reset', this.formResetHandler, this);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n }\n };\n CheckBox.prototype.updateVueArrayModel = function (init) {\n if (this.isVue && typeof this.value === 'object') {\n var value = this.element.value;\n if (value && this.value) {\n if (init) {\n for (var i = 0; i < this.value.length; i++) {\n if (value === this.value[i]) {\n this.changeState('check');\n this.setProperties({ 'checked': true }, true);\n }\n }\n }\n else {\n var index = this.value.indexOf(value);\n if (this.checked) {\n if (index < 0) {\n this.value.push(value);\n }\n }\n else {\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.value;\n }\n }\n }\n return this.validCheck ? this.element.checked : !this.element.checked;\n };\n CheckBox.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n var wrapper = this.getWrapper();\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].split(' '));\n }\n else if (key === 'title') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'style') {\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n frameSpan.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'disabled') {\n if (this.htmlAttributes[\"\" + key] === 'true') {\n this.setDisabled();\n }\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n else {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n /**\n * Click the CheckBox element\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to CheckBox\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Event()\n ], CheckBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], CheckBox.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"indeterminate\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], CheckBox.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], CheckBox.prototype, \"htmlAttributes\", void 0);\n CheckBox = __decorate([\n NotifyPropertyChanges\n ], CheckBox);\n return CheckBox;\n}(Component));\nexport { CheckBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, Property, Event, Browser, L10n, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, detach, closest } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getValue, formatUnit, setValue, merge } from '@syncfusion/ej2-base';\nimport { Internationalization, getNumericObject } from '@syncfusion/ej2-base';\nimport { Input } from '../input/input';\nvar ROOT = 'e-control-wrapper e-numeric';\nvar SPINICON = 'e-input-group-icon';\nvar SPINUP = 'e-spin-up';\nvar SPINDOWN = 'e-spin-down';\nvar ERROR = 'e-error';\nvar INCREMENT = 'increment';\nvar DECREMENT = 'decrement';\nvar INTREGEXP = new RegExp('^(-)?(\\\\d*)$');\nvar DECIMALSEPARATOR = '.';\nvar COMPONENT = 'e-numerictextbox';\nvar CONTROL = 'e-control';\nvar NUMERIC_FOCUS = 'e-input-focus';\nvar HIDDENELEMENT = 'e-numeric-hidden';\nvar wrapperAttributes = ['title', 'style', 'class'];\nvar selectionTimeOut = 0;\n/**\n * Represents the NumericTextBox component that allows the user to enter only numeric values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar NumericTextBox = /** @class */ (function (_super) {\n __extends(NumericTextBox, _super);\n /**\n *\n * @param {NumericTextBoxModel} options - Specifies the NumericTextBox model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function NumericTextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isVue = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isDynamicChange = false;\n _this.numericOptions = options;\n return _this;\n }\n NumericTextBox.prototype.preRender = function () {\n this.isPrevFocused = false;\n this.decimalSeparator = '.';\n // eslint-disable-next-line no-useless-escape\n this.intRegExp = new RegExp('/^(-)?(\\d*)$/');\n this.isCalled = false;\n var ejInstance = getValue('ej2_instances', this.element);\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [CONTROL, COMPONENT, 'e-lib']);\n this.angularTagName = null;\n this.formEle = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.angularTagName = this.element.tagName;\n var input = this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n input.setAttribute(this.element.attributes[index].nodeName, this.element.attributes[index].nodeValue);\n input.innerHTML = this.element.innerHTML;\n }\n else if (attributeName === 'class') {\n input.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) { return item.indexOf('ng-') !== 0; }).join(' '));\n }\n }\n if (this.element.hasAttribute('name')) {\n this.element.removeAttribute('name');\n }\n this.element.classList.remove('e-control', 'e-numerictextbox');\n this.element.appendChild(input);\n this.element = input;\n setValue('ej2_instances', ejInstance, this.element);\n }\n attributes(this.element, { 'role': 'spinbutton', 'tabindex': '0', 'autocomplete': 'off' });\n var localeText = {\n incrementTitle: 'Increment value', decrementTitle: 'Decrement value', placeholder: this.placeholder\n };\n this.l10n = new L10n('numerictextbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('numerictextbox'));\n }\n this.isValidState = true;\n this.inputStyle = null;\n this.inputName = null;\n this.cultureInfo = {};\n this.initCultureInfo();\n this.initCultureFunc();\n this.prevValue = this.value;\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if (this.formEle) {\n this.inputEleValue = this.value;\n }\n this.validateMinMax();\n this.validateStep();\n if (this.placeholder === null) {\n this.updatePlaceholder();\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.render = function () {\n if (this.element.tagName.toLowerCase() === 'input') {\n this.createWrapper();\n if (this.showSpinButton) {\n this.spinBtnCreation();\n }\n this.setElementWidth(this.width);\n if (!this.container.classList.contains('e-input-group')) {\n this.container.classList.add('e-input-group');\n }\n this.changeValue(this.value === null || isNaN(this.value) ?\n null : this.strictMode ? this.trimValue(this.value) : this.value);\n this.wireEvents();\n if (this.value !== null && !isNaN(this.value)) {\n if (this.decimals) {\n this.setProperties({ value: this.roundNumber(this.value, this.decimals) }, true);\n }\n }\n if (this.element.getAttribute('value') || this.value) {\n this.element.setAttribute('value', this.element.value);\n this.hiddenInput.setAttribute('value', this.hiddenInput.value);\n }\n this.elementPrevValue = this.element.value;\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n }\n };\n NumericTextBox.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'step', 'disabled', 'readonly', 'style', 'name', 'placeholder'];\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(prop) === 'disabled' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(prop) === 'readonly' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['value'] === undefined)) || isDynamic) {\n var setNumber = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n this.setProperties(setValue(prop, setNumber, {}), !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['min'] === undefined)) || isDynamic) {\n var minValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (minValue !== null && !isNaN(minValue)) {\n this.setProperties(setValue(prop, minValue, {}), !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['max'] === undefined)) || isDynamic) {\n var maxValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (maxValue !== null && !isNaN(maxValue)) {\n this.setProperties(setValue(prop, maxValue, {}), !isDynamic);\n }\n }\n break;\n case 'step':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['step'] === undefined)) || isDynamic) {\n var stepValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (stepValue !== null && !isNaN(stepValue)) {\n this.setProperties(setValue(prop, stepValue, {}), !isDynamic);\n }\n }\n break;\n case 'style':\n this.inputStyle = this.element.getAttribute(prop);\n break;\n case 'name':\n this.inputName = this.element.getAttribute(prop);\n break;\n default:\n {\n var value = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if ((value !== null && !isNaN(value)) || (prop === 'value')) {\n this.setProperties(setValue(prop, value, {}), true);\n }\n }\n break;\n }\n }\n }\n };\n NumericTextBox.prototype.updatePlaceholder = function () {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n };\n NumericTextBox.prototype.initCultureFunc = function () {\n this.instance = new Internationalization(this.locale);\n };\n NumericTextBox.prototype.initCultureInfo = function () {\n this.cultureInfo.format = this.format;\n if (getValue('currency', this) !== null) {\n setValue('currency', this.currency, this.cultureInfo);\n this.setProperties({ currencyCode: this.currency }, true);\n }\n };\n /* Wrapper creation */\n NumericTextBox.prototype.createWrapper = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getNumericValidClassList(this.cssClass);\n }\n var inputObj = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValue,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n enabled: this.enabled\n }\n }, this.createElement);\n this.inputWrapper = inputObj;\n this.container = inputObj.container;\n this.container.setAttribute('class', ROOT + ' ' + this.container.getAttribute('class'));\n this.updateHTMLAttrToWrapper();\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n this.hiddenInput = (this.createElement('input', { attrs: { type: 'text',\n 'validateHidden': 'true', 'aria-label': 'hidden', 'class': HIDDENELEMENT } }));\n this.inputName = this.inputName !== null ? this.inputName : this.element.id;\n this.element.removeAttribute('name');\n if (this.isAngular && this.angularTagName === 'EJS-NUMERICTEXTBOX' && this.cloneElement.id.length > 0) {\n attributes(this.hiddenInput, { 'name': this.cloneElement.id });\n }\n else {\n attributes(this.hiddenInput, { 'name': this.inputName });\n }\n this.container.insertBefore(this.hiddenInput, this.container.childNodes[1]);\n this.updateDataAttribute(false);\n if (this.inputStyle !== null) {\n attributes(this.container, { 'style': this.inputStyle });\n }\n };\n NumericTextBox.prototype.updateDataAttribute = function (isDynamic) {\n var attr = {};\n if (!isDynamic) {\n for (var a = 0; a < this.element.attributes.length; a++) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n else {\n attr = this.htmlAttributes;\n }\n for (var _i = 0, _a = Object.keys(attr); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key.indexOf('data') === 0) {\n this.hiddenInput.setAttribute(key, attr[\"\" + key]);\n }\n }\n };\n NumericTextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n };\n NumericTextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getNumericValidClassList(newClass), [this.container], this.getNumericValidClassList(oldClass));\n };\n NumericTextBox.prototype.getNumericValidClassList = function (numericClassName) {\n var result = numericClassName;\n if (!isNullOrUndefined(numericClassName) && numericClassName !== '') {\n result = (numericClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n NumericTextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) > -1) {\n if (pro === 'class') {\n var updatedClassValue = this.getNumericValidClassList(this.htmlAttributes[\"\" + pro]);\n if (updatedClassValue !== '') {\n addClass([this.container], updatedClassValue.split(' '));\n }\n }\n else if (pro === 'style') {\n var numericStyle = this.container.getAttribute(pro);\n numericStyle = !isNullOrUndefined(numericStyle) ? (numericStyle + this.htmlAttributes[\"\" + pro]) :\n this.htmlAttributes[\"\" + pro];\n this.container.setAttribute(pro, numericStyle);\n }\n else {\n this.container.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n }\n };\n NumericTextBox.prototype.setElementWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n /* Spinner creation */\n NumericTextBox.prototype.spinBtnCreation = function () {\n this.spinDown = Input.appendSpan(SPINICON + ' ' + SPINDOWN, this.container, this.createElement);\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle')\n });\n this.spinUp = Input.appendSpan(SPINICON + ' ' + SPINUP, this.container, this.createElement);\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle')\n });\n this.wireSpinBtnEvents();\n };\n NumericTextBox.prototype.validateMinMax = function () {\n if (!(typeof (this.min) === 'number' && !isNaN(this.min))) {\n this.setProperties({ min: -(Number.MAX_VALUE) }, true);\n }\n if (!(typeof (this.max) === 'number' && !isNaN(this.max))) {\n this.setProperties({ max: Number.MAX_VALUE }, true);\n }\n if (this.decimals !== null) {\n if (this.min !== -(Number.MAX_VALUE)) {\n this.setProperties({ min: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.min)) }, true);\n }\n if (this.max !== (Number.MAX_VALUE)) {\n this.setProperties({ max: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.max)) }, true);\n }\n }\n this.setProperties({ min: this.min > this.max ? this.max : this.min }, true);\n if (this.min !== -(Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemin': this.min.toString() });\n }\n if (this.max !== (Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemax': this.max.toString() });\n }\n };\n NumericTextBox.prototype.formattedValue = function (decimals, value) {\n return this.instance.getNumberFormat({\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals, useGrouping: false\n })(value);\n };\n NumericTextBox.prototype.validateStep = function () {\n if (this.decimals !== null) {\n this.setProperties({ step: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.step)) }, true);\n }\n };\n NumericTextBox.prototype.action = function (operation, event) {\n this.isInteract = true;\n var value = this.isFocused ? this.instance.getNumberParser({ format: 'n' })(this.element.value) : this.value;\n this.changeValue(this.performAction(value, this.step, operation));\n this.raiseChangeEvent(event);\n };\n NumericTextBox.prototype.checkErrorClass = function () {\n if (this.isValidState) {\n removeClass([this.container], ERROR);\n }\n else {\n addClass([this.container], ERROR);\n }\n attributes(this.element, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n NumericTextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n NumericTextBox.prototype.resetHandler = function (e) {\n e.preventDefault();\n if (!(this.inputWrapper.clearButton.classList.contains('e-clear-icon-hide')) || this.inputWrapper.container.classList.contains('e-static-clear')) {\n this.clear(e);\n }\n this.isInteract = true;\n this.raiseChangeEvent(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NumericTextBox.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.setElementValue('');\n this.hiddenInput.value = '';\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.resetFormHandler = function () {\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.updateValue(null);\n }\n else {\n this.updateValue(this.inputEleValue);\n }\n };\n NumericTextBox.prototype.setSpinButton = function () {\n if (!isNullOrUndefined(this.spinDown)) {\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle'),\n 'aria-label': this.l10n.getConstant('decrementTitle')\n });\n }\n if (!isNullOrUndefined(this.spinUp)) {\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle'),\n 'aria-label': this.l10n.getConstant('incrementTitle')\n });\n }\n };\n NumericTextBox.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'input', this.inputHandler, this);\n EventHandler.add(this.element, 'keypress', this.keyPressHandler, this);\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'paste', this.pasteHandler, this);\n if (this.enabled) {\n this.bindClearEvent();\n if (this.formEle) {\n EventHandler.add(this.formEle, 'reset', this.resetFormHandler, this);\n }\n }\n };\n NumericTextBox.prototype.wireSpinBtnEvents = function () {\n /* bind spin button events */\n EventHandler.add(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n };\n NumericTextBox.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'blur', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'input', this.inputHandler);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.element, 'keypress', this.keyPressHandler);\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'paste', this.pasteHandler);\n if (this.formEle) {\n EventHandler.remove(this.formEle, 'reset', this.resetFormHandler);\n }\n };\n NumericTextBox.prototype.unwireSpinBtnEvents = function () {\n /* unbind spin button events */\n EventHandler.remove(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n };\n NumericTextBox.prototype.changeHandler = function (event) {\n event.stopPropagation();\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n };\n NumericTextBox.prototype.raiseChangeEvent = function (event) {\n this.inputValue = (isNullOrUndefined(this.inputValue) || isNaN(this.inputValue)) ? null : this.inputValue;\n if (this.prevValue !== this.value || this.prevValue !== this.inputValue) {\n var eventArgs = {};\n this.changeEventArgs = { value: this.value, previousValue: this.prevValue, isInteracted: this.isInteract,\n isInteraction: this.isInteract, event: event };\n if (event) {\n this.changeEventArgs.event = event;\n }\n if (this.changeEventArgs.event === undefined) {\n this.changeEventArgs.isInteracted = false;\n this.changeEventArgs.isInteraction = false;\n }\n merge(eventArgs, this.changeEventArgs);\n this.prevValue = this.value;\n this.isInteract = false;\n this.elementPrevValue = this.element.value;\n this.preventChange = false;\n this.trigger('change', eventArgs);\n }\n };\n NumericTextBox.prototype.pasteHandler = function () {\n var _this = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var beforeUpdate = this.element.value;\n setTimeout(function () {\n if (!_this.numericRegex().test(_this.element.value)) {\n _this.setElementValue(beforeUpdate);\n }\n });\n };\n NumericTextBox.prototype.preventHandler = function () {\n var _this = this;\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n setTimeout(function () {\n if (_this.element.selectionStart > 0) {\n var currentPos = _this.element.selectionStart;\n var prevPos = _this.element.selectionStart - 1;\n var start = 0;\n var valArray = _this.element.value.split('');\n var numericObject = getNumericObject(_this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var ignoreKeyCode = decimalSeparator.charCodeAt(0);\n if (_this.element.value[prevPos] === ' ' && _this.element.selectionStart > 0 && !iOS) {\n if (isNullOrUndefined(_this.prevVal)) {\n _this.element.value = _this.element.value.trim();\n }\n else if (prevPos !== 0) {\n _this.element.value = _this.prevVal;\n }\n else if (prevPos === 0) {\n _this.element.value = _this.element.value.trim();\n }\n _this.element.setSelectionRange(prevPos, prevPos);\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 1]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 1]) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n _this.element.setSelectionRange(prevPos, prevPos);\n if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) && _this.element.selectionStart > 0\n && _this.element.value.length) {\n _this.preventHandler();\n }\n }\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 2])) && _this.element.selectionStart > 1 &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 2]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 2]) &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.setSelectionRange(prevPos, prevPos);\n _this.nextEle = _this.element.value[_this.element.selectionStart];\n _this.cursorPosChanged = true;\n _this.preventHandler();\n }\n }\n if (_this.cursorPosChanged === true && _this.element.value[_this.element.selectionStart] === _this.nextEle &&\n isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1]))) {\n _this.element.setSelectionRange(_this.element.selectionStart + 1, _this.element.selectionStart + 1);\n _this.cursorPosChanged = false;\n _this.nextEle = null;\n }\n if (_this.element.value.trim() === '') {\n _this.element.setSelectionRange(start, start);\n }\n if (_this.element.selectionStart > 0) {\n if ((_this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === 45) && _this.element.selectionStart > 1) {\n if (isNullOrUndefined(_this.prevVal)) {\n // eslint-disable-next-line no-self-assign\n _this.element.value = _this.element.value;\n }\n else {\n _this.element.value = _this.prevVal;\n }\n _this.element.setSelectionRange(_this.element.selectionStart, _this.element.selectionStart);\n }\n if (_this.element.value[_this.element.selectionStart - 1] === decimalSeparator && _this.decimals === 0 && _this.validateDecimalOnType) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n }\n }\n _this.prevVal = _this.element.value;\n }\n });\n };\n NumericTextBox.prototype.keyUpHandler = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n if (!iOS && Browser.isDevice) {\n this.preventHandler();\n }\n var parseValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parseValue = parseValue === null || isNaN(parseValue) ? null : parseValue;\n this.hiddenInput.value = parseValue || parseValue === 0 ? parseValue.toString() : null;\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.inputHandler = function (event) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var numerictextboxObj = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n var fireFox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n if ((fireFox || iOS) && Browser.isDevice) {\n this.preventHandler();\n }\n /* istanbul ignore next */\n if (this.isAngular\n && this.element.value !== getValue('decimal', getNumericObject(this.locale))\n && this.element.value !== getValue('minusSign', getNumericObject(this.locale))) {\n var parsedValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parsedValue = isNaN(parsedValue) ? null : parsedValue;\n numerictextboxObj.localChange({ value: parsedValue });\n this.preventChange = true;\n }\n if (this.isVue) {\n var current = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n var previous = this.instance.getNumberParser({ format: 'n' })(this.elementPrevValue);\n //EJ2-54963-if type \".\" or \".0\" or \"-.0\" it converts to \"0\" automatically when binding v-model\n var nonZeroRegex = new RegExp('[^0-9]+$');\n if (nonZeroRegex.test(this.element.value) || ((this.elementPrevValue.indexOf('.') !== -1 || this.elementPrevValue.indexOf('-') !== -1) && this.element.value[this.element.value.length - 1] === '0')) {\n current = this.value;\n }\n var eventArgs = {\n event: event,\n value: (current === null || isNaN(current) ? null : current),\n previousValue: (previous === null || isNaN(previous) ? null : previous)\n };\n this.preventChange = true;\n this.elementPrevValue = this.element.value;\n this.trigger('input', eventArgs);\n }\n };\n NumericTextBox.prototype.keyDownHandler = function (event) {\n if (!this.readonly) {\n switch (event.keyCode) {\n case 38:\n event.preventDefault();\n this.action(INCREMENT, event);\n break;\n case 40:\n event.preventDefault();\n this.action(DECREMENT, event);\n break;\n default: break;\n }\n }\n };\n NumericTextBox.prototype.performAction = function (value, step, operation) {\n if (value === null || isNaN(value)) {\n value = 0;\n }\n var updatedValue = operation === INCREMENT ? value + step : value - step;\n updatedValue = this.correctRounding(value, step, updatedValue);\n return this.strictMode ? this.trimValue(updatedValue) : updatedValue;\n };\n NumericTextBox.prototype.correctRounding = function (value, step, result) {\n var floatExp = new RegExp('[,.](.*)');\n var floatValue = floatExp.test(value.toString());\n var floatStep = floatExp.test(step.toString());\n if (floatValue || floatStep) {\n var valueCount = floatValue ? floatExp.exec(value.toString())[0].length : 0;\n var stepCount = floatStep ? floatExp.exec(step.toString())[0].length : 0;\n var max = Math.max(valueCount, stepCount);\n return value = this.roundValue(result, max);\n }\n return result;\n };\n NumericTextBox.prototype.roundValue = function (result, precision) {\n precision = precision || 0;\n var divide = Math.pow(10, precision);\n return result *= divide, result = Math.round(result) / divide;\n };\n NumericTextBox.prototype.updateValue = function (value, event) {\n if (event) {\n this.isInteract = true;\n }\n if (value !== null && !isNaN(value)) {\n if (this.decimals) {\n value = this.roundNumber(value, this.decimals);\n }\n }\n this.inputValue = value;\n this.changeValue(value === null || isNaN(value) ? null : this.strictMode ? this.trimValue(value) : value);\n /* istanbul ignore next */\n if (!this.isDynamicChange) {\n this.raiseChangeEvent(event);\n }\n };\n NumericTextBox.prototype.updateCurrency = function (prop, propVal) {\n setValue(prop, propVal, this.cultureInfo);\n this.updateValue(this.value);\n };\n NumericTextBox.prototype.changeValue = function (value) {\n if (!(value || value === 0)) {\n value = null;\n this.setProperties({ value: value }, true);\n }\n else {\n var numberOfDecimals = this.getNumberOfDecimals(value);\n this.setProperties({ value: this.roundNumber(value, numberOfDecimals) }, true);\n }\n this.modifyText();\n if (!this.strictMode) {\n this.validateState();\n }\n };\n NumericTextBox.prototype.modifyText = function () {\n if (this.value || this.value === 0) {\n var value = this.formatNumber();\n var elementValue = this.isFocused ? value : this.instance.getNumberFormat(this.cultureInfo)(this.value);\n this.setElementValue(elementValue);\n attributes(this.element, { 'aria-valuenow': value });\n this.hiddenInput.value = this.value.toString();\n if (this.value !== null && this.serverDecimalSeparator) {\n this.hiddenInput.value = this.hiddenInput.value.replace('.', this.serverDecimalSeparator);\n }\n }\n else {\n this.setElementValue('');\n this.element.removeAttribute('aria-valuenow');\n this.hiddenInput.value = null;\n }\n };\n NumericTextBox.prototype.setElementValue = function (val, element) {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, this.showClearButton);\n };\n NumericTextBox.prototype.validateState = function () {\n this.isValidState = true;\n if (this.value || this.value === 0) {\n this.isValidState = !(this.value > this.max || this.value < this.min);\n }\n this.checkErrorClass();\n };\n NumericTextBox.prototype.getNumberOfDecimals = function (value) {\n var numberOfDecimals;\n // eslint-disable-next-line no-useless-escape\n var EXPREGEXP = new RegExp('[eE][\\-+]?([0-9]+)');\n var valueString = value.toString();\n if (EXPREGEXP.test(valueString)) {\n var result = EXPREGEXP.exec(valueString);\n if (!isNullOrUndefined(result)) {\n valueString = value.toFixed(Math.min(parseInt(result[1], 10), 20));\n }\n }\n var decimalPart = valueString.split('.')[1];\n numberOfDecimals = !decimalPart || !decimalPart.length ? 0 : decimalPart.length;\n if (this.decimals !== null) {\n numberOfDecimals = numberOfDecimals < this.decimals ? numberOfDecimals : this.decimals;\n }\n return numberOfDecimals;\n };\n NumericTextBox.prototype.formatNumber = function () {\n var numberOfDecimals = this.getNumberOfDecimals(this.value);\n return this.instance.getNumberFormat({\n maximumFractionDigits: numberOfDecimals,\n minimumFractionDigits: numberOfDecimals, useGrouping: false\n })(this.value);\n };\n NumericTextBox.prototype.trimValue = function (value) {\n if (value > this.max) {\n return this.max;\n }\n if (value < this.min) {\n return this.min;\n }\n return value;\n };\n NumericTextBox.prototype.roundNumber = function (value, precision) {\n var result = value;\n var decimals = precision || 0;\n var result1 = result.toString().split('e');\n result = Math.round(Number(result1[0] + 'e' + (result1[1] ? (Number(result1[1]) + decimals) : decimals)));\n var result2 = result.toString().split('e');\n result = Number(result2[0] + 'e' + (result2[1] ? (Number(result2[1]) - decimals) : -decimals));\n return Number(result.toFixed(decimals));\n };\n NumericTextBox.prototype.cancelEvent = function (event) {\n event.preventDefault();\n return false;\n };\n NumericTextBox.prototype.keyPressHandler = function (event) {\n if (!this.enabled || this.readonly) {\n return true;\n }\n if (!Browser.isDevice && Browser.info.version === '11.0' && event.keyCode === 13) {\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n return true;\n }\n if (event.which === 0 || event.metaKey || event.ctrlKey || event.keyCode === 8 || event.keyCode === 13) {\n return true;\n }\n var currentChar = String.fromCharCode(event.which);\n var decimalSeparator = getValue('decimal', getNumericObject(this.locale));\n var isAlterNumPadDecimalChar = event.code === 'NumpadDecimal' && currentChar !== decimalSeparator;\n //EJ2-59813-replace the culture decimal separator value with numberpad decimal separator value when culture decimal separator and numberpad decimal separator are different\n if (isAlterNumPadDecimalChar) {\n currentChar = decimalSeparator;\n }\n var text = this.element.value;\n text = text.substring(0, this.element.selectionStart) + currentChar + text.substring(this.element.selectionEnd);\n if (!this.numericRegex().test(text)) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n else {\n //EJ2-59813-update the numberpad decimal separator and update the cursor position\n if (isAlterNumPadDecimalChar) {\n var start = this.element.selectionStart + 1;\n this.element.value = text;\n this.element.setSelectionRange(start, start);\n event.preventDefault();\n event.stopPropagation();\n }\n return true;\n }\n };\n NumericTextBox.prototype.numericRegex = function () {\n var numericObject = getNumericObject(this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var fractionRule = '*';\n if (decimalSeparator === DECIMALSEPARATOR) {\n decimalSeparator = '\\\\' + decimalSeparator;\n }\n if (this.decimals === 0 && this.validateDecimalOnType) {\n return INTREGEXP;\n }\n if (this.decimals && this.validateDecimalOnType) {\n fractionRule = '{0,' + this.decimals + '}';\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n return new RegExp('^(-)?(((\\\\d+(' + decimalSeparator + '\\\\d' + fractionRule +\n ')?)|(' + decimalSeparator + '\\\\d' + fractionRule + ')))?$');\n };\n NumericTextBox.prototype.mouseWheel = function (event) {\n event.preventDefault();\n var delta;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var rawEvent = event;\n if (rawEvent.wheelDelta) {\n delta = rawEvent.wheelDelta / 120;\n }\n else if (rawEvent.detail) {\n delta = -rawEvent.detail / 3;\n }\n if (delta > 0) {\n this.action(INCREMENT, event);\n }\n else if (delta < 0) {\n this.action(DECREMENT, event);\n }\n this.cancelEvent(event);\n };\n NumericTextBox.prototype.focusHandler = function (event) {\n var _this = this;\n clearTimeout(selectionTimeOut);\n this.focusEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('focus', this.focusEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n this.isFocused = true;\n removeClass([this.container], ERROR);\n this.prevValue = this.value;\n if ((this.value || this.value === 0)) {\n var formatValue_1 = this.formatNumber();\n this.setElementValue(formatValue_1);\n if (!this.isPrevFocused) {\n if (!Browser.isDevice && Browser.info.version === '11.0') {\n this.element.setSelectionRange(0, formatValue_1.length);\n }\n else {\n var delay = (Browser.isDevice && Browser.isIos) ? 600 : 0;\n selectionTimeOut = setTimeout(function () {\n _this.element.setSelectionRange(0, formatValue_1.length);\n }, delay);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.add(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel, this);\n }\n };\n NumericTextBox.prototype.focusOutHandler = function (event) {\n var _this = this;\n this.blurEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('blur', this.blurEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isPrevFocused) {\n event.preventDefault();\n if (Browser.isDevice) {\n var value_1 = this.element.value;\n this.element.focus();\n this.isPrevFocused = false;\n var ele_1 = this.element;\n setTimeout(function () {\n _this.setElementValue(value_1, ele_1);\n }, 200);\n }\n }\n else {\n this.isFocused = false;\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput);\n if (!Browser.isDevice) {\n EventHandler.remove(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel);\n }\n }\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var focusEvent = document.createEvent('FocusEvent');\n focusEvent.initEvent('focusout', false, true);\n element.dispatchEvent(focusEvent);\n }\n };\n NumericTextBox.prototype.mouseDownOnSpinner = function (event) {\n var _this = this;\n if (this.isFocused) {\n this.isPrevFocused = true;\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var result = this.getElementData(event);\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.add(target, 'mouseleave', this.mouseUpClick, this);\n this.timeOut = setInterval(function () {\n _this.isCalled = true;\n _this.action(action, event);\n }, 150);\n EventHandler.add(document, 'mouseup', this.mouseUpClick, this);\n };\n NumericTextBox.prototype.touchMoveOnSpinner = function (event) {\n var target;\n if (event.type === 'touchmove') {\n var touchEvent = event.touches;\n target = touchEvent.length && document.elementFromPoint(touchEvent[0].pageX, touchEvent[0].pageY);\n }\n else {\n target = document.elementFromPoint(event.clientX, event.clientY);\n }\n if (!(target.classList.contains(SPINICON))) {\n clearInterval(this.timeOut);\n }\n };\n NumericTextBox.prototype.mouseUpOnSpinner = function (event) {\n this.prevValue = this.value;\n if (this.isPrevFocused) {\n this.element.focus();\n if (!Browser.isDevice) {\n this.isPrevFocused = false;\n }\n }\n if (!Browser.isDevice) {\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.remove(target, 'mouseleave', this.mouseUpClick);\n if (!this.isCalled) {\n this.action(action, event);\n }\n this.isCalled = false;\n EventHandler.remove(document, 'mouseup', this.mouseUpClick);\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.getElementData = function (event) {\n if ((event.which && event.which === 3) || (event.button && event.button === 2)\n || !this.enabled || this.readonly) {\n return false;\n }\n clearInterval(this.timeOut);\n return true;\n };\n NumericTextBox.prototype.floatLabelTypeUpdate = function () {\n Input.removeFloating(this.inputWrapper);\n var hiddenInput = this.hiddenInput;\n this.hiddenInput.remove();\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n this.container.insertBefore(hiddenInput, this.container.childNodes[1]);\n };\n NumericTextBox.prototype.mouseUpClick = function (event) {\n event.stopPropagation();\n clearInterval(this.timeOut);\n this.isCalled = false;\n if (this.spinUp) {\n EventHandler.remove(this.spinUp, 'mouseleave', this.mouseUpClick);\n }\n if (this.spinDown) {\n EventHandler.remove(this.spinDown, 'mouseleave', this.mouseUpClick);\n }\n };\n /**\n * Increments the NumericTextBox value with the specified step value.\n *\n * @param {number} step - Specifies the value used to increment the NumericTextBox value.\n * if its not given then numeric value will be incremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.increment = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, INCREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Decrements the NumericTextBox value with specified step value.\n *\n * @param {number} step - Specifies the value used to decrement the NumericTextBox value.\n * if its not given then numeric value will be decremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.decrement = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, DECREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n NumericTextBox.prototype.destroy = function () {\n this.unwireEvents();\n detach(this.hiddenInput);\n if (this.showSpinButton) {\n this.unwireSpinBtnEvents();\n detach(this.spinUp);\n detach(this.spinDown);\n }\n var attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly',\n 'aria-disabled', 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'tabindex',\n 'aria-valuemin', 'aria-valuemax', 'aria-valuenow', 'aria-invalid'];\n for (var i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n this.container.insertAdjacentElement('afterend', this.element);\n detach(this.container);\n this.spinUp = null;\n this.spinDown = null;\n this.container = null;\n this.hiddenInput = null;\n this.changeEventArgs = null;\n this.blurEventArgs = null;\n this.focusEventArgs = null;\n this.inputWrapper = null;\n Input.destroy();\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Returns the value of NumericTextBox with the format applied to the NumericTextBox.\n *\n */\n NumericTextBox.prototype.getText = function () {\n return this.element.value;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n addClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n removeClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string}\n */\n NumericTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {NumericTextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {NumericTextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.container]);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n else {\n this.element.removeAttribute('aria-readonly');\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.updateDataAttribute(true);\n this.checkAttributes(true);\n Input.validateInputType(this.container, this.element);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.element);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'step':\n this.step = newProp.step;\n this.validateStep();\n break;\n case 'showSpinButton':\n this.updateSpinButton(newProp);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n this.floatLabelTypeUpdate();\n break;\n case 'value':\n this.isDynamicChange = (this.isAngular || this.isVue) && this.preventChange;\n this.updateValue(newProp.value);\n if (this.isDynamicChange) {\n this.preventChange = false;\n this.isDynamicChange = false;\n }\n break;\n case 'min':\n case 'max':\n setValue(prop, getValue(prop, newProp), this);\n this.validateMinMax();\n this.updateValue(this.value);\n break;\n case 'strictMode':\n this.strictMode = newProp.strictMode;\n this.updateValue(this.value);\n this.validateState();\n break;\n case 'locale':\n this.initCultureFunc();\n this.l10n.setLocale(this.locale);\n this.setSpinButton();\n this.updatePlaceholder();\n Input.setPlaceholder(this.placeholder, this.element);\n this.updateValue(this.value);\n break;\n case 'currency':\n {\n var propVal = getValue(prop, newProp);\n this.setProperties({ currencyCode: propVal }, true);\n this.updateCurrency(prop, propVal);\n }\n break;\n case 'currencyCode':\n {\n var propValue = getValue(prop, newProp);\n this.setProperties({ currency: propValue }, true);\n this.updateCurrency('currency', propValue);\n }\n break;\n case 'format':\n setValue(prop, getValue(prop, newProp), this);\n this.initCultureInfo();\n this.updateValue(this.value);\n break;\n case 'decimals':\n this.decimals = newProp.decimals;\n this.updateValue(this.value);\n }\n }\n };\n NumericTextBox.prototype.updateClearButton = function (newProp) {\n Input.setClearButton(newProp.showClearButton, this.element, this.inputWrapper, undefined, this.createElement);\n this.bindClearEvent();\n };\n NumericTextBox.prototype.updateSpinButton = function (newProp) {\n if (newProp.showSpinButton) {\n this.spinBtnCreation();\n }\n else {\n detach(this.spinUp);\n detach(this.spinDown);\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n NumericTextBox.prototype.getModuleName = function () {\n return 'numerictextbox';\n };\n __decorate([\n Property('')\n ], NumericTextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"value\", void 0);\n __decorate([\n Property(-(Number.MAX_VALUE))\n ], NumericTextBox.prototype, \"min\", void 0);\n __decorate([\n Property(Number.MAX_VALUE)\n ], NumericTextBox.prototype, \"max\", void 0);\n __decorate([\n Property(1)\n ], NumericTextBox.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property({})\n ], NumericTextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"showSpinButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('n2')\n ], NumericTextBox.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"decimals\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currency\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currencyCode\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"validateDecimalOnType\", void 0);\n __decorate([\n Property('Never')\n ], NumericTextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"blur\", void 0);\n NumericTextBox = __decorate([\n NotifyPropertyChanges\n ], NumericTextBox);\n return NumericTextBox;\n}(Component));\nexport { NumericTextBox };\n","/* tslint:disable-next-line:max-line-length */\nimport { EventHandler, isNullOrUndefined, extend, classList, addClass, removeClass, Browser, getValue, setValue, createElement } from '@syncfusion/ej2-base';\nimport { parentsUntil, getUid, appendChildren, getDatePredicate, getObject, extendObjWithFn, eventPromise, setChecked, clearReactVueTemplates, padZero, Global } from '../base/util';\nimport { remove, debounce, Internationalization, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getForeignData } from '../base/util';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { getFilterMenuPostion, toogleCheckbox, createCboxWithWrap, removeAddCboxClasses, getColumnByForeignKeyValue } from '../base/util';\n/**\n * @hidden\n * `CheckBoxFilterBase` module is used to handle filtering action.\n */\nvar CheckBoxFilterBase = /** @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n *\n * @param {IXLFilter} parent - specifies the IXLFilter\n * @hidden\n */\n function CheckBoxFilterBase(parent) {\n this.isExecuteLocal = false;\n this.existingPredicate = {};\n this.foreignKeyQuery = new Query();\n /** @hidden */\n this.filterState = true;\n this.values = {};\n this.renderEmpty = false;\n this.isCheckboxFilterTemplate = false;\n this.infiniteRenderMod = false;\n // for infinite scroll ui\n this.infiniteInitialLoad = false;\n this.infiniteSearchValChange = false;\n this.infinitePermenantLocalData = [];\n this.infiniteQueryExecutionPending = false;\n this.infiniteSkipCnt = 0;\n this.infiniteScrollAppendDiff = 0;\n this.prevInfiniteScrollDirection = '';\n this.infiniteLoadedElem = [];\n this.infiniteDataCount = 0;\n this.infiniteLocalSelectAll = true;\n this.localInfiniteSelectAllClicked = false;\n this.localInfiniteSelectionInteracted = false;\n this.infiniteManualSelectMaintainPred = [];\n this.parent = parent;\n this.id = this.parent.element.id;\n this.valueFormatter = new ValueFormatter(this.parent.locale);\n this.cBoxTrue = createCheckBox(this.parent.createElement, false, { checked: true, label: ' ' });\n this.cBoxFalse = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.cBoxTrue.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { type: 'checkbox' }\n }), this.cBoxTrue.firstChild);\n this.cBoxFalse.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { 'type': 'checkbox' }\n }), this.cBoxFalse.firstChild);\n this.cBoxFalse.querySelector('.e-frame').classList.add('e-uncheck');\n if (this.parent.enableRtl) {\n addClass([this.cBoxTrue, this.cBoxFalse], ['e-rtl']);\n }\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([this.cBoxTrue, this.cBoxFalse], this.parent.cssClass.split(' '));\n }\n else {\n addClass([this.cBoxTrue, this.cBoxFalse], [this.parent.cssClass]);\n }\n }\n }\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.destroy = function () {\n this.closeDialog();\n };\n CheckBoxFilterBase.prototype.wireEvents = function () {\n EventHandler.add(this.dlg, 'click', this.clickHandler, this);\n EventHandler.add(this.dlg, 'keyup', this.keyupHandler, this);\n this.searchHandler = debounce(this.searchBoxKeyUp, 200);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.add(elem, 'keyup', this.searchHandler, this);\n EventHandler.add(elem, 'input', this.searchHandler, this);\n }\n };\n CheckBoxFilterBase.prototype.unWireEvents = function () {\n EventHandler.remove(this.dlg, 'click', this.clickHandler);\n EventHandler.remove(this.dlg, 'keyup', this.keyupHandler);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.remove(elem, 'keyup', this.searchHandler);\n EventHandler.remove(elem, 'input', this.searchHandler);\n }\n };\n CheckBoxFilterBase.prototype.foreignKeyFilter = function (args, fColl, mPredicate) {\n var _this = this;\n var fPredicate = {};\n var filterCollection = [];\n var query = this.foreignKeyQuery.clone();\n this.options.column.dataSource.\n executeQuery(query.where(mPredicate)).then(function (e) {\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: _this.options.column });\n args.ejpredicate = fPredicate.predicate.predicates;\n var fpred = fPredicate.predicate.predicates;\n for (var i = 0; i < fpred.length; i++) {\n filterCollection.push({\n field: fpred[parseInt(i.toString(), 10)].field,\n predicate: 'or',\n matchCase: fpred[parseInt(i.toString(), 10)].ignoreCase,\n ignoreAccent: fpred[parseInt(i.toString(), 10)].ignoreAccent,\n operator: fpred[parseInt(i.toString(), 10)].operator,\n value: fpred[parseInt(i.toString(), 10)].value,\n type: _this.options.type\n });\n }\n args.filterCollection = filterCollection.length ? filterCollection :\n fColl.filter(function (col) { return col.field = _this.options.field; });\n _this.options.handler(args);\n });\n };\n CheckBoxFilterBase.prototype.foreignFilter = function (args, value) {\n var operator = this.options.isRemote ?\n (this.options.column.type === 'string' ? 'contains' : 'equal') : (this.options.column.type ? 'contains' : 'equal');\n var initalPredicate = new Predicate(this.options.column.foreignKeyValue, operator, value, true, this.options.ignoreAccent);\n this.foreignKeyFilter(args, [args.filterCollection], initalPredicate);\n };\n CheckBoxFilterBase.prototype.searchBoxClick = function (e) {\n var target = e.target;\n if (target.classList.contains('e-searchclear')) {\n this.sInput.value = target.classList.contains('e-chkcancel-icon') ? '' : this.sInput.value;\n if (this.isCheckboxFilterTemplate) {\n this.parent.notify('refreshCheckbox', { event: e });\n }\n else {\n this.refreshCheckboxes();\n }\n this.updateSearchIcon();\n this.sInput.focus();\n }\n };\n CheckBoxFilterBase.prototype.searchBoxKeyUp = function (e) {\n if (isNullOrUndefined(e) || (e.key !== 'ArrowUp' && e.key !== 'ArrowDown' && e.key !== 'Tab' && !(e.key === 'Tab' && e.shiftKey))) {\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n if (this.isCheckboxFilterTemplate) {\n this.parent.notify('refreshCheckbox', { event: e });\n }\n else {\n this.refreshCheckboxes();\n }\n this.updateSearchIcon();\n }\n };\n CheckBoxFilterBase.prototype.updateSearchIcon = function () {\n if (this.sInput.value.length) {\n classList(this.sIcon, ['e-chkcancel-icon'], ['e-search-icon']);\n if (!isNullOrUndefined(document.body.querySelector('.e-chkcancel-icon'))) {\n document.body.querySelector('.e-chkcancel-icon').setAttribute('title', this.localeObj.getConstant('Clear'));\n }\n }\n else {\n classList(this.sIcon, ['e-search-icon'], ['e-chkcancel-icon']);\n if (!isNullOrUndefined(document.body.querySelector('.e-searchclear.e-search-icon'))) {\n document.body.querySelector('.e-searchclear.e-search-icon').setAttribute('title', this.localeObj.getConstant('Search'));\n }\n }\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key - Defines localization key\n * @returns {string} - returns localization label\n */\n CheckBoxFilterBase.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n CheckBoxFilterBase.prototype.updateDataSource = function () {\n var dataSource = this.options.dataSource;\n var str = 'object';\n if (!(dataSource instanceof DataManager)) {\n for (var i = 0; i < dataSource.length; i++) {\n // eslint-disable-next-line valid-typeof\n if (typeof dataSource !== str) {\n var obj = {};\n obj[this.options.field] = dataSource[parseInt(i.toString(), 10)];\n dataSource[parseInt(i.toString(), 10)] = obj;\n }\n }\n }\n };\n CheckBoxFilterBase.prototype.updateModel = function (options) {\n this.options = options;\n this.existingPredicate = options.actualPredicate || {};\n this.options.dataSource = options.dataSource;\n this.options.dataManager = options.dataManager ? options.dataManager : options.dataSource;\n this.updateDataSource();\n this.options.type = options.type;\n this.options.format = options.format || '';\n this.options.ignoreAccent = options.ignoreAccent || false;\n this.options.filteredColumns = options.filteredColumns || this.parent.filterSettings.columns;\n this.options.query = options.query || new Query();\n this.options.allowCaseSensitive = options.allowCaseSensitive || false;\n this.options.uid = options.column.uid;\n this.options.disableHtmlEncode = options.column.disableHtmlEncode || false;\n this.values = {};\n this.localeObj = options.localeObj;\n this.isFiltered = options.filteredColumns.length;\n this.infiniteRenderMod = this.parent.filterSettings && this.parent.filterSettings.enableInfiniteScrolling ? true : false;\n this.infiniteUnloadParentExistPred = this.infiniteRenderMod && this.existingPredicate[this.options.column.field] ? this.existingPredicate[this.options.column.field].slice() : [];\n };\n CheckBoxFilterBase.prototype.getAndSetChkElem = function (options) {\n this.dlg = this.parent.createElement('div', {\n id: this.id + this.options.type + '_excelDlg',\n attrs: { uid: this.options.column.uid },\n className: 'e-checkboxfilter e-filter-popup'\n });\n this.sBox = this.parent.createElement('div', { className: 'e-searchcontainer' });\n if (!options.hideSearchbox) {\n this.sInput = this.parent.createElement('input', {\n id: this.id + '_SearchBox',\n className: 'e-searchinput'\n });\n this.sIcon = this.parent.createElement('span', {\n className: 'e-searchclear e-search-icon e-icons e-input-group-icon', attrs: {\n type: 'text', title: this.getLocalizedLabel('Search')\n }\n });\n this.searchBox = this.parent.createElement('span', { className: 'e-searchbox e-fields' });\n this.searchBox.appendChild(this.sInput);\n this.sBox.appendChild(this.searchBox);\n var inputargs = {\n element: this.sInput, floatLabelType: 'Never', properties: {\n placeholder: this.getLocalizedLabel('Search'),\n cssClass: this.parent.cssClass\n }\n };\n Input.createInput(inputargs, this.parent.createElement);\n this.searchBox.querySelector('.e-input-group').appendChild(this.sIcon);\n }\n this.spinner = this.parent.createElement('div', { className: 'e-spinner' }); //for spinner\n this.cBox = this.parent.createElement('div', {\n id: this.id + this.options.type + '_CheckBoxList',\n className: 'e-checkboxlist e-fields'\n });\n this.spinner.appendChild(this.cBox);\n this.sBox.appendChild(this.spinner);\n return this.sBox;\n };\n CheckBoxFilterBase.prototype.showDialog = function (options) {\n var args = {\n requestType: events.filterBeforeOpen,\n columnName: this.options.field, columnType: this.options.type, cancel: false\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrBegin, args);\n if (args.cancel) {\n options.cancel = args.cancel;\n return;\n }\n this.dialogObj = new Dialog({\n visible: false, content: this.sBox,\n close: this.closeDialog.bind(this),\n enableRtl: this.parent.enableRtl,\n width: (!isNullOrUndefined(parentsUntil(options.target, 'e-bigger')))\n || this.parent.element.classList.contains('e-device') ? 260 : 255,\n target: this.parent.element, animationSettings: { effect: 'None' },\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: {\n content: this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true\n }\n },\n {\n click: this.btnClick.bind(this),\n buttonModel: { cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.getLocalizedLabel(this.isExcel ? 'CancelButton' : 'ClearButton') }\n }],\n created: this.dialogCreated.bind(this),\n open: this.dialogOpen.bind(this),\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveFilter(options);\n var dialogLabel = this.parent.filterSettings && this.parent.filterSettings.type === 'CheckBox' ?\n this.getLocalizedLabel('CheckBoxFilterDialogARIA') : this.getLocalizedLabel('ExcelFilterDialogARIA');\n this.dlg.setAttribute('aria-label', dialogLabel);\n if (options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-responsive-dialog > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlg);\n }\n else {\n this.parent.element.appendChild(this.dlg);\n }\n this.dialogObj.appendTo(this.dlg);\n this.dialogObj.element.style.maxHeight = options.isResponsiveFilter ? 'none' : this.options.height + 'px';\n this.dialogObj.show();\n var content = this.dialogObj.element.querySelector('.e-dlg-content');\n content.appendChild(this.sBox);\n this.wireEvents();\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && !this.infiniteRenderMod) {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n else if (this.infiniteRenderMod && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n this.showMask();\n }\n else {\n if (this.infiniteRenderMod) {\n this.cBox.style.marginTop = this.getListHeight(this.cBox) + 'px';\n }\n createSpinner({ target: this.spinner, cssClass: this.parent.cssClass ? this.parent.cssClass : null }, this.parent.createElement);\n showSpinner(this.spinner);\n }\n this.getAllData();\n };\n CheckBoxFilterBase.prototype.renderResponsiveFilter = function (options) {\n if (options.isResponsiveFilter) {\n this.dialogObj.buttons = [{}];\n this.dialogObj.position = { X: '', Y: '' };\n this.dialogObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dialogObj.width = '100%';\n }\n };\n CheckBoxFilterBase.prototype.dialogCreated = function (e) {\n if (this.options.isResponsiveFilter) {\n this.dialogObj.element.style.left = '0px';\n }\n else {\n if (!Browser.isDevice) {\n getFilterMenuPostion(this.options.target, this.dialogObj);\n }\n else {\n this.dialogObj.position = { X: 'center', Y: 'center' };\n }\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, e);\n }\n };\n CheckBoxFilterBase.prototype.openDialog = function (options) {\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n };\n CheckBoxFilterBase.prototype.closeDialog = function () {\n if (this.infiniteRenderMod && this.infinitePermenantLocalData.length && !this.options.isRemote) {\n this.options.dataSource.dataSource.json = this.infinitePermenantLocalData;\n }\n if (this.dialogObj && !this.dialogObj.isDestroyed) {\n this.isBlanks = false;\n var filterTemplateCol = this.options.columns.filter(function (col) { return col.getFilterItemTemplate(); });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var registeredTemplate = this.parent.registeredTemplate;\n if (filterTemplateCol.length && !isNullOrUndefined(registeredTemplate) && registeredTemplate.filterItemTemplate) {\n this.parent.destroyTemplate(['filterItemTemplate']);\n }\n if ((this.parent.isReact || this.parent.isVue) && this.parent.destroyTemplate !== undefined) {\n clearReactVueTemplates(this.parent, ['filterItemTemplate']);\n }\n this.parent.notify(events.filterMenuClose, { field: this.options.field });\n this.dialogObj.destroy();\n this.unWireEvents();\n remove(this.dlg);\n this.dlg = null;\n this.parent.notify(events.filterDialogClose, {});\n }\n };\n /**\n * @param {Column} col - Defines column details\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.clearFilter = function (col) {\n // eslint-disable-next-line max-len\n var args = { instance: this, handler: this.clearFilter, cancel: false };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n this.options.handler({ action: 'clear-filter', field: col ? col.field : this.options.field });\n };\n CheckBoxFilterBase.prototype.btnClick = function (e) {\n if (this.filterState) {\n if ((e.target.tagName.toLowerCase() === 'input' && e.target.classList.contains('e-searchinput')) ||\n e.keyCode === 13) {\n if (!this.isCheckboxFilterTemplate) {\n this.fltrBtnHandler();\n }\n }\n else {\n var text = e.target.firstChild.textContent.toLowerCase();\n if (this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton').toLowerCase() === text) {\n if (!this.isCheckboxFilterTemplate) {\n this.fltrBtnHandler();\n }\n }\n else if (this.getLocalizedLabel('ClearButton').toLowerCase() === text) {\n this.clearFilter();\n }\n }\n this.closeDialog();\n }\n else if (e.target && e.target.firstChild &&\n e.target.firstChild.textContent.toLowerCase() === this.getLocalizedLabel('CancelButton').toLowerCase()) {\n this.closeDialog();\n }\n else if (!(e.target.tagName.toLowerCase() === 'input')) {\n this.clearFilter();\n this.closeDialog();\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(events.afterFilterColumnMenuClose, {});\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.fltrBtnHandler = function () {\n var _this = this;\n if (this.infiniteRenderMod) {\n this.cBox.innerHTML = '';\n appendChildren(this.cBox, this.infiniteLoadedElem.slice());\n }\n var checked = [].slice.call(this.cBox.querySelectorAll('.e-check:not(.e-selectall):not(.e-add-current)'));\n var check = checked;\n var optr = 'equal';\n var ddlValue = this.dialogObj.element.querySelector('.e-dropdownlist');\n if (ddlValue) {\n this.options.operator = optr = ddlValue.ej2_instances[0].value;\n }\n this.isMenuNotEqual = this.options.operator === 'notequal';\n var searchInput;\n if (!this.options.hideSearchbox) {\n searchInput = this.searchBox.querySelector('.e-searchinput');\n }\n var caseSen = this.options.allowCaseSensitive;\n var defaults = {\n field: this.options.field, predicate: this.isMenuNotEqual ? 'and' : 'or', uid: this.options.uid,\n operator: optr, type: this.options.type, matchCase: caseSen, ignoreAccent: this.options.ignoreAccent\n };\n var isNotEqual = this.itemsCnt !== checked.length && this.itemsCnt - checked.length < checked.length;\n if (isNotEqual && searchInput && searchInput.value === '') {\n optr = this.isMenuNotEqual ? 'equal' : 'notequal';\n checked = [].slice.call(this.cBox.querySelectorAll('.e-uncheck:not(.e-selectall)'));\n defaults.predicate = this.isMenuNotEqual ? 'or' : 'and';\n defaults.operator = optr;\n }\n var value;\n var val;\n var length;\n var fObj;\n var coll = [];\n if ((checked.length !== this.itemsCnt || (searchInput && searchInput.value && searchInput.value !== ''))\n || this.infiniteRenderMod) {\n if (!this.infiniteRenderMod) {\n for (var i = 0; i < checked.length; i++) {\n value = this.values[parentsUntil(checked[parseInt(i.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n fObj = extend({}, { value: value }, defaults);\n if (value && !value.toString().length) {\n fObj.operator = isNotEqual ? 'notequal' : 'equal';\n }\n if (value === '' || isNullOrUndefined(value)) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n }\n else {\n coll.push(fObj);\n }\n this.notifyFilterPrevEvent(fObj);\n }\n }\n else if (this.infiniteRenderMod) {\n this.infiniteFltrBtnHandler(coll);\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime') && check.length) {\n length = check.length - 1;\n val = this.values[parentsUntil(check[parseInt(length.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n if (isNullOrUndefined(val) && isNotEqual) {\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: 'equal',\n predicate: 'and', value: null\n });\n }\n }\n var addCurrSelection = this.infiniteRenderMod ? this.sBox.querySelector('.e-add-current') :\n this.cBox.querySelector('.e-add-current');\n if (addCurrSelection && addCurrSelection.classList.contains('e-check')) {\n var existingPredicate_1 = this.existingPredicate[this.options.field];\n if (existingPredicate_1) {\n var _loop_1 = function (j) {\n if (!coll.some(function (data) {\n return data\n .value === existingPredicate_1[parseInt(j.toString(), 10)].value;\n })) {\n coll.push(existingPredicate_1[parseInt(j.toString(), 10)]);\n }\n };\n for (var j = 0; j < existingPredicate_1.length; j++) {\n _loop_1(j);\n }\n }\n else {\n return;\n }\n }\n if (!this.infiniteRenderMod) {\n this.initiateFilter(coll);\n }\n else if (coll.length) {\n this.initiateFilter(coll);\n }\n else if (this.sBox.querySelector('.e-selectall').classList.contains('e-check') && !coll.length) {\n var isClearFilter = this.options.filteredColumns.some(function (value) {\n return _this.options.field === value.field;\n });\n if (isClearFilter) {\n this.clearFilter();\n }\n }\n }\n else {\n var isClearFilter = this.options.filteredColumns.some(function (value) {\n return _this.options.field === value.field;\n });\n if (isClearFilter) {\n this.clearFilter();\n }\n }\n };\n CheckBoxFilterBase.prototype.infiniteFltrBtnHandler = function (coll) {\n var value;\n if (this.infiniteManualSelectMaintainPred.length) {\n for (var i = 0; i < this.infiniteManualSelectMaintainPred.length; i++) {\n var pred = this.infiniteManualSelectMaintainPred[i];\n value = pred.value + '';\n if (value === '' || isNullOrUndefined(value)) {\n var dummyDefaults = { predicate: pred.predicate, field: pred.field, type: pred.type, uid: pred.uid, operator: pred.operator,\n matchCase: pred.matchCase, ignoreAccent: pred.ignoreAccent };\n coll.push.apply(coll, CheckBoxFilterBase.generateNullValuePredicates(dummyDefaults));\n }\n else {\n coll.push(this.infiniteManualSelectMaintainPred[i]);\n }\n this.notifyFilterPrevEvent(this.infiniteManualSelectMaintainPred[i]);\n }\n }\n if (!this.localInfiniteSelectAllClicked && this.sInput.value === '' && !(!this.options.parentCurrentViewDataCount && coll.length)) {\n for (var i = 0; i < this.infiniteUnloadParentExistPred.length; i++) {\n coll.unshift(this.infiniteUnloadParentExistPred[i]);\n this.notifyFilterPrevEvent(this.existingPredicate[this.options.field][i]);\n }\n }\n if (this.sInput.value !== '' && (!this.localInfiniteSelectAllClicked || this.infiniteLocalSelectAll)) {\n this.infiniteSearchPred['predicate'] = 'or';\n coll.unshift(this.infiniteSearchPred);\n this.notifyFilterPrevEvent(this.infiniteSearchPred);\n }\n };\n CheckBoxFilterBase.prototype.notifyFilterPrevEvent = function (predicate) {\n var args = {\n instance: this, handler: this.fltrBtnHandler, arg1: predicate.field, arg2: predicate.predicate, arg3: predicate.operator,\n arg4: predicate.matchCase, arg5: predicate.ignoreAccent, arg6: predicate.value, cancel: false\n };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n };\n // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.generateNullValuePredicates = function (defaults) {\n var coll = [];\n if (defaults.type === 'string') {\n coll.push({\n field: defaults.field, ignoreAccent: defaults.ignoreAccent, matchCase: defaults.matchCase,\n operator: defaults.operator, predicate: defaults.predicate, value: ''\n });\n }\n coll.push({\n field: defaults.field,\n matchCase: defaults.matchCase, operator: defaults.operator, predicate: defaults.predicate, value: null\n });\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: defaults.operator,\n predicate: defaults.predicate, value: undefined\n });\n return coll;\n };\n // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.prototype.initiateFilter = function (fColl) {\n var firstVal = fColl[0];\n var predicate;\n if (!isNullOrUndefined(firstVal)) {\n predicate = firstVal.ejpredicate ? firstVal.ejpredicate :\n new Predicate(firstVal.field, firstVal.operator, firstVal.value, !firstVal.matchCase, firstVal.ignoreAccent);\n for (var j = 1; j < fColl.length; j++) {\n predicate = fColl[parseInt(j.toString(), 10)].ejpredicate !== undefined ?\n predicate[fColl[parseInt(j.toString(), 10)].predicate](fColl[parseInt(j.toString(), 10)].ejpredicate) :\n predicate[fColl[parseInt(j.toString(), 10)].predicate](fColl[parseInt(j.toString(), 10)].field, fColl[parseInt(j.toString(), 10)].operator, fColl[parseInt(j.toString(), 10)].value, !fColl[parseInt(j.toString(), 10)].matchCase, fColl[parseInt(j.toString(), 10)].ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: Predicate.or(predicate)\n };\n this.options.handler(args);\n }\n };\n CheckBoxFilterBase.prototype.isForeignColumn = function (col) {\n return col.isForeignColumn ? col.isForeignColumn() : false;\n };\n CheckBoxFilterBase.prototype.refreshCheckboxes = function () {\n var _this = this;\n var val = this.sInput.value;\n var column = this.options.column;\n var query = this.isForeignColumn(column) ? this.foreignKeyQuery.clone() : this.options.query.clone();\n var foreignQuery = this.options.query.clone();\n var pred = query.queries.filter(function (e) { return e && e.fn === 'onWhere'; })[0];\n query.queries = [];\n foreignQuery.queries = [];\n var parsed = (this.options.type !== 'string' && parseFloat(val)) ? parseFloat(val) : val;\n var operator = this.options.isRemote ?\n (this.options.type === 'string' ? 'contains' : 'equal') : (this.options.type ? 'contains' : 'equal');\n var matchCase = true;\n var ignoreAccent = this.options.ignoreAccent;\n var field = this.isForeignColumn(column) ? column.foreignKeyValue : column.field;\n parsed = (parsed === '' || parsed === undefined) ? undefined : parsed;\n var coll = [];\n var defaults = {\n field: field, predicate: 'or', uid: this.options.uid,\n operator: 'equal', type: this.options.type, matchCase: matchCase, ignoreAccent: ignoreAccent\n };\n var predicte;\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (this.options.type === 'boolean') {\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'false';\n }\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? true : 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? false : 'false';\n }\n operator = 'equal';\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime' || this.options.type === 'dateonly') && this.options.format) {\n var intl = new Internationalization();\n var format = typeof (this.options.format) === 'string' ? this.options.format :\n this.options.format.format;\n if (format) {\n parsed = intl.parseDate(val, { format: format }) || new Date(val);\n }\n else {\n parsed = new Date(val);\n }\n if (this.options.type === 'dateonly') {\n parsed = parsed.getFullYear() + '-' + padZero(parsed.getMonth() + 1) + '-' + padZero(parsed.getDate());\n }\n }\n this.infiniteSearchValChange = true;\n this.infiniteLoadedElem = [];\n this.infiniteLocalSelectAll = true;\n this.localInfiniteSelectAllClicked = false;\n this.localInfiniteSelectionInteracted = false;\n this.infiniteSkipCnt = 0;\n this.infiniteDataCount = 0;\n this.infiniteManualSelectMaintainPred = [];\n if (this.sInput.value === '') {\n this.infiniteUnloadParentExistPred = this.infiniteRenderMod && this.existingPredicate[this.options.column.field] ? this.existingPredicate[this.options.column.field].slice() : [];\n this.options.parentTotalDataCount = this.options.parentTotalDataCount;\n }\n else {\n this.infiniteUnloadParentExistPred = [];\n }\n this.addDistinct(query);\n var args = {\n requestType: events.filterSearchBegin,\n filterModel: this, columnName: field, column: column,\n operator: operator, matchCase: matchCase, ignoreAccent: ignoreAccent, filterChoiceCount: null,\n query: query, value: parsed\n };\n if (this.infiniteRenderMod && this.parent.filterSettings.itemsCount) {\n args.filterChoiceCount = this.parent.filterSettings.itemsCount;\n }\n this.parent.trigger(events.actionBegin, args, function (filterargs) {\n // eslint-disable-next-line no-self-assign\n filterargs.operator = filterargs.operator;\n predicte = new Predicate(field, filterargs.operator, args.value, filterargs.matchCase, filterargs.ignoreAccent);\n if (_this.options.type === 'date' || _this.options.type === 'datetime' || _this.options.type === 'dateonly') {\n operator = 'equal';\n var filterObj = {\n field: field, operator: operator, value: parsed, matchCase: matchCase,\n ignoreAccent: ignoreAccent\n };\n if (!isNullOrUndefined(parsed)) {\n predicte = getDatePredicate(filterObj, _this.options.type);\n }\n }\n if (val && typeof val === 'string' && _this.isBlanks &&\n _this.getLocalizedLabel('Blanks').toLowerCase().indexOf(val.toLowerCase()) >= 0) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n var emptyValPredicte = CheckBoxFilterBase.generatePredicate(coll);\n emptyValPredicte.predicates.push(predicte);\n predicte = emptyValPredicte;\n query.where(emptyValPredicte);\n }\n else if (val.length) {\n predicte = !isNullOrUndefined(pred) ? predicte.and(pred.e) : predicte;\n query.where(predicte);\n }\n else if (!isNullOrUndefined(pred)) {\n predicte = pred.e;\n query.where(pred.e);\n }\n _this.infiniteSearchPred = predicte;\n filterargs.filterChoiceCount = !isNullOrUndefined(filterargs.filterChoiceCount) ? filterargs.filterChoiceCount : 1000;\n if (_this.infiniteRenderMod && _this.parent.filterSettings.itemsCount !== filterargs.filterChoiceCount) {\n _this.parent.filterSettings.itemsCount = args.filterChoiceCount;\n }\n var fPredicate = {};\n showSpinner(_this.spinner);\n _this.renderEmpty = false;\n if (_this.isForeignColumn(column) && val.length) {\n var colData = ('result' in column.dataSource) ? new DataManager(column.dataSource.result) :\n column.dataSource;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n colData.executeQuery(query).then(function (e) {\n var columnData = _this.options.column.columnData;\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: column });\n if (fPredicate.predicate.predicates.length) {\n foreignQuery.where(fPredicate.predicate);\n }\n else {\n _this.renderEmpty = true;\n }\n _this.options.column.columnData = columnData;\n if (_this.infiniteRenderMod) {\n _this.infiniteInitialLoad = isNullOrUndefined(_this.fullData) ? true : false;\n _this.makeInfiniteScrollRequest(foreignQuery);\n foreignQuery.requiresCount();\n }\n else {\n foreignQuery.take(filterargs.filterChoiceCount);\n }\n _this.search(filterargs, foreignQuery);\n });\n }\n else {\n if (_this.infiniteRenderMod && _this.parent.filterSettings.itemsCount) {\n _this.infiniteInitialLoad = isNullOrUndefined(_this.fullData) ? true : false;\n _this.makeInfiniteScrollRequest(query);\n query.requiresCount();\n }\n else {\n query.take(filterargs.filterChoiceCount);\n }\n _this.search(filterargs, query);\n }\n });\n };\n CheckBoxFilterBase.prototype.search = function (args, query) {\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.filterEvent(args, query);\n }\n else {\n this.processSearch(query);\n }\n };\n CheckBoxFilterBase.prototype.getPredicateFromCols = function (columns, isExecuteLocal) {\n var predicates = CheckBoxFilterBase.getPredicate(columns, isExecuteLocal);\n var predicateList = [];\n var fPredicate = {};\n var isGrid = this.parent.getForeignKeyColumns !== undefined;\n var foreignColumn = isGrid ? this.parent.getForeignKeyColumns() : [];\n for (var _i = 0, _a = Object.keys(predicates); _i < _a.length; _i++) {\n var prop = _a[_i];\n var col = void 0;\n if (isGrid && !this.parent.getColumnByField(prop)) {\n col = getColumnByForeignKeyValue(prop, foreignColumn);\n }\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(Predicate.or(fPredicate.predicate.predicates));\n }\n }\n else {\n predicateList.push(predicates[\"\" + prop]);\n }\n }\n return predicateList.length && Predicate.and(predicateList);\n };\n CheckBoxFilterBase.prototype.getQuery = function () {\n return this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n };\n CheckBoxFilterBase.prototype.getAllData = function () {\n var _this = this;\n this.customQuery = false;\n var query = this.getQuery();\n query.requiresCount(); //consider take query\n this.addDistinct(query);\n var args = {\n requestType: events.filterChoiceRequest, query: query, filterChoiceCount: null\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n if (this.infiniteRenderMod && this.parent.filterSettings.itemsCount) {\n args.filterChoiceCount = this.parent.filterSettings.itemsCount;\n }\n this.parent.trigger(events.actionBegin, args, function (args) {\n args.filterChoiceCount = !isNullOrUndefined(args.filterChoiceCount) ? args.filterChoiceCount : 1000;\n if (_this.infiniteRenderMod && _this.parent.filterSettings.itemsCount !== args.filterChoiceCount) {\n _this.parent.filterSettings.itemsCount = args.filterChoiceCount;\n }\n if (!_this.infiniteRenderMod) {\n query.take(args.filterChoiceCount);\n }\n if (!args.query.distincts.length || _this.infiniteRenderMod) {\n _this.customQuery = true;\n _this.queryGenerate(query);\n }\n if (_this.infiniteRenderMod) {\n _this.infiniteInitialLoad = isNullOrUndefined(_this.fullData) ? true : false;\n _this.makeInfiniteScrollRequest(query);\n }\n if (_this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.filterEvent(args, query);\n }\n else {\n _this.processDataOperation(query, true);\n }\n });\n };\n CheckBoxFilterBase.prototype.addDistinct = function (query) {\n var _this = this;\n var _a;\n var filteredColumn = DataUtil.distinct(this.options.filteredColumns, 'field');\n if (filteredColumn.indexOf(this.options.column.field) <= -1) {\n filteredColumn = filteredColumn.concat(this.options.column.field);\n }\n if (!this.infiniteRenderMod) {\n query.distinct(filteredColumn);\n }\n if (this.infiniteRenderMod && !this.options.isRemote && this.sInput.value === '') {\n this.options.dataSource = this.options.dataSource instanceof DataManager ?\n this.options.dataSource : new DataManager(this.options.dataSource);\n this.infinitePermenantLocalData = this.options.dataSource.dataSource.json.slice();\n this.options.dataSource.dataSource.json = DataUtil.distinct((_a = this.options.parentFilteredLocalRecords).concat.apply(_a, this.infinitePermenantLocalData), this.options.column.field, true);\n if (this.isForeignColumn(this.options.column)) {\n this.options.column.dataSource = this.options.column.dataSource instanceof DataManager ?\n this.options.column.dataSource : new DataManager(this.options.column.dataSource);\n this.options.dataSource.dataSource.json = this.options.dataSource.dataSource.json.map(function (item, i) {\n return Object.assign({}, item, _this.options.column.dataSource.dataSource.json[i]);\n });\n }\n }\n else if (this.infiniteRenderMod && this.options.isRemote) {\n query.select(this.options.column.field);\n query.sortBy(this.options.column.field, 'ascending');\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (moduleName && moduleName() && (moduleName() === 'ODataV4Adaptor' || moduleName() === 'WebApiAdaptor'\n || moduleName() === 'CustomDataAdaptor' || moduleName() === 'GraphQLAdaptor' || moduleName() === 'ODataAdaptor')) {\n query.distinct(filteredColumn);\n }\n }\n return query;\n };\n CheckBoxFilterBase.prototype.filterEvent = function (args, query) {\n var _this = this;\n var defObj = eventPromise(args, query);\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n _this.dataSuccess(e);\n });\n };\n CheckBoxFilterBase.prototype.infiniteScrollMouseKeyDownHandler = function () {\n EventHandler.remove(this.cBox, 'scroll', this.infiniteScrollHandler);\n };\n CheckBoxFilterBase.prototype.infiniteScrollMouseKeyUpHandler = function (e) {\n var _this = this;\n EventHandler.add(this.cBox, 'scroll', this.infiniteScrollHandler, this);\n var target = this.cBox;\n if (target.children.length > 1 && (target.scrollTop >= target.scrollHeight - target.offsetHeight || target.scrollTop <= 0)) {\n this.infiniteScrollHandler();\n }\n Global.timer = setTimeout(function () { _this.clickHandler(e); Global.timer = null; }, 0);\n };\n CheckBoxFilterBase.prototype.getListHeight = function (element) {\n var listDiv = createElement('div', { className: 'e-ftrchk', styles: 'visibility: hidden' });\n listDiv.innerHTML = '
A
';\n element.appendChild(listDiv);\n var rect = listDiv.getBoundingClientRect();\n element.removeChild(listDiv);\n var listHeight = Math.round(rect.height);\n return listHeight;\n };\n CheckBoxFilterBase.prototype.getShimmerTemplate = function () {\n return '';\n };\n CheckBoxFilterBase.prototype.showMask = function () {\n var maskRowCount = 5;\n var maskItemHeight;\n var maskList = this.parent.createElement('div', { id: this.id + this.options.type + '_CheckBoxMaskList',\n className: 'e-checkboxlist e-fields e-infinite-list e-masklist', styles: 'z-index: 10;' });\n var wrapperElem = this.cBox;\n this.removeMask();\n if (wrapperElem) {\n var computedStyle = getComputedStyle(wrapperElem);\n var height = wrapperElem.children.length ? parseInt(computedStyle.height) :\n Math.floor(parseInt(computedStyle.height.split('px')[0])) - 5;\n var backgroundColor = this.isExcel && !wrapperElem.children.length && !this.dlg.classList.contains('e-excelfilter') ?\n '' : getComputedStyle(this.dlg.querySelector('.e-dlg-content')).backgroundColor;\n maskList.style.cssText = 'width: ' + computedStyle.width + '; min-height: ' + computedStyle.minHeight + '; height: ' +\n height + 'px; margin: ' + computedStyle.margin + '; border-style: ' + computedStyle.borderStyle + '; border-width: '\n + computedStyle.borderWidth + '; border-color: ' + computedStyle.borderColor + '; position: absolute; background-color: ' +\n backgroundColor + ';';\n var liHeight = this.getListHeight(wrapperElem);\n maskRowCount = Math.floor(height / liHeight);\n maskRowCount = wrapperElem.children.length > maskRowCount ? wrapperElem.children.length : maskRowCount;\n maskItemHeight = liHeight + 'px';\n }\n var maskTemplate = '
'\n + '
'\n + this.getShimmerTemplate() + this.getShimmerTemplate() + '
';\n maskList.innerHTML = '';\n if (!wrapperElem.children.length) {\n this.spinner.insertAdjacentHTML('beforebegin', maskTemplate);\n var maskSpan = [].slice.call(this.spinner.parentElement\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n this.spinner.insertBefore(maskList, this.cBox);\n for (var i = 0; maskRowCount && i < maskRowCount; i++) {\n maskList.innerHTML += maskTemplate;\n var maskSpan = [].slice.call(maskList\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n if (this.cBox) {\n maskList.scrollTop = this.cBox.scrollTop;\n }\n };\n CheckBoxFilterBase.prototype.removeMask = function () {\n var maskLists = this.dialogObj.element.querySelectorAll('.e-mask-ftrchk');\n if (maskLists.length) {\n for (var i = 0; i < maskLists.length; i++) {\n remove(maskLists[i]);\n }\n }\n var maskParent = this.dialogObj.element.querySelector('.e-checkboxlist.e-masklist');\n if (maskParent) {\n remove(this.dialogObj.element.querySelector('.e-checkboxlist.e-masklist'));\n }\n };\n CheckBoxFilterBase.prototype.infiniteScrollHandler = function () {\n var target = this.cBox;\n if (target.scrollTop >= target.scrollHeight - target.offsetHeight && !this.infiniteQueryExecutionPending\n && this.infiniteLoadedElem.length <= (this.infiniteSkipCnt + this.parent.filterSettings.itemsCount)\n && this.cBox.children.length === this.parent.filterSettings.itemsCount * 3\n && (!this.infiniteDataCount || this.infiniteDataCount > (this.infiniteSkipCnt + this.parent.filterSettings.itemsCount))) {\n this.makeInfiniteScrollRequest();\n this.prevInfiniteScrollDirection = 'down';\n }\n else if (target.scrollTop >= target.scrollHeight - target.offsetHeight && !this.infiniteQueryExecutionPending\n && this.infiniteLoadedElem.length > (this.infiniteSkipCnt + this.parent.filterSettings.itemsCount)\n && this.cBox.children.length === this.parent.filterSettings.itemsCount * 3) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice(0, this.parent.filterSettings.itemsCount));\n this.infiniteSkipCnt += this.prevInfiniteScrollDirection === 'down' ? this.parent.filterSettings.itemsCount :\n (this.parent.filterSettings.itemsCount * 3);\n appendChildren(this.cBox, this.infiniteLoadedElem.slice(this.infiniteSkipCnt, this.parent.filterSettings.itemsCount + this.infiniteSkipCnt));\n this.prevInfiniteScrollDirection = 'down';\n }\n else if (target.scrollTop === 0 && !this.infiniteInitialLoad && !this.infiniteSearchValChange && this.infiniteSkipCnt\n && this.infiniteLoadedElem.length && this.infiniteLoadedElem.length > this.parent.filterSettings.itemsCount * 3\n && this.cBox.children.length === this.parent.filterSettings.itemsCount * 3) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice((this.parent.filterSettings.itemsCount * 2), this.parent.filterSettings.itemsCount));\n this.infiniteSkipCnt -= this.prevInfiniteScrollDirection === 'up' ? this.parent.filterSettings.itemsCount :\n (this.parent.filterSettings.itemsCount * 3);\n this.infiniteAppendElements([].slice.call(this.infiniteLoadedElem.slice(this.infiniteSkipCnt, this.infiniteSkipCnt + this.parent.filterSettings.itemsCount)));\n this.cBox.scrollTop = this.infiniteScrollAppendDiff;\n this.prevInfiniteScrollDirection = 'up';\n }\n else if (target.scrollTop === 0 && !this.infiniteInitialLoad && !this.infiniteSearchValChange && this.infiniteSkipCnt\n && this.infiniteLoadedElem.length && this.cBox.children.length < this.parent.filterSettings.itemsCount * 3) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice((this.parent.filterSettings.itemsCount * 2), this.infiniteDataCount % this.parent.filterSettings.itemsCount));\n this.infiniteSkipCnt = (Math.floor(this.infiniteDataCount / this.parent.filterSettings.itemsCount) - 3) *\n this.parent.filterSettings.itemsCount;\n this.infiniteAppendElements([].slice.call(this.infiniteLoadedElem.slice(this.infiniteSkipCnt, this.infiniteSkipCnt + this.parent.filterSettings.itemsCount)));\n this.cBox.scrollTop = this.infiniteScrollAppendDiff;\n this.prevInfiniteScrollDirection = 'up';\n }\n };\n CheckBoxFilterBase.prototype.infiniteRemoveElements = function (removeElem) {\n for (var i = 0; i < removeElem.length; i++) {\n remove(removeElem[i]);\n }\n };\n CheckBoxFilterBase.prototype.infiniteAppendElements = function (appendElem) {\n for (var i = 0; i < appendElem.length; i++) {\n this.cBox.insertBefore(appendElem[i], this.cBox.children[i]);\n }\n };\n CheckBoxFilterBase.prototype.makeInfiniteScrollRequest = function (query) {\n var _this = this;\n if (!this.infiniteInitialLoad && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n setTimeout(function () {\n if (_this.infiniteQueryExecutionPending) {\n _this.showMask();\n }\n }, 500);\n }\n else if (!this.infiniteInitialLoad) {\n createSpinner({ target: this.spinner, cssClass: this.parent.cssClass ? this.parent.cssClass : null }, this.parent.createElement);\n showSpinner(this.spinner);\n }\n var fName = 'fn';\n if (this.infiniteQuery && this.infiniteQuery.queries && this.infiniteQuery.queries.length) {\n for (var i = 0; i < this.infiniteQuery.queries.length; i++) {\n if (this.infiniteQuery.queries[i][\"\" + fName] === 'onTake'\n || this.infiniteQuery.queries[i][\"\" + fName] === 'onSkip') {\n this.infiniteQuery.queries.splice(i, 1);\n i--;\n }\n }\n }\n var existQuery = query ? true : false;\n query = query ? query : this.infiniteQuery;\n if (this.infiniteInitialLoad || this.infiniteSearchValChange) {\n this.infiniteSkipCnt = 0;\n }\n else {\n this.infiniteSkipCnt += this.parent.filterSettings.itemsCount;\n }\n query.skip(this.infiniteSkipCnt);\n if (this.infiniteInitialLoad || this.infiniteSearchValChange) {\n query.take(this.parent.filterSettings.itemsCount * 3);\n this.infiniteSkipCnt += this.parent.filterSettings.itemsCount * 2;\n }\n else {\n query.take(this.parent.filterSettings.itemsCount);\n }\n if (!existQuery) {\n this.processDataOperation(query);\n this.infiniteQueryExecutionPending = true;\n }\n };\n CheckBoxFilterBase.prototype.processDataOperation = function (query, isInitial) {\n var _this = this;\n this.options.dataSource = this.options.dataSource instanceof DataManager ?\n this.options.dataSource : new DataManager(this.options.dataSource);\n var allPromise = [];\n var runArray = [];\n if (this.isForeignColumn(this.options.column) && isInitial) {\n var colData = ('result' in this.options.column.dataSource) ?\n new DataManager(this.options.column.dataSource.result) :\n this.options.column.dataSource;\n this.foreignKeyQuery.params = query.params;\n allPromise.push(colData.executeQuery(this.foreignKeyQuery));\n runArray.push(function (data) { return _this.foreignKeyData = data; });\n }\n if (this.infiniteRenderMod) {\n this.infiniteQuery = query.clone();\n if (this.infiniteInitialLoad) {\n this.cBox.classList.add('e-checkbox-infinitescroll');\n EventHandler.add(this.cBox, 'scroll', this.infiniteScrollHandler, this);\n EventHandler.add(this.cBox, 'mouseup', this.infiniteScrollMouseKeyUpHandler, this);\n EventHandler.add(this.cBox, 'mousedown', this.infiniteScrollMouseKeyDownHandler, this);\n }\n else if (this.infiniteSearchValChange) {\n this.cBox.innerHTML = '';\n }\n }\n if (this.infiniteRenderMod && this.infiniteInitialLoad && !this.options.isRemote) {\n var field = this.isForeignColumn(this.options.column) ? this.options.foreignKeyValue :\n this.options.column.field;\n this.options.dataSource.executeQuery(new Query().sortBy(field, DataUtil.fnAscending)).then(function (e) {\n _this.options.dataSource.dataSource.json = e.result;\n _this.executeQueryOperations(query, allPromise, runArray);\n });\n }\n else {\n this.executeQueryOperations(query, allPromise, runArray);\n }\n };\n CheckBoxFilterBase.prototype.executeQueryOperations = function (query, allPromise, runArray) {\n var _this = this;\n allPromise.push(this.options.dataSource.executeQuery(query));\n runArray.push(this.dataSuccess.bind(this));\n var i = 0;\n Promise.all(allPromise).then(function (e) {\n _this.infiniteQueryExecutionPending = _this.infiniteRenderMod ? false : _this.infiniteQueryExecutionPending;\n for (var j = 0; j < e.length; j++) {\n _this.infiniteDataCount = _this.infiniteRenderMod && !_this.infiniteDataCount ? e[j].count : _this.infiniteDataCount;\n runArray[i++](e[parseInt(j.toString(), 10)].result);\n }\n }).catch(function () {\n if (_this.infiniteRenderMod && _this.parent.filterSettings && _this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n _this.parent.showMaskRow(undefined, _this.dialogObj.element);\n }\n });\n };\n CheckBoxFilterBase.prototype.dataSuccess = function (e) {\n if (!this.infiniteInitialLoad && this.infiniteDataCount && ((this.infiniteSkipCnt >= this.infiniteDataCount\n && !this.infiniteSearchValChange) || (e.length === 0))) {\n return;\n }\n this.fullData = e;\n var args1 = { dataSource: this.fullData, executeQuery: true, field: this.options.field };\n this.parent.notify(events.beforeCheckboxRenderer, args1);\n if (args1.executeQuery) {\n var query = new Query();\n if (!this.customQuery) {\n this.isExecuteLocal = true;\n this.queryGenerate(query);\n this.isExecuteLocal = false;\n }\n // query.select(this.options.field);\n var result = new DataManager(args1.dataSource).executeLocal(query);\n var col = this.options.column;\n this.filteredData = CheckBoxFilterBase.getDistinct(result, this.options.field, col, this.foreignKeyData, this).records || [];\n }\n var data = args1.executeQuery ? this.filteredData : args1.dataSource;\n this.processDataSource(null, true, data, args1);\n if (this.sInput && ((this.infiniteRenderMod && this.infiniteInitialLoad) || !this.infiniteRenderMod)) {\n this.sInput.focus();\n }\n if (this.infiniteInitialLoad || this.infiniteSearchValChange) {\n this.infiniteInitialLoad = false;\n this.infiniteSearchValChange = false;\n }\n var args = {\n requestType: events.filterAfterOpen,\n columnName: this.options.field, columnType: this.options.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n if (this.isCheckboxFilterTemplate) {\n hideSpinner(this.spinner);\n }\n };\n CheckBoxFilterBase.prototype.queryGenerate = function (query) {\n if (this.parent.searchSettings && this.parent.searchSettings.key.length) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.options.columns.map(function (f) { return f.field; });\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n if ((this.options.filteredColumns.length)) {\n var cols = [];\n for (var i = 0; i < this.options.filteredColumns.length; i++) {\n var filterColumn = this.options.filteredColumns[parseInt(i.toString(), 10)];\n if (this.options.uid) {\n filterColumn.uid = filterColumn.uid || this.parent.getColumnByField(filterColumn.field).uid;\n if (filterColumn.uid !== this.options.uid) {\n cols.push(this.options.filteredColumns[parseInt(i.toString(), 10)]);\n }\n }\n else {\n if (filterColumn.field !== this.options.field) {\n cols.push(this.options.filteredColumns[parseInt(i.toString(), 10)]);\n }\n }\n }\n var predicate = this.getPredicateFromCols(cols, this.isExecuteLocal);\n if (predicate) {\n query.where(predicate);\n }\n }\n };\n CheckBoxFilterBase.prototype.processDataSource = function (query, isInitial, dataSource, args) {\n showSpinner(this.spinner);\n // query = query ? query : this.options.query.clone();\n // query.requiresCount();\n // let result: Object = new DataManager(dataSource as JSON[]).executeLocal(query);\n // let res: { result: Object[] } = result as { result: Object[] };\n this.isExecuteLocal = true;\n this.updateResult();\n this.isExecuteLocal = false;\n var args1 = { dataSource: this.fullData, isCheckboxFilterTemplate: false, column: this.options.column,\n element: this.cBox, type: this.options.type, format: this.options.type, btnObj: this.options.isResponsiveFilter ? null :\n this.dialogObj.btnObj[0], searchBox: this.searchBox };\n this.parent.notify(events.beforeCheckboxfilterRenderer, args1);\n this.isCheckboxFilterTemplate = args1.isCheckboxFilterTemplate;\n if (!this.isCheckboxFilterTemplate) {\n this.createFilterItems(dataSource, isInitial, args);\n }\n else if (this.infiniteRenderMod && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n this.removeMask();\n }\n };\n CheckBoxFilterBase.prototype.processSearch = function (query) {\n this.processDataOperation(query);\n };\n CheckBoxFilterBase.prototype.updateResult = function () {\n this.result = {};\n var predicate = this.infiniteRenderMod && this.existingPredicate[this.options.field] ?\n this.getPredicateFromCols(this.existingPredicate[this.options.field], this.isExecuteLocal) :\n this.getPredicateFromCols(this.options.filteredColumns, this.isExecuteLocal);\n var query = new Query();\n if (predicate) {\n query.where(predicate);\n }\n this.parent.notify(events.beforeCheckboxRendererQuery, { query: query });\n var result = new DataManager(this.fullData).executeLocal(query);\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n this.result[getObject(this.options.field, res)] = true;\n }\n };\n CheckBoxFilterBase.prototype.clickHandler = function (e) {\n var _a;\n if (!isNullOrUndefined(Global.timer)) {\n clearTimeout(Global.timer);\n }\n var target = e.target;\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && parentsUntil(target, 'e-mask-ftrchk')) {\n return;\n }\n var elem = parentsUntil(target, 'e-checkbox-wrapper');\n if (parentsUntil(target, 'e-searchbox')) {\n this.searchBoxClick(e);\n }\n if (elem && !this.isCheckboxFilterTemplate) {\n var selectAll = elem.querySelector('.e-selectall');\n if (selectAll) {\n this.updateAllCBoxes(!selectAll.classList.contains('e-check'));\n }\n else {\n toogleCheckbox(elem.parentElement);\n if (this.infiniteRenderMod && !elem.parentElement.querySelector('.e-add-current')) {\n this.localInfiniteSelectionInteracted = true;\n var caseSen = this.options.allowCaseSensitive;\n var span = elem.parentElement.querySelector('.e-frame');\n var input = span.previousSibling;\n var optr = input.checked ? 'equal' : 'notequal';\n var pred = input.checked ? 'or' : 'and';\n var defaults = { field: this.options.field, predicate: pred, uid: this.options.uid,\n operator: optr, type: this.options.type, matchCase: caseSen, ignoreAccent: this.options.ignoreAccent\n };\n var value = this.values[parentsUntil(input, 'e-ftrchk').getAttribute('uid')];\n this.updateInfiniteManualSelectPred(defaults, value);\n if (this.infiniteRenderMod && !this.options.isRemote && this.options.parentTotalDataCount\n && this.infiniteUnloadParentExistPred.length) {\n var predicate = this.getPredicateFromCols((_a = this.options.filteredColumns).concat.apply(_a, this.infiniteManualSelectMaintainPred), true);\n var query = new Query();\n if (predicate) {\n query.where(predicate);\n }\n var result = new DataManager(this.infinitePermenantLocalData).executeLocal(query);\n if (this.options.parentTotalDataCount !== result.length) {\n this.options.parentTotalDataCount = result.length;\n }\n if (!this.options.parentTotalDataCount && this.infiniteUnloadParentExistPred.length) {\n this.infiniteUnloadParentExistPred = [];\n }\n }\n if (this.infiniteUnloadParentExistPred.length && (this.options.parentTotalDataCount === this.infiniteDataCount\n || !this.options.parentTotalDataCount)) {\n this.infiniteUnloadParentExistPred = [];\n }\n }\n }\n this.updateIndeterminatenBtn();\n elem.querySelector('.e-chk-hidden').focus();\n }\n this.setFocus(parentsUntil(elem, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.updateInfiniteManualSelectPred = function (defaults, value) {\n for (var i = 0; i < this.infiniteManualSelectMaintainPred.length; i++) {\n var predmdl = this.infiniteManualSelectMaintainPred[i];\n if (predmdl.value + '' === value + '' && (predmdl.operator === 'equal' || predmdl.operator === 'notequal')) {\n this.infiniteManualSelectMaintainPred.splice(i, 1);\n break;\n }\n }\n if ((defaults.predicate === 'or' && (!this.localInfiniteSelectAllClicked || !this.infiniteLocalSelectAll))\n || (defaults.predicate === 'and' && (!this.localInfiniteSelectAllClicked || this.infiniteLocalSelectAll))) {\n this.infiniteManualSelectMaintainPred.push(extend({}, { value: value }, defaults));\n if (defaults.predicate === 'or') {\n this.options.parentTotalDataCount++;\n }\n else {\n this.options.parentTotalDataCount--;\n }\n }\n };\n /**\n * Method to set the next target element on keyboard navigation using arrow keys.\n *\n */\n CheckBoxFilterBase.prototype.focusNextOrPrev = function (e, focusableElements) {\n var nextIndex = (e.key === 'ArrowUp') ? focusableElements.indexOf(document.activeElement) - 1\n : focusableElements.indexOf(document.activeElement) + 1;\n var nextElement = focusableElements[((nextIndex + focusableElements.length) % focusableElements.length)];\n // Set focus on the next / previous element\n if (nextElement) {\n nextElement.focus();\n var target = nextElement.classList.contains('e-chk-hidden') ? parentsUntil(nextElement, 'e-ftrchk') : nextElement;\n this.setFocus(target);\n }\n };\n CheckBoxFilterBase.prototype.keyupHandler = function (e) {\n if ((e.key === 'Tab' && e.shiftKey) || e.key === 'Tab' || ((e.key === 'ArrowUp' || e.key === 'ArrowDown') && !e.altKey)) {\n this.setFocus(parentsUntil(e.target, 'e-ftrchk'));\n }\n if ((e.key === 'ArrowUp' || e.key === 'ArrowDown') && !e.altKey && this.parent.filterSettings.type === 'CheckBox') {\n e.preventDefault();\n var focusableElements = Array.from(this.dlg.querySelectorAll('input, button, [tabindex]:not([tabindex=\"-1\"])'));\n this.focusNextOrPrev(e, focusableElements);\n }\n };\n CheckBoxFilterBase.prototype.setFocus = function (elem) {\n var prevElem = this.dlg.querySelector('.e-chkfocus');\n if (prevElem) {\n prevElem.classList.remove('e-chkfocus');\n }\n if (elem && elem !== prevElem) {\n elem.classList.add('e-chkfocus');\n }\n };\n CheckBoxFilterBase.prototype.updateAllCBoxes = function (checked) {\n if (this.infiniteRenderMod) {\n this.localInfiniteSelectAllClicked = true;\n this.infiniteLocalSelectAll = checked;\n this.infiniteUnloadParentExistPred = [];\n this.infiniteManualSelectMaintainPred = [];\n }\n var cBoxes = this.infiniteRenderMod ?\n this.infiniteLoadedElem.map(function (arr) {\n return arr.querySelector('.e-frame');\n }) : [].slice.call(this.cBox.querySelectorAll('.e-frame:not(.e-add-current)'));\n for (var _i = 0, cBoxes_1 = cBoxes; _i < cBoxes_1.length; _i++) {\n var cBox = cBoxes_1[_i];\n removeAddCboxClasses(cBox, checked);\n setChecked(cBox.previousSibling, checked);\n }\n };\n CheckBoxFilterBase.prototype.dialogOpen = function () {\n if (this.parent.element.classList.contains('e-device')) {\n this.dialogObj.element.querySelector('.e-input-group').classList.remove('e-input-focus');\n if (!this.options.isResponsiveFilter) {\n this.dialogObj.element.querySelector('.e-btn').focus();\n }\n }\n };\n CheckBoxFilterBase.prototype.createCheckbox = function (value, checked, data) {\n var elem = checked ? this.cBoxTrue.cloneNode(true) :\n this.cBoxFalse.cloneNode(true);\n setChecked(elem.querySelector('input'), checked);\n var label = elem.querySelector('.e-label');\n var dummyData = extendObjWithFn({}, data, { column: this.options.column, parent: this.parent });\n var innerText = this.options.disableHtmlEncode ? 'textContent' : 'innerHTML';\n label[\"\" + innerText] = !isNullOrUndefined(value) && value.toString().length ?\n this.parent.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(value) : value : this.getLocalizedLabel('Blanks');\n var checkboxUid = getUid('cbox');\n label.setAttribute('id', checkboxUid + 'cboxLabel');\n elem.querySelector('input').setAttribute('aria-labelledby', label.id);\n if (label.innerHTML === this.getLocalizedLabel('Blanks')) {\n this.isBlanks = true;\n }\n if (typeof value === 'boolean') {\n label.innerHTML = value === true ? this.getLocalizedLabel('FilterTrue') : this.getLocalizedLabel('FilterFalse');\n }\n addClass([label], ['e-checkboxfiltertext']);\n if (this.options.template && data[this.options.column.field] !== this.getLocalizedLabel('SelectAll')\n && data[this.options.column.field] !== this.getLocalizedLabel('AddCurrentSelection')) {\n label.innerHTML = '';\n var isReactCompiler = this.parent.isReact && this.options.column.filter\n && typeof (this.options.column.filter.itemTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n this.options.template(dummyData, this.parent, 'filterItemTemplate', null, null, null, label);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(label, this.options.template(dummyData, this.parent, 'filterItemTemplate'));\n }\n }\n return elem;\n };\n CheckBoxFilterBase.prototype.updateIndeterminatenBtn = function () {\n var cnt = this.infiniteRenderMod ? this.infiniteLoadedElem.length : this.cBox.children.length - 1;\n var className = [];\n var disabled = false;\n var elem = this.infiniteRenderMod ? this.sBox.querySelector('.e-selectall') : this.cBox.querySelector('.e-selectall');\n var selected = this.infiniteRenderMod ? this.infiniteLoadedElem.filter(function (arr) { return arr.querySelector('.e-check'); }).length :\n this.cBox.querySelectorAll('.e-check:not(.e-selectall):not(.e-add-current)').length;\n if (this.cBox.querySelector('.e-add-current')) {\n cnt -= 1;\n }\n var btn;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n btn.disabled = false;\n }\n var input = elem.previousSibling;\n setChecked(input, false);\n input.indeterminate = false;\n if (this.infiniteRenderMod && this.sInput.value === '' && !this.options.parentCurrentViewDataCount && !this.localInfiniteSelectionInteracted\n && (!this.localInfiniteSelectAllClicked || (!this.infiniteLocalSelectAll && !selected)) && (cnt !== selected || cnt === selected)) {\n selected = 0;\n }\n else if (this.infiniteRenderMod && this.infiniteLoadedElem.length < this.infiniteDataCount\n && this.infiniteUnloadParentExistPred.length && (!selected || cnt === selected) && this.infiniteLocalSelectAll) {\n if (!selected) {\n selected += this.infiniteUnloadParentExistPred.length;\n }\n else {\n cnt += this.infiniteUnloadParentExistPred.length;\n }\n }\n if (cnt === selected) {\n if (this.infiniteRenderMod) {\n this.infiniteLocalSelectAll = true;\n this.localInfiniteSelectAllClicked = true;\n this.infiniteManualSelectMaintainPred = [];\n }\n className = ['e-check'];\n setChecked(input, true);\n }\n else if (selected) {\n className = ['e-stop'];\n input.indeterminate = true;\n }\n else {\n if (this.infiniteRenderMod) {\n this.infiniteLocalSelectAll = false;\n this.localInfiniteSelectAllClicked = true;\n this.infiniteManualSelectMaintainPred = [];\n }\n className = ['e-uncheck'];\n disabled = true;\n if (btn) {\n btn.disabled = true;\n }\n }\n if (btn) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([elem], className);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n };\n CheckBoxFilterBase.prototype.createFilterItems = function (data, isInitial, args1) {\n var _a, _b, _c;\n var cBoxes = this.parent.createElement('div');\n var btn;\n var disabled = false;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n }\n var nullCounter = -1;\n var key = 'ejValue';\n if (!args1.executeQuery) {\n key = args1.field;\n }\n for (var i = 0; i < data.length; i++) {\n var val = getValue(key, data[parseInt(i.toString(), 10)]);\n if (val === '' || isNullOrUndefined(val)) {\n nullCounter = nullCounter + 1;\n }\n }\n if (!this.infiniteRenderMod) {\n this.itemsCnt = nullCounter !== -1 ? data.length - nullCounter : data.length;\n }\n if (this.infiniteRenderMod && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n this.removeMask();\n }\n if (data.length && !this.renderEmpty) {\n var selectAllValue = this.getLocalizedLabel('SelectAll');\n var innerDiv = this.cBox.querySelector('.e-checkfltrnmdiv');\n if (innerDiv) {\n innerDiv.classList.remove('e-checkfltrnmdiv');\n }\n var checkBox = this.createCheckbox(selectAllValue, false, (_a = {}, _a[this.options.field] = selectAllValue, _a));\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([checkBox], this.parent.cssClass.split(' '));\n }\n else {\n addClass([checkBox], [this.parent.cssClass]);\n }\n }\n if (this.infiniteInitialLoad || !this.infiniteRenderMod) {\n var selectAll = createCboxWithWrap(getUid('cbox'), checkBox, 'e-ftrchk');\n selectAll.querySelector('.e-frame').classList.add('e-selectall');\n if (this.infiniteRenderMod) {\n this.sBox.insertBefore(selectAll, this.spinner);\n }\n else {\n cBoxes.appendChild(selectAll);\n }\n }\n else if (this.sBox.querySelector('.e-ftrchk .e-selectall')) {\n this.sBox.querySelector('.e-ftrchk .e-selectall').previousSibling.disabled = false;\n this.sBox.querySelector('.e-ftrchk .e-selectall').parentElement.classList.remove('e-checkbox-disabled');\n }\n var predicate = new Predicate('field', 'equal', this.options.field);\n if (this.options.foreignKeyValue) {\n predicate = predicate.or('field', 'equal', this.options.foreignKeyValue);\n }\n var isColFiltered = new DataManager(this.options.filteredColumns).executeLocal(new Query().where(predicate)).length;\n if (this.sInput.value) {\n var predicateCheckBox = this.createCheckbox(this.getLocalizedLabel('AddCurrentSelection'), false, (_b = {},\n _b[this.options.field] = this.getLocalizedLabel('AddCurrentSelection'),\n _b));\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([predicateCheckBox], this.parent.cssClass.split(' '));\n }\n else {\n addClass([predicateCheckBox], [this.parent.cssClass]);\n }\n }\n if ((this.infiniteRenderMod && (!isNullOrUndefined(this.sBox.children[2])\n && this.sBox.children[2].innerText !== 'Add current selection to filter')) || !this.infiniteRenderMod) {\n var predicateElement = createCboxWithWrap(getUid('cbox'), predicateCheckBox, 'e-ftrchk');\n predicateElement.querySelector('.e-frame').classList.add('e-add-current');\n if (this.infiniteRenderMod) {\n this.sBox.insertBefore(predicateElement, this.spinner);\n var checkBoxListElem = this.spinner.querySelector('.e-checkboxlist');\n var reduceHeight = Math.ceil(predicateElement.getBoundingClientRect().height);\n checkBoxListElem.style.height = (parseInt(getComputedStyle(checkBoxListElem).height.split('px')[0]) - reduceHeight)\n + 'px';\n checkBoxListElem.style.minHeight = checkBoxListElem.style.height;\n }\n else {\n cBoxes.appendChild(predicateElement);\n }\n }\n else if (this.sBox.querySelector('.e-ftrchk .e-add-current')) {\n this.sBox.querySelector('.e-ftrchk .e-add-current').previousSibling.disabled = false;\n this.sBox.querySelector('.e-ftrchk .e-add-current').parentElement.classList.remove('e-checkbox-disabled');\n }\n }\n else if (this.infiniteRenderMod && !isNullOrUndefined(this.sBox.children[2])\n && this.sBox.children[2].innerText === 'Add current selection to filter') {\n var checkBoxListElem = this.spinner.querySelector('.e-checkboxlist');\n var increaseHeight = Math.ceil(this.sBox.children[2].getBoundingClientRect().height);\n checkBoxListElem.style.height = (parseInt(getComputedStyle(checkBoxListElem).height.split('px')[0]) + increaseHeight)\n + 'px';\n checkBoxListElem.style.minHeight = checkBoxListElem.style.height;\n remove(this.sBox.children[2]);\n }\n var isRndere = void 0;\n for (var i = 0; i < data.length; i++) {\n var uid = getUid('cbox');\n this.values[\"\" + uid] = getValue(key, data[parseInt(i.toString(), 10)]);\n var value = getValue(this.options.field, data[parseInt(i.toString(), 10)]);\n if (this.options.formatFn) {\n value = this.valueFormatter.toView(value, this.options.formatFn);\n }\n var args_1 = { value: value, column: this.options.column, data: data[parseInt(i.toString(), 10)] };\n this.parent.notify(events.filterCboxValue, args_1);\n value = args_1.value;\n if ((value === '' || isNullOrUndefined(value))) {\n if (isRndere) {\n continue;\n }\n isRndere = true;\n }\n if (this.infiniteRenderMod) {\n this.updateInfiniteUnLoadedCheckboxExistPred(value, this.infiniteUnloadParentExistPred);\n }\n var checkbox = this.localInfiniteSelectAllClicked ?\n this.createCheckbox(value, this.infiniteLocalSelectAll, getValue('dataObj', data[i])) :\n this.createCheckbox(value, this.getCheckedState(isColFiltered, this.values[\"\" + uid]), getValue('dataObj', data[i]));\n cBoxes.appendChild(createCboxWithWrap(uid, checkbox, 'e-ftrchk'));\n if (this.infiniteRenderMod) {\n cBoxes.lastChild.style.height = this.getListHeight(this.cBox) + 'px';\n }\n }\n var scrollTop = this.cBox.scrollTop;\n if (!this.infiniteRenderMod || this.infiniteSearchValChange) {\n this.cBox.innerHTML = '';\n }\n else if (this.infiniteRenderMod && this.cBox.children.length) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice(0, this.parent.filterSettings.itemsCount));\n }\n if (this.infiniteRenderMod) {\n (_c = this.infiniteLoadedElem).push.apply(_c, [].slice.call(cBoxes.children));\n this.itemsCnt = nullCounter !== -1 ? this.infiniteLoadedElem.length - nullCounter : this.infiniteLoadedElem.length;\n }\n if (this.infiniteUnloadParentExistPred.length && (this.infiniteLoadedElem.length >= this.infiniteDataCount\n || !this.options.parentCurrentViewDataCount || (this.options.parentTotalDataCount === this.infiniteDataCount\n && this.options.parentCurrentViewDataCount))) {\n this.infiniteUnloadParentExistPred = [];\n }\n appendChildren(this.cBox, [].slice.call(cBoxes.children));\n if (this.infiniteRenderMod && !this.infiniteScrollAppendDiff) {\n this.infiniteScrollAppendDiff = Math.round(scrollTop - this.cBox.scrollTop);\n }\n this.updateIndeterminatenBtn();\n if (!this.infiniteRenderMod) {\n if (btn) {\n btn.disabled = false;\n }\n disabled = false;\n }\n else {\n if (btn.disabled) {\n disabled = true;\n }\n else {\n disabled = false;\n }\n }\n }\n else {\n cBoxes.appendChild(this.parent.createElement('span', { innerHTML: this.getLocalizedLabel('NoResult') }));\n this.cBox.innerHTML = '';\n if (this.infiniteRenderMod) {\n var selectAll = this.sBox.querySelector('.e-ftrchk .e-selectall');\n if (selectAll) {\n var selectAllParent = selectAll.parentElement.parentElement;\n if (selectAll.classList.contains('e-check')) {\n toogleCheckbox(selectAllParent);\n }\n else if (selectAll.classList.contains('e-stop')) {\n toogleCheckbox(selectAllParent);\n selectAll.classList.remove('e-stop');\n toogleCheckbox(selectAllParent);\n }\n selectAll.previousSibling.disabled = true;\n selectAll.parentElement.classList.add('e-checkbox-disabled');\n }\n var addCurrSelection = this.sBox.querySelector('.e-ftrchk .e-add-current');\n if (addCurrSelection) {\n var addCurrSelectionParent = addCurrSelection.parentElement.parentElement;\n if (addCurrSelection.classList.contains('e-check')) {\n toogleCheckbox(addCurrSelectionParent);\n }\n addCurrSelection.previousSibling.disabled = true;\n addCurrSelection.parentElement.classList.add('e-checkbox-disabled');\n }\n }\n this.cBox.appendChild(this.parent.createElement('div', { className: 'e-checkfltrnmdiv' }));\n appendChildren(this.cBox.children[0], [].slice.call(cBoxes.children));\n if (btn) {\n btn.disabled = true;\n }\n disabled = true;\n this.filterState = !disabled;\n }\n if (btn && data.length) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n var args = { requestType: events.filterChoiceRequest, dataSource: this.renderEmpty ? [] : data };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n if (this.infiniteRenderMod && this.infiniteInitialLoad) {\n this.cBox.style.marginTop = '0px';\n }\n hideSpinner(this.spinner);\n };\n CheckBoxFilterBase.prototype.updateInfiniteUnLoadedCheckboxExistPred = function (value, updatePredArr) {\n for (var j = 0; j < updatePredArr.length; j++) {\n var pred = updatePredArr[j];\n if (value === pred.value && (pred.operator === 'equal' || pred.operator === 'notequal')) {\n this.infiniteManualSelectMaintainPred.push(updatePredArr[j]);\n updatePredArr.splice(j, 1);\n j--;\n }\n }\n };\n CheckBoxFilterBase.prototype.getCheckedState = function (isColFiltered, value) {\n if (!this.isFiltered || !isColFiltered) {\n return true;\n }\n else {\n var checkState = this.sInput.value ? true : this.result[\"\" + value];\n if (this.infiniteRenderMod) {\n return checkState;\n }\n else {\n return this.options.operator === 'notequal' ? !checkState : checkState;\n }\n }\n };\n CheckBoxFilterBase.getDistinct = function (json, field, column, foreignKeyData, checkboxFilter) {\n var len = json.length;\n var result = [];\n var value;\n var ejValue = 'ejValue';\n var lookup = {};\n var isForeignKey = column && column.isForeignColumn ? column.isForeignColumn() : false;\n while (len--) {\n value = json[parseInt(len.toString(), 10)];\n if (column && column.type === 'dateonly' && typeof value[\"\" + field] === 'string' && value[\"\" + field]) {\n var arr = value[\"\" + field].split(/[^0-9.]/);\n value[\"\" + field] = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n value = getObject(field, value); //local remote diff, check with mdu\n var currentFilterValue = (typeof value === 'string') && !(isNullOrUndefined(checkboxFilter)) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !(isNullOrUndefined(checkboxFilter.parent)) && !(isNullOrUndefined(checkboxFilter.parent.filterSettings)) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !(isNullOrUndefined(checkboxFilter.parent.filterSettings.enableCaseSensitivity)) ? value.toLowerCase() : value;\n if (!(currentFilterValue in lookup)) {\n var obj = {};\n obj[\"\" + ejValue] = value;\n lookup[\"\" + currentFilterValue] = true;\n if (isForeignKey) {\n var foreignDataObj = getForeignData(column, {}, value, foreignKeyData)[0];\n setValue(events.foreignKeyData, foreignDataObj, json[parseInt(len.toString(), 10)]);\n value = getValue(column.foreignKeyValue, foreignDataObj);\n }\n setValue(field, isNullOrUndefined(value) ? null : value, obj);\n setValue('dataObj', json[parseInt(len.toString(), 10)], obj);\n result.push(obj);\n }\n }\n return DataUtil.group(DataUtil.sort(result, field, DataUtil.fnAscending), 'ejValue');\n };\n CheckBoxFilterBase.getPredicate = function (columns, isExecuteLocal) {\n var cols = DataUtil.distinct(columns, 'field', true) || [];\n var collection = [];\n var pred = {};\n for (var i = 0; i < cols.length; i++) {\n collection = new DataManager(columns).executeLocal(new Query().where('field', 'equal', cols[parseInt(i.toString(), 10)].field));\n if (collection.length !== 0) {\n pred[cols[parseInt(i.toString(), 10)].field] = CheckBoxFilterBase.generatePredicate(collection, isExecuteLocal);\n }\n }\n return pred;\n };\n CheckBoxFilterBase.generatePredicate = function (cols, isExecuteLocal) {\n var len = cols ? cols.length : 0;\n var predicate;\n var operate = 'or';\n var first = CheckBoxFilterBase.updateDateFilter(cols[0]);\n first.ignoreAccent = !isNullOrUndefined(first.ignoreAccent) ? first.ignoreAccent : false;\n if (first.type === 'date' || first.type === 'datetime' || first.type === 'dateonly') {\n predicate = getDatePredicate(first, first.type, isExecuteLocal);\n }\n else {\n predicate = first.ejpredicate ? first.ejpredicate :\n new Predicate(first.field, first.operator, first.value, !CheckBoxFilterBase.getCaseValue(first), first.ignoreAccent);\n }\n for (var p = 1; p < len; p++) {\n cols[parseInt(p.toString(), 10)] = CheckBoxFilterBase.updateDateFilter(cols[parseInt(p.toString(), 10)]);\n if (len > 2 && p > 1 && ((cols[p].predicate === 'or' && cols[p - 1].predicate === 'or')\n || (cols[p].predicate === 'and' && cols[p - 1].predicate === 'and'))) {\n if (cols[p].type === 'date' || cols[p].type === 'datetime' || cols[p].type === 'dateonly') {\n predicate.predicates.push(getDatePredicate(cols[parseInt(p.toString(), 10)], cols[p].type, isExecuteLocal));\n }\n else {\n predicate.predicates.push(new Predicate(cols[p].field, cols[parseInt(p.toString(), 10)].operator, cols[parseInt(p.toString(), 10)].value, !CheckBoxFilterBase.getCaseValue(cols[parseInt(p.toString(), 10)]), cols[parseInt(p.toString(), 10)].ignoreAccent));\n }\n }\n else {\n if (cols[p].type === 'date' || cols[p].type === 'datetime' || cols[p].type === 'dateonly') {\n if (cols[parseInt(p.toString(), 10)].predicate === 'and' && cols[parseInt(p.toString(), 10)].operator === 'equal') {\n predicate = predicate[\"\" + operate](getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal), cols[parseInt(p.toString(), 10)].type, cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n else {\n predicate = predicate[(cols[parseInt(p.toString(), 10)].predicate)](getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal), cols[parseInt(p.toString(), 10)].type, cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n }\n else {\n predicate = cols[parseInt(p.toString(), 10)].ejpredicate ?\n predicate[cols[parseInt(p.toString(), 10)]\n .predicate](cols[parseInt(p.toString(), 10)].ejpredicate) :\n predicate[(cols[parseInt(p.toString(), 10)].predicate)](cols[parseInt(p.toString(), 10)].field, cols[parseInt(p.toString(), 10)].operator, cols[parseInt(p.toString(), 10)].value, !CheckBoxFilterBase.getCaseValue(cols[parseInt(p.toString(), 10)]), cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n }\n }\n return predicate || null;\n };\n CheckBoxFilterBase.getCaseValue = function (filter) {\n if (isNullOrUndefined(filter.matchCase)) {\n if (filter.type === 'string' || isNullOrUndefined(filter.type) && typeof (filter.value) === 'string') {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return filter.matchCase;\n }\n };\n CheckBoxFilterBase.updateDateFilter = function (filter) {\n if ((filter.type === 'date' || filter.type === 'datetime' || filter.type === 'dateonly' || filter.value instanceof Date)) {\n filter.type = filter.type || 'date';\n }\n return filter;\n };\n return CheckBoxFilterBase;\n}());\nexport { CheckBoxFilterBase };\n","import { remove, addClass } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { doesImplementInterface, setStyleAndAttributes, appendChildren, extendObjWithFn, addStickyColumnPosition } from '../base/util';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { foreignKeyData } from '../base/constant';\nimport { CellType } from '../base/enum';\nimport * as literals from '../base/string-literals';\n/**\n * CellRenderer class which responsible for building cell content.\n *\n * @hidden\n */\nvar CellRenderer = /** @class */ (function () {\n function CellRenderer(parent, locator) {\n this.localizer = locator.getService('localization');\n this.formatter = locator.getService('valueFormatter');\n this.parent = parent;\n this.element = this.parent.createElement('TD', { className: literals.rowCell, attrs: { role: 'gridcell', tabindex: '-1' } });\n this.rowChkBox = this.parent.createElement('input', { className: 'e-checkselect', attrs: { 'type': 'checkbox', 'aria-label': this.localizer.getConstant('SelectRow') } });\n }\n /**\n * Function to return the wrapper for the TD content\n *\n * @returns {string | Element} returns the string\n */\n CellRenderer.prototype.getGui = function () {\n return '';\n };\n /**\n * Function to format the cell value.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {string} returns the format\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.format = function (column, value, data) {\n if (!isNullOrUndefined(column.format)) {\n if (column.type === 'number' && isNaN(parseInt(value, 10))) {\n value = null;\n }\n if (column.type === 'dateonly' && typeof value === 'string' && value) {\n var arr = value.split(/[^0-9.]/);\n value = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n value = this.formatter.toView(value, column.getFormatter());\n }\n return isNullOrUndefined(value) ? '' : value.toString();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.evaluate = function (node, cell, data, attributes, fData, isEdit) {\n var _a;\n var result;\n if (cell.column.template) {\n var isReactCompiler = this.parent.isReact && typeof (cell.column.template) !== 'string' && cell.column.template.prototype && !(cell.column.template.prototype).CSPTemplate;\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var literals_1 = ['index'];\n var dummyData = extendObjWithFn({}, data, (_a = {}, _a[foreignKeyData] = fData, _a.column = cell.column, _a));\n var templateID = this.parent.element.id + cell.column.uid;\n var str = 'isStringTemplate';\n if (isReactCompiler || isReactChild) {\n var copied = { 'index': attributes[literals_1[0]] };\n cell.column.getColumnTemplate()(extend(copied, dummyData), this.parent, 'columnTemplate', templateID, this.parent[\"\" + str], null, node);\n }\n else {\n result = cell.column.getColumnTemplate()(extend({ 'index': attributes[literals_1[0]] }, dummyData), this.parent, 'template', templateID, this.parent[\"\" + str], undefined, undefined, this.parent['root']);\n }\n if (!isReactCompiler && !isReactChild) {\n appendChildren(node, result);\n }\n this.parent.notify('template-result', { template: result });\n result = null;\n node.setAttribute('aria-label', node.innerText + this.localizer.getConstant('TemplateCell') +\n this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n return false;\n }\n return true;\n };\n /**\n * Function to invoke the custom formatter available in the column object.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {Object} returns the object\n */\n CellRenderer.prototype.invokeFormatter = function (column, value, data) {\n if (!isNullOrUndefined(column.formatter)) {\n if (doesImplementInterface(column.formatter, 'getValue')) {\n var formatter = column.formatter;\n value = new formatter().getValue(column, data);\n }\n else if (typeof column.formatter === 'function') {\n value = column.formatter(column, data);\n }\n else {\n value = column.formatter.getValue(column, data);\n }\n }\n return value;\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @param {boolean} isExpand - specifies the boolean for expand\n * @param {boolean} isEdit - specifies the boolean for edit\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.render = function (cell, data, attributes, isExpand, isEdit) {\n return this.refreshCell(cell, data, attributes, isEdit);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Element} td - specifies the element\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attribute\n * @returns {void}\n */\n CellRenderer.prototype.refreshTD = function (td, cell, data, attributes) {\n var isEdit = this.parent.editSettings.mode === 'Batch' && td.classList.contains('e-editedbatchcell');\n if (this.parent.isReact) {\n var cellIndex = td.cellIndex;\n var parentRow = td.parentElement;\n remove(td);\n var newTD = this.refreshCell(cell, data, attributes, isEdit);\n this.cloneAttributes(newTD, td);\n if (parentRow.cells.length !== cellIndex - 1) {\n parentRow.insertBefore(newTD, parentRow.cells[parseInt(cellIndex.toString(), 10)]);\n }\n else {\n parentRow.appendChild(newTD);\n }\n }\n else {\n var node = this.refreshCell(cell, data, attributes, isEdit);\n td.innerHTML = '';\n var arialabelText = node.getAttribute('aria-label');\n arialabelText ? td.setAttribute('aria-label', arialabelText) : null;\n var elements = [].slice.call(node.childNodes);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n td.appendChild(elem);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n CellRenderer.prototype.cloneAttributes = function (target, source) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attrs = source.attributes;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var i = attrs.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attr;\n while (i--) {\n attr = attrs[parseInt(i.toString(), 10)];\n target.setAttribute(attr.name, attr.value);\n }\n };\n CellRenderer.prototype.refreshCell = function (cell, data, attributes, isEdit) {\n var _a;\n var node = this.element.cloneNode();\n var column = cell.column;\n var fData;\n if (cell.isForeignKey) {\n fData = cell.foreignKeyData[0] || (_a = {}, _a[column.foreignKeyValue] = column.format ? null : '', _a);\n }\n //Prepare innerHtml\n var innerHtml = this.getGui();\n var value = cell.isForeignKey ? this.getValue(column.foreignKeyValue, fData, column) :\n this.getValue(column.field, data, column);\n if ((column.type === 'date' || column.type === 'datetime') && !isNullOrUndefined(value)) {\n value = new Date(value);\n }\n if (column.type === 'dateonly' && !isNullOrUndefined(value) && typeof value === 'string') {\n var arr = value.split(/[^0-9.]/);\n value = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n value = this.format(column, value, data);\n innerHtml = value.toString();\n if (column.type === 'boolean' && !column.displayAsCheckBox) {\n var localeStr = (value !== 'true' && value !== 'false') ? null : value === 'true' ? 'True' : 'False';\n innerHtml = localeStr ? this.localizer.getConstant(localeStr) : innerHtml;\n }\n var fromFormatter = this.invokeFormatter(column, value, data);\n innerHtml = !isNullOrUndefined(column.formatter) ? isNullOrUndefined(fromFormatter) ? '' : fromFormatter.toString() : innerHtml;\n if (this.evaluate(node, cell, data, attributes, fData, isEdit) && column.type !== 'checkbox') {\n this.appendHtml(node, this.parent.sanitize(innerHtml), column.getDomSetter ? column.getDomSetter() : 'innerHTML');\n }\n else if (column.type === 'checkbox') {\n node.classList.add(literals.gridChkBox);\n if (this.parent.selectionSettings.persistSelection) {\n value = value === 'true';\n }\n else {\n value = false;\n }\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n if (this.parent.cssClass) {\n addClass([checkWrap], [this.parent.cssClass]);\n }\n this.rowChkBox.id = 'checkbox-' + cell.rowID;\n checkWrap.insertBefore(this.rowChkBox.cloneNode(), checkWrap.firstChild);\n node.appendChild(checkWrap);\n }\n if (this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n cell.isSelected = true;\n }\n this.setAttributes(node, cell, attributes);\n if (column.type === 'boolean' && column.displayAsCheckBox) {\n var checked = isNaN(parseInt(value.toString(), 10)) ? value === 'true' : parseInt(value.toString(), 10) > 0;\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: checked, label: ' ' });\n node.innerHTML = '';\n node.classList.add('e-gridchkbox-cell');\n checkWrap.classList.add('e-checkbox-disabled');\n if (this.parent.cssClass) {\n addClass([checkWrap], [this.parent.cssClass]);\n }\n node.appendChild(checkWrap);\n }\n if (node.classList.contains('e-summarycell') && !data.key) {\n var uid = node.getAttribute('e-mappinguid');\n column = this.parent.getColumnByUid(uid);\n node.setAttribute('aria-label', innerHtml + this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n }\n if (this.parent.isFrozenGrid() && (!data || (data && !data.key))) {\n addStickyColumnPosition(this.parent, column, node);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHTML\n * @param {string} property - specifies the element\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.appendHtml = function (node, innerHtml, property) {\n if (property === void 0) { property = 'innerHTML'; }\n node[\"\" + property] = innerHtml;\n return node;\n };\n /**\n * @param {HTMLElement} node - specifies the node\n * @param {cell} cell - specifies the cell\n * @param {Object} attributes - specifies the attributes\n * @returns {void}\n * @hidden\n */\n CellRenderer.prototype.setAttributes = function (node, cell, attributes) {\n var column = cell.column;\n this.buildAttributeFromCell(node, cell, column.type === 'checkbox');\n setStyleAndAttributes(node, attributes);\n setStyleAndAttributes(node, cell.attributes);\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(node, { 'data-cell': column.headerText });\n }\n if (column.textAlign) {\n node.style.textAlign = column.textAlign;\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')\n && !(this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Content'\n || this.parent.textWrapSettings.wrapMode === 'Both'))) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n };\n CellRenderer.prototype.buildAttributeFromCell = function (node, cell, isCheckBoxType) {\n var attr = {};\n var prop = { 'colindex': literals.dataColIndex };\n var classes = [];\n if (cell.colSpan) {\n attr.colSpan = cell.colSpan;\n }\n if (cell.rowSpan) {\n attr.rowSpan = cell.rowSpan;\n }\n if (cell.isTemplate) {\n classes.push('e-templatecell');\n }\n if (cell.isSelected) {\n classes.push.apply(classes, ['e-selectionbackground', 'e-active']);\n if (isCheckBoxType) {\n node.querySelector('.e-frame').classList.add('e-check');\n }\n }\n if (cell.isColumnSelected) {\n classes.push.apply(classes, ['e-columnselection']);\n }\n if (cell.cellType === CellType.Header) {\n attr[prop.colindex] = cell.colIndex;\n attr[literals.ariaColIndex] = cell.colIndex + 1;\n }\n else if (!isNullOrUndefined(cell.index)) {\n attr[prop.colindex] = cell.index;\n attr[literals.ariaColIndex] = cell.index + 1;\n }\n if (!cell.visible) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(node, attr);\n };\n CellRenderer.prototype.getValue = function (field, data, column) {\n return column.valueAccessor(field, data, column);\n };\n return CellRenderer;\n}());\nexport { CellRenderer };\n","import { isNullOrUndefined, addClass, extend } from '@syncfusion/ej2-base';\nimport { appendChildren, setStyleAndAttributes, addFixedColumnBorder, addStickyColumnPosition } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar InlineEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - returns the IGrid\n */\n function InlineEditRender(parent) {\n this.parent = parent;\n }\n InlineEditRender.prototype.addNew = function (elements, args) {\n this.isEdit = false;\n var tbody;\n if (this.parent.frozenRows && this.parent.editSettings.newRowPosition === 'Top') {\n tbody = this.parent.getHeaderTable().querySelector(literals.tbody);\n }\n else {\n tbody = this.parent.getContentTable().querySelector(literals.tbody);\n }\n args.row = this.parent.createElement('tr', { className: 'e-row e-addedrow' });\n if (this.parent.getContentTable().querySelector('.e-emptyrow')) {\n var emptyRow = this.parent.getContentTable().querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (this.parent.frozenRows && this.parent.element.querySelector('.e-frozenrow-empty')) {\n this.parent.element.querySelector('.e-frozenrow-empty').classList.remove('e-frozenrow-empty');\n }\n }\n if (this.parent.editSettings.newRowPosition === 'Top') {\n tbody.insertBefore(args.row, tbody.firstChild);\n }\n else {\n tbody.appendChild(args.row);\n }\n args.row.appendChild(this.getEditElement(elements, false, undefined, args, true));\n this.parent.editModule.checkLastRow(args.row, args);\n };\n InlineEditRender.prototype.update = function (elements, args) {\n this.isEdit = true;\n var tdElement = [].slice.call(args.row.querySelectorAll('td.e-rowcell'));\n args.row.innerHTML = '';\n args.row.appendChild(this.getEditElement(elements, true, tdElement, args, true));\n args.row.classList.add(literals.editedRow);\n this.parent.editModule.checkLastRow(args.row, args);\n };\n // eslint-disable-next-line max-len\n InlineEditRender.prototype.getEditElement = function (elements, isEdit, tdElement, args, isFrozen) {\n var gObj = this.parent;\n var gLen = 0;\n var isDetail = !isNullOrUndefined(gObj.detailTemplate) || !isNullOrUndefined(gObj.childGrid) ? 1 : 0;\n if (gObj.allowGrouping) {\n gLen = gObj.groupSettings.columns.length;\n }\n var td = this.parent.createElement('td', {\n className: 'e-editcell e-normaledit',\n attrs: {\n colspan: (gObj.getCurrentVisibleColumns(this.parent.enableColumnVirtualization).length +\n this.parent.getIndentCount()).toString()\n }\n });\n var form = args.form =\n this.parent.createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n if (this.parent.editSettings.template) {\n this.appendChildren(form, args.rowData, isFrozen);\n td.appendChild(form);\n return td;\n }\n var table = this.parent.createElement('table', { className: 'e-table e-inline-edit', attrs: { cellspacing: '0.25', role: 'grid' } });\n table.appendChild(gObj.getContentTable().querySelector(literals.colGroup).cloneNode(true));\n var tbody = this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var tr = this.parent.createElement('tr');\n var i = 0;\n if (isDetail) {\n tr.insertBefore(this.parent.createElement('td', { className: 'e-detailrowcollapse' }), tr.firstChild);\n }\n if (gObj.isRowDragable()) {\n tr.appendChild(this.parent.createElement('td', { className: 'e-dragindentcell' }));\n }\n while (i < gLen) {\n tr.appendChild(this.parent.createElement('td', { className: 'e-indentcell' }));\n i++;\n }\n var m = 0;\n i = 0;\n var inputValue;\n var cols = args.isCustomFormValidation ? this.parent.columnModel : gObj.getColumns();\n while ((isEdit && m < tdElement.length && i < cols.length) || i < cols.length) {\n var span = isEdit ? tdElement[parseInt(m.toString(), 10)].getAttribute('colspan') : null;\n var col = cols[parseInt(i.toString(), 10)];\n inputValue = (elements[col.uid]).value;\n var td_1 = this.parent.createElement('td', {\n className: literals.rowCell, attrs: { style: 'text-align:' + (col.textAlign ? col.textAlign : ''), 'colspan': span ? span : '' }\n });\n if (col.visible) {\n td_1.appendChild(elements[col.uid]);\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(td_1, { 'data-cell': col.headerText });\n if (i === 0) {\n td_1.classList.add('e-responsive-editcell');\n }\n }\n if (col.editType === 'booleanedit') {\n td_1.classList.add('e-boolcell');\n }\n else if (col.commands || col.commandsTemplate) {\n addClass([td_1], 'e-unboundcell');\n }\n }\n else {\n td_1.classList.add('e-hide');\n }\n if (this.parent.isFrozenGrid()) {\n addStickyColumnPosition(this.parent, col, td_1);\n if (this.parent.enableColumnVirtualization) {\n if (col.freeze === 'Left' && !isNullOrUndefined(col.valueX)) {\n td_1.style.left = (col.valueX - this.parent.translateX) + 'px';\n }\n else if (col.freeze === 'Right' && !isNullOrUndefined(col.valueX)) {\n td_1.style.right = (col.valueX + this.parent.translateX) + 'px';\n }\n else if (col.freeze === 'Fixed') {\n td_1.style.left = (this.parent.leftrightColumnWidth('left') - this.parent.translateX) + 'px';\n td_1.style.right = (this.parent.leftrightColumnWidth('right') + this.parent.translateX) + 'px';\n }\n }\n }\n td_1.setAttribute('aria-label', inputValue + this.parent.localeObj.getConstant('ColumnHeader') + col.headerText);\n tr.appendChild(td_1);\n i = span ? i + parseInt(span, 10) : i + 1;\n m++;\n }\n addFixedColumnBorder(tr);\n tbody.appendChild(tr);\n table.appendChild(tbody);\n form.appendChild(table);\n td.appendChild(form);\n return td;\n };\n InlineEditRender.prototype.removeEventListener = function () {\n //To destroy the renderer\n };\n InlineEditRender.prototype.appendChildren = function (form, data, isFrozen) {\n var _this = this;\n var dummyData = extend({}, data, { isAdd: !this.isEdit, isFrozen: isFrozen }, true);\n var editTemplateID = this.parent.element.id + 'editSettingsTemplate';\n if (this.parent.isReact && typeof (this.parent.editSettings.template) !== 'string') {\n this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID, null, null, form);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(form, this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID));\n }\n // eslint-disable-next-line\n var setRules = function () {\n var cols = _this.parent.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].validationRules) {\n _this.parent.editModule.formObj.rules[cols[parseInt(i.toString(), 10)].field] =\n cols[parseInt(i.toString(), 10)].validationRules;\n }\n }\n };\n };\n return InlineEditRender;\n}());\nexport { InlineEditRender };\n","import { classList } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar BatchEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function BatchEditRender(parent) {\n this.parent = parent;\n }\n BatchEditRender.prototype.update = function (elements, args) {\n if (this.parent.isReact && args.columnObject && args.columnObject.template) {\n var parentRow = args.cell.parentElement;\n var newTd = args.cell.cloneNode(true);\n parentRow.insertBefore(newTd, args.cell);\n newTd.focus();\n args.cell.remove();\n args.cell = newTd;\n }\n args.cell.setAttribute('aria-label', args.cell.innerHTML + this.parent.localeObj.getConstant('ColumnHeader') + args.columnObject.field);\n args.cell.innerHTML = '';\n args.cell.appendChild(this.getEditElement(elements, args));\n args.cell.classList.add('e-editedbatchcell');\n classList(args.row, [literals.editedRow, 'e-batchrow'], []);\n };\n BatchEditRender.prototype.getEditElement = function (elements, args) {\n var gObj = this.parent;\n var form = this.parent\n .createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n form.appendChild(elements[args.columnObject.uid]);\n if (args.columnObject.editType === 'booleanedit') {\n args.cell.classList.add('e-boolcell');\n }\n if (!args.columnObject.editType) {\n args.cell.classList.add('e-inputbox');\n }\n return form;\n };\n BatchEditRender.prototype.removeEventListener = function () {\n //To destroy the renderer\n };\n return BatchEditRender;\n}());\nexport { BatchEditRender };\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { remove, extend, updateBlazorTemplate, initializeCSPTemplate } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { appendChildren, applyBiggerTheme, addBiggerDialog } from '../base/util';\nimport { ResponsiveDialogRenderer } from './responsive-dialog-renderer';\nimport { ResponsiveDialogAction } from '../base/enum';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar DialogEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function DialogEditRender(parent, serviceLocator) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.dialogDestroy, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n DialogEditRender.prototype.setLocaleObj = function () {\n this.l10n = this.serviceLocator.getService('localization');\n };\n DialogEditRender.prototype.addNew = function (elements, args) {\n this.isEdit = false;\n this.createDialog(elements, args);\n };\n DialogEditRender.prototype.update = function (elements, args) {\n this.isEdit = true;\n this.createDialog(elements, args);\n };\n DialogEditRender.prototype.createDialogHeader = function (args) {\n var _this = this;\n var gObj = this.parent;\n var header;\n if (this.parent.enableAdaptiveUI) {\n var responsiveDlgRenderer = new ResponsiveDialogRenderer(this.parent, this.serviceLocator);\n responsiveDlgRenderer.action = this.isEdit ? ResponsiveDialogAction.isEdit : ResponsiveDialogAction.isAdd;\n return responsiveDlgRenderer.renderResponsiveHeader(undefined, args);\n }\n else {\n if (gObj.editSettings.headerTemplate) {\n header = initializeCSPTemplate(function () {\n return _this.getDialogEditTemplateElement('HeaderTemplate', args).outerHTML;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n });\n }\n else if (this.isEdit) {\n header = this.l10n.getConstant('EditFormTitle') + args.primaryKeyValue[0];\n }\n else {\n header = this.l10n.getConstant('AddFormTitle');\n }\n }\n return header;\n };\n DialogEditRender.prototype.createDialog = function (elements, args) {\n var _this = this;\n var gObj = this.parent;\n this.dialog = this.parent.createElement('div', { id: gObj.element.id + '_dialogEdit_wrapper', styles: 'width: auto' });\n if (gObj.enableAdaptiveUI) {\n this.dialog.classList.add('e-responsive-dialog');\n }\n gObj.element.appendChild(this.dialog);\n this.setLocaleObj();\n this.dialog.setAttribute('aria-label', this.l10n.getConstant('DialogEdit'));\n // let position: PositionDataModel = this.parent.element.getBoundingClientRect().height < 400 ?\n // { X: 'center', Y: 'top' } : { X: 'center', Y: 'center' };\n this.dialogObj = new Dialog(extend({\n header: this.createDialogHeader(args), isModal: true, visible: true,\n cssClass: this.parent.cssClass ? 'e-edit-dialog' + ' ' + this.parent.cssClass : 'e-edit-dialog',\n content: this.getEditElement(elements, args),\n showCloseIcon: true,\n allowDragging: true,\n // position: position,\n close: this.dialogClose.bind(this),\n created: this.dialogCreated.bind(this),\n closeOnEscape: true, width: gObj.editSettings.template ? 'auto' : '330px',\n target: args.target ? args.target : document.body, animationSettings: { effect: 'None' },\n footerTemplate: gObj.editSettings.footerTemplate ? initializeCSPTemplate(function () {\n return _this.getDialogEditTemplateElement('FooterTemplate', args).outerHTML;\n }) : null,\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: { content: this.l10n.getConstant('SaveButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true }\n },\n { click: this.btnClick.bind(this),\n buttonModel: {\n cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.l10n.getConstant('CancelButton')\n } }]\n }, gObj.editSettings.dialog ? (gObj.editSettings.dialog.params || {}) : {}));\n args.dialog = this.dialogObj;\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dialogObj.appendTo(this.dialog);\n applyBiggerTheme(this.parent.element, this.dialogObj.element.parentElement);\n if (gObj.enableAdaptiveUI) {\n this.dialogObj.show(true);\n }\n };\n DialogEditRender.prototype.dialogCreated = function () {\n addBiggerDialog(this.parent);\n };\n DialogEditRender.prototype.renderResponsiveDialog = function () {\n var _this = this;\n if (this.parent.enableAdaptiveUI) {\n if (this.parent.adaptiveDlgTarget) {\n this.dialogObj.target = this.parent.adaptiveDlgTarget;\n }\n this.dialogObj.buttons = [{}];\n this.dialogObj.showCloseIcon = true;\n this.dialogObj.visible = false;\n this.dialogObj.width = '100%';\n this.dialogObj.open = function () {\n _this.dialogObj.element.style.maxHeight = '100%';\n };\n }\n };\n DialogEditRender.prototype.btnClick = function (e) {\n if (this.l10n.getConstant('CancelButton').toLowerCase() === e.target.innerText.trim().toLowerCase()) {\n this.dialogClose();\n }\n else {\n this.parent.endEdit();\n }\n };\n DialogEditRender.prototype.dialogClose = function () {\n this.parent.closeEdit();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DialogEditRender.prototype.destroy = function (args) {\n var dialogEditTemplates = ['template', 'headerTemplate', 'footerTemplate'];\n for (var i = 0; i < dialogEditTemplates.length; i++) {\n if (this.parent.editSettings[dialogEditTemplates[parseInt(i.toString(), 10)]]) {\n var templateName = dialogEditTemplates[parseInt(i.toString(), 10)].charAt(0).toUpperCase()\n + dialogEditTemplates[parseInt(i.toString(), 10)].slice(1);\n var editTemplateID = this.parent.element.id + 'editSettings' + templateName;\n updateBlazorTemplate(editTemplateID, templateName, this.parent.editSettings);\n }\n }\n this.parent.notify(events.destroyForm, {});\n this.parent.isEdit = false;\n this.parent.notify(events.toolbarRefresh, {});\n if (this.dialog && !this.dialogObj.isDestroyed) {\n this.dialogObj.destroy();\n remove(this.dialog);\n }\n };\n DialogEditRender.prototype.getDialogEditTemplateElement = function (dialogTemp, args) {\n var tempDiv = this.parent.createElement('div', { className: 'e-dialog' + dialogTemp });\n var dummyData = extend({}, args.rowData, { isAdd: !this.isEdit }, true);\n var templateID = this.parent.element.id + 'editSettings' + dialogTemp;\n appendChildren(tempDiv, (dialogTemp === 'HeaderTemplate' ? this.parent.getEditHeaderTemplate() :\n this.parent.getEditFooterTemplate())(dummyData, this.parent, 'editSettings' + dialogTemp, templateID));\n updateBlazorTemplate(templateID, dialogTemp, this.parent.editSettings);\n return tempDiv;\n };\n DialogEditRender.prototype.getEditElement = function (elements, args) {\n var _this = this;\n var gObj = this.parent;\n var div = this.parent.createElement('div', { className: this.isEdit ? literals.editedRow : 'e-insertedrow' });\n var form = args.form =\n this.parent.createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n if (this.parent.editSettings.template) {\n var editTemplateID = this.parent.element.id + 'editSettingsTemplate';\n var dummyData = extend({}, args.rowData, { isAdd: !this.isEdit }, true);\n var isReactCompiler = this.parent.isReact && typeof (this.parent.editSettings.template) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID, null, null, form);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(form, this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID));\n }\n var setRules = function () {\n var columns = _this.parent.getColumns();\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].validationRules) {\n _this.parent.editModule.formObj.rules[columns[parseInt(i.toString(), 10)].field] =\n columns[parseInt(i.toString(), 10)].validationRules;\n }\n }\n };\n updateBlazorTemplate(editTemplateID, 'Template', this.parent.editSettings, true, setRules);\n div.appendChild(form);\n return div;\n }\n var table = this.parent.createElement('table', { className: literals.table, attrs: { cellspacing: '6px', role: 'grid' } });\n var tbody = this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var cols = gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (this.parent.editModule.checkColumnIsGrouped(cols[parseInt(i.toString(), 10)]) || cols[parseInt(i.toString(), 10)].commands\n || cols[parseInt(i.toString(), 10)].commandsTemplate || cols[parseInt(i.toString(), 10)].type === 'checkbox') {\n continue;\n }\n var tr = this.parent.createElement('tr', { attrs: { role: 'row' } });\n var dataCell = this.parent.createElement('td', {\n className: literals.rowCell, attrs: {\n style: 'text-align:' + (this.parent.enableRtl ? 'right' : 'left') + ';width:190px'\n }\n });\n elements[cols[parseInt(i.toString(), 10)].uid].classList.remove('e-input');\n dataCell.appendChild(elements[cols[parseInt(i.toString(), 10)].uid]);\n tr.appendChild(dataCell);\n tbody.appendChild(tr);\n }\n table.appendChild(tbody);\n form.appendChild(table);\n div.appendChild(form);\n return div;\n };\n DialogEditRender.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.dialogDestroy, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return DialogEditRender;\n}());\nexport { DialogEditRender };\n","import { isNullOrUndefined, closest, extend } from '@syncfusion/ej2-base';\nimport { InlineEditRender } from './inline-edit-renderer';\nimport { BatchEditRender } from './batch-edit-renderer';\nimport { DialogEditRender } from './dialog-edit-renderer';\nimport { attributes, classList, select } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { getComplexFieldID, getObject, appendChildren, parentsUntil, extendObjWithFn, padZero } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar EditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent -specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function EditRender(parent, serviceLocator) {\n //Internal variables\n this.editType = {\n 'Inline': InlineEditRender,\n 'Normal': InlineEditRender, 'Batch': BatchEditRender, 'Dialog': DialogEditRender\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.renderer = new this.editType[this.parent.editSettings.mode](parent, serviceLocator);\n this.focus = serviceLocator.getService('focus');\n }\n EditRender.prototype.addNew = function (args) {\n this.renderer.addNew(this.getEditElements(args), args);\n this.convertWidget(args);\n };\n EditRender.prototype.update = function (args) {\n this.renderer.update(this.getEditElements(args), args);\n var isCustomFormValidation = args.isCustomFormValidation;\n if (!isCustomFormValidation) {\n this.parent.notify(events.beforeStartEdit, args);\n this.convertWidget(args);\n }\n };\n EditRender.prototype.convertWidget = function (args) {\n var gObj = this.parent;\n var isFocused;\n var cell;\n var value;\n var form = gObj.editSettings.mode === 'Dialog' ?\n select('#' + gObj.element.id + '_dialogEdit_wrapper .e-gridform', document) :\n gObj.element.getElementsByClassName('e-gridform')[0];\n var cols = gObj.editSettings.mode !== 'Batch' ? gObj.getColumns() : [gObj.getColumnByField(args.columnName)];\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var col = cols_1[_i];\n if (this.parent.editSettings.template && !isNullOrUndefined(col.field)) {\n var cellArgs = extend({}, args);\n cellArgs.element = form.querySelector('[name=' + getComplexFieldID(col.field) + ']');\n if (typeof col.edit.write === 'string') {\n getObject(col.edit.write, window)(cellArgs);\n }\n else {\n col.edit.write(cellArgs);\n }\n continue;\n }\n if (this.parent.editModule.checkColumnIsGrouped(col) || col.commands) {\n continue;\n }\n // eslint-disable-next-line\n value = (col.valueAccessor(col.field, args.rowData, col));\n cell = form.querySelector('[e-mappinguid=' + col.uid + ']');\n var temp = col.edit.write;\n if (!isNullOrUndefined(cell)) {\n if (typeof temp === 'string') {\n temp = getObject(temp, window);\n temp({\n rowData: args.rowData, element: cell, column: col, requestType: args.requestType, row: args.row,\n foreignKeyData: col.isForeignColumn() && getObject(col.field, args.foreignKeyData)\n });\n }\n else {\n col.edit.write({\n rowData: args.rowData, element: cell, column: col, requestType: args.requestType, row: args.row,\n foreignKeyData: col.isForeignColumn() && getObject(col.field, args.foreignKeyData)\n });\n }\n if (!isFocused && !cell.getAttribute('disabled') && !parentsUntil(cell, 'e-checkbox-disabled')) {\n this.focusElement(cell, args.type);\n isFocused = true;\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n EditRender.prototype.focusElement = function (elem, type) {\n var chkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(chkBox) && chkBox.nextElementSibling) {\n chkBox.nextElementSibling.classList.add('e-focus');\n }\n if (this.parent.editSettings.mode === 'Batch') {\n this.focus.onClick({ target: closest(elem, 'td') }, true);\n }\n else {\n var isFocus = (this.parent.enableVirtualization || this.parent.enableColumnVirtualization) && this.parent.editSettings.mode === 'Normal' ? false : true;\n if (isFocus || ((this.parent.enableVirtualization || this.parent.enableColumnVirtualization) && this.parent.editSettings.newRowPosition === 'Bottom'\n && parentsUntil(elem, literals.addedRow))) {\n elem.focus();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n elem.focus({ preventScroll: true });\n }\n }\n if (elem.classList.contains('e-defaultcell')) {\n elem.setSelectionRange(elem.value.length, elem.value.length);\n }\n };\n EditRender.prototype.getEditElements = function (args) {\n var gObj = this.parent;\n var elements = {};\n var cols = gObj.editSettings.mode !== 'Batch' ? gObj.getColumns() : [gObj.getColumnByField(args.columnName)];\n if (args.isCustomFormValidation) {\n cols = this.parent.columnModel;\n }\n if (this.parent.editSettings.template) {\n return {};\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n var col = cols[parseInt(i.toString(), 10)];\n if (col.commands || col.commandsTemplate) {\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var model = new RowModelGenerator(this.parent);\n var cellRenderer = cellRendererFact.getCellRenderer(CellType.CommandColumn);\n var cells = model.generateRows(args.rowData)[0].cells;\n var cell = cells.filter(function (cell) { return cell.rowID; });\n var td = cellRenderer.render(cell[parseInt(i.toString(), 10)], args.rowData, { 'index': args.row ? args.row.getAttribute(literals.dataRowIndex) : 0 }, this.parent.enableVirtualization);\n var div = td.firstElementChild;\n div.setAttribute('textAlign', td.getAttribute('textAlign'));\n elements[col.uid] = div;\n continue;\n }\n if (col.type === 'dateonly' && args.rowData[col.field] instanceof Date) {\n var cellValue = args.rowData[col.field];\n args.rowData[col.field] = cellValue.getFullYear() + '-' + padZero(cellValue.getMonth() + 1) + '-' + padZero(cellValue.getDate());\n }\n var value = (col.valueAccessor(col.field, args.rowData, col));\n var tArgs = { column: col, value: value, type: args.requestType, data: args.rowData };\n var temp = col.edit.create;\n var input = void 0;\n if (col.editTemplate) {\n input = this.parent.createElement('span', { attrs: { 'e-mappinguid': col.uid } });\n var tempID = this.parent.element.id + col.uid + 'editTemplate';\n var tempData = extendObjWithFn({}, args.rowData, { column: col });\n var isReactCompiler = this.parent.isReact && typeof (col.editTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n col.getEditTemplate()(extend({ 'index': args.rowIndex }, tempData), this.parent, 'editTemplate', tempID, null, null, input);\n this.parent.renderTemplates();\n }\n else {\n var template = col.getEditTemplate()(extend({ 'index': args.rowIndex }, tempData), this.parent, 'editTemplate', tempID);\n appendChildren(input, template);\n }\n }\n else {\n if (typeof temp === 'string') {\n temp = getObject(temp, window);\n input = temp(tArgs);\n }\n else {\n input = col.edit.create(tArgs);\n }\n if (typeof input === 'string') {\n var div = this.parent.createElement('div');\n div.innerHTML = input;\n input = div.firstChild;\n }\n var isInput = input.tagName !== 'input' && input.querySelectorAll('input').length;\n var complexFieldName = getComplexFieldID(col.field);\n attributes(isInput ? input.querySelector('input') : input, {\n name: complexFieldName, 'e-mappinguid': col.uid,\n id: gObj.element.id + complexFieldName\n });\n classList(input, ['e-input', 'e-field'], []);\n if (col.textAlign === 'Right') {\n input.classList.add('e-ralign');\n }\n if ((col.isPrimaryKey || col.isIdentity) && args.requestType === 'beginEdit' ||\n (col.isIdentity && args.requestType === 'add')) { // already disabled in cell plugins\n input.setAttribute('disabled', '');\n }\n }\n elements[col.uid] = input;\n }\n return elements;\n };\n EditRender.prototype.destroy = function () {\n this.renderer.removeEventListener();\n };\n return EditRender;\n}());\nexport { EditRender };\n","import { createEditElement } from '../base/util';\n/**\n * `DropDownEditCell` is used to handle dropdown cell type editing.\n *\n * @hidden\n */\nvar EditCellBase = /** @class */ (function () {\n function EditCellBase(parent) {\n this.parent = parent;\n }\n EditCellBase.prototype.create = function (args) {\n return createEditElement(this.parent, args.column, 'e-field', { type: 'text' });\n };\n EditCellBase.prototype.read = function (element) {\n return element.ej2_instances[0].value;\n };\n EditCellBase.prototype.destroy = function () {\n if (this.obj && !this.obj.isDestroyed) {\n if (this.removeEventHandler) {\n this.removeEventHandler();\n }\n this.obj.destroy();\n }\n };\n return EditCellBase;\n}());\nexport { EditCellBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { extend } from '@syncfusion/ej2-base';\nimport { isEditable, addRemoveActiveClasses, createEditElement, getObject } from '../base/util';\nimport * as literals from '../base/string-literals';\nimport { EditCellBase } from './edit-cell-base';\n/**\n * `BooleanEditCell` is used to handle boolean cell type editing.\n *\n * @hidden\n */\nvar BooleanEditCell = /** @class */ (function (_super) {\n __extends(BooleanEditCell, _super);\n function BooleanEditCell() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.activeClasses = ['e-selectionbackground', 'e-active'];\n return _this;\n }\n BooleanEditCell.prototype.create = function (args) {\n var col = args.column;\n var classNames = 'e-field e-boolcell';\n if (col.type === 'checkbox') {\n classNames = 'e-field e-boolcell e-edit-checkselect';\n }\n this.removeEventHandler = this.removeEventListener;\n return createEditElement(this.parent, args.column, classNames, { type: 'checkbox', value: args.value });\n };\n BooleanEditCell.prototype.read = function (element) {\n return element.checked;\n };\n BooleanEditCell.prototype.write = function (args) {\n var selectChkBox;\n var chkState;\n if (!isNullOrUndefined(args.row)) {\n selectChkBox = args.row.querySelector('.e-edit-checkselect');\n }\n if (getObject(args.column.field, args.rowData)) {\n chkState = JSON.parse(getObject(args.column.field, args.rowData).toString().toLowerCase());\n }\n if (!isNullOrUndefined(selectChkBox) && args.column.type === 'checkbox') {\n this.editType = this.parent.editSettings.mode;\n this.editRow = args.row;\n if (args.requestType !== 'add') {\n var row = this.parent.getRowObjectFromUID(args.row.getAttribute('data-uid'));\n chkState = row ? row.isSelected : false;\n }\n addRemoveActiveClasses.apply(void 0, [[].slice.call(args.row.getElementsByClassName(literals.rowCell)), chkState].concat(this.activeClasses));\n }\n this.obj = new CheckBox(extend({\n label: this.parent.editSettings.mode !== 'Dialog' ? ' ' : args.column.headerText,\n checked: chkState,\n disabled: !isEditable(args.column, args.requestType, args.element), enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n }, args.column.edit.params));\n this.addEventListener();\n this.obj.appendTo(args.element);\n };\n BooleanEditCell.prototype.addEventListener = function () {\n this.cbChange = this.checkBoxChange.bind(this);\n this.obj.addEventListener(literals.change, this.cbChange);\n };\n BooleanEditCell.prototype.removeEventListener = function () {\n if (this.obj.isDestroyed) {\n return;\n }\n this.obj.removeEventListener(literals.change, this.cbChange);\n };\n BooleanEditCell.prototype.checkBoxChange = function (args) {\n if (this.editRow && this.editType !== 'Dialog') {\n var add = false;\n if (!args.checked) {\n this.editRow.removeAttribute('aria-selected');\n }\n else {\n add = true;\n this.editRow.setAttribute('aria-selected', add.toString());\n }\n addRemoveActiveClasses.apply(void 0, [[].slice.call(this.editRow.getElementsByClassName(literals.rowCell)), add].concat(this.activeClasses));\n }\n };\n return BooleanEditCell;\n}(EditCellBase));\nexport { BooleanEditCell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend, isNullOrUndefined, select } from '@syncfusion/ej2-base';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { Query, DataManager, DataUtil, Predicate } from '@syncfusion/ej2-data';\nimport { isEditable, getComplexFieldID, getObject } from '../base/util';\nimport { parentsUntil } from '../base/util';\nimport { EditCellBase } from './edit-cell-base';\nimport * as literals from '../base/string-literals';\nimport * as events from '../base/constant';\n/**\n * `DropDownEditCell` is used to handle dropdown cell type editing.\n *\n * @hidden\n */\nvar DropDownEditCell = /** @class */ (function (_super) {\n __extends(DropDownEditCell, _super);\n function DropDownEditCell(parent) {\n var _this = \n //constructor\n _super.call(this) || this;\n _this.parent = parent;\n _this.flag = false;\n _this.removeEventHandler = _this.removeEventListener;\n return _this;\n }\n DropDownEditCell.prototype.write = function (args) {\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.column = args.column;\n var pred = new Predicate(args.column.field, 'notequal', null, true, false);\n var params = {};\n if (args.column.edit.params) {\n var keys = Object.keys(args.column.edit.params);\n for (var i = 0; i < keys.length; i++) {\n params[keys[parseInt(i.toString(), 10)]] = keys[parseInt(i.toString(), 10)] === 'query' ?\n args.column.edit.params[keys[parseInt(i.toString(), 10)]].clone() :\n args.column.edit.params[keys[parseInt(i.toString(), 10)]];\n }\n }\n this.obj = new DropDownList(extend({\n dataSource: this.parent.dataSource instanceof DataManager ?\n this.parent.dataSource : new DataManager(this.parent.dataSource),\n query: new Query().where(pred).select(args.column.field), enabled: isEditable(args.column, args.requestType, args.element),\n fields: { value: args.column.field },\n value: getObject(args.column.field, args.rowData),\n enableRtl: this.parent.enableRtl,\n placeholder: isInline ? '' : args.column.headerText, popupHeight: '200px',\n floatLabelType: isInline ? 'Never' : 'Always',\n sortOrder: 'Ascending',\n cssClass: this.parent.cssClass ? this.parent.cssClass : null,\n close: this.dropDownClose.bind(this)\n }, params));\n if (this.parent.enableVirtualization) {\n if (params.dataSource) {\n this.obj.dataSource = params.dataSource;\n }\n else {\n this.obj.dataSource = args.column.isForeignColumn() ? [args.foreignKeyData[0]] : [args.rowData];\n }\n }\n this.addEventListener();\n this.obj.query.params = this.parent.query.params;\n this.obj.appendTo(args.element);\n /* tslint:disable-next-line:no-any */\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n };\n DropDownEditCell.prototype.dropDownClose = function (args) {\n if (args.event && args.event.action === 'escape') {\n this.parent.editModule.editCellDialogClose = true;\n }\n };\n DropDownEditCell.prototype.addEventListener = function () {\n this.ddCreated = this.dropdownCreated.bind(this);\n this.ddOpen = this.dropDownOpen.bind(this);\n this.ddBeforeOpen = this.dropdownBeforeOpen.bind(this);\n this.ddComplete = this.ddActionComplete.bind(this);\n this.obj.addEventListener(literals.create, this.ddCreated);\n this.obj.addEventListener(literals['open'], this.ddOpen);\n this.obj.addEventListener(literals.beforeOpen, this.ddBeforeOpen);\n this.obj.addEventListener(events.actionComplete, this.ddComplete);\n };\n DropDownEditCell.prototype.removeEventListener = function () {\n if (this.obj.isDestroyed) {\n return;\n }\n this.obj.removeEventListener(literals.create, this.ddCreated);\n this.obj.removeEventListener(literals['open'], this.ddOpen);\n this.obj.removeEventListener(literals.beforeOpen, this.ddBeforeOpen);\n this.obj.removeEventListener(events.actionComplete, this.ddComplete);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownEditCell.prototype.dropdownCreated = function (e) {\n this.flag = true;\n };\n DropDownEditCell.prototype.dropdownBeforeOpen = function () {\n if (this.parent.enableVirtualization) {\n if (this.column.edit.params && this.column.edit.params.dataSource) {\n this.obj.dataSource = this.column.edit.params.dataSource;\n }\n else {\n this.obj.dataSource = !this.column.isForeignColumn() ? (this.parent.dataSource instanceof DataManager ?\n this.parent.dataSource : new DataManager(this.parent.dataSource))\n : this.column.dataSource instanceof DataManager ?\n this.column.dataSource : new DataManager(this.column.dataSource);\n }\n }\n };\n DropDownEditCell.prototype.ddActionComplete = function (e) {\n e.result = DataUtil.distinct(e.result, this.obj.fields.value, true);\n if (this.flag && this.column.dataSource && !(this.column.edit.params &&\n this.column.edit.params.ddEditedData)) {\n if ('result' in this.column.dataSource) {\n this.column.dataSource.result = e.result;\n }\n else if (this.column.dataSource instanceof DataManager) {\n this.column.dataSource.dataSource.json = e.result;\n }\n }\n this.flag = false;\n };\n DropDownEditCell.prototype.dropDownOpen = function (args) {\n var dlgElement = parentsUntil(this.obj.element, 'e-dialog');\n if (this.parent.editSettings.mode === 'Dialog' && !isNullOrUndefined(dlgElement)) {\n var dlgObj = select('#' + dlgElement.id, document).ej2_instances[0];\n args.popup.element.style.zIndex = (dlgObj.zIndex + 1).toString();\n }\n };\n return DropDownEditCell;\n}(EditCellBase));\nexport { DropDownEditCell };\n","import { extend, Internationalization } from '@syncfusion/ej2-base';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { isEditable, getComplexFieldID, getObject, createEditElement } from '../base/util';\n/**\n * `NumericEditCell` is used to handle numeric cell type editing.\n *\n * @hidden\n */\nvar NumericEditCell = /** @class */ (function () {\n function NumericEditCell(parent) {\n this.parent = parent;\n }\n NumericEditCell.prototype.keyEventHandler = function (args) {\n if (args.keyCode === 13 || args.keyCode === 9) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent('change', false, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dispatchEvent(evt);\n }\n };\n NumericEditCell.prototype.create = function (args) {\n this.instances = new Internationalization(this.parent.locale);\n return createEditElement(this.parent, args.column, 'e-field', {});\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NumericEditCell.prototype.read = function (element) {\n return this.obj.value;\n };\n NumericEditCell.prototype.write = function (args) {\n var col = args.column;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new NumericTextBox(extend({\n value: parseFloat(getObject(args.column.field, args.rowData)),\n enableRtl: this.parent.enableRtl,\n placeholder: isInline ? '' : args.column.headerText,\n enabled: isEditable(args.column, args.requestType, args.element),\n floatLabelType: this.parent.editSettings.mode !== 'Dialog' ? 'Never' : 'Always',\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, col.edit.params));\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n this.obj.appendTo(args.element);\n this.obj.element.addEventListener('keydown', this.keyEventHandler);\n };\n NumericEditCell.prototype.destroy = function () {\n if (this.obj && !this.obj.isDestroyed) {\n this.obj.element.removeEventListener('keydown', this.keyEventHandler);\n this.obj.destroy();\n }\n };\n return NumericEditCell;\n}());\nexport { NumericEditCell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { isEditable, createEditElement } from '../base/util';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { EditCellBase } from './edit-cell-base';\n/**\n * `DefaultEditCell` is used to handle default cell type editing.\n *\n * @hidden\n */\nvar DefaultEditCell = /** @class */ (function (_super) {\n __extends(DefaultEditCell, _super);\n function DefaultEditCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DefaultEditCell.prototype.create = function (args) {\n var attr = {\n type: 'text', value: !isNullOrUndefined(args.value) ? args.value : '', style: 'text-align:' + args.column.textAlign\n };\n return createEditElement(this.parent, args.column, 'e-field e-input e-defaultcell', attr);\n };\n DefaultEditCell.prototype.read = function (element) {\n return element.value;\n };\n DefaultEditCell.prototype.write = function (args) {\n var col = args.column;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new TextBox(extend({\n element: args.element, floatLabelType: this.parent.editSettings.mode !== 'Dialog' ? 'Never' : 'Always',\n enableRtl: this.parent.enableRtl, enabled: isEditable(args.column, args.requestType, args.element),\n placeholder: isInline ? '' : args.column.headerText,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n }, col.edit.params));\n this.obj.appendTo(args.element);\n if (this.parent.editSettings.mode === 'Batch') {\n this.obj.element.addEventListener('keydown', this.keyEventHandler);\n }\n };\n DefaultEditCell.prototype.keyEventHandler = function (args) {\n if (args.key === 'Enter' || args.key === 'Tab') {\n var evt = new Event('change', { bubbles: false, cancelable: true });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dispatchEvent(evt);\n }\n };\n DefaultEditCell.prototype.destroy = function () {\n if (this.obj && !this.obj.isDestroyed) {\n this.obj.element.removeEventListener('keydown', this.keyEventHandler);\n this.obj.destroy();\n }\n };\n return DefaultEditCell;\n}(EditCellBase));\nexport { DefaultEditCell };\n","import { extend, select } from '@syncfusion/ej2-base';\nimport { remove, isNullOrUndefined, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { parentsUntil, isGroupAdaptive, refreshForeignData, getObject } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport { addRemoveEventListener, addFixedColumnBorder } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * `NormalEdit` module is used to handle normal('inline, dialog, external') editing actions.\n *\n * @hidden\n */\nvar NormalEdit = /** @class */ (function () {\n function NormalEdit(parent, serviceLocator, renderer) {\n this.args = {};\n this.currentVirtualData = {};\n this.parent = parent;\n this.renderer = renderer;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n NormalEdit.prototype.clickHandler = function (e) {\n var target = e.target;\n var gObj = this.parent;\n if ((((parentsUntil(target, literals.gridContent) &&\n parentsUntil(parentsUntil(target, literals.gridContent), 'e-grid').id === gObj.element.id)) || (gObj.frozenRows\n && parentsUntil(target, literals.headerContent))) && !parentsUntil(target, 'e-unboundcelldiv')) {\n this.rowIndex = parentsUntil(target, literals.rowCell)\n ? parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10) : -1;\n if (gObj.isEdit) {\n gObj.editModule.endEdit();\n }\n }\n };\n NormalEdit.prototype.dblClickHandler = function (e) {\n if (parentsUntil(e.target, literals.rowCell) && this.parent.editSettings.allowEditOnDblClick) {\n this.parent.editModule.startEdit(parentsUntil(e.target, literals.row));\n }\n };\n /**\n * The function used to trigger editComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.editComplete = function (e) {\n this.parent.isEdit = false;\n var action = 'action';\n switch (e.requestType) {\n case 'save':\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection)) {\n if (e[\"\" + action] !== 'edit') {\n this.parent.selectRow(e['index']);\n }\n }\n this.parent.trigger(events.actionComplete, extend(e, {\n requestType: 'save',\n type: events.actionComplete\n }));\n break;\n case 'delete':\n this.parent.trigger(events.actionComplete, extend(e, {\n requestType: 'delete',\n type: events.actionComplete\n }));\n if (!this.parent.isCheckBoxSelection) {\n this.parent.selectRow(this.editRowIndex);\n }\n break;\n }\n };\n NormalEdit.prototype.getEditArgs = function (editedData, rowObj, isScroll) {\n var primaryKeys = this.parent.getPrimaryKeyFieldNames();\n var primaryKeyValues = [];\n for (var i = 0; i < primaryKeys.length; i++) {\n primaryKeyValues.push(getObject(primaryKeys[parseInt(i.toString(), 10)], editedData));\n }\n var args = {\n primaryKey: primaryKeys, primaryKeyValue: primaryKeyValues, requestType: 'beginEdit',\n rowData: editedData, rowIndex: this.rowIndex, type: 'edit', cancel: false,\n foreignKeyData: rowObj && rowObj.foreignKeyData, target: undefined, isScroll: isScroll\n };\n return args;\n };\n NormalEdit.prototype.startEdit = function (tr) {\n var _this = this;\n var gObj = this.parent;\n this.rowIndex = this.editRowIndex = parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n if (gObj.enableVirtualization || gObj.enableColumnVirtualization || gObj.enableInfiniteScrolling) {\n var selector = '.e-row[data-rowindex=\"' + this.rowIndex + '\"]';\n var virtualRow = this.parent.element.querySelector(selector);\n if (!virtualRow) {\n return;\n }\n }\n var e = { data: undefined, index: this.rowIndex, isScroll: false };\n this.parent.notify(events.virtualScrollEditActionBegin, e);\n if (isGroupAdaptive(gObj)) {\n var rObj = gObj.getRowObjectFromUID(tr.getAttribute('data-uid'));\n this.previousData = rObj.data;\n }\n else if (this.parent.enableVirtualization || this.parent.enableColumnVirtualization ||\n (this.parent.enableInfiniteScrolling && !this.previousData)) {\n this.previousData = e.data;\n }\n else if (!this.parent.enableVirtualization) {\n this.previousData = extend({}, {}, gObj.getCurrentViewRecords()[this.rowIndex], true);\n }\n var editedData = extend({}, {}, e.data || this.previousData, true);\n this.uid = tr.getAttribute('data-uid');\n var rowObj = gObj.getRowObjectFromUID(this.uid);\n var args = this.getEditArgs(editedData, rowObj, e.isScroll);\n args.row = tr;\n if (!args.isScroll) {\n this.parent.notify(events.createVirtualValidationForm, { uid: this.uid, prevData: this.previousData, argsCreator: this.getEditArgs.bind(this), renderer: this.renderer });\n gObj.trigger(events.beginEdit, args, function (begineditargs) {\n begineditargs.type = 'actionBegin';\n gObj.trigger(events.actionBegin, begineditargs, function (editargs) {\n if (!editargs.cancel) {\n _this.inlineEditHandler(editargs, tr);\n }\n });\n });\n }\n else {\n this.inlineEditHandler(args, tr);\n }\n };\n NormalEdit.prototype.inlineEditHandler = function (editargs, tr) {\n var gObj = this.parent;\n gObj.isEdit = true;\n editargs.row = editargs.row ? editargs.row : tr;\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.clearSelection();\n }\n if (gObj.editSettings.mode === 'Dialog' && gObj.selectionModule) {\n gObj.selectionModule.preventFocus = true;\n editargs.row.classList.add('e-dlgeditrow');\n }\n this.renderer.update(editargs);\n this.uid = tr.getAttribute('data-uid');\n gObj.editModule.applyFormValidation();\n editargs.type = 'actionComplete';\n gObj.trigger(events.actionComplete, editargs);\n if (gObj.editSettings.template) {\n gObj.editModule.applyFormValidation(undefined, editargs.form.ej2_instances[0].rules);\n }\n this.args = editargs;\n if (this.parent.allowTextWrap) {\n this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n };\n NormalEdit.prototype.updateRow = function (index, data) {\n var _this = this;\n var gObj = this.parent;\n this.editRowIndex = index;\n var args = {\n requestType: 'save', action: 'edit', type: events.actionBegin, data: data, cancel: false,\n previousData: gObj.getCurrentViewRecords()[parseInt(index.toString(), 10)],\n row: gObj.getRowByIndex(index)\n };\n gObj.showSpinner();\n if (gObj.enableInfiniteScrolling) {\n this.uid = args.row.getAttribute('data-uid');\n var index_1 = parseInt(args.row.getAttribute('data-rowindex'), 10);\n this.parent.notify(events.refreshInfiniteEditrowindex, { index: index_1 });\n }\n gObj.notify(events.updateData, args);\n if (args.promise) {\n args.promise.then(function () { return gObj.refresh(); }).catch(function (e) { return _this.edFail(e); });\n }\n else {\n if (!gObj.enableInfiniteScrolling) {\n gObj.refresh();\n }\n }\n };\n NormalEdit.prototype.editFormValidate = function () {\n var gObj = this.parent;\n var isValid = gObj.editModule.editFormValidate();\n var validationArgs = {\n prevData: this.previousData, isValid: true, editIdx: this.editRowIndex, addIdx: this.addedRowIndex\n };\n gObj.notify(events.validateVirtualForm, validationArgs);\n return (isValid && validationArgs.isValid);\n };\n NormalEdit.prototype.endEdit = function () {\n var _this = this;\n var gObj = this.parent;\n if (!this.parent.isEdit || !this.editFormValidate()) {\n return;\n }\n var editedData = extend({}, {}, this.previousData, true);\n var args = extend(this.args, {\n requestType: 'save', type: events.actionBegin, data: editedData, cancel: false,\n previousData: this.previousData, selectedRow: gObj.selectedRowIndex, foreignKeyData: {}\n });\n var isDlg = gObj.editSettings.mode === 'Dialog';\n var dlgWrapper = select('#' + gObj.element.id + '_dialogEdit_wrapper', document);\n var dlgForm = isDlg ? dlgWrapper.querySelector('.e-gridform') : gObj.element.getElementsByClassName('e-gridform')[0];\n var data = {\n virtualData: extend({}, {}, this.previousData, true), isAdd: false, isScroll: false, endEdit: true\n };\n this.parent.notify(events.getVirtualData, data);\n if ((this.parent.enableVirtualization || this.parent.enableColumnVirtualization || this.parent.enableInfiniteScrolling)\n && this.parent.editSettings.mode === 'Normal' && Object.keys(data.virtualData).length) {\n if (this.parent.isEdit) {\n this.currentVirtualData = editedData = args.data = data.virtualData;\n }\n }\n else {\n editedData = gObj.editModule.getCurrentEditedData(dlgForm, editedData);\n }\n var eleLength = [].slice.call(gObj.element.getElementsByClassName(literals.editedRow)).length;\n if (!data.isAdd && Object.keys(this.currentVirtualData).length && !eleLength) {\n eleLength = 1;\n }\n if (isDlg ? dlgWrapper.getElementsByClassName(literals.editedRow).length : eleLength) {\n args.action = 'edit';\n gObj.trigger(events.actionBegin, args, function (endEditArgs) {\n if (endEditArgs.cancel) {\n return;\n }\n if (_this.parent.loadingIndicator.indicatorType === 'Spinner') {\n gObj.showSpinner();\n }\n if (_this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n _this.parent.showMaskRow();\n }\n gObj.notify(events.updateData, endEditArgs);\n });\n }\n else {\n args.action = 'add';\n args.selectedRow = 0;\n args.index = this.addedRowIndex;\n gObj.notify(events.virtualScrollEditSuccess, {});\n gObj.notify(events.modelChanged, args);\n this.addedRowIndex = null;\n if (args.cancel) {\n return;\n }\n }\n };\n NormalEdit.prototype.destroyElements = function () {\n var gObj = this.parent;\n gObj.editModule.destroyWidgets();\n gObj.editModule.destroyForm();\n this.parent.notify(events.dialogDestroy, {});\n };\n NormalEdit.prototype.editHandler = function (args) {\n var _this = this;\n if (args.promise) {\n args.promise.then(function (e) { return _this.edSucc(e, args); }).catch(function (e) { return _this.edFail(e); });\n }\n else {\n this.editSuccess(args.data, args);\n }\n };\n NormalEdit.prototype.edSucc = function (e, args) {\n this.editSuccess(e, args);\n };\n NormalEdit.prototype.edFail = function (e) {\n this.editFailure(e);\n };\n NormalEdit.prototype.updateCurrentViewData = function (data) {\n if (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling) {\n this.parent.getCurrentViewRecords()[this.editRowIndex] = data;\n }\n };\n NormalEdit.prototype.requestSuccess = function (args) {\n if (this.parent.editModule.formObj && !this.parent.editModule.formObj.isDestroyed) {\n this.destroyElements();\n this.stopEditStatus();\n if (this.parent.editSettings.mode === 'Dialog' && args.action !== 'add' &&\n this.parent.selectionModule) {\n this.parent.element.querySelector('.e-dlgeditrow').classList.remove('e-dlgeditrow');\n }\n }\n };\n NormalEdit.prototype.editSuccess = function (e, args) {\n if (!isNullOrUndefined(e) && !(e instanceof Array)) {\n var rowData = 'rowData';\n args.data = extend({}, extend({}, args[\"\" + rowData], args.data), e);\n }\n this.requestSuccess(args);\n this.parent.trigger(events.beforeDataBound, args);\n args.type = events.actionComplete;\n this.parent.isEdit = false;\n this.refreshRow(args.data);\n this.parent.notify(events.virtualScrollEditSuccess, args);\n this.parent.editModule.checkLastRow(args.row);\n this.parent.editModule.isLastRow = false;\n this.updateCurrentViewData(args.data);\n this.blazorTemplate();\n this.editRowIndex = null;\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length\n && this.parent.groupSettings.showGroupedColumn) {\n var dragRow = args.row;\n var rows = this.parent.getRowsObject();\n var dragRowUid = dragRow.getAttribute('data-uid');\n var dragRowObject_1 = this.parent.getRowObjectFromUID(dragRowUid);\n var _loop_1 = function (i) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef = this_1;\n rows = rows.filter(function (data) {\n var flag = data.isDataRow && data !== dragRowObject_1;\n if (flag) {\n var groupedColumn = thisRef.parent.groupSettings.columns[parseInt(i.toString(), 10)].split('.');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var comparer1 = data.data[groupedColumn[0]];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var comparer2 = args.data[groupedColumn[0]];\n for (var j = 1; j < groupedColumn.length; j++) {\n comparer1 = comparer1[groupedColumn[j]];\n comparer2 = comparer2[groupedColumn[j]];\n }\n return flag && comparer1 === comparer2;\n }\n else {\n return flag;\n }\n });\n };\n var this_1 = this;\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n _loop_1(i);\n }\n var dropRowObject = rows[0];\n if (!isNullOrUndefined(dragRowObject_1) && !isNullOrUndefined(dropRowObject) &&\n dragRowObject_1.parentUid !== dropRowObject.parentUid) {\n this.parent['groupModule'].groupedRowReorder(dragRowObject_1, dropRowObject);\n }\n else if (this.parent.aggregates.length) {\n this.parent.aggregateModule.refresh(args.data, this.parent.groupSettings.enableLazyLoading ? args.row : undefined);\n }\n }\n else if (this.parent.aggregates.length) {\n this.parent.aggregateModule.refresh(args.data, this.parent.groupSettings.enableLazyLoading ? args.row : undefined);\n }\n this.parent.trigger(events.actionComplete, args);\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection) && !this.parent.selectionSettings.checkboxOnly) {\n if (this.parent.editSettings.mode !== 'Dialog') {\n this.parent.selectRow(this.rowIndex > -1 ? this.rowIndex : this.editRowIndex);\n }\n }\n if (this.parent.aggregates.length && this.parent.groupSettings.enableLazyLoading && this.parent.groupSettings.columns.length\n && (this.parent.groupModule.getGroupAggregateTemplates(true).length\n || this.parent.groupModule.getGroupAggregateTemplates(false).length)) {\n return;\n }\n this.parent.removeMaskRow();\n this.parent.hideSpinner();\n };\n NormalEdit.prototype.closeForm = function () {\n if (!this.cloneRow && this.parent.isEdit) {\n this.stopEditStatus();\n }\n if (this.cloneRow) {\n this.cloneRow.remove();\n this.cloneRow = null;\n this.originalRow.classList.remove('e-hiddenrow');\n }\n if (this.cloneFrozen) {\n this.cloneFrozen.remove();\n if (this.frozen) {\n this.frozen.classList.remove('e-hiddenrow');\n }\n }\n };\n NormalEdit.prototype.blazorTemplate = function () {\n var cols = this.parent.getColumns();\n if (this.parent.editSettings.template && this.parent.editSettings.mode === 'Normal') {\n updateBlazorTemplate(this.parent.element.id + 'editSettingsTemplate', 'Template', this.parent.editSettings);\n }\n for (var i = 0; i < cols.length; i++) {\n var col = cols[parseInt(i.toString(), 10)];\n if (col.template) {\n updateBlazorTemplate(this.parent.element.id + col.uid, 'Template', col, false);\n }\n if (col.editTemplate) {\n updateBlazorTemplate(this.parent.element.id + col.uid + 'editTemplate', 'EditTemplate', col);\n }\n }\n };\n NormalEdit.prototype.editFailure = function (e) {\n this.parent.removeMaskRow();\n this.parent.trigger(events.actionFailure, ({ error: e }));\n this.parent.hideSpinner();\n this.parent.log('actionfailure', { error: e });\n };\n NormalEdit.prototype.needRefresh = function () {\n var refresh = true;\n var editedRow = this.parent.element.querySelector('.e-gridform');\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && this.parent.editSettings.mode === 'Normal' && !editedRow) {\n refresh = false;\n }\n return refresh;\n };\n NormalEdit.prototype.refreshRow = function (data) {\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var rowObj = this.parent.getRowObjectFromUID(this.uid);\n if (rowObj) {\n rowObj.changes = data;\n this.parent.notify(events.refreshVirtualCache, { data: data });\n refreshForeignData(rowObj, this.parent.getForeignKeyColumns(), rowObj.changes);\n if (this.needRefresh()) {\n row.refresh(rowObj, this.parent.getColumns(), true);\n }\n var tr = [].slice.call(this.parent.element.querySelectorAll('[data-rowindex=\"' + rowObj.index + '\"]'));\n for (var i = 0; i < tr.length; i++) {\n addFixedColumnBorder(tr[parseInt(i.toString(), 10)]);\n if (this.parent.enableColumnVirtualization &&\n tr[parseInt(i.toString(), 10)].querySelectorAll('.e-leftfreeze,.e-rightfreeze,.e-fixedfreeze').length) {\n var cols = this.parent.getColumns();\n var leftrightCells = [].slice.call(tr[parseInt(i.toString(), 10)].querySelectorAll('.e-leftfreeze,.e-rightfreeze.e-fixedfreeze'));\n for (var j = 0; j < leftrightCells.length; j++) {\n if (leftrightCells[parseInt(j.toString(), 10)].classList.contains('e-leftfreeze')) {\n leftrightCells[parseInt(j.toString(), 10)].style.left = (cols[parseInt(j.toString(), 10)].valueX - this.parent.translateX) + 'px';\n }\n else if (leftrightCells[parseInt(j.toString(), 10)].classList.contains('e-rightfreeze')) {\n var idx = parseInt(leftrightCells[parseInt(j.toString(), 10)].getAttribute('data-colindex'), 10);\n leftrightCells[parseInt(j.toString(), 10)].style.right = ((cols[parseInt(idx.toString(), 10)].valueX + this.parent.translateX)) + 'px';\n }\n else {\n leftrightCells[parseInt(j.toString(), 10)].style.left = (this.parent.leftrightColumnWidth('left') -\n this.parent.translateX) + 'px';\n leftrightCells[parseInt(j.toString(), 10)].style.right = (this.parent.leftrightColumnWidth('right') +\n this.parent.translateX) + 'px';\n }\n }\n }\n }\n }\n };\n NormalEdit.prototype.closeEdit = function () {\n var _this = this;\n if (!this.parent.isEdit) {\n return;\n }\n var gObj = this.parent;\n var args = extend(this.args, {\n requestType: 'cancel', type: events.actionBegin, cancel: false, data: this.previousData, selectedRow: gObj.selectedRowIndex\n });\n gObj.notify(events.virtualScrollEditCancel, args);\n this.blazorTemplate();\n gObj.trigger(events.actionBegin, args, function (closeEditArgs) {\n if (closeEditArgs.cancel) {\n return;\n }\n if (_this.parent.editSettings.mode === 'Dialog') {\n _this.parent.notify(events.dialogDestroy, {});\n }\n gObj.isEdit = false;\n _this.stopEditStatus();\n closeEditArgs.type = events.actionComplete;\n if (gObj.editSettings.mode !== 'Dialog') {\n _this.refreshRow(closeEditArgs.data);\n }\n var isLazyLoad = gObj.groupSettings.enableLazyLoading && gObj.groupSettings.columns.length\n && !gObj.getContentTable().querySelector('tr.e-emptyrow');\n if (!gObj.getContentTable().querySelector('tr.e-emptyrow') &&\n !gObj.getContentTable().querySelector('tr.e-row') && !isLazyLoad) {\n gObj.renderModule.emptyRow();\n }\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.selectRow(_this.rowIndex);\n }\n gObj.trigger(events.actionComplete, closeEditArgs);\n });\n };\n NormalEdit.prototype.addRecord = function (data, index) {\n var _this = this;\n var gObj = this.parent;\n this.addedRowIndex = index = !isNullOrUndefined(index) ? index : 0;\n if (data) {\n gObj.notify(events.modelChanged, {\n requestType: 'save', type: events.actionBegin, data: data, selectedRow: 0, action: 'add', index: index\n });\n return;\n }\n if (gObj.isEdit) {\n return;\n }\n this.previousData = {};\n this.uid = '';\n var cols = gObj.getColumns();\n var rowData = { virtualData: {}, isScroll: false };\n this.parent.notify(events.getVirtualData, rowData);\n for (var i = 0; i < cols.length; i++) {\n if (rowData.isScroll) {\n continue;\n }\n if (cols[parseInt(i.toString(), 10)].field) {\n if (cols[parseInt(i.toString(), 10)].type === 'string') {\n cols[parseInt(i.toString(), 10)].defaultValue = this.parent.sanitize(cols[parseInt(i.toString(), 10)].defaultValue);\n }\n DataUtil.setValue(cols[parseInt(i.toString(), 10)].field, cols[parseInt(i.toString(), 10)].defaultValue, this.previousData);\n }\n }\n var args = {\n cancel: false, foreignKeyData: {},\n requestType: 'add', data: this.previousData, type: events.actionBegin, index: index,\n rowData: this.previousData, target: undefined, isScroll: rowData.isScroll\n };\n if ((this.parent.enableVirtualization || this.parent.enableColumnVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && Object.keys(rowData.virtualData).length) {\n args.data = args.rowData = rowData.virtualData;\n }\n if (!args.isScroll) {\n this.parent.notify(events.createVirtualValidationForm, { uid: this.uid, prevData: this.previousData, argsCreator: this.getEditArgs.bind(this), renderer: this.renderer });\n gObj.trigger(events.actionBegin, args, function (addArgs) {\n if (addArgs.cancel) {\n return;\n }\n _this.inlineAddHandler(addArgs);\n });\n }\n else {\n this.inlineAddHandler(args);\n }\n };\n NormalEdit.prototype.inlineAddHandler = function (addArgs) {\n var gObj = this.parent;\n gObj.isEdit = true;\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.clearSelection();\n }\n this.renderer.addNew(addArgs);\n gObj.editModule.applyFormValidation();\n addArgs.type = events.actionComplete;\n addArgs.row = gObj.element.querySelector('.' + literals.addedRow);\n gObj.trigger(events.actionComplete, addArgs);\n if (gObj.editSettings.template) {\n gObj.editModule.applyFormValidation(undefined, addArgs.form.ej2_instances[0].rules);\n }\n this.args = addArgs;\n };\n NormalEdit.prototype.deleteRecord = function (fieldname, data) {\n this.editRowIndex = this.parent.selectedRowIndex;\n if (data) {\n data = (data instanceof Array) ? data : [data];\n var gObj = this.parent;\n var dataLen = Object.keys(data).length;\n fieldname = fieldname || this.parent.getPrimaryKeyFieldNames()[0];\n var _loop_2 = function (i) {\n var _a;\n var tmpRecord;\n var contained = gObj.currentViewData.some(function (record) {\n tmpRecord = record;\n return data[parseInt(i.toString(), 10)] === getObject(fieldname, record) || data[parseInt(i.toString(), 10)] === record;\n });\n data[parseInt(i.toString(), 10)] = contained ? tmpRecord : data[parseInt(i.toString(), 10)][\"\" + fieldname] ?\n data[parseInt(i.toString(), 10)] : (_a = {}, _a[fieldname] = data[parseInt(i.toString(), 10)], _a);\n };\n for (var i = 0; i < dataLen; i++) {\n _loop_2(i);\n }\n }\n var args = {\n requestType: 'delete', type: events.actionBegin, foreignKeyData: {},\n data: data ? data : this.parent.getSelectedRecords(), tr: this.parent.getSelectedRows(), cancel: false\n };\n if (!isNullOrUndefined(this.parent.commandDelIndex)) {\n args.data[0] =\n this.parent.getRowObjectFromUID(this.parent.getRowByIndex(this.parent.commandDelIndex).getAttribute('data-uid')).data;\n }\n if ((this.parent.enableVirtualization || this.parent.enableColumnVirtualization) && args.data.length > 1) {\n var uid = this.parent.getSelectedRows()[0].getAttribute('data-uid');\n args.data = [this.parent.getRowObjectFromUID(uid).data];\n }\n this.parent.notify(events.modelChanged, args);\n };\n NormalEdit.prototype.stopEditStatus = function () {\n var gObj = this.parent;\n var addElements = [].slice.call(gObj.element.getElementsByClassName(literals.addedRow));\n var editElements = [].slice.call(gObj.element.getElementsByClassName(literals.editedRow));\n for (var i = 0; i < addElements.length; i++) {\n remove(addElements[parseInt(i.toString(), 10)]);\n }\n for (var i = 0; i < editElements.length; i++) {\n editElements[parseInt(i.toString(), 10)].classList.remove(literals.editedRow);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.crudAction, handler: this.editHandler },\n { event: events.doubleTap, handler: this.dblClickHandler },\n { event: events.click, handler: this.clickHandler },\n { event: events.recordAdded, handler: this.requestSuccess },\n { event: events.dblclick, handler: this.dblClickHandler },\n { event: events.deleteComplete, handler: this.editComplete },\n { event: events.saveComplete, handler: this.editComplete },\n { event: events.rowModeChange, handler: this.closeEdit },\n { event: events.closeInline, handler: this.closeForm }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.destroy = function () {\n this.removeEventListener();\n this.renderer.destroy();\n };\n return NormalEdit;\n}());\nexport { NormalEdit };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { NormalEdit } from './normal-edit';\n/**\n * `InlineEdit` module is used to handle inline editing actions.\n *\n * @hidden\n */\nvar InlineEdit = /** @class */ (function (_super) {\n __extends(InlineEdit, _super);\n function InlineEdit(parent, serviceLocator, renderer) {\n var _this = _super.call(this, parent, serviceLocator) || this;\n _this.parent = parent;\n _this.serviceLocator = serviceLocator;\n _this.renderer = renderer;\n return _this;\n }\n InlineEdit.prototype.closeEdit = function () {\n _super.prototype.closeEdit.call(this);\n };\n InlineEdit.prototype.addRecord = function (data, index) {\n _super.prototype.addRecord.call(this, data, index);\n };\n InlineEdit.prototype.endEdit = function () {\n _super.prototype.endEdit.call(this);\n };\n InlineEdit.prototype.updateRow = function (index, data) {\n _super.prototype.updateRow.call(this, index, data);\n };\n InlineEdit.prototype.deleteRecord = function (fieldname, data) {\n _super.prototype.deleteRecord.call(this, fieldname, data);\n };\n InlineEdit.prototype.startEdit = function (tr) {\n _super.prototype.startEdit.call(this, tr);\n };\n return InlineEdit;\n}(NormalEdit));\nexport { InlineEdit };\n","import { extend, addClass, removeClass, setValue, closest, select, EventHandler } from '@syncfusion/ej2-base';\nimport { remove, classList } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { parentsUntil, refreshForeignData, getObject, addRemoveEventListener, } from '../base/util';\nimport { getCellByColAndRowIndex, addFixedColumnBorder } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n/**\n * `BatchEdit` module is used to handle batch editing actions.\n *\n * @hidden\n */\nvar BatchEdit = /** @class */ (function () {\n function BatchEdit(parent, serviceLocator, renderer) {\n this.cellDetails = {};\n this.originalCell = {};\n this.cloneCell = {};\n this.editNext = false;\n this.preventSaveCell = false;\n this.initialRender = true;\n this.validationColObj = [];\n /** @hidden */\n this.addBatchRow = false;\n this.prevEditedBatchCell = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.renderer = renderer;\n this.focus = serviceLocator.getService('focus');\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.click, handler: this.clickHandler },\n { event: events.dblclick, handler: this.dblClickHandler },\n { event: events.beforeCellFocused, handler: this.onBeforeCellFocused },\n { event: events.cellFocused, handler: this.onCellFocused },\n { event: events.doubleTap, handler: this.dblClickHandler },\n { event: events.keyPressed, handler: this.keyDownHandler },\n { event: events.editNextValCell, handler: this.editNextValCell },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n EventHandler.add(this.parent.element, 'mousedown', this.mouseDownHandler, this);\n this.dataBoundFunction = this.dataBound.bind(this);\n this.batchCancelFunction = this.batchCancel.bind(this);\n this.parent.addEventListener(events.dataBound, this.dataBoundFunction);\n this.parent.addEventListener(events.batchCancel, this.batchCancelFunction);\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n EventHandler.remove(this.parent.element, 'mousedown', this.mouseDownHandler);\n this.parent.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.parent.removeEventListener(events.batchCancel, this.batchCancelFunction);\n };\n BatchEdit.prototype.batchCancel = function () {\n this.parent.focusModule.restoreFocus();\n };\n BatchEdit.prototype.dataBound = function () {\n this.parent.notify(events.toolbarRefresh, {});\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.destroy = function () {\n this.removeEventListener();\n };\n BatchEdit.prototype.mouseDownHandler = function (e) {\n if (!isNullOrUndefined(this.parent.element.querySelector('.e-gridform'))) {\n this.mouseDownElement = e.target;\n }\n else {\n this.mouseDownElement = undefined;\n }\n };\n BatchEdit.prototype.clickHandler = function (e) {\n if (!parentsUntil(e.target, this.parent.element.id + '_add', true)) {\n if ((this.parent.isEdit && closest(this.form, 'td') !== closest(e.target, 'td'))\n && isNullOrUndefined(this.mouseDownElement) || this.mouseDownElement === e.target) {\n this.saveCell();\n this.editNextValCell();\n }\n if (parentsUntil(e.target, literals.rowCell) && !this.parent.isEdit) {\n this.setCellIdx(e.target);\n }\n }\n };\n BatchEdit.prototype.dblClickHandler = function (e) {\n var target = parentsUntil(e.target, literals.rowCell);\n var tr = parentsUntil(e.target, literals.row);\n var rowIndex = tr && parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n var colIndex = target && parseInt(target.getAttribute(literals.dataColIndex), 10);\n if (!isNullOrUndefined(target) && !isNullOrUndefined(rowIndex) && !isNaN(colIndex)\n && !target.parentElement.classList.contains(literals.editedRow) &&\n this.parent.getColumns()[parseInt(colIndex.toString(), 10)].allowEditing) {\n this.editCell(rowIndex, this.parent.getColumns()[parseInt(colIndex.toString(), 10)].field, this.isAddRow(rowIndex));\n }\n };\n BatchEdit.prototype.onBeforeCellFocused = function (e) {\n if (this.parent.isEdit && this.validateFormObj() &&\n (e.byClick || (['tab', 'shiftTab', 'enter', 'shiftEnter'].indexOf(e.keyArgs.action) > -1))) {\n e.cancel = true;\n if (e.byClick) {\n e.clickArgs.preventDefault();\n }\n else {\n e.keyArgs.preventDefault();\n }\n }\n };\n BatchEdit.prototype.onCellFocused = function (e) {\n var clear = (!e.container.isContent || !e.container.isDataCell) && !(this.parent.frozenRows && e.container.isHeader);\n if (this.parent.focusModule.active) {\n this.prevEditedBatchCell = this.parent.focusModule.active.matrix.current.toString() === this.prevEditedBatchCellMatrix()\n .toString();\n this.crtRowIndex = [].slice.call(this.parent.focusModule.active.getTable().rows).indexOf(closest(e.element, 'tr'));\n }\n if (!e.byKey || clear) {\n if ((this.parent.isEdit && clear)) {\n this.saveCell();\n }\n return;\n }\n var _a = e.container.indexes, rowIndex = _a[0], cellIndex = _a[1];\n var actualIndex = e.element.getAttribute('data-colindex') ? parseInt(e.element.getAttribute('data-colindex')) : cellIndex;\n if (actualIndex !== cellIndex) {\n cellIndex = actualIndex;\n }\n if (this.parent.frozenRows && e.container.isContent) {\n rowIndex += ((this.parent.getContent().querySelector('.e-hiddenrow') ? 0 : this.parent.frozenRows) +\n this.parent.getHeaderContent().querySelectorAll('.e-insertedrow').length);\n }\n var isEdit = this.parent.isEdit;\n if (!this.parent.element.getElementsByClassName('e-popup-open').length) {\n isEdit = isEdit && !this.validateFormObj();\n switch (e.keyArgs.action) {\n case 'tab':\n case 'shiftTab':\n // eslint-disable-next-line no-case-declarations\n var indent = this.parent.isRowDragable() && this.parent.isDetail() ? 2 :\n this.parent.isRowDragable() || this.parent.isDetail() ? 1 : 0;\n // eslint-disable-next-line no-case-declarations\n var col = this.parent.getColumns()[cellIndex - indent];\n if (col && !this.parent.isEdit) {\n this.editCell(rowIndex, col.field);\n }\n if (isEdit || this.parent.isLastCellPrimaryKey) {\n this.editCellFromIndex(rowIndex, cellIndex);\n }\n break;\n case 'enter':\n case 'shiftEnter':\n e.keyArgs.preventDefault();\n // eslint-disable-next-line no-case-declarations\n var args = { cancel: false, keyArgs: e.keyArgs };\n this.parent.notify('beforeFocusCellEdit', args);\n if (!args.cancel && isEdit) {\n this.editCell(rowIndex, this.cellDetails.column.field);\n }\n break;\n case 'f2':\n this.editCellFromIndex(rowIndex, cellIndex);\n this.focus.focus();\n break;\n }\n }\n };\n BatchEdit.prototype.isAddRow = function (index) {\n return this.parent.getDataRows()[parseInt(index.toString(), 10)].classList.contains('e-insertedrow');\n };\n BatchEdit.prototype.editCellFromIndex = function (rowIdx, cellIdx) {\n this.cellDetails.rowIndex = rowIdx;\n this.cellDetails.cellIndex = cellIdx;\n this.editCell(rowIdx, this.parent.getColumns()[parseInt(cellIdx.toString(), 10)].field, this.isAddRow(rowIdx));\n };\n BatchEdit.prototype.closeEdit = function () {\n var gObj = this.parent;\n var rows = this.parent.getRowsObject();\n var argument = { cancel: false, batchChanges: this.getBatchChanges() };\n gObj.notify(events.beforeBatchCancel, argument);\n if (argument.cancel) {\n return;\n }\n if (gObj.isEdit) {\n this.saveCell(true);\n }\n this.isAdded = false;\n gObj.clearSelection();\n for (var i = 0; i < rows.length; i++) {\n var isInsert = false;\n var isDirty = rows[parseInt(i.toString(), 10)].isDirty;\n isInsert = this.removeBatchElementChanges(rows[parseInt(i.toString(), 10)], isDirty);\n if (isInsert) {\n rows.splice(i, 1);\n }\n if (isInsert) {\n i--;\n }\n }\n if (!gObj.getContentTable().querySelector('tr.e-row')) {\n gObj.renderModule.renderEmptyRow();\n }\n var args = {\n requestType: 'batchCancel', rows: this.parent.getRowsObject()\n };\n gObj.notify(events.batchCancel, {\n rows: this.parent.getRowsObject().length ? this.parent.getRowsObject() :\n [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })]\n });\n gObj.selectRow(this.cellDetails.rowIndex);\n this.refreshRowIdx();\n gObj.notify(events.toolbarRefresh, {});\n this.parent.notify(events.tooltipDestroy, {});\n args = { requestType: 'batchCancel', rows: this.parent.getRowsObject() };\n gObj.trigger(events.batchCancel, args);\n };\n BatchEdit.prototype.removeBatchElementChanges = function (row, isDirty) {\n var gObj = this.parent;\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInstertedRemoved = false;\n if (isDirty) {\n row.isDirty = isDirty;\n var tr = gObj.getRowElementByUID(row.uid);\n if (tr) {\n if (tr.classList.contains('e-insertedrow')) {\n remove(tr);\n isInstertedRemoved = true;\n }\n else {\n refreshForeignData(row, this.parent.getForeignKeyColumns(), row.data);\n delete row.changes;\n delete row.edit;\n row.isDirty = false;\n classList(tr, [], ['e-hiddenrow', 'e-updatedtd']);\n rowRenderer.refresh(row, gObj.getColumns(), false);\n }\n if (this.parent.aggregates.length > 0) {\n var type = 'type';\n var editType = [];\n editType[\"\" + type] = 'cancel';\n this.parent.notify(events.refreshFooterRenderer, editType);\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(events.groupAggregates, editType);\n }\n }\n }\n }\n return isInstertedRemoved;\n };\n BatchEdit.prototype.deleteRecord = function (fieldname, data) {\n this.saveCell();\n if (this.validateFormObj()) {\n this.saveCell(true);\n }\n this.isAdded = false;\n this.bulkDelete(fieldname, data);\n if (this.parent.aggregates.length > 0) {\n this.parent.notify(events.refreshFooterRenderer, {});\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(events.groupAggregates, {});\n }\n }\n };\n BatchEdit.prototype.addRecord = function (data) {\n this.bulkAddRow(data);\n };\n BatchEdit.prototype.endEdit = function () {\n if (this.parent.isEdit && this.validateFormObj()) {\n return;\n }\n this.batchSave();\n };\n BatchEdit.prototype.validateFormObj = function () {\n return this.parent.editModule.formObj && !this.parent.editModule.formObj.validate();\n };\n BatchEdit.prototype.batchSave = function () {\n var gObj = this.parent;\n var deletedRecords = 'deletedRecords';\n if (gObj.isCheckBoxSelection) {\n var checkAllBox = gObj.element.querySelector('.e-checkselectall').parentElement;\n if (checkAllBox.classList.contains('e-checkbox-disabled') &&\n gObj.pageSettings.totalRecordsCount > gObj.currentViewData.length) {\n removeClass([checkAllBox], ['e-checkbox-disabled']);\n }\n }\n this.saveCell();\n if (gObj.isEdit || this.editNextValCell() || gObj.isEdit) {\n return;\n }\n var changes = this.getBatchChanges();\n if (this.parent.selectionSettings.type === 'Multiple' && changes[\"\" + deletedRecords].length &&\n this.parent.selectionSettings.persistSelection) {\n changes[\"\" + deletedRecords] = this.removeSelectedData;\n this.removeSelectedData = [];\n }\n var original = {\n changedRecords: this.parent.getRowsObject()\n .filter(function (row) { return row.isDirty && ['add', 'delete'].indexOf(row.edit) === -1; })\n .map(function (row) { return row.data; })\n };\n var args = { batchChanges: changes, cancel: false };\n gObj.trigger(events.beforeBatchSave, args, function (beforeBatchSaveArgs) {\n if (beforeBatchSaveArgs.cancel) {\n return;\n }\n gObj.showSpinner();\n gObj.notify(events.bulkSave, { changes: changes, original: original });\n });\n };\n BatchEdit.prototype.getBatchChanges = function () {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n var rows = this.parent.getRowsObject();\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.isDirty) {\n switch (row.edit) {\n case 'add':\n changes.addedRecords.push(row.changes);\n break;\n case 'delete':\n changes.deletedRecords.push(row.data);\n break;\n default:\n changes.changedRecords.push(row.changes);\n }\n }\n }\n return changes;\n };\n /**\n * @param {string} uid - specifes the uid\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.removeRowObjectFromUID = function (uid) {\n var rows = this.parent.getRowsObject();\n var i = 0;\n for (var len = rows.length; i < len; i++) {\n if (rows[parseInt(i.toString(), 10)].uid === uid) {\n break;\n }\n }\n rows.splice(i, 1);\n };\n /**\n * @param {Row} row - specifies the row object\n * @param {freezeTable} newTableName - specifies the table name\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addRowObject = function (row) {\n var gObj = this.parent;\n var isTop = gObj.editSettings.newRowPosition === 'Top';\n var rowClone = row.clone();\n if (isTop) {\n gObj.getRowsObject().unshift(rowClone);\n }\n else {\n gObj.getRowsObject().push(rowClone);\n }\n };\n // tslint:disable-next-line:max-func-body-length\n BatchEdit.prototype.bulkDelete = function (fieldname, data) {\n var _this = this;\n this.removeSelectedData = [];\n var gObj = this.parent;\n var index = gObj.selectedRowIndex;\n var selectedRows = gObj.getSelectedRows();\n var args = {\n primaryKey: this.parent.getPrimaryKeyFieldNames(),\n rowIndex: index,\n rowData: data ? data : gObj.getSelectedRecords()[0],\n cancel: false\n };\n if (data) {\n args.row = gObj.editModule.deleteRowUid ? gObj.getRowElementByUID(gObj.editModule.deleteRowUid)\n : gObj.getRows()[gObj.getCurrentViewRecords().indexOf(data)];\n }\n else {\n args.row = selectedRows[0];\n }\n if (!args.row) {\n return;\n }\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(events.beforeBatchDelete, args, function (beforeBatchDeleteArgs) {\n if (beforeBatchDeleteArgs.cancel) {\n return;\n }\n _this.removeSelectedData = gObj.getSelectedRecords();\n gObj.clearSelection();\n beforeBatchDeleteArgs.row = beforeBatchDeleteArgs.row ?\n beforeBatchDeleteArgs.row : data ? gObj.getRows()[parseInt(index.toString(), 10)] : selectedRows[0];\n if (selectedRows.length === 1 || data) {\n var uid = beforeBatchDeleteArgs.row.getAttribute('data-uid');\n uid = data && _this.parent.editModule.deleteRowUid ? uid = _this.parent.editModule.deleteRowUid : uid;\n if (beforeBatchDeleteArgs.row.classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uid);\n remove(beforeBatchDeleteArgs.row);\n }\n else {\n var rowObj = gObj.getRowObjectFromUID(uid);\n rowObj.isDirty = true;\n rowObj.edit = 'delete';\n classList(beforeBatchDeleteArgs.row, ['e-hiddenrow', 'e-updatedtd'], []);\n if (gObj.frozenRows && index < gObj.frozenRows && gObj.getDataRows().length >= gObj.frozenRows) {\n gObj.getHeaderTable().querySelector(literals.tbody).appendChild(gObj.getRowByIndex(gObj.frozenRows - 1));\n }\n }\n delete beforeBatchDeleteArgs.row;\n }\n else {\n if (data) {\n index = parseInt(beforeBatchDeleteArgs.row.getAttribute(literals.dataRowIndex), 10);\n }\n for (var i = 0; i < selectedRows.length; i++) {\n var uniqueid = selectedRows[parseInt(i.toString(), 10)].getAttribute('data-uid');\n if (selectedRows[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uniqueid);\n remove(selectedRows[parseInt(i.toString(), 10)]);\n }\n else {\n classList(selectedRows[parseInt(i.toString(), 10)], ['e-hiddenrow', 'e-updatedtd'], []);\n var selectedRow = gObj.getRowObjectFromUID(uniqueid);\n selectedRow.isDirty = true;\n selectedRow.edit = 'delete';\n delete selectedRows[parseInt(i.toString(), 10)];\n if (gObj.frozenRows && index < gObj.frozenRows && gObj.getDataRows().length >= gObj.frozenRows) {\n gObj.getHeaderTable().querySelector(literals.tbody).appendChild(gObj.getRowByIndex(gObj.frozenRows - 1));\n }\n }\n }\n }\n _this.refreshRowIdx();\n if (data) {\n gObj.editModule.deleteRowUid = undefined;\n }\n if (!gObj.isCheckBoxSelection) {\n gObj.selectRow(index);\n }\n gObj.trigger(events.batchDelete, beforeBatchDeleteArgs);\n gObj.notify(events.batchDelete, { rows: _this.parent.getRowsObject() });\n gObj.notify(events.toolbarRefresh, {});\n });\n };\n BatchEdit.prototype.refreshRowIdx = function () {\n var gObj = this.parent;\n var rows = gObj.getAllDataRows(true);\n var dataObjects = gObj.getRowsObject().filter(function (row) { return !row.isDetailRow; });\n for (var i = 0, j = 0, len = rows.length; i < len; i++) {\n if (rows[parseInt(i.toString(), 10)].classList.contains(literals.row) && !rows[parseInt(i.toString(), 10)].classList.contains('e-hiddenrow')) {\n rows[parseInt(i.toString(), 10)].setAttribute(literals.dataRowIndex, j.toString());\n rows[parseInt(i.toString(), 10)].setAttribute(literals.ariaRowIndex, (j + 1).toString());\n dataObjects[parseInt(i.toString(), 10)].index = j;\n j++;\n }\n else {\n rows[parseInt(i.toString(), 10)].removeAttribute(literals.dataRowIndex);\n rows[parseInt(i.toString(), 10)].removeAttribute(literals.ariaRowIndex);\n dataObjects[parseInt(i.toString(), 10)].index = -1;\n }\n }\n };\n BatchEdit.prototype.bulkAddRow = function (data) {\n var _this = this;\n var gObj = this.parent;\n if (!gObj.editSettings.allowAdding) {\n if (gObj.isEdit) {\n this.saveCell();\n }\n return;\n }\n if (gObj.isEdit) {\n this.saveCell();\n this.parent.notify(events.editNextValCell, {});\n }\n if (this.initialRender) {\n var visibleColumns = gObj.getVisibleColumns();\n for (var i = 0; i < visibleColumns.length; i++) {\n if (visibleColumns[parseInt(i.toString(), 10)].validationRules &&\n visibleColumns[parseInt(i.toString(), 10)].validationRules['required']) {\n var obj = { field: (visibleColumns[parseInt(i.toString(), 10)]['field']).slice(), cellIdx: i };\n this.validationColObj.push(obj);\n }\n }\n this.initialRender = false;\n }\n this.parent.element.classList.add('e-editing');\n var defaultData = data ? data : this.getDefaultData();\n var args = {\n defaultData: defaultData,\n primaryKey: gObj.getPrimaryKeyFieldNames(),\n cancel: false\n };\n gObj.trigger(events.beforeBatchAdd, args, function (beforeBatchAddArgs) {\n if (beforeBatchAddArgs.cancel) {\n return;\n }\n _this.isAdded = true;\n gObj.clearSelection();\n var row = new RowRenderer(_this.serviceLocator, null, _this.parent);\n var model = new RowModelGenerator(_this.parent);\n var modelData = model.generateRows([beforeBatchAddArgs.defaultData]);\n var tr = row.render(modelData[0], gObj.getColumns());\n addFixedColumnBorder(tr);\n var col;\n var index;\n for (var i = 0; i < _this.parent.groupSettings.columns.length; i++) {\n tr.insertBefore(_this.parent.createElement('td', { className: 'e-indentcell' }), tr.firstChild);\n modelData[0].cells.unshift(new Cell({ cellType: CellType.Indent }));\n }\n var tbody = gObj.getContentTable().querySelector(literals.tbody);\n tr.classList.add('e-insertedrow');\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (gObj.frozenRows && gObj.element.querySelector('.e-frozenrow-empty')) {\n gObj.element.querySelector('.e-frozenrow-empty').classList.remove('e-frozenrow-empty');\n }\n }\n if (gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top') {\n tbody = gObj.getHeaderTable().querySelector(literals.tbody);\n }\n else {\n tbody = gObj.getContentTable().querySelector(literals.tbody);\n }\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n tbody.insertBefore(tr, tbody.firstChild);\n }\n else {\n tbody.appendChild(tr);\n }\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), ['e-updatedtd']);\n modelData[0].isDirty = true;\n modelData[0].changes = extend({}, {}, modelData[0].data, true);\n modelData[0].edit = 'add';\n _this.addRowObject(modelData[0]);\n _this.refreshRowIdx();\n _this.focus.forgetPrevious();\n gObj.notify(events.batchAdd, { rows: _this.parent.getRowsObject() });\n var changes = _this.getBatchChanges();\n var btmIdx = _this.getBottomIndex();\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n gObj.selectRow(0);\n }\n else {\n gObj.selectRow(btmIdx);\n }\n if (!data) {\n index = _this.findNextEditableCell(0, true);\n col = gObj.getColumns()[parseInt(index.toString(), 10)];\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n _this.editCell(0, col.field, true);\n }\n else {\n _this.editCell(btmIdx, col.field, true);\n }\n }\n if (_this.parent.aggregates.length > 0 && (data || changes[literals.addedRecords].length)) {\n _this.parent.notify(events.refreshFooterRenderer, {});\n }\n var args1 = {\n defaultData: beforeBatchAddArgs.defaultData, row: tr,\n columnObject: col, columnIndex: index, primaryKey: beforeBatchAddArgs.primaryKey,\n cell: !isNullOrUndefined(index) ? tr.cells[parseInt(index.toString(), 10)] : undefined\n };\n gObj.trigger(events.batchAdd, args1);\n });\n };\n BatchEdit.prototype.findNextEditableCell = function (columnIndex, isAdd, isValOnly) {\n var cols = this.parent.getColumns();\n var endIndex = cols.length;\n var validation;\n for (var i = columnIndex; i < endIndex; i++) {\n validation = isValOnly ? isNullOrUndefined(cols[parseInt(i.toString(), 10)].validationRules) : false;\n // if (!isAdd && this.checkNPCell(cols[parseInt(i.toString(), 10)])) {\n // return i;\n // } else \n if (isAdd && (!cols[parseInt(i.toString(), 10)].template || cols[parseInt(i.toString(), 10)].field)\n && cols[parseInt(i.toString(), 10)].allowEditing && cols[parseInt(i.toString(), 10)].visible &&\n !(cols[parseInt(i.toString(), 10)].isIdentity && cols[parseInt(i.toString(), 10)].isPrimaryKey) && !validation) {\n return i;\n }\n }\n return -1;\n };\n BatchEdit.prototype.getDefaultData = function () {\n var gObj = this.parent;\n var data = {};\n var dValues = { 'number': 0, 'string': null, 'boolean': false, 'date': null, 'datetime': null };\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.field) {\n setValue(col.field, Object.keys(col).indexOf('defaultValue') >= 0 ? col.defaultValue : dValues[col.type], data);\n }\n }\n return data;\n };\n BatchEdit.prototype.setCellIdx = function (target) {\n var gLen = 0;\n if (this.parent.allowGrouping) {\n gLen = this.parent.groupSettings.columns.length;\n }\n this.cellDetails.cellIndex = target.cellIndex - gLen;\n this.cellDetails.rowIndex = parseInt(target.getAttribute('index'), 10);\n };\n BatchEdit.prototype.editCell = function (index, field, isAdd) {\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n this.index = index;\n this.field = field;\n this.isAdd = isAdd;\n var checkEdit = gObj.isEdit && !(this.cellDetails.column.field === field\n && (this.cellDetails.rowIndex === index && this.parent.getDataRows().length - 1 !== index && this.prevEditedBatchCell));\n if (gObj.editSettings.allowEditing) {\n if (!checkEdit && (col.allowEditing || (!col.allowEditing && gObj.focusModule.active\n && gObj.focusModule.active.getTable().rows[this.crtRowIndex]\n && gObj.focusModule.active.getTable().rows[this.crtRowIndex].classList.contains('e-insertedrow')))) {\n this.editCellExtend(index, field, isAdd);\n }\n else if (checkEdit) {\n this.editNext = true;\n this.saveCell();\n }\n }\n };\n BatchEdit.prototype.editCellExtend = function (index, field, isAdd) {\n var _this = this;\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n var keys = gObj.getPrimaryKeyFieldNames();\n if (gObj.isEdit) {\n return;\n }\n var rowData = extend({}, {}, this.getDataByIndex(index), true);\n var row = gObj.getDataRows()[parseInt(index.toString(), 10)];\n rowData = extend({}, {}, this.getDataByIndex(index), true);\n if ((keys[0] === col.field && !row.classList.contains('e-insertedrow')) || col.columns ||\n (col.isPrimaryKey && col.isIdentity) || col.commands) {\n this.parent.isLastCellPrimaryKey = true;\n return;\n }\n this.parent.isLastCellPrimaryKey = false;\n this.parent.element.classList.add('e-editing');\n var rowObj = gObj.getRowObjectFromUID(row.getAttribute('data-uid'));\n var cells = [].slice.apply(row.cells);\n var args = {\n columnName: col.field, isForeignKey: !isNullOrUndefined(col.foreignKeyValue),\n primaryKey: keys, rowData: rowData,\n validationRules: extend({}, col.validationRules ? col.validationRules : {}),\n value: getObject(col.field, rowData),\n type: !isAdd ? 'edit' : 'add', cancel: false,\n foreignKeyData: rowObj && rowObj.foreignKeyData\n };\n args.cell = cells[this.getColIndex(cells, this.getCellIdx(col.uid))];\n args.row = row;\n args.columnObject = col;\n if (!args.cell) {\n return;\n }\n gObj.trigger(events.cellEdit, args, function (cellEditArgs) {\n if (cellEditArgs.cancel) {\n return;\n }\n cellEditArgs.cell = cellEditArgs.cell ? cellEditArgs.cell : cells[_this.getColIndex(cells, _this.getCellIdx(col.uid))];\n cellEditArgs.row = cellEditArgs.row ? cellEditArgs.row : row;\n cellEditArgs.columnObject = cellEditArgs.columnObject ? cellEditArgs.columnObject : col;\n // cellEditArgs.columnObject.index = isNullOrUndefined(cellEditArgs.columnObject.index) ? 0 : cellEditArgs.columnObject.index;\n _this.cellDetails = {\n rowData: rowData, column: col, value: cellEditArgs.value, isForeignKey: cellEditArgs.isForeignKey, rowIndex: index,\n cellIndex: parseInt(cellEditArgs.cell.getAttribute(literals.dataColIndex), 10),\n foreignKeyData: cellEditArgs.foreignKeyData\n };\n if (cellEditArgs.cell.classList.contains('e-updatedtd')) {\n _this.isColored = true;\n cellEditArgs.cell.classList.remove('e-updatedtd');\n }\n gObj.isEdit = true;\n gObj.clearSelection();\n if (!gObj.isCheckBoxSelection || !gObj.isPersistSelection) {\n gObj.selectRow(_this.cellDetails.rowIndex, true);\n }\n _this.renderer.update(cellEditArgs);\n _this.parent.notify(events.batchEditFormRendered, cellEditArgs);\n _this.form = select('#' + gObj.element.id + 'EditForm', gObj.element);\n gObj.editModule.applyFormValidation([col]);\n _this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n });\n };\n BatchEdit.prototype.updateCell = function (rowIndex, field, value) {\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n var index = gObj.getColumnIndexByField(field);\n if (col && !col.isPrimaryKey && col.allowEditing) {\n var td_1 = getCellByColAndRowIndex(this.parent, col, rowIndex, index);\n var rowObj_1 = gObj.getRowObjectFromUID(td_1.parentElement.getAttribute('data-uid'));\n if (gObj.isEdit ||\n (!rowObj_1.changes && ((!(value instanceof Date) && rowObj_1.data[\"\" + field] !== value) ||\n ((value instanceof Date) && new Date(rowObj_1.data[\"\" + field]).toString() !== new Date(value).toString()))) ||\n (rowObj_1.changes && ((!(value instanceof Date) && rowObj_1.changes[\"\" + field] !== value) ||\n ((value instanceof Date) && new Date(rowObj_1.changes[\"\" + field]).toString() !== new Date(value).toString())))) {\n this.refreshTD(td_1, col, rowObj_1, value);\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (((this.parent.isReact && this.parent.requireTemplateRef) || (isReactChild &&\n this.parent.parentDetails.parentInstObj.requireTemplateRef)) && col.template) {\n var thisRef_1 = this;\n var newReactTd_1 = this.newReactTd;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(events.queryCellInfo, {\n cell: newReactTd_1 || td_1, column: col, data: rowObj_1.changes\n });\n });\n }\n else if ((this.parent.isReact || isReactChild) && col.template) {\n this.parent.renderTemplates();\n this.parent.trigger(events.queryCellInfo, {\n cell: this.newReactTd || td_1, column: col, data: rowObj_1.changes\n });\n }\n else {\n this.parent.trigger(events.queryCellInfo, {\n cell: this.newReactTd || td_1, column: col, data: rowObj_1.changes\n });\n }\n }\n }\n };\n BatchEdit.prototype.setChanges = function (rowObj, field, value) {\n if (!rowObj.changes) {\n rowObj.changes = extend({}, {}, rowObj.data, true);\n }\n if (!isNullOrUndefined(field)) {\n if (typeof value === 'string') {\n value = this.parent.sanitize(value);\n }\n DataUtil.setValue(field, value, rowObj.changes);\n }\n if (rowObj.data[\"\" + field] !== value) {\n var type = this.parent.getColumnByField(field).type;\n if ((type === 'date' || type === 'datetime')) {\n if (new Date(rowObj.data[\"\" + field]).toString() !== new Date(value).toString()) {\n rowObj.isDirty = true;\n }\n }\n else {\n rowObj.isDirty = true;\n }\n }\n };\n BatchEdit.prototype.updateRow = function (index, data) {\n var keys = Object.keys(data);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var col = keys_1[_i];\n this.updateCell(index, col, data[\"\" + col]);\n }\n };\n BatchEdit.prototype.getCellIdx = function (uid) {\n var cIdx = this.parent.getColumnIndexByUid(uid) + this.parent.groupSettings.columns.length;\n if (!isNullOrUndefined(this.parent.detailTemplate) || !isNullOrUndefined(this.parent.childGrid)) {\n cIdx++;\n }\n if (this.parent.isRowDragable()) {\n cIdx++;\n }\n return cIdx;\n };\n BatchEdit.prototype.refreshTD = function (td, column, rowObj, value) {\n var cell = new CellRenderer(this.parent, this.serviceLocator);\n value = column.type === 'number' && !isNullOrUndefined(value) ? parseFloat(value) : value;\n if (rowObj) {\n this.setChanges(rowObj, column.field, value);\n refreshForeignData(rowObj, this.parent.getForeignKeyColumns(), rowObj.changes);\n }\n var rowcell = rowObj ? rowObj.cells : undefined;\n var parentElement;\n var cellIndex;\n if (this.parent.isReact) {\n parentElement = td.parentElement;\n cellIndex = td.cellIndex;\n }\n var index = 0;\n if (rowObj) {\n cell.refreshTD(td, rowcell[this.getCellIdx(column.uid) - index], rowObj.changes, { 'index': this.getCellIdx(column.uid) });\n }\n if (this.parent.isReact) {\n this.newReactTd = parentElement.cells[parseInt(cellIndex.toString(), 10)];\n parentElement.cells[parseInt(cellIndex.toString(), 10)].classList.add('e-updatedtd');\n }\n else {\n td.classList.add('e-updatedtd');\n }\n td.classList.add('e-updatedtd');\n this.parent.notify(events.toolbarRefresh, {});\n };\n BatchEdit.prototype.getColIndex = function (cells, index) {\n var cIdx = 0;\n if (this.parent.allowGrouping && this.parent.groupSettings.columns) {\n cIdx = this.parent.groupSettings.columns.length;\n }\n if (!isNullOrUndefined(this.parent.detailTemplate) || !isNullOrUndefined(this.parent.childGrid)) {\n cIdx++;\n }\n if (this.parent.isRowDragable()) {\n cIdx++;\n }\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[parseInt(m.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n if (colIndex === index - cIdx) {\n return m;\n }\n }\n return -1;\n };\n BatchEdit.prototype.editNextValCell = function () {\n var gObj = this.parent;\n var insertedRows = gObj.element.querySelectorAll('.e-insertedrow');\n var isSingleInsert = insertedRows.length === 1 ? true : false;\n if (isSingleInsert && this.isAdded && !gObj.isEdit) {\n var btmIdx = this.getBottomIndex();\n for (var i = this.cellDetails.cellIndex; i < gObj.getColumns().length; i++) {\n if (gObj.isEdit) {\n return;\n }\n var index = this.findNextEditableCell(this.cellDetails.cellIndex + 1, true, true);\n var col = gObj.getColumns()[parseInt(index.toString(), 10)];\n if (col) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n this.editCell(btmIdx, col.field, true);\n }\n else {\n var args = { index: 0, column: col };\n this.parent.notify(events.nextCellIndex, args);\n this.editCell(args.index, col.field, true);\n }\n this.saveCell();\n }\n }\n if (!gObj.isEdit) {\n this.isAdded = false;\n }\n }\n else if (!isSingleInsert && this.isAdded && !gObj.isEdit) {\n var editRowIdx = 0;\n if (gObj.editSettings.newRowPosition === 'Bottom') {\n var changes = this.getBatchChanges();\n editRowIdx = gObj.getCurrentViewRecords().length - changes[literals.deletedRecords].length;\n }\n for (var i = 0; i < insertedRows.length; i++) {\n if (!gObj.isEdit) {\n for (var j = 0; j < this.validationColObj.length; j++) {\n if (gObj.isEdit) {\n break;\n }\n else if (insertedRows[parseInt(i.toString(), 10)].querySelectorAll('td:not(.e-hide)')[this.validationColObj[parseInt(j.toString(), 10)].cellIdx].innerHTML === '') {\n this.editCell(parseInt(insertedRows[parseInt(i.toString(), 10)].getAttribute('data-rowindex'), 10), this.validationColObj[parseInt(j.toString(), 10)].field);\n if (this.validateFormObj()) {\n this.saveCell();\n }\n }\n }\n }\n else {\n break;\n }\n }\n if (!gObj.isEdit) {\n this.isAdded = false;\n }\n }\n };\n BatchEdit.prototype.escapeCellEdit = function () {\n var args = this.generateCellArgs();\n args.value = args.previousValue;\n if (args.value || !this.cellDetails.column.validationRules) {\n this.successCallBack(args, args.cell.parentElement, args.column, true)(args);\n }\n };\n BatchEdit.prototype.generateCellArgs = function () {\n var gObj = this.parent;\n this.parent.element.classList.remove('e-editing');\n var column = this.cellDetails.column;\n var obj = {};\n obj[column.field] = getObject(column.field, this.cellDetails.rowData);\n var editedData = gObj.editModule.getCurrentEditedData(this.form, obj);\n var cloneEditedData = extend({}, editedData);\n editedData = extend({}, editedData, this.cellDetails.rowData);\n var value = getObject(column.field, cloneEditedData);\n if (!isNullOrUndefined(column.field) && !isUndefined(value)) {\n setValue(column.field, value, editedData);\n }\n var args = {\n columnName: column.field,\n value: getObject(column.field, editedData),\n rowData: this.cellDetails.rowData,\n column: column,\n previousValue: this.cellDetails.value,\n isForeignKey: this.cellDetails.isForeignKey,\n cancel: false\n };\n args.cell = this.form.parentElement;\n args.columnObject = column;\n return args;\n };\n BatchEdit.prototype.saveCell = function (isForceSave) {\n if (this.preventSaveCell || !this.form) {\n return;\n }\n var gObj = this.parent;\n if (!isForceSave && (!gObj.isEdit || this.validateFormObj())) {\n return;\n }\n this.preventSaveCell = true;\n var args = this.generateCellArgs();\n var tr = args.cell.parentElement;\n var col = args.column;\n args.cell.removeAttribute('aria-label');\n if (!isForceSave) {\n gObj.trigger(events.cellSave, args, this.successCallBack(args, tr, col));\n gObj.notify(events.batchForm, { formObj: this.form });\n }\n else {\n this.successCallBack(args, tr, col)(args);\n }\n };\n BatchEdit.prototype.successCallBack = function (cellSaveArgs, tr, column, isEscapeCellEdit) {\n var _this = this;\n return function (cellSaveArgs) {\n var gObj = _this.parent;\n cellSaveArgs.cell = cellSaveArgs.cell ? cellSaveArgs.cell : _this.form.parentElement;\n cellSaveArgs.columnObject = cellSaveArgs.columnObject ? cellSaveArgs.columnObject : column;\n // cellSaveArgs.columnObject.index = isNullOrUndefined(cellSaveArgs.columnObject.index) ? 0 : cellSaveArgs.columnObject.index;\n if (cellSaveArgs.cancel) {\n _this.preventSaveCell = false;\n if (_this.editNext) {\n _this.editNext = false;\n if (_this.cellDetails.rowIndex === _this.index && _this.cellDetails.column.field === _this.field) {\n return;\n }\n _this.editCellExtend(_this.index, _this.field, _this.isAdd);\n }\n return;\n }\n gObj.editModule.destroyWidgets([column]);\n gObj.isEdit = false;\n gObj.editModule.destroyForm();\n _this.parent.notify(events.tooltipDestroy, {});\n var rowObj = gObj.getRowObjectFromUID(tr.getAttribute('data-uid'));\n _this.refreshTD(cellSaveArgs.cell, column, rowObj, cellSaveArgs.value);\n if (_this.parent.isReact) {\n cellSaveArgs.cell = _this.newReactTd;\n }\n removeClass([tr], [literals.editedRow, 'e-batchrow']);\n removeClass([cellSaveArgs.cell], ['e-editedbatchcell', 'e-boolcell']);\n if (!isNullOrUndefined(cellSaveArgs.value) && cellSaveArgs.value.toString() ===\n (!isNullOrUndefined(_this.cellDetails.value) ? _this.cellDetails.value : '').toString() && !_this.isColored\n || (isNullOrUndefined(cellSaveArgs.value) && isNullOrUndefined(rowObj.data[column.field]) &&\n isNullOrUndefined(_this.cellDetails.value) && !cellSaveArgs.cell.parentElement.classList.contains('e-insertedrow'))) {\n cellSaveArgs.cell.classList.remove('e-updatedtd');\n }\n if (isNullOrUndefined(isEscapeCellEdit)) {\n var isReactCompiler = gObj.isReact && column.template && typeof (column.template) !== 'string';\n var isReactChild = gObj.parentDetails && gObj.parentDetails.parentInstObj\n && gObj.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n if (gObj.requireTemplateRef) {\n gObj.renderTemplates(function () {\n gObj.trigger(events.cellSaved, cellSaveArgs);\n });\n }\n else {\n gObj.renderTemplates();\n gObj.trigger(events.cellSaved, cellSaveArgs);\n }\n }\n else {\n gObj.trigger(events.cellSaved, cellSaveArgs);\n }\n }\n gObj.notify(events.toolbarRefresh, {});\n _this.isColored = false;\n if (_this.parent.aggregates.length > 0) {\n if (!(_this.parent.isReact || _this.parent.isVue)) {\n _this.parent.notify(events.refreshFooterRenderer, {});\n }\n if (_this.parent.groupSettings.columns.length > 0 && !_this.isAddRow(_this.cellDetails.rowIndex)) {\n _this.parent.notify(events.groupAggregates, {});\n }\n if (_this.parent.isReact || _this.parent.isVue) {\n _this.parent.notify(events.refreshFooterRenderer, {});\n }\n }\n _this.preventSaveCell = false;\n if (_this.editNext) {\n _this.editNext = false;\n if (_this.cellDetails.rowIndex === _this.index && _this.cellDetails.column.field === _this.field && _this.prevEditedBatchCell) {\n return;\n }\n var col = gObj.getColumnByField(_this.field);\n if (col && (col.allowEditing || (!col.allowEditing && gObj.focusModule.active\n && gObj.focusModule.active.getTable().rows[_this.crtRowIndex]\n && gObj.focusModule.active.getTable().rows[_this.crtRowIndex].classList.contains('e-insertedrow')))) {\n _this.editCellExtend(_this.index, _this.field, _this.isAdd);\n }\n }\n if (isEscapeCellEdit) {\n gObj.notify(events.restoreFocus, {});\n }\n };\n };\n BatchEdit.prototype.prevEditedBatchCellMatrix = function () {\n var editedBatchCellMatrix = [];\n var gObj = this.parent;\n var editedBatchCell = gObj.focusModule.active.getTable().querySelector('.e-editedbatchcell');\n if (editedBatchCell) {\n var tr = editedBatchCell.parentElement;\n var rowIndex = [].slice.call(this.parent.focusModule.active.getTable().rows).indexOf(tr);\n var cellIndex = [].slice.call(tr.cells).indexOf(editedBatchCell);\n editedBatchCellMatrix = [rowIndex, cellIndex];\n }\n return editedBatchCellMatrix;\n };\n BatchEdit.prototype.getDataByIndex = function (index) {\n var row = this.parent.getRowObjectFromUID(this.parent.getDataRows()[parseInt(index.toString(), 10)].getAttribute('data-uid'));\n return row.changes ? row.changes : row.data;\n };\n BatchEdit.prototype.keyDownHandler = function (e) {\n if (this.addBatchRow || ((e.action === 'tab' || e.action === 'shiftTab') && this.parent.isEdit)) {\n var gObj = this.parent;\n var btmIdx = this.getBottomIndex();\n var rowcell = parentsUntil(e.target, literals.rowCell);\n if (this.addBatchRow || (rowcell && !this.parent.isReact)) {\n var cell = void 0;\n if (rowcell) {\n cell = rowcell.querySelector('.e-field');\n }\n if (this.addBatchRow || cell) {\n var visibleColumns = this.parent.getVisibleColumns();\n var columnIndex = e.action === 'tab' ? visibleColumns.length - 1 : 0;\n if (this.addBatchRow\n || visibleColumns[parseInt(columnIndex.toString(), 10)].field === cell.getAttribute('id').slice(this.parent.element.id.length)) {\n if (this.cellDetails.rowIndex === btmIdx && e.action === 'tab') {\n if (gObj.editSettings.newRowPosition === 'Top') {\n gObj.editSettings.newRowPosition = 'Bottom';\n this.addRecord();\n gObj.editSettings.newRowPosition = 'Top';\n }\n else {\n this.addRecord();\n }\n this.addBatchRow = false;\n }\n else {\n this.saveCell();\n }\n }\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addCancelWhilePaging = function () {\n if (this.validateFormObj()) {\n this.parent.notify(events.destroyForm, {});\n this.parent.isEdit = false;\n this.editNext = false;\n this.mouseDownElement = undefined;\n this.isColored = false;\n }\n };\n BatchEdit.prototype.getBottomIndex = function () {\n var changes = this.getBatchChanges();\n return this.parent.getCurrentViewRecords().length + changes[literals.addedRecords].length -\n changes[literals.deletedRecords].length - 1;\n };\n return BatchEdit;\n}());\nexport { BatchEdit };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { NormalEdit } from './normal-edit';\n/**\n * `DialogEdit` module is used to handle dialog editing actions.\n *\n * @hidden\n */\nvar DialogEdit = /** @class */ (function (_super) {\n __extends(DialogEdit, _super);\n function DialogEdit(parent, serviceLocator, renderer) {\n var _this = \n //constructor\n _super.call(this, parent, serviceLocator) || this;\n _this.parent = parent;\n _this.serviceLocator = serviceLocator;\n _this.renderer = renderer;\n return _this;\n }\n DialogEdit.prototype.closeEdit = function () {\n //closeEdit\n _super.prototype.closeEdit.call(this);\n };\n DialogEdit.prototype.addRecord = function (data, index) {\n //addRecord\n _super.prototype.addRecord.call(this, data, index);\n };\n DialogEdit.prototype.endEdit = function () {\n //endEdit\n _super.prototype.endEdit.call(this);\n };\n DialogEdit.prototype.updateRow = function (index, data) {\n _super.prototype.updateRow.call(this, index, data);\n };\n DialogEdit.prototype.deleteRecord = function (fieldname, data) {\n //deleteRecord\n _super.prototype.deleteRecord.call(this, fieldname, data);\n };\n DialogEdit.prototype.startEdit = function (tr) {\n _super.prototype.startEdit.call(this, tr);\n };\n return DialogEdit;\n}(NormalEdit));\nexport { DialogEdit };\n","import { L10n, getValue, getDefaultDateObject, cldrData } from '@syncfusion/ej2-base';\nvar ARROWLEFT = 'ArrowLeft';\nvar ARROWRIGHT = 'ArrowRight';\nvar ARROWUP = 'ArrowUp';\nvar ARROWDOWN = 'ArrowDown';\nvar TAB = 'Tab';\nvar SHIFTTAB = 'shiftTab';\nvar END = 'End';\nvar HOME = 'Home';\nvar MaskedDateTime = /** @class */ (function () {\n function MaskedDateTime(parent) {\n this.mask = '';\n this.defaultConstant = {\n day: 'day',\n month: 'month',\n year: 'year',\n hour: 'hour',\n minute: 'minute',\n second: 'second',\n dayOfTheWeek: 'day of the week'\n };\n this.hiddenMask = '';\n this.validCharacters = 'dMyhmHfasz';\n this.isDayPart = false;\n this.isMonthPart = false;\n this.isYearPart = false;\n this.isHourPart = false;\n this.isMinutePart = false;\n this.isSecondsPart = false;\n this.isMilliSecondsPart = false;\n this.monthCharacter = '';\n this.periodCharacter = '';\n this.isHiddenMask = false;\n this.isComplete = false;\n this.isNavigate = false;\n this.navigated = false;\n this.isBlur = false;\n this.formatRegex = /EEEEE|EEEE|EEE|EE|E|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|HH|H|hh|h|mm|m|fff|ff|f|aa|a|ss|s|zzzz|zzz|zz|z|'[^']*'|'[^']*'/g;\n this.isDeletion = false;\n this.isShortYear = false;\n this.isDeleteKey = false;\n this.isDateZero = false;\n this.isMonthZero = false;\n this.isYearZero = false;\n this.isLeadingZero = false;\n this.dayTypeCount = 0;\n this.monthTypeCount = 0;\n this.hourTypeCount = 0;\n this.minuteTypeCount = 0;\n this.secondTypeCount = 0;\n this.parent = parent;\n this.dateformat = this.getCulturedFormat();\n this.maskDateValue = this.parent.value != null ? new Date(+this.parent.value) : new Date();\n this.maskDateValue.setMonth(0);\n this.maskDateValue.setHours(0);\n this.maskDateValue.setMinutes(0);\n this.maskDateValue.setSeconds(0);\n this.previousDate = new Date(this.maskDateValue.getFullYear(), this.maskDateValue.getMonth(), this.maskDateValue.getDate(), this.maskDateValue.getHours(), this.maskDateValue.getMinutes(), this.maskDateValue.getSeconds());\n this.removeEventListener();\n this.addEventListener();\n }\n MaskedDateTime.prototype.getModuleName = function () {\n return 'MaskedDateTime';\n };\n MaskedDateTime.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('createMask', this.createMask, this);\n this.parent.on('setMaskSelection', this.validCharacterCheck, this);\n this.parent.on('inputHandler', this.maskInputHandler, this);\n this.parent.on('keyDownHandler', this.maskKeydownHandler, this);\n this.parent.on('clearHandler', this.clearHandler, this);\n };\n MaskedDateTime.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('createMask', this.createMask);\n this.parent.off('setMaskSelection', this.validCharacterCheck);\n this.parent.off('inputHandler', this.maskInputHandler);\n this.parent.off('keyDownHandler', this.maskKeydownHandler);\n this.parent.off('clearHandler', this.clearHandler);\n };\n MaskedDateTime.prototype.createMask = function (mask) {\n this.isDayPart = this.isMonthPart = this.isYearPart = this.isHourPart = this.isMinutePart = this.isSecondsPart = false;\n this.dateformat = this.getCulturedFormat();\n if (this.parent.maskPlaceholder.day) {\n this.defaultConstant['day'] = this.parent.maskPlaceholder.day;\n }\n if (this.parent.maskPlaceholder.month) {\n this.defaultConstant['month'] = this.parent.maskPlaceholder.month;\n }\n if (this.parent.maskPlaceholder.year) {\n this.defaultConstant['year'] = this.parent.maskPlaceholder.year;\n }\n if (this.parent.maskPlaceholder.hour) {\n this.defaultConstant['hour'] = this.parent.maskPlaceholder.hour;\n }\n if (this.parent.maskPlaceholder.minute) {\n this.defaultConstant['minute'] = this.parent.maskPlaceholder.minute;\n }\n if (this.parent.maskPlaceholder.second) {\n this.defaultConstant['second'] = this.parent.maskPlaceholder.second;\n }\n if (this.parent.maskPlaceholder.dayOfTheWeek) {\n this.defaultConstant['dayOfTheWeek'] = this.parent.maskPlaceholder.dayOfTheWeek.toString();\n }\n this.getCUltureMaskFormat();\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.mask = this.previousValue = inputValue;\n this.parent.maskedDateValue = this.mask;\n if (this.parent.value) {\n this.navigated = true;\n this.isBlur = mask.isBlur;\n this.setDynamicValue();\n }\n };\n MaskedDateTime.prototype.getCUltureMaskFormat = function () {\n this.l10n = new L10n(this.parent.moduleName, this.defaultConstant, this.parent.locale);\n this.objectString = Object.keys(this.defaultConstant);\n for (var i = 0; i < this.objectString.length; i++) {\n this.defaultConstant[this.objectString[i].toString()] =\n this.l10n.getConstant(this.objectString[i].toString());\n }\n };\n MaskedDateTime.prototype.validCharacterCheck = function () {\n var start = this.parent.inputElement.selectionStart;\n if (this.parent.moduleName !== 'timepicker') {\n if (start === this.hiddenMask.length && this.mask === this.parent.inputElement.value) {\n start = 0;\n }\n }\n for (var i = start, j = start - 1; i < this.hiddenMask.length || j >= 0; i++, j--) {\n if (i < this.hiddenMask.length && this.validCharacters.indexOf(this.hiddenMask[i]) !== -1) {\n this.setSelection(this.hiddenMask[i]);\n return;\n }\n if (j >= 0 && this.validCharacters.indexOf(this.hiddenMask[j]) !== -1) {\n this.setSelection(this.hiddenMask[j]);\n return;\n }\n }\n };\n MaskedDateTime.prototype.setDynamicValue = function () {\n this.maskDateValue = new Date(+this.parent.value);\n this.isDayPart = this.isMonthPart = this.isYearPart = this.isHourPart = this.isMinutePart = this.isSecondsPart = true;\n this.updateValue();\n if (!this.isBlur) {\n this.validCharacterCheck();\n }\n };\n MaskedDateTime.prototype.setSelection = function (validChar) {\n var start = -1;\n var end = 0;\n for (var i = 0; i < this.hiddenMask.length; i++) {\n if (this.hiddenMask[i] === validChar) {\n end = i + 1;\n if (start === -1) {\n start = i;\n }\n }\n }\n if (start < 0) {\n start = 0;\n }\n this.parent.inputElement.setSelectionRange(start, end);\n };\n MaskedDateTime.prototype.maskKeydownHandler = function (args) {\n this.dayTypeCount = this.monthTypeCount = this.hourTypeCount = this.minuteTypeCount = this.secondTypeCount = 0;\n if (args.e.key === 'Delete') {\n this.isDeleteKey = true;\n return;\n }\n if ((!args.e.altKey && !args.e.ctrlKey) && (args.e.key === ARROWLEFT || args.e.key === ARROWRIGHT\n || args.e.key === SHIFTTAB || args.e.key === TAB || args.e.action === SHIFTTAB ||\n args.e.key === END || args.e.key === HOME)) {\n var start = this.parent.inputElement.selectionStart;\n var end = this.parent.inputElement.selectionEnd;\n var length_1 = this.parent.inputElement.value.length;\n if ((start === 0 && end === length_1) && (args.e.key === TAB || args.e.action === SHIFTTAB)) {\n var index = args.e.action === SHIFTTAB ? end : 0;\n this.parent.inputElement.selectionStart = this.parent.inputElement.selectionEnd = index;\n }\n if (args.e.key === END || args.e.key === HOME) {\n var range = args.e.key === END ? length_1 : 0;\n this.parent.inputElement.selectionStart = this.parent.inputElement.selectionEnd = range;\n }\n this.navigateSelection(args.e.key === ARROWLEFT || args.e.action === SHIFTTAB || args.e.key === END ? true : false);\n }\n if ((!args.e.altKey && !args.e.ctrlKey) && (args.e.key === ARROWUP || args.e.key === ARROWDOWN)) {\n var start = this.parent.inputElement.selectionStart;\n var formatText = '';\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n formatText = this.hiddenMask[start];\n }\n this.dateAlteration(args.e.key === ARROWDOWN ? true : false);\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.previousValue = inputValue;\n this.parent.inputElement.value = inputValue;\n for (var i = 0; i < this.hiddenMask.length; i++) {\n if (formatText === this.hiddenMask[i]) {\n start = i;\n break;\n }\n }\n this.parent.inputElement.selectionStart = start;\n this.validCharacterCheck();\n }\n };\n MaskedDateTime.prototype.isPersist = function () {\n var isPersist = this.parent.isFocused || this.navigated;\n return isPersist;\n };\n MaskedDateTime.prototype.differenceCheck = function () {\n var start = this.parent.inputElement.selectionStart;\n var inputValue = this.parent.inputElement.value;\n var previousVal = this.previousValue.substring(0, start + this.previousValue.length - inputValue.length);\n var newVal = inputValue.substring(0, start);\n var newDateValue = new Date(+this.maskDateValue);\n var maxDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth() + 1, 0).getDate();\n if (previousVal.indexOf(newVal) === 0 && (newVal.length === 0 ||\n this.previousHiddenMask[newVal.length - 1] !== this.previousHiddenMask[newVal.length])) {\n for (var i = newVal.length; i < previousVal.length; i++) {\n if (this.previousHiddenMask[i] !== '' && this.validCharacters.indexOf(this.previousHiddenMask[i]) >= 0) {\n this.isDeletion = this.handleDeletion(this.previousHiddenMask[i], false);\n }\n }\n if (this.isDeletion) {\n return;\n }\n }\n switch (this.previousHiddenMask[start - 1]) {\n case 'd':\n {\n var date = (this.isDayPart && newDateValue.getDate().toString().length < 2 &&\n !this.isPersist() ? newDateValue.getDate() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.isDateZero = (newVal[start - 1] === '0');\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(date)) {\n return;\n }\n for (var i = 0; date > maxDate; i++) {\n date = parseInt(date.toString().slice(1), 10);\n }\n if (date >= 1) {\n newDateValue.setDate(date);\n this.isNavigate = date.toString().length === 2;\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n if (newDateValue.getMonth() !== this.maskDateValue.getMonth()) {\n return;\n }\n this.isDayPart = true;\n this.dayTypeCount = this.dayTypeCount + 1;\n }\n else {\n this.isDayPart = false;\n this.dayTypeCount = this.isDateZero ? this.dayTypeCount + 1 : this.dayTypeCount;\n }\n break;\n }\n case 'M':\n {\n var month = void 0;\n if (newDateValue.getMonth().toString().length < 2 && !this.isPersist()) {\n month = (this.isMonthPart ? (newDateValue.getMonth() + 1) * 10 : 0) + parseInt(newVal[start - 1], 10);\n }\n else {\n month = parseInt(newVal[start - 1], 10);\n }\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n this.isMonthZero = (newVal[start - 1] === '0');\n if (!isNaN(month)) {\n while (month > 12) {\n month = parseInt(month.toString().slice(1), 10);\n }\n if (month >= 1) {\n newDateValue.setMonth(month - 1);\n if (month >= 10 || month == 1) {\n if (this.isLeadingZero && month == 1) {\n this.isNavigate = month.toString().length === 1;\n this.isLeadingZero = false;\n }\n else {\n this.isNavigate = month.toString().length === 2;\n }\n }\n else {\n this.isNavigate = month.toString().length === 1;\n }\n if (newDateValue.getMonth() !== month - 1) {\n newDateValue.setDate(1);\n newDateValue.setMonth(month - 1);\n }\n if (this.isDayPart) {\n var previousMaxDate = new Date(this.previousDate.getFullYear(), this.previousDate.getMonth() + 1, 0).getDate();\n var currentMaxDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth() + 1, 0).getDate();\n if (this.previousDate.getDate() === previousMaxDate && currentMaxDate <= previousMaxDate) {\n newDateValue.setDate(currentMaxDate);\n }\n }\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n this.isMonthPart = true;\n this.monthTypeCount = this.monthTypeCount + 1;\n }\n else {\n newDateValue.setMonth(0);\n this.isLeadingZero = true;\n this.isMonthPart = false;\n this.monthTypeCount = this.isMonthZero ? this.monthTypeCount + 1 : this.monthTypeCount;\n }\n }\n else {\n var monthString = (this.getCulturedValue('months[stand-alone].wide'));\n var monthValue = Object.keys(monthString);\n this.monthCharacter += newVal[start - 1].toLowerCase();\n while (this.monthCharacter.length > 0) {\n var i = 1;\n for (var _i = 0, monthValue_1 = monthValue; _i < monthValue_1.length; _i++) {\n var months = monthValue_1[_i];\n if (monthString[i].toLowerCase().indexOf(this.monthCharacter) === 0) {\n newDateValue.setMonth(i - 1);\n this.isMonthPart = true;\n this.maskDateValue = newDateValue;\n return;\n }\n i++;\n }\n this.monthCharacter = this.monthCharacter.substring(1, this.monthCharacter.length);\n }\n }\n break;\n }\n case 'y':\n {\n var year = (this.isYearPart && (newDateValue.getFullYear().toString().length < 4\n && !this.isShortYear) ? newDateValue.getFullYear() * 10 : 0) + parseInt(newVal[start - 1], 10);\n var yearValue = (this.dateformat.match(/y/g) || []).length;\n this.isShortYear = false;\n this.isYearZero = (newVal[start - 1] === '0');\n if (isNaN(year)) {\n return;\n }\n while (year > 9999) {\n year = parseInt(year.toString().slice(1), 10);\n }\n if (year < 1) {\n this.isYearPart = false;\n }\n else {\n newDateValue.setFullYear(year);\n if (year.toString().length === yearValue) {\n this.isNavigate = true;\n }\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n this.isYearPart = true;\n }\n break;\n }\n case 'h':\n this.hour = (this.isHourPart && (newDateValue.getHours() % 12 || 12).toString().length < 2\n && !this.isPersist() ? (newDateValue.getHours() % 12 || 12) * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(this.hour)) {\n return;\n }\n while (this.hour > 12) {\n this.hour = parseInt(this.hour.toString().slice(1), 10);\n }\n newDateValue.setHours(Math.floor(newDateValue.getHours() / 12) * 12 + (this.hour % 12));\n this.isNavigate = this.hour.toString().length === 2;\n this.isHourPart = true;\n this.hourTypeCount = this.hourTypeCount + 1;\n break;\n case 'H':\n this.hour = (this.isHourPart && newDateValue.getHours().toString().length < 2 &&\n !this.isPersist() ? newDateValue.getHours() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(this.hour)) {\n return;\n }\n for (var i = 0; this.hour > 23; i++) {\n this.hour = parseInt(this.hour.toString().slice(1), 10);\n }\n newDateValue.setHours(this.hour);\n this.isNavigate = this.hour.toString().length === 2;\n this.isHourPart = true;\n this.hourTypeCount = this.hourTypeCount + 1;\n break;\n case 'm':\n {\n var minutes = (this.isMinutePart && newDateValue.getMinutes().toString().length < 2\n && !this.isPersist() ? newDateValue.getMinutes() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(minutes)) {\n return;\n }\n for (var i = 0; minutes > 59; i++) {\n minutes = parseInt(minutes.toString().slice(1), 10);\n }\n newDateValue.setMinutes(minutes);\n this.isNavigate = minutes.toString().length === 2;\n this.isMinutePart = true;\n this.minuteTypeCount = this.minuteTypeCount + 1;\n break;\n }\n case 's':\n {\n var seconds = (this.isSecondsPart && newDateValue.getSeconds().toString().length < 2 &&\n !this.isPersist() ? newDateValue.getSeconds() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(seconds)) {\n return;\n }\n for (var i = 0; seconds > 59; i++) {\n seconds = parseInt(seconds.toString().slice(1), 10);\n }\n newDateValue.setSeconds(seconds);\n this.isNavigate = seconds.toString().length === 2;\n this.isSecondsPart = true;\n this.secondTypeCount = this.secondTypeCount + 1;\n break;\n }\n case 'a':\n {\n this.periodCharacter += newVal[start - 1].toLowerCase();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var periodString = (this.getCulturedValue('dayPeriods.format.wide'));\n var periodkeys = Object.keys(periodString);\n for (var i = 0; this.periodCharacter.length > 0; i++) {\n if ((periodString[periodkeys[0]].toLowerCase().indexOf(this.periodCharacter) === 0\n && newDateValue.getHours() >= 12) || (periodString[periodkeys[1]].toLowerCase().\n indexOf(this.periodCharacter) === 0 && newDateValue.getHours() < 12)) {\n newDateValue.setHours((newDateValue.getHours() + 12) % 24);\n this.maskDateValue = newDateValue;\n }\n this.periodCharacter = this.periodCharacter.substring(1, this.periodCharacter.length);\n }\n break;\n }\n default:\n break;\n }\n this.maskDateValue = newDateValue;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MaskedDateTime.prototype.formatCheck = function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n function formatValueSpecifier(formattext) {\n var result;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var daysAbbreviated = proxy.getCulturedValue('days[stand-alone].abbreviated');\n var dayKeyAbbreviated = Object.keys(daysAbbreviated);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var daysWide = (proxy.getCulturedValue('days[stand-alone].wide'));\n var dayKeyWide = Object.keys(daysWide);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var daysNarrow = (proxy.getCulturedValue('days[stand-alone].narrow'));\n var dayKeyNarrow = Object.keys(daysNarrow);\n var monthAbbreviated = (proxy.getCulturedValue('months[stand-alone].abbreviated'));\n var monthWide = (proxy.getCulturedValue('months[stand-alone].wide'));\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var periodString = (proxy.getCulturedValue('dayPeriods.format.wide'));\n var periodkeys = Object.keys(periodString);\n var milliseconds;\n var dateOptions;\n switch (formattext) {\n case 'ddd':\n case 'dddd':\n case 'd':\n result = proxy.isDayPart ? proxy.maskDateValue.getDate().toString() : proxy.defaultConstant['day'].toString();\n result = proxy.zeroCheck(proxy.isDateZero, proxy.isDayPart, result);\n if (proxy.dayTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.dayTypeCount = 0;\n }\n break;\n case 'dd':\n result = proxy.isDayPart ? proxy.roundOff(proxy.maskDateValue.getDate(), 2) : proxy.defaultConstant['day'].toString();\n result = proxy.zeroCheck(proxy.isDateZero, proxy.isDayPart, result);\n if (proxy.dayTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.dayTypeCount = 0;\n }\n break;\n case 'E':\n case 'EE':\n case 'EEE':\n result = proxy.isDayPart && proxy.isMonthPart && proxy.isYearPart ? daysAbbreviated[dayKeyAbbreviated[proxy.maskDateValue.getDay()]].toString() : proxy.defaultConstant['dayOfTheWeek'].toString();\n break;\n case 'EEEE':\n result = proxy.isDayPart && proxy.isMonthPart && proxy.isYearPart ? daysWide[dayKeyWide[proxy.maskDateValue.getDay()]].toString() : proxy.defaultConstant['dayOfTheWeek'].toString();\n break;\n case 'EEEEE':\n result = proxy.isDayPart && proxy.isMonthPart && proxy.isYearPart ? daysNarrow[dayKeyNarrow[proxy.maskDateValue.getDay()]].toString() : proxy.defaultConstant['dayOfTheWeek'].toString();\n break;\n case 'M':\n result = proxy.isMonthPart ? (proxy.maskDateValue.getMonth() + 1).toString() : proxy.defaultConstant['month'].toString();\n result = proxy.zeroCheck(proxy.isMonthZero, proxy.isMonthPart, result);\n if (proxy.monthTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.monthTypeCount = 0;\n }\n break;\n case 'MM':\n result = proxy.isMonthPart ? proxy.roundOff(proxy.maskDateValue.getMonth() + 1, 2) : proxy.defaultConstant['month'].toString();\n result = proxy.zeroCheck(proxy.isMonthZero, proxy.isMonthPart, result);\n if (proxy.monthTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.monthTypeCount = 0;\n }\n break;\n case 'MMM':\n result = proxy.isMonthPart ? monthAbbreviated[proxy.maskDateValue.getMonth() + 1] : proxy.defaultConstant['month'].toString();\n break;\n case 'MMMM':\n result = proxy.isMonthPart ? monthWide[proxy.maskDateValue.getMonth() + 1] : proxy.defaultConstant['month'].toString();\n break;\n case 'yy':\n result = proxy.isYearPart ? proxy.roundOff(proxy.maskDateValue.getFullYear() % 100, 2) : proxy.defaultConstant['year'].toString();\n result = proxy.zeroCheck(proxy.isYearZero, proxy.isYearPart, result);\n break;\n case 'y':\n case 'yyyy':\n result = proxy.isYearPart ? proxy.roundOff(proxy.maskDateValue.getFullYear(), 4) : proxy.defaultConstant['year'].toString();\n result = proxy.zeroCheck(proxy.isYearZero, proxy.isYearPart, result);\n break;\n case 'h':\n result = proxy.isHourPart ? (proxy.maskDateValue.getHours() % 12 || 12).toString() : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'hh':\n result = proxy.isHourPart ? proxy.roundOff(proxy.maskDateValue.getHours() % 12 || 12, 2) : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'H':\n result = proxy.isHourPart ? proxy.maskDateValue.getHours().toString() : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'HH':\n result = proxy.isHourPart ? proxy.roundOff(proxy.maskDateValue.getHours(), 2) : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'm':\n result = proxy.isMinutePart ? proxy.maskDateValue.getMinutes().toString() : proxy.defaultConstant['minute'].toString();\n if (proxy.minuteTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.minuteTypeCount = 0;\n }\n break;\n case 'mm':\n result = proxy.isMinutePart ? proxy.roundOff(proxy.maskDateValue.getMinutes(), 2) : proxy.defaultConstant['minute'].toString();\n if (proxy.minuteTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.minuteTypeCount = 0;\n }\n break;\n case 's':\n result = proxy.isSecondsPart ? proxy.maskDateValue.getSeconds().toString() : proxy.defaultConstant['second'].toString();\n if (proxy.secondTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.secondTypeCount = 0;\n }\n break;\n case 'ss':\n result = proxy.isSecondsPart ? proxy.roundOff(proxy.maskDateValue.getSeconds(), 2) : proxy.defaultConstant['second'].toString();\n if (proxy.secondTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.secondTypeCount = 0;\n }\n break;\n case 'f':\n result = Math.floor(proxy.maskDateValue.getMilliseconds() / 100).toString();\n break;\n case 'ff':\n milliseconds = proxy.maskDateValue.getMilliseconds();\n if (proxy.maskDateValue.getMilliseconds() > 99) {\n milliseconds = Math.floor(proxy.maskDateValue.getMilliseconds() / 10);\n }\n result = proxy.roundOff(milliseconds, 2);\n break;\n case 'fff':\n result = proxy.roundOff(proxy.maskDateValue.getMilliseconds(), 3);\n break;\n case 'a':\n case 'aa':\n result = proxy.maskDateValue.getHours() < 12 ? periodString[periodkeys[0]] : periodString[periodkeys[1]];\n break;\n case 'z':\n case 'zz':\n case 'zzz':\n case 'zzzz':\n dateOptions = {\n format: formattext,\n type: 'dateTime', skeleton: 'yMd', calendar: proxy.parent.calendarMode\n };\n result = proxy.parent.globalize.formatDate(proxy.maskDateValue, dateOptions);\n break;\n }\n result = result !== undefined ? result : formattext.slice(1, formattext.length - 1);\n if (proxy.isHiddenMask) {\n var hiddenChar = '';\n for (var i = 0; i < result.length; i++) {\n hiddenChar += formattext[0];\n }\n return hiddenChar;\n }\n else {\n return result;\n }\n }\n return formatValueSpecifier;\n };\n MaskedDateTime.prototype.maskInputHandler = function () {\n var start = this.parent.inputElement.selectionStart;\n var formatText = '';\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n formatText = this.hiddenMask[start];\n }\n this.differenceCheck();\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isDateZero = this.isMonthZero = this.isYearZero = false;\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.previousValue = inputValue;\n this.parent.inputElement.value = inputValue;\n this.parent.inputElement.value = inputValue;\n for (var i = 0; i < this.hiddenMask.length; i++) {\n if (formatText === this.hiddenMask[i]) {\n start = i;\n break;\n }\n }\n this.parent.inputElement.selectionStart = start;\n this.validCharacterCheck();\n if ((this.isNavigate || this.isDeletion) && !this.isDeleteKey) {\n var isbackward = this.isNavigate ? false : true;\n this.isNavigate = this.isDeletion = false;\n this.navigateSelection(isbackward);\n }\n if (this.isDeleteKey) {\n this.isDeletion = false;\n }\n this.isDeleteKey = false;\n };\n MaskedDateTime.prototype.navigateSelection = function (isbackward) {\n var start = this.parent.inputElement.selectionStart;\n var end = this.parent.inputElement.selectionEnd;\n var formatIndex = isbackward ? start - 1 : end;\n this.navigated = true;\n while (formatIndex < this.hiddenMask.length && formatIndex >= 0) {\n if (this.validCharacters.indexOf(this.hiddenMask[formatIndex]) >= 0) {\n this.setSelection(this.hiddenMask[formatIndex]);\n break;\n }\n formatIndex = formatIndex + (isbackward ? -1 : 1);\n }\n };\n MaskedDateTime.prototype.roundOff = function (val, count) {\n var valueText = val.toString();\n var length = count - valueText.length;\n var result = '';\n for (var i = 0; i < length; i++) {\n result += '0';\n }\n return result + valueText;\n };\n MaskedDateTime.prototype.zeroCheck = function (isZero, isDayPart, resultValue) {\n var result = resultValue;\n if (isZero && !isDayPart) {\n result = '0';\n }\n return result;\n };\n MaskedDateTime.prototype.handleDeletion = function (format, isSegment) {\n switch (format) {\n case 'd':\n this.isDayPart = isSegment;\n break;\n case 'M':\n this.isMonthPart = isSegment;\n if (!isSegment) {\n this.maskDateValue.setMonth(0);\n this.monthCharacter = '';\n }\n break;\n case 'y':\n this.isYearPart = isSegment;\n break;\n case 'H':\n case 'h':\n this.isHourPart = isSegment;\n if (!isSegment) {\n this.periodCharacter = '';\n }\n break;\n case 'm':\n this.isMinutePart = isSegment;\n break;\n case 's':\n this.isSecondsPart = isSegment;\n break;\n default:\n return false;\n }\n return true;\n };\n MaskedDateTime.prototype.dateAlteration = function (isDecrement) {\n var start = this.parent.inputElement.selectionStart;\n var formatText = '';\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n formatText = this.hiddenMask[start];\n }\n else {\n return;\n }\n var newDateValue = new Date(this.maskDateValue.getFullYear(), this.maskDateValue.getMonth(), this.maskDateValue.getDate(), this.maskDateValue.getHours(), this.maskDateValue.getMinutes(), this.maskDateValue.getSeconds());\n this.previousDate = new Date(this.maskDateValue.getFullYear(), this.maskDateValue.getMonth(), this.maskDateValue.getDate(), this.maskDateValue.getHours(), this.maskDateValue.getMinutes(), this.maskDateValue.getSeconds());\n var incrementValue = isDecrement ? -1 : 1;\n switch (formatText) {\n case 'd':\n newDateValue.setDate(newDateValue.getDate() + incrementValue);\n break;\n case 'M':\n {\n var newMonth = newDateValue.getMonth() + incrementValue;\n newDateValue.setDate(1);\n newDateValue.setMonth(newMonth);\n if (this.isDayPart) {\n var previousMaxDate = new Date(this.previousDate.getFullYear(), this.previousDate.getMonth() + 1, 0).getDate();\n var currentMaxDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth() + 1, 0).getDate();\n if (this.previousDate.getDate() === previousMaxDate && currentMaxDate <= previousMaxDate) {\n newDateValue.setDate(currentMaxDate);\n }\n else {\n newDateValue.setDate(this.previousDate.getDate());\n }\n }\n else {\n newDateValue.setDate(this.previousDate.getDate());\n }\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n break;\n }\n case 'y':\n newDateValue.setFullYear(newDateValue.getFullYear() + incrementValue);\n break;\n case 'H':\n case 'h':\n newDateValue.setHours(newDateValue.getHours() + incrementValue);\n break;\n case 'm':\n newDateValue.setMinutes(newDateValue.getMinutes() + incrementValue);\n break;\n case 's':\n newDateValue.setSeconds(newDateValue.getSeconds() + incrementValue);\n break;\n case 'a':\n newDateValue.setHours((newDateValue.getHours() + 12) % 24);\n break;\n default:\n break;\n }\n this.maskDateValue = newDateValue.getFullYear() > 0 ? newDateValue : this.maskDateValue;\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n this.handleDeletion(this.hiddenMask[start], true);\n }\n };\n MaskedDateTime.prototype.getCulturedValue = function (format) {\n var locale = this.parent.locale;\n var result;\n if (locale === 'en' || locale === 'en-US') {\n result = getValue(format, getDefaultDateObject());\n }\n else {\n result = getValue('main.' + '' + locale + ('.dates.calendars.gregorian.' + format), cldrData);\n }\n return result;\n };\n MaskedDateTime.prototype.getCulturedFormat = function () {\n var formatString = (this.getCulturedValue('dateTimeFormats[availableFormats].yMd')).toString();\n if (this.parent.moduleName === 'datepicker') {\n formatString = (this.getCulturedValue('dateTimeFormats[availableFormats].yMd')).toString();\n if (this.parent.format && this.parent.formatString) {\n formatString = this.parent.formatString;\n }\n }\n if (this.parent.moduleName === 'datetimepicker') {\n formatString = (this.getCulturedValue('dateTimeFormats[availableFormats].yMd')).toString();\n if (this.parent.dateTimeFormat) {\n formatString = this.parent.dateTimeFormat;\n }\n }\n if (this.parent.moduleName === 'timepicker') {\n formatString = this.parent.cldrTimeFormat();\n }\n return formatString;\n };\n MaskedDateTime.prototype.clearHandler = function () {\n this.isDayPart = this.isMonthPart = this.isYearPart = this.isHourPart = this.isMinutePart = this.isSecondsPart = false;\n this.updateValue();\n };\n MaskedDateTime.prototype.updateValue = function () {\n this.monthCharacter = this.periodCharacter = '';\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.previousValue = inputValue;\n this.parent.updateInputValue(inputValue);\n };\n MaskedDateTime.prototype.destroy = function () {\n this.removeEventListener();\n };\n return MaskedDateTime;\n}());\nexport { MaskedDateTime };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend } from '@syncfusion/ej2-base';\nimport { DatePicker, DateTimePicker, MaskedDateTime } from '@syncfusion/ej2-calendars';\nimport { isEditable, getObject, getCustomDateFormat } from '../base/util';\nimport { EditCellBase } from './edit-cell-base';\nDatePicker.Inject(MaskedDateTime);\n/**\n * `DatePickerEditCell` is used to handle datepicker cell type editing.\n *\n * @hidden\n */\nvar DatePickerEditCell = /** @class */ (function (_super) {\n __extends(DatePickerEditCell, _super);\n function DatePickerEditCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DatePickerEditCell.prototype.write = function (args) {\n this.edit = this.parent.editModule;\n if (args.column.editType === 'datepickeredit') {\n this.obj = new DatePicker(extend(dateanddatetimerender(args, this.parent.editSettings.mode, this.parent.enableRtl, this.parent.cssClass, this), args.column.edit.params));\n }\n else if (args.column.editType === 'datetimepickeredit') {\n this.obj = new DateTimePicker(extend(dateanddatetimerender(args, this.parent.editSettings.mode, this.parent.enableRtl, this.parent.cssClass, this), args.column.edit.params));\n }\n this.obj.appendTo(args.element);\n };\n return DatePickerEditCell;\n}(EditCellBase));\nexport { DatePickerEditCell };\n// eslint-disable-next-line\nfunction dateanddatetimerender(args, mode, rtl, css, datePickerEditCell) {\n var isInline = mode !== 'Dialog';\n var format = getCustomDateFormat(args.column.format, args.column.type);\n var value = getObject(args.column.field, args.rowData);\n value = value ? new Date(value) : null;\n return {\n floatLabelType: isInline ? 'Never' : 'Always',\n value: value,\n format: format,\n placeholder: isInline ?\n '' : args.column.headerText, enableRtl: rtl,\n enabled: isEditable(args.column, args.requestType, args.element),\n cssClass: css ? css : null,\n close: datePickerClose.bind(datePickerEditCell)\n };\n}\n// eslint-disable-next-line\nfunction datePickerClose(args) {\n if (args.event && args.event.action === 'escape') {\n this.edit.editCellDialogClose = true;\n }\n}\n","/**\n * `TemplateEditCell` is used to handle template cell.\n *\n * @hidden\n */\nvar TemplateEditCell = /** @class */ (function () {\n function TemplateEditCell(parent) {\n this.parent = parent;\n }\n TemplateEditCell.prototype.read = function (element, value) {\n return value;\n };\n TemplateEditCell.prototype.write = function () {\n //\n };\n TemplateEditCell.prototype.destroy = function () {\n //\n };\n return TemplateEditCell;\n}());\nexport { TemplateEditCell };\n","import { closest, addClass, select } from '@syncfusion/ej2-base';\nimport { extend, getValue } from '@syncfusion/ej2-base';\nimport { remove } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { EditRender } from '../renderer/edit-renderer';\nimport { BooleanEditCell } from '../renderer/boolean-edit-cell';\nimport { DropDownEditCell } from '../renderer/dropdown-edit-cell';\nimport { NumericEditCell } from '../renderer/numeric-edit-cell';\nimport { DefaultEditCell } from '../renderer/default-edit-cell';\nimport { InlineEdit } from './inline-edit';\nimport { BatchEdit } from './batch-edit';\nimport { DialogEdit } from './dialog-edit';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { parentsUntil, getComplexFieldID, getParsedFieldID, setComplexFieldID, getScrollBarWidth, setValidationRuels } from '../base/util';\nimport { FormValidator } from '@syncfusion/ej2-inputs';\nimport { DatePickerEditCell } from '../renderer/datepicker-edit-cell';\nimport { calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { TemplateEditCell } from '../renderer/template-edit-cell';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport { addRemoveEventListener, padZero } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * The `Edit` module is used to handle editing actions.\n */\nvar Edit = /** @class */ (function () {\n /**\n * Constructor for the Grid editing module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the servicelocator\n * @hidden\n */\n function Edit(parent, serviceLocator) {\n this.editType = { 'Inline': InlineEdit, 'Normal': InlineEdit, 'Batch': BatchEdit, 'Dialog': DialogEdit };\n this.fieldname = '';\n this.data = {};\n /* @hidden */\n this.editCellDialogClose = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.l10n = this.serviceLocator.getService('localization');\n this.addEventListener();\n this.updateEditObj();\n this.createAlertDlg();\n this.createConfirmDlg();\n }\n Edit.prototype.updateColTypeObj = function () {\n var cols = this.parent.columnModel;\n for (var i = 0; i < cols.length; i++) {\n if (this.parent.editSettings.template || cols[parseInt(i.toString(), 10)].editTemplate) {\n var templteCell = 'templateedit';\n cols[parseInt(i.toString(), 10)].edit = extend(new Edit.editCellType[\"\" + templteCell](this.parent), cols[parseInt(i.toString(), 10)].edit || {});\n }\n else {\n cols[parseInt(i.toString(), 10)].edit = extend(new Edit.editCellType[cols[parseInt(i.toString(), 10)].editType\n && Edit.editCellType[cols[parseInt(i.toString(), 10)].editType] ?\n cols[parseInt(i.toString(), 10)].editType : 'defaultedit'](this.parent, this.serviceLocator), cols[parseInt(i.toString(), 10)].edit || {});\n }\n }\n this.parent.log('primary_column_missing');\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Edit.prototype.getModuleName = function () {\n return 'edit';\n };\n /**\n * @param {NotifyArgs} e - specifies the notifyargs\n * @returns {void}\n * @hidden\n */\n Edit.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowAdding':\n case 'allowDeleting':\n case 'allowEditing':\n if (gObj.editSettings.allowAdding || gObj.editSettings.allowEditing || gObj.editSettings.allowDeleting) {\n this.initialEnd();\n }\n break;\n case 'mode':\n this.updateEditObj();\n gObj.isEdit = false;\n gObj.refresh();\n break;\n }\n }\n };\n Edit.prototype.updateEditObj = function () {\n if (this.editModule) {\n this.editModule.destroy();\n }\n this.renderer = new EditRender(this.parent, this.serviceLocator);\n this.editModule = new this.editType[this.parent.editSettings.mode](this.parent, this.serviceLocator, this.renderer);\n };\n Edit.prototype.initialEnd = function () {\n this.updateColTypeObj();\n };\n /**\n * Edits any bound record in the Grid by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row to be edited.\n * @returns {void}\n */\n Edit.prototype.startEdit = function (tr) {\n var gObj = this.parent;\n if (!gObj.editSettings.allowEditing || gObj.isEdit || gObj.editSettings.mode === 'Batch') {\n return;\n }\n this.parent.element.classList.add('e-editing');\n if (!gObj.getSelectedRows().length || isNullOrUndefined(this.parent.getRowByIndex(parseInt(this.parent.getSelectedRows()[0].getAttribute('data-rowindex'), 10)))) {\n if (!tr) {\n this.showDialog('EditOperationAlert', this.alertDObj);\n return;\n }\n }\n else if (!tr) {\n tr = gObj.getSelectedRows()[0];\n }\n if (this.parent.enableVirtualization && this.parent.editSettings.mode === 'Normal') {\n var idx = parseInt(tr.getAttribute('data-rowindex'), 10);\n tr = this.parent.getRowByIndex(idx);\n }\n var lastTr = gObj.getContent().querySelector('tr:last-child');\n var hdrTbody = gObj.getHeaderContent().querySelector('tbody');\n if (gObj.frozenRows && isNullOrUndefined(lastTr) && hdrTbody && hdrTbody.querySelector('tr:last-child')) {\n this.isLastRow = tr.rowIndex === parseInt(gObj.getHeaderContent().querySelector('tbody').querySelector('tr:last-child').getAttribute('data-rowindex'), 10);\n }\n else if (lastTr) {\n this.isLastRow = tr.rowIndex === lastTr.rowIndex;\n }\n if (tr.style.display === 'none') {\n return;\n }\n this.editModule.startEdit(tr);\n this.refreshToolbar();\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n this.parent.notify('start-edit', {});\n };\n /**\n * @param {Element} tr - specifies the tr element\n * @param {object} args - specifies the object\n * @param {Element} args.row -specfifes the row\n * @param {string} args.requestType - specifies the request type\n * @returns {void}\n * @hidden\n */\n Edit.prototype.checkLastRow = function (tr, args) {\n var checkLastRow = this.isLastRow;\n if (this.parent.height !== 'auto' && this.parent.editSettings.newRowPosition === 'Bottom' && args && args.requestType === 'add' &&\n this.parent.getContent().firstElementChild.offsetHeight > this.parent.getContentTable().scrollHeight) {\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), 'e-lastrowadded');\n }\n else if (checkLastRow && tr && tr.classList) {\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), 'e-lastrowcell');\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n Edit.prototype.closeEdit = function () {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.showConfirmDialog\n && this.parent.element.getElementsByClassName('e-updatedtd').length) {\n this.showDialog('CancelEdit', this.dialogObj);\n return;\n }\n this.parent.element.classList.remove('e-editing');\n this.editModule.closeEdit();\n this.refreshToolbar();\n this.parent.notify(events.closeEdit, {});\n };\n Edit.prototype.refreshToolbar = function () {\n this.parent.notify(events.toolbarRefresh, {});\n };\n /**\n * To adds a new row at the top with the given data. When data is not passed, it will add empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n * @returns {void}\n */\n Edit.prototype.addRecord = function (data, index) {\n if (!this.parent.editSettings.allowAdding) {\n return;\n }\n var args = { startEdit: true };\n if (!data) {\n this.parent.notify(events.virtualScrollAddActionBegin, args);\n }\n if (args.startEdit) {\n this.parent.element.classList.add('e-editing');\n this.editModule.addRecord(data, index);\n this.refreshToolbar();\n this.parent.notify('start-add', {});\n }\n };\n /**\n * Deletes a record with the given options. If fieldname and data are not given, the Grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldname - Defines the primary key field name of the column.\n * @param {Object} data - Defines the JSON data record to be deleted.\n * @returns {void}\n */\n Edit.prototype.deleteRecord = function (fieldname, data) {\n var gObj = this.parent;\n if (!gObj.editSettings.allowDeleting) {\n return;\n }\n if (!data) {\n if (!gObj.getSelectedRecords().length && isNullOrUndefined(gObj.commandDelIndex)) {\n this.showDialog('DeleteOperationAlert', this.alertDObj);\n return;\n }\n }\n if (gObj.editSettings.showDeleteConfirmDialog) {\n this.fieldname = fieldname;\n this.data = data;\n this.showDialog('ConfirmDelete', this.dialogObj);\n return;\n }\n this.editModule.deleteRecord(fieldname, data);\n };\n /**\n * Deletes a visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n Edit.prototype.deleteRow = function (tr) {\n this.deleteRowUid = tr.getAttribute('data-uid');\n var rowObj = this.parent.getRowObjectFromUID(this.deleteRowUid);\n if (!isNullOrUndefined(rowObj)) {\n this.deleteRecord(null, rowObj.data);\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n Edit.prototype.endEdit = function () {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.showConfirmDialog &&\n (isNullOrUndefined(this.formObj) || this.formObj.validate())) {\n this.parent.editModule.saveCell();\n this.parent.notify(events.editNextValCell, {});\n if (isNullOrUndefined(this.formObj) || this.formObj.validate()) {\n this.showDialog('BatchSaveConfirm', this.dialogObj);\n return;\n }\n }\n this.endEditing();\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n * @returns {void}\n */\n Edit.prototype.updateCell = function (rowIndex, field, value) {\n this.editModule.updateCell(rowIndex, field, value);\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n * @returns {void}\n */\n Edit.prototype.updateRow = function (index, data) {\n this.editModule.updateRow(index, data);\n };\n /**\n * Resets added, edited, and deleted records in the batch mode.\n *\n * @returns {void}\n */\n Edit.prototype.batchCancel = function () {\n this.closeEdit();\n };\n /**\n * Bulk saves added, edited, and deleted records in the batch mode.\n *\n * @returns {void}\n */\n Edit.prototype.batchSave = function () {\n this.endEdit();\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n *\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n * @returns {void}\n */\n Edit.prototype.editCell = function (index, field) {\n this.editModule.editCell(index, field);\n };\n /**\n * Checks the status of validation at the time of editing. If validation is passed, it returns true.\n *\n * @returns {boolean} returns whether the form is validated\n */\n Edit.prototype.editFormValidate = function () {\n var form1 = this.formObj ? this.formObj.validate() : true;\n var form2 = this.mFormObj ? this.mFormObj.validate() : true;\n var form3 = this.frFormObj ? this.frFormObj.validate() : true;\n return form1 && form2 && form3;\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} returns the Object\n */\n Edit.prototype.getBatchChanges = function () {\n return this.editModule.getBatchChanges ? this.editModule.getBatchChanges() : {};\n };\n /**\n * Gets the current value of the edited component.\n *\n * @returns {Object} returns the Object\n */\n Edit.prototype.getCurrentEditCellData = function () {\n var obj = this.getCurrentEditedData(this.formObj.element, {});\n return obj[Object.keys(obj)[0]];\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n */\n Edit.prototype.saveCell = function () {\n this.editModule.saveCell();\n };\n Edit.prototype.endEditing = function () {\n this.parent.element.classList.remove('e-editing');\n this.editModule.endEdit();\n this.refreshToolbar();\n };\n Edit.prototype.showDialog = function (content, obj) {\n obj.content = '
' + this.l10n.getConstant(content) + '
';\n obj.dataBind();\n obj.show();\n };\n Edit.prototype.getValueFromType = function (col, value) {\n var val = value;\n switch (col.type) {\n case 'number':\n val = !isNaN(parseFloat(value)) ? parseFloat(value) : null;\n break;\n case 'boolean':\n if (col.editType !== 'booleanedit') {\n val = value === this.l10n.getConstant('True') || value === true ? true : false;\n }\n break;\n case 'date':\n case 'datetime':\n if (col.editType !== 'datepickeredit' && col.editType !== 'datetimepickeredit'\n && value && value.length) {\n val = new Date(value);\n }\n else if (value === '') {\n val = null;\n }\n break;\n case 'dateonly':\n val = value && (value = new Date(value)) ?\n value.getFullYear() + '-' + padZero(value.getMonth() + 1) + '-' + padZero(value.getDate()) : null;\n break;\n }\n return val;\n };\n Edit.prototype.destroyToolTip = function () {\n var elements = [].slice.call(this.parent.element.getElementsByClassName('e-griderror'));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n remove(elem);\n }\n this.parent.getContent().firstElementChild.style.position = 'relative';\n if (this.parent.isFrozenGrid()) {\n if (this.parent.element.querySelector('.e-gridheader')) {\n this.parent.element.querySelector('.e-gridheader').style.position = '';\n }\n this.parent.element.querySelector('.e-gridcontent').style.position = '';\n }\n };\n Edit.prototype.createConfirmDlg = function () {\n this.dialogObj = this.dlgWidget([\n {\n click: this.dlgOk.bind(this),\n buttonModel: { content: this.l10n.getConstant('OKButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true }\n },\n {\n click: this.dlgCancel.bind(this),\n buttonModel: { cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.l10n.getConstant('CancelButton') }\n }\n ], 'EditConfirm');\n };\n Edit.prototype.createAlertDlg = function () {\n this.alertDObj = this.dlgWidget([\n {\n click: this.alertClick.bind(this),\n buttonModel: { content: this.l10n.getConstant('OKButton'),\n cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n isPrimary: true }\n }\n ], 'EditAlert');\n };\n Edit.prototype.alertClick = function () {\n this.alertDObj.hide();\n };\n Edit.prototype.dlgWidget = function (btnOptions, name) {\n var div = this.parent.createElement('div', { id: this.parent.element.id + name });\n this.parent.element.appendChild(div);\n var options = {\n showCloseIcon: false,\n isModal: true,\n visible: false,\n closeOnEscape: true,\n target: this.parent.element,\n width: '320px',\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n };\n options.buttons = btnOptions;\n var obj = new Dialog(options);\n var isStringTemplate = 'isStringTemplate';\n obj[\"\" + isStringTemplate] = true;\n obj.appendTo(div);\n return obj;\n };\n Edit.prototype.dlgCancel = function () {\n if (this.parent.pagerModule) {\n this.parent.pagerModule.isForceCancel = false;\n }\n this.parent.focusModule.clearIndicator();\n this.parent.focusModule.restoreFocus();\n this.dialogObj.hide();\n this.parent.notify('cancelcnfrmDlg', {});\n };\n Edit.prototype.dlgOk = function () {\n switch (this.dialogObj.element.querySelector('.e-dlg-content').firstElementChild.innerText) {\n case this.l10n.getConstant('ConfirmDelete'):\n this.editModule.deleteRecord(this.fieldname, this.data);\n break;\n case this.l10n.getConstant('CancelEdit'):\n this.editModule.closeEdit();\n break;\n case this.l10n.getConstant('BatchSaveConfirm'):\n this.endEditing();\n break;\n case this.l10n.getConstant('BatchSaveLostChanges'):\n if (this.parent.editSettings.mode === 'Batch') {\n this.editModule.addCancelWhilePaging();\n }\n if (this.parent.pagerModule) {\n this.parent.pagerModule.isForceCancel = false;\n }\n this.executeAction();\n break;\n }\n this.dlgCancel();\n };\n Edit.prototype.destroyEditComponents = function () {\n if (this.parent.isEdit) {\n this.destroyWidgets();\n this.destroyForm();\n }\n this.destroy();\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.eventDetails = [{ event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.initialEnd, handler: this.initialEnd },\n { event: events.keyPressed, handler: this.keyPressHandler },\n { event: events.autoCol, handler: this.updateColTypeObj },\n { event: events.tooltipDestroy, handler: this.destroyToolTip },\n { event: events.preventBatch, handler: this.preventBatch },\n { event: events.destroyForm, handler: this.destroyForm },\n { event: events.destroy, handler: this.destroyEditComponents }];\n addRemoveEventListener(this.parent, this.eventDetails, true, this);\n this.actionBeginFunction = this.onActionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.eventDetails, false);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n };\n Edit.prototype.actionComplete = function (e) {\n var actions = ['add', 'beginEdit', 'save', 'delete', 'cancel', 'filterAfterOpen', 'filterchoicerequest'];\n if (actions.indexOf(e.requestType) < 0) {\n this.parent.isEdit = false;\n }\n if (e.requestType === 'batchsave') {\n this.parent.focusModule.restoreFocus();\n }\n this.refreshToolbar();\n };\n /**\n * @param {Element} form - specifies the element\n * @param {Object} editedData - specifies the edited data\n * @returns {Object} returns the object\n * @hidden\n */\n Edit.prototype.getCurrentEditedData = function (form, editedData) {\n var gObj = this.parent;\n if (gObj.editSettings.template) {\n var elements = [].slice.call(form.elements);\n for (var k = 0; k < elements.length; k++) {\n if (((elements[parseInt(k.toString(), 10)].hasAttribute('name') && (elements[parseInt(k.toString(), 10)].className !== 'e-multi-hidden')) ||\n elements[parseInt(k.toString(), 10)].classList.contains('e-multiselect')) && !(elements[parseInt(k.toString(), 10)].type === 'hidden' &&\n (parentsUntil(elements[parseInt(k.toString(), 10)], 'e-switch-wrapper') || parentsUntil(elements[parseInt(k.toString(), 10)], 'e-checkbox-wrapper')))) {\n var field = (elements[parseInt(k.toString(), 10)].hasAttribute('name')) ? setComplexFieldID(elements[parseInt(k.toString(), 10)].getAttribute('name')) :\n setComplexFieldID(elements[parseInt(k.toString(), 10)].getAttribute('id'));\n var column = gObj.getColumnByField(field) || { field: field, type: elements[parseInt(k.toString(), 10)].getAttribute('type') };\n var value = void 0;\n if (column.type === 'checkbox' || column.type === 'boolean') {\n value = elements[parseInt(k.toString(), 10)].checked;\n }\n else if (elements[parseInt(k.toString(), 10)].value) {\n value = elements[parseInt(k.toString(), 10)].value;\n if (elements[parseInt(k.toString(), 10)].ej2_instances &&\n elements[parseInt(k.toString(), 10)].ej2_instances.length &&\n !isNullOrUndefined(elements[parseInt(k.toString(), 10)].ej2_instances[0].value)) {\n elements[parseInt(k.toString(), 10)].blur();\n value = elements[parseInt(k.toString(), 10)]\n .ej2_instances[0].value;\n }\n }\n else if (elements[parseInt(k.toString(), 10)].ej2_instances) {\n value = elements[parseInt(k.toString(), 10)]\n .ej2_instances[0].value;\n }\n if (column.edit && typeof column.edit.read === 'string') {\n value = getValue(column.edit.read, window)(elements[parseInt(k.toString(), 10)], value);\n }\n else if (column.edit && column.edit.read) {\n value = column.edit.read(elements[parseInt(k.toString(), 10)], value);\n }\n value = gObj.editModule.getValueFromType(column, value);\n if (elements[parseInt(k.toString(), 10)].type === 'radio') {\n if (elements[parseInt(k.toString(), 10)].checked) {\n DataUtil.setValue(column.field, value, editedData);\n }\n }\n else {\n if (typeof value === 'string') {\n this.parent.sanitize(value);\n }\n DataUtil.setValue(column.field, value, editedData);\n }\n }\n }\n return editedData;\n }\n var col = gObj.columnModel.filter(function (col) { return col.editTemplate; });\n for (var j = 0; j < col.length; j++) {\n if (form[getComplexFieldID(col[parseInt(j.toString(), 10)].field)]) {\n var inputElements = [].slice.call(form[getComplexFieldID(col[parseInt(j.toString(), 10)].field)]);\n inputElements = inputElements.length ? inputElements : [form[getComplexFieldID(col[parseInt(j.toString(), 10)].field)]];\n var temp = inputElements.filter(function (e) {\n return !isNullOrUndefined((e.ej2_instances));\n });\n if (temp.length === 0) {\n temp = inputElements.filter(function (e) { return e.hasAttribute('name'); });\n }\n for (var k = 0; k < temp.length; k++) {\n var value = this.getValue(col[parseInt(j.toString(), 10)], temp[parseInt(k.toString(), 10)], editedData);\n if (col[parseInt(j.toString(), 10)].type === 'string') {\n value = this.parent.sanitize(value);\n }\n DataUtil.setValue(col[parseInt(j.toString(), 10)].field, value, editedData);\n }\n }\n }\n var inputs = [].slice.call(form.getElementsByClassName('e-field'));\n for (var i = 0, len = inputs.length; i < len; i++) {\n var col_1 = gObj.getColumnByUid(inputs[parseInt(i.toString(), 10)].getAttribute('e-mappinguid'));\n if (col_1 && col_1.field) {\n var value = this.getValue(col_1, inputs[parseInt(i.toString(), 10)], editedData);\n if (col_1.type === 'string') {\n value = this.parent.sanitize(value);\n }\n DataUtil.setValue(col_1.field, value, editedData);\n }\n }\n return editedData;\n };\n Edit.prototype.getValue = function (col, input, editedData) {\n var value = input.ej2_instances ?\n input.ej2_instances[0].value : input.value;\n var gObj = this.parent;\n var temp = col.edit.read;\n if (col.type === 'checkbox' || col.type === 'boolean') {\n value = input.checked;\n }\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n value = gObj.editModule.getValueFromType(col, (temp)(input, value));\n }\n else {\n value = gObj.editModule.getValueFromType(col, col.edit.read(input, value));\n }\n if (isNullOrUndefined(editedData[col.field]) && value === '') {\n value = editedData[col.field];\n }\n return value;\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Edit.prototype.onActionBegin = function (e) {\n if (e.requestType === 'columnstate' && this.parent.isEdit\n && this.parent.editSettings.mode !== 'Batch') {\n this.closeEdit();\n }\n else {\n var editRow = this.parent.element.querySelector('.' + literals.editedRow);\n var addRow = this.parent.element.querySelector('.' + literals.addedRow);\n if (editRow && this.parent.frozenRows && e.requestType === 'virtualscroll'\n && parseInt(parentsUntil(editRow, literals.row).getAttribute(literals.dataRowIndex), 10) < this.parent.frozenRows) {\n return;\n }\n var restrictedRequestTypes = ['filterAfterOpen', 'filterBeforeOpen', 'filterchoicerequest', 'filterSearchBegin', 'save', 'infiniteScroll', 'virtualscroll'];\n var isRestrict = restrictedRequestTypes.indexOf(e.requestType) === -1;\n var isDestroyVirtualForm = this.parent.enableVirtualization && this.formObj\n && !this.formObj.isDestroyed && (editRow || addRow || e.requestType === 'cancel') && isRestrict;\n if ((!this.parent.enableVirtualization && this.parent.editSettings.mode !== 'Batch' && this.formObj && !this.formObj.isDestroyed\n && isRestrict && !e.cancel) || isDestroyVirtualForm) {\n this.destroyWidgets();\n this.destroyForm();\n }\n }\n };\n /**\n * @param {Column[]} cols - specfies the column\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroyWidgets = function (cols) {\n var gObj = this.parent;\n if (gObj.editSettings.template) {\n this.parent.destroyTemplate(['editSettingsTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n cols = cols ? cols : this.parent.getCurrentVisibleColumns(this.parent.enableColumnVirtualization);\n if (cols.some(function (column) { return !isNullOrUndefined(column.editTemplate); })) {\n this.parent.destroyTemplate(['editTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var col = cols_1[_i];\n var temp = col.edit.destroy;\n if (col.edit.destroy) {\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n temp();\n }\n else {\n col.edit.destroy();\n }\n }\n }\n var elements = [].slice.call(this.formObj.element.elements);\n for (var i = 0; i < elements.length; i++) {\n if (elements[parseInt(i.toString(), 10)].hasAttribute('name')) {\n if (elements[parseInt(i.toString(), 10)].ej2_instances &&\n elements[parseInt(i.toString(), 10)].ej2_instances.length &&\n !elements[parseInt(i.toString(), 10)].ej2_instances[0].isDestroyed) {\n elements[parseInt(i.toString(), 10)].ej2_instances[0].destroy();\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroyForm = function () {\n this.destroyToolTip();\n var formObjects = [this.formObj, this.mFormObj, this.frFormObj, this.virtualFormObj];\n for (var i = 0; i < formObjects.length; i++) {\n if (formObjects[parseInt(i.toString(), 10)] && formObjects[parseInt(i.toString(), 10)].element\n && !formObjects[parseInt(i.toString(), 10)].isDestroyed) {\n formObjects[parseInt(i.toString(), 10)].destroy();\n }\n }\n this.destroyToolTip();\n };\n /**\n * To destroy the editing.\n *\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.' + literals.gridHeader) &&\n gridElement.querySelector('.' + literals.gridContent) ? true : false;\n if (hasGridChild) {\n this.destroyForm();\n }\n this.removeEventListener();\n var elem = this.dialogObj.element;\n if (elem.childElementCount > 0) {\n this.dialogObj.destroy();\n remove(elem);\n }\n elem = this.alertDObj.element;\n if (elem.childElementCount > 0) {\n this.alertDObj.destroy();\n remove(elem);\n }\n if (!hasGridChild) {\n return;\n }\n if (this.editModule) {\n this.editModule.destroy();\n }\n };\n Edit.prototype.keyPressHandler = function (e) {\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (isMacLike && e.metaKey && e.action === 'ctrlEnter') {\n e.action = 'insert';\n }\n switch (e.action) {\n case 'insert':\n this.addRecord();\n break;\n case 'delete':\n if ((e.target.tagName !== 'INPUT' || e.target.classList.contains('e-checkselect'))\n && !document.querySelector('.e-popup-open.e-edit-dialog')) {\n this.deleteRecord();\n }\n break;\n case 'f2':\n this.startEdit();\n break;\n case 'enter':\n if (!parentsUntil(e.target, 'e-unboundcelldiv') && this.parent.editSettings.mode !== 'Batch' &&\n (parentsUntil(e.target, literals.gridContent) || (this.parent.frozenRows\n && parentsUntil(e.target, literals.headerContent)))\n && !document.getElementsByClassName('e-popup-open').length) {\n e.preventDefault();\n this.endEdit();\n }\n break;\n case 'escape':\n if (this.parent.isEdit && !this.editCellDialogClose) {\n if (this.parent.editSettings.mode === 'Batch') {\n this.editModule.escapeCellEdit();\n }\n else {\n this.curretRowFocus(e);\n }\n }\n if (this.editCellDialogClose) {\n this.editCellDialogClose = false;\n }\n break;\n case 'tab':\n case 'shiftTab':\n this.curretRowFocus(e);\n break;\n }\n };\n Edit.prototype.curretRowFocus = function (e) {\n if (this.parent.isEdit && this.parent.editSettings.mode !== 'Batch') {\n var editedRow = parentsUntil(e.target, 'e-editedrow') || parentsUntil(e.target, 'e-addedrow');\n if (editedRow) {\n var focusableEditCells = [].slice.call(editedRow.querySelectorAll('.e-input:not(.e-disabled)'));\n var commandColCell = [].slice.call(editedRow.querySelectorAll('.e-unboundcell'));\n if (commandColCell) {\n for (var i = 0; i < commandColCell.length; i++) {\n focusableEditCells = focusableEditCells.concat([].slice\n .call(commandColCell[parseInt(i.toString(), 10)].querySelectorAll('.e-btn:not(.e-hide)')));\n }\n }\n var rowCell = parentsUntil(e.target, 'e-rowcell');\n if ((rowCell === parentsUntil(focusableEditCells[focusableEditCells.length - 1], 'e-rowcell')\n && e.action === 'tab' && !rowCell.classList.contains('e-unboundcell'))\n || (rowCell === parentsUntil(focusableEditCells[0], 'e-rowcell') && e.action === 'shiftTab')\n || e.action === 'escape') {\n var uid = editedRow.getAttribute('data-uid');\n var rows = this.parent.getRows();\n var rowIndex = rows.map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n if (this.parent.frozenRows && parentsUntil(editedRow, 'e-content')) {\n rowIndex = rowIndex - this.parent.frozenRows;\n }\n if (editedRow.classList.contains('e-addedrow')) {\n rowIndex = 0;\n }\n if (e.action === 'escape') {\n this.closeEdit();\n }\n else {\n this.endEdit();\n }\n if (this.parent.focusModule.active) {\n this.parent.focusModule.active.matrix.current = [rowIndex, 0];\n }\n }\n }\n }\n };\n Edit.prototype.preventBatch = function (args) {\n this.preventObj = args;\n this.showDialog('BatchSaveLostChanges', this.dialogObj);\n };\n Edit.prototype.executeAction = function () {\n this.preventObj.handler.call(this.preventObj.instance, this.preventObj.arg1, this.preventObj.arg2, this.preventObj.arg3, this.preventObj.arg4, this.preventObj.arg5, this.preventObj.arg6, this.preventObj.arg7, this.preventObj.arg8);\n };\n /**\n * @param {Column[]} cols - specifies the column\n * @param {Object} newRule - specifies the new rule object\n * @returns {void}\n * @hidden\n */\n Edit.prototype.applyFormValidation = function (cols, newRule) {\n var gObj = this.parent;\n var idx = 0;\n var form = this.parent.editSettings.mode !== 'Dialog' ?\n gObj.element.getElementsByClassName('e-gridform')[parseInt(idx.toString(), 10)] :\n select('#' + gObj.element.id + '_dialogEdit_wrapper .e-gridform', document);\n var index = 1;\n var rules = {};\n var mRules = {};\n var frRules = {};\n cols = cols ? cols : gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (!cols[parseInt(i.toString(), 10)].visible && (gObj.editSettings.mode !== 'Dialog' || (gObj.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) === -1\n && gObj.editSettings.mode === 'Dialog'))) {\n continue;\n }\n if (cols[parseInt(i.toString(), 10)].validationRules && isNullOrUndefined(newRule)) {\n setValidationRuels(cols[parseInt(i.toString(), 10)], index, rules, mRules, frRules, cols.length);\n }\n }\n rules = extend(rules, mRules, frRules);\n this.parent.editModule.formObj = this.createFormObj(form, newRule ? newRule : rules);\n };\n /**\n * @param {HTMLFormElement} form - Defined Form element\n * @param {Object} rules - Defines form rules\n * @returns {FormValidator} Returns formvalidator instance\n * @hidden\n */\n Edit.prototype.createFormObj = function (form, rules) {\n var _this = this;\n return new FormValidator(form, {\n rules: rules,\n locale: this.parent.locale,\n validationComplete: function (args) {\n _this.validationComplete(args);\n },\n customPlacement: function (inputElement, error) {\n var uid = inputElement.getAttribute('e-mappinguid');\n var args = {\n column: _this.parent.getColumnByUid(uid),\n error: error,\n inputElement: inputElement,\n value: inputElement.value\n };\n if (!(event && event['relatedTarget'] && event['relatedTarget'].classList.contains('e-cancelbutton'))) {\n _this.valErrorPlacement(inputElement, error);\n }\n _this.parent.notify(events.valCustomPlacement, args);\n }\n });\n };\n Edit.prototype.valErrorPlacement = function (inputElement, error) {\n if (this.parent.isEdit) {\n var id = error.getAttribute('for');\n var elem = this.getElemTable(inputElement).querySelector('#' + getParsedFieldID(id) + '_Error');\n if (!elem) {\n this.createTooltip(inputElement, error, id, '');\n }\n else {\n elem.querySelector('.e-tip-content').innerHTML = error.outerHTML;\n }\n }\n };\n Edit.prototype.getElemTable = function (inputElement) {\n var isFHdr;\n var gObj = this.parent;\n var table;\n if (gObj.editSettings.mode !== 'Dialog') {\n isFHdr = (gObj.frozenRows && gObj.frozenRows\n > (parseInt(closest(inputElement, '.' + literals.row).getAttribute(literals.dataRowIndex), 10) || 0));\n var field = inputElement.name;\n table = this.parent.isFrozenGrid() ? gObj.element : isFHdr ? gObj.getHeaderTable() : gObj.getContentTable();\n }\n else {\n table = select('#' + gObj.element.id + '_dialogEdit_wrapper', document);\n }\n return table;\n };\n Edit.prototype.resetElemPosition = function (elem, args) {\n var td = parentsUntil(args.element, literals.rowCell);\n if (td) {\n var tdRight = td.getBoundingClientRect().right;\n var elemRight = elem.getBoundingClientRect().right;\n if (elemRight > tdRight) {\n var offSet = elemRight - tdRight;\n elem.style.left = (elem.offsetLeft - offSet) + 'px';\n }\n }\n };\n Edit.prototype.validationComplete = function (args) {\n if (this.parent.isEdit) {\n var elem = this.getElemTable(args.element).querySelector('#' + getParsedFieldID(args.inputName) + '_Error');\n if (elem) {\n if (args.status === 'failure') {\n elem.style.display = '';\n this.resetElemPosition(elem, args);\n }\n else {\n elem.style.display = 'none';\n }\n }\n }\n };\n Edit.prototype.createTooltip = function (element, error, name, display) {\n var formObj = this.formObj.element;\n var customForm = parentsUntil(element, 'e-virtual-validation');\n if (customForm) {\n formObj = this.virtualFormObj.element;\n }\n var gcontent = this.parent.getContent().firstElementChild;\n var isScroll = gcontent.scrollHeight > gcontent.clientHeight || gcontent.scrollWidth > gcontent.clientWidth;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n var td = closest(element, '.' + literals.rowCell);\n var row = closest(element, '.' + literals.row);\n var isFHdr;\n var isFHdrLastRow = false;\n var validationForBottomRowPos;\n var isBatchModeLastRow = false;\n var viewPortRowCount = Math.round(this.parent.getContent().clientHeight / this.parent.getRowHeight()) - 1;\n var rows = [].slice.call(this.parent.getContent().getElementsByClassName(literals.row));\n if (this.parent.editSettings.mode === 'Batch') {\n rows = [].slice.call(this.parent.getContent().querySelectorAll('.e-row:not(.e-hiddenrow)'));\n if (viewPortRowCount >= 1 && rows.length >= viewPortRowCount\n && rows[rows.length - 1].getAttribute(literals.dataRowIndex) === row.getAttribute(literals.dataRowIndex)) {\n isBatchModeLastRow = true;\n }\n }\n if (isInline) {\n if (this.parent.frozenRows) {\n var fHearderRows = [].slice.call(this.parent.getHeaderTable().querySelector(literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n isFHdr = fHearderRows.length > (parseInt(row.getAttribute(literals.dataRowIndex), 10) || 0);\n isFHdrLastRow = isFHdr && parseInt(row.getAttribute(literals.dataRowIndex), 10) === fHearderRows.length - 1;\n var insertRow = [].slice.call(this.parent.getHeaderTable().querySelector(literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n if (insertRow.length === 1 && (insertRow[0].classList.contains('e-addedrow') || insertRow[0].classList.contains('e-insertedrow'))) {\n isFHdrLastRow = true;\n }\n }\n if (isFHdrLastRow || (viewPortRowCount >= 1 && rows.length >= viewPortRowCount\n && ((this.parent.editSettings.newRowPosition === 'Bottom' && (this.editModule.args\n && this.editModule.args.requestType === 'add')) || (td.classList.contains('e-lastrowcell')\n && !row.classList.contains(literals.addedRow)))) || isBatchModeLastRow) {\n validationForBottomRowPos = true;\n }\n }\n var table = isInline ?\n (isFHdr ? this.parent.getHeaderTable() : this.parent.getContentTable()) :\n select('#' + this.parent.element.id + '_dialogEdit_wrapper .e-dlg-content', document);\n var client = table.getBoundingClientRect();\n var left = isInline ?\n this.parent.element.getBoundingClientRect().left : client.left;\n var input = closest(element, 'td');\n var inputClient = input ? input.getBoundingClientRect() : element.parentElement.getBoundingClientRect();\n var div = this.parent.createElement('div', {\n className: 'e-tooltip-wrap e-lib e-control e-popup e-griderror',\n id: name + '_Error',\n styles: 'display:' + display + ';top:' +\n ((isFHdr ? inputClient.top + inputClient.height : inputClient.bottom - client.top) + table.scrollTop + 9) + 'px;left:' +\n (inputClient.left - left + table.scrollLeft + inputClient.width / 2) + 'px;' +\n 'max-width:' + inputClient.width + 'px;text-align:center;'\n });\n if (this.parent.cssClass) {\n div.classList.add(this.parent.cssClass);\n }\n if (isInline && client.left < left) {\n div.style.left = parseInt(div.style.left, 10) - client.left + left + 'px';\n }\n var content = this.parent.createElement('div', { className: 'e-tip-content' });\n content.appendChild(error);\n var arrow;\n if (validationForBottomRowPos) {\n arrow = this.parent.createElement('div', { className: 'e-arrow-tip e-tip-bottom' });\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-outer e-tip-bottom' }));\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-inner e-tip-bottom' }));\n }\n else {\n arrow = this.parent.createElement('div', { className: 'e-arrow-tip e-tip-top' });\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-outer e-tip-top' }));\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-inner e-tip-top' }));\n }\n div.appendChild(content);\n div.appendChild(arrow);\n if (!customForm && (this.parent.frozenRows) && this.parent.editSettings.mode !== 'Dialog') {\n var getEditCell = this.parent.editSettings.mode === 'Normal' ?\n closest(element, '.e-editcell') : closest(element, '.' + literals.table);\n getEditCell.style.position = 'relative';\n div.style.position = 'absolute';\n if (this.parent.editSettings.mode === 'Batch' ||\n (closest(element, '.' + literals.frozenContent) || closest(element, '.' + literals.frozenHeader))\n || (this.parent.frozenRows)) {\n if (this.parent.isFrozenGrid()) {\n if (td.classList.contains('e-unfreeze')) {\n addClass([div], 'e-unfreeze');\n formObj.appendChild(div);\n }\n else {\n var elem = closest(td, '.e-gridheader') ? this.parent.element.querySelector('.e-gridheader') :\n rows.length === 1 ? this.parent.element.querySelector('.e-gridcontent').querySelector('.e-content') :\n this.parent.element.querySelector('.e-gridcontent');\n elem.appendChild(div);\n elem.style.position = 'relative';\n }\n }\n else {\n formObj.appendChild(div);\n }\n }\n else {\n this.mFormObj.element.appendChild(div);\n }\n }\n else {\n if (customForm) {\n this.virtualFormObj.element.appendChild(div);\n }\n else {\n if (this.parent.isFrozenGrid()) {\n if (td.classList.contains('e-unfreeze')) {\n addClass([div], 'e-unfreeze');\n this.formObj.element.appendChild(div);\n }\n else {\n var elem = closest(td, '.e-gridheader') ? this.parent.element.querySelector('.e-gridheader') :\n rows.length === 1 ? this.parent.element.querySelector('.e-gridcontent').querySelector('.e-content') :\n this.parent.element.querySelector('.e-gridcontent');\n elem.appendChild(div);\n elem.style.position = 'relative';\n }\n }\n else {\n this.formObj.element.appendChild(div);\n }\n }\n }\n if (!isNullOrUndefined(td)) {\n if (td.classList.contains('e-fixedfreeze')) {\n div.classList.add('e-fixederror');\n }\n else if (td.classList.contains('e-leftfreeze') || td.classList.contains('e-rightfreeze')) {\n div.classList.add('e-freezeerror');\n }\n }\n if (!validationForBottomRowPos && isInline && gcontent.getBoundingClientRect().bottom < inputClient.bottom + inputClient.height) {\n var contentDiv = this.parent.getContent().querySelector('.e-content');\n if (this.parent.currentViewData.length === 0 && contentDiv.scrollTop === 0) {\n contentDiv.scrollTop = div.offsetHeight + arrow.scrollHeight;\n }\n else {\n gcontent.scrollTop = gcontent.scrollTop + div.offsetHeight + arrow.scrollHeight;\n }\n }\n var lineHeight = parseInt(document.defaultView.getComputedStyle(div, null).getPropertyValue('font-size'), 10);\n if (div.getBoundingClientRect().width < inputClient.width &&\n div.querySelector('label').getBoundingClientRect().height / (lineHeight * 1.2) >= 2) {\n div.style.width = div.style.maxWidth;\n }\n if (this.parent.frozenRows && this.parent.editSettings.mode !== 'Dialog') {\n div.style.left = input.offsetLeft + (input.offsetWidth / 2 - div.offsetWidth / 2) + 'px';\n }\n else {\n div.style.left = (parseInt(div.style.left, 10) - div.offsetWidth / 2) + 'px';\n }\n if (isInline && !isScroll && !this.parent.allowPaging || this.parent.frozenRows) {\n // gcontent.style.position = 'static';\n var pos = calculateRelativeBasedPosition(input, div);\n div.style.top = pos.top + inputClient.height + 9 + 'px';\n }\n if (validationForBottomRowPos) {\n if (isScroll && this.parent.height !== 'auto' && !this.parent.frozenRows\n && !this.parent.enableVirtualization && !(div.classList.contains('e-freezeerror') && div.classList.contains('e-fixederror'))) {\n var scrollWidth = gcontent.scrollWidth > gcontent.offsetWidth ? getScrollBarWidth() : 0;\n var gHeight = this.parent.height.toString().indexOf('%') === -1 ?\n parseInt(this.parent.height, 10) : gcontent.offsetHeight;\n div.style.bottom = (gHeight - gcontent.querySelector('table').offsetHeight\n - scrollWidth) + inputClient.height + 9 + 'px';\n }\n else {\n div.style.bottom = inputClient.height + 9 + 'px';\n }\n if (rows.length < viewPortRowCount && this.parent.editSettings.newRowPosition === 'Bottom' && (this.editModule.args\n && this.editModule.args.requestType === 'add')) {\n var rowsCount = this.parent.frozenRows ? this.parent.frozenRows + (rows.length - 1) : rows.length - 1;\n var rowsHeight = rowsCount * this.parent.getRowHeight();\n var position = this.parent.getContent().clientHeight - rowsHeight;\n div.style.bottom = position + 9 + 'px';\n }\n div.style.top = null;\n }\n };\n /**\n * @param {Column} col - specfies the column\n * @returns {boolean} returns the whether column is grouped\n * @hidden\n */\n Edit.prototype.checkColumnIsGrouped = function (col) {\n return !col.visible && !(this.parent.groupSettings.columns.indexOf(col.field) > -1);\n };\n /**\n * @param {object} editors -specfies the editors\n * @returns {void}\n * @hidden\n */\n Edit.AddEditors = function (editors) {\n Edit.editCellType = extend(Edit.editCellType, editors);\n };\n Edit.editCellType = {\n 'dropdownedit': DropDownEditCell, 'numericedit': NumericEditCell,\n 'datepickeredit': DatePickerEditCell, 'datetimepickeredit': DatePickerEditCell,\n 'booleanedit': BooleanEditCell, 'defaultedit': DefaultEditCell,\n 'templateedit': TemplateEditCell\n };\n return Edit;\n}());\nexport { Edit };\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { EventHandler, isNullOrUndefined, remove, Browser } from '@syncfusion/ej2-base';\nimport { parentsUntil, addBiggerDialog, addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { ResponsiveDialogAction } from '../base/enum';\n/**\n *\n * The `ResponsiveDialogRenderer` module is used to render the responsive dialogs.\n */\nvar ResponsiveDialogRenderer = /** @class */ (function () {\n function ResponsiveDialogRenderer(parent, serviceLocator) {\n this.sortedCols = [];\n this.sortPredicate = [];\n /** @hidden */\n this.isCustomDialog = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n ResponsiveDialogRenderer.prototype.addEventListener = function () {\n this.evtHandlers = [{ event: events.filterDialogClose, handler: this.closeCustomDialog },\n { event: events.refreshCustomFilterOkBtn, handler: this.refreshCustomFilterOkBtn },\n { event: events.renderResponsiveCmenu, handler: this.renderResponsiveContextMenu },\n { event: events.filterCmenuSelect, handler: this.renderCustomFilterDiv },\n { event: events.customFilterClose, handler: this.customExFilterClose },\n { event: events.refreshCustomFilterClearBtn, handler: this.refreshCustomFilterClearBtn }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.onActionCompleteFn = this.editComplate.bind(this);\n this.parent.addEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n ResponsiveDialogRenderer.prototype.customExFilterClose = function () {\n this.isCustomDlgRender = false;\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDiv = function () {\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var title = header.querySelector('.e-dlg-custom-header');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n this.isCustomDlgRender = true;\n this.parent.filterModule.filterModule.closeDialog();\n this.saveBtn.element.style.display = '';\n this.refreshCustomFilterOkBtn({ disabled: false });\n this.backBtn.element.style.display = 'none';\n closeBtn.style.display = '';\n title.innerHTML = this.parent.localeObj.getConstant('CustomFilter');\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n this.customExcelFilterParent = this.parent.createElement('div', { className: 'e-xl-customfilterdiv e-default-filter' });\n content.appendChild(this.customExcelFilterParent);\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContextMenu = function (args) {\n if (this.action === ResponsiveDialogAction.isFilter) {\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n var text = header.querySelector('.e-dlg-custom-header');\n if (args.isOpen) {\n content.firstChild.style.display = 'none';\n content.appendChild(args.target);\n closeBtn.style.display = 'none';\n this.saveBtn.element.style.display = 'none';\n this.filterClearBtn.element.style.display = 'none';\n text.innerHTML = args.header;\n var backBtn = this.parent.createElement('button');\n var span = this.parent.createElement('span', { className: 'e-btn-icon e-resfilterback e-icons' });\n backBtn.appendChild(span);\n this.backBtn = new Button({\n cssClass: this.parent.cssClass ? 'e-res-back-btn' + ' ' + this.parent.cssClass : 'e-res-back-btn'\n });\n this.backBtn.appendTo(backBtn);\n text.parentElement.insertBefore(backBtn, text);\n }\n else if (this.backBtn && !this.isCustomDlgRender) {\n content.firstChild.style.display = '';\n remove(this.backBtn.element);\n closeBtn.style.display = '';\n this.saveBtn.element.style.display = '';\n if (this.isFiltered) {\n this.filterClearBtn.element.style.display = '';\n }\n text.innerHTML = this.getHeaderTitle({ action: ResponsiveDialogAction.isFilter }, args.col);\n }\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterClearBtn = function (args) {\n if (this.filterClearBtn) {\n this.isFiltered = args.isFiltered;\n this.filterClearBtn.element.style.display = args.isFiltered ? '' : 'none';\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterOkBtn = function (args) {\n if (this.saveBtn) {\n this.saveBtn.disabled = args.disabled;\n }\n if (this.parent.columnChooserModule && this.parent.columnChooserModule.responsiveDialogRenderer.saveBtn) {\n this.parent.columnChooserModule.responsiveDialogRenderer.saveBtn.disabled = args.disabled;\n }\n };\n ResponsiveDialogRenderer.prototype.columnMenuResponsiveContent = function (str, locale, disabled) {\n var cDiv = this.parent.createElement('div', { className: 'e-responsivecoldiv e-responsive' + str.toLowerCase() + 'div' + (disabled ? ' e-disabled' : '') });\n var span = this.parent.createElement('span', { className: 'e-icons e-res' + str.toLowerCase() + '-icon e-btn-icon' });\n var icon = this.parent.createElement('span', { innerHTML: locale, className: 'e-rescolumn-menu e-res-header-text' });\n cDiv.appendChild(span);\n cDiv.appendChild(icon);\n this.customColumnDiv.appendChild(cDiv);\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContent = function (col, column) {\n var _this = this;\n var gObj = this.parent;\n var isColumnChooser = this.action === ResponsiveDialogAction.isColumnChooser;\n if (col || isColumnChooser) {\n this.filterParent = this.parent.createElement('div', { className: (isColumnChooser ? 'e-maincolumnchooserdiv ' : '') + 'e-mainfilterdiv e-default-filter',\n id: (isColumnChooser ? 'columchooser' : col.uid) + '-main-filter' });\n return this.filterParent;\n }\n else {\n this.customColumnDiv = gObj.createElement('div', { className: 'columndiv columnmenudiv', styles: 'width: 100%' });\n if (this.parent.showColumnMenu && this.parent.rowRenderingMode === 'Horizontal' && this.action === ResponsiveDialogAction.isColMenu) {\n this.columnMenuResponsiveContent('AutoFitAll', gObj.localeObj.getConstant('AutoFitAll'));\n this.columnMenuResponsiveContent('AutoFit', gObj.localeObj.getConstant('AutoFit'));\n if (column.allowGrouping && gObj.allowGrouping) {\n this.columnMenuResponsiveContent('Group', gObj.localeObj.getConstant('Group'), gObj.groupSettings.columns.indexOf(column.field) >= 0);\n this.columnMenuResponsiveContent('UnGroup', gObj.localeObj.getConstant('Ungroup'), gObj.groupSettings.columns.indexOf(column.field) < 0);\n }\n if (column.allowSorting && gObj.allowSorting) {\n var direction = 'None';\n var sortColumns = this.parent.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (sortColumns[parseInt(i.toString(), 10)].field === column.field) {\n direction = sortColumns[parseInt(i.toString(), 10)].direction;\n break;\n }\n }\n this.columnMenuResponsiveContent('ascending', gObj.localeObj.getConstant('SortAscending'), direction === 'Ascending');\n this.columnMenuResponsiveContent('descending', gObj.localeObj.getConstant('SortDescending'), direction === 'Descending');\n }\n if (gObj.showColumnChooser) {\n this.columnMenuResponsiveContent('Column', gObj.localeObj.getConstant('Columnchooser'));\n }\n if (column.allowFiltering && gObj.allowFiltering) {\n this.columnMenuResponsiveContent('Filter', gObj.localeObj.getConstant('FilterMenu'));\n }\n }\n else {\n var cols = gObj.getColumns();\n var sortBtnParent = gObj.createElement('div', { className: 'e-ressortbutton-parent' });\n var filteredCols = [];\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter) {\n for (var i = 0; i < gObj.filterSettings.columns.length; i++) {\n filteredCols.push(gObj.filterSettings.columns[parseInt(i.toString(), 10)].field);\n }\n }\n for (var i = 0; i < cols.length; i++) {\n if (!cols[parseInt(i.toString(), 10)].visible || (!cols[parseInt(i.toString(), 10)].allowSorting && isSort)\n || (!cols[parseInt(i.toString(), 10)].allowFiltering && isFilter)) {\n continue;\n }\n var cDiv = gObj.createElement('div', { className: 'e-responsivecoldiv' });\n cDiv.setAttribute('data-e-mappingname', cols[parseInt(i.toString(), 10)].field);\n cDiv.setAttribute('data-e-mappinguid', cols[parseInt(i.toString(), 10)].uid);\n var span = gObj.createElement('span', { innerHTML: cols[parseInt(i.toString(), 10)].headerText, className: 'e-res-header-text' });\n cDiv.appendChild(span);\n this.customColumnDiv.appendChild(cDiv);\n if (isSort) {\n var fields = this.getSortedFieldsAndDirections('field');\n var index = fields.indexOf(cols[parseInt(i.toString(), 10)].field);\n var button = gObj.createElement('button', { id: gObj.element.id + cols[parseInt(i.toString(), 10)].field + 'sortbutton' });\n var clone = sortBtnParent.cloneNode();\n clone.appendChild(button);\n cDiv.appendChild(clone);\n var btnObj = new Button({\n cssClass: this.parent.cssClass ? 'e-ressortbutton' + ' ' + this.parent.cssClass : 'e-ressortbutton'\n });\n btnObj.appendTo(button);\n var buttonInnerText = void 0;\n if ((!isNullOrUndefined(this.parent.sortSettings.columns[parseInt(index.toString(), 10)]))) {\n buttonInnerText = (this.parent.sortSettings.columns[parseInt(index.toString(), 10)].direction === 'Ascending') ?\n this.parent.localeObj.getConstant('AscendingText') : this.parent.localeObj.getConstant('DescendingText');\n }\n button.innerHTML = index > -1 ? buttonInnerText : this.parent.localeObj.getConstant('NoneText');\n button.onclick = function (e) {\n _this.sortButtonClickHandler(e.target);\n };\n }\n if (isFilter && filteredCols.indexOf(cols[parseInt(i.toString(), 10)].field) > -1) {\n var divIcon = gObj.createElement('div', { className: 'e-icons e-res-icon e-filtersetdiv' });\n var iconSpan = gObj.createElement('span', { className: 'e-icons e-res-icon e-filterset' });\n iconSpan.setAttribute('colType', cols[parseInt(i.toString(), 10)].type);\n divIcon.appendChild(iconSpan);\n cDiv.appendChild(divIcon);\n }\n }\n }\n EventHandler.add(this.customColumnDiv, Browser.isDevice ? 'touchend' : 'click', this.customFilterColumnClickHandler, this);\n return this.customColumnDiv;\n }\n };\n ResponsiveDialogRenderer.prototype.getSortedFieldsAndDirections = function (name) {\n var fields = [];\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n fields.push(this.parent.sortSettings.columns[parseInt(i.toString(), 10)][\"\" + name]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.sortButtonClickHandler = function (target) {\n if (target) {\n var columndiv = parentsUntil(target, 'e-responsivecoldiv');\n var field = columndiv.getAttribute('data-e-mappingname');\n if (!this.parent.allowMultiSorting) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n this.resetSortButtons(target);\n }\n var txt = target.textContent;\n var directionTxt = txt === this.parent.localeObj.getConstant('NoneText') ? this.parent.localeObj.getConstant('AscendingText')\n : txt === this.parent.localeObj.getConstant('AscendingText') ? this.parent.localeObj.getConstant('DescendingText')\n : this.parent.localeObj.getConstant('NoneText');\n var direction = directionTxt === this.parent.localeObj.getConstant('AscendingText') ? 'Ascending'\n : directionTxt === this.parent.localeObj.getConstant('DescendingText') ? 'Descending' : 'None';\n target.innerHTML = directionTxt;\n this.setSortedCols(field, direction);\n }\n };\n ResponsiveDialogRenderer.prototype.resetSortButtons = function (target) {\n var buttons = [].slice.call(this.customColumnDiv.getElementsByClassName('e-ressortbutton'));\n for (var i = 0; i < buttons.length; i++) {\n if (buttons[parseInt(i.toString(), 10)] !== target) {\n buttons[parseInt(i.toString(), 10)].innerHTML = 'None';\n }\n }\n };\n ResponsiveDialogRenderer.prototype.setSortedCols = function (field, direction) {\n var fields = this.getCurrentSortedFields();\n var index = fields.indexOf(field);\n if (this.parent.allowMultiSorting && index > -1) {\n this.sortedCols.splice(index, 1);\n this.sortPredicate.splice(index, 1);\n }\n this.isSortApplied = true;\n if (direction !== 'None') {\n this.sortedCols.push(field);\n this.sortPredicate.push({ field: field, direction: direction });\n }\n };\n ResponsiveDialogRenderer.prototype.getCurrentSortedFields = function () {\n var fields = [];\n for (var i = 0; i < this.sortedCols.length; i++) {\n fields.push(this.sortedCols[parseInt(i.toString(), 10)]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.customFilterColumnClickHandler = function (e) {\n var gObj = this.parent;\n var target = e.target;\n if (parentsUntil(target, 'columnmenudiv') && this.action === ResponsiveDialogAction.isColMenu && !parentsUntil(target, 'e-disabled')) {\n var column = this.menuCol ? this.menuCol : this.filteredCol;\n if (parentsUntil(target, 'e-responsiveautofitalldiv')) {\n gObj.autoFitColumns([]);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsiveautofitdiv')) {\n gObj.autoFitColumns(column.field);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsivegroupdiv')) {\n gObj.groupColumn(column.field);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsiveungroupdiv')) {\n gObj.ungroupColumn(column.field);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsiveascendingdiv')) {\n gObj.sortColumn(column.field, 'Ascending');\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsivedescendingdiv')) {\n gObj.sortColumn(column.field, 'Descending');\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsivecolumndiv')) {\n gObj.notify(events.renderResponsiveChangeAction, { action: 5 });\n gObj.showResponsiveCustomColumnChooser();\n }\n else if (parentsUntil(target, 'e-responsivefilterdiv')) {\n gObj.notify(events.renderResponsiveChangeAction, { action: 3 });\n this.isRowResponsive = true;\n this.isCustomDialog = false;\n if (gObj.filterModule) {\n gObj.filterModule.responsiveDialogRenderer.showResponsiveDialog(column);\n }\n }\n e.preventDefault();\n }\n if (this.action !== ResponsiveDialogAction.isFilter) {\n return;\n }\n if (gObj.filterSettings.type !== 'FilterBar') {\n if (target.classList.contains('e-responsivecoldiv') || target.parentElement.classList.contains('e-responsivecoldiv')) {\n var field = target.getAttribute('data-e-mappingname');\n if (!field) {\n field = target.parentElement.getAttribute('data-e-mappingname');\n }\n if (field) {\n var col = gObj.getColumnByField(field);\n this.isRowResponsive = true;\n this.showResponsiveDialog(col);\n }\n }\n else if (target.classList.contains('e-filterset') || target.parentElement.classList.contains('e-filtersetdiv')) {\n var colDiv = parentsUntil(target, 'e-responsivecoldiv');\n if (colDiv) {\n var field = colDiv.getAttribute('data-e-mappingname');\n var col = gObj.getColumnByField(field);\n if (col.filter.type === 'Menu' || (!col.filter.type && gObj.filterSettings.type === 'Menu')) {\n this.isDialogClose = true;\n }\n this.parent.filterModule.filterModule.clearCustomFilter(col);\n this.removeCustomDlgFilterEle(target);\n }\n }\n }\n };\n /**\n * Function to show the responsive dialog\n *\n * @param {Column} col - specifies the filter column\n * @param {Column} column - specifies the menu column\n * @returns {void}\n */\n ResponsiveDialogRenderer.prototype.showResponsiveDialog = function (col, column) {\n if ((this.isCustomDialog && this.action === ResponsiveDialogAction.isFilter && !this.isRowResponsive) ||\n (column && this.action === ResponsiveDialogAction.isColMenu)) {\n this.menuCol = column;\n this.renderCustomFilterDialog(null, column);\n }\n else {\n this.filteredCol = col;\n this.renderResponsiveDialog(col);\n if (this.parent.enableAdaptiveUI && col) {\n this.parent.filterModule.setFilterModel(col);\n this.parent.filterModule.filterModule.openDialog(this.parent.filterModule.createOptions(col, undefined));\n }\n if (this.action === ResponsiveDialogAction.isColumnChooser) {\n this.parent.notify(events.renderResponsiveColumnChooserDiv, { action: 'open' });\n }\n if (this.action === ResponsiveDialogAction.isSort) {\n var args = {\n cancel: false, dialogObj: this.customResponsiveDlg, requestType: 'beforeOpenAptiveSortDialog'\n };\n this.parent.trigger(events.beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n }\n this.customResponsiveDlg.show(true);\n this.customResponsiveDlg.element.style.maxHeight = '100%';\n this.setTopToChildDialog(this.customResponsiveDlg.element);\n }\n };\n ResponsiveDialogRenderer.prototype.setTopToChildDialog = function (dialogEle) {\n var child = dialogEle.querySelector('.e-dialog');\n if (child) {\n var top_1 = dialogEle.querySelector('.e-dlg-header-content').getBoundingClientRect().height;\n child.style.top = top_1 + 'px';\n }\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDialog = function (col, column) {\n var gObj = this.parent;\n var isColMenu = this.action === ResponsiveDialogAction.isColMenu;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var colMenu = isColMenu ? 'e-customcolumnmenudiv ' : '';\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + (isColMenu ? 'customcolumnmenu' : 'customfilter'),\n className: this.parent.cssClass ? colMenu +\n 'e-customfilterdiv e-responsive-dialog ' + this.parent.cssClass : colMenu + 'e-customfilterdiv e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customFilterDlg = this.getDialogOptions(col, true, null, column);\n var args = {\n cancel: false, dialogObj: this.customFilterDlg, requestType: 'beforeOpenAptiveFilterDialog'\n };\n this.parent.trigger(events.beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n this.customFilterDlg.appendTo(outerDiv);\n this.customFilterDlg.show(true);\n this.customFilterDlg.element.style.maxHeight = '100%';\n };\n ResponsiveDialogRenderer.prototype.getDialogOptions = function (col, isCustomFilter, id, column) {\n var options = new Dialog({\n isModal: true,\n showCloseIcon: true,\n closeOnEscape: false,\n locale: this.parent.locale,\n target: this.parent.adaptiveDlgTarget ? this.parent.adaptiveDlgTarget : document.body,\n visible: false,\n enableRtl: this.parent.enableRtl,\n content: this.renderResponsiveContent(col, column),\n open: this.dialogOpen.bind(this),\n created: this.dialogCreated.bind(this),\n close: this.beforeDialogClose.bind(this),\n width: '100%',\n height: '100%',\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n options[\"\" + isStringTemplate] = true;\n if (isCustomFilter) {\n options.header = this.renderResponsiveHeader(col, undefined, true);\n var colMenu = this.action === ResponsiveDialogAction.isColMenu ? 'e-customcolumnmenu ' : '';\n options.cssClass = colMenu + 'e-customfilter';\n }\n else {\n options.header = this.renderResponsiveHeader(col);\n options.cssClass = this.parent.rowRenderingMode === 'Vertical' && this.action === ResponsiveDialogAction.isFilter\n ? 'e-res' + id + ' e-row-responsive-filter' : 'e-res' + id;\n }\n return options;\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveDialog = function (col) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var id = this.action === ResponsiveDialogAction.isFilter ? 'filter' : 'sort';\n id = this.action === ResponsiveDialogAction.isColumnChooser ? 'columnchooser' : id;\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'responsive' + id,\n className: this.parent.cssClass ?\n 'e-res' + id + 'div e-responsive-dialog ' + this.parent.cssClass : 'e-res' + id + 'div e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customResponsiveDlg = this.getDialogOptions(col, false, id);\n this.customResponsiveDlg.appendTo(outerDiv);\n };\n ResponsiveDialogRenderer.prototype.dialogCreated = function () {\n addBiggerDialog(this.parent);\n };\n ResponsiveDialogRenderer.prototype.dialogOpen = function () {\n if (this.action === ResponsiveDialogAction.isSort && this.parent.allowMultiSorting) {\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n this.sortedCols.push(this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field);\n var sortField = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field;\n var sortDirection = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].direction;\n this.sortPredicate.push({ field: sortField, direction: sortDirection });\n }\n }\n };\n ResponsiveDialogRenderer.prototype.beforeDialogClose = function (args) {\n this.isDialogClose = args.element && !args.element.querySelector('.e-xl-customfilterdiv')\n && args.element.classList.contains('e-resfilterdiv');\n if (this.action === ResponsiveDialogAction.isFilter) {\n if (args.element.classList.contains('e-resfilterdiv')) {\n this.parent.filterModule.filterModule.closeResponsiveDialog(this.isCustomDlgRender);\n }\n else if (args.element.classList.contains('e-customfilterdiv')) {\n this.closeCustomFilter();\n }\n if (this.parent.rowRenderingMode === 'Horizontal' && this.parent.showColumnMenu) {\n this.parent.notify(events.renderResponsiveChangeAction, { action: 4 });\n var custom = document.querySelector('.e-resfilter');\n if (custom) {\n remove(custom);\n }\n }\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.closeCustomDialog();\n }\n else if (this.action === ResponsiveDialogAction.isColMenu) {\n this.closeCustomFilter();\n var custom = document.querySelector('.e-rescolummenu');\n if (custom) {\n remove(custom);\n }\n }\n else if (this.action === ResponsiveDialogAction.isColumnChooser) {\n this.parent.notify(events.renderResponsiveColumnChooserDiv, { action: 'clear' });\n var custom = document.querySelector('.e-rescolumnchooser');\n if (custom) {\n remove(custom);\n }\n if (this.parent.rowRenderingMode === 'Horizontal' && this.parent.showColumnMenu) {\n this.parent.notify(events.renderResponsiveChangeAction, { action: 4 });\n }\n this.isCustomDialog = false;\n this.isDialogClose = false;\n }\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n };\n ResponsiveDialogRenderer.prototype.sortColumn = function () {\n if (!this.isSortApplied) {\n this.closeCustomDialog();\n return;\n }\n if (this.sortPredicate.length) {\n this.parent.setProperties({ sortSettings: { columns: [] } }, true);\n }\n for (var i = 0; i < this.sortPredicate.length; i++) {\n this.parent.sortColumn(this.sortPredicate[parseInt(i.toString(), 10)].field, this.sortPredicate[parseInt(i.toString(), 10)].direction, this.parent.allowMultiSorting);\n }\n if (!this.sortPredicate.length) {\n this.parent.clearSorting();\n }\n this.closeCustomDialog();\n };\n ResponsiveDialogRenderer.prototype.getHeaderTitle = function (args, col) {\n var gObj = this.parent;\n var title;\n if (this.action === ResponsiveDialogAction.isEdit) {\n title = gObj.localeObj.getConstant('EditFormTitle') + args.primaryKeyValue[0];\n }\n else if (this.action === ResponsiveDialogAction.isAdd) {\n title = gObj.localeObj.getConstant('AddFormTitle');\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n title = col ? col.headerText || col.field : gObj.localeObj.getConstant('FilterButton');\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n title = gObj.localeObj.getConstant('Sort');\n }\n else if (this.action === ResponsiveDialogAction.isColMenu) {\n title = gObj.localeObj.getConstant('ColumnMenu');\n }\n else if (this.action === ResponsiveDialogAction.isColumnChooser) {\n title = gObj.localeObj.getConstant('ChooseColumns');\n }\n return title;\n };\n ResponsiveDialogRenderer.prototype.getDialogName = function (action) {\n var name;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n name = 'dialogEdit_wrapper_title';\n }\n else if (action === ResponsiveDialogAction.isFilter) {\n name = 'responsive_filter_dialog_wrapper';\n }\n else if (action === ResponsiveDialogAction.isColumnChooser) {\n name = 'responsive_column_chooser_dialog_wrapper';\n }\n return name;\n };\n ResponsiveDialogRenderer.prototype.getButtonText = function (action) {\n var text;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n text = 'Save';\n }\n else if (action === ResponsiveDialogAction.isFilter || this.action === ResponsiveDialogAction.isSort ||\n action === ResponsiveDialogAction.isColumnChooser || this.action === ResponsiveDialogAction.isColumnChooser) {\n text = 'OKButton';\n }\n return text;\n };\n /**\n * Function to render the responsive header\n *\n * @param {Column} col - specifies the column\n * @param {ResponsiveDialogArgs} args - specifies the responsive dialog arguments\n * @param {boolean} isCustomFilter - specifies whether it is custom filter or not\n * @returns {HTMLElement | string} returns the html element or string\n */\n ResponsiveDialogRenderer.prototype.renderResponsiveHeader = function (col, args, isCustomFilter) {\n var _this = this;\n var gObj = this.parent;\n gObj.on(events.enterKeyHandler, this.keyHandler, this);\n var id = gObj.element.id + this.getDialogName(this.action);\n var header = gObj.createElement('div', { className: 'e-res-custom-element' });\n var titleDiv = gObj.createElement('div', { className: 'e-dlg-custom-header', id: id });\n titleDiv.innerHTML = this.getHeaderTitle(args, col);\n header.appendChild(titleDiv);\n var saveBtn = gObj.createElement('button');\n if (!isCustomFilter) {\n this.saveBtn = new Button({\n cssClass: this.parent.cssClass ?\n 'e-primary e-flat e-res-apply-btn' + ' ' + this.parent.cssClass : 'e-primary e-flat e-res-apply-btn'\n });\n saveBtn.innerHTML = gObj.localeObj.getConstant(this.getButtonText(this.action));\n this.saveBtn.appendTo(saveBtn);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n saveBtn.onclick = function (e) {\n _this.dialogHdrBtnClickHandler();\n };\n }\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter || isSort) {\n var id_1 = isSort ? 'sort' : 'filter';\n var clearBtn = gObj.createElement('button');\n this.filterClearBtn = new Button({\n cssClass: this.parent.cssClass ? 'e-primary e-flat e-res-' + id_1 + '-clear-btn' + ' ' + this.parent.cssClass\n : 'e-primary e-flat e-res-' + id_1 + '-clear-btn'\n });\n if (isFilter) {\n var span = gObj.createElement('span', { className: 'e-btn-icon e-icon-filter-clear e-icons' });\n clearBtn.appendChild(span);\n }\n else {\n clearBtn.innerHTML = gObj.localeObj.getConstant('Clear');\n }\n header.appendChild(clearBtn);\n this.filterClearBtn.appendTo(clearBtn);\n clearBtn.onclick = function (e) {\n if ((parentsUntil(e.target, 'e-customfilter'))) {\n _this.parent.filterModule.clearFiltering();\n _this.removeCustomDlgFilterEle();\n }\n else {\n if (isFilter) {\n _this.filterClear();\n }\n else {\n _this.resetSortButtons();\n _this.sortedCols = [];\n _this.sortPredicate = [];\n _this.isSortApplied = true;\n }\n }\n };\n header.appendChild(clearBtn);\n }\n if (!isCustomFilter) {\n header.appendChild(saveBtn);\n }\n return header;\n };\n ResponsiveDialogRenderer.prototype.filterClear = function () {\n this.parent.filterModule.filterModule.clearCustomFilter(this.filteredCol);\n this.parent.filterModule.filterModule.closeResponsiveDialog();\n };\n ResponsiveDialogRenderer.prototype.removeCustomFilterElement = function () {\n var elem = document.getElementById(this.parent.element.id + 'customcolumnmenu');\n if (elem) {\n remove(elem);\n var custom = document.querySelector('.e-customfilter');\n if (custom) {\n remove(custom);\n }\n }\n var custommenu = document.querySelector('.e-rescolumnchooser');\n if (custommenu) {\n remove(custommenu);\n }\n };\n ResponsiveDialogRenderer.prototype.dialogHdrBtnClickHandler = function () {\n if (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd) {\n this.parent.endEdit();\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n this.parent.filterModule.filterModule.applyCustomFilter({ col: this.filteredCol, isCustomFilter: this.isCustomDlgRender });\n this.removeCustomFilterElement();\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.sortColumn();\n this.removeCustomFilterElement();\n }\n else if (this.action === ResponsiveDialogAction.isColumnChooser) {\n this.parent.notify(events.renderResponsiveColumnChooserDiv, { action: 'confirm' });\n this.removeCustomFilterElement();\n this.isCustomDialog = false;\n this.isDialogClose = false;\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomDialog = function () {\n if (this.isCustomDlgRender) {\n var mainfilterdiv = this.customResponsiveDlg.element.querySelector('.e-mainfilterdiv');\n remove(mainfilterdiv);\n return;\n }\n this.isRowResponsive = false;\n this.isCustomDlgRender = false;\n this.destroyCustomFilterDialog();\n };\n ResponsiveDialogRenderer.prototype.destroyCustomFilterDialog = function () {\n if (!this.customResponsiveDlg) {\n return;\n }\n var elem = document.getElementById(this.customResponsiveDlg.element.id);\n if (this.customResponsiveDlg && !this.customResponsiveDlg.isDestroyed && elem) {\n this.customResponsiveDlg.destroy();\n remove(elem);\n }\n this.closeCustomFilter();\n if (this.action === ResponsiveDialogAction.isSort) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomFilter = function () {\n if (!this.isDialogClose && this.customFilterDlg) {\n var customEle = document.getElementById(this.customFilterDlg.element.id);\n if (this.customFilterDlg && !this.customFilterDlg.isDestroyed && customEle) {\n this.customFilterDlg.destroy();\n remove(customEle);\n }\n }\n this.isCustomDialog = false;\n this.isDialogClose = false;\n };\n ResponsiveDialogRenderer.prototype.removeCustomDlgFilterEle = function (target) {\n if (target) {\n if (target.parentElement.classList.contains('e-filtersetdiv')) {\n remove(target.parentElement);\n }\n else {\n remove(target);\n }\n }\n else {\n var child = this.customColumnDiv.children;\n for (var i = 0; i < child.length; i++) {\n target = child[parseInt(i.toString(), 10)].querySelector('.e-filtersetdiv');\n if (target) {\n remove(target);\n i--;\n }\n }\n }\n };\n ResponsiveDialogRenderer.prototype.keyHandler = function (e) {\n if (e.keyCode === 13 && ((this.action === ResponsiveDialogAction.isFilter\n && e.target.classList.contains('e-searchinput'))\n || (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd))) {\n this.dialogHdrBtnClickHandler();\n }\n };\n ResponsiveDialogRenderer.prototype.editComplate = function (args) {\n if (args.requestType === 'save' || args.requestType === 'cancel') {\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n }\n };\n ResponsiveDialogRenderer.prototype.removeEventListener = function () {\n if (this.customColumnDiv) {\n EventHandler.remove(this.customColumnDiv, Browser.isDevice ? 'touchend' : 'click', this.customFilterColumnClickHandler);\n }\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.parent.removeEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n return ResponsiveDialogRenderer;\n}());\nexport { ResponsiveDialogRenderer };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { attributes, createElement, classList, append } from '@syncfusion/ej2-base';\n/**\n * `NumericContainer` module handles rendering and refreshing numeric container.\n */\nvar NumericContainer = /** @class */ (function () {\n /**\n * Constructor for numericContainer module\n *\n * @param {Pager} pagerModule - specifies the pagerModule\n * @hidden\n */\n function NumericContainer(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render numericContainer\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.render = function () {\n this.pagerElement = this.pagerModule.element;\n this.renderNumericContainer();\n this.refreshNumericLinks();\n this.wireEvents();\n };\n /**\n * Refreshes the numeric container of Pager.\n *\n * @returns {void}\n */\n NumericContainer.prototype.refresh = function () {\n this.pagerModule.updateTotalPages();\n if (this.links.length) {\n this.updateLinksHtml();\n }\n this.refreshAriaAttrLabel();\n this.updateStyles();\n };\n /**\n * The function is used to refresh refreshNumericLinks\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.refreshNumericLinks = function () {\n var link;\n var pagerObj = this.pagerModule;\n var div = pagerObj.element.querySelector('.e-numericcontainer');\n var frag = document.createDocumentFragment();\n div.innerHTML = '';\n for (var i = 1; i <= pagerObj.pageCount; i++) {\n link = createElement('a', {\n className: 'e-link e-numericitem e-spacing e-pager-default',\n attrs: { tabindex: '-1', 'aria-label': pagerObj.getLocalizedLabel('Page') + i + pagerObj.getLocalizedLabel('Of') +\n pagerObj.totalPages + pagerObj.getLocalizedLabel('Pages'), href: '#' }\n });\n if (pagerObj.currentPage === i) {\n classList(link, ['e-currentitem', 'e-active'], ['e-pager-default']);\n link.setAttribute('aria-current', 'page');\n }\n frag.appendChild(link);\n }\n div.appendChild(frag);\n this.links = [].slice.call(div.childNodes);\n };\n /**\n * Binding events to the element while component creation\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.wireEvents = function () {\n EventHandler.add(this.pagerElement, 'click', this.clickHandler, this);\n EventHandler.add(this.pagerElement, 'auxclick', this.auxiliaryClickHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.unwireEvents = function () {\n EventHandler.remove(this.pagerModule.element, 'click', this.clickHandler);\n EventHandler.remove(this.pagerModule.element, 'auxclick', this.auxiliaryClickHandler);\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.destroy = function () {\n this.unwireEvents();\n };\n NumericContainer.prototype.refreshAriaAttrLabel = function () {\n var pagerObj = this.pagerModule;\n var numericContainer = pagerObj.element.querySelector('.e-numericcontainer');\n var links = numericContainer.querySelectorAll('a');\n for (var i = 0; i < links.length; i++) {\n if (links[parseInt(i.toString(), 10)].hasAttribute('aria-label') && links[parseInt(i.toString(), 10)].hasAttribute('index')) {\n links[parseInt(i.toString(), 10)].setAttribute('aria-label', pagerObj.getLocalizedLabel('Page') + links[parseInt(i.toString(), 10)].getAttribute('index')\n + pagerObj.getLocalizedLabel('Of') + pagerObj.totalPages + pagerObj.getLocalizedLabel('Pages'));\n }\n }\n };\n NumericContainer.prototype.renderNumericContainer = function () {\n this.element = createElement('div', {\n className: 'e-pagercontainer', attrs: { 'role': 'navigation' }\n });\n this.renderFirstNPrev(this.element);\n this.renderPrevPagerSet(this.element);\n this.element.appendChild(createElement('div', { className: 'e-numericcontainer' }));\n this.renderNextPagerSet(this.element);\n this.renderNextNLast(this.element);\n this.pagerModule.element.appendChild(this.element);\n };\n NumericContainer.prototype.renderFirstNPrev = function (pagerContainer) {\n this.first = createElement('div', {\n className: 'e-first e-icons e-icon-first',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n this.prev = createElement('div', {\n className: 'e-prev e-icons e-icon-prev',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n append([this.first, this.prev], pagerContainer);\n };\n NumericContainer.prototype.renderPrevPagerSet = function (pagerContainer) {\n var prevPager = createElement('div');\n this.PP = createElement('a', {\n className: 'e-link e-pp e-spacing', innerHTML: '...',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n tabindex: '-1',\n href: '#'\n }\n });\n prevPager.appendChild(this.PP);\n pagerContainer.appendChild(prevPager);\n };\n NumericContainer.prototype.renderNextPagerSet = function (pagerContainer) {\n var nextPager = createElement('div');\n this.NP = createElement('a', {\n className: 'e-link e-np e-spacing',\n innerHTML: '...', attrs: {\n title: this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n tabindex: '-1',\n href: '#'\n }\n });\n nextPager.appendChild(this.NP);\n pagerContainer.appendChild(nextPager);\n };\n NumericContainer.prototype.renderNextNLast = function (pagerContainer) {\n this.next = createElement('div', {\n className: 'e-next e-icons e-icon-next',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n this.last = createElement('div', {\n className: 'e-last e-icons e-icon-last',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n append([this.next, this.last], pagerContainer);\n };\n NumericContainer.prototype.clickHandler = function (e) {\n var pagerObj = this.pagerModule;\n this.target = e.target;\n if (this.target.classList.contains('e-numericitem')) {\n e.preventDefault();\n }\n pagerObj.previousPageNo = pagerObj.currentPage;\n if (!this.target.classList.contains('e-disable') && !isNullOrUndefined(this.target.getAttribute('index'))) {\n pagerObj.currentPage = parseInt(this.target.getAttribute('index'), 10);\n pagerObj.dataBind();\n }\n return false;\n };\n NumericContainer.prototype.auxiliaryClickHandler = function (e) {\n this.target = e.target;\n if (this.target.classList.contains('e-numericitem') && (e.button === 1)) {\n e.preventDefault();\n }\n };\n NumericContainer.prototype.updateLinksHtml = function () {\n var pagerObj = this.pagerModule;\n var currentPageSet;\n var isLastSet;\n var pageNo;\n var numItems = this.pagerElement.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n pagerObj.currentPage = pagerObj.totalPages === 1 ? 1 : pagerObj.currentPage;\n if (pagerObj.currentPage > pagerObj.totalPages && pagerObj.totalPages) {\n pagerObj.currentPage = pagerObj.totalPages;\n }\n currentPageSet = parseInt((pagerObj.currentPage / pagerObj.pageCount).toString(), 10);\n if (pagerObj.currentPage % pagerObj.pageCount === 0 && currentPageSet > 0) {\n currentPageSet = currentPageSet - 1;\n }\n for (var i = 0; i < pagerObj.pageCount; i++) {\n if (pagerObj.isPagerResized) {\n var focusedItem = this.pagerElement.querySelector('.e-focus');\n var focusedorTarget = this.target ? this.target : focusedItem ? focusedItem : null;\n var prevFocused = false;\n var nextFocused = false;\n var firstFocused = false;\n var lastFocused = false;\n var numItemFocused = false;\n var npFocused = false;\n var ppFocused = false;\n if (focusedorTarget) {\n var classList_1 = focusedorTarget.classList;\n if (classList_1.contains('e-icons')) {\n switch (true) {\n case classList_1.contains('e-prev'):\n prevFocused = true;\n break;\n case classList_1.contains('e-next'):\n nextFocused = true;\n break;\n case classList_1.contains('e-first'):\n firstFocused = true;\n break;\n case classList_1.contains('e-last'):\n lastFocused = true;\n break;\n }\n }\n else if (classList_1.contains('e-numericitem')) {\n switch (true) {\n case classList_1.contains('e-np'):\n npFocused = true;\n break;\n case classList_1.contains('e-pp'):\n ppFocused = true;\n break;\n default:\n numItemFocused = classList_1.contains('e-numericitem');\n break;\n }\n }\n }\n isLastSet = lastFocused || (this.pagerModule.keyAction === 'End');\n numItems = this.pagerElement.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n var isPageAvailable = Array.from(numItems).some(function (item) { return parseInt(item.getAttribute('index'), 10) === pagerObj.currentPage; });\n //Setting pageNo to render based on key action or click action.\n if (firstFocused || this.pagerModule.keyAction === 'Home') {\n pageNo = 1 + i;\n }\n else if (lastFocused || this.pagerModule.keyAction === 'End') {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n }\n else if (nextFocused || this.pagerModule.keyAction === 'ArrowRight' || prevFocused || this.pagerModule.keyAction === 'ArrowLeft') {\n if (isPageAvailable) {\n pageNo = parseInt(numItems[0].getAttribute('index'), 10) + i;\n }\n else if (prevFocused || this.pagerModule.keyAction === 'ArrowLeft') {\n pageNo = parseInt(this.PP.getAttribute('index'), 10) + i;\n }\n else {\n pageNo = pagerObj.currentPage + i;\n }\n }\n else if (npFocused || ppFocused) {\n pageNo = pagerObj.currentPage + i;\n }\n else if (numItemFocused) {\n pageNo = (parseInt(numItems[0].getAttribute('index'), 10) + i);\n }\n else {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n }\n }\n else {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n }\n if (pageNo <= pagerObj.totalPages) {\n this.links[parseInt(i.toString(), 10)].classList.remove('e-hide');\n this.links[parseInt(i.toString(), 10)].style.display = '';\n this.links[parseInt(i.toString(), 10)].setAttribute('index', pageNo.toString());\n this.links[parseInt(i.toString(), 10)].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n if (pagerObj.currentPage !== pageNo) {\n this.links[parseInt(i.toString(), 10)].classList.add('e-pager-default');\n }\n else {\n this.links[parseInt(i.toString(), 10)].classList.remove('e-pager-default');\n }\n }\n else {\n this.links[parseInt(i.toString(), 10)].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n this.links[parseInt(i.toString(), 10)].style.display = 'none';\n }\n classList(this.links[parseInt(i.toString(), 10)], [], ['e-currentitem', 'e-active']);\n this.links[parseInt(i.toString(), 10)].removeAttribute('aria-current');\n }\n attributes(this.first, {\n 'index': '1',\n 'title': this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n });\n attributes(this.pagerElement.querySelector('.e-mfirst'), {\n 'index': '1',\n 'title': this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n });\n attributes(this.last, {\n 'index': pagerObj.totalPages.toString(),\n 'title': this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n });\n attributes(this.pagerElement.querySelector('.e-mlast'), {\n 'index': pagerObj.totalPages.toString(),\n 'title': this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n });\n attributes(this.prev, {\n 'index': (pagerObj.currentPage - 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n });\n attributes(this.pagerElement.querySelector('.e-mprev'), {\n 'index': (pagerObj.currentPage - 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n });\n attributes(this.next, {\n 'index': (pagerObj.currentPage + 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n });\n attributes(this.pagerElement.querySelector('.e-mnext'), {\n 'index': (pagerObj.currentPage + 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n });\n var ppIndex = (this.pagerModule.isPagerResized && numItems.length)\n ? isLastSet\n ? parseInt(numItems[0].getAttribute('index'), 10) - pagerObj.avgNumItems\n : parseInt(numItems[0].getAttribute('index'), 10) - numItems.length\n : parseInt(this.links[0].getAttribute('index'), 10) - pagerObj.pageCount;\n attributes(this.PP, {\n 'index': ((ppIndex < 1) ? '1' : ppIndex.toString()),\n 'title': this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('previousPagerTooltip')\n });\n var NPIndex = (this.pagerModule.isPagerResized && numItems.length)\n ? parseInt(numItems[numItems.length - 1].getAttribute('index'), 10)\n : parseInt(this.links[this.links.length - 1].getAttribute('index'), 10);\n attributes(this.NP, {\n 'index': (NPIndex + 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('nextPagerTooltip')\n });\n this.target = undefined;\n };\n NumericContainer.prototype.updateStyles = function () {\n var _this = this;\n this.updateFirstNPrevStyles();\n this.updatePrevPagerSetStyles();\n this.updateNextPagerSetStyles();\n this.updateNextNLastStyles();\n if (this.links.length) {\n var currentPageIndex = this.links.findIndex(function (link) { return link.getAttribute('index') === _this.pagerModule.currentPage.toString(); });\n var currentPage = (this.pagerModule.isPagerResized && currentPageIndex !== -1) ? currentPageIndex\n : ((this.pagerModule.currentPage - 1) % this.pagerModule.pageCount);\n classList(this.links[parseInt(currentPage.toString(), 10)], ['e-currentitem', 'e-active'], []);\n this.links[parseInt(currentPage.toString(), 10)].setAttribute('aria-current', 'page');\n }\n };\n NumericContainer.prototype.updateFirstNPrevStyles = function () {\n var firstPage = ['e-firstpage', 'e-pager-default'];\n var firstPageDisabled = ['e-firstpagedisabled', 'e-disable'];\n var prevPage = ['e-prevpage', 'e-pager-default'];\n var prevPageDisabled = ['e-prevpagedisabled', 'e-disable'];\n if (this.pagerModule.totalPages > 0 && this.pagerModule.currentPage > 1) {\n classList(this.prev, prevPage, prevPageDisabled);\n classList(this.first, firstPage, firstPageDisabled);\n classList(this.pagerElement.querySelector('.e-mfirst'), firstPage, firstPageDisabled);\n classList(this.pagerElement.querySelector('.e-mprev'), prevPage, prevPageDisabled);\n }\n else {\n classList(this.prev, prevPageDisabled, prevPage);\n classList(this.first, firstPageDisabled, firstPage);\n classList(this.pagerElement.querySelector('.e-mprev'), prevPageDisabled, prevPage);\n classList(this.pagerElement.querySelector('.e-mfirst'), firstPageDisabled, firstPage);\n }\n };\n NumericContainer.prototype.updatePrevPagerSetStyles = function () {\n if (this.pagerModule.currentPage > this.pagerModule.pageCount || (this.pagerModule.isPagerResized\n && this.links.findIndex(function (link) { return parseInt(link.getAttribute('index'), 10) === 1; }))) {\n classList(this.PP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n else {\n classList(this.PP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n };\n NumericContainer.prototype.updateNextPagerSetStyles = function () {\n var pagerObj = this.pagerModule;\n var firstPage = this.links[0].innerHTML.replace(pagerObj.customText, '');\n var numItems = this.pagerElement.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n if (!firstPage.length || !this.links.length || (parseInt(firstPage, 10) + pagerObj.pageCount > pagerObj.totalPages)\n || (pagerObj.isPagerResized && Array.from(numItems).some(function (item) { return parseInt(item.getAttribute('index'), 10) === pagerObj.totalPages; }))) {\n classList(this.NP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n else {\n classList(this.NP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n };\n NumericContainer.prototype.updateNextNLastStyles = function () {\n var lastPage = ['e-lastpage', 'e-pager-default'];\n var lastPageDisabled = ['e-lastpagedisabled', 'e-disable'];\n var nextPage = ['e-nextpage', 'e-pager-default'];\n var nextPageDisabled = ['e-nextpagedisabled', 'e-disable'];\n var pagerObj = this.pagerModule;\n if (pagerObj.currentPage === pagerObj.totalPages || pagerObj.totalRecordsCount === 0) {\n classList(this.last, lastPageDisabled, lastPage);\n classList(this.next, nextPageDisabled, nextPage);\n classList(this.pagerElement.querySelector('.e-mlast'), lastPageDisabled, lastPage);\n classList(this.pagerElement.querySelector('.e-mnext'), nextPageDisabled, nextPage);\n }\n else {\n classList(this.last, lastPage, lastPageDisabled);\n classList(this.next, nextPage, nextPageDisabled);\n classList(this.pagerElement.querySelector('.e-mlast'), lastPage, lastPageDisabled);\n classList(this.pagerElement.querySelector('.e-mnext'), nextPage, nextPageDisabled);\n }\n };\n return NumericContainer;\n}());\nexport { NumericContainer };\n","import { createElement, append } from '@syncfusion/ej2-base';\n/**\n * `PagerMessage` module is used to display pager information.\n */\nvar PagerMessage = /** @class */ (function () {\n /**\n * Constructor for externalMessage module\n *\n * @param {Pager} pagerModule - specifies the pager Module\n * @hidden\n */\n function PagerMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render pager message\n *\n * @returns {void}\n * @hidden\n */\n PagerMessage.prototype.render = function () {\n var div = createElement('div', { className: 'e-parentmsgbar' });\n this.pageNoMsgElem = createElement('span', { className: 'e-pagenomsg', styles: 'textalign:right' });\n this.pageCountMsgElem = createElement('span', { className: 'e-pagecountmsg', styles: 'textalign:right' });\n append([this.pageNoMsgElem, this.pageCountMsgElem], div);\n this.pagerModule.element.appendChild(div);\n this.refresh();\n };\n /**\n * Refreshes the pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.refresh = function () {\n var pagerObj = this.pagerModule;\n this.pageNoMsgElem.textContent = this.format(pagerObj.getLocalizedLabel('currentPageInfo'), [pagerObj.totalRecordsCount === 0 ? 0 :\n pagerObj.currentPage, pagerObj.totalPages || 0, pagerObj.totalRecordsCount || 0]) + ' ';\n this.pageCountMsgElem.textContent = this.format(pagerObj.getLocalizedLabel(pagerObj.totalRecordsCount <= 1 ? 'totalItemInfo' : 'totalItemsInfo'), [pagerObj.totalRecordsCount || 0, pagerObj.totalRecordsCount ? (pagerObj.pageSize * (pagerObj.currentPage - 1)) + 1 : 0,\n pagerObj.pageSize * pagerObj.currentPage > pagerObj.totalRecordsCount ? pagerObj.totalRecordsCount :\n pagerObj.pageSize * pagerObj.currentPage]);\n this.pageNoMsgElem.parentElement.classList.remove('e-hide');\n };\n /**\n * Hides the Pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.hideMessage = function () {\n if (this.pageNoMsgElem) {\n this.pageNoMsgElem.style.display = 'none';\n }\n if (this.pageCountMsgElem) {\n this.pageCountMsgElem.style.display = 'none';\n }\n };\n /**\n * Shows the Pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.showMessage = function () {\n if (!this.pageNoMsgElem) {\n this.render();\n }\n this.pageNoMsgElem.style.display = '';\n this.pageCountMsgElem.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n PagerMessage.prototype.destroy = function () {\n //destroy\n };\n /**\n * To format the PagerMessage\n *\n * @function format\n * @returns {string}\n * @hidden\n */\n PagerMessage.prototype.format = function (str, args) {\n var regx;\n for (var i = 0; i < args.length; i++) {\n // eslint-disable-next-line security/detect-non-literal-regexp\n regx = new RegExp('\\\\{' + (i) + '\\\\}', 'gm');\n str = str.replace(regx, args[parseInt(i.toString(), 10)].toString());\n }\n return str;\n };\n return PagerMessage;\n}());\nexport { PagerMessage };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, L10n, Browser, addClass, removeClass, classList } from '@syncfusion/ej2-base';\nimport { createElement, compile as templateCompiler, EventHandler, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Property, Event, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { NumericContainer } from './numeric-container';\nimport { PagerMessage } from './pager-message';\nimport { appendChildren, parentsUntil } from '../grid/base/util';\nimport * as events from '../grid/base/constant';\n/**\n * Represents the `Pager` component.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Pager = /** @class */ (function (_super) {\n __extends(Pager, _super);\n /**\n * Constructor for creating the component.\n *\n * @param {PagerModel} options - specifies the options\n * @param {string} element - specifies the element\n * @param {string} parent - specifies the pager parent\n * @hidden\n */\n function Pager(options, element, parent) {\n var _this = _super.call(this, options, element) || this;\n /** @hidden */\n _this.hasParent = false;\n _this.checkAll = true;\n _this.pageRefresh = 'pager-refresh';\n _this.firstPagerFocus = false;\n /** @hidden */\n _this.isCancel = false;\n _this.parent = parent;\n return _this;\n }\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} returns the modules declaration\n * @hidden\n */\n Pager.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableExternalMessage) {\n modules.push({\n member: 'externalMessage',\n args: [this]\n });\n }\n if (this.checkpagesizes()) {\n modules.push({\n member: 'pagerdropdown',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @hidden\n */\n Pager.prototype.preRender = function () {\n //preRender\n this.defaultConstants = {\n currentPageInfo: '{0} of {1} pages',\n totalItemsInfo: '({0} items)',\n totalItemInfo: '({0} item)',\n firstPageTooltip: 'Go to first page',\n lastPageTooltip: 'Go to last page',\n nextPageTooltip: 'Go to next page',\n previousPageTooltip: 'Go to previous page',\n nextPagerTooltip: 'Go to next pager items',\n previousPagerTooltip: 'Go to previous pager items',\n pagerDropDown: 'Items per page',\n pagerAllDropDown: 'Items',\n CurrentPageInfo: '{0} of {1} pages',\n TotalItemsInfo: '({0} items)',\n FirstPageTooltip: 'Go to first page',\n LastPageTooltip: 'Go to last page',\n NextPageTooltip: 'Go to next page',\n PreviousPageTooltip: 'Go to previous page',\n NextPagerTooltip: 'Go to next pager items',\n PreviousPagerTooltip: 'Go to previous pager items',\n PagerDropDown: 'Items per page',\n PagerAllDropDown: 'Items',\n All: 'All',\n Container: 'Pager Container',\n Information: 'Pager Information',\n ExternalMsg: 'Pager external message',\n Page: 'Page ',\n Of: ' of ',\n Pages: ' Pages'\n };\n this.containerModule = new NumericContainer(this);\n this.pagerMessageModule = new PagerMessage(this);\n };\n /**\n * To Initialize the component rendering\n *\n * @returns {void}\n */\n Pager.prototype.render = function () {\n this.element.setAttribute('data-role', 'pager');\n this.element.setAttribute('tabindex', '-1');\n this.initLocalization();\n if (this.cssClass) {\n if (this.cssClass.indexOf(' ') !== -1) {\n addClass([this.element], this.cssClass.split(' '));\n }\n else {\n addClass([this.element], [this.cssClass]);\n }\n }\n if (!this.hasParent) {\n this.element.setAttribute('tabindex', '0');\n }\n if (this.template) {\n if (this.isReactTemplate()) {\n this.on(this.pageRefresh, this.pagerTemplate, this);\n this.notify(this.pageRefresh, {});\n }\n else {\n this.pagerTemplate();\n }\n }\n else {\n this.updateRTL();\n this.totalRecordsCount = this.totalRecordsCount || 0;\n this.renderFirstPrevDivForDevice();\n this.containerModule.render();\n if (this.enablePagerMessage) {\n this.pagerMessageModule.render();\n }\n this.renderNextLastDivForDevice();\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n this.pagerdropdownModule.render();\n }\n this.addAriaLabel();\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.render();\n }\n this.refresh();\n this.trigger('created', { 'currentPage': this.currentPage, 'totalRecordsCount': this.totalRecordsCount });\n }\n this.wireEvents();\n this.addListener();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} returns the persist data\n * @hidden\n */\n Pager.prototype.getPersistData = function () {\n var keyEntity = ['currentPage', 'pageSize'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To destroy the Pager component.\n *\n * @method destroy\n * @returns {void}\n */\n Pager.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.isReactTemplate()) {\n this.off(this.pageRefresh, this.pagerTemplate);\n if (!this.hasParent) {\n this.destroyTemplate(['template']);\n }\n }\n this.removeListener();\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n this.containerModule.destroy();\n this.pagerMessageModule.destroy();\n if (!this.isReactTemplate()) {\n this.element.innerHTML = '';\n }\n };\n /**\n * Destroys the given template reference.\n *\n * @param {string[]} propertyNames - Defines the collection of template name.\n * @param {any} index - Defines the index\n */\n // eslint-disable-next-line\n Pager.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Pager.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {PagerModel} newProp - specifies the new property\n * @param {PagerModel} oldProp - specifies the old propety\n * @returns {void}\n * @hidden\n */\n Pager.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.isDestroyed) {\n return;\n }\n if ((newProp.pageSize === this.getLocalizedLabel('All')) && oldProp.pageSize === this.totalRecordsCount) {\n this.pageSize = this.totalRecordsCount;\n return;\n }\n if (newProp.pageCount !== oldProp.pageCount) {\n this.containerModule.refreshNumericLinks();\n this.containerModule.refresh();\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'currentPage':\n if (this.checkGoToPage(newProp.currentPage, oldProp.currentPage)) {\n this.currentPageChanged(newProp, oldProp);\n }\n break;\n case 'pageSize':\n case 'totalRecordsCount':\n case 'customText':\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n if (oldProp.pageSize !== newProp.pageSize) {\n this.currentPage = 1;\n }\n this.pagerdropdownModule.setDropDownValue('value', this.pageSize);\n }\n if (newProp.pageSize !== oldProp.pageSize) {\n this.pageSize = newProp.pageSize;\n this.currentPageChanged(newProp, oldProp);\n if (this.isCancel && this.hasParent) {\n this.parent\n .setProperties({ pageSettings: { pageSize: oldProp.pageSize } }, true);\n }\n }\n else {\n this.refresh();\n }\n break;\n case 'pageSizes':\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n this.pagerdropdownModule.destroy();\n this.pagerdropdownModule.render();\n }\n this.refresh();\n break;\n case 'template':\n this.templateFn = this.compile(this.template);\n this.refresh();\n break;\n case 'locale':\n this.initLocalization();\n this.refresh();\n break;\n case 'enableExternalMessage':\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.render();\n }\n break;\n case 'externalMessage':\n if (this.externalMessageModule) {\n this.externalMessageModule.refresh();\n }\n break;\n case 'enableRtl':\n this.updateRTL();\n break;\n case 'enablePagerMessage':\n if (this.enablePagerMessage) {\n this.pagerMessageModule.showMessage();\n }\n else {\n this.pagerMessageModule.hideMessage();\n }\n break;\n }\n }\n this.resizePager();\n };\n Pager.prototype.wireEvents = function () {\n if (!this.hasParent) {\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n }\n EventHandler.add(this.element, 'focusin', this.onFocusIn, this);\n EventHandler.add(this.element, 'focusout', this.onFocusOut, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'resize', this.resizePager, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'load', this.resizePager, this);\n };\n Pager.prototype.unwireEvents = function () {\n if (!this.hasParent) {\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n }\n EventHandler.remove(this.element, 'focusin', this.onFocusIn);\n EventHandler.remove(this.element, 'focusout', this.onFocusOut);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'resize', this.resizePager);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'load', this.resizePager);\n };\n Pager.prototype.onFocusIn = function (e) {\n var focusedTabIndexElement = this.getFocusedTabindexElement();\n if (isNullOrUndefined(focusedTabIndexElement)) {\n var target = e.target;\n var dropDownPage = this.getDropDownPage();\n if (!this.hasParent) {\n this.element.tabIndex = -1;\n }\n if (target === this.element && !this.hasParent) {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n this.addFocus(focusablePagerElements[0], true);\n return;\n }\n if (target === this.element) {\n this.element.tabIndex = 0;\n return;\n }\n if (target !== dropDownPage && !target.classList.contains('e-disable')) {\n this.addFocus(target, true);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Pager.prototype.onFocusOut = function (e) {\n var focusedElement = this.getFocusedElement();\n var dropDownPage = this.getDropDownPage();\n if (!isNullOrUndefined(focusedElement)) {\n this.removeFocus(focusedElement, true);\n }\n if (this.pageSizes && dropDownPage && dropDownPage.classList.contains('e-input-focus')) {\n this.removeFocus(dropDownPage, true);\n }\n this.setTabIndexForFocusLastElement();\n if (!this.hasParent) {\n this.element.tabIndex = 0;\n }\n if (this.hasParent) {\n this.element.tabIndex = -1;\n }\n };\n Pager.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n if (focusablePagerElements.length > 0) {\n focusablePagerElements[0].focus();\n }\n }\n }\n };\n Pager.prototype.keyPressHandler = function (e) {\n var presskey = extend(e, { cancel: false });\n this.notify(events.keyPressed, presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n };\n Pager.prototype.addListener = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.hasParent) {\n this.on(events.keyPressed, this.onKeyPress, this);\n }\n };\n Pager.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.hasParent) {\n this.off(events.keyPressed, this.onKeyPress);\n }\n };\n Pager.prototype.onKeyPress = function (e) {\n if (!this.hasParent) {\n if (this.checkPagerHasFocus()) {\n this.changePagerFocus(e);\n }\n else {\n e.preventDefault();\n this.setPagerFocus();\n }\n }\n };\n /**\n * @returns {boolean} - Return the true value if pager has focus\n * @hidden */\n Pager.prototype.checkPagerHasFocus = function () {\n return this.getFocusedTabindexElement() ? true : false;\n };\n /**\n * @returns {void}\n * @hidden */\n Pager.prototype.setPagerContainerFocus = function () {\n this.element.focus();\n };\n /**\n * @returns {void}\n * @hidden */\n Pager.prototype.setPagerFocus = function () {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n if (focusablePagerElements.length > 0) {\n focusablePagerElements[0].focus();\n }\n };\n Pager.prototype.setPagerFocusForActiveElement = function () {\n var currentActivePage = this.getActiveElement();\n if (currentActivePage) {\n currentActivePage.focus();\n }\n };\n Pager.prototype.setTabIndexForFocusLastElement = function () {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n var dropDownPage = this.getDropDownPage();\n if (this.pageSizes && dropDownPage && !isNullOrUndefined(dropDownPage.offsetParent)) {\n dropDownPage.tabIndex = 0;\n }\n else if (focusablePagerElements.length > 0) {\n focusablePagerElements[focusablePagerElements.length - 1].tabIndex = 0;\n }\n };\n /**\n * @param {KeyboardEventArgs} e - Keyboard Event Args\n * @returns {void}\n * @hidden */\n Pager.prototype.changePagerFocus = function (e) {\n this.keyAction = e.key;\n if (e.shiftKey && e.keyCode === 9) {\n this.changeFocusByShiftTab(e);\n }\n else if (e.keyCode === 9) {\n this.changeFocusByTab(e);\n }\n else if (e.keyCode === 13 || e.keyCode === 32) {\n this.navigateToPageByEnterOrSpace(e);\n }\n else if (e.keyCode === 37 || e.keyCode === 39 || e.keyCode === 35 || e.keyCode === 36) {\n this.navigateToPageByKey(e);\n }\n this.keyAction = '';\n };\n Pager.prototype.getFocusedTabindexElement = function () {\n var focusedTabIndexElement;\n var tabindexElements = this.element.querySelectorAll('[tabindex]:not([tabindex=\"-1\"])');\n for (var i = 0; i < tabindexElements.length; i++) {\n var element = tabindexElements[parseInt(i.toString(), 10)];\n if (element && (element.classList.contains('e-focused') || element.classList.contains('e-input-focus'))) {\n focusedTabIndexElement = element;\n break;\n }\n }\n return focusedTabIndexElement;\n };\n Pager.prototype.changeFocusByTab = function (e) {\n var currentItemPagerFocus = this.getFocusedTabindexElement();\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n var dropDownPage = this.getDropDownPage();\n if (focusablePagerElements.length > 0) {\n if (this.pageSizes && dropDownPage && currentItemPagerFocus === focusablePagerElements[focusablePagerElements.length - 1]) {\n dropDownPage.tabIndex = 0;\n }\n else {\n for (var i = 0; i < focusablePagerElements.length; i++) {\n if (currentItemPagerFocus === focusablePagerElements[parseInt(i.toString(), 10)]) {\n var incrementNumber = i + 1;\n if (incrementNumber < focusablePagerElements.length) {\n e.preventDefault();\n focusablePagerElements[parseInt(incrementNumber.toString(), 10)].focus();\n }\n break;\n }\n }\n }\n }\n };\n Pager.prototype.changeFocusByShiftTab = function (e) {\n var currentItemPagerFocus = this.getFocusedTabindexElement();\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n var dropDownPage = this.getDropDownPage();\n if (this.pageSizes && dropDownPage && dropDownPage.classList.contains('e-input-focus')) {\n dropDownPage.tabIndex = -1;\n this.addFocus(focusablePagerElements[focusablePagerElements.length - 1], true);\n }\n else if (focusablePagerElements.length > 0) {\n for (var i = 0; i < focusablePagerElements.length; i++) {\n if (currentItemPagerFocus === focusablePagerElements[parseInt(i.toString(), 10)]) {\n var decrementNumber = i - 1;\n if (decrementNumber >= 0) {\n e.preventDefault();\n focusablePagerElements[parseInt(decrementNumber.toString(), 10)].focus();\n }\n else if (this.hasParent) {\n var rows = this.parent.getRows();\n var lastRow = rows[rows.length - 1];\n var lastCell = lastRow.lastChild;\n e.preventDefault();\n lastCell.focus();\n this.firstPagerFocus = true;\n }\n break;\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden */\n Pager.prototype.checkFirstPagerFocus = function () {\n if (this.firstPagerFocus) {\n this.firstPagerFocus = false;\n return true;\n }\n return false;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Pager.prototype.navigateToPageByEnterOrSpace = function (e) {\n var currentItemPagerFocus = this.getFocusedElement();\n if (currentItemPagerFocus) {\n this.goToPage(parseInt(currentItemPagerFocus.getAttribute('index'), 10));\n var currentActivePage = this.getActiveElement();\n var selectedClass = this.getClass(currentItemPagerFocus);\n var classElement = this.getElementByClass(selectedClass);\n if ((selectedClass === 'e-first' || selectedClass === 'e-prev' || selectedClass === 'e-next'\n || selectedClass === 'e-last' || selectedClass === 'e-pp' || selectedClass === 'e-np')\n && classElement && !classElement.classList.contains('e-disable')) {\n classElement.focus();\n }\n else if (this.checkFocusInAdaptiveMode(currentItemPagerFocus)) {\n this.changeFocusInAdaptiveMode(currentItemPagerFocus);\n }\n else {\n if (currentActivePage) {\n currentActivePage.focus();\n }\n }\n }\n };\n Pager.prototype.navigateToPageByKey = function (e) {\n var actionClass = e.keyCode === 37 ? '.e-prev' : e.keyCode === 39 ? '.e-next'\n : e.keyCode === 35 ? '.e-last' : e.keyCode === 36 ? '.e-first' : '';\n var pagingItem = this.element.querySelector(actionClass);\n var currentItemPagerFocus = this.getFocusedElement();\n if (!isNullOrUndefined(pagingItem) && pagingItem.hasAttribute('index')\n && !isNaN(parseInt(pagingItem.getAttribute('index'), 10))) {\n this.goToPage(parseInt(pagingItem.getAttribute('index'), 10));\n var currentActivePage = this.getActiveElement();\n if (this.checkFocusInAdaptiveMode(currentItemPagerFocus)) {\n this.changeFocusInAdaptiveMode(currentItemPagerFocus);\n }\n else {\n if (currentActivePage) {\n currentActivePage.focus();\n }\n }\n }\n };\n Pager.prototype.checkFocusInAdaptiveMode = function (element) {\n var selectedClass = this.getClass(element);\n return selectedClass === 'e-mfirst' || selectedClass === 'e-mprev' || selectedClass === 'e-mnext'\n || selectedClass === 'e-mlast' ? true : false;\n };\n Pager.prototype.changeFocusInAdaptiveMode = function (element) {\n var selectedClass = this.getClass(element);\n var classElement = this.getElementByClass(selectedClass);\n if (classElement && classElement.classList.contains('e-disable')) {\n if (selectedClass === 'e-mnext' || selectedClass === 'e-mlast') {\n var mPrev = this.element.querySelector('.e-mprev');\n mPrev.focus();\n }\n else {\n this.setPagerFocus();\n }\n }\n };\n Pager.prototype.removeTabindexLastElements = function () {\n var tabIndexElements = this.element.querySelectorAll('[tabindex]:not([tabindex=\"-1\"])');\n if (tabIndexElements.length > 1) {\n for (var i = 1; i < tabIndexElements.length; i++) {\n var element = tabIndexElements[parseInt(i.toString(), 10)];\n if (element) {\n element.tabIndex = -1;\n }\n }\n }\n };\n Pager.prototype.getActiveElement = function () {\n return this.element.querySelector('.e-active');\n };\n /**\n * @returns {Element} - Returns DropDown Page\n * @hidden */\n Pager.prototype.getDropDownPage = function () {\n var dropDownPageHolder = this.element.querySelector('.e-pagerdropdown');\n var dropDownPage;\n if (dropDownPageHolder) {\n dropDownPage = dropDownPageHolder.children[0];\n }\n return dropDownPage;\n };\n Pager.prototype.getFocusedElement = function () {\n return this.element.querySelector('.e-focused');\n };\n Pager.prototype.getClass = function (element) {\n var currentClass;\n var classList = ['e-mfirst', 'e-mprev', 'e-first', 'e-prev', 'e-pp',\n 'e-np', 'e-next', 'e-last', 'e-mnext', 'e-mlast'];\n for (var i = 0; i < classList.length; i++) {\n if (element && element.classList.contains(classList[parseInt(i.toString(), 10)])) {\n currentClass = classList[parseInt(i.toString(), 10)];\n return currentClass;\n }\n }\n return currentClass;\n };\n Pager.prototype.getElementByClass = function (className) {\n return this.element.querySelector('.' + className);\n };\n /**\n * @param {Element} element - Pager element\n * @param {Element[]} previousElements - Iterating pager element\n * @returns {Element[]} - Returns focusable pager element\n * @hidden */\n Pager.prototype.getFocusablePagerElements = function (element, previousElements) {\n var target = element;\n var targetChildrens = target.children;\n var pagerElements = previousElements;\n for (var i = 0; i < targetChildrens.length; i++) {\n var element_1 = targetChildrens[parseInt(i.toString(), 10)];\n if (element_1.children.length > 0 && !element_1.classList.contains('e-pagesizes')) {\n pagerElements = this.getFocusablePagerElements(element_1, pagerElements);\n }\n else {\n var tabindexElement = targetChildrens[parseInt(i.toString(), 10)];\n if (tabindexElement.hasAttribute('tabindex') && !element_1.classList.contains('e-disable')\n && element_1.style.display !== 'none'\n && !isNullOrUndefined(element_1.offsetParent)) {\n pagerElements.push(tabindexElement);\n }\n }\n }\n return pagerElements;\n };\n Pager.prototype.addFocus = function (element, addFocusClass) {\n if (addFocusClass) {\n addClass([element], ['e-focused', 'e-focus']);\n }\n element.tabIndex = 0;\n };\n Pager.prototype.removeFocus = function (element, removeFocusClass) {\n if (removeFocusClass) {\n removeClass([element], ['e-focused', 'e-focus']);\n }\n element.tabIndex = -1;\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key - specifies the key\n * @returns {string} returns the localized label\n */\n Pager.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n /**\n * Navigate to target page by given number.\n *\n * @param {number} pageNo - Defines page number.\n * @returns {void}\n */\n Pager.prototype.goToPage = function (pageNo) {\n if (this.checkGoToPage(pageNo)) {\n this.currentPage = pageNo;\n this.dataBind();\n }\n };\n /**\n * @param {number} pageSize - specifies the pagesize\n * @returns {void}\n * @hidden\n */\n Pager.prototype.setPageSize = function (pageSize) {\n this.pageSize = pageSize;\n this.dataBind();\n };\n Pager.prototype.checkpagesizes = function () {\n if (this.pageSizes === true || this.pageSizes.length) {\n return true;\n }\n return false;\n };\n Pager.prototype.checkGoToPage = function (newPageNo, oldPageNo) {\n if (newPageNo !== this.currentPage) {\n this.previousPageNo = this.currentPage;\n }\n if (!isNullOrUndefined(oldPageNo)) {\n this.previousPageNo = oldPageNo;\n }\n if (this.previousPageNo !== newPageNo && (newPageNo >= 1 && newPageNo <= this.totalPages)) {\n return true;\n }\n return false;\n };\n Pager.prototype.currentPageChanged = function (newProp, oldProp) {\n if (this.enableQueryString) {\n this.updateQueryString(this.currentPage);\n }\n if (newProp.currentPage !== oldProp.currentPage || newProp.pageSize !== oldProp.pageSize) {\n var args = {\n currentPage: this.currentPage,\n newProp: newProp, oldProp: oldProp, cancel: false\n };\n this.trigger('click', args);\n if (!args.cancel) {\n this.isCancel = false;\n this.refresh();\n }\n else {\n this.isCancel = true;\n if (oldProp && oldProp.pageSize) {\n this.setProperties({ pageSize: oldProp.pageSize }, true);\n if (this.pagerdropdownModule) {\n this.pagerdropdownModule.setDropDownValue('value', oldProp.pageSize);\n this.pagerdropdownModule['dropDownListObject'].text = oldProp.pageSize + '';\n }\n }\n }\n }\n };\n Pager.prototype.pagerTemplate = function () {\n if (this.isReactTemplate() && this.hasParent) {\n return;\n }\n var result;\n this.element.classList.add('e-pagertemplate');\n this.compile(this.template);\n var data = {\n currentPage: this.currentPage, pageSize: this.pageSize, pageCount: this.pageCount,\n totalRecordsCount: this.totalRecordsCount, totalPages: this.totalPages\n };\n var tempId = this.element.parentElement.id + '_template';\n if (this.isReactTemplate() && !this.isVue) {\n this.getPagerTemplate()(data, this, 'template', tempId, null, null, this.element);\n this.renderReactTemplates();\n }\n else {\n result = this.isVue ? this.getPagerTemplate()(data, this, 'template') : this.getPagerTemplate()(data);\n appendChildren(this.element, result);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Pager.prototype.updateTotalPages = function () {\n this.totalPages = this.isAllPage ? 1 : (this.totalRecordsCount % this.pageSize === 0) ? (this.totalRecordsCount / this.pageSize) :\n (parseInt((this.totalRecordsCount / this.pageSize).toString(), 10) + 1);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Pager.prototype.getPagerTemplate = function () {\n return this.templateFn;\n };\n /**\n * @param {string | Function} template - specifies the template\n * @returns {Function} returns the function\n * @hidden\n */\n Pager.prototype.compile = function (template) {\n if (template) {\n try {\n if (typeof template === 'function') {\n this.templateFn = templateCompiler(template);\n }\n else {\n if (document.querySelectorAll(template).length) {\n this.templateFn = templateCompiler(document.querySelector(template).innerHTML.trim());\n }\n }\n }\n catch (e) {\n this.templateFn = templateCompiler(template);\n }\n }\n return undefined;\n };\n /**\n * Refreshes page count, pager information and external message.\n *\n * @returns {void}\n */\n Pager.prototype.refresh = function () {\n if (this.template) {\n if (this.isReactTemplate()) {\n this.updateTotalPages();\n this.notify(this.pageRefresh, {});\n }\n else {\n this.element.innerHTML = '';\n this.updateTotalPages();\n this.pagerTemplate();\n }\n }\n else {\n this.updateRTL();\n var focusedTabIndexElement = this.getFocusedTabindexElement();\n this.containerModule.refresh();\n this.removeTabindexLastElements();\n if (focusedTabIndexElement && focusedTabIndexElement.classList.contains('e-disable')) {\n if (this.checkFocusInAdaptiveMode(focusedTabIndexElement)) {\n this.changeFocusInAdaptiveMode(focusedTabIndexElement);\n }\n else {\n this.setPagerFocusForActiveElement();\n }\n }\n if (this.enablePagerMessage) {\n this.pagerMessageModule.refresh();\n }\n if (this.pagerdropdownModule) {\n this.pagerdropdownModule.refresh();\n }\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.refresh();\n }\n this.setTabIndexForFocusLastElement();\n this.resizePager();\n }\n };\n Pager.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Pager.prototype.initLocalization = function () {\n this.localeObj = new L10n(this.getModuleName(), this.defaultConstants, this.locale);\n };\n Pager.prototype.updateQueryString = function (value) {\n var updatedUrl = this.getUpdatedURL(window.location.href, 'page', value.toString());\n window.history.pushState({ path: updatedUrl }, '', updatedUrl);\n };\n Pager.prototype.getUpdatedURL = function (uri, key, value) {\n // eslint-disable-next-line security/detect-non-literal-regexp\n var regx = new RegExp('([?|&])' + key + '=.*?(&|#|$)', 'i');\n if (uri.match(regx)) {\n return uri.replace(regx, '$1' + key + '=' + value + '$2');\n }\n else {\n var hash = '';\n if (uri.indexOf('#') !== -1) {\n hash = uri.replace(/.*#/, '#');\n uri = uri.replace(/#.*/, '');\n }\n return uri + (uri.indexOf('?') !== -1 ? '&' : '?') + key + '=' + value + hash;\n }\n };\n Pager.prototype.renderFirstPrevDivForDevice = function () {\n this.element.appendChild(createElement('div', {\n className: 'e-mfirst e-icons e-icon-first',\n attrs: { title: this.getLocalizedLabel('firstPageTooltip'), tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mprev e-icons e-icon-prev',\n attrs: { title: this.getLocalizedLabel('previousPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.renderNextLastDivForDevice = function () {\n this.element.appendChild(createElement('div', {\n className: 'e-mnext e-icons e-icon-next',\n attrs: { title: this.getLocalizedLabel('nextPageTooltip'), tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mlast e-icons e-icon-last',\n attrs: { title: this.getLocalizedLabel('lastPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.addAriaLabel = function () {\n var classList = ['.e-mfirst', '.e-mprev', '.e-mnext', '.e-mlast'];\n if (!Browser.isDevice) {\n for (var i = 0; i < classList.length; i++) {\n var element = this.element.querySelector(classList[parseInt(i.toString(), 10)]);\n element.setAttribute('aria-label', element.getAttribute('title'));\n }\n }\n };\n Pager.prototype.isReactTemplate = function () {\n return (this.isReact || this.isVue) && this.template && typeof (this.template) !== 'string';\n };\n /**\n * Loop through all the inner elements of pager to calculate the required width for pager child elements.\n *\n * @returns {number} returns the actual width occupied by pager elements.\n */\n Pager.prototype.calculateActualWidth = function () {\n var pagerElements = this.element.querySelectorAll(\n /* tslint:disable-next-line:max-line-length */\n '.e-mfirst, .e-mprev, .e-icon-first, .e-icon-prev, .e-pp:not(.e-disable), .e-numericitem:not(.e-hide), .e-numericitem.e-active.e-hide, .e-np:not(.e-disable), .e-icon-next, .e-icon-last, .e-parentmsgbar, .e-mnext, .e-mlast, .e-pagerdropdown, .e-pagerconstant');\n var actualWidth = 0;\n for (var i = 0; i < pagerElements.length; i++) {\n if (getComputedStyle(pagerElements[parseInt(i.toString(), 10)]).display !== 'none') {\n actualWidth += pagerElements[parseInt(i.toString(), 10)].offsetWidth\n + parseFloat(getComputedStyle(pagerElements[parseInt(i.toString(), 10)]).marginLeft)\n + parseFloat(getComputedStyle(pagerElements[parseInt(i.toString(), 10)]).marginRight);\n }\n }\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n actualWidth += parseFloat(getComputedStyle(pagerContainer).marginLeft)\n + parseFloat(getComputedStyle(pagerContainer).marginRight);\n return actualWidth;\n };\n /**\n * Resize pager component by hiding pager component's numeric items based on total width available for pager.\n *\n * @returns {void}\n */\n Pager.prototype.resizePager = function () {\n var _this = this;\n var isStyleApplied = this.element.classList.contains('e-pager') ? getComputedStyle(this.element).getPropertyValue('border-style').includes('solid') : null;\n if (!(this.template) && isStyleApplied) {\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n var actualWidth = this.calculateActualWidth();\n var pagerWidth = this.element.clientWidth\n - parseFloat(getComputedStyle(this.element).paddingLeft)\n - parseFloat(getComputedStyle(this.element).paddingRight)\n - parseFloat(getComputedStyle(this.element).marginLeft)\n - parseFloat(getComputedStyle(this.element).marginRight);\n var numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n var hiddenNumItems = pagerContainer.querySelectorAll('.e-numericitem.e-hide:not([style*=\"display: none\"])');\n var hideFrom = numItems.length;\n var showFrom = 1;\n var bufferWidth = (!isNullOrUndefined(parentsUntil(this.element, 'e-bigger'))) ? 10 : 5;\n var NP = pagerContainer.querySelector('.e-np');\n var PP = pagerContainer.querySelector('.e-pp');\n var detailItems = this.element.querySelectorAll('.e-parentmsgbar:not(.e-hide):not([style*=\"display: none\"]), .e-pagesizes:not(.e-hide):not([style*=\"display: none\"])');\n var totDetailWidth_1 = 0;\n if (detailItems.length) {\n detailItems.forEach(function (item) {\n totDetailWidth_1 += item.offsetWidth;\n });\n this.averageDetailWidth = totDetailWidth_1 / detailItems.length;\n }\n var totalWidth = 0;\n /**\n * Loop to calculate average width of numeric item.\n */\n for (var i = 0; i < numItems.length; i++) {\n totalWidth += numItems[parseInt(i.toString(), 10)].offsetWidth\n + parseFloat(getComputedStyle(numItems[parseInt(i.toString(), 10)]).marginLeft)\n + parseFloat(getComputedStyle(numItems[parseInt(i.toString(), 10)]).marginRight);\n }\n var numericItemWidth = totalWidth / numItems.length;\n /**\n * Condition to hide numeric items when calculated actual width exceeds available pager space.\n */\n if (pagerWidth > 0 && (actualWidth >= (pagerWidth - (numericItemWidth ? numericItemWidth : 0)))) {\n this.isPagerResized = true;\n if (this.currentPage !== this.totalPages) {\n classList(NP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n actualWidth = this.calculateActualWidth();\n var diff = Math.abs((actualWidth) - pagerWidth);\n // To calculate number of numeric items need to be hidden.\n var numToHide = Math.ceil(diff / (numericItemWidth));\n numToHide = (numToHide === 0) ? 1 : (numToHide > numItems.length) ? (numItems.length - 1) : numToHide;\n for (var i = 1; i <= numToHide; i++) {\n var hideIndex = hideFrom - parseInt(i.toString(), 10);\n numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n if (this.currentPage !== 1 && ((parseInt(numItems[Math.abs(hideIndex)].getAttribute('index'), 10) === this.currentPage)\n || parseInt(numItems[numItems.length - 1].getAttribute('index'), 10) === this.currentPage)) {\n hideIndex = 0;\n classList(PP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n if (numItems[Math.abs(hideIndex)] && !(numItems[Math.abs(hideIndex)].classList.contains('e-currentitem'))) {\n numItems[Math.abs(hideIndex)].classList.add('e-hide');\n }\n }\n numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n // To hide Pager message elements when no more numeric items available to hide.\n if (numItems.length <= 1 && detailItems.length && window.innerWidth >= 768) {\n var pagerDetailItemsWidth = this.calculateActualWidth();\n if ((pagerDetailItemsWidth) > (pagerWidth - bufferWidth)) {\n var detailtoHide = Math.floor((pagerWidth - (pagerDetailItemsWidth - totDetailWidth_1))\n / this.averageDetailWidth);\n detailtoHide = detailItems.length - detailtoHide;\n for (var i = 0; i < (detailtoHide > detailItems.length ? detailItems.length : detailtoHide); i++) {\n detailItems[parseInt(i.toString(), 10)].classList.add('e-hide');\n }\n }\n }\n }\n /**\n * Condition to show numeric items when space availble in pager at dom.\n */\n else if (actualWidth < (pagerWidth) && hiddenNumItems.length) {\n var diff = Math.abs(pagerWidth - (actualWidth));\n var hiddenDetailItems = this.element.querySelectorAll('.e-parentmsgbar.e-hide, .e-pagesizes.e-hide');\n // To show Pager message elements.\n if (hiddenDetailItems.length && (diff > (this.averageDetailWidth + (this.averageDetailWidth / 4)))) {\n hiddenDetailItems[(hiddenDetailItems.length - 1)].classList.remove('e-hide');\n }\n if ((diff > (numericItemWidth * 2) && !hiddenDetailItems.length && window.innerWidth >= 768)) {\n // To calculate number of numeric items need to be shown.\n var numToShow = Math.floor((diff) / (numericItemWidth + bufferWidth));\n numToShow = (numToShow > hiddenNumItems.length) ? hiddenNumItems.length : (numToShow - 1);\n //Seggregating hidden num items as less index and greater index values than current page value.\n var lesserIndexItems = Array.from(hiddenNumItems).filter(function (item) { return parseInt(item.getAttribute('index'), 10) < _this.currentPage; }).sort(function (a, b) { return parseInt(b.getAttribute('index'), 10) - parseInt(a.getAttribute('index'), 10); });\n var greaterIndexItems = Array.from(hiddenNumItems).filter(function (item) { return parseInt(item.getAttribute('index'), 10) > _this.currentPage; });\n var showItems = (lesserIndexItems.length && lesserIndexItems)\n || (greaterIndexItems.length && greaterIndexItems);\n for (var i = 1; i <= numToShow; i++) {\n var showItem = showItems && showItems[Math.abs(showFrom - i)];\n if (showItem) {\n showItem.classList.remove('e-hide');\n if (showItem === showItems[showItems.length - 1]) {\n showItems = null;\n }\n }\n }\n }\n }\n numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n if (numItems.length) {\n if (parseInt(numItems[numItems.length - 1].getAttribute('index'), 10) === this.totalPages) {\n classList(NP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n if (parseInt(numItems[0].getAttribute('index'), 10) === 1) {\n classList(PP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n var isLastSet = Array.from(numItems).some(function (item) { return parseInt(item.getAttribute('index'), 10) === _this.totalPages; });\n var ppIndex = (parseInt(numItems[0].getAttribute('index'), 10) - (isLastSet ? this.avgNumItems : numItems.length));\n PP.setAttribute('index', (ppIndex < 1) ? '1' : ppIndex.toString());\n NP.setAttribute('index', (parseInt(numItems[numItems.length - 1].getAttribute('index'), 10) + 1).toString());\n this.avgNumItems = isLastSet ? this.avgNumItems : numItems.length;\n }\n /**\n * Condition to add adaptive class name and set pagermessage content with \"/\" when media query css has been applied.\n */\n if (((this.element.offsetWidth < 769) && window.getComputedStyle(this.element.querySelector('.e-mfirst')).getPropertyValue('display') !== 'none') && this.pageSizes) {\n this.element.querySelector('.e-pagesizes').classList.remove('e-hide');\n this.element.querySelector('.e-parentmsgbar').classList.remove('e-hide');\n this.element.classList.add('e-adaptive');\n this.element.querySelector('.e-pagenomsg').innerHTML = this.element.offsetWidth < 481 ? (this.currentPage + ' / ' + this.totalPages) : this.pagerMessageModule.format(this.getLocalizedLabel('currentPageInfo'), [this.totalRecordsCount === 0 ? 0 :\n this.currentPage, this.totalPages || 0, this.totalRecordsCount || 0]) + ' ';\n }\n else {\n this.element.classList.remove('e-adaptive');\n this.element.querySelector('.e-pagenomsg').innerHTML = this.pagerMessageModule.format(this.getLocalizedLabel('currentPageInfo'), [this.totalRecordsCount === 0 ? 0 :\n this.currentPage, this.totalPages || 0, this.totalRecordsCount || 0]) + ' ';\n }\n }\n };\n __decorate([\n Property(false)\n ], Pager.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], Pager.prototype, \"enableExternalMessage\", void 0);\n __decorate([\n Property(true)\n ], Pager.prototype, \"enablePagerMessage\", void 0);\n __decorate([\n Property(12)\n ], Pager.prototype, \"pageSize\", void 0);\n __decorate([\n Property(10)\n ], Pager.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], Pager.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"externalMessage\", void 0);\n __decorate([\n Property(false)\n ], Pager.prototype, \"pageSizes\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], Pager.prototype, \"customText\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"click\", void 0);\n __decorate([\n Property('')\n ], Pager.prototype, \"cssClass\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"dropDownChanged\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"created\", void 0);\n Pager = __decorate([\n NotifyPropertyChanges\n ], Pager);\n return Pager;\n}(Component));\nexport { Pager };\n","import { createElement, remove } from '@syncfusion/ej2-base';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\n/**\n * `PagerDropDown` module handles selected pageSize from DropDownList.\n */\nvar PagerDropDown = /** @class */ (function () {\n /**\n * Constructor for pager module\n *\n * @param {Pager} pagerModule - specifies the pagermodule\n * @hidden\n */\n function PagerDropDown(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n * @hidden\n */\n PagerDropDown.prototype.getModuleName = function () {\n return 'pagerdropdown';\n };\n /**\n * The function is used to render pager dropdown\n *\n * @returns {void}\n * @hidden\n */\n PagerDropDown.prototype.render = function () {\n var pagerObj = this.pagerModule;\n this.pagerDropDownDiv = createElement('div', { className: 'e-pagesizes' });\n var dropDownDiv = createElement('div', { className: 'e-pagerdropdown' });\n var defaultTextDiv = createElement('div', { className: 'e-pagerconstant' });\n var input = createElement('input', { attrs: { type: 'text', tabindex: '-1' } });\n this.pagerCons = createElement('span', {\n className: 'e-constant', innerHTML: this.pagerModule.getLocalizedLabel('pagerDropDown')\n });\n dropDownDiv.appendChild(input);\n defaultTextDiv.appendChild(this.pagerCons);\n this.pagerDropDownDiv.appendChild(dropDownDiv);\n this.pagerDropDownDiv.appendChild(defaultTextDiv);\n this.pagerModule.element.appendChild(this.pagerDropDownDiv);\n var pageSizesModule = this.pagerModule.pageSizes;\n var pageSizesArray = (pageSizesModule.length ? this.convertValue(pageSizesModule) :\n [this.pagerModule.getLocalizedLabel('All'), '5', '10', '12', '20']);\n var defaultValue = this.pagerModule.pageSize;\n this.dropDownListObject = new DropDownList({\n dataSource: pageSizesArray,\n value: defaultValue.toString(),\n change: this.onChange.bind(this),\n placeholder: this.pagerModule.getLocalizedLabel('pagerDropDown'),\n cssClass: this.pagerModule.cssClass ? 'e-alldrop' + ' ' + this.pagerModule.cssClass : 'e-alldrop'\n });\n this.dropDownListObject.appendTo(input);\n if (pageSizesModule.length) {\n this.dropDownListObject.element.value = this.pagerModule.pageSize.toString();\n }\n pagerObj.pageSize = defaultValue;\n pagerObj.dataBind();\n pagerObj.trigger('dropDownChanged', { pageSize: defaultValue });\n this.addEventListener();\n };\n /**\n * For internal use only - Get the pagesize.\n *\n * @param {ChangeEventArgs} e - specifies the changeeventargs\n * @returns {void}\n * @private\n * @hidden\n */\n PagerDropDown.prototype.onChange = function (e) {\n if (this.dropDownListObject.value === this.pagerModule.getLocalizedLabel('All')) {\n this.pagerModule.pageSize = this.pagerModule.totalRecordsCount;\n this.pagerModule.isAllPage = true;\n this.refresh();\n e.value = this.pagerModule.pageSize;\n if (document.getElementsByClassName('e-popup-open e-alldrop').length) {\n document.getElementsByClassName('e-popup-open e-alldrop')[0].style.display = 'none';\n }\n }\n else {\n this.pagerModule.pageSize = parseInt(this.dropDownListObject.value, 10);\n this.pagerModule.isAllPage = false;\n if (this.pagerCons.innerHTML !== this.pagerModule.getLocalizedLabel('pagerDropDown')) {\n this.refresh();\n }\n }\n this.pagerModule.dataBind();\n if (!this.pagerModule.isCancel) {\n this.pagerModule.trigger('dropDownChanged', {\n pageSize: this.pagerModule.isAllPage ||\n (this.pagerModule.isAllPage === undefined && this.dropDownListObject.value === this.pagerModule.getLocalizedLabel('All')) ?\n this.pagerModule.totalRecordsCount : parseInt(this.dropDownListObject.value, 10)\n });\n }\n };\n PagerDropDown.prototype.refresh = function () {\n if (this.pagerCons) {\n if (this.isPageSizeAll(this.pagerModule.pageSize)) {\n this.pagerCons.innerHTML = this.pagerModule.getLocalizedLabel('pagerAllDropDown');\n this.pagerCons.parentElement.classList.add('e-page-all');\n }\n else {\n this.pagerCons.innerHTML = this.pagerModule.getLocalizedLabel('pagerDropDown');\n this.pagerCons.parentElement.classList.remove('e-page-all');\n }\n this.pagerDropDownDiv.classList.remove('e-hide');\n }\n };\n PagerDropDown.prototype.beforeValueChange = function (prop) {\n if (typeof prop.newProp.value === 'number') {\n var val = prop.newProp.value.toString();\n prop.newProp.value = val;\n }\n };\n PagerDropDown.prototype.convertValue = function (pageSizeValue) {\n var item = pageSizeValue;\n for (var i = 0; i < item.length; i++) {\n item[parseInt(i.toString(), 10)] = parseInt(item[parseInt(i.toString(), 10)], 10) ?\n item[parseInt(i.toString(), 10)].toString() : (this.pagerModule.getLocalizedLabel(item[parseInt(i.toString(), 10)]) !== '')\n ? this.pagerModule.getLocalizedLabel(item[parseInt(i.toString(), 10)]) : item[parseInt(i.toString(), 10)];\n }\n return item;\n };\n PagerDropDown.prototype.isPageSizeAll = function (value) {\n var pageSizeNum = typeof (value) === 'string' && value !== this.pagerModule.getLocalizedLabel('All') ?\n parseInt(value, 10) : value;\n if (pageSizeNum === this.pagerModule.totalRecordsCount || value === this.pagerModule.getLocalizedLabel('All')) {\n return true;\n }\n else {\n return false;\n }\n };\n PagerDropDown.prototype.setDropDownValue = function (prop, value) {\n if (this.dropDownListObject) {\n var isbeforeAll = this.pagerModule.isAllPage;\n this.pagerModule.isAllPage = this.isPageSizeAll(value);\n this.pagerModule.checkAll = (isbeforeAll && this.pagerModule.isAllPage) ? true : false;\n this.dropDownListObject[\"\" + prop] = this.pagerModule.isAllPage ? this.pagerModule.getLocalizedLabel('All') : value;\n }\n };\n PagerDropDown.prototype.addEventListener = function () {\n this.dropDownListObject.on('beforeValueChange', this.beforeValueChange, this);\n };\n PagerDropDown.prototype.removeEventListener = function () {\n this.dropDownListObject.off('beforeValueChange', this.beforeValueChange);\n };\n /**\n * To destroy the Pagerdropdown\n *\n * @param {string} args - specifies the arguments\n * @param {string} args.requestType - specfies the request type\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n PagerDropDown.prototype.destroy = function (args) {\n if (this.dropDownListObject && !this.dropDownListObject.isDestroyed) {\n this.removeEventListener();\n this.dropDownListObject.destroy();\n remove(this.pagerDropDownDiv);\n }\n };\n return PagerDropDown;\n}());\nexport { PagerDropDown };\n","import { createElement, remove, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * `ExternalMessage` module is used to display user provided message.\n */\nvar ExternalMessage = /** @class */ (function () {\n /**\n * Constructor for externalMessage module\n *\n * @param {Pager} pagerModule - specifies the pagermodule\n * @hidden\n */\n function ExternalMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n ExternalMessage.prototype.getModuleName = function () {\n return 'externalMessage';\n };\n /**\n * The function is used to render pager externalMessage\n *\n * @returns {void}\n * @hidden\n */\n ExternalMessage.prototype.render = function () {\n this.element = createElement('div', { className: 'e-pagerexternalmsg', attrs: { 'aria-label': this.pagerModule.getLocalizedLabel('ExternalMsg') } });\n this.pagerModule.element.appendChild(this.element);\n this.refresh();\n };\n /**\n * Refreshes the external message of Pager.\n *\n * @returns {void}\n */\n ExternalMessage.prototype.refresh = function () {\n if (this.pagerModule.externalMessage && this.pagerModule.externalMessage.toString().length) {\n this.showMessage();\n this.element.innerHTML = this.pagerModule.externalMessage;\n }\n else {\n this.hideMessage();\n }\n };\n /**\n * Hides the external message of Pager.\n *\n * @returns {void}\n */\n ExternalMessage.prototype.hideMessage = function () {\n if (!isNullOrUndefined(this.element)) {\n this.element.style.display = 'none';\n }\n };\n /**\n * Shows the external message of the Pager.\n *\n * @returns {void}s\n */\n ExternalMessage.prototype.showMessage = function () {\n this.element.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n ExternalMessage.prototype.destroy = function () {\n if (this.element && this.element.parentElement) {\n remove(this.element);\n }\n };\n return ExternalMessage;\n}());\nexport { ExternalMessage };\n","import { extend } from '@syncfusion/ej2-base';\nimport { remove, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Pager } from '../../pager/pager';\nimport { PagerDropDown } from '../../pager/pager-dropdown';\nimport { ExternalMessage } from '../../pager/external-message';\nimport { extend as gridExtend, getActualProperties, isActionPrevent, addRemoveEventListener, appendChildren } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * The `Page` module is used to render pager and handle paging action.\n */\nvar Page = /** @class */ (function () {\n /**\n * Constructor for the Grid paging module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {PageSettingsModel} pageSettings - specifies the PageSettingsModel\n * @hidden\n */\n function Page(parent, pageSettings) {\n this.isInitialRender = true;\n /** @hidden */\n this.isCancel = false;\n Pager.Inject(ExternalMessage, PagerDropDown);\n this.parent = parent;\n this.pageSettings = pageSettings;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Page.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * The function used to render pager from grid pageSettings\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.render = function () {\n var gObj = this.parent;\n this.pagerDestroy();\n if (!isNullOrUndefined(this.parent.pagerTemplate)) {\n this.pageSettings.template = this.parent.pagerTemplate;\n this.parent.pageTemplateChange = true;\n }\n this.element = this.parent.createElement('div', { className: 'e-gridpager' });\n var pagerObj = gridExtend({}, extend({}, getActualProperties(this.pageSettings)), {\n click: this.clickHandler.bind(this),\n dropDownChanged: this.onSelect.bind(this),\n enableRtl: gObj.enableRtl, locale: gObj.locale,\n created: this.addAriaAttr.bind(this)\n }, ['parentObj', 'propName']);\n pagerObj.cssClass = this.parent.cssClass ? this.parent.cssClass : '';\n this.pagerObj = new Pager(pagerObj, undefined, this.parent);\n this.pagerObj.hasParent = true;\n this.pagerObj.on(events.pagerRefresh, this.renderReactPagerTemplate, this);\n this.pagerObj.allowServerDataBinding = false;\n };\n Page.prototype.onSelect = function (e) {\n this.pageSettings.pageSize = e.pageSize;\n if (!this.isInitialLoad) {\n this.pageSettings.currentPage = 1;\n }\n };\n Page.prototype.addAriaAttr = function () {\n if (!(this.pageSettings.template)) {\n var numericContainerNew = this.parent.createElement('div', { className: 'e-numericcontainer' });\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n var frag = document.createDocumentFragment();\n var numericContainer = this.element.querySelector('.e-numericcontainer');\n var links = numericContainer.querySelectorAll('a');\n for (var i = 0; i < links.length; i++) {\n if (this.parent.getContentTable()) {\n links[parseInt(i.toString(), 10)].setAttribute('aria-owns', this.parent.getContentTable().id);\n }\n else {\n links[parseInt(i.toString(), 10)].setAttribute('aria-owns', this.parent.element.getAttribute('id') + '_content_table');\n }\n var numericContainerDiv = this.parent.createElement('div');\n numericContainerDiv.appendChild(links[parseInt(i.toString(), 10)]);\n frag.appendChild(numericContainerDiv);\n }\n numericContainerNew.appendChild(frag);\n pagerContainer.replaceChild(numericContainerNew, numericContainer);\n var classList = ['.e-mfirst', '.e-mprev', '.e-first', '.e-prev', '.e-next', '.e-last', '.e-mnext', '.e-mlast'];\n for (var j = 0; j < classList.length; j++) {\n var element = this.element.querySelector(classList[parseInt(j.toString(), 10)]);\n if (this.parent.getContentTable()) {\n element.setAttribute('aria-owns', this.parent.getContentTable().id);\n }\n }\n }\n };\n Page.prototype.dataReady = function (e) {\n this.updateModel(e);\n };\n /**\n * Refreshes the page count, pager information, and external message.\n *\n * @returns {void}\n */\n Page.prototype.refresh = function () {\n this.pagerObj.refresh();\n };\n /**\n * Navigates to the target page according to the given number.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n * @returns {void}\n */\n Page.prototype.goToPage = function (pageNo) {\n this.pagerObj.goToPage(pageNo);\n };\n /**\n * @param {number} pageSize - specifies the page size\n * @returns {void}\n * @hidden\n */\n Page.prototype.setPageSize = function (pageSize) {\n this.pagerObj.setPageSize(pageSize);\n };\n /**\n * The function used to update pageSettings model\n *\n * @param {NotifyArgs} e - specfies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.updateModel = function (e) {\n this.parent.pageSettings.totalRecordsCount = e.count;\n if (this.pagerObj.isAllPage) {\n this.parent.pageSettings.pageSize = this.parent.pageSettings.totalRecordsCount;\n }\n if ((e.action === 'add' && e.requestType === 'save') || (e.requestType === 'batchsave')) {\n if (this.pagerObj.isAllPage && (e.count === this.pageSettings.pageSize)) {\n this.pagerObj.setProperties({ pageSize: e.count }, true);\n }\n }\n this.parent.dataBind();\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.onActionComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, {\n currentPage: this.parent.pageSettings.currentPage, requestType: 'paging',\n type: events.actionComplete\n }));\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var newProp = e.properties;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n this.pagerObj[\"\" + prop] = newProp[\"\" + prop];\n }\n this.pagerObj.dataBind();\n };\n Page.prototype.clickHandler = function (e) {\n var gObj = this.parent;\n if (this.isForceCancel || isActionPrevent(gObj) && !gObj.prevPageMoving && !this.isCancel) {\n if (!this.isForceCancel) {\n if (!isNullOrUndefined(e.newProp) && !isNullOrUndefined(e.newProp.pageSize)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.setPageSize, arg1: e.newProp.pageSize });\n this.pagerObj.setProperties({ pageSize: e.oldProp.pageSize }, true);\n gObj.setProperties({ pageSettings: { pageSize: e.oldProp.pageSize } }, true);\n this.pagerObj.setProperties({\n currentPage: gObj.pageSettings.currentPage === this.pagerObj.currentPage ?\n this.pagerObj.previousPageNo : gObj.pageSettings.currentPage\n }, true);\n }\n else if (e.currentPage) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.goToPage, arg1: e.currentPage });\n this.pagerObj.currentPage = gObj.pageSettings.currentPage === this.pagerObj.currentPage ?\n this.pagerObj.previousPageNo : gObj.pageSettings.currentPage;\n }\n this.isForceCancel = true;\n this.pagerObj.dataBind();\n }\n else {\n this.isForceCancel = false;\n }\n e.cancel = true;\n return;\n }\n gObj.pageSettings.pageSize = this.pagerObj.pageSize;\n gObj.prevPageMoving = false;\n var prevPage = this.pageSettings.currentPage;\n var args = {\n cancel: false, requestType: 'paging', previousPage: prevPage,\n currentPage: e.currentPage, pageSize: gObj.pageSettings.pageSize, type: events.actionBegin\n };\n if (!this.isCancel) {\n this.pageSettings.currentPage = e.currentPage;\n this.parent.notify(events.modelChanged, args);\n }\n if (args.cancel) {\n e.cancel = true;\n this.parent.setProperties({ pageSettings: { currentPage: prevPage } }, true);\n this.pagerObj.setProperties({ currentPage: prevPage }, true);\n this.isCancel = true;\n return;\n }\n this.isCancel = false;\n this.parent.requestTypeAction = 'paging';\n };\n Page.prototype.keyPressHandler = function (e) {\n if (e.action in keyActions) {\n e.preventDefault();\n this.element.querySelector(keyActions[e.action]).click();\n }\n };\n /**\n * Defines the text of the external message.\n *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n Page.prototype.updateExternalMessage = function (message) {\n if (!this.pagerObj.enableExternalMessage) {\n this.pagerObj.enableExternalMessage = true;\n this.pagerObj.dataBind();\n }\n this.pagerObj.externalMessage = message;\n this.pagerObj.dataBind();\n };\n Page.prototype.appendToElement = function () {\n this.isInitialLoad = true;\n this.parent.element.appendChild(this.element);\n this.parent.setGridPager(this.element);\n this.pagerObj.isReact = this.parent.isReact;\n this.pagerObj.isVue = this.parent.isVue;\n this.pagerObj.appendTo(this.element);\n this.isInitialLoad = false;\n };\n Page.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.appendToElement();\n if (this.isReactTemplate()) {\n this.pagerObj.updateTotalPages();\n this.created();\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Page.prototype.addEventListener = function () {\n this.handlers = {\n load: this.render,\n end: this.appendToElement,\n ready: this.dataReady,\n complete: this.onActionComplete,\n updateLayout: this.enableAfterRender,\n inboundChange: this.onPropertyChanged,\n keyPress: this.keyPressHandler,\n created: this.created\n };\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n this.parent.addEventListener(literals.create, this.handlers.created.bind(this));\n }\n this.evtHandlers = [{ event: events.initialLoad, handler: this.handlers.load },\n { event: events.initialEnd, handler: this.handlers.end },\n { event: events.dataReady, handler: this.handlers.ready },\n { event: events.pageComplete, handler: this.handlers.complete },\n { event: events.uiUpdate, handler: this.handlers.updateLayout },\n { event: events.inBoundModelChanged, handler: this.handlers.inboundChange },\n { event: events.keyPressed, handler: this.handlers.keyPress },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n Page.prototype.created = function () {\n if (this.isInitialRender && this.isReactTemplate()) {\n this.isInitialRender = false;\n this.renderReactPagerTemplate();\n }\n };\n Page.prototype.isReactTemplate = function () {\n return (this.parent.isReact || this.parent.isVue) && this.pagerObj.template && typeof (this.pagerObj.template) !== 'string';\n };\n Page.prototype.renderReactPagerTemplate = function () {\n if (!this.isInitialRender && this.isReactTemplate()) {\n var result = void 0;\n this.parent.destroyTemplate(['pagerTemplate']);\n this.element.classList.add('e-pagertemplate');\n this.pagerObj.compile(this.pagerObj.template);\n var page = this.parent.pageSettings;\n var data = {\n currentPage: page.currentPage, pageSize: page.pageSize, pageCount: page.pageCount,\n totalRecordsCount: page.totalRecordsCount, totalPages: this.pagerObj.totalPages\n };\n var tempId = this.parent.id + '_pagertemplate';\n if (this.parent.isReact) {\n this.pagerObj.templateFn(data, this.parent, 'pagerTemplate', tempId, null, null, this.pagerObj.element);\n this.parent.renderTemplates();\n }\n else {\n result = this.pagerObj.templateFn(data, this.parent, 'pagerTemplate');\n appendChildren(this.pagerObj.element, result);\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Page.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n this.parent.removeEventListener(literals.create, this.handlers.created);\n }\n this.parent.off(events.pagerRefresh, this.renderReactPagerTemplate);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * To destroy the pager\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.destroy = function () {\n this.removeEventListener();\n if (this.isReactTemplate()) {\n this.parent.destroyTemplate(['pagerTemplate']);\n }\n this.pagerObj.destroy();\n };\n Page.prototype.pagerDestroy = function () {\n if (this.pagerObj && !this.pagerObj.isDestroyed) {\n this.pagerObj.destroy();\n remove(this.element);\n }\n };\n return Page;\n}());\nexport { Page };\n/**\n * @hidden\n */\nvar keyActions = {\n pageUp: '.e-prev',\n pageDown: '.e-next',\n ctrlAltPageDown: '.e-last',\n ctrlAltPageUp: '.e-first',\n altPageUp: '.e-pp',\n altPageDown: '.e-np'\n};\n","import { Browser, EventHandler, createElement } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { remove, closest, select } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { setCssInGridPopUp, getPosition, isGroupAdaptive, addRemoveActiveClasses, removeAddCboxClasses } from '../base/util';\nimport { getCellsByTableName, parentsUntil, getScrollBarWidth } from '../base/util';\nimport * as events from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { iterateExtend, setChecked, isComplexField, getObject } from '../base/util';\nimport { addRemoveEventListener } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * The `Selection` module is used to handle cell and row selection.\n */\nvar Selection = /** @class */ (function () {\n /**\n * Constructor for the Grid selection module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {SelectionSettings} selectionSettings - specifies the selectionsettings\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function Selection(parent, selectionSettings, locator) {\n //Internal letiables\n /**\n * @hidden\n */\n this.selectedRowIndexes = [];\n /**\n * @hidden\n */\n this.selectedRowCellIndexes = [];\n /**\n * @hidden\n */\n this.selectedRecords = [];\n /**\n * @hidden\n */\n this.preventFocus = false;\n /**\n * @hidden\n */\n this.selectedColumnsIndexes = [];\n this.checkBoxState = false;\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n this.isMultiCtrlRequestCell = false;\n this.enableSelectMultiTouch = false;\n this.clearRowCheck = false;\n this.selectRowCheck = false;\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.totalRecordsCount = 0;\n this.chkAllCollec = [];\n this.isCheckedOnAdd = false;\n this.persistSelectedData = [];\n this.deSelectedData = [];\n this.isHdrSelectAllClicked = false;\n this.needColumnSelection = false;\n this.isCancelDeSelect = false;\n this.isPreventCellSelect = false;\n this.disableUI = false;\n this.isPersisted = false;\n this.cmdKeyPressed = false;\n this.cellselected = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.initialRowSelection = false;\n this.isPrevRowSelection = false;\n this.isKeyAction = false;\n this.isRowDragSelected = false;\n this.isPartialSelection = false;\n this.rmtHdrChkbxClicked = false;\n this.isCheckboxReset = false;\n /**\n * @hidden\n */\n this.autoFillRLselection = true;\n this.bottom = '0 0 2px 0';\n this.top = '2px 0 0 0';\n /* eslint-disable */\n this.right_bottom = '0 2px 2px 0';\n this.bottom_left = '0 0 2px 2px';\n this.top_right = '2px 2px 0 0';\n this.top_left = '2px 0 0 2px';\n this.top_bottom = '2px 0 2px 0';\n this.top_right_bottom = '2px 2px 2px 0';\n this.top_bottom_left = '2px 0 2px 2px';\n this.top_right_left = '2px 2px 0 2px';\n this.right_bottom_left = '0 2px 2px 2px';\n this.all_border = '2px';\n this.parent = parent;\n this.selectionSettings = selectionSettings;\n this.factory = locator.getService('rendererFactory');\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.wireEvents();\n }\n Selection.prototype.initializeSelection = function () {\n this.parent.log('selection_key_missing');\n this.render();\n };\n /**\n * The function used to trigger onActionBegin\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionBegin = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n };\n Selection.prototype.fDataUpdate = function (args) {\n if (!this.isMultiSelection && (!isNullOrUndefined(args.cellIndex) || !isNullOrUndefined(args.rowIndex))) {\n var rowObj = this.getRowObj(isNullOrUndefined(args.rowIndex) ? isNullOrUndefined(args.cellIndex) ?\n this.currentIndex : args.cellIndex.rowIndex : args.rowIndex);\n args.foreignKeyData = rowObj.foreignKeyData;\n }\n return args;\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionComplete = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n this.isMultiSelection = false;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n /**\n * To destroy the selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.hidePopUp();\n this.clearSelection();\n this.removeEventListener();\n this.unWireEvents();\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n };\n Selection.prototype.isEditing = function () {\n return (this.parent.editSettings.mode === 'Normal' || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule &&\n this.parent.editModule.formObj && !this.parent.editModule.formObj.validate())) &&\n this.parent.isEdit && !this.parent.isPersistSelection;\n };\n Selection.prototype.getCurrentBatchRecordChanges = function () {\n var gObj = this.parent;\n if (gObj.editSettings.mode === 'Batch' && gObj.editModule) {\n var currentRecords = iterateExtend(this.parent.getCurrentViewRecords());\n currentRecords = gObj.editSettings.newRowPosition === 'Bottom' ?\n currentRecords.concat(this.parent.editModule.getBatchChanges()[literals.addedRecords]) :\n this.parent.editModule.getBatchChanges()[literals.addedRecords].concat(currentRecords);\n var deletedRecords = this.parent.editModule.getBatchChanges()[literals.deletedRecords];\n var primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < (deletedRecords.length); i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (deletedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey] === currentRecords[parseInt(j.toString(), 10)][\"\" + primaryKey]) {\n currentRecords.splice(j, 1);\n break;\n }\n }\n }\n return currentRecords;\n }\n else if (this.parent.enableVirtualization && this.parent.groupSettings.columns.length && !this.parent.isPersistSelection) {\n var selectedGroupedData = gObj.getCurrentViewRecords().filter(function (col) { return col['key'] === undefined; });\n return selectedGroupedData;\n }\n else {\n return gObj.getCurrentViewRecords();\n }\n };\n /**\n * Selects a row by the given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectRow = function (index, isToggle) {\n if (this.selectedRowIndexes.length && this.selectionSettings.enableSimpleMultiRowSelection) {\n this.addRowsToSelection([index]);\n return;\n }\n var gObj = this.parent;\n var selectedRow = gObj.getRowByIndex(index);\n var rowObj = selectedRow && gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid'));\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n return;\n }\n var selectData;\n var isRemoved = false;\n if (gObj.enableVirtualization && index > -1) {\n var e = { selectedIndex: index, isAvailable: true };\n this.parent.notify(events.selectVirtualRow, e);\n if (selectedRow && (gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')))) {\n selectData = gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')).data;\n }\n else {\n if (e.isAvailable && !gObj.selectionSettings.persistSelection) {\n var prevSelectedData = this.parent.getSelectedRecords();\n if (prevSelectedData.length > 0) {\n this.clearRowSelection();\n }\n }\n return;\n }\n }\n else {\n selectData = this.getRowObj(index).data;\n }\n if (!this.isRowType() || !selectedRow || this.isEditing()) {\n // if (this.isEditing()) {\n // gObj.selectedRowIndex = index;\n // }\n return;\n }\n var isRowSelected = selectedRow.hasAttribute('aria-selected');\n this.activeTarget();\n isToggle = !isToggle ? isToggle :\n !this.selectedRowIndexes.length ? false :\n (this.selectedRowIndexes.length === 1 ? (this.isKeyAction && this.parent.isCheckBoxSelection ?\n false : index === this.selectedRowIndexes[0]) : false);\n this.isKeyAction = false;\n var args;\n var can = 'cancel';\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest, row: selectedRow,\n previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can));\n }\n else {\n this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can)(args);\n }\n };\n Selection.prototype.rowSelectingCallBack = function (args, isToggle, index, selectData, isRemoved, isRowSelected, can) {\n var _this = this;\n return function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n _this.index = index;\n _this.toggle = isToggle;\n _this.data = selectData;\n _this.removed = isRemoved;\n if (isRowSelected && _this.selectionSettings.persistSelection && !(_this.selectionSettings.checkboxMode === 'ResetOnRowClick')) {\n _this.clearSelectedRow(index);\n _this.selectRowCallBack();\n }\n else if (!isRowSelected && _this.selectionSettings.persistSelection &&\n _this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n _this.selectRowCallBack();\n }\n if (_this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n _this.isCheckboxReset = true;\n _this.clearSelection();\n }\n if (!_this.selectionSettings.persistSelection || _this.selectionSettings.checkboxMode === 'ResetOnRowClick' ||\n (!_this.parent.isCheckBoxSelection && _this.selectionSettings.persistSelection)) {\n _this.selectRowCheck = true;\n _this.clearRow();\n }\n };\n };\n Selection.prototype.selectRowCallBack = function () {\n var gObj = this.parent;\n var args;\n var index = this.index;\n var isToggle = this.toggle;\n var selectData = this.data;\n var isRemoved = this.removed;\n var selectedRow = gObj.getRowByIndex(index);\n if (!isToggle && !isRemoved) {\n if (this.selectedRowIndexes.indexOf(index) <= -1) {\n this.updateRowSelection(selectedRow, index);\n }\n this.selectRowIndex(index);\n }\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index,\n row: selectedRow, previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, isInteracted: this.isInteracted,\n isHeaderCheckBoxClicked: this.isHeaderCheckboxClicked, rowIndexes: index\n };\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(index);\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @returns {void}\n */\n Selection.prototype.selectRowsByRange = function (startIndex, endIndex) {\n this.selectRows(this.getCollectionFromIndexes(startIndex, endIndex));\n this.selectRowIndex(endIndex);\n };\n Selection.prototype.selectedDataUpdate = function (selectedData, foreignKeyData, selectedRows, rowIndexes, selectableRowIndex) {\n for (var i = 0, len = rowIndexes.length; i < len; i++) {\n var currentRow = this.parent.getDataRows()[rowIndexes[parseInt(i.toString(), 10)]];\n if (this.parent.enableVirtualization) {\n currentRow = this.parent.getRowByIndex(rowIndexes[parseInt(i.toString(), 10)]);\n }\n var rowObj = this.getRowObj(currentRow);\n if (rowObj && rowObj.isDataRow && rowObj.isSelectable) {\n selectedData.push(rowObj.data);\n selectedRows.push(currentRow);\n foreignKeyData.push(rowObj.foreignKeyData);\n }\n else {\n if (this.isPartialSelection && selectableRowIndex) {\n selectableRowIndex.splice(selectableRowIndex.indexOf(rowIndexes[parseInt(i.toString(), 10)]), 1);\n }\n }\n }\n };\n /**\n * Selects a collection of rows by index.\n *\n * @param {number[]} rowIndexes - Specifies an array of row indexes.\n * @returns {void}\n */\n Selection.prototype.selectRows = function (rowIndexes) {\n var _this = this;\n var gObj = this.parent;\n var selectableRowIndex = rowIndexes.slice();\n var rowIndex = !this.isSingleSel() ? rowIndexes[0] : rowIndexes[rowIndexes.length - 1];\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var can = 'cancel';\n var selectedData = [];\n if (!this.isRowType() || this.isEditing()) {\n return;\n }\n this.selectedDataUpdate(selectedData, foreignKeyData, selectedRows, rowIndexes, selectableRowIndex);\n this.activeTarget();\n var args = {\n cancel: false,\n rowIndexes: selectableRowIndex, row: selectedRows, rowIndex: rowIndex, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n isInteracted: this.isInteracted, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n data: selectedData, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n if (!(gObj.allowRowDragAndDrop && _this.isDragged && _this.selectionSettings.persistSelection)) {\n _this.clearRow();\n }\n _this.selectRowIndex(selectableRowIndex.slice(-1)[0]);\n var selectRowFn = function (index, preventFocus) {\n _this.updateRowSelection(gObj.getRowByIndex(index), index, preventFocus);\n _this.updateRowProps(rowIndex);\n };\n if (!_this.isSingleSel()) {\n for (var _i = 0, selectableRowIndex_1 = selectableRowIndex; _i < selectableRowIndex_1.length; _i++) {\n var rowIdx = selectableRowIndex_1[_i];\n selectRowFn(rowIdx, gObj.enableVirtualization ? true : false);\n }\n }\n else {\n selectRowFn(rowIndex);\n }\n args = {\n rowIndexes: selectableRowIndex, row: selectedRows, rowIndex: rowIndex, target: _this.actualTarget,\n prevRow: gObj.getRows()[_this.prevRowIndex], previousRowIndex: _this.prevRowIndex,\n data: _this.getSelectedRecords(), isInteracted: _this.isInteracted,\n isHeaderCheckboxClicked: _this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n if (_this.isRowSelected) {\n _this.onActionComplete(args, events.rowSelected);\n }\n _this.isInteracted = false;\n });\n };\n /**\n * Select rows with existing row selection by passing row indexes.\n *\n * @param {number} rowIndexes - Specifies the row indexes.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addRowsToSelection = function (rowIndexes) {\n var gObj = this.parent;\n var can = 'cancel';\n var target = this.target;\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var selectedData = [];\n var indexes = gObj.getSelectedRowIndexes().concat(rowIndexes);\n var selectedRow = !this.isSingleSel() ? gObj.getRowByIndex(rowIndexes[0]) :\n gObj.getRowByIndex(rowIndexes[rowIndexes.length - 1]);\n if ((!this.isRowType() || this.isEditing()) && !this.selectionSettings.checkboxOnly) {\n return;\n }\n var args;\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (this.isMultiCtrlRequest && !checkboxColumn.length) {\n this.selectedDataUpdate(selectedData, foreignKeyData, selectedRows, indexes);\n }\n for (var _i = 0, rowIndexes_1 = rowIndexes; _i < rowIndexes_1.length; _i++) {\n var rowIndex = rowIndexes_1[_i];\n var rowObj = this.getRowObj(rowIndex);\n var isUnSelected = this.selectedRowIndexes.indexOf(rowIndex) > -1;\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n continue;\n }\n this.selectRowIndex(rowIndex);\n if (isUnSelected && ((checkboxColumn.length ? true : this.selectionSettings.enableToggle) || this.isMultiCtrlRequest)) {\n this.isAddRowsToSelection = true;\n this.rowDeselect(events.rowDeselecting, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target);\n if (this.isCancelDeSelect) {\n return;\n }\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(rowIndex), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedRow), 1);\n this.selectRowIndex(this.selectedRowIndexes.length ? this.selectedRowIndexes[this.selectedRowIndexes.length - 1] : -1);\n selectedRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedRow, false, null, 'e-selectionbackground', 'e-active');\n this.rowDeselect(events.rowDeselected, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target, undefined, undefined, undefined);\n this.isInteracted = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.isHdrSelectAllClicked = false;\n }\n else {\n this.activeTarget();\n args = {\n cancel: false,\n data: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n foreignKeyData: foreignKeyData.length ? foreignKeyData : rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args));\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n this.disableInteracted();\n return;\n }\n if (this.isSingleSel()) {\n this.clearRow();\n }\n this.updateRowSelection(selectedRow, rowIndex);\n }\n if (!isUnSelected) {\n args = {\n data: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, foreignKeyData: foreignKeyData.length ? foreignKeyData : rowObj.foreignKeyData,\n isInteracted: this.isInteracted, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(rowIndex);\n if (this.isSingleSel()) {\n break;\n }\n }\n };\n Selection.prototype.getCollectionFromIndexes = function (startIndex, endIndex) {\n var indexes = [];\n // eslint-disable-next-line prefer-const\n var _a = (startIndex <= endIndex) ?\n { i: startIndex, max: endIndex } : { i: endIndex, max: startIndex }, i = _a.i, max = _a.max;\n for (; i <= max; i++) {\n indexes.push(i);\n }\n if (startIndex > endIndex) {\n indexes.reverse();\n }\n return indexes;\n };\n Selection.prototype.clearRow = function () {\n this.clearRowCheck = true;\n this.clearRowSelection();\n };\n Selection.prototype.clearRowCallBack = function () {\n if (this.isCancelDeSelect && this.parent.checkAllRows !== 'Check') {\n return;\n }\n this.selectedRowIndexes = [];\n this.selectedRecords = [];\n this.selectRowIndex(-1);\n if (this.isSingleSel() && this.parent.isPersistSelection) {\n this.selectedRowState = {};\n }\n };\n Selection.prototype.clearSelectedRow = function (index) {\n if (this.toggle) {\n var selectedEle = this.parent.getRowByIndex(index);\n if (!this.disableUI) {\n selectedEle.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedEle, false, true, 'e-selectionbackground', 'e-active');\n }\n this.removed = true;\n this.updatePersistCollection(selectedEle, false);\n this.updateCheckBoxes(selectedEle);\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(index), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(this.parent.getRowByIndex(index)), 1);\n }\n };\n Selection.prototype.updateRowProps = function (startIndex) {\n this.prevRowIndex = startIndex;\n this.isRowSelected = this.selectedRowIndexes.length && true;\n };\n Selection.prototype.getPkValue = function (pkField, data) {\n return pkField ? isComplexField(pkField) ? getObject(pkField, data) : data[\"\" + pkField] : data[\"\" + pkField];\n };\n Selection.prototype.updatePersistCollection = function (selectedRow, chkState) {\n var _this = this;\n if ((this.parent.isPersistSelection || this.parent.selectionSettings.persistSelection &&\n this.parent.getPrimaryKeyFieldNames().length > 0) && !isNullOrUndefined(selectedRow)) {\n if (!this.parent.isPersistSelection) {\n this.ensureCheckboxFieldSelection();\n }\n var rowObj = this.getRowObj(selectedRow);\n var pKey_1 = rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null;\n if (pKey_1 === null) {\n return;\n }\n rowObj.isSelected = chkState;\n if ((chkState && !this.isPartialSelection) || (this.isPartialSelection && rowObj.isSelectable && rowObj.isSelected)) {\n this.selectedRowState[\"\" + pKey_1] = chkState;\n delete (this.unSelectedRowState[\"\" + pKey_1]);\n if (!this.persistSelectedData.some(function (data) { return _this.getPkValue(_this.primaryKey, data) === pKey_1; })) {\n this.persistSelectedData.push(rowObj.data);\n }\n }\n else {\n this.updatePersistDelete(pKey_1);\n }\n }\n };\n Selection.prototype.updatePersistDelete = function (pKey, isPartialSelection) {\n var _this = this;\n delete (this.selectedRowState[\"\" + pKey]);\n if (this.rmtHdrChkbxClicked) {\n this.unSelectedRowState[\"\" + pKey] = true;\n }\n var index;\n var isPresent = this.persistSelectedData.some(function (data, i) {\n index = i;\n return _this.getPkValue(_this.primaryKey, data) === pKey;\n });\n if (isPresent) {\n this.persistSelectedData.splice(index, 1);\n if (isPartialSelection) {\n this.parent.partialSelectedRecords.splice(index, 1);\n }\n }\n };\n Selection.prototype.updateCheckBoxes = function (row, chkState, rowIndex) {\n if (!isNullOrUndefined(row)) {\n var chkBox = row.querySelector('.e-checkselect');\n if (!isNullOrUndefined(chkBox)) {\n removeAddCboxClasses(chkBox.nextElementSibling, chkState);\n setChecked(chkBox, chkState);\n if (isNullOrUndefined(this.checkedTarget) || (!isNullOrUndefined(this.checkedTarget)\n && !this.checkedTarget.classList.contains('e-checkselectall'))) {\n this.setCheckAllState(rowIndex);\n }\n }\n }\n };\n Selection.prototype.updateRowSelection = function (selectedRow, startIndex, preventFocus) {\n if (!selectedRow) {\n return;\n }\n if (this.selectedRowIndexes.indexOf(startIndex) === -1) {\n this.selectedRowIndexes.push(startIndex);\n this.selectedRecords.push(selectedRow);\n }\n selectedRow.setAttribute('aria-selected', 'true');\n this.updatePersistCollection(selectedRow, true);\n this.updateCheckBoxes(selectedRow, true);\n this.addRemoveClassesForRow(selectedRow, true, null, 'e-selectionbackground', 'e-active');\n if (!this.preventFocus) {\n var target = this.focus.getPrevIndexes().cellIndex ?\n selectedRow.cells[this.focus.getPrevIndexes().cellIndex] :\n selectedRow.querySelector('.e-selectionbackground:not(.e-hide):not(.e-detailrowcollapse):not(.e-detailrowexpand)');\n if (this.parent.contextMenuModule && this.mouseButton === 2) {\n target = this.parent.contextMenuModule.cell;\n }\n if (!target || preventFocus) {\n return;\n }\n this.focus.onClick({ target: target }, true);\n }\n };\n /**\n * Deselects the currently selected rows and cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearSelection = function () {\n this.checkSelectAllClicked = true;\n if (this.selectionSettings.persistSelection && this.persistSelectedData.length) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (!this.parent.isPersistSelection || (this.parent.isPersistSelection && !this.parent.isEdit) ||\n (!isNullOrUndefined(this.checkedTarget) && this.checkedTarget.classList.contains('e-checkselectall'))) {\n var span = this.parent.element.querySelector('.e-gridpopup').querySelector('span');\n if (span.classList.contains('e-rowselect')) {\n span.classList.remove('e-spanclicked');\n }\n if (this.parent.isPersistSelection) {\n this.persistSelectedData = [];\n this.selectedRowState = {};\n }\n this.clearRowSelection();\n this.clearCellSelection();\n this.clearColumnSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n this.enableSelectMultiTouch = false;\n this.isInteracted = false;\n this.checkSelectAllClicked = false;\n this.isHdrSelectAllClicked = false;\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Selection.prototype.clearRowSelection = function () {\n var _this = this;\n if (this.isRowSelected) {\n var rows_1 = this.parent.getDataRows();\n var data_1 = [];\n var row_1 = [];\n var rowIndex_1 = [];\n var foreignKeyData_1 = [];\n var target_1 = this.target;\n for (var i = 0, len = this.selectedRowIndexes.length; i < len; i++) {\n var currentRow = this.parent.editSettings.mode === 'Batch' ?\n this.parent.getRows()[this.selectedRowIndexes[parseInt(i.toString(), 10)]]\n : this.parent.getDataRows()[this.selectedRowIndexes[parseInt(i.toString(), 10)]];\n var rowObj = this.getRowObj(currentRow);\n if (rowObj) {\n data_1.push(rowObj.data);\n row_1.push(currentRow);\n rowIndex_1.push(this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n foreignKeyData_1.push(rowObj.foreignKeyData);\n }\n }\n if (this.selectionSettings.persistSelection && this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n this.isRowClicked = this.checkSelectAllClicked ? true : false;\n }\n this.rowDeselect(events.rowDeselecting, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, null, function () {\n if (_this.isCancelDeSelect && (_this.isRowClicked || _this.checkSelectAllClicked || (_this.isInteracted &&\n !_this.parent.isPersistSelection))) {\n if (_this.parent.isPersistSelection) {\n if (_this.getCheckAllStatus(_this.parent.element.querySelector('.e-checkselectall')) === 'Intermediate') {\n for (var i = 0; i < _this.selectedRecords.length; i++) {\n _this.updatePersistCollection(_this.selectedRecords[parseInt(i.toString(), 10)], true);\n }\n }\n else {\n _this.parent.checkAllRows = 'Check';\n _this.updatePersistSelectedData(true);\n }\n }\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n return;\n }\n var element = [].slice.call(rows_1.filter(function (record) { return record.hasAttribute('aria-selected'); }));\n for (var j = 0; j < element.length; j++) {\n if (!_this.disableUI) {\n element[parseInt(j.toString(), 10)].removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(element[parseInt(j.toString(), 10)], false, true, 'e-selectionbackground', 'e-active');\n }\n // tslint:disable-next-line:align\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(element[parseInt(j.toString(), 10)], false);\n }\n _this.updateCheckBoxes(element[parseInt(j.toString(), 10)]);\n }\n _this.selectedRowIndexes = [];\n _this.selectedRecords = [];\n _this.isRowSelected = false;\n _this.selectRowIndex(-1);\n _this.isPrevRowSelection = false;\n _this.rowDeselect(events.rowDeselected, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, null, undefined, null);\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n }, null);\n }\n else {\n if (this.clearRowCheck) {\n this.clearRowCallBack();\n this.clearRowCheck = false;\n if (this.selectRowCheck) {\n this.selectRowCallBack();\n this.selectRowCheck = false;\n }\n }\n }\n };\n Selection.prototype.rowDeselect = function (type, rowIndex, data, row, foreignKeyData, target, mRow, rowDeselectCallBack, frozenRightRow) {\n var _this = this;\n if ((this.selectionSettings.persistSelection && (this.isRowClicked || this.checkSelectAllClicked || (this.focus['activeKey'] &&\n this.focus.currentInfo.element.classList.contains('e-gridchkbox') && this.focus['activeKey'] === 'space'))) ||\n !this.selectionSettings.persistSelection) {\n var cancl_1 = 'cancel';\n var isSingleDeSel = rowIndex.length === 1 && this.deSelectedData.length === 1;\n var rowDeselectObj = {\n rowIndex: rowIndex[0], data: this.selectionSettings.persistSelection && (this.parent.checkAllRows === 'Uncheck' &&\n !isSingleDeSel) && this.selectionSettings.checkboxMode !== 'ResetOnRowClick' ? this.deSelectedData : data,\n foreignKeyData: foreignKeyData, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n if (type === 'rowDeselected') {\n delete rowDeselectObj.cancel;\n }\n var rowInString = 'row';\n var target_2 = 'target';\n var rowidx = 'rowIndex';\n var rowidxex = 'rowIndexes';\n var dataTxt = 'data';\n var foreignKey = 'foreignKeyData';\n rowDeselectObj[\"\" + rowInString] = row;\n rowDeselectObj[\"\" + target_2] = this.actualTarget;\n var isHeaderCheckBxClick = this.actualTarget && !isNullOrUndefined(closest(this.actualTarget, 'thead'));\n if (isHeaderCheckBxClick || rowIndex.length > 1) {\n rowDeselectObj[\"\" + rowidx] = rowIndex[0];\n rowDeselectObj[\"\" + rowidxex] = rowIndex;\n }\n else if (rowIndex.length === 1) {\n rowDeselectObj[\"\" + dataTxt] = rowDeselectObj[\"\" + dataTxt][0];\n rowDeselectObj[\"\" + rowInString] = rowDeselectObj[\"\" + rowInString][0];\n rowDeselectObj[\"\" + foreignKey] = rowDeselectObj[\"\" + foreignKey][0];\n if (this.isAddRowsToSelection) {\n rowDeselectObj[\"\" + rowidxex] = rowIndex;\n }\n }\n this.parent.trigger(type, rowDeselectObj, function (args) {\n _this.isCancelDeSelect = args[\"\" + cancl_1];\n if (!_this.isCancelDeSelect || (!_this.isRowClicked && !_this.isInteracted && !_this.checkSelectAllClicked)) {\n _this.updatePersistCollection(row[0], false);\n _this.updateCheckBoxes(row[0], undefined, rowIndex[0]);\n }\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n });\n }\n else if (this.selectionSettings.persistSelection && !this.isInteracted) {\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n }\n };\n Selection.prototype.getRowObj = function (row) {\n if (row === void 0) { row = this.currentIndex; }\n if (isNullOrUndefined(row)) {\n return {};\n }\n if (typeof row === 'number') {\n row = this.parent.getRowByIndex(row);\n }\n if (row) {\n return this.parent.getRowObjectFromUID(row.getAttribute('data-uid')) || {};\n }\n return {};\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectCell = function (cellIndex, isToggle) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var args;\n var selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n this.currentIndex = cellIndex.rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (!this.isCellType() || !selectedCell || this.isEditing()) {\n return;\n }\n var isCellSelected = selectedCell.classList.contains('e-cellselectionbackground');\n isToggle = !isToggle ? isToggle : (!isUndefined(this.prevCIdxs) &&\n cellIndex.rowIndex === this.prevCIdxs.rowIndex && cellIndex.cellIndex === this.prevCIdxs.cellIndex &&\n isCellSelected);\n if (!isToggle) {\n args = {\n data: selectedData, cellIndex: cellIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ?\n this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined,\n cancel: false\n };\n var currentCell = 'currentCell';\n args[\"\" + currentCell] = selectedCell;\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData));\n this.cellselected = true;\n }\n else {\n this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData)(args);\n }\n };\n Selection.prototype.successCallBack = function (cellSelectingArgs, isToggle, cellIndex, selectedCell, selectedData) {\n var _this = this;\n return function (cellSelectingArgs) {\n var cncl = 'cancel';\n var currentCell = 'currentCell';\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[\"\" + cncl] === true) {\n return;\n }\n if (!isToggle) {\n cellSelectingArgs[\"\" + currentCell] = cellSelectingArgs[\"\" + currentCell] ? cellSelectingArgs[\"\" + currentCell] : selectedCell;\n }\n _this.clearCell();\n if (!isToggle) {\n _this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isToggle) {\n var args = {\n data: selectedData, cellIndex: cellIndex, currentCell: selectedCell,\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ?\n _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = _this.prevECIdxs;\n _this.updateCellProps(cellIndex, cellIndex);\n _this.onActionComplete(args, events.cellSelected);\n }\n };\n };\n Selection.prototype.getCellIndex = function (rIdx, cIdx) {\n return this.parent.getCellFromIndex(rIdx, cIdx);\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n * @returns {void}\n */\n Selection.prototype.selectCellsByRange = function (startIndex, endIndex) {\n var _this = this;\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = gObj.getCellFromIndex(startIndex.rowIndex, startIndex.cellIndex);\n var min;\n var max;\n var stIndex = startIndex;\n var edIndex = endIndex = endIndex ? endIndex : startIndex;\n var cellIndexes;\n this.currentIndex = startIndex.rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var args = {\n data: selectedData, cellIndex: startIndex, currentCell: selectedCell,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), function (cellSelectingArgs) {\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[\"\" + cncl] === true) {\n return;\n }\n _this.clearCell();\n if (startIndex.rowIndex > endIndex.rowIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex.rowIndex; i <= endIndex.rowIndex; i++) {\n if (_this.selectionSettings.cellSelectionMode.indexOf('Box') < 0) {\n min = i === startIndex.rowIndex ? (startIndex.cellIndex) : 0;\n max = i === endIndex.rowIndex ? (endIndex.cellIndex) : _this.getLastColIndex(i);\n }\n else {\n min = startIndex.cellIndex;\n max = endIndex.cellIndex;\n }\n cellIndexes = [];\n for (var j = min < max ? min : max, len = min > max ? min : max; j <= len; j++) {\n selectedCell = gObj.getCellFromIndex(i, j);\n if (!selectedCell) {\n continue;\n }\n cellIndexes.push(j);\n _this.updateCellSelection(selectedCell);\n _this.addAttribute(selectedCell);\n }\n _this.selectedRowCellIndexes.push({ rowIndex: i, cellIndexes: cellIndexes });\n }\n var cellSelectedArgs = {\n data: selectedData, cellIndex: edIndex, currentCell: gObj.getCellFromIndex(edIndex.rowIndex, edIndex.cellIndex),\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ? _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[\"\" + previousRowCellIndex] = _this.prevECIdxs;\n if (!_this.isDragged) {\n _this.onActionComplete(cellSelectedArgs, events.cellSelected);\n _this.cellselected = true;\n }\n _this.updateCellProps(stIndex, edIndex);\n });\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @returns {void}\n */\n Selection.prototype.selectCells = function (rowCellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = gObj.getCellFromIndex(rowCellIndexes[0].rowIndex, rowCellIndexes[0].cellIndexes[0]);\n this.currentIndex = rowCellIndexes[0].rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var cellSelectArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectArgs[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.onActionBegin(cellSelectArgs, events.cellSelecting);\n for (var i = 0, len = rowCellIndexes.length; i < len; i++) {\n for (var j = 0, cellLen = rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes.length; j < cellLen; j++) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n if (!selectedCell) {\n continue;\n }\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n this.addRowCellIndex({ rowIndex: rowCellIndexes[parseInt(i.toString(), 10)].rowIndex,\n cellIndex: rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)] });\n }\n }\n this.updateCellProps({ rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] }, { rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] });\n var cellSelectedArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, selectedRowCellIndex: this.selectedRowCellIndexes,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[\"\" + prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n };\n /**\n * Select cells with existing cell selection by passing row and column index.\n *\n * @param {IIndex} cellIndexes - Defines the collection of row and column index.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addCellsToSelection = function (cellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell;\n var index;\n this.currentIndex = cellIndexes[0].rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n this.hideAutoFill();\n var rowObj;\n rowObj = gObj.getRowsObject()[cellIndexes[0].rowIndex];\n if (gObj.groupSettings.columns.length > 0) {\n rowObj = gObj.getRowObjectFromUID(this.target.parentElement.getAttribute('data-uid'));\n }\n var foreignKeyData = [];\n for (var _i = 0, cellIndexes_1 = cellIndexes; _i < cellIndexes_1.length; _i++) {\n var cellIndex = cellIndexes_1[_i];\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[parseInt(i.toString(), 10)].rowIndex === cellIndex.rowIndex) {\n index = i;\n break;\n }\n }\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n var idx = cellIndex.cellIndex;\n if (gObj.groupSettings.columns.length > 0) {\n foreignKeyData.push(rowObj.cells[idx + gObj.groupSettings.columns.length].foreignKeyData);\n }\n else {\n foreignKeyData.push(rowObj.cells[parseInt(idx.toString(), 10)].foreignKeyData);\n }\n var args = {\n cancel: false, data: selectedData, cellIndex: cellIndexes[0],\n isShiftPressed: this.isMultiShiftRequest,\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n previousRowCell: this.prevECIdxs ?\n gObj.getCellFromIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n args[\"\" + prvRowCellIndex] = this.prevECIdxs;\n var isUnSelected = index > -1;\n if (isUnSelected) {\n var selectedCellIdx = this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes;\n if (selectedCellIdx.indexOf(cellIndex.cellIndex) > -1 || (this.selectionSettings.mode === 'Both' &&\n selectedCell.classList.contains('e-gridchkbox') && !selectedCell.getAttribute('aria-selected'))) {\n this.cellDeselect(events.cellDeselecting, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n selectedCellIdx.splice(selectedCellIdx.indexOf(cellIndex.cellIndex), 1);\n if (selectedCellIdx.length === 0) {\n this.selectedRowCellIndexes.splice(index, 1);\n }\n selectedCell.classList.remove('e-cellselectionbackground');\n selectedCell.removeAttribute('aria-selected');\n this.cellDeselect(events.cellDeselected, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n }\n else {\n isUnSelected = false;\n this.onActionBegin(args, events.cellSelecting);\n this.addRowCellIndex({ rowIndex: cellIndex.rowIndex, cellIndex: cellIndex.cellIndex });\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n }\n }\n else {\n this.onActionBegin(args, events.cellSelecting);\n if (!isNullOrUndefined(args) && args[\"\" + cncl] === true) {\n return;\n }\n this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isUnSelected) {\n var cellSelectedArgs = {\n data: selectedData, cellIndex: cellIndexes[0], currentCell: selectedCell,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) :\n undefined, selectedRowCellIndex: this.selectedRowCellIndexes\n };\n cellSelectedArgs[\"\" + prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n this.cellselected = true;\n }\n this.updateCellProps(cellIndex, cellIndex);\n }\n };\n Selection.prototype.getColIndex = function (rowIndex, index) {\n var col = this.parent.getColumnByIndex(index);\n var cells = getCellsByTableName(this.parent, col, rowIndex);\n if (cells) {\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[parseInt(m.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n if (colIndex === index) {\n return m;\n }\n }\n }\n return -1;\n };\n Selection.prototype.getLastColIndex = function (rowIndex) {\n var cells = this.parent.getDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll('td.e-rowcell');\n return parseInt(cells[cells.length - 1].getAttribute(literals.dataColIndex), 10);\n };\n Selection.prototype.clearCell = function () {\n this.clearCellSelection();\n };\n Selection.prototype.cellDeselect = function (type, cellIndexes, data, cells, foreignKeyData) {\n var cancl = 'cancel';\n if (cells && cells.length > 0) {\n for (var _i = 0, cells_1 = cells; _i < cells_1.length; _i++) {\n var cell = cells_1[_i];\n if (cell && cell.classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(cell, 'tr'));\n }\n }\n }\n var args = {\n cells: cells, data: data, cellIndexes: cellIndexes, foreignKeyData: foreignKeyData, cancel: false\n };\n this.parent.trigger(type, args);\n this.isPreventCellSelect = args[\"\" + cancl];\n };\n Selection.prototype.updateCellSelection = function (selectedCell, rowIndex, cellIndex) {\n if (!isNullOrUndefined(rowIndex)) {\n this.addRowCellIndex({ rowIndex: rowIndex, cellIndex: cellIndex });\n }\n selectedCell.classList.add('e-cellselectionbackground');\n if (selectedCell.classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(selectedCell, 'tr'), true);\n }\n this.addAttribute(selectedCell);\n };\n Selection.prototype.addAttribute = function (cell) {\n this.target = cell;\n if (!isNullOrUndefined(cell)) {\n cell.setAttribute('aria-selected', 'true');\n if (!this.preventFocus) {\n this.focus.onClick({ target: cell }, true);\n }\n }\n };\n Selection.prototype.updateCellProps = function (startIndex, endIndex) {\n this.prevCIdxs = startIndex;\n this.prevECIdxs = endIndex;\n this.isCellSelected = this.selectedRowCellIndexes.length && true;\n };\n Selection.prototype.addRowCellIndex = function (rowCellIndex) {\n var isRowAvail;\n var index;\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[parseInt(i.toString(), 10)].rowIndex === rowCellIndex.rowIndex) {\n isRowAvail = true;\n index = i;\n break;\n }\n }\n if (isRowAvail) {\n if (this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes.indexOf(rowCellIndex.cellIndex) < 0) {\n this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes.push(rowCellIndex.cellIndex);\n }\n }\n else {\n this.selectedRowCellIndexes.push({ rowIndex: rowCellIndex.rowIndex, cellIndexes: [rowCellIndex.cellIndex] });\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearCellSelection = function () {\n if (this.isCellSelected) {\n var gObj = this.parent;\n var selectedCells = this.getSelectedCellsElement();\n var rowCell = this.selectedRowCellIndexes;\n var data = [];\n var cells = [];\n var foreignKeyData = [];\n var currentViewData = this.getCurrentBatchRecordChanges();\n this.hideAutoFill();\n for (var i = 0, len = rowCell.length; i < len; i++) {\n data.push(currentViewData[rowCell[parseInt(i.toString(), 10)].rowIndex]);\n var rowObj = this.getRowObj(rowCell[parseInt(i.toString(), 10)].rowIndex);\n for (var j = 0, cLen = rowCell[parseInt(i.toString(), 10)].cellIndexes.length; j < cLen; j++) {\n if (rowObj.cells) {\n foreignKeyData.push(rowObj.cells[rowCell[parseInt(i.toString(), 10)]\n .cellIndexes[parseInt(j.toString(), 10)]].foreignKeyData);\n }\n cells.push(gObj.getCellFromIndex(rowCell[parseInt(i.toString(), 10)].rowIndex, rowCell[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]));\n }\n }\n this.cellDeselect(events.cellDeselecting, rowCell, data, cells, foreignKeyData);\n if (this.isPreventCellSelect === true) {\n return;\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n selectedCells[parseInt(i.toString(), 10)].classList.remove('e-cellselectionbackground');\n selectedCells[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n }\n if (this.bdrElement) {\n this.showHideBorders('none');\n }\n this.selectedRowCellIndexes = [];\n this.isCellSelected = false;\n if (!this.isDragged && this.cellselected) {\n this.cellDeselect(events.cellDeselected, rowCell, data, cells, foreignKeyData);\n }\n }\n };\n Selection.prototype.getSelectedCellsElement = function () {\n var gObj = this.parent;\n var rows = gObj.getDataRows();\n var cells = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n cells = cells.concat([].slice.call(rows[parseInt(i.toString(), 10)].getElementsByClassName('e-cellselectionbackground')));\n }\n return cells;\n };\n Selection.prototype.mouseMoveHandler = function (e) {\n e.preventDefault();\n this.stopTimer();\n var gBRect = this.parent.element.getBoundingClientRect();\n var x1 = this.x;\n var y1 = this.y;\n var position = getPosition(e);\n var x2 = position.x - gBRect.left;\n var y2 = position.y - gBRect.top;\n var tmp;\n var target = closest(e.target, 'tr');\n this.isDragged = true;\n if (!this.isCellDrag) {\n if (!target) {\n target = closest(document.elementFromPoint(this.parent.element.offsetLeft + 2, e.clientY), 'tr');\n }\n if (x1 > x2) {\n tmp = x2;\n x2 = x1;\n x1 = tmp;\n }\n if (y1 > y2) {\n tmp = y2;\n y2 = y1;\n y1 = tmp;\n }\n this.element.style.left = x1 + 'px';\n this.element.style.top = y1 + 'px';\n this.element.style.width = x2 - x1 + 'px';\n this.element.style.height = y2 - y1 + 'px';\n }\n if (target && !e.ctrlKey && !e.shiftKey) {\n var rowIndex = parseInt(target.getAttribute(literals.dataRowIndex), 10);\n if (!this.isCellDrag) {\n this.hideAutoFill();\n this.selectRowsByRange(this.startDIndex, rowIndex);\n this.isRowDragSelected = true;\n }\n else {\n var td = parentsUntil(e.target, literals.rowCell);\n if (td) {\n this.startAFCell = this.startCell;\n this.endAFCell = parentsUntil(e.target, literals.rowCell);\n if (rowIndex > -1) {\n this.selectLikeExcel(e, rowIndex, parseInt(td.getAttribute(literals.dataColIndex), 10));\n }\n }\n }\n }\n if (!e.ctrlKey && !e.shiftKey && !this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling &&\n !this.parent.enableColumnVirtualization && !this.parent.groupSettings.columns.length && this.isCellDrag) {\n this.updateScrollPosition(e, position, this.parent.getContent());\n }\n };\n Selection.prototype.updateScrollPosition = function (e, position, scrollElem) {\n var _this = this;\n var cliRect = scrollElem.getBoundingClientRect();\n if (cliRect.left >= position.x - 20) {\n this.timer1 = window.setInterval(function () { _this.setScrollPosition(scrollElem.firstElementChild, 'left', e); }, 200);\n }\n else if (cliRect.left + scrollElem.clientWidth - 20 -\n (this.parent.height !== 'auto' ? getScrollBarWidth() : 0) < position.x) {\n this.timer1 = window.setInterval(function () { _this.setScrollPosition(scrollElem.firstElementChild, 'right', e); }, 200);\n }\n if (cliRect.top >= position.y - (this.parent.getRowHeight() * 0.5)) {\n this.timer2 = window.setInterval(function () { _this.setScrollPosition(scrollElem.firstElementChild, 'up', e); }, 200);\n }\n else if (cliRect.top + scrollElem.clientHeight - (this.parent.getRowHeight() * 0.5) -\n (scrollElem.firstElementChild.scrollWidth > scrollElem.firstElementChild.offsetWidth ?\n getScrollBarWidth() : 0) <= position.y) {\n this.timer2 = window.setInterval(function () { _this.setScrollPosition(scrollElem.firstElementChild, 'down', e); }, 200);\n }\n };\n Selection.prototype.stopTimer = function () {\n if (this.timer1) {\n window.clearInterval(this.timer1);\n this.timer1 = null;\n }\n if (this.timer2) {\n window.clearInterval(this.timer2);\n this.timer2 = null;\n }\n this.preventFocus = false;\n };\n Selection.prototype.setScrollPosition = function (scrollElem, direction, e) {\n var rowIndex = -1;\n var colIndex = -1;\n if (this.endAFCell || this.prevECIdxs) {\n rowIndex = this.endAFCell ? parseInt(this.endAFCell.getAttribute('index')) : this.prevECIdxs.rowIndex;\n colIndex = this.endAFCell ? parseInt(this.endAFCell.getAttribute('data-colindex')) : this.prevECIdxs.cellIndex;\n }\n switch (direction) {\n case 'up':\n if (e && closest(e.target, '.e-headercontent'))\n return;\n if (this.isAutoFillSel && this.selectedRowCellIndexes.length &&\n ((this.selectedRowCellIndexes.length === 1 && this.startAFCell !== this.startCell) ||\n (this.selectedRowCellIndexes.length > 1 && this.startAFCell.getBoundingClientRect().top > 0))) {\n rowIndex = parseInt(this.startAFCell.getAttribute('index'));\n }\n rowIndex -= 1;\n if (this.parent.frozenRows)\n rowIndex += this.parent.frozenRows + 1;\n rowIndex < 1 ? scrollElem.scrollTop = 0 : scrollElem.scrollTop -= this.parent.getRowByIndex(rowIndex).offsetHeight;\n break;\n case 'down':\n if (rowIndex < this.parent.getRows().length - 1) {\n rowIndex += 1;\n scrollElem.scrollTop += this.parent.getRowByIndex(rowIndex).offsetHeight;\n }\n else {\n scrollElem.scrollTop = scrollElem.scrollHeight;\n }\n break;\n case 'left':\n if (colIndex > 0 && rowIndex > -1) {\n if (this.isAutoFillSel && this.selectedRowCellIndexes.length &&\n ((this.selectedRowCellIndexes[0].cellIndexes.length > 0 && this.startAFCell !== this.startCell) ||\n (this.selectedRowCellIndexes[0].cellIndexes.length > 1 && this.startAFCell.getBoundingClientRect().left > 0))) {\n colIndex = parseInt(this.startAFCell.getAttribute('data-colindex'));\n }\n var nextEle = this.findNextCell(scrollElem, direction, colIndex, rowIndex);\n colIndex = nextEle ? parseInt(nextEle.getAttribute('data-colindex')) : -1;\n colIndex < 1 ? scrollElem.scrollLeft = 0 : scrollElem.scrollLeft -= nextEle.offsetWidth;\n }\n break;\n case 'right':\n if (colIndex < this.parent.columns.length - 1) {\n var nextEle = this.findNextCell(scrollElem, direction, colIndex, rowIndex);\n colIndex = nextEle ? parseInt(nextEle.getAttribute('data-colindex')) : -1;\n colIndex < this.parent.columns.length - 1 ? scrollElem.scrollLeft += nextEle.offsetWidth : scrollElem.scrollLeft = scrollElem.scrollWidth;\n }\n break;\n }\n if (rowIndex > -1 && colIndex > -1) {\n var e_1 = { target: this.parent.getCellFromIndex(rowIndex, colIndex) };\n this.endAFCell = e_1.target;\n this.preventFocus = true;\n this.selectLikeExcel(e_1, rowIndex, colIndex);\n }\n };\n Selection.prototype.findNextCell = function (scrollElem, direction, colInd, rowInd) {\n var nextEle = this.parent.getCellFromIndex(rowInd, direction === 'left' ? colInd - 1 : colInd + 1);\n if (nextEle && nextEle.classList.contains('e-hide')) {\n var siblingEles = nextEle.closest('tr').querySelectorAll('.e-rowcell:not(.e-hide)');\n var nextEleInd = Array.from(siblingEles).indexOf(nextEle.nextElementSibling);\n if (nextEleInd > 0 && nextEleInd < siblingEles.length - 1) {\n nextEle = siblingEles[nextEleInd + (direction === 'left' ? -1 : 1)];\n return nextEle;\n }\n else {\n scrollElem.scrollLeft = 0;\n return null;\n }\n }\n return nextEle;\n };\n Selection.prototype.selectLikeExcel = function (e, rowIndex, cellIndex) {\n if (!this.isAutoFillSel) {\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.drawBorders();\n }\n else { //Autofill\n this.showAFBorders();\n this.selectLikeAutoFill(e);\n }\n };\n Selection.prototype.setFrozenBorders = function (parentEle, border, bdrStr) {\n var width = border.style.borderWidth.toString().split(' ');\n var strCell = ['', 'e-leftfreeze', 'e-unfreeze', 'e-leftfreeze', 'e-unfreeze', 'e-rightfreeze', 'e-rightfreeze'];\n var cells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground' + '.' + strCell[\"\" + bdrStr])).\n filter(function (ele) { return ele.style.display === ''; });\n var fixedCells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground.e-fixedfreeze')).\n filter(function (ele) { return ele.style.display === ''; });\n var isRtl = this.parent.enableRtl;\n if (cells.length) {\n var firstRowIdx = cells[0].getAttribute('index');\n var firstColIdx = cells[0].getAttribute('data-colindex');\n var lastRowIdx = cells[cells.length - 1].getAttribute('index');\n var lastColIdx = cells[cells.length - 1].getAttribute('data-colindex');\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].getAttribute('index') === firstRowIdx && (width.length === 1 || (width.length === 3\n && parseInt(width[0], 10) === 2) || (width.length === 4 && parseInt(width[0], 10) === 2))) {\n cells[parseInt(i.toString(), 10)].classList.add('e-xlsel-top-border');\n }\n if (cells[parseInt(i.toString(), 10)].getAttribute('data-colindex') === firstColIdx && (width.length === 1 ||\n (width.length === 3 && parseInt(width[1], 10) === 2) || (width.length === 4 && (((!isRtl && parseInt(width[3], 10) === 2)) ||\n (isRtl && parseInt(width[1], 10) === 2))))) {\n cells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-right-border' : 'e-xlsel-left-border');\n }\n if (cells[parseInt(i.toString(), 10)].getAttribute('index') === lastRowIdx && (width.length === 1 ||\n (width.length === 3 && parseInt(width[2], 10) === 2) || (width.length === 4 && parseInt(width[2], 10) === 2))) {\n cells[parseInt(i.toString(), 10)].classList.add('e-xlsel-bottom-border');\n }\n if (cells[parseInt(i.toString(), 10)].getAttribute('data-colindex') === lastColIdx && (width.length === 1 ||\n (width.length === 3 && parseInt(width[1], 10) === 2) || (width.length === 4 && ((!isRtl && parseInt(width[1], 10) === 2)) ||\n (isRtl && parseInt(width[3], 10) === 2)))) {\n cells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-left-border' : 'e-xlsel-right-border');\n }\n }\n }\n if (fixedCells.length) {\n var firstRowIdx = fixedCells[0].getAttribute('index');\n var firstColIdx = fixedCells[0].getAttribute('data-colindex');\n var lastRowIdx = fixedCells[fixedCells.length - 1].getAttribute('index');\n var lastColIdx = fixedCells[fixedCells.length - 1].getAttribute('data-colindex');\n for (var i = 0; i < fixedCells.length; i++) {\n var idx = fixedCells[parseInt(i.toString(), 10)].getAttribute('index');\n var colIdx = fixedCells[parseInt(i.toString(), 10)].getAttribute('data-colindex');\n if (idx === firstRowIdx &&\n ((!this.parent.getHeaderContent().querySelector('.e-cellselectionbackground.e-fixedfreeze')\n && parentsUntil(parentEle, 'e-content')) || !parentsUntil(parentEle, 'e-content'))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add('e-xlsel-top-border');\n }\n if (idx === lastRowIdx &&\n ((!this.parent.getContent().querySelector('.e-cellselectionbackground.e-fixedfreeze')\n && parentsUntil(parentEle, 'e-headercontent')) || !parentsUntil(parentEle, 'e-headercontent'))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add('e-xlsel-bottom-border');\n }\n var preCell = fixedCells[parseInt(i.toString(), 10)].parentElement.children[parseInt(colIdx, 10) - 1];\n if (colIdx === firstColIdx && (!preCell || (preCell && !preCell.classList.contains('e-cellselectionbackground')))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-right-border' : 'e-xlsel-left-border');\n }\n var nextCell = fixedCells[parseInt(i.toString(), 10)].parentElement.children[parseInt(colIdx, 10) + 1];\n if (colIdx === lastColIdx && (!nextCell || (nextCell && !nextCell.classList.contains('e-cellselectionbackground')))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-left-border' : 'e-xlsel-right-border');\n }\n }\n }\n };\n Selection.prototype.refreshFrozenBorders = function () {\n if (this.bdrElement) {\n this.setFrozenBorders(this.parent.getContentTable(), this.bdrElement, '1');\n if (this.parent.isFrozenGrid() && this.parent.getFrozenMode() === literals.leftRight) {\n this.setFrozenBorders(this.parent.getContentTable(), this.frcBdrElement, '5');\n }\n if (this.parent.frozenRows) {\n this.setFrozenBorders(this.parent.getHeaderTable(), this.fhBdrElement, '3');\n if (this.parent.isFrozenGrid() && this.parent.getFrozenMode() === literals.leftRight) {\n this.setFrozenBorders(this.parent.getHeaderTable(), this.frhBdrElement, '6');\n }\n }\n }\n };\n Selection.prototype.drawBorders = function () {\n if (this.selectionSettings.cellSelectionMode === 'BoxWithBorder' && this.selectedRowCellIndexes.length && !this.parent.isEdit) {\n this.parent.element.classList.add('e-enabledboxbdr');\n if (!this.bdrElement) {\n this.createBorders();\n }\n this.positionBorders();\n if (this.parent.isFrozenGrid()) {\n this.showHideBorders('none', true);\n this.refreshFrozenBorders();\n }\n }\n else {\n this.showHideBorders('none');\n }\n };\n Selection.prototype.isLastCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[cells.length - 1] === cell;\n };\n Selection.prototype.isLastRow = function (cell) {\n var rows = [].slice.call(closest(cell, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[rows.length - 1];\n };\n Selection.prototype.isFirstRow = function (cell) {\n var rows = [].slice.call(closest(cell, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[0];\n };\n Selection.prototype.isFirstCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[0] === cell;\n };\n Selection.prototype.setBorders = function (parentEle, border, bdrStr) {\n var cells = [].slice.call(parentEle.getElementsByClassName('e-cellselectionbackground')).\n filter(function (ele) { return ele.style.display === ''; });\n if (cells.length && this.parent.isFrozenGrid()) {\n var strCell = ['', 'e-leftfreeze', 'e-unfreeze', 'e-leftfreeze', 'e-unfreeze', 'e-rightfreeze', 'e-rightfreeze'];\n cells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground' + '.' + strCell[\"\" + bdrStr] + ':not(.e-hide)')).\n filter(function (ele) { return ele.style.display === ''; });\n }\n if (cells.length) {\n var isFrozen = this.parent.isFrozenGrid();\n var start = cells[0];\n var end = cells[cells.length - 1];\n var stOff = start.getBoundingClientRect();\n var endOff = end.getBoundingClientRect();\n var parentOff = start.offsetParent.getBoundingClientRect();\n if (start.offsetParent.classList.contains('e-content') || start.offsetParent.classList.contains('e-headercontent')) {\n parentOff = start.offsetParent.querySelector('table').getBoundingClientRect();\n }\n var rowHeight = !isFrozen && this.isLastRow(end) && (bdrStr === '1' || bdrStr === '2' || bdrStr === '5') ? 2 : 0;\n var topOffSet = 0;\n var leftOffset = isFrozen && (bdrStr === '2' || bdrStr === '4') && this.isFirstCell(start) ? 1 : 0;\n var rightOffset = ((this.parent.getFrozenMode() === 'Right' && (bdrStr === '1' || bdrStr === '3'))\n || (this.parent.getFrozenMode() === literals.leftRight && (bdrStr === '5' || bdrStr === '6')))\n && this.isFirstCell(start) ? 1 : 0;\n if (this.parent.enableRtl) {\n border.style.right = parentOff.right - stOff.right - leftOffset + 'px';\n border.style.width = stOff.right - endOff.left + leftOffset + 1 + 'px';\n }\n else {\n border.style.left = stOff.left - parentOff.left - leftOffset - rightOffset + 'px';\n border.style.width = endOff.right - stOff.left + leftOffset - rightOffset + 1 + 'px';\n }\n border.style.top = stOff.top - parentOff.top - topOffSet + 'px';\n border.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + (isFrozen ? 0 : 1)) - (stOff.top - parentOff.top) - rowHeight + topOffSet + 'px' :\n endOff.height + topOffSet - rowHeight + (isFrozen ? 0 : 1) + 'px';\n this.selectDirection += bdrStr;\n }\n else {\n border.style.display = 'none';\n }\n };\n Selection.prototype.positionBorders = function () {\n this.updateStartEndCells();\n if (!this.startCell || !this.bdrElement || !this.selectedRowCellIndexes.length) {\n return;\n }\n this.selectDirection = '';\n this.showHideBorders('');\n this.setBorders(this.parent.getContentTable(), this.bdrElement, '1');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.getContentTable(), this.mcBdrElement, '2');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.getContentTable(), this.frcBdrElement, '5');\n }\n }\n if (this.parent.frozenRows) {\n this.setBorders(this.parent.getHeaderTable(), this.fhBdrElement, '3');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.getHeaderTable(), this.mhBdrElement, '4');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.getHeaderTable(), this.frhBdrElement, '6');\n }\n }\n }\n this.applyBorders(this.selectDirection);\n };\n /* eslint-enable */\n Selection.prototype.applyBothFrozenBorders = function (str) {\n var rtl = this.parent.enableRtl;\n switch (str.length) {\n case 6:\n {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = this.bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = this.top;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n break;\n case 4:\n {\n if (str.includes('1') && str.includes('2') && str.includes('3') && str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n }\n if (str.includes('2') && str.includes('4') && str.includes('5') && str.includes('6')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 3:\n {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mcBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mhBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n break;\n case 2:\n {\n if (str.includes('1')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('2')) {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.mhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('3')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.bdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('5')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.frozenRows) {\n this.frhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('6')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n this.mcBdrElement.style.borderWidth = this.all_border;\n this.frcBdrElement.style.borderWidth = this.all_border;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n this.mhBdrElement.style.borderWidth = this.all_border;\n this.frhBdrElement.style.borderWidth = this.all_border;\n }\n break;\n }\n };\n Selection.prototype.applyBorders = function (str) {\n var rtl = this.parent.enableRtl;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.applyBothFrozenBorders(str);\n }\n else {\n switch (str.length) {\n case 4:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n }\n else {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 2:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n }\n }\n else {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = this.all_border;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = this.all_border;\n }\n }\n break;\n }\n }\n };\n Selection.prototype.createBorders = function () {\n if (!this.bdrElement) {\n this.bdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_bdr',\n styles: 'width: 2px; border-width: 0;'\n }));\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_mcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_frcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_fhbdr', styles: 'height: 2px;' }));\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_mhbdr', styles: 'height: 2px;' }));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_frhbdr', styles: 'height: 2px;' }));\n }\n }\n }\n };\n Selection.prototype.showHideBorders = function (display, freeze) {\n if (this.bdrElement) {\n this.bdrElement.style.display = display;\n if (this.parent.isFrozenGrid()) {\n var parentEle = this.parent.getContentTable();\n removeClass(parentEle.querySelectorAll('.e-xlsel-top-border'), 'e-xlsel-top-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-left-border'), 'e-xlsel-left-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-right-border'), 'e-xlsel-right-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-bottom-border'), 'e-xlsel-bottom-border');\n if (!freeze) {\n this.mcBdrElement.style.display = display;\n }\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement.style.display = display;\n }\n }\n if (this.parent.frozenRows) {\n var parentEle = this.parent.getHeaderTable();\n removeClass(parentEle.querySelectorAll('.e-xlsel-top-border'), 'e-xlsel-top-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-left-border'), 'e-xlsel-left-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-right-border'), 'e-xlsel-right-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-bottom-border'), 'e-xlsel-bottom-border');\n this.fhBdrElement.style.display = display;\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n if (!freeze) {\n this.mhBdrElement.style.display = display;\n }\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frhBdrElement.style.display = display;\n }\n }\n }\n };\n Selection.prototype.drawAFBorders = function () {\n if (!this.bdrAFBottom) {\n this.createAFBorders();\n }\n this.positionAFBorders();\n };\n Selection.prototype.positionAFBorders = function () {\n if (!this.startCell || !this.bdrAFLeft) {\n return;\n }\n var stOff = this.startAFCell.getBoundingClientRect();\n var endOff = this.endAFCell.getBoundingClientRect();\n var top = endOff.top - stOff.top > 0 ? 1 : 0;\n var firstCellTop = endOff.top - stOff.top >= 0 && (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, 'e-frozencontent')) && this.isFirstRow(this.startAFCell) ? 1.5 : 0;\n var firstCellLeft = (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) && this.isFirstCell(this.startAFCell) ? 1 : 0;\n var rowHeight = this.isLastRow(this.endAFCell) && (parentsUntil(this.endAFCell, literals.movableContent) ||\n parentsUntil(this.endAFCell, 'e-frozencontent')) ? 2 : 0;\n var parentOff = this.startAFCell.offsetParent.getBoundingClientRect();\n var parentRect = this.parent.element.getBoundingClientRect();\n var sTop = this.startAFCell.offsetParent.parentElement.scrollTop;\n var sLeft = this.startAFCell.offsetParent.parentElement.scrollLeft;\n var scrollTop = sTop - this.startAFCell.offsetTop;\n var scrollLeft = sLeft - this.startAFCell.offsetLeft;\n var totalHeight = this.parent.element.clientHeight - getScrollBarWidth();\n if (this.parent.allowPaging) {\n totalHeight -= this.parent.element.querySelector('.e-pager').offsetHeight;\n }\n if (this.parent.aggregates.length) {\n totalHeight -= this.parent.getFooterContent().offsetHeight;\n }\n var totalWidth = this.parent.element.clientWidth - (this.parent.height !== 'auto' ? getScrollBarWidth() : 0);\n scrollTop = scrollTop > 0 ? Math.floor(scrollTop) - 1 : 0;\n scrollLeft = scrollLeft > 0 ? scrollLeft : 0;\n var left = stOff.left - parentRect.left;\n if (!this.parent.enableRtl) {\n this.bdrAFLeft.style.left = left - firstCellLeft + scrollLeft - 1 + 'px';\n this.bdrAFRight.style.left = endOff.left - parentRect.left - 2 + endOff.width + 'px';\n this.bdrAFRight.style.width = totalWidth <= parseInt(this.bdrAFRight.style.left, 10) ? '0px' : '2px';\n this.bdrAFTop.style.left = left + scrollLeft - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFRight.style.left, 10) - parseInt(this.bdrAFLeft.style.left, 10)\n - firstCellLeft + 1 + 'px';\n if (totalWidth <= (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10))) {\n var leftRemove = (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10)) - totalWidth;\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) - leftRemove + 'px';\n }\n }\n else {\n var scrolloffSet = (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) ? stOff.right -\n this.startAFCell.offsetParent.parentElement.getBoundingClientRect().width -\n parentRect.left : 0;\n this.bdrAFLeft.style.right = parentRect.right - endOff.right - 2 + endOff.width + 'px';\n this.bdrAFLeft.style.width = totalWidth <= parseInt(this.bdrAFLeft.style.right, 10) ? '0px' : '2px';\n this.bdrAFRight.style.right = parentRect.right - stOff.right - firstCellLeft + scrolloffSet - 1 + 'px';\n this.bdrAFTop.style.left = endOff.left - parentRect.left - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFLeft.style.right, 10) - parseInt(this.bdrAFRight.style.right, 10)\n - firstCellLeft + 1 + 'px';\n if (parseInt(this.bdrAFTop.style.left, 10) < 0) {\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10) + 'px';\n this.bdrAFTop.style.left = '0px';\n }\n }\n this.bdrAFLeft.style.top = stOff.top - parentRect.top - firstCellTop + scrollTop + 'px';\n this.bdrAFLeft.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) + firstCellTop - rowHeight - scrollTop + 'px' :\n endOff.height + firstCellTop - rowHeight - scrollTop + 'px';\n this.bdrAFRight.style.top = this.bdrAFLeft.style.top;\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n this.bdrAFTop.style.top = this.bdrAFRight.style.top;\n this.bdrAFBottom.style.left = this.bdrAFTop.style.left;\n this.bdrAFBottom.style.top = parseFloat(this.bdrAFLeft.style.top) + parseFloat(this.bdrAFLeft.style.height) - top - 1 + 'px';\n this.bdrAFBottom.style.width = totalHeight <= parseFloat(this.bdrAFBottom.style.top) ? '0px' : this.bdrAFTop.style.width;\n if (totalHeight <= (parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10))) {\n var topRemove = parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10) - totalHeight;\n this.bdrAFLeft.style.height = parseInt(this.bdrAFLeft.style.height, 10) - topRemove + 'px';\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n }\n };\n Selection.prototype.createAFBorders = function () {\n if (!this.bdrAFLeft) {\n this.bdrAFLeft = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafleft', styles: 'width: 2px;' }));\n this.bdrAFRight = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafright', styles: 'width: 2px;' }));\n this.bdrAFBottom = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafbottom', styles: 'height: 2px;' }));\n this.bdrAFTop = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdraftop', styles: 'height: 2px;' }));\n }\n };\n Selection.prototype.showAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = '';\n this.bdrAFRight.style.display = '';\n this.bdrAFBottom.style.display = '';\n this.bdrAFTop.style.display = '';\n }\n };\n Selection.prototype.hideAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = 'none';\n this.bdrAFRight.style.display = 'none';\n this.bdrAFBottom.style.display = 'none';\n this.bdrAFTop.style.display = 'none';\n }\n };\n Selection.prototype.updateValue = function (rIdx, cIdx, cell) {\n var args = this.createBeforeAutoFill(rIdx, cIdx, cell);\n if (!args.cancel) {\n var col = this.parent.getColumnByIndex(cIdx);\n if (this.parent.editModule && cell) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.value));\n }\n else {\n this.parent.editModule.updateCell(rIdx, col.field, args.value);\n }\n }\n }\n };\n Selection.prototype.createBeforeAutoFill = function (rowIndex, colIndex, cell) {\n var col = this.parent.getColumnByIndex(colIndex);\n var args = {\n column: col,\n value: cell.innerText\n };\n this.parent.trigger(events.beforeAutoFill, args);\n return args;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.getAutoFillCells = function (rowIndex, startCellIdx) {\n var cls = '.e-cellselectionbackground';\n var cells = [].slice.call(this.parent.getDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll(cls));\n return cells;\n };\n Selection.prototype.selectLikeAutoFill = function (e, isApply) {\n var startrowIdx = parseInt(parentsUntil(this.startAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n var startCellIdx = parseInt(this.startAFCell.getAttribute(literals.dataColIndex), 10);\n var endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n var endCellIdx = parseInt(this.endAFCell.getAttribute(literals.dataColIndex), 10);\n var rowLen = this.selectedRowCellIndexes.length - 1;\n var colLen = this.selectedRowCellIndexes[0].cellIndexes.length - 1;\n switch (true) { //direction\n case !isApply && this.endAFCell.classList.contains('e-cellselectionbackground') &&\n !!parentsUntil(e.target, literals.rowCell):\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, startCellIdx);\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, startCellIdx + colLen);\n this.drawAFBorders();\n break;\n case this.autoFillRLselection && startCellIdx + colLen < endCellIdx && //right\n endCellIdx - startCellIdx - colLen + 1 > endrowIdx - startrowIdx - rowLen // right bottom\n && endCellIdx - startCellIdx - colLen + 1 > startrowIdx - endrowIdx: //right top\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, endCellIdx);\n endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n endCellIdx = parseInt(this.endAFCell.getAttribute(literals.dataColIndex), 10);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var cellIdx = parseInt(this.endCell.getAttribute(literals.dataColIndex), 10);\n for (var i = startrowIdx; i <= endrowIdx; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n var c = 0;\n for (var j = cellIdx + 1; j <= endCellIdx; j++) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: this.startCellIndex }, { rowIndex: endrowIdx, cellIndex: endCellIdx });\n }\n break;\n case this.autoFillRLselection && startCellIdx > endCellIdx && // left\n startCellIdx - endCellIdx + 1 > endrowIdx - startrowIdx - rowLen && //left top\n startCellIdx - endCellIdx + 1 > startrowIdx - endrowIdx: // left bottom\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, endCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n for (var i = startrowIdx; i <= startrowIdx + rowLen; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n cells.reverse();\n var c = 0;\n for (var j = this.startCellIndex - 1; j >= endCellIdx; j--) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: endCellIdx }, { rowIndex: startrowIdx + rowLen, cellIndex: this.startCellIndex + colLen });\n }\n break;\n case startrowIdx > endrowIdx: //up\n this.startAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var r = trIdx;\n for (var i = startrowIdx - 1; i >= endrowIdx; i--) {\n if (r === this.startIndex - 1) {\n r = trIdx;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n var c = 0;\n r--;\n for (var j = this.startCellIndex; j <= this.startCellIndex + colLen; j++) {\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: endrowIdx, cellIndex: startCellIdx + colLen }, { rowIndex: startrowIdx + rowLen, cellIndex: startCellIdx });\n }\n break;\n default: //down\n this.endAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx + colLen);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var r = this.startIndex;\n for (var i = trIdx + 1; i <= endrowIdx; i++) {\n if (r === trIdx + 1) {\n r = this.startIndex;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n r++;\n var c = 0;\n for (var m = this.startCellIndex; m <= this.startCellIndex + colLen; m++) {\n this.updateValue(i, m, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: trIdx - rowLen, cellIndex: startCellIdx }, { rowIndex: endrowIdx, cellIndex: startCellIdx + colLen });\n }\n break;\n }\n };\n Selection.prototype.mouseUpHandler = function (e) {\n this.stopTimer();\n document.body.classList.remove('e-disableuserselect');\n if (this.element && !isNullOrUndefined(this.element.parentElement)) {\n remove(this.element);\n }\n if (this.isDragged && this.selectedRowCellIndexes.length === 1 && this.selectedRowCellIndexes[0].cellIndexes.length === 1) {\n this.mUPTarget = parentsUntil(e.target, literals.rowCell);\n }\n else {\n this.mUPTarget = null;\n }\n var closeRowCell = closest(e.target, '.e-rowcell');\n if (this.isDragged && !this.isAutoFillSel && this.selectionSettings.mode === 'Cell' &&\n closeRowCell && closeRowCell.classList.contains(literals.rowCell)) {\n var rowIndex = parseInt(closeRowCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var cellIndex = parseInt(closeRowCell.getAttribute(literals.dataColIndex), 10);\n this.isDragged = false;\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isDragged = false;\n this.updateAutoFillPosition();\n if (this.isAutoFillSel) {\n this.preventFocus = true;\n var lastCell = parentsUntil(e.target, literals.rowCell);\n this.endAFCell = lastCell ? lastCell : this.endCell === this.endAFCell ? this.startAFCell : this.endAFCell;\n this.startAFCell = this.startCell;\n this.updateStartCellsIndex();\n this.selectLikeAutoFill(e, true);\n this.updateAutoFillPosition();\n this.hideAFBorders();\n this.positionBorders();\n if (this.parent.isFrozenGrid()) {\n this.showHideBorders('none', true);\n this.refreshFrozenBorders();\n }\n this.isAutoFillSel = false;\n if (this.parent.aggregates.length > 0) {\n this.parent.notify(events.refreshFooterRenderer, {});\n }\n this.preventFocus = false;\n }\n EventHandler.remove(this.parent.getContent(), 'mousemove', this.mouseMoveHandler);\n if (this.parent.frozenRows) {\n EventHandler.remove(this.parent.getHeaderContent(), 'mousemove', this.mouseMoveHandler);\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n };\n Selection.prototype.hideAutoFill = function () {\n if (this.autofill) {\n this.autofill.style.display = 'none';\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.updateAutoFillPosition = function () {\n if (this.parent.enableAutoFill && !this.parent.isEdit &&\n this.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()\n && this.selectedRowCellIndexes.length) {\n var index = parseInt(this.target.getAttribute(literals.dataColIndex), 10);\n var rindex = parseInt(this.target.getAttribute('index'), 10);\n var rowIndex = this.selectedRowCellIndexes[this.selectedRowCellIndexes.length - 1].rowIndex;\n var cells = this.getAutoFillCells(rowIndex, index).filter(function (ele) { return ele.style.display === ''; });\n var col = this.parent.getColumnByIndex(index);\n var isFrozenCol = col.getFreezeTableName() === 'movable';\n var isFrozenRow = rindex < this.parent.frozenRows;\n var isFrozenRight = this.parent.getFrozenMode() === literals.leftRight\n && col.getFreezeTableName() === literals.frozenRight;\n if (!select('#' + this.parent.element.id + '_autofill', parentsUntil(this.target, literals.table))) {\n if (select('#' + this.parent.element.id + '_autofill', this.parent.element)) {\n select('#' + this.parent.element.id + '_autofill', this.parent.element).remove();\n }\n this.autofill = createElement('div', { className: 'e-autofill', id: this.parent.element.id + '_autofill' });\n this.autofill.style.display = 'none';\n if (this.target.classList.contains('e-leftfreeze') || this.target.classList.contains('e-rightfreeze') ||\n this.target.classList.contains('e-fixedfreeze')) {\n this.autofill.classList.add('e-freeze-autofill');\n }\n if (!isFrozenRow) {\n if (!isFrozenCol) {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n }\n else {\n if (!isFrozenCol) {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n }\n if (isFrozenRight) {\n if (isFrozenRow) {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n }\n }\n var cell = cells[cells.length - 1];\n if (cell && cell.offsetParent) {\n var clientRect = cell.getBoundingClientRect();\n var parentOff = cell.offsetParent.getBoundingClientRect();\n if (cell.offsetParent.classList.contains('e-content') || cell.offsetParent.classList.contains('e-headercontent')) {\n parentOff = cell.offsetParent.querySelector('table').getBoundingClientRect();\n }\n var colWidth = this.isLastCell(cell) ? 4 : 0;\n var rowHeight = this.isLastRow(cell) ? 3 : 0;\n if (!this.parent.enableRtl) {\n this.autofill.style.left = clientRect.left - parentOff.left + clientRect.width - 4 - colWidth + 'px';\n }\n else {\n this.autofill.style.right = parentOff.right - clientRect.right + clientRect.width - 4 - colWidth + 'px';\n }\n this.autofill.style.top = clientRect.top - parentOff.top + clientRect.height - 5 - rowHeight + 'px';\n }\n this.autofill.style.display = '';\n }\n else {\n this.hideAutoFill();\n }\n };\n Selection.prototype.mouseDownHandler = function (e) {\n this.mouseButton = e.button;\n var target = e.target;\n var gObj = this.parent;\n var isDrag;\n var gridElement = parentsUntil(target, 'e-grid');\n if (gridElement && gridElement.id !== gObj.element.id || parentsUntil(target, literals.headerContent) && !this.parent.frozenRows ||\n parentsUntil(target, 'e-editedbatchcell') || parentsUntil(target, literals.editedRow)) {\n return;\n }\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (parentsUntil(target, literals.rowCell) && !e.shiftKey && !e.ctrlKey) {\n if (gObj.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()) {\n this.isCellDrag = true;\n isDrag = true;\n }\n else if (gObj.allowRowDragAndDrop && !gObj.isEdit && !this.parent.selectionSettings.checkboxOnly) {\n this.isRowDragSelected = false;\n if (!this.isRowType() || this.isSingleSel() || closest(target, 'td').classList.contains('e-selectionbackground')) {\n this.isDragged = false;\n return;\n }\n isDrag = true;\n this.element = this.parent.createElement('div', { className: 'e-griddragarea' });\n gObj.getContent().appendChild(this.element);\n }\n if (isDrag) {\n this.enableDrag(e, true);\n }\n }\n this.updateStartEndCells();\n if (target.classList.contains('e-autofill') || target.classList.contains('e-xlsel')) {\n this.isCellDrag = true;\n this.isAutoFillSel = true;\n this.enableDrag(e);\n }\n };\n Selection.prototype.updateStartEndCells = function () {\n var cells = [].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground'));\n this.startCell = cells[0];\n this.endCell = cells[cells.length - 1];\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n };\n Selection.prototype.updateStartCellsIndex = function () {\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n };\n Selection.prototype.enableDrag = function (e, isUpdate) {\n var gObj = this.parent;\n if (isUpdate) {\n var tr = closest(e.target, 'tr');\n this.startDIndex = parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n this.startDCellIndex = parseInt(parentsUntil(e.target, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n document.body.classList.add('e-disableuserselect');\n var gBRect = gObj.element.getBoundingClientRect();\n var postion = getPosition(e);\n this.x = postion.x - gBRect.left;\n this.y = postion.y - gBRect.top;\n EventHandler.add(gObj.getContent(), 'mousemove', this.mouseMoveHandler, this);\n if (this.parent.frozenRows) {\n EventHandler.add(gObj.getHeaderContent(), 'mousemove', this.mouseMoveHandler, this);\n }\n EventHandler.add(document, 'mouseup', this.mouseUpHandler, this);\n };\n Selection.prototype.clearSelAfterRefresh = function (e) {\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfiniteScroll) {\n this.clearSelection();\n }\n if ((e.requestType === 'virtualscroll' || isInfiniteScroll) && this.parent.isPersistSelection && this.isPartialSelection\n && this.isHdrSelectAllClicked) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n var indexes = [];\n this.selectedRowState = {};\n this.persistSelectedData = [];\n for (var i = 0; i < rowObj.length; i++) {\n indexes.push(rowObj[parseInt(i.toString(), 10)].index);\n var pkValue = this.getPkValue(this.primaryKey, rowObj[parseInt(i.toString(), 10)].data);\n this.selectedRowState[\"\" + pkValue] = true;\n this.persistSelectedData.push(rowObj[parseInt(i.toString(), 10)].data);\n }\n this.selectedRowIndexes = indexes;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.uiUpdate, handler: this.enableAfterRender },\n { event: events.initialEnd, handler: this.initializeSelection },\n { event: events.rowSelectionComplete, handler: this.onActionComplete },\n { event: events.cellSelectionComplete, handler: this.onActionComplete },\n { event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.cellFocused, handler: this.onCellFocused },\n { event: events.beforeFragAppend, handler: this.clearSelAfterRefresh },\n { event: events.columnPositionChanged, handler: this.columnPositionChanged },\n { event: events.contentReady, handler: this.initialEnd },\n { event: events.rowsRemoved, handler: this.rowsRemoved },\n { event: events.headerRefreshed, handler: this.refreshHeader },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n this.addEventListener_checkbox();\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.removeEventListener_checkbox();\n };\n Selection.prototype.wireEvents = function () {\n this.isMacOS = navigator.userAgent.indexOf('Mac OS') !== -1;\n if (this.isMacOS) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.parent.element, 'keyup', this.keyUpHandler, this);\n }\n else {\n if (!this.parent.allowKeyboard) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n }\n }\n };\n Selection.prototype.unWireEvents = function () {\n if (this.isMacOS) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.parent.element, 'keyup', this.keyUpHandler);\n }\n else {\n if (!this.parent.allowKeyboard) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n }\n }\n };\n Selection.prototype.columnPositionChanged = function () {\n if (!this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.refreshHeader = function () {\n this.setCheckAllState();\n };\n Selection.prototype.rowsRemoved = function (e) {\n for (var i = 0; i < e.records.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, e.records[parseInt(i.toString(), 10)]);\n delete (this.selectedRowState[\"\" + pkValue]);\n --this.totalRecordsCount;\n }\n this.setCheckAllState();\n };\n Selection.prototype.beforeFragAppend = function (e) {\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.getCheckAllBox = function () {\n return this.parent.getHeaderContent().querySelector('.e-checkselectall');\n };\n Selection.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.initPerisistSelection();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.render = function (e) {\n EventHandler.add(this.parent.getContent(), 'mousedown', this.mouseDownHandler, this);\n EventHandler.add(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler, this);\n };\n Selection.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n if (!isNullOrUndefined(e.properties.type)) {\n if (this.selectionSettings.type === 'Single') {\n gObj.element.removeAttribute('aria-multiselectable');\n if (this.selectedRowCellIndexes.length > 1) {\n this.clearCellSelection();\n this.prevCIdxs = undefined;\n }\n if (this.selectedRowIndexes.length > 1) {\n this.clearRowSelection();\n this.prevRowIndex = undefined;\n }\n if (this.selectedColumnsIndexes.length > 1) {\n this.clearColumnSelection();\n this.prevColIndex = undefined;\n }\n this.enableSelectMultiTouch = false;\n this.hidePopUp();\n }\n else if (this.selectionSettings.type === 'Multiple') {\n gObj.element.setAttribute('aria-multiselectable', 'true');\n }\n }\n if (!isNullOrUndefined(e.properties.mode) ||\n !isNullOrUndefined(e.properties.cellSelectionMode)) {\n this.clearSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevColIndex = undefined;\n }\n this.isPersisted = true;\n this.checkBoxSelectionChanged();\n this.isPersisted = false;\n if (!this.parent.isCheckBoxSelection) {\n this.initPerisistSelection();\n }\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length) {\n gObj.isCheckBoxSelection = !(this.selectionSettings.checkboxMode === 'ResetOnRowClick');\n }\n this.drawBorders();\n };\n Selection.prototype.hidePopUp = function () {\n if (this.parent.element.querySelector('.e-gridpopup').getElementsByClassName('e-rowselect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.initialEnd = function () {\n if (!this.selectedRowIndexes.length) {\n this.parent.off(events.contentReady, this.initialEnd);\n this.selectRow(this.parent.selectedRowIndex);\n }\n };\n Selection.prototype.checkBoxSelectionChanged = function () {\n var gobj = this.parent;\n gobj.off(events.contentReady, this.checkBoxSelectionChanged);\n var checkboxColumn = gobj.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length > 0) {\n gobj.isCheckBoxSelection = true;\n this.chkField = checkboxColumn[0].field;\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n if (isNullOrUndefined(this.totalRecordsCount)) {\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.isSingleSel()) {\n gobj.selectionSettings.type = 'Multiple';\n gobj.dataBind();\n }\n else {\n this.initPerisistSelection();\n }\n }\n if (!gobj.isCheckBoxSelection && !this.isPersisted) {\n this.chkField = null;\n this.initPerisistSelection();\n }\n };\n Selection.prototype.initPerisistSelection = function () {\n var gobj = this.parent;\n if (this.parent.selectionSettings.persistSelection && this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = true;\n this.ensureCheckboxFieldSelection();\n }\n else if (this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = false;\n this.ensureCheckboxFieldSelection();\n }\n else {\n gobj.isPersistSelection = false;\n this.selectedRowState = {};\n }\n };\n Selection.prototype.ensureCheckboxFieldSelection = function () {\n var gobj = this.parent;\n this.primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n if (!gobj.enableVirtualization && this.chkField\n && ((gobj.isPersistSelection && Object.keys(this.selectedRowState).length === 0) ||\n !gobj.isPersistSelection)) {\n var data = this.parent.getDataModule();\n var query = new Query().where(this.chkField, 'equal', true);\n if (!query.params) {\n query.params = this.parent.query.params;\n }\n var dataManager = data.getData({}, query);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n this.parent.showSpinner();\n dataManager.then(function (e) {\n proxy_1.dataSuccess(e.result);\n proxy_1.refreshPersistSelection();\n proxy_1.parent.hideSpinner();\n });\n }\n };\n Selection.prototype.dataSuccess = function (res) {\n var data = (this.parent.getDataModule().isRemote() && !isNullOrUndefined(res['result'])) ? res['result'] : res;\n for (var i = 0; i < data.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (isNullOrUndefined(this.selectedRowState[\"\" + pkValue]) && data[parseInt(i.toString(), 10)][this.chkField]) {\n this.selectedRowState[\"\" + pkValue] = data[parseInt(i.toString(), 10)][this.chkField];\n }\n }\n this.persistSelectedData = data;\n };\n Selection.prototype.setRowSelection = function (state) {\n if (!(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))) {\n if (state) {\n if (this.isPartialSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_1 = rowObj; _i < rowObj_1.length; _i++) {\n var row = rowObj_1[_i];\n this.selectedRowState[this.getPkValue(this.primaryKey, row.data)] = true;\n }\n }\n else {\n var selectedData = this.isPartialSelection ? this.parent.partialSelectedRecords : this.getData();\n if (this.parent.groupSettings.columns.length) {\n for (var _a = 0, _b = this.isPartialSelection ? selectedData : selectedData.records; _a < _b.length; _a++) {\n var data = _b[_a];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\n }\n else {\n for (var _c = 0, selectedData_1 = selectedData; _c < selectedData_1.length; _c++) {\n var data = selectedData_1[_c];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\n }\n }\n }\n else {\n this.selectedRowState = {};\n }\n // (this.getData()).forEach(function (data) {\n // this.selectedRowState[data[this.primaryKey]] = true;\n // })\n }\n else {\n if (state) {\n var selectedStateKeys = Object.keys(this.selectedRowState);\n var unSelectedRowStateKeys = Object.keys(this.unSelectedRowState);\n if (!this.isCheckboxReset) {\n var rowData = (this.parent.groupSettings.columns.length && this.parent.isPersistSelection) ?\n this.parent.currentViewData['records'] : this.parent.currentViewData;\n for (var _d = 0, rowData_1 = rowData; _d < rowData_1.length; _d++) {\n var data = rowData_1[_d];\n if (!isNullOrUndefined(data[this.primaryKey])) {\n var key = data[this.primaryKey].toString();\n if (selectedStateKeys.indexOf(key) === -1 && unSelectedRowStateKeys.indexOf(key) === -1) {\n this.selectedRowState[data[this.primaryKey]] = true;\n }\n }\n }\n }\n }\n else {\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.rmtHdrChkbxClicked = false;\n }\n }\n };\n Selection.prototype.getData = function () {\n return this.parent.getDataModule().dataManager.executeLocal(this.parent.getDataModule().generateQuery(true));\n };\n Selection.prototype.getAvailableSelectedData = function () {\n var filteredSearchedSelectedData = new DataManager(this.persistSelectedData).executeLocal(this.parent.getDataModule().generateQuery(true));\n if (this.parent.groupSettings.columns.length && filteredSearchedSelectedData &&\n filteredSearchedSelectedData.records) {\n filteredSearchedSelectedData = filteredSearchedSelectedData.records.slice();\n }\n return filteredSearchedSelectedData;\n };\n Selection.prototype.refreshPersistSelection = function () {\n var rows = this.parent.getRows();\n this.totalRecordsCount = this.parent.getCurrentViewRecords().length;\n if (this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (!isNullOrUndefined(rows) && rows.length > 0 && (this.parent.isPersistSelection || this.chkField)) {\n var indexes = [];\n for (var j = 0; j < rows.length; j++) {\n var rowObj = this.getRowObj(rows[parseInt(j.toString(), 10)]);\n var pKey = rowObj ? rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null : null;\n if (pKey === null) {\n return;\n }\n if (this.isPartialSelection && !rowObj.isSelectable) {\n continue;\n }\n var checkState = void 0;\n var chkBox = rows[parseInt(j.toString(), 10)].querySelector('.e-checkselect');\n if (this.selectedRowState[\"\" + pKey] || (this.parent.checkAllRows === 'Check' && this.selectedRowState[\"\" + pKey] &&\n this.totalRecordsCount === Object.keys(this.selectedRowState).length && this.chkAllCollec.indexOf(pKey) < 0)\n || (this.parent.checkAllRows === 'Uncheck' && this.chkAllCollec.indexOf(pKey) > 0 && !this.parent.selectedRowIndex)\n || (this.parent.checkAllRows === 'Intermediate' && !isNullOrUndefined(this.chkField) && rowObj.data[this.chkField])) {\n indexes.push(parseInt(rows[parseInt(j.toString(), 10)].getAttribute(literals.dataRowIndex), 10));\n checkState = true;\n }\n else {\n checkState = false;\n if (this.checkedTarget !== chkBox && this.parent.isCheckBoxSelection && chkBox) {\n removeAddCboxClasses(chkBox.nextElementSibling, checkState);\n }\n }\n this.updatePersistCollection(rows[parseInt(j.toString(), 10)], checkState);\n }\n if (this.isSingleSel() && indexes.length > 0) {\n this.selectRow(indexes[0], true);\n }\n else {\n this.selectRows(indexes);\n }\n }\n if ((this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') && this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n }\n };\n Selection.prototype.actionBegin = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n var editChkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n var row = closest(editChkBox, '.' + literals.editedRow);\n if (row) {\n if (this.parent.editSettings.mode === 'Dialog') {\n row = this.parent.element.querySelector('.e-dlgeditrow');\n }\n var rowObj = this.getRowObj(row);\n if (!rowObj) {\n return;\n }\n this.selectedRowState[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = editChkBox.checked;\n }\n else {\n this.isCheckedOnAdd = editChkBox.checked;\n }\n }\n }\n if (this.parent.isPersistSelection && this.isPartialSelection) {\n if (e.requestType === 'paging' && (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.selectedRowIndexes = [];\n }\n if (e.requestType === 'filtering' || e.requestType === 'searching') {\n this.parent.partialSelectedRecords = [];\n this.parent.disableSelectedRecords = [];\n }\n }\n };\n Selection.prototype.actionComplete = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n if (e.action === 'add') {\n if (this.isCheckedOnAdd) {\n var rowObj = this.parent.getRowObjectFromUID(this.parent.getRows()[e.selectedRow].getAttribute('data-uid'));\n this.selectedRowState[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = this.isCheckedOnAdd;\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\n }\n this.refreshPersistSelection();\n }\n if (e.requestType === 'delete' && this.parent.isPersistSelection) {\n var records = e.data;\n var data = records.slice();\n for (var i = 0; i < data.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(pkValue)) {\n this.updatePersistDelete(pkValue, this.isPartialSelection);\n }\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (e.requestType === 'paging') {\n if (this.parent.isPersistSelection && this.isPartialSelection && this.isHdrSelectAllClicked) {\n var rows = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isSelectable) {\n indexes.push(rows[parseInt(i.toString(), 10)].index);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n }\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n }\n };\n Selection.prototype.onDataBound = function () {\n if (!this.parent.enableVirtualization && this.parent.isPersistSelection) {\n if (this.selectedRecords.length) {\n this.isPrevRowSelection = true;\n }\n }\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && this.rmtHdrChkbxClicked) {\n if (this.parent.checkAllRows === 'Intermediate') {\n this.setRowSelection(true);\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n }\n }\n if (this.parent.enableVirtualization) {\n this.setCheckAllState();\n }\n if (this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n this.initialRowSelection = this.isRowType() && this.parent.element.querySelectorAll('.e-selectionbackground') &&\n this.parent.getSelectedRows().length ? true : false;\n if (this.parent.isCheckBoxSelection && !this.initialRowSelection) {\n var totalRecords = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < totalRecords.length; i++) {\n if (totalRecords[parseInt(i.toString(), 10)].isSelected) {\n indexes.push(i);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n this.initialRowSelection = true;\n }\n };\n Selection.prototype.updatePersistSelectedData = function (checkState) {\n if (this.parent.isPersistSelection) {\n var rows = this.parent.getRows();\n for (var i = 0; i < rows.length; i++) {\n this.updatePersistCollection(rows[parseInt(i.toString(), 10)], checkState);\n }\n if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n this.persistSelectedData = (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n ? this.persistSelectedData : [];\n }\n else if (this.parent.checkAllRows === 'Check') {\n this.setRowSelection(true);\n this.persistSelectedData = !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n && !this.isPartialSelection ?\n this.parent.groupSettings.columns.length ? this.getData().records.slice() :\n this.getData().slice() : this.persistSelectedData;\n }\n }\n };\n Selection.prototype.checkSelectAllAction = function (checkState) {\n var cRenderer = this.getRenderer();\n var editForm = this.parent.element.querySelector('.e-gridform');\n this.checkedTarget = this.getCheckAllBox();\n if (checkState && this.getCurrentBatchRecordChanges().length) {\n this.parent.checkAllRows = 'Check';\n this.updatePersistSelectedData(checkState);\n this.selectRowsByRange(cRenderer.getVirtualRowIndex(0), cRenderer.getVirtualRowIndex(this.getCurrentBatchRecordChanges().length - 1));\n }\n else {\n this.parent.checkAllRows = 'Uncheck';\n this.updatePersistSelectedData(checkState);\n this.clearSelection();\n }\n this.chkAllCollec = [];\n if (!isNullOrUndefined(editForm)) {\n var editChkBox = editForm.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n removeAddCboxClasses(editChkBox.nextElementSibling, checkState);\n }\n }\n };\n Selection.prototype.checkSelectAll = function (checkBox) {\n var _this = this;\n var stateStr = this.getCheckAllStatus(checkBox);\n var state = stateStr === 'Check';\n this.isHeaderCheckboxClicked = true;\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && ((stateStr === 'Uncheck' || this.isCheckboxReset) ||\n (stateStr === 'Intermediate' && this.parent.isPersistSelection))) {\n this.rmtHdrChkbxClicked = true;\n }\n else {\n this.rmtHdrChkbxClicked = false;\n }\n if (this.rmtHdrChkbxClicked && this.isCheckboxReset) {\n this.unSelectedRowState = {};\n }\n this.isCheckboxReset = false;\n if (stateStr === 'Intermediate') {\n if (!this.chkField && !this.parent.isPersistSelection) {\n state = this.getCurrentBatchRecordChanges().some(function (data) {\n return _this.getPkValue(_this.primaryKey, data) in _this.selectedRowState;\n });\n }\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && this.parent.isPersistSelection) {\n for (var i = 0; i < this.getCurrentBatchRecordChanges().length; i++) {\n if (!isNullOrUndefined(this.getPkValue(this.primaryKey, this.getCurrentBatchRecordChanges()[\"\" + i]))) {\n if (Object.keys(this.selectedRowState).includes((this.getPkValue(this.primaryKey, this.getCurrentBatchRecordChanges()[\"\" + i])).toString())) {\n state = true;\n }\n else {\n state = false;\n break;\n }\n }\n }\n }\n }\n if (this.parent.isPersistSelection && this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n this.checkSelectAllAction(!state);\n this.target = null;\n if (this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n this.updateSelectedRowIndexes();\n }\n this.triggerChkChangeEvent(checkBox, !state);\n };\n Selection.prototype.getCheckAllStatus = function (ele) {\n var classes = ele ? ele.nextElementSibling.classList :\n this.getCheckAllBox().nextElementSibling.classList;\n var status;\n if (classes.contains('e-check')) {\n status = 'Check';\n }\n else if (classes.contains('e-uncheck')) {\n status = 'Uncheck';\n }\n else if (classes.contains('e-stop')) {\n status = 'Intermediate';\n }\n else {\n status = 'None';\n }\n return status;\n };\n Selection.prototype.checkSelect = function (checkBox) {\n var target = closest(this.checkedTarget, '.' + literals.rowCell);\n var gObj = this.parent;\n this.isMultiCtrlRequest = true;\n var rIndex = 0;\n this.isHeaderCheckboxClicked = false;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n if (this.parent.enableVirtualization && this.parent.groupSettings.columns.length) {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n else {\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(literals.addedRow).length > 0 &&\n this.parent.editSettings.newRowPosition === 'Top') {\n ++rIndex;\n }\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.dataColIndex), 10));\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n this.isMultiCtrlRequest = false;\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'));\n };\n Selection.prototype.moveIntoUncheckCollection = function (row) {\n if (this.parent.checkAllRows === 'Check' || this.parent.checkAllRows === 'Uncheck') {\n var rowObj = this.getRowObj(row);\n var pKey = rowObj && rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null;\n if (!pKey) {\n return;\n }\n if (this.chkAllCollec.indexOf(pKey) < 0) {\n this.chkAllCollec.push(pKey);\n }\n else {\n this.chkAllCollec.splice(this.chkAllCollec.indexOf(pKey), 1);\n }\n }\n };\n Selection.prototype.triggerChkChangeEvent = function (checkBox, checkState) {\n this.parent.trigger(events.checkBoxChange, {\n checked: checkState, selectedRowIndexes: this.parent.getSelectedRowIndexes(),\n target: checkBox\n });\n if (!this.parent.isEdit) {\n this.checkedTarget = null;\n }\n };\n Selection.prototype.updateSelectedRowIndexes = function () {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) &&\n this.isPartialSelection && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && this.parent.selectionSettings.persistSelection) {\n if (this.parent.checkAllRows !== 'Uncheck') {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_2 = rowObj; _i < rowObj_2.length; _i++) {\n var row = rowObj_2[_i];\n this.selectedRowIndexes.push(row.index);\n }\n }\n }\n if (this.parent.isCheckBoxSelection && this.parent.enableVirtualization && !this.isPartialSelection &&\n (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && !this.parent.isPersistSelection && this.parent.checkAllRows === 'Check') {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n if (rowObj.length !== this.selectedRowIndexes.length) {\n for (var _a = 0, rowObj_3 = rowObj; _a < rowObj_3.length; _a++) {\n var row = rowObj_3[_a];\n if (this.selectedRowIndexes.indexOf(row.index) <= -1) {\n this.selectedRowIndexes.push(row.index);\n }\n }\n }\n }\n };\n Selection.prototype.updateSelectedRowIndex = function (index) {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && !this.isPartialSelection) {\n if (this.parent.checkAllRows === 'Check') {\n this.selectedRowIndexes = [];\n var dataLength = this.parent.groupSettings.columns.length ? this.getData()['records'].length :\n this.getData().length;\n for (var data = 0; data < dataLength; data++) {\n this.selectedRowIndexes.push(data);\n }\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.selectedRowIndexes = [];\n }\n else {\n var row = this.parent.getRowByIndex(index);\n if (index && row && row.getAttribute('aria-selected') === 'false') {\n var selectedVal = this.selectedRowIndexes.indexOf(index);\n this.selectedRowIndexes.splice(selectedVal, 1);\n }\n }\n }\n };\n Selection.prototype.isAllSelected = function (count) {\n if (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) {\n return this.getAvailableSelectedData().length === (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling\n ? this.parent.totalDataRecordsCount : this.totalRecordsCount);\n }\n else {\n if (this.isPartialSelection) {\n if (this.parent.allowPaging && this.parent.pageSettings.pageSize < this.parent.pageSettings.totalRecordsCount) {\n var data = this.parent.partialSelectedRecords;\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n else {\n return this.isSelectAllRowCount(count);\n }\n }\n else {\n var data = (this.parent.groupSettings.columns.length) ? this.getData()['records'] : this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n }\n };\n Selection.prototype.someDataSelected = function () {\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && (this.parent.searchSettings.key.length || this.parent.filterSettings.columns.length)) {\n var filteredSearchedSelectedData = this.getAvailableSelectedData();\n for (var i = 0; i < filteredSearchedSelectedData.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, filteredSearchedSelectedData[parseInt(i.toString(), 10)]);\n if (this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n }\n var data = this.isPartialSelection ? this.parent.partialSelectedRecords\n : (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) ? [] : this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n };\n Selection.prototype.setCheckAllState = function (index, isInteraction) {\n if (this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n var checkToSelectAll = false;\n var isFiltered = false;\n var checkedLen = Object.keys(this.selectedRowState).length;\n if (!this.parent.isPersistSelection) {\n checkedLen = this.selectedRowIndexes.length;\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.parent.isPersistSelection && !((this.parent.getDataModule().isRemote() ||\n (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n this.isPartialSelection)\n && (this.parent.searchSettings.key.length || this.parent.filterSettings.columns.length)) {\n isFiltered = true;\n checkToSelectAll = this.isAllSelected(checkedLen);\n }\n var input = this.getCheckAllBox();\n if (input) {\n var spanEle = input.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n setChecked(input, false);\n input.indeterminate = false;\n var getRecord = this.parent.getDataModule().isRemote() ? [] :\n (this.parent.groupSettings.columns.length) ? this.getData()['records'] : this.getData();\n if ((checkToSelectAll && isFiltered && (this.parent.getDataModule().isRemote() ||\n (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result) ||\n getRecord.length)) || (!isFiltered && ((checkedLen === this.totalRecordsCount && this.totalRecordsCount\n && !this.isPartialSelection && (!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n || this.parent.allowPaging)) ||\n (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling\n && this.isPartialSelection && (this.isSelectAllRowCount(checkedLen) || this.isHdrSelectAllClicked))\n || ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && ((!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n getRecord.length && checkedLen === getRecord.length) || ((this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n !this.isPartialSelection && ((checkedLen === this.parent.totalDataRecordsCount) || ((this.isSelectAllRowCount(checkedLen)\n || checkedLen === this.totalRecordsCount) && !this.parent.isPersistSelection))) ||\n (this.isPartialSelection && (this.isHdrSelectAllClicked || this.isSelectAllRowCount(checkedLen)))))\n || (checkedLen === this.totalRecordsCount && this.totalRecordsCount && !this.isPartialSelection &&\n !this.parent.allowPaging && !this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling)))) {\n addClass([spanEle], ['e-check']);\n setChecked(input, true);\n if (isInteraction) {\n this.getRenderer().setSelection(null, true, true);\n }\n this.parent.checkAllRows = 'Check';\n }\n else if (((!this.selectedRowIndexes.length && (!this.parent.enableVirtualization ||\n (!this.persistSelectedData.length && !isFiltered) || (isFiltered && this.someDataSelected())) ||\n checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) && !this.parent.allowPaging) ||\n (this.parent.allowPaging && (checkedLen === 0 || (checkedLen && isFiltered && this.someDataSelected())))) {\n addClass([spanEle], ['e-uncheck']);\n if (isInteraction) {\n this.getRenderer().setSelection(null, false, true);\n }\n this.parent.checkAllRows = 'Uncheck';\n }\n else {\n addClass([spanEle], ['e-stop']);\n this.parent.checkAllRows = 'Intermediate';\n input.indeterminate = true;\n }\n if (checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n if (this.isPartialSelection) {\n var rowCount = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; }).length;\n if (rowCount === 0 && spanEle.parentElement.querySelector('.e-frame').classList.contains('e-uncheck')) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n }\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.updateSelectedRowIndex(index);\n }\n }\n }\n };\n Selection.prototype.isSelectAllRowCount = function (count) {\n var rowCount = 0;\n var rowObj = this.parent.getRowsObject();\n if (this.parent.selectionSettings.persistSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var dataLen = (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) ?\n this.parent.totalDataRecordsCount : this.getData() && this.getData().length;\n if (dataLen === rowObj.length) {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\n }\n else {\n return false;\n }\n }\n else {\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n rowCount = this.parent.partialSelectedRecords.length + this.parent.disableSelectedRecords.length;\n if (rowCount === this.totalRecordsCount) {\n return this.parent.partialSelectedRecords.length && count === this.parent.partialSelectedRecords.length;\n }\n else {\n return false;\n }\n }\n else {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\n }\n }\n };\n Selection.prototype.keyDownHandler = function (e) {\n // Below are keyCode for command key in MAC OS. Safari/Chrome(91-Left command, 93-Right Command), Opera(17), FireFox(224)\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = true;\n }\n var targetHeadCell = parentsUntil(e.target, 'e-headercell');\n var targetRowCell = parentsUntil(e.target, literals.rowCell);\n var isCheckBox = targetHeadCell ? targetHeadCell.children[0].classList.contains('e-headerchkcelldiv') :\n targetRowCell ? targetRowCell.classList.contains('e-gridchkbox') : false;\n if (isCheckBox && !this.parent.allowKeyboard && e.keyCode === 32) {\n e.preventDefault();\n }\n };\n Selection.prototype.keyUpHandler = function (e) {\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = false;\n }\n };\n Selection.prototype.clickHandler = function (e) {\n var target = e.target;\n this.actualTarget = target;\n if (this.selectionSettings.persistSelection) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (parentsUntil(target, literals.row) || parentsUntil(target, 'e-headerchkcelldiv') ||\n (this.selectionSettings.allowColumnSelection && target.classList.contains('e-headercell'))) {\n this.isInteracted = true;\n }\n this.cmdKeyPressed = e.metaKey;\n this.isMultiCtrlRequest = e.ctrlKey || this.enableSelectMultiTouch ||\n (this.isMacOS && this.cmdKeyPressed);\n if (!this.parent.allowKeyboard) {\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n }\n else {\n this.isMultiShiftRequest = e.shiftKey;\n }\n this.isMultiCtrlRequestCell = this.isMultiCtrlRequest;\n this.popUpClickHandler(e);\n var chkSelect = false;\n this.preventFocus = true;\n var checkBox;\n var checkWrap = parentsUntil(target, 'e-checkbox-wrapper');\n this.checkSelectAllClicked = checkWrap && checkWrap.getElementsByClassName('e-checkselectall') ||\n (this.selectionSettings.persistSelection && parentsUntil(target, literals.row)) ? true : false;\n if (this.selectionSettings.persistSelection && this.isPartialSelection && parentsUntil(target, 'e-headerchkcelldiv')\n && !target.querySelector('.e-checkbox-disabled')) {\n this.isHdrSelectAllClicked = true;\n }\n if (checkWrap && checkWrap.querySelectorAll('.e-checkselect,.e-checkselectall').length > 0) {\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n chkSelect = true;\n }\n this.drawBorders();\n this.updateAutoFillPosition();\n target = parentsUntil(target, literals.rowCell);\n if (this.parent.isReact && (target && !target.parentElement && target.classList.contains('e-rowcell'))) {\n target = this.parent.getCellFromIndex(parseInt(target.getAttribute('index'), 10), parseInt(target.getAttribute('data-colindex'), 10));\n }\n if (this.isRowDragSelected && isNullOrUndefined(target) && this.parent.allowRowDragAndDrop &&\n this.selectionSettings.persistSelection && this.checkSelectAllClicked) {\n this.isRowDragSelected = false;\n }\n if (((target && target.parentElement.classList.contains(literals.row) && !this.parent.selectionSettings.checkboxOnly) || chkSelect)\n && !this.isRowDragSelected) {\n if (this.parent.isCheckBoxSelection) {\n this.isMultiCtrlRequest = true;\n }\n this.target = target;\n if (!isNullOrUndefined(checkBox)) {\n this.checkedTarget = checkBox;\n if (checkBox.classList.contains('e-checkselectall')) {\n this.checkSelectAll(checkBox);\n }\n else {\n this.checkSelect(checkBox);\n }\n }\n else {\n var gObj = this.parent;\n var rIndex = 0;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(literals.addedRow).length > 0) {\n ++rIndex;\n }\n if (!this.mUPTarget || !this.mUPTarget.isEqualNode(target)) {\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.dataColIndex), 10));\n }\n if (this.parent.isCheckBoxSelection) {\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n }\n }\n if (!this.parent.isCheckBoxSelection && Browser.isDevice && !this.isSingleSel()) {\n this.showPopup(e);\n }\n }\n else if (e.target.classList.contains('e-headercell') &&\n !e.target.classList.contains('e-stackedheadercell')) {\n var uid = e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n this.headerSelectionHandler(this.parent.getColumnIndexByUid(uid));\n }\n this.isMultiCtrlRequest = false;\n this.isMultiCtrlRequestCell = this.isMultiCtrlRequest;\n this.isMultiShiftRequest = false;\n if (isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n this.preventFocus = false;\n }\n };\n Selection.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains(literals.rowCell) ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-rowselect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSelectMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSelectMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.showPopup = function (e) {\n if (!this.selectionSettings.enableSimpleMultiRowSelection) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-rowselect e-icons e-icon-rowselect' +\n (!this.isSingleSel() && (this.selectedRecords.length > 1\n || this.selectedRowCellIndexes.length > 1) ? ' e-spanclicked' : ''));\n }\n };\n Selection.prototype.rowCellSelectionHandler = function (rowIndex, cellIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n if (!this.isDragged) {\n this.selectRow(rowIndex, this.selectionSettings.enableToggle);\n }\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, this.selectionSettings.enableToggle);\n if (this.selectedRowCellIndexes.length) {\n this.updateAutoFillPosition();\n }\n this.drawBorders();\n }\n else if (this.isMultiShiftRequest) {\n if (this.parent.isCheckBoxSelection || (!this.parent.isCheckBoxSelection &&\n !closest(this.target, '.' + literals.rowCell).classList.contains(literals.gridChkBox))) {\n this.selectRowsByRange(isUndefined(this.prevRowIndex) ? rowIndex : this.prevRowIndex, rowIndex);\n }\n else {\n this.addRowsToSelection([rowIndex]);\n }\n this.selectCellsByRange(isUndefined(this.prevCIdxs) ? { rowIndex: rowIndex, cellIndex: cellIndex } : this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.updateAutoFillPosition();\n this.drawBorders();\n }\n else {\n this.addRowsToSelection([rowIndex]);\n if (this.selectionSettings.mode === 'Both') {\n var checkboxColumn = this.parent.getColumns().find(function (col) { return col.type === 'checkbox'; });\n var checkboxColumnIndexCheck = checkboxColumn && checkboxColumn.index !== cellIndex;\n if (checkboxColumnIndexCheck && !this.isMultiCtrlRequestCell) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, this.selectionSettings.enableToggle);\n }\n else if (!checkboxColumn || checkboxColumnIndexCheck) {\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n }\n }\n else {\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n }\n this.showHideBorders('none');\n }\n this.isDragged = false;\n };\n Selection.prototype.onCellFocused = function (e) {\n if (this.parent.frozenRows && e.container.isHeader && e.byKey) {\n if (e.keyArgs.action === 'upArrow') {\n if (this.parent.allowFiltering) {\n e.isJump = e.element.tagName === 'INPUT' ? true : false;\n }\n else {\n e.isJump = e.element.tagName === 'TH' ? true : false;\n }\n }\n else {\n if (e.keyArgs.action === 'downArrow') {\n var rIdx = Number(e.element.parentElement.getAttribute(literals.dataRowIndex));\n e.isJump = rIdx === 0 ? true : false;\n }\n else {\n if (e.keyArgs.action === 'ctrlHome') {\n e.isJump = true;\n }\n }\n }\n }\n var clear = ((e.container.isHeader && e.isJump) ||\n (e.container.isContent && !e.container.isSelectable)) && !(e.byKey && e.keyArgs.action === 'space')\n && !(e.element.classList.contains('e-detailrowexpand') || e.element.classList.contains('e-detailrowcollapse'));\n var headerAction = (e.container.isHeader && e.element.tagName !== 'TD' && !closest(e.element, '.' + literals.rowCell))\n && !(e.byKey && e.keyArgs.action === 'space');\n if (!e.byKey || clear) {\n if (clear && !this.parent.isCheckBoxSelection) {\n this.clearSelection();\n }\n return;\n }\n var _a = e.container.isContent ? e.container.indexes : e.indexes, rowIndex = _a[0], cellIndex = _a[1];\n var prev = this.focus.getPrevIndexes();\n if (e.element.parentElement.querySelector('.e-rowcelldrag') || e.element.parentElement.querySelector('.e-dtdiagonalright')\n || e.element.parentElement.querySelector('.e-dtdiagonaldown')) {\n prev.cellIndex = prev.cellIndex - 1;\n }\n if (this.parent.frozenRows) {\n if (e.container.isHeader && (e.element.tagName === 'TD' || closest(e.element, '.' + literals.rowCell))) {\n var thLen = this.parent.getHeaderTable().querySelector('thead').childElementCount;\n rowIndex -= thLen;\n prev.rowIndex = !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex - thLen : null;\n }\n else {\n rowIndex += this.parent.frozenRows;\n prev.rowIndex = prev.rowIndex === 0 || !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex + this.parent.frozenRows : null;\n }\n }\n if (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) {\n rowIndex = parseInt(e.element.parentElement.getAttribute('data-rowindex'), 10);\n }\n if ((headerAction || (['ctrlPlusA', 'escape'].indexOf(e.keyArgs.action) === -1 &&\n e.keyArgs.action !== 'space' && rowIndex === prev.rowIndex && cellIndex === prev.cellIndex)) &&\n !this.selectionSettings.allowColumnSelection) {\n return;\n }\n this.preventFocus = true;\n var columnIndex = this.getKeyColIndex(e);\n if (this.needColumnSelection) {\n cellIndex = columnIndex;\n }\n if (this.parent.element.classList.contains('e-gridcell-read') && (e.keyArgs.action === 'tab' || e.keyArgs.action === 'shiftTab'\n || e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML + ' column header ' + this.parent.getColumnByIndex(cellIndex).field;\n this.target.setAttribute('aria-label', targetLabel);\n }\n switch (e.keyArgs.action) {\n case 'downArrow':\n case 'upArrow':\n case 'enter':\n case 'shiftEnter':\n this.target = e.element;\n this.isKeyAction = true;\n this.applyDownUpKey(rowIndex, cellIndex);\n break;\n case 'rightArrow':\n case 'leftArrow':\n this.applyRightLeftKey(rowIndex, cellIndex);\n break;\n case 'shiftDown':\n case 'shiftUp':\n this.shiftDownKey(rowIndex, cellIndex);\n break;\n case 'shiftLeft':\n case 'shiftRight':\n this.applyShiftLeftRightKey(rowIndex, cellIndex);\n break;\n case 'home':\n case 'end':\n cellIndex = e.keyArgs.action === 'end' ? this.getLastColIndex(rowIndex) : 0;\n this.applyHomeEndKey(rowIndex, cellIndex);\n break;\n case 'ctrlHome':\n case 'ctrlEnd':\n this.applyCtrlHomeEndKey(rowIndex, cellIndex);\n break;\n case 'escape':\n this.clearSelection();\n if (this.parent.clipboardModule) {\n window.navigator['clipboard'].writeText('');\n }\n break;\n case 'ctrlPlusA':\n this.ctrlPlusA();\n break;\n case 'space':\n this.applySpaceSelection(e.element);\n break;\n case 'tab':\n if (this.parent.editSettings.allowNextRowEdit) {\n this.selectRow(rowIndex);\n }\n break;\n }\n this.needColumnSelection = false;\n this.preventFocus = false;\n this.positionBorders();\n if (this.parent.isFrozenGrid()) {\n this.showHideBorders('none', true);\n this.refreshFrozenBorders();\n }\n this.updateAutoFillPosition();\n };\n Selection.prototype.getKeyColIndex = function (e) {\n var uid;\n var index = null;\n var stackedHeader = e.element.querySelector('.e-stackedheadercelldiv');\n if (this.selectionSettings.allowColumnSelection && parentsUntil(e.element, 'e-columnheader')) {\n this.needColumnSelection = e.container.isHeader ? true : false;\n if (stackedHeader) {\n if (e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow') {\n return index;\n }\n uid = stackedHeader.getAttribute('e-mappinguid');\n var innerColumn = this.getstackedColumns(this.parent.getColumnByUid(uid).columns);\n var lastIndex = this.parent.getColumnIndexByUid(innerColumn[innerColumn.length - 1].uid);\n var firstIndex = this.parent.getColumnIndexByUid(innerColumn[0].uid);\n index = this.prevColIndex >= lastIndex ? firstIndex : lastIndex;\n }\n else {\n index = this.parent.getColumnIndexByUid(e.element\n .querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n }\n }\n return index;\n };\n /**\n * Apply ctrl + A key selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.ctrlPlusA = function () {\n if (this.isRowType() && !this.isSingleSel()) {\n this.selectRowsByRange(0, this.getCurrentBatchRecordChanges().length - 1);\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange({ rowIndex: 0, cellIndex: 0 }, { rowIndex: this.parent.getRows().length - 1, cellIndex: this.parent.getColumns().length - 1 });\n }\n };\n Selection.prototype.applySpaceSelection = function (target) {\n if (target.classList.contains('e-checkselectall')) {\n this.checkedTarget = target;\n this.checkSelectAll(this.checkedTarget);\n }\n else {\n if (target.classList.contains('e-checkselect')) {\n this.checkedTarget = target;\n this.checkSelect(this.checkedTarget);\n }\n }\n };\n Selection.prototype.applyDownUpKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n if (this.parent.isCheckBoxSelection && this.parent.checkAllRows === 'Check' && !this.selectionSettings.persistSelection &&\n !this.selectionSettings.checkboxOnly) {\n this.checkSelectAllAction(false);\n this.checkedTarget = null;\n }\n if (this.isRowType() && !this.selectionSettings.checkboxOnly) {\n if (this.parent.frozenRows) {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n else {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n };\n Selection.prototype.applyUpDown = function (rowIndex) {\n if (rowIndex < 0) {\n return;\n }\n if (!this.target) {\n this.target = this.parent.getRows()[0].children[this.parent.groupSettings.columns.length || 0];\n }\n var cIndex = parseInt(this.target.getAttribute(literals.dataColIndex), 10);\n var row = this.contentRenderer.getRowByIndex(rowIndex);\n if (row) {\n this.target = row.getElementsByClassName(literals.rowCell)[parseInt(cIndex.toString(), 10)];\n }\n this.addAttribute(this.target);\n if (this.parent.element.classList.contains('e-gridcell-read')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML;\n this.target.setAttribute('aria-label', targetLabel);\n }\n };\n Selection.prototype.applyRightLeftKey = function (rowIndex, cellIndex) {\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n else if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n this.addAttribute(this.target);\n }\n };\n Selection.prototype.applyHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n else {\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n };\n /**\n * Apply shift+down key selection\n *\n * @param {number} rowIndex - specfies the rowIndex\n * @param {number} cellIndex - specifies the CellIndex\n * @returns {void}\n * @hidden\n */\n Selection.prototype.shiftDownKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.isRowType() && !this.isSingleSel()) {\n if (!isUndefined(this.prevRowIndex)) {\n this.selectRowsByRange(this.prevRowIndex, rowIndex);\n this.applyUpDown(rowIndex);\n }\n else if (this.isPartialSelection) {\n this.selectRow(rowIndex, true);\n }\n else {\n this.selectRow(0, true);\n }\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange(this.prevCIdxs || { rowIndex: 0, cellIndex: 0 }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.applyShiftLeftRightKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumnsByRange(this.prevColIndex, cellIndex);\n }\n else {\n this.selectCellsByRange(this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.getstackedColumns = function (column) {\n var innerColumnIndexes = [];\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[parseInt(i.toString(), 10)].columns) {\n this.getstackedColumns(column[parseInt(i.toString(), 10)].columns);\n }\n else {\n innerColumnIndexes.push(column[parseInt(i.toString(), 10)]);\n }\n }\n return innerColumnIndexes;\n };\n Selection.prototype.applyCtrlHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isRowType()) {\n this.selectRow(rowIndex, true);\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n };\n Selection.prototype.addRemoveClassesForRow = function (row, isAdd, clearAll) {\n var args = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n args[_i - 3] = arguments[_i];\n }\n if (row) {\n var cells = [].slice.call(row.getElementsByClassName(literals.rowCell));\n var detailIndentCell = row.querySelector('.e-detailrowcollapse') || row.querySelector('.e-detailrowexpand');\n var dragdropIndentCell = row.querySelector('.e-rowdragdrop');\n if (detailIndentCell) {\n cells.push(detailIndentCell);\n }\n if (dragdropIndentCell) {\n cells.push(dragdropIndentCell);\n }\n addRemoveActiveClasses.apply(void 0, [cells, isAdd].concat(args));\n }\n this.getRenderer().setSelection(row ? row.getAttribute('data-uid') : null, isAdd, clearAll);\n };\n Selection.prototype.isRowType = function () {\n return this.selectionSettings.mode === 'Row' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isCellType = function () {\n return this.selectionSettings.mode === 'Cell' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isSingleSel = function () {\n return this.selectionSettings.type === 'Single';\n };\n Selection.prototype.getRenderer = function () {\n if (isNullOrUndefined(this.contentRenderer)) {\n this.contentRenderer = this.factory.getRenderer(RenderType.Content);\n }\n return this.contentRenderer;\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} returns the Object\n */\n Selection.prototype.getSelectedRecords = function () {\n var selectedData = [];\n if (!this.selectionSettings.persistSelection && this.selectedRecords.length) {\n selectedData = this.parent.getRowsObject().filter(function (row) { return row.isSelected; })\n .map(function (m) { return m.data; });\n }\n else {\n selectedData = this.persistSelectedData;\n }\n return selectedData;\n };\n /**\n * Select the column by passing start column index\n *\n * @param {number} index - specifies the index\n * @returns {void}\n */\n Selection.prototype.selectColumn = function (index) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(index.toString(), 10)])) {\n return;\n }\n var column = gObj.getColumnByIndex(index);\n var selectedCol = gObj.getColumnHeaderByUid(column.uid);\n var isColSelected = selectedCol.classList.contains('e-columnselection');\n if ((!gObj.selectionSettings.allowColumnSelection)) {\n return;\n }\n var isMultiColumns = this.selectedColumnsIndexes.length > 1 &&\n this.selectedColumnsIndexes.indexOf(index) > -1;\n this.clearColDependency();\n if (!isColSelected || !this.selectionSettings.enableToggle || isMultiColumns) {\n var args = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(args, events.columnSelecting);\n if (args.cancel) {\n this.disableInteracted();\n return;\n }\n if (!(gObj.selectionSettings.enableToggle && index === this.prevColIndex && isColSelected) || isMultiColumns) {\n this.updateColSelection(selectedCol, index);\n }\n var selectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(index);\n };\n /**\n * Select the columns by passing start and end column index\n *\n * @param {number} startIndex - specifies the start index\n * @param {number} endIndex - specifies the end index\n * @returns {void}\n */\n Selection.prototype.selectColumnsByRange = function (startIndex, endIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var indexes = [];\n if (gObj.selectionSettings.type === 'Single' || isNullOrUndefined(endIndex)) {\n indexes[0] = startIndex;\n }\n else {\n var min = startIndex < endIndex;\n for (var i = startIndex; min ? i <= endIndex : i >= endIndex; min ? i++ : i--) {\n indexes.push(i);\n }\n }\n this.selectColumns(indexes);\n };\n /**\n * Select the columns by passing column indexes\n *\n * @param {number[]} columnIndexes - specifies the columnIndexes\n * @returns {void}\n */\n Selection.prototype.selectColumns = function (columnIndexes) {\n var gObj = this.parent;\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n columnIndexes = [columnIndexes[0]];\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n this.clearColDependency();\n var selectingArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n for (var i = 0, len = columnIndexes.length; i < len; i++) {\n this.updateColSelection(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(columnIndexes[parseInt(i.toString(), 10)]).uid), columnIndexes[parseInt(i.toString(), 10)]);\n }\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n this.updateColProps(columnIndexes[0]);\n };\n /**\n * Select the column with existing column by passing column index\n *\n * @param {number} startIndex - specifies the start index\n * @returns {void}\n */\n Selection.prototype.selectColumnWithExisting = function (startIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var newCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(startIndex).uid);\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n this.clearColDependency();\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n if (this.selectedColumnsIndexes.indexOf(startIndex) > -1) {\n this.clearColumnSelection(startIndex);\n }\n else {\n var selectingArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: gObj.getColumnByIndex(startIndex),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n this.updateColSelection(newCol, startIndex);\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n column: gObj.getColumnByIndex(startIndex),\n columnIndexes: this.selectedColumnsIndexes,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(startIndex);\n };\n /**\n * Clear the column selection\n *\n * @param {number} clearIndex - specifies the clearIndex\n * @returns {void}\n */\n Selection.prototype.clearColumnSelection = function (clearIndex) {\n if (this.isColumnSelected) {\n var gObj = this.parent;\n if (!isNullOrUndefined(clearIndex) && this.selectedColumnsIndexes.indexOf(clearIndex) === -1) {\n return;\n }\n var index = !isNullOrUndefined(clearIndex) ? clearIndex :\n this.selectedColumnsIndexes[this.selectedColumnsIndexes.length - 1];\n var column = gObj.getColumnByIndex(index);\n var selectedCol = gObj.getColumnHeaderByUid(column.uid);\n var deselectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted\n };\n var isCanceled = this.columnDeselect(deselectedArgs, events.columnDeselecting);\n if (isCanceled) {\n this.disableInteracted();\n return;\n }\n var selectedHeader = !isNullOrUndefined(clearIndex) ? [selectedCol] :\n [].slice.call(gObj.getHeaderContent().getElementsByClassName('e-columnselection'));\n var selectedCells = this.getSelectedColumnCells(clearIndex);\n for (var i = 0, len = selectedHeader.length; i < len; i++) {\n addRemoveActiveClasses([selectedHeader[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n addRemoveActiveClasses([selectedCells[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n if (!isNullOrUndefined(clearIndex)) {\n this.selectedColumnsIndexes.splice(this.selectedColumnsIndexes.indexOf(clearIndex), 1);\n this.parent.getColumns()[parseInt(clearIndex.toString(), 10)].isSelected = false;\n }\n else {\n this.columnDeselect(deselectedArgs, events.columnDeselected);\n this.selectedColumnsIndexes = [];\n this.isColumnSelected = false;\n this.parent.getColumns().filter(function (col) { return col.isSelected = false; });\n }\n }\n };\n Selection.prototype.getselectedCols = function () {\n var gObj = this.parent;\n var selectedCol;\n if (this.selectedColumnsIndexes.length > 1) {\n selectedCol = [];\n for (var i = 0; i < this.selectedColumnsIndexes.length; i++) {\n (selectedCol).push(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[parseInt(i.toString(), 10)]).uid));\n }\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[0]).uid);\n }\n return selectedCol;\n };\n Selection.prototype.getSelectedColumnCells = function (clearIndex) {\n var gObj = this.parent;\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows = isRowTemplate ? gObj.getRows() : gObj.getDataRows();\n var seletedcells = [];\n var selectionString = !isNullOrUndefined(clearIndex) ? '[data-colindex=\"' + clearIndex + '\"]' : '.e-columnselection';\n for (var i = 0, len = rows.length; i < len; i++) {\n seletedcells = seletedcells.concat([].slice.call(rows[parseInt(i.toString(), 10)].querySelectorAll(selectionString)));\n }\n return seletedcells;\n };\n Selection.prototype.columnDeselect = function (args, event) {\n if (event === 'columnDeselected') {\n delete args.cancel;\n }\n this.onActionComplete(args, event);\n return args.cancel;\n };\n Selection.prototype.updateColProps = function (startIndex) {\n this.prevColIndex = startIndex;\n this.isColumnSelected = this.selectedColumnsIndexes.length && true;\n };\n Selection.prototype.clearColDependency = function () {\n this.clearColumnSelection();\n this.selectedColumnsIndexes = [];\n };\n Selection.prototype.updateColSelection = function (selectedCol, startIndex) {\n if (isNullOrUndefined(this.parent.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows = isRowTemplate ? this.parent.getRows() : this.parent.getDataRows();\n this.selectedColumnsIndexes.push(startIndex);\n this.parent.getColumns()[parseInt(startIndex.toString(), 10)].isSelected = true;\n startIndex = startIndex + this.parent.getIndentCount();\n addRemoveActiveClasses([selectedCol], true, 'e-columnselection');\n for (var j = 0, len = rows.length; j < len; j++) {\n if (rows[parseInt(j.toString(), 10)].classList.contains(literals.row)) {\n if ((rows[parseInt(j.toString(), 10)].classList.contains(literals.editedRow)\n || rows[parseInt(j.toString(), 10)].classList.contains(literals.addedRow))\n && this.parent.editSettings.mode === 'Normal'\n && !isNullOrUndefined(rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\n else if (!isNullOrUndefined(rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\n }\n }\n };\n Selection.prototype.headerSelectionHandler = function (colIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n this.selectColumn(colIndex);\n }\n else if (this.isMultiShiftRequest) {\n this.selectColumnsByRange(isUndefined(this.prevColIndex) ? colIndex : this.prevColIndex, colIndex);\n }\n else {\n this.selectColumnWithExisting(colIndex);\n }\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.addEventListener_checkbox = function () {\n var _this = this;\n this.parent.on(events.dataReady, this.dataReady, this);\n this.onDataBoundFunction = this.onDataBound.bind(this);\n this.parent.addEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.on(events.refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.on(events.contentReady, this.checkBoxSelectionChanged, this);\n this.parent.on(events.beforeRefreshOnDataChange, this.initPerisistSelection, this);\n this.parent.on(events.onEmpty, this.setCheckAllForEmptyGrid, this);\n this.actionCompleteFunc = this.actionCompleteHandler.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.click, this.clickHandler, this);\n this.resizeEndFn = function () {\n _this.updateAutoFillPosition();\n _this.drawBorders();\n };\n this.resizeEndFn.bind(this);\n this.parent.addEventListener(events.resizeStop, this.resizeEndFn);\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.removeEventListener_checkbox = function () {\n this.parent.off(events.dataReady, this.dataReady);\n this.parent.removeEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.off(events.onEmpty, this.setCheckAllForEmptyGrid);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.beforeRefreshOnDataChange, this.initPerisistSelection);\n };\n Selection.prototype.setCheckAllForEmptyGrid = function () {\n var checkAllBox = this.getCheckAllBox();\n if (checkAllBox) {\n this.parent.isCheckBoxSelection = true;\n var spanEle = checkAllBox.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n };\n Selection.prototype.dataReady = function (e) {\n this.isHeaderCheckboxClicked = false;\n var isInfinitecroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfinitecroll) {\n this.disableUI = !this.parent.enableImmutableMode && !(e.requestType === 'save' && e['action'] === 'add');\n this.clearSelection();\n this.setCheckAllState();\n this.disableUI = false;\n }\n };\n Selection.prototype.actionCompleteHandler = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n };\n Selection.prototype.selectRowIndex = function (index) {\n this.parent.isSelectedRowIndexUpdating = true;\n if ((isNullOrUndefined(this.parent.selectedRowIndex) || this.parent.selectedRowIndex === -1) || !this.parent.enablePersistence) {\n this.parent.selectedRowIndex = index;\n }\n else {\n this.parent.selectedRowIndex = -1;\n }\n };\n Selection.prototype.disableInteracted = function () {\n this.isInteracted = false;\n };\n Selection.prototype.activeTarget = function () {\n this.actualTarget = this.isInteracted ? this.actualTarget : null;\n };\n return Selection;\n}());\nexport { Selection };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { formatUnit } from '@syncfusion/ej2-base';\nimport { columnWidthChanged, preventFrozenScrollRefresh } from '../base/constant';\nimport { Column } from '../models/column';\nimport { parentsUntil, ispercentageWidth, getScrollBarWidth } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * ColumnWidthService\n *\n * @hidden\n */\nvar ColumnWidthService = /** @class */ (function () {\n function ColumnWidthService(parent) {\n this.parent = parent;\n }\n ColumnWidthService.prototype.setWidthToColumns = function () {\n var i = 0;\n var indexes = this.parent.getColumnIndexesInView();\n var wFlag = true;\n var totalColumnsWidth = 0;\n if (this.parent.allowGrouping) {\n for (var len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n wFlag = false;\n continue;\n }\n this.setColumnWidth(new Column({ width: '30px' }), i);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n var columns = this.parent.getColumns();\n for (var j = 0; j < columns.length; j++) {\n this.setColumnWidth(columns[parseInt(j.toString(), 10)], wFlag && this.parent.enableColumnVirtualization ? undefined : j + i);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), this.parent.groupSettings.columns.length + columns.length);\n }\n totalColumnsWidth = this.getTableWidth(this.parent.getColumns());\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(totalColumnsWidth);\n }\n };\n ColumnWidthService.prototype.setMinwidthBycalculation = function (tWidth) {\n var difference = 0;\n var collection = this.parent.getColumns().filter(function (a) {\n return isNullOrUndefined(a.width) || a.width === 'auto';\n });\n if (collection.length) {\n if (!isNullOrUndefined(this.parent.width) && this.parent.width !== 'auto' &&\n typeof (this.parent.width) === 'string' && this.parent.width.indexOf('%') === -1) {\n difference = (typeof this.parent.width === 'string' ? parseInt(this.parent.width, 10) : this.parent.width) - tWidth;\n }\n else {\n difference = this.parent.element.getBoundingClientRect().width - tWidth;\n }\n var tmWidth = 0;\n for (var _i = 0, collection_1 = collection; _i < collection_1.length; _i++) {\n var cols = collection_1[_i];\n tmWidth += !isNullOrUndefined(cols.minWidth) ?\n ((typeof cols.minWidth === 'string' ? parseInt(cols.minWidth, 10) : cols.minWidth)) : 0;\n }\n for (var i = 0; i < collection.length; i++) {\n if (tWidth === 0 && this.parent.allowResizing && this.isWidthUndefined() && (i !== collection.length - 1)) {\n this.setUndefinedColumnWidth(collection);\n }\n var index = this.parent.getColumnIndexByField(collection[parseInt(i.toString(), 10)].field) + this.parent.getIndentCount();\n if (tWidth !== 0 && difference < tmWidth) {\n this.setWidth(collection[parseInt(i.toString(), 10)].minWidth, index);\n }\n else if (tWidth !== 0 && difference > tmWidth) {\n this.setWidth('', index, true);\n }\n }\n }\n };\n ColumnWidthService.prototype.setUndefinedColumnWidth = function (collection) {\n for (var k = 0; k < collection.length; k++) {\n if (k !== collection.length - 1) {\n collection[parseInt(k.toString(), 10)].width = 200;\n this.setWidth(200, this.parent.getColumnIndexByField(collection[parseInt(k.toString(), 10)].field));\n }\n }\n };\n ColumnWidthService.prototype.setColumnWidth = function (column, index, module) {\n if (this.parent.getColumns().length < 1) {\n return;\n }\n var columnIndex = isNullOrUndefined(index) ? this.parent.getNormalizedColumnIndex(column.uid) : index;\n var cWidth = this.getWidth(column);\n var tgridWidth = this.getTableWidth(this.parent.getColumns());\n if (cWidth !== null) {\n this.setWidth(cWidth, columnIndex);\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(tgridWidth);\n }\n if ((this.parent.allowResizing && module === 'resize')) {\n this.setWidthToTable();\n }\n this.parent.notify(columnWidthChanged, { index: columnIndex, width: cWidth, column: column, module: module });\n }\n };\n ColumnWidthService.prototype.setWidth = function (width, index, clear) {\n if (this.parent.groupSettings.columns.length > index && ispercentageWidth(this.parent)) {\n var elementWidth = this.parent.element.offsetWidth;\n width = (30 / elementWidth * 100).toFixed(1) + '%';\n }\n var header = this.parent.getHeaderTable();\n var content = this.parent.getContentTable();\n var fWidth = formatUnit(width);\n var headerCol = header.querySelector(literals.colGroup).children[parseInt(index.toString(), 10)];\n if (headerCol && !clear) {\n headerCol.style.width = fWidth;\n }\n else if (headerCol && clear) {\n headerCol.style.width = '';\n }\n var contentCol = content.querySelector(literals.colGroup).children[parseInt(index.toString(), 10)];\n if (contentCol && !clear) {\n contentCol.style.width = fWidth;\n }\n else if (contentCol && clear) {\n contentCol.style.width = '';\n }\n if (!this.parent.enableColumnVirtualization && this.parent.isEdit) {\n var edit = this.parent.element.querySelectorAll('.e-table.e-inline-edit');\n var editTableCol = [];\n for (var i = 0; i < edit.length; i++) {\n if (parentsUntil(edit[parseInt(i.toString(), 10)], 'e-grid').id === this.parent.element.id) {\n for (var j = 0; j < edit[parseInt(i.toString(), 10)].querySelector('colgroup').children.length; j++) {\n editTableCol.push(edit[parseInt(i.toString(), 10)].querySelector('colgroup').children[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (edit.length && editTableCol.length) {\n editTableCol[parseInt(index.toString(), 10)].style.width = fWidth;\n }\n }\n if (this.parent.isFrozenGrid() && this.parent.enableColumnVirtualization) {\n this.refreshFrozenScrollbar();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnWidthService.prototype.refreshFrozenScrollbar = function () {\n var args = { cancel: false };\n this.parent.notify(preventFrozenScrollRefresh, args);\n if (args.cancel) {\n return;\n }\n var scrollWidth = getScrollBarWidth();\n var movableScrollbar = this.parent.element.querySelector('.e-movablescrollbar');\n var movableWidth = this.parent.getContent().firstElementChild.getBoundingClientRect().width;\n if (this.parent.enableColumnVirtualization) {\n var placeHolder = this.parent.getContent().querySelector('.e-virtualtrack');\n if (placeHolder) {\n movableWidth = placeHolder.scrollWidth;\n }\n }\n if (this.parent.height !== 'auto') {\n movableWidth = movableWidth + scrollWidth;\n }\n movableScrollbar.firstElementChild.style.width = movableWidth + 'px';\n };\n ColumnWidthService.prototype.getSiblingsHeight = function (element) {\n var previous = this.getHeightFromDirection(element, 'previous');\n var next = this.getHeightFromDirection(element, 'next');\n return previous + next;\n };\n ColumnWidthService.prototype.getHeightFromDirection = function (element, direction) {\n var sibling = element[direction + 'ElementSibling'];\n var result = 0;\n var classList = [literals.gridHeader, literals.gridFooter, 'e-groupdroparea', 'e-gridpager', 'e-toolbar', 'e-temp-toolbar'];\n while (sibling) {\n if (classList.some(function (value) { return sibling.classList.contains(value); })) {\n result += sibling.offsetHeight;\n }\n sibling = sibling[direction + 'ElementSibling'];\n }\n return result;\n };\n ColumnWidthService.prototype.isWidthUndefined = function () {\n var isWidUndefCount = this.parent.getColumns().filter(function (col) {\n return isNullOrUndefined(col.width) && isNullOrUndefined(col.minWidth);\n }).length;\n return (this.parent.getColumns().length === isWidUndefCount);\n };\n ColumnWidthService.prototype.getWidth = function (column) {\n if (isNullOrUndefined(column.width) && this.parent.allowResizing\n && isNullOrUndefined(column.minWidth) && !this.isWidthUndefined()) {\n column.width = 200;\n }\n if (!column.width) {\n return null;\n }\n var width = parseInt(column.width.toString(), 10);\n if (column.minWidth && width < parseInt(column.minWidth.toString(), 10)) {\n return column.minWidth;\n }\n else if ((column.maxWidth && width > parseInt(column.maxWidth.toString(), 10))) {\n return column.maxWidth;\n }\n else {\n return column.width;\n }\n };\n ColumnWidthService.prototype.getTableWidth = function (columns) {\n var tWidth = 0;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n var cWidth = this.getWidth(column);\n if (column.width === 'auto') {\n cWidth = 0;\n }\n if (column.visible !== false && cWidth !== null) {\n tWidth += parseInt(cWidth.toString(), 10);\n }\n }\n return tWidth;\n };\n ColumnWidthService.prototype.setWidthToTable = function () {\n var tWidth = formatUnit(this.getTableWidth(this.parent.getColumns()));\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }));\n }\n tWidth = this.isAutoResize() ? '100%' : tWidth;\n this.parent.getHeaderTable().style.width = tWidth;\n this.parent.getContentTable().style.width = tWidth;\n var edit = this.parent.element.querySelector('.e-table.e-inline-edit');\n if (edit) {\n edit.style.width = tWidth;\n }\n };\n ColumnWidthService.prototype.isAutoResize = function () {\n return this.parent.allowResizing && this.parent.resizeSettings.mode === 'Auto';\n };\n return ColumnWidthService;\n}());\nexport { ColumnWidthService };\n","import { select, detach } from '@syncfusion/ej2-base';\nimport { VScroll } from './v-scroll';\nimport { HScroll } from './h-scroll';\n/**\n * Used to add scroll in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nexport function addScrolling(createElement, container, content, scrollType, enableRtl, offset) {\n var containerOffset;\n var contentOffset;\n var parentElem = container.parentElement;\n if (scrollType === 'vscroll') {\n containerOffset = offset || container.getBoundingClientRect().height;\n contentOffset = content.getBoundingClientRect().height;\n }\n else {\n containerOffset = container.getBoundingClientRect().width;\n contentOffset = content.getBoundingClientRect().width;\n }\n if (containerOffset < contentOffset) {\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n }\n else if (parentElem) {\n var width = parentElem.getBoundingClientRect().width;\n if (width < containerOffset && scrollType === 'hscroll') {\n contentOffset = width;\n container.style.maxWidth = width + 'px';\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n }\n return content;\n }\n else {\n return content;\n }\n}\n/**\n * Used to create scroll bar in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nfunction createScrollbar(createElement, container, content, scrollType, enableRtl, offset) {\n var scrollEle = createElement('div', { className: 'e-menu-' + scrollType });\n container.appendChild(scrollEle);\n scrollEle.appendChild(content);\n if (offset) {\n scrollEle.style.overflow = 'hidden';\n scrollEle.style.height = offset + 'px';\n }\n else {\n scrollEle.style.maxHeight = container.style.maxHeight;\n container.style.overflow = 'hidden';\n }\n var scrollObj;\n if (scrollType === 'vscroll') {\n scrollObj = new VScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetHeight / 2;\n }\n else {\n scrollObj = new HScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetWidth;\n }\n return scrollEle;\n}\n/**\n * Used to destroy the scroll option.\n *\n * @param {VScroll | HScroll} scrollObj - Specifies the scroller object\n * @param {Element} element - Specifies the element\n * @param {HTMLElement} skipEle - Specifies the skip element\n * @returns {void}\n * @hidden\n */\nexport function destroyScroll(scrollObj, element, skipEle) {\n if (scrollObj) {\n var menu = select('.e-menu-parent', element);\n if (menu) {\n if (!skipEle || skipEle === menu) {\n scrollObj.destroy();\n element.parentElement.appendChild(menu);\n detach(element);\n }\n }\n else {\n scrollObj.destroy();\n detach(element);\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, NotifyPropertyChanges, isBlazor } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents, Touch } from '@syncfusion/ej2-base';\nimport { Animation } from '@syncfusion/ej2-base';\nimport { Browser, Collection, setValue, getValue, getUniqueID, getInstance, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { select, selectAll, closest, detach, append, rippleEffect, isVisible, Complex, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { getZindexPartial, calculatePosition, isCollide, fit, Popup } from '@syncfusion/ej2-popups';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getScrollableParent } from '@syncfusion/ej2-popups';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nimport { addScrolling, destroyScroll } from '../common/menu-scroll';\nvar ENTER = 'enter';\nvar ESCAPE = 'escape';\nvar FOCUSED = 'e-focused';\nvar HEADER = 'e-menu-header';\nvar SELECTED = 'e-selected';\nvar SEPARATOR = 'e-separator';\nvar UPARROW = 'uparrow';\nvar DOWNARROW = 'downarrow';\nvar LEFTARROW = 'leftarrow';\nvar RIGHTARROW = 'rightarrow';\nvar HOME = 'home';\nvar END = 'end';\nvar TAB = 'tab';\nvar CARET = 'e-caret';\nvar ITEM = 'e-menu-item';\nvar DISABLED = 'e-disabled';\nvar HIDE = 'e-menu-hide';\nvar ICONS = 'e-icons';\nvar RTL = 'e-rtl';\nvar POPUP = 'e-menu-popup';\nvar TEMPLATE_PROPERTY = 'Template';\n/**\n * Configures the field options of the Menu.\n */\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('id')\n ], FieldSettings.prototype, \"itemId\", void 0);\n __decorate([\n Property('parentId')\n ], FieldSettings.prototype, \"parentId\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('url')\n ], FieldSettings.prototype, \"url\", void 0);\n __decorate([\n Property('separator')\n ], FieldSettings.prototype, \"separator\", void 0);\n __decorate([\n Property('items')\n ], FieldSettings.prototype, \"children\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Specifies menu items.\n */\nvar MenuItem = /** @class */ (function (_super) {\n __extends(MenuItem, _super);\n function MenuItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], MenuItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], MenuItem.prototype, \"separator\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuItem.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"url\", void 0);\n return MenuItem;\n}(ChildProperty));\nexport { MenuItem };\n/**\n * Animation configuration settings.\n */\nvar MenuAnimationSettings = /** @class */ (function (_super) {\n __extends(MenuAnimationSettings, _super);\n function MenuAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], MenuAnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], MenuAnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], MenuAnimationSettings.prototype, \"easing\", void 0);\n return MenuAnimationSettings;\n}(ChildProperty));\nexport { MenuAnimationSettings };\n/**\n * Base class for Menu and ContextMenu components.\n *\n * @private\n */\nvar MenuBase = /** @class */ (function (_super) {\n __extends(MenuBase, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {MenuBaseModel} options - Specifies the menu base model\n * @param {string | HTMLUListElement} element - Specifies the element\n */\n function MenuBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.navIdx = [];\n _this.animation = new Animation({});\n _this.isTapHold = false;\n _this.tempItem = [];\n _this.showSubMenuOn = 'Auto';\n return _this;\n }\n /**\n * Initialized third party configuration settings.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.preRender = function () {\n if (!this.isMenu) {\n var ul = void 0;\n if (this.element.tagName === 'EJS-CONTEXTMENU') {\n ul = this.createElement('ul', {\n id: getUniqueID(this.getModuleName()), className: 'e-control e-lib e-' + this.getModuleName()\n });\n var ejInst = getValue('ej2_instances', this.element);\n removeClass([this.element], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.clonedElement = this.element;\n this.element = ul;\n setValue('ej2_instances', ejInst, this.element);\n }\n else {\n ul = this.createElement('ul', { id: getUniqueID(this.getModuleName()) });\n append([].slice.call(this.element.cloneNode(true).children), ul);\n var refEle = this.element.nextElementSibling;\n if (refEle) {\n this.element.parentElement.insertBefore(ul, refEle);\n }\n else {\n this.element.parentElement.appendChild(ul);\n }\n this.clonedElement = ul;\n }\n this.clonedElement.style.display = 'none';\n }\n if (this.element.tagName === 'EJS-MENU') {\n var ele = this.element;\n var ejInstance = getValue('ej2_instances', ele);\n var ul = this.createElement('ul');\n var wrapper = this.createElement('EJS-MENU', { className: 'e-' + this.getModuleName() + '-wrapper' });\n for (var idx = 0, len = ele.attributes.length; idx < len; idx++) {\n ul.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = ul;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.clonedElement = wrapper;\n this.element = ele;\n if (!this.element.id) {\n this.element.id = getUniqueID(this.getModuleName());\n }\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderItems();\n this.wireEvents();\n this.renderComplete();\n var wrapper = this.getWrapper();\n // eslint-disable-next-line\n if (this.template && this.enableScrolling && (this.isReact || this.isAngular)) {\n requestAnimationFrame(function () {\n addScrolling(_this.createElement, wrapper, _this.element, 'hscroll', _this.enableRtl);\n });\n }\n };\n MenuBase.prototype.initialize = function () {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n if (this.isMenu) {\n this.element.parentElement.insertBefore(wrapper, this.element);\n }\n else {\n document.body.appendChild(wrapper);\n }\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n wrapper.appendChild(this.element);\n if (this.isMenu && this.hamburgerMode) {\n if (!this.target) {\n this.createHeaderContainer(wrapper);\n }\n }\n this.defaultOption = this.showItemOnClick;\n };\n MenuBase.prototype.renderItems = function () {\n if (!this.items.length) {\n var items = ListBase.createJsonFromElement(this.element, { fields: { child: 'items' } });\n this.setProperties({ items: items }, true);\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n }\n var ul = this.createItems(this.items);\n append(Array.prototype.slice.call(ul.children), this.element);\n this.element.classList.add('e-menu-parent');\n if (this.isMenu) {\n if (!this.hamburgerMode && this.element.classList.contains('e-vertical')) {\n this.setBlankIconStyle(this.element);\n }\n if (this.enableScrolling) {\n var wrapper = this.getWrapper();\n if (this.element.classList.contains('e-vertical')) {\n addScrolling(this.createElement, wrapper, this.element, 'vscroll', this.enableRtl);\n }\n else {\n addScrolling(this.createElement, wrapper, this.element, 'hscroll', this.enableRtl);\n }\n }\n }\n else {\n this.element.parentElement.setAttribute('role', 'dialog');\n this.element.parentElement.setAttribute('aria-label', 'context menu');\n }\n };\n MenuBase.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n if (this.target) {\n var target = void 0;\n var targetElems = selectAll(this.target);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.add(target, 'click', this.menuHeaderClickHandler, this);\n }\n else {\n if (Browser.isIos) {\n new Touch(target, { tapHold: this.touchHandler.bind(this) });\n }\n else {\n EventHandler.add(target, 'contextmenu', this.cmenuHandler, this);\n }\n }\n }\n this.targetElement = target;\n if (!this.isMenu) {\n EventHandler.add(this.targetElement, 'mousewheel DOMMouseScroll', this.scrollHandler, this);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'mousewheel DOMMouseScroll', this.scrollHandler, this);\n }\n }\n }\n if (!Browser.isDevice) {\n this.delegateMoverHandler = this.moverHandler.bind(this);\n this.delegateMouseDownHandler = this.mouseDownHandler.bind(this);\n EventHandler.add(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler, this);\n EventHandler.add(document, 'mousedown', this.delegateMouseDownHandler, this);\n }\n this.delegateClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.delegateClickHandler, this);\n this.wireKeyboardEvent(wrapper);\n this.rippleFn = rippleEffect(wrapper, { selector: '.' + ITEM });\n };\n MenuBase.prototype.wireKeyboardEvent = function (element) {\n var keyConfigs = {\n downarrow: DOWNARROW,\n uparrow: UPARROW,\n enter: ENTER,\n leftarrow: LEFTARROW,\n rightarrow: RIGHTARROW,\n escape: ESCAPE\n };\n if (this.isMenu) {\n keyConfigs.home = HOME;\n keyConfigs.end = END;\n keyConfigs.tab = TAB;\n }\n new KeyboardEvents(element, {\n keyAction: this.keyBoardHandler.bind(this),\n keyConfigs: keyConfigs\n });\n };\n MenuBase.prototype.mouseDownHandler = function (e) {\n if (closest(e.target, '.e-' + this.getModuleName() + '-wrapper') !== this.getWrapper()\n && (!closest(e.target, '.e-' + this.getModuleName() + '-popup'))) {\n this.closeMenu(this.isMenu ? null : this.navIdx.length, e);\n }\n };\n MenuBase.prototype.keyHandler = function (e) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n if (e.target && (e.target.classList.contains('e-contextmenu') || e.target.classList.contains('e-menu-item'))) {\n e.preventDefault();\n }\n }\n };\n MenuBase.prototype.keyBoardHandler = function (e) {\n var actionName = '';\n var trgt = e.target;\n var actionNeeded = this.isMenu && !this.hamburgerMode && !this.element.classList.contains('e-vertical')\n && this.navIdx.length < 1;\n e.preventDefault();\n if (this.enableScrolling && e.keyCode === 13 && trgt.classList.contains('e-scroll-nav')) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [closest(trgt, '.e-' + this.getModuleName() + '-wrapper')]);\n }\n if (actionNeeded) {\n switch (e.action) {\n case RIGHTARROW:\n actionName = RIGHTARROW;\n e.action = DOWNARROW;\n break;\n case LEFTARROW:\n actionName = LEFTARROW;\n e.action = UPARROW;\n break;\n case DOWNARROW:\n actionName = DOWNARROW;\n e.action = RIGHTARROW;\n break;\n case UPARROW:\n actionName = UPARROW;\n e.action = '';\n break;\n }\n }\n else if (this.enableRtl) {\n switch (e.action) {\n case LEFTARROW:\n actionNeeded = true;\n actionName = LEFTARROW;\n e.action = RIGHTARROW;\n break;\n case RIGHTARROW:\n actionNeeded = true;\n actionName = RIGHTARROW;\n e.action = LEFTARROW;\n break;\n }\n }\n switch (e.action) {\n case DOWNARROW:\n case UPARROW:\n case END:\n case HOME:\n case TAB:\n this.upDownKeyHandler(e);\n break;\n case RIGHTARROW:\n this.rightEnterKeyHandler(e);\n break;\n case LEFTARROW:\n this.leftEscKeyHandler(e);\n break;\n case ENTER:\n if (this.hamburgerMode && trgt.tagName === 'SPAN' && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n this.rightEnterKeyHandler(e);\n }\n break;\n case ESCAPE:\n this.leftEscKeyHandler(e);\n break;\n }\n if (actionNeeded) {\n e.action = actionName;\n }\n };\n MenuBase.prototype.upDownKeyHandler = function (e) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (e.action === DOWNARROW || e.action === HOME || e.action === TAB) ? 0 : cul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n if (e.action !== END && e.action !== HOME) {\n fliIdx = this.getIdx(cul, fli);\n }\n fli.classList.remove(FOCUSED);\n if (e.action !== END && e.action !== HOME) {\n if (e.action === DOWNARROW) {\n fliIdx++;\n }\n else {\n fliIdx--;\n }\n if (fliIdx === (e.action === DOWNARROW ? cul.childElementCount : -1)) {\n fliIdx = defaultIdx;\n }\n }\n }\n var cli = cul.children[fliIdx];\n fliIdx = this.isValidLI(cli, fliIdx, e.action);\n cul.children[fliIdx].classList.add(FOCUSED);\n cul.children[fliIdx].focus();\n };\n MenuBase.prototype.isValidLI = function (cli, index, action) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (action === DOWNARROW || action === HOME || action === TAB) ? 0 : cul.childElementCount - 1;\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n if (action === DOWNARROW && index === cul.childElementCount - 1) {\n index = defaultIdx;\n }\n else if (action === UPARROW && index === 0) {\n index = defaultIdx;\n }\n else if ((action === DOWNARROW) || (action === RIGHTARROW)) {\n index++;\n }\n else {\n index--;\n }\n }\n cli = cul.children[index];\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n index = this.isValidLI(cli, index, action);\n }\n return index;\n };\n MenuBase.prototype.getUlByNavIdx = function (navIdxLen) {\n var _this = this;\n if (navIdxLen === void 0) { navIdxLen = this.navIdx.length; }\n if (this.isMenu) {\n var popup = [this.getWrapper()].concat([].slice.call(selectAll('.' + POPUP)))[navIdxLen];\n var popups_1 = [];\n var allPopup = selectAll('.' + POPUP);\n allPopup.forEach(function (elem) {\n if (_this.element.id === elem.id.split('-')[2] || elem.id.split('-')[2] + '-' + elem.id.split('-')[3]) {\n popups_1.push(elem);\n }\n });\n popup = [this.getWrapper()].concat([].slice.call(popups_1))[navIdxLen];\n return isNullOrUndefined(popup) ? null : select('.e-menu-parent', popup);\n }\n else {\n return this.getWrapper().children[navIdxLen];\n }\n };\n MenuBase.prototype.rightEnterKeyHandler = function (e) {\n var eventArgs;\n var cul = this.getUlByNavIdx();\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n var fliIdx = this.getIdx(cul, fli);\n var navIdx = this.navIdx.concat(fliIdx);\n var item = this.getItem(navIdx);\n if (item.items.length) {\n this.navIdx.push(fliIdx);\n this.keyType = 'right';\n this.action = e.action;\n this.openMenu(fli, item, -1, -1, e);\n }\n else {\n if (e.action === ENTER) {\n if (this.isMenu && this.navIdx.length === 0) {\n this.removeLIStateByClass([SELECTED], [this.getWrapper()]);\n }\n else {\n fli.classList.remove(FOCUSED);\n }\n fli.classList.add(SELECTED);\n eventArgs = { element: fli, item: item, event: e };\n this.trigger('select', eventArgs);\n var aEle = fli.querySelector('.e-menu-url');\n if (item.url && aEle) {\n switch (aEle.getAttribute('target')) {\n case '_blank':\n window.open(item.url, '_blank');\n break;\n case '_parent':\n window.parent.location.href = item.url;\n break;\n default:\n window.location.href = item.url;\n }\n }\n this.closeMenu(null, e);\n var sli = this.getLIByClass(this.getUlByNavIdx(), SELECTED);\n if (sli) {\n sli.classList.add(FOCUSED);\n sli.focus();\n }\n }\n }\n }\n };\n MenuBase.prototype.leftEscKeyHandler = function (e) {\n if (this.navIdx.length) {\n this.keyType = 'left';\n this.closeMenu(this.navIdx.length, e);\n }\n else {\n if (e.action === ESCAPE) {\n this.closeMenu(null, e);\n }\n }\n };\n MenuBase.prototype.scrollHandler = function (e) {\n this.closeMenu(null, e);\n };\n MenuBase.prototype.touchHandler = function (e) {\n this.isTapHold = true;\n this.cmenuHandler(e.originalEvent);\n };\n MenuBase.prototype.cmenuHandler = function (e) {\n e.preventDefault();\n this.currentTarget = e.target;\n this.isCMenu = true;\n this.pageX = e.changedTouches ? e.changedTouches[0].pageX + 1 : e.pageX + 1;\n this.pageY = e.changedTouches ? e.changedTouches[0].pageY + 1 : e.pageY + 1;\n this.closeMenu(null, e);\n if (this.isCMenu) {\n if (this.canOpen(e.target)) {\n this.openMenu(null, null, this.pageY, this.pageX, e);\n }\n this.isCMenu = false;\n }\n };\n // eslint:disable-next-line:max-func-body-length\n MenuBase.prototype.closeMenu = function (ulIndex, e, isIterated) {\n var _this = this;\n if (ulIndex === void 0) { ulIndex = 0; }\n if (e === void 0) { e = null; }\n if (this.isMenuVisible()) {\n var sli = void 0;\n var item_1;\n var wrapper_1 = this.getWrapper();\n var beforeCloseArgs = void 0;\n var items_1;\n var popups = this.getPopups();\n var isClose = false;\n var cnt = this.isMenu ? popups.length + 1 : wrapper_1.childElementCount;\n var ul_1 = this.isMenu && cnt !== 1 ? select('.e-ul', popups[cnt - 2])\n : selectAll('.e-menu-parent', wrapper_1)[cnt - 1];\n if (this.isMenu && ul_1.classList.contains('e-menu')) {\n sli = this.getLIByClass(ul_1, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n isClose = true;\n }\n if (!isClose) {\n var liElem_1 = e && e.target && this.getLI(e.target);\n if (liElem_1) {\n this.cli = liElem_1;\n }\n else {\n this.cli = ul_1.children[0];\n }\n item_1 = this.navIdx.length ? this.getItem(this.navIdx) : null;\n items_1 = item_1 ? item_1.items : this.items;\n beforeCloseArgs = { element: ul_1, parentItem: item_1, items: items_1, event: e, cancel: false, isFocused: true };\n this.trigger('beforeClose', beforeCloseArgs, function (observedCloseArgs) {\n var popupEle;\n var closeArgs;\n var popupId = '';\n var popupObj;\n var isOpen = !observedCloseArgs.cancel;\n if (isOpen || _this.isCMenu) {\n if (_this.isMenu) {\n popupEle = closest(ul_1, '.' + POPUP);\n if (_this.hamburgerMode) {\n popupEle.parentElement.style.minHeight = '';\n closest(ul_1, '.e-menu-item').setAttribute('aria-expanded', 'false');\n }\n _this.unWireKeyboardEvent(popupEle);\n destroyScroll(getInstance(popupEle.children[0], VScroll), popupEle.children[0]);\n popupObj = getInstance(popupEle, Popup);\n popupObj.hide();\n popupId = popupEle.id;\n popupObj.destroy();\n detach(popupEle);\n }\n else {\n _this.toggleAnimation(ul_1, false);\n }\n closeArgs = { element: ul_1, parentItem: item_1, items: items_1 };\n _this.trigger('onClose', closeArgs);\n _this.navIdx.pop();\n if (_this.navIdx.length === 0 && e && e.type === 'keyup') {\n _this.showSubMenu = false;\n }\n if (!_this.isMenu) {\n EventHandler.remove(ul_1, 'keydown', _this.keyHandler);\n if (_this.keyType === 'right') {\n _this.keyType = '';\n }\n }\n }\n _this.updateReactTemplate();\n var trgtliId;\n var closedLi;\n var trgtLi;\n var trgtpopUp = _this.getWrapper() && _this.getUlByNavIdx();\n if (_this.isCMenu) {\n if (_this.canOpen(e.target)) {\n _this.openMenu(null, null, _this.pageY, _this.pageX, e);\n }\n _this.isCMenu = false;\n }\n if (_this.isMenu && trgtpopUp && popupId.length) {\n // eslint-disable-next-line\n trgtliId = new RegExp('(.*)-ej2menu-' + _this.element.id + '-popup').exec(popupId)[1];\n closedLi = trgtpopUp.querySelector('[id=\"' + trgtliId + '\"]');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n else if (trgtpopUp) {\n closedLi = trgtpopUp.querySelector('.e-menu-item.e-selected');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n var submenus = liElem_1 && liElem_1.querySelectorAll('.e-menu-item');\n if (isOpen && _this.hamburgerMode && ulIndex && !(submenus.length)) {\n _this.afterCloseMenu(e);\n }\n else if (isOpen && !_this.hamburgerMode && closedLi && !trgtLi && _this.keyType !== 'left' && (_this.navIdx.length || !_this.isMenu && _this.navIdx.length === 0)) {\n var ele = (e && (e.target.classList.contains('e-vscroll') || e.target.classList.contains('e-scroll-nav')))\n ? closest(e.target, '.e-menu-wrapper') : null;\n if (ele) {\n ele = ele.querySelector('.e-menu-item');\n if (_this.showItemOnClick || (ele && _this.getIndex(ele.id, true).length <= _this.navIdx.length)) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e, true);\n }\n }\n else {\n if (!(e && e.target.classList.contains('e-nav-arrow'))) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e);\n }\n }\n }\n else if (isOpen && !isIterated && !ulIndex && ((_this.hamburgerMode && _this.navIdx.length) ||\n _this.navIdx.length === 1 && liElem_1 && trgtpopUp !== liElem_1.parentElement)) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && isNullOrUndefined(ulIndex) && _this.navIdx.length) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && !_this.isMenu && !ulIndex && _this.navIdx.length === 0 && !_this.isMenusClosed) {\n _this.isMenusClosed = true;\n _this.closeMenu(0, e);\n }\n else if (isOpen && _this.isMenu && e && e.target &&\n _this.navIdx.length !== 0 && closest(e.target, '.e-menu-parent.e-control')) {\n _this.closeMenu(0, e);\n }\n else if (isOpen && !_this.isMenu && selectAll('.e-menu-parent', wrapper_1)[ulIndex - 1] && e.which === 3) {\n _this.closeMenu(null, e);\n }\n else {\n if (isOpen && (_this.keyType === 'right' || _this.keyType === 'click')) {\n _this.afterCloseMenu(e);\n }\n else {\n var cul = _this.getUlByNavIdx();\n var sli_1 = _this.getLIByClass(cul, SELECTED);\n if (sli_1) {\n sli_1.setAttribute('aria-expanded', 'false');\n sli_1.classList.remove(SELECTED);\n if (observedCloseArgs.isFocused && liElem_1 || _this.keyType === 'left') {\n sli_1.classList.add(FOCUSED);\n if (!e.target || !e.target.classList.contains('e-edit-template')) {\n sli_1.focus();\n }\n }\n }\n if (!isOpen && _this.hamburgerMode && liElem_1 && liElem_1.getAttribute('aria-expanded') === 'false' &&\n liElem_1.getAttribute('aria-haspopup') === 'true') {\n if (closest(liElem_1, '.e-menu-parent.e-control')) {\n _this.navIdx = [];\n }\n else {\n _this.navIdx.pop();\n }\n _this.navIdx.push(_this.cliIdx);\n var item_2 = _this.getItem(_this.navIdx);\n liElem_1.setAttribute('aria-expanded', 'true');\n _this.openMenu(liElem_1, item_2, -1, -1, e);\n }\n }\n if (_this.navIdx.length < 1) {\n if (_this.showSubMenuOn === 'Hover' || _this.showSubMenuOn === 'Click') {\n _this.showItemOnClick = _this.defaultOption;\n _this.showSubMenuOn = 'Auto';\n }\n }\n }\n _this.removeStateWrapper();\n });\n }\n }\n };\n MenuBase.prototype.updateReactTemplate = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && this.template && this.navIdx.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var portals = this.portals.splice(0, this.items.length);\n this.clearTemplate(['template']);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.portals = portals;\n this.renderReactTemplates();\n }\n };\n MenuBase.prototype.getMenuItemModel = function (item, level) {\n if (isNullOrUndefined(item)) {\n return null;\n }\n if (isNullOrUndefined(level)) {\n level = 0;\n }\n var fields = this.getFields(level);\n return { text: item[fields.text], id: item[fields.id], items: item[fields.child], separator: item[fields.separator],\n iconCss: item[fields.iconCss], url: item[fields.url] };\n };\n MenuBase.prototype.getPopups = function () {\n var _this = this;\n var popups = [];\n [].slice.call(document.querySelectorAll('.' + POPUP)).forEach(function (elem) {\n if (!isNullOrUndefined(elem.querySelector('.' + ITEM)) && _this.getIndex(elem.querySelector('.' + ITEM).id, true).length) {\n popups.push(elem);\n }\n });\n return popups;\n };\n MenuBase.prototype.isMenuVisible = function () {\n return (this.navIdx.length > 0 || (this.element.classList.contains('e-contextmenu') && isVisible(this.element).valueOf()));\n };\n MenuBase.prototype.canOpen = function (target) {\n var canOpen = true;\n if (this.filter) {\n canOpen = false;\n var filter = this.filter.split(' ');\n for (var i = 0, len = filter.length; i < len; i++) {\n if (closest(target, '.' + filter[i])) {\n canOpen = true;\n break;\n }\n }\n }\n return canOpen;\n };\n MenuBase.prototype.openMenu = function (li, item, top, left, e, target) {\n var _this = this;\n if (top === void 0) { top = 0; }\n if (left === void 0) { left = 0; }\n if (e === void 0) { e = null; }\n if (target === void 0) { target = this.targetElement; }\n var wrapper = this.getWrapper();\n this.lItem = li;\n var elemId = this.element.id !== '' ? this.element.id : 'menu';\n this.isMenusClosed = false;\n if (isNullOrUndefined(top)) {\n top = -1;\n }\n if (isNullOrUndefined(left)) {\n left = -1;\n }\n if (li) {\n this.uList = this.createItems(item[this.getField('children', this.navIdx.length - 1)]);\n if (!this.isMenu && Browser.isDevice) {\n wrapper.lastChild.style.display = 'none';\n var data = {\n text: item[this.getField('text')].toString(), iconCss: ICONS + ' e-previous'\n };\n var hdata = new MenuItem(this.items[0], 'items', data, true);\n var hli = this.createItems([hdata]).children[0];\n hli.classList.add(HEADER);\n this.uList.insertBefore(hli, this.uList.children[0]);\n }\n if (this.isMenu) {\n this.popupWrapper = this.createElement('div', {\n className: 'e-' + this.getModuleName() + '-wrapper ' + POPUP, id: li.id + '-ej2menu-' + elemId + '-popup'\n });\n if (this.hamburgerMode) {\n top = li.offsetHeight;\n li.appendChild(this.popupWrapper);\n }\n else {\n document.body.appendChild(this.popupWrapper);\n }\n this.isNestedOrVertical = this.element.classList.contains('e-vertical') || this.navIdx.length !== 1;\n this.popupObj = this.generatePopup(this.popupWrapper, this.uList, li, this.isNestedOrVertical);\n if (this.template) {\n this.renderReactTemplates();\n }\n if (this.hamburgerMode) {\n this.calculateIndentSize(this.uList, li);\n }\n else {\n if (this.cssClass) {\n addClass([this.popupWrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.popupObj.hide();\n }\n if (!this.hamburgerMode && !this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, 0, 0, 'menu'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, 0, 0, 'menu');\n }\n }\n else {\n this.uList.style.zIndex = this.element.style.zIndex;\n wrapper.appendChild(this.uList);\n if (!this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, top, left, 'none'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n }\n else {\n this.uList = this.element;\n this.uList.style.zIndex = getZindexPartial(target ? target : this.element).toString();\n if (isNullOrUndefined(e)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ev = document.createEvent('MouseEvents');\n ev.initEvent('click', true, false);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetEvent = this.copyObject(ev, {});\n targetEvent.target = targetEvent.srcElement = target;\n targetEvent.currentTarget = target;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.triggerBeforeOpen(li, this.uList, item, targetEvent, top, left, 'none');\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MenuBase.prototype.copyObject = function (source, destination) {\n for (var prop in source) {\n destination[\"\" + prop] = source[\"\" + prop];\n }\n return destination;\n };\n MenuBase.prototype.calculateIndentSize = function (ul, li) {\n var liStyle = getComputedStyle(li);\n var liIndent = parseInt(liStyle.textIndent, 10);\n if (this.navIdx.length < 2 && !li.classList.contains('e-blankicon')) {\n liIndent *= 2;\n }\n else {\n liIndent += (liIndent / 4);\n }\n ul.style.textIndent = liIndent + 'px';\n var blankIconElem = ul.querySelectorAll('.e-blankicon');\n if (blankIconElem && blankIconElem.length) {\n var menuIconElem = ul.querySelector('.e-menu-icon');\n var menuIconElemStyle = getComputedStyle(menuIconElem);\n var blankIconIndent = (parseInt(menuIconElemStyle.marginRight, 10) + menuIconElem.offsetWidth + liIndent);\n for (var i = 0; i < blankIconElem.length; i++) {\n blankIconElem[i].style.textIndent = blankIconIndent + 'px';\n }\n }\n };\n MenuBase.prototype.generatePopup = function (popupWrapper, ul, li, isNestedOrVertical) {\n var _this = this;\n var popupObj = new Popup(popupWrapper, {\n actionOnScroll: this.hamburgerMode ? 'none' : 'reposition',\n relateTo: li,\n collision: this.hamburgerMode ? { X: 'none', Y: 'none' } : { X: isNestedOrVertical ||\n this.enableRtl ? 'none' : 'flip', Y: 'fit' },\n position: (isNestedOrVertical && !this.hamburgerMode) ? { X: 'right', Y: 'top' } : { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n enableRtl: this.enableRtl,\n content: ul,\n open: function () {\n var scrollEle = select('.e-menu-vscroll', popupObj.element);\n if (scrollEle) {\n scrollEle.style.height = 'inherit';\n scrollEle.style.maxHeight = '';\n }\n var ul = select('.e-ul', popupObj.element);\n popupObj.element.style.maxHeight = '';\n ul.focus();\n _this.triggerOpen(ul);\n }\n });\n return popupObj;\n };\n MenuBase.prototype.createHeaderContainer = function (wrapper) {\n wrapper = wrapper || this.getWrapper();\n var spanElem = this.createElement('span', { className: 'e-' + this.getModuleName() + '-header' });\n var tempTitle = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.title) : this.title;\n var spanTitle = this.createElement('span', {\n className: 'e-' + this.getModuleName() + '-title', innerHTML: tempTitle\n });\n var spanIcon = this.createElement('span', {\n className: 'e-icons e-' + this.getModuleName() + '-icon', attrs: { 'tabindex': '0' }\n });\n spanElem.appendChild(spanTitle);\n spanElem.appendChild(spanIcon);\n wrapper.insertBefore(spanElem, this.element);\n };\n MenuBase.prototype.openHamburgerMenu = function (e) {\n if (this.hamburgerMode) {\n this.triggerBeforeOpen(null, this.element, null, e, 0, 0, 'hamburger');\n }\n };\n MenuBase.prototype.closeHamburgerMenu = function (e) {\n var _this = this;\n var beforeCloseArgs = { element: this.element, parentItem: null, event: e,\n items: this.items, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedHamburgerCloseArgs) {\n if (!observedHamburgerCloseArgs.cancel) {\n _this.closeMenu(null, e);\n _this.element.classList.add('e-hide-menu');\n _this.trigger('onClose', { element: _this.element, parentItem: null, items: _this.items });\n }\n });\n };\n MenuBase.prototype.callFit = function (element, x, y, top, left) {\n return fit(element, null, { X: x, Y: y }, { top: top, left: left });\n };\n MenuBase.prototype.triggerBeforeOpen = function (li, ul, item, e, top, left, type) {\n var _this = this;\n var items = li ? item[this.getField('children', this.navIdx.length - 1)] : this.items;\n var eventArgs = {\n element: ul, items: items, parentItem: item, event: e, cancel: false, top: top, left: left, showSubMenuOn: 'Auto'\n };\n var menuType = type;\n this.trigger('beforeOpen', eventArgs, function (observedOpenArgs) {\n switch (menuType) {\n case 'menu':\n if (!_this.hamburgerMode) {\n if (observedOpenArgs.showSubMenuOn !== 'Auto') {\n _this.showItemOnClick = !_this.defaultOption;\n _this.showSubMenuOn = observedOpenArgs.showSubMenuOn;\n }\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n }\n _this.popupWrapper.style.display = 'block';\n if (!_this.hamburgerMode) {\n _this.popupWrapper.style.maxHeight = _this.popupWrapper.getBoundingClientRect().height + 'px';\n if (_this.enableScrolling) {\n addScrolling(_this.createElement, _this.popupWrapper, _this.uList, 'vscroll', _this.enableRtl);\n }\n _this.checkScrollOffset(e);\n }\n if (!_this.hamburgerMode && !_this.left && !_this.top) {\n _this.popupObj.refreshPosition(_this.lItem, true);\n _this.left = parseInt(_this.popupWrapper.style.left, 10);\n _this.top = parseInt(_this.popupWrapper.style.top, 10);\n if (_this.enableRtl) {\n _this.left =\n _this.isNestedOrVertical ? _this.left - _this.popupWrapper.offsetWidth - _this.lItem.parentElement.offsetWidth + 2\n : _this.left - _this.popupWrapper.offsetWidth + _this.lItem.offsetWidth;\n }\n // eslint-disable-next-line\n if (_this.template && (_this.isReact || _this.isAngular)) {\n requestAnimationFrame(function () {\n _this.collision();\n _this.popupWrapper.style.display = '';\n });\n }\n else {\n _this.collision();\n _this.popupWrapper.style.display = '';\n }\n }\n else {\n _this.popupObj.collision = { X: 'none', Y: 'none' };\n _this.popupWrapper.style.display = '';\n }\n break;\n case 'none':\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n break;\n case 'hamburger':\n if (!observedOpenArgs.cancel) {\n _this.element.classList.remove('e-hide-menu');\n _this.triggerOpen(_this.element);\n }\n break;\n }\n if (menuType !== 'hamburger') {\n if (observedOpenArgs.cancel) {\n if (_this.isMenu) {\n _this.popupObj.destroy();\n detach(_this.popupWrapper);\n }\n else if (ul.className.indexOf('e-ul') > -1) {\n detach(ul);\n }\n _this.navIdx.pop();\n }\n else {\n if (_this.isMenu) {\n if (_this.hamburgerMode) {\n _this.popupWrapper.style.top = _this.top + 'px';\n _this.popupWrapper.style.left = 0 + 'px';\n _this.toggleAnimation(_this.popupWrapper);\n }\n else {\n _this.setBlankIconStyle(_this.popupWrapper);\n _this.wireKeyboardEvent(_this.popupWrapper);\n rippleEffect(_this.popupWrapper, { selector: '.' + ITEM });\n _this.popupWrapper.style.left = _this.left + 'px';\n _this.popupWrapper.style.top = _this.top + 'px';\n var animationOptions = _this.animationSettings.effect !== 'None' ? {\n name: _this.animationSettings.effect, duration: _this.animationSettings.duration,\n timingFunction: _this.animationSettings.easing\n } : null;\n _this.popupObj.show(animationOptions, _this.lItem);\n }\n }\n else {\n _this.setBlankIconStyle(_this.uList);\n _this.setPosition(_this.lItem, _this.uList, _this.top, _this.left);\n _this.toggleAnimation(_this.uList);\n }\n }\n }\n if (_this.keyType === 'right') {\n var cul = _this.getUlByNavIdx();\n li.classList.remove(FOCUSED);\n if (_this.isMenu && _this.navIdx.length === 1) {\n _this.removeLIStateByClass([SELECTED], [_this.getWrapper()]);\n }\n li.classList.add(SELECTED);\n if (_this.action === ENTER) {\n var eventArgs_1 = { element: li, item: item, event: e };\n _this.trigger('select', eventArgs_1);\n }\n li.focus();\n cul = _this.getUlByNavIdx();\n var index = _this.isValidLI(cul.children[0], 0, _this.action);\n cul.children[index].classList.add(FOCUSED);\n cul.children[index].focus();\n }\n });\n };\n MenuBase.prototype.collision = function () {\n var collide;\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if ((this.isNestedOrVertical || this.enableRtl) && (collide.indexOf('right') > -1\n || collide.indexOf('left') > -1)) {\n this.popupObj.collision.X = 'none';\n var offWidth = closest(this.lItem, '.e-' + this.getModuleName() + '-wrapper').offsetWidth;\n this.left =\n this.enableRtl ? calculatePosition(this.lItem, this.isNestedOrVertical ? 'right' : 'left', 'top').left\n : this.left - this.popupWrapper.offsetWidth - offWidth + 2;\n }\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if (collide.indexOf('left') > -1 || collide.indexOf('right') > -1) {\n this.left = this.callFit(this.popupWrapper, true, false, this.top, this.left).left;\n }\n this.popupWrapper.style.left = this.left + 'px';\n };\n MenuBase.prototype.setBlankIconStyle = function (menu) {\n var blankIconList = [].slice.call(menu.getElementsByClassName('e-blankicon'));\n if (!blankIconList.length) {\n return;\n }\n var iconLi = menu.querySelector('.e-menu-item:not(.e-blankicon):not(.e-separator)');\n if (!iconLi) {\n return;\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n if (!icon) {\n return;\n }\n var cssProp = this.enableRtl ? { padding: 'paddingRight', margin: 'marginLeft' } :\n { padding: 'paddingLeft', margin: 'marginRight' };\n var iconCssProps = getComputedStyle(icon);\n var iconSize = parseInt(iconCssProps.fontSize, 10);\n if (!!parseInt(iconCssProps.width, 10) && parseInt(iconCssProps.width, 10) > iconSize) {\n iconSize = parseInt(iconCssProps.width, 10);\n }\n // eslint:disable\n var size = iconSize + parseInt(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n iconCssProps[cssProp.margin], 10) + parseInt(getComputedStyle(iconLi)[cssProp.padding], 10) + \"px\";\n blankIconList.forEach(function (li) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n li.style[cssProp.padding] = size;\n });\n // eslint:enable\n };\n MenuBase.prototype.checkScrollOffset = function (e) {\n var wrapper = this.getWrapper();\n if (wrapper.children[0].classList.contains('e-menu-hscroll') && this.navIdx.length === 1) {\n var trgt = isNullOrUndefined(e) ? this.element : closest(e.target, '.' + ITEM);\n var offsetEle = select('.e-hscroll-bar', wrapper);\n if (offsetEle.scrollLeft > trgt.offsetLeft) {\n offsetEle.scrollLeft -= (offsetEle.scrollLeft - trgt.offsetLeft);\n }\n var offsetLeft = offsetEle.scrollLeft + offsetEle.offsetWidth;\n var offsetRight = trgt.offsetLeft + trgt.offsetWidth;\n if (offsetLeft < offsetRight) {\n offsetEle.scrollLeft += (offsetRight - offsetLeft);\n }\n }\n };\n MenuBase.prototype.setPosition = function (li, ul, top, left) {\n var px = 'px';\n this.toggleVisiblity(ul);\n if (ul === this.element || (left > -1 && top > -1)) {\n var collide = isCollide(ul, null, left, top);\n if (collide.indexOf('right') > -1) {\n left = left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n var offset = this.callFit(ul, false, true, top, left);\n top = offset.top - 20;\n if (top < 0) {\n var newTop = (pageYOffset + document.documentElement.clientHeight) - ul.getBoundingClientRect().height;\n if (newTop > -1) {\n top = newTop;\n }\n }\n }\n collide = isCollide(ul, null, left, top);\n if (collide.indexOf('left') > -1) {\n var offset = this.callFit(ul, true, false, top, left);\n left = offset.left;\n }\n }\n else {\n if (Browser.isDevice) {\n top = Number(this.element.style.top.replace(px, ''));\n left = Number(this.element.style.left.replace(px, ''));\n }\n else {\n var x = this.enableRtl ? 'left' : 'right';\n var offset = calculatePosition(li, x, 'top');\n top = offset.top;\n left = offset.left;\n var collide = isCollide(ul, null, this.enableRtl ? left - ul.offsetWidth : left, top);\n var xCollision = collide.indexOf('left') > -1 || collide.indexOf('right') > -1;\n if (xCollision) {\n offset = calculatePosition(li, this.enableRtl ? 'right' : 'left', 'top');\n left = offset.left;\n }\n if (this.enableRtl || xCollision) {\n left = (this.enableRtl && xCollision) ? left : left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n offset = this.callFit(ul, false, true, top, left);\n top = offset.top;\n }\n }\n }\n this.toggleVisiblity(ul, false);\n ul.style.top = top + px;\n ul.style.left = left + px;\n };\n MenuBase.prototype.toggleVisiblity = function (ul, isVisible) {\n if (isVisible === void 0) { isVisible = true; }\n ul.style.visibility = isVisible ? 'hidden' : '';\n ul.style.display = isVisible ? 'block' : 'none';\n };\n MenuBase.prototype.createItems = function (items) {\n var _this = this;\n var level = this.navIdx ? this.navIdx.length : 0;\n var fields = this.getFields(level);\n var showIcon = this.hasField(items, this.getField('iconCss', level));\n var listBaseOptions = {\n showIcon: showIcon,\n moduleName: 'menu',\n fields: fields,\n template: this.template,\n itemNavigable: true,\n itemCreating: function (args) {\n if (!args.curData[args.fields[fields.id]]) {\n args.curData[args.fields[fields.id]] = getUniqueID('menuitem');\n }\n if (isNullOrUndefined(args.curData.htmlAttributes)) {\n args.curData.htmlAttributes = {};\n }\n if (Browser.isIE) {\n args.curData.htmlAttributes.role = 'menuitem';\n args.curData.htmlAttributes.tabindex = '-1';\n }\n else {\n Object.assign(args.curData.htmlAttributes, { role: 'menuitem', tabindex: '-1' });\n }\n if (_this.isMenu && !args.curData[_this.getField('separator', level)]) {\n args.curData.htmlAttributes['aria-label'] = args.curData[args.fields.text] ?\n args.curData[args.fields.text] : args.curData[args.fields.id];\n }\n if (args.curData[args.fields[fields.iconCss]] === '') {\n args.curData[args.fields[fields.iconCss]] = null;\n }\n },\n itemCreated: function (args) {\n if (args.curData[_this.getField('separator', level)]) {\n args.item.classList.add(SEPARATOR);\n args.item.setAttribute('role', 'separator');\n }\n if (showIcon && !args.curData[args.fields.iconCss]\n && !args.curData[_this.getField('separator', level)]) {\n args.item.classList.add('e-blankicon');\n }\n if (args.curData[args.fields.child]\n && args.curData[args.fields.child].length) {\n var span = _this.createElement('span', { className: ICONS + ' ' + CARET });\n args.item.appendChild(span);\n args.item.setAttribute('aria-haspopup', 'true');\n args.item.setAttribute('aria-expanded', 'false');\n args.item.classList.add('e-menu-caret-icon');\n }\n if (_this.isMenu && _this.template) {\n args.item.setAttribute('id', args.curData[args.fields.id].toString());\n args.item.removeAttribute('data-uid');\n if (args.item.classList.contains('e-level-1')) {\n args.item.classList.remove('e-level-1');\n }\n if (args.item.classList.contains('e-has-child')) {\n args.item.classList.remove('e-has-child');\n }\n args.item.removeAttribute('aria-level');\n }\n var eventArgs = { item: args.curData, element: args.item };\n _this.trigger('beforeItemRender', eventArgs);\n }\n };\n this.setProperties({ 'items': this.items }, true);\n if (this.isMenu) {\n listBaseOptions.templateID = this.element.id + TEMPLATE_PROPERTY;\n }\n var ul = ListBase.createList(this.createElement, items, listBaseOptions, !this.template, this);\n ul.setAttribute('tabindex', '0');\n if (this.isMenu) {\n ul.setAttribute('role', 'menu');\n }\n else {\n ul.setAttribute('role', 'menubar');\n }\n return ul;\n };\n MenuBase.prototype.moverHandler = function (e) {\n var trgt = e.target;\n this.liTrgt = trgt;\n var cli = this.getLI(trgt);\n var wrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : this.getWrapper();\n var hdrWrapper = this.getWrapper();\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var ulId;\n var isDifferentElem = false;\n if (!wrapper) {\n return;\n }\n if (wrapper.id !== '') {\n ulId = regex.exec(wrapper.id)[1];\n }\n else {\n ulId = wrapper.querySelector('ul').id;\n }\n if (ulId !== this.element.id) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [this.getWrapper()]);\n if (this.navIdx.length) {\n isDifferentElem = true;\n }\n else {\n return;\n }\n }\n if (cli && closest(cli, '.e-' + this.getModuleName() + '-wrapper') && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [wrapper].concat(this.getPopups()) : [wrapper]);\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [hdrWrapper].concat(this.getPopups()) : [hdrWrapper]);\n cli.classList.add(FOCUSED);\n if (!this.showItemOnClick) {\n this.clickHandler(e);\n }\n }\n else if (this.isMenu && this.showItemOnClick && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n }\n if (this.isMenu) {\n if (!this.showItemOnClick && (trgt.parentElement !== wrapper && !closest(trgt, '.e-' + this.getModuleName() + '-popup'))\n && (!cli || (cli && !this.getIndex(cli.id, true).length)) && this.showSubMenuOn !== 'Hover') {\n this.removeLIStateByClass([FOCUSED], [wrapper]);\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n else if (isDifferentElem && !this.showItemOnClick) {\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n if (!this.isClosed) {\n this.removeStateWrapper();\n }\n this.isClosed = false;\n }\n };\n MenuBase.prototype.removeStateWrapper = function () {\n if (this.liTrgt) {\n var wrapper = closest(this.liTrgt, '.e-menu-vscroll');\n if (this.liTrgt.tagName === 'DIV' && wrapper) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [wrapper]);\n }\n }\n };\n MenuBase.prototype.removeLIStateByClass = function (classList, element) {\n var li;\n var _loop_1 = function (i) {\n classList.forEach(function (className) {\n li = select('.' + className, element[i]);\n if (li) {\n li.classList.remove(className);\n }\n });\n };\n for (var i = 0; i < element.length; i++) {\n _loop_1(i);\n }\n };\n MenuBase.prototype.getField = function (propName, level) {\n if (level === void 0) { level = 0; }\n var fieldName = this.fields[\"\" + propName];\n return typeof fieldName === 'string' ? fieldName :\n (!fieldName[level] ? fieldName[fieldName.length - 1].toString()\n : fieldName[level].toString());\n };\n MenuBase.prototype.getFields = function (level) {\n if (level === void 0) { level = 0; }\n return {\n id: this.getField('itemId', level),\n iconCss: this.getField('iconCss', level),\n text: this.getField('text', level),\n url: this.getField('url', level),\n child: this.getField('children', level),\n separator: this.getField('separator', level)\n };\n };\n MenuBase.prototype.hasField = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n MenuBase.prototype.menuHeaderClickHandler = function (e) {\n if (closest(e.target, '.e-menu-wrapper').querySelector('ul.e-menu-parent').id !== this.element.id) {\n return;\n }\n if (this.element.className.indexOf('e-hide-menu') > -1) {\n this.openHamburgerMenu(e);\n }\n else {\n this.closeHamburgerMenu(e);\n }\n };\n MenuBase.prototype.clickHandler = function (e) {\n if (this.isTapHold) {\n this.isTapHold = false;\n }\n else {\n var wrapper = this.getWrapper();\n var trgt = e.target;\n var cli = this.cli = this.getLI(trgt);\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var cliWrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : null;\n var isInstLI = cli && cliWrapper && (this.isMenu ? this.getIndex(cli.id, true).length > 0\n : wrapper.firstElementChild.id === cliWrapper.firstElementChild.id);\n if (Browser.isDevice && this.isMenu) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n this.mouseDownHandler(e);\n }\n if (cli && cliWrapper && this.isMenu) {\n var cliWrapperId = cliWrapper.id ? regex.exec(cliWrapper.id)[1] : cliWrapper.querySelector('.e-menu-parent').id;\n if (this.element.id !== cliWrapperId) {\n return;\n }\n }\n if (isInstLI && e.type === 'click' && !cli.classList.contains(HEADER)) {\n this.setLISelected(cli);\n var navIdx = this.getIndex(cli.id, true);\n var item = this.getItem(navIdx);\n var eventArgs = { element: cli, item: item, event: e };\n this.trigger('select', eventArgs);\n }\n if (isInstLI && (e.type === 'mouseover' || Browser.isDevice || this.showItemOnClick)) {\n var ul = void 0;\n if (cli.classList.contains(HEADER)) {\n ul = wrapper.children[this.navIdx.length - 1];\n this.toggleAnimation(ul);\n var sli = this.getLIByClass(ul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n detach(cli.parentNode);\n this.navIdx.pop();\n }\n else {\n if (!cli.classList.contains(SEPARATOR)) {\n this.showSubMenu = true;\n var cul = cli.parentNode;\n if (isNullOrUndefined(cul)) {\n return;\n }\n this.cliIdx = this.getIdx(cul, cli);\n if (this.isMenu || !Browser.isDevice) {\n var culIdx = this.isMenu ? Array.prototype.indexOf.call([wrapper].concat(this.getPopups()), closest(cul, '.' + 'e-' + this.getModuleName() + '-wrapper'))\n : this.getIdx(wrapper, cul);\n if (this.navIdx[culIdx] === this.cliIdx) {\n this.showSubMenu = false;\n }\n if (culIdx !== this.navIdx.length && (e.type !== 'mouseover' || this.showSubMenu)) {\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n this.isClosed = true;\n this.keyType = 'click';\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n }\n this.closeMenu(culIdx + 1, e);\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n }\n }\n }\n if (!this.isClosed) {\n this.afterCloseMenu(e);\n }\n this.isClosed = false;\n }\n }\n }\n else {\n if (this.isMenu && trgt.tagName === 'DIV' && this.navIdx.length && closest(trgt, '.e-menu-vscroll')) {\n var popupEle = closest(trgt, '.' + POPUP);\n var cIdx = Array.prototype.indexOf.call(this.getPopups(), popupEle) + 1;\n if (cIdx < this.navIdx.length) {\n this.closeMenu(cIdx + 1, e);\n if (popupEle) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [popupEle]);\n }\n }\n }\n else if (this.isMenu && this.hamburgerMode && trgt.tagName === 'SPAN'\n && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n if (trgt.tagName !== 'UL' || (this.isMenu ? trgt.parentElement.classList.contains('e-menu-wrapper') &&\n !this.getIndex(trgt.querySelector('.' + ITEM).id, true).length : trgt.parentElement !== wrapper)) {\n if (!cli) {\n this.removeLIStateByClass([SELECTED], [wrapper]);\n }\n if (!cli || !cli.querySelector('.' + CARET)) {\n this.closeMenu(null, e);\n }\n }\n }\n }\n }\n };\n MenuBase.prototype.afterCloseMenu = function (e) {\n if (isNullOrUndefined(e)) {\n return;\n }\n var isHeader;\n if (this.showSubMenu) {\n if (this.showItemOnClick && this.navIdx.length === 0) {\n isHeader = closest(e.target, '.e-menu-parent.e-control');\n }\n else {\n isHeader = closest(this.element, '.e-menu-parent.e-control');\n }\n var idx = this.navIdx.concat(this.cliIdx);\n var item = this.getItem(idx);\n if (item && item[this.getField('children', idx.length - 1)] &&\n item[this.getField('children', idx.length - 1)].length) {\n if (e.type === 'mouseover' || (Browser.isDevice && this.isMenu)) {\n this.setLISelected(this.cli);\n }\n if ((!this.hamburgerMode && isHeader) || (this.hamburgerMode && this.cli.getAttribute('aria-expanded') === 'false')) {\n this.cli.setAttribute('aria-expanded', 'true');\n this.navIdx.push(this.cliIdx);\n this.openMenu(this.cli, item, null, null, e);\n }\n }\n else {\n if (e.type !== 'mouseover') {\n this.closeMenu(null, e);\n }\n }\n if (!isHeader) {\n var cul = this.getUlByNavIdx();\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.setAttribute('aria-expanded', 'false');\n sli.classList.remove(SELECTED);\n }\n }\n }\n this.keyType = '';\n };\n MenuBase.prototype.setLISelected = function (li) {\n var sli = this.getLIByClass(li.parentElement, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n if (!this.isMenu) {\n li.classList.remove(FOCUSED);\n }\n li.classList.add(SELECTED);\n };\n MenuBase.prototype.getLIByClass = function (ul, classname) {\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains(classname)) {\n return ul.children[i];\n }\n }\n return null;\n };\n /**\n * This method is used to get the index of the menu item in the Menu based on the argument.\n *\n * @param {MenuItem | string} item - item be passed to get the index | id to be passed to get the item index.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.getItemIndex = function (item, isUniqueId) {\n var idx;\n if (typeof item === 'string') {\n idx = item;\n }\n else {\n idx = item.id;\n }\n var isText = (isUniqueId === false) ? false : true;\n var navIdx = this.getIndex(idx, isText);\n return navIdx;\n };\n /**\n * This method is used to set the menu item in the Menu based on the argument.\n *\n * @param {MenuItem} item - item need to be updated.\n * @param {string} id - id / text to be passed to update the item.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.setItem = function (item, id, isUniqueId) {\n var idx;\n if (isUniqueId) {\n idx = id ? id : item.id;\n }\n else {\n idx = id ? id : item.text;\n }\n var navIdx = this.getIndex(idx, isUniqueId);\n var newItem = this.getItem(navIdx);\n Object.assign(newItem, item);\n };\n MenuBase.prototype.getItem = function (navIdx) {\n navIdx = navIdx.slice();\n var idx = navIdx.pop();\n var items = this.getItems(navIdx);\n return items[idx];\n };\n MenuBase.prototype.getItems = function (navIdx) {\n var items = this.items;\n for (var i = 0; i < navIdx.length; i++) {\n items = items[navIdx[i]][this.getField('children', i)];\n }\n return items;\n };\n MenuBase.prototype.setItems = function (newItems, navIdx) {\n var items = this.getItems(navIdx);\n items.splice(0, items.length);\n for (var i = 0; i < newItems.length; i++) {\n items.splice(i, 0, newItems[i]);\n }\n };\n MenuBase.prototype.getIdx = function (ul, li, skipHdr) {\n if (skipHdr === void 0) { skipHdr = true; }\n var idx = Array.prototype.indexOf.call(ul.children, li);\n if (skipHdr && ul.children[0].classList.contains(HEADER)) {\n idx--;\n }\n return idx;\n };\n MenuBase.prototype.getLI = function (elem) {\n if (elem.tagName === 'LI' && elem.classList.contains('e-menu-item')) {\n return elem;\n }\n return closest(elem, 'li.e-menu-item');\n };\n MenuBase.prototype.updateItemsByNavIdx = function () {\n var items = this.items;\n var count = 0;\n for (var index = 0; index < this.navIdx.length; index++) {\n items = items[index].items;\n if (!items) {\n break;\n }\n count++;\n var ul = this.getUlByNavIdx(count);\n if (!ul) {\n break;\n }\n this.updateItem(ul, items);\n }\n };\n MenuBase.prototype.removeChildElement = function (elem) {\n while (elem.firstElementChild) {\n elem.removeChild(elem.firstElementChild);\n }\n return elem;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {MenuBaseModel} newProp - Specifies the new properties\n * @param {MenuBaseModel} oldProp - Specifies the old properties\n * @returns {void}\n */\n MenuBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var wrapper = this.getWrapper();\n var _loop_2 = function (prop) {\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (this_1.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'showItemOnClick':\n this_1.unWireEvents();\n this_1.showItemOnClick = newProp.showItemOnClick;\n this_1.wireEvents();\n break;\n case 'enableScrolling':\n if (newProp.enableScrolling) {\n var ul_2;\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n this_1.getPopups().forEach(function (wrapper) {\n ul_2 = select('.e-ul', wrapper);\n addScrolling(_this.createElement, wrapper, ul_2, 'vscroll', _this.enableRtl);\n });\n }\n else {\n var ul_3 = wrapper.children[0];\n if (this_1.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n }\n else {\n destroyScroll(getInstance(ul_3, HScroll), ul_3);\n }\n wrapper.style.overflow = '';\n wrapper.appendChild(this_1.element);\n this_1.getPopups().forEach(function (wrapper) {\n ul_3 = wrapper.children[0];\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n wrapper.style.overflow = '';\n });\n }\n break;\n case 'items': {\n var idx = void 0;\n var navIdx = void 0;\n var item = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this_1.isReact && this_1.template) {\n this_1.clearTemplate(['template']);\n }\n if (!Object.keys(oldProp.items).length) {\n this_1.updateItem(this_1.element, this_1.items);\n if (this_1.enableScrolling && this_1.element.parentElement.classList.contains('e-custom-scroll')) {\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n }\n if (!this_1.hamburgerMode) {\n for (var i = 1, count = wrapper.childElementCount; i < count; i++) {\n detach(wrapper.lastElementChild);\n }\n }\n this_1.navIdx = [];\n }\n else {\n var keys = Object.keys(newProp.items);\n for (var i = 0; i < keys.length; i++) {\n navIdx = this_1.getChangedItemIndex(newProp, [], Number(keys[i]));\n if (navIdx.length <= this_1.getWrapper().children.length) {\n idx = navIdx.pop();\n item = this_1.getItems(navIdx);\n this_1.insertAfter([item[idx]], item[idx].text);\n this_1.removeItem(item, navIdx, idx);\n this_1.setItems(item, navIdx);\n }\n navIdx.length = 0;\n }\n }\n break;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_2(prop);\n }\n };\n MenuBase.prototype.updateItem = function (ul, items) {\n if (isBlazor() && !this.isMenu) {\n ul = this.removeChildElement(ul);\n }\n else {\n if (this.enableScrolling) {\n var wrapper1 = this.getWrapper();\n var ul1 = wrapper1.children[0];\n if (this.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul1, VScroll), ul1);\n }\n else {\n destroyScroll(getInstance(ul1, HScroll), ul1);\n }\n }\n ul.innerHTML = '';\n }\n var lis = [].slice.call(this.createItems(items).children);\n lis.forEach(function (li) {\n ul.appendChild(li);\n });\n };\n MenuBase.prototype.getChangedItemIndex = function (newProp, index, idx) {\n index.push(idx);\n var key = Object.keys(newProp.items[idx]).pop();\n if (key === 'items') {\n var item = newProp.items[idx];\n var popStr = Object.keys(item.items).pop();\n if (popStr) {\n this.getChangedItemIndex(item, index, Number(popStr));\n }\n }\n else {\n if (key === 'isParentArray' && index.length > 1) {\n index.pop();\n }\n }\n return index;\n };\n MenuBase.prototype.removeItem = function (item, navIdx, idx) {\n item.splice(idx, 1);\n var uls = this.getWrapper().children;\n if (navIdx.length < uls.length) {\n detach(uls[navIdx.length].children[idx]);\n }\n };\n /**\n * Used to unwire the bind events.\n *\n * @private\n * @param {string} targetSelctor - Specifies the target selector\n * @returns {void}\n */\n MenuBase.prototype.unWireEvents = function (targetSelctor) {\n if (targetSelctor === void 0) { targetSelctor = this.target; }\n var wrapper = this.getWrapper();\n if (targetSelctor) {\n var target = void 0;\n var touchModule = void 0;\n var targetElems = selectAll(targetSelctor);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.remove(target, 'click', this.menuHeaderClickHandler);\n }\n else {\n if (Browser.isIos) {\n touchModule = getInstance(target, Touch);\n if (touchModule) {\n touchModule.destroy();\n }\n }\n else {\n EventHandler.remove(target, 'contextmenu', this.cmenuHandler);\n }\n }\n }\n if (!this.isMenu) {\n EventHandler.remove(this.targetElement, 'mousewheel DOMMouseScroll', this.scrollHandler);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'mousewheel DOMMouseScroll', this.scrollHandler);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.remove(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler);\n EventHandler.remove(document, 'mousedown', this.delegateMouseDownHandler);\n }\n EventHandler.remove(document, 'click', this.delegateClickHandler);\n this.unWireKeyboardEvent(wrapper);\n this.rippleFn();\n };\n MenuBase.prototype.unWireKeyboardEvent = function (element) {\n var keyboardModule = getInstance(element, KeyboardEvents);\n if (keyboardModule) {\n keyboardModule.destroy();\n }\n };\n MenuBase.prototype.toggleAnimation = function (ul, isMenuOpen) {\n var _this = this;\n if (isMenuOpen === void 0) { isMenuOpen = true; }\n var pUlHeight;\n var pElement;\n if (this.animationSettings.effect === 'None' || !isMenuOpen) {\n this.end(ul, isMenuOpen);\n }\n else {\n this.animation.animate(ul, {\n name: this.animationSettings.effect,\n duration: this.animationSettings.duration,\n timingFunction: this.animationSettings.easing,\n begin: function (options) {\n if (_this.hamburgerMode) {\n pElement = options.element.parentElement;\n options.element.style.position = 'absolute';\n pUlHeight = pElement.offsetHeight;\n options.element.style.maxHeight = options.element.offsetHeight + 'px';\n pElement.style.maxHeight = '';\n }\n else {\n options.element.style.display = 'block';\n options.element.style.maxHeight = options.element.getBoundingClientRect().height + 'px';\n }\n },\n progress: function (options) {\n if (_this.hamburgerMode) {\n pElement.style.minHeight = (pUlHeight + options.element.offsetHeight) + 'px';\n }\n },\n end: function (options) {\n if (_this.hamburgerMode) {\n options.element.style.position = '';\n options.element.style.maxHeight = '';\n pElement.style.minHeight = '';\n options.element.style.top = 0 + 'px';\n options.element.children[0].focus();\n _this.triggerOpen(options.element.children[0]);\n }\n else {\n _this.end(options.element, isMenuOpen);\n }\n }\n });\n }\n };\n MenuBase.prototype.triggerOpen = function (ul) {\n var item = this.navIdx.length ? this.getItem(this.navIdx) : null;\n var eventArgs = {\n element: ul, parentItem: item, items: item ? item.items : this.items\n };\n this.trigger('onOpen', eventArgs);\n if (!this.isMenu) {\n EventHandler.add(ul, 'keydown', this.keyHandler, this);\n }\n };\n MenuBase.prototype.end = function (ul, isMenuOpen) {\n if (isMenuOpen) {\n ul.style.display = 'block';\n ul.style.maxHeight = '';\n this.triggerOpen(ul);\n if (ul.querySelector('.' + FOCUSED)) {\n ul.querySelector('.' + FOCUSED).focus();\n }\n else {\n var ele = this.getWrapper().children[this.getIdx(this.getWrapper(), ul) - 1];\n if (this.currentTarget) {\n if (!(this.currentTarget.classList.contains('e-numerictextbox') || this.currentTarget.classList.contains('e-textbox') || this.currentTarget.tagName === 'INPUT')) {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n else {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n }\n else {\n if (ul === this.element) {\n var fli = this.getLIByClass(this.element, FOCUSED);\n if (fli) {\n fli.classList.remove(FOCUSED);\n }\n var sli = this.getLIByClass(this.element, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n ul.style.display = 'none';\n }\n else {\n detach(ul);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n MenuBase.prototype.getPersistData = function () {\n return '';\n };\n /**\n * Get wrapper element.\n *\n * @returns {Element} - Wrapper element\n * @private\n */\n MenuBase.prototype.getWrapper = function () {\n return closest(this.element, '.e-' + this.getModuleName() + '-wrapper');\n };\n MenuBase.prototype.getIndex = function (data, isUniqueId, items, nIndex, isCallBack, level) {\n if (items === void 0) { items = this.items; }\n if (nIndex === void 0) { nIndex = []; }\n if (isCallBack === void 0) { isCallBack = false; }\n if (level === void 0) { level = 0; }\n var item;\n level = isCallBack ? level + 1 : 0;\n for (var i = 0, len = items.length; i < len; i++) {\n item = items[i];\n if ((isUniqueId ? item[this.getField('itemId', level)] : item[this.getField('text', level)]) === data) {\n nIndex.push(i);\n break;\n }\n else if (item[this.getField('children', level)]\n && item[this.getField('children', level)].length) {\n nIndex = this.getIndex(data, isUniqueId, item[this.getField('children', level)], nIndex, true, level);\n if (nIndex[nIndex.length - 1] === -1) {\n if (i !== len - 1) {\n nIndex.pop();\n }\n }\n else {\n nIndex.unshift(i);\n break;\n }\n }\n else {\n if (i === len - 1) {\n nIndex.push(-1);\n }\n }\n }\n return (!isCallBack && nIndex[0] === -1) ? [] : nIndex;\n };\n /**\n * This method is used to enable or disable the menu items in the Menu based on the items and enable argument.\n *\n * @param {string[]} items - Text items that needs to be enabled/disabled.\n * @param {boolean} enable - Set `true`/`false` to enable/disable the list items.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.enableItems = function (items, enable, isUniqueId) {\n if (enable === void 0) { enable = true; }\n var ul;\n var idx;\n var navIdx;\n var disabled = DISABLED;\n var skipItem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n if (this.navIdx.length) {\n if (navIdx.length !== 1) {\n skipItem = false;\n for (var i_1 = 0, len = navIdx.length - 1; i_1 < len; i_1++) {\n if (navIdx[i_1] !== this.navIdx[i_1]) {\n skipItem = true;\n break;\n }\n }\n if (skipItem) {\n continue;\n }\n }\n }\n else {\n if (navIdx.length !== 1) {\n continue;\n }\n }\n idx = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul && !isNullOrUndefined(idx)) {\n if (enable) {\n if (this.isMenu) {\n ul.children[idx].classList.remove(disabled);\n ul.children[idx].removeAttribute('aria-disabled');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.remove(disabled);\n }\n else {\n ul.children[idx].classList.remove(disabled);\n }\n }\n }\n else {\n if (this.isMenu) {\n ul.children[idx].classList.add(disabled);\n ul.children[idx].setAttribute('aria-disabled', 'true');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.add(disabled);\n }\n else {\n ul.children[idx].classList.add(disabled);\n }\n }\n }\n }\n }\n };\n /**\n * This method is used to show the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be shown.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.showItems = function (items, isUniqueId) {\n this.showHideItems(items, false, isUniqueId);\n };\n /**\n * This method is used to hide the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be hidden.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.hideItems = function (items, isUniqueId) {\n this.showHideItems(items, true, isUniqueId);\n };\n MenuBase.prototype.showHideItems = function (items, ishide, isUniqueId) {\n var ul;\n var index;\n var navIdx;\n var item;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n index = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n item = this.getItems(navIdx);\n if (ul) {\n var validUl = isUniqueId ? ul.children[index].id : item[index].text.toString();\n if (ishide && validUl === items[i]) {\n ul.children[index].classList.add(HIDE);\n }\n else if (!ishide && validUl === items[i]) {\n ul.children[index].classList.remove(HIDE);\n }\n }\n }\n };\n /**\n * It is used to remove the menu items from the Menu based on the items text.\n *\n * @param {string[]} items Text items that needs to be removed.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.removeItems = function (items, isUniqueId) {\n var idx;\n var navIdx;\n var iitems;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n if (!isNullOrUndefined(idx)) {\n this.removeItem(iitems, navIdx, idx);\n }\n }\n };\n /**\n * It is used to insert the menu items after the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item after that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertAfter = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId);\n };\n /**\n * It is used to insert the menu items before the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item before that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertBefore = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId, false);\n };\n MenuBase.prototype.insertItems = function (items, text, isUniqueId, isAfter) {\n if (isAfter === void 0) { isAfter = true; }\n var li;\n var idx;\n var navIdx;\n var iitems;\n var menuitem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(text, isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n menuitem = new MenuItem(iitems[0], 'items', items[i], true);\n iitems.splice(isAfter ? idx + 1 : idx, 0, menuitem);\n var uls = this.isMenu ? [this.getWrapper()].concat(this.getPopups()) : [].slice.call(this.getWrapper().children);\n if (!isNullOrUndefined(idx) && navIdx.length < uls.length) {\n idx = isAfter ? idx + 1 : idx;\n li = this.createItems(iitems).children[idx];\n var ul = this.isMenu ? select('.e-menu-parent', uls[navIdx.length]) : uls[navIdx.length];\n ul.insertBefore(li, ul.children[idx]);\n }\n }\n };\n MenuBase.prototype.removeAttributes = function () {\n var _this = this;\n ['top', 'left', 'display', 'z-index'].forEach(function (key) {\n _this.element.style.removeProperty(key);\n });\n ['role', 'tabindex', 'class', 'style'].forEach(function (key) {\n if (key === 'class' && _this.element.classList.contains('e-menu-parent')) {\n _this.element.classList.remove('e-menu-parent');\n }\n if (['class', 'style'].indexOf(key) === -1 || !_this.element.getAttribute(key)) {\n _this.element.removeAttribute(key);\n }\n if (_this.isMenu && key === 'class' && _this.element.classList.contains('e-vertical')) {\n _this.element.classList.remove('e-vertical');\n }\n });\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n MenuBase.prototype.destroy = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n this.unWireEvents();\n if (!this.isMenu) {\n this.clonedElement.style.display = '';\n if (this.clonedElement.tagName === 'EJS-CONTEXTMENU') {\n addClass([this.clonedElement], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.element = this.clonedElement;\n }\n else {\n if (this.refreshing && this.clonedElement.childElementCount && this.clonedElement.children[0].tagName === 'LI') {\n this.setProperties({ 'items': [] }, true);\n }\n if (document.getElementById(this.clonedElement.id)) {\n var refEle = this.clonedElement.nextElementSibling;\n if (refEle && refEle !== wrapper) {\n this.clonedElement.parentElement.insertBefore(this.element, refEle);\n }\n else {\n this.clonedElement.parentElement.appendChild(this.element);\n }\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n append([].slice.call(this.clonedElement.children), this.element);\n detach(this.clonedElement);\n this.removeAttributes();\n }\n }\n this.clonedElement = null;\n }\n else {\n this.closeMenu();\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n this.removeAttributes();\n wrapper.parentNode.insertBefore(this.element, wrapper);\n this.clonedElement = null;\n }\n if (this.isMenu && this.clonedElement) {\n detach(this.element);\n wrapper.style.display = '';\n wrapper.classList.remove('e-' + this.getModuleName() + '-wrapper');\n wrapper.removeAttribute('data-ripple');\n }\n else {\n detach(wrapper);\n }\n _super.prototype.destroy.call(this);\n if (this.template) {\n this.clearTemplate(['template']);\n }\n }\n this.rippleFn = null;\n };\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"created\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], MenuBase.prototype, \"hoverDelay\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"filter\", void 0);\n __decorate([\n Property(null)\n ], MenuBase.prototype, \"template\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"enableScrolling\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({ itemId: 'id', text: 'text', parentId: 'parentId', iconCss: 'iconCss', url: 'url', separator: 'separator', children: 'items' }, FieldSettings)\n ], MenuBase.prototype, \"fields\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuBase.prototype, \"items\", void 0);\n __decorate([\n Complex({ duration: 400, easing: 'ease', effect: 'SlideDown' }, MenuAnimationSettings)\n ], MenuBase.prototype, \"animationSettings\", void 0);\n MenuBase = __decorate([\n NotifyPropertyChanges\n ], MenuBase);\n return MenuBase;\n}(Component));\nexport { MenuBase };\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var StackedColumnsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-stacked-columns';\n }\n }\n});\nexport var StackedColumnsPlugin = {\n name: 'e-stacked-columns',\n install: function (Vue) {\n Vue.component(StackedColumnsPlugin.name, StackedColumnsDirective);\n }\n};\nexport var StackedColumnDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-stacked-column';\n }\n }\n});\nexport var StackedColumnPlugin = {\n name: 'e-stacked-column',\n install: function (Vue) {\n Vue.component(StackedColumnPlugin.name, StackedColumnDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var ColumnsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-columns';\n }\n }\n});\nexport var ColumnsPlugin = {\n name: 'e-columns',\n install: function (Vue) {\n Vue.component(ColumnsPlugin.name, ColumnsDirective);\n }\n};\n/**\n * `e-column` directive represent a column of the VueJS Grid.\n * It must be contained in a Grid component(`ejs-grid`).\n * ```vue\n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var ColumnDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-column';\n }\n }\n});\nexport var ColumnPlugin = {\n name: 'e-column',\n install: function (Vue) {\n Vue.component(ColumnPlugin.name, ColumnDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var AggregateColumnsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-columns';\n }\n }\n});\nexport var AggregateColumnsPlugin = {\n name: 'e-columns',\n install: function (Vue) {\n Vue.component(AggregateColumnsPlugin.name, AggregateColumnsDirective);\n }\n};\n/**\n * `e-aggregate->e-column` directive represent a aggregate column of the VueJS Grid.\n * ```vue\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var AggregateColumnDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-column';\n }\n }\n});\nexport var AggregateColumnPlugin = {\n name: 'e-column',\n install: function (Vue) {\n Vue.component(AggregateColumnPlugin.name, AggregateColumnDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var AggregatesDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-aggregates';\n }\n }\n});\nexport var AggregatesPlugin = {\n name: 'e-aggregates',\n install: function (Vue) {\n Vue.component(AggregatesPlugin.name, AggregatesDirective);\n }\n};\n/**\n * `e-aggregate` directive represent a aggregate row of the VueJS Grid.\n * It must be contained in a Grid component(`ejs-grid`).\n * ```vue\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var AggregateDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-aggregate';\n }\n }\n});\nexport var AggregatePlugin = {\n name: 'e-aggregate',\n install: function (Vue) {\n Vue.component(AggregatePlugin.name, AggregateDirective);\n }\n};\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { Grid } from '@syncfusion/ej2-grids';\nimport { StackedColumnsDirective, StackedColumnDirective, StackedColumnsPlugin, StackedColumnPlugin } from './stacked-column.directive';\nimport { ColumnsDirective, ColumnDirective, ColumnsPlugin, ColumnPlugin } from './columns.directive';\nimport { AggregateColumnsDirective, AggregateColumnDirective, AggregateColumnsPlugin, AggregateColumnPlugin } from './aggregate-columns.directive';\nimport { AggregatesDirective, AggregateDirective, AggregatesPlugin, AggregatePlugin } from './aggregates.directive';\nexport var properties = ['isLazyUpdate', 'plugins', 'aggregates', 'allowExcelExport', 'allowFiltering', 'allowGrouping', 'allowKeyboard', 'allowMultiSorting', 'allowPaging', 'allowPdfExport', 'allowReordering', 'allowResizing', 'allowRowDragAndDrop', 'allowSelection', 'allowSorting', 'allowTextWrap', 'autoFit', 'childGrid', 'clipMode', 'columnChooserSettings', 'columnMenuItems', 'columnQueryMode', 'columns', 'contextMenuItems', 'cssClass', 'currencyCode', 'currentAction', 'currentViewData', 'dataSource', 'detailTemplate', 'editSettings', 'ej2StatePersistenceVersion', 'emptyRecordTemplate', 'enableAdaptiveUI', 'enableAltRow', 'enableAutoFill', 'enableColumnVirtualization', 'enableHeaderFocus', 'enableHover', 'enableHtmlSanitizer', 'enableImmutableMode', 'enableInfiniteScrolling', 'enablePersistence', 'enableRtl', 'enableStickyHeader', 'enableVirtualMaskRow', 'enableVirtualization', 'exportGrids', 'filterSettings', 'frozenColumns', 'frozenRows', 'gridLines', 'groupSettings', 'height', 'hierarchyPrintMode', 'infiniteScrollSettings', 'loadingIndicator', 'locale', 'pageSettings', 'pagerTemplate', 'parentDetails', 'printMode', 'query', 'queryString', 'resizeSettings', 'rowDropSettings', 'rowHeight', 'rowRenderingMode', 'rowTemplate', 'searchSettings', 'selectedRowIndex', 'selectionSettings', 'showColumnChooser', 'showColumnMenu', 'showHider', 'sortSettings', 'textWrapSettings', 'toolbar', 'toolbarTemplate', 'width', 'actionBegin', 'actionComplete', 'actionFailure', 'batchAdd', 'batchCancel', 'batchDelete', 'beforeAutoFill', 'beforeBatchAdd', 'beforeBatchDelete', 'beforeBatchSave', 'beforeCopy', 'beforeDataBound', 'beforeExcelExport', 'beforeOpenAdaptiveDialog', 'beforeOpenColumnChooser', 'beforePaste', 'beforePdfExport', 'beforePrint', 'beginEdit', 'cellDeselected', 'cellDeselecting', 'cellEdit', 'cellSave', 'cellSaved', 'cellSelected', 'cellSelecting', 'checkBoxChange', 'columnDataStateChange', 'columnDeselected', 'columnDeselecting', 'columnDrag', 'columnDragStart', 'columnDrop', 'columnMenuClick', 'columnMenuOpen', 'columnSelected', 'columnSelecting', 'commandClick', 'contextMenuClick', 'contextMenuOpen', 'created', 'dataBound', 'dataSourceChanged', 'dataStateChange', 'destroyed', 'detailDataBound', 'excelAggregateQueryCellInfo', 'excelExportComplete', 'excelHeaderQueryCellInfo', 'excelQueryCellInfo', 'exportDetailDataBound', 'exportDetailTemplate', 'exportGroupCaption', 'headerCellInfo', 'keyPressed', 'lazyLoadGroupCollapse', 'lazyLoadGroupExpand', 'load', 'pdfAggregateQueryCellInfo', 'pdfExportComplete', 'pdfHeaderQueryCellInfo', 'pdfQueryCellInfo', 'printComplete', 'queryCellInfo', 'recordClick', 'recordDoubleClick', 'resizeStart', 'resizeStop', 'resizing', 'rowDataBound', 'rowDeselected', 'rowDeselecting', 'rowDrag', 'rowDragStart', 'rowDragStartHelper', 'rowDrop', 'rowSelected', 'rowSelecting', 'toolbarClick'];\nexport var modelProps = ['dataSource'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * `ejs-grid` represents the VueJS Grid Component.\n * ```vue\n * \n * ```\n */\nexport var GridComponent = vueDefineComponent({\n name: 'GridComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new Grid({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: true,\n hasInjectedModules: true,\n tagMapper: { \"e-columns\": { \"e-column\": { \"e-stacked-columns\": \"e-stacked-column\" } }, \"e-aggregates\": { \"e-aggregate\": { \"e-columns\": \"e-column\" } } },\n tagNameMapper: { \"e-stacked-columns\": \"e-columns\" },\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n addRecord: function (data, index) {\n return this.ej2Instances.addRecord(data, index);\n },\n addShimmerEffect: function () {\n return this.ej2Instances.addShimmerEffect();\n },\n autoFitColumns: function (fieldNames) {\n return this.ej2Instances.autoFitColumns(fieldNames);\n },\n batchAsyncUpdate: function (changes) {\n return this.ej2Instances.batchAsyncUpdate(changes);\n },\n batchUpdate: function (changes) {\n return this.ej2Instances.batchUpdate(changes);\n },\n calculatePageSizeByParentHeight: function (containerHeight) {\n return this.ej2Instances.calculatePageSizeByParentHeight(containerHeight);\n },\n changeDataSource: function (dataSource, columns) {\n return this.ej2Instances.changeDataSource(dataSource, columns);\n },\n clearCellSelection: function () {\n return this.ej2Instances.clearCellSelection();\n },\n clearFiltering: function (fields) {\n return this.ej2Instances.clearFiltering(fields);\n },\n clearGrouping: function () {\n return this.ej2Instances.clearGrouping();\n },\n clearRowSelection: function () {\n return this.ej2Instances.clearRowSelection();\n },\n clearSelection: function () {\n return this.ej2Instances.clearSelection();\n },\n clearSorting: function () {\n return this.ej2Instances.clearSorting();\n },\n closeEdit: function () {\n return this.ej2Instances.closeEdit();\n },\n copy: function (withHeader) {\n return this.ej2Instances.copy(withHeader);\n },\n csvExport: function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n return this.ej2Instances.csvExport(excelExportProperties, isMultipleExport, workbook, isBlob);\n },\n dataReady: function () {\n return this.ej2Instances.dataReady();\n },\n deleteRecord: function (fieldname, data) {\n return this.ej2Instances.deleteRecord(fieldname, data);\n },\n deleteRow: function (tr) {\n return this.ej2Instances.deleteRow(tr);\n },\n destroyTemplate: function (propertyNames, index) {\n return this.ej2Instances.destroyTemplate(propertyNames, index);\n },\n detailCollapseAll: function () {\n return this.ej2Instances.detailCollapseAll();\n },\n detailExpandAll: function () {\n return this.ej2Instances.detailExpandAll();\n },\n editCell: function (index, field) {\n return this.ej2Instances.editCell(index, field);\n },\n enableToolbarItems: function (items, isEnable) {\n return this.ej2Instances.enableToolbarItems(items, isEnable);\n },\n endEdit: function () {\n return this.ej2Instances.endEdit();\n },\n excelExport: function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n return this.ej2Instances.excelExport(excelExportProperties, isMultipleExport, workbook, isBlob);\n },\n extendRequiredModules: function (modules) {\n return this.ej2Instances.extendRequiredModules(modules);\n },\n filterByColumn: function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n return this.ej2Instances.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n },\n getBatchChanges: function () {\n return this.ej2Instances.getBatchChanges();\n },\n getCellFromIndex: function (rowIndex, columnIndex) {\n return this.ej2Instances.getCellFromIndex(rowIndex, columnIndex);\n },\n getColumnByField: function (field) {\n return this.ej2Instances.getColumnByField(field);\n },\n getColumnByUid: function (uid) {\n return this.ej2Instances.getColumnByUid(uid);\n },\n getColumnFieldNames: function () {\n return this.ej2Instances.getColumnFieldNames();\n },\n getColumnHeaderByField: function (field) {\n return this.ej2Instances.getColumnHeaderByField(field);\n },\n getColumnHeaderByIndex: function (index) {\n return this.ej2Instances.getColumnHeaderByIndex(index);\n },\n getColumnHeaderByUid: function (uid) {\n return this.ej2Instances.getColumnHeaderByUid(uid);\n },\n getColumnIndexByField: function (field) {\n return this.ej2Instances.getColumnIndexByField(field);\n },\n getColumnIndexByUid: function (uid) {\n return this.ej2Instances.getColumnIndexByUid(uid);\n },\n getColumns: function (isRefresh) {\n return this.ej2Instances.getColumns(isRefresh);\n },\n getContent: function () {\n return this.ej2Instances.getContent();\n },\n getContentTable: function () {\n return this.ej2Instances.getContentTable();\n },\n getCurrentViewRecords: function () {\n return this.ej2Instances.getCurrentViewRecords();\n },\n getDataModule: function () {\n return this.ej2Instances.getDataModule();\n },\n getDataRows: function () {\n return this.ej2Instances.getDataRows();\n },\n getFilterUIInfo: function () {\n return this.ej2Instances.getFilterUIInfo();\n },\n getFilteredRecords: function () {\n return this.ej2Instances.getFilteredRecords();\n },\n getFooterContent: function () {\n return this.ej2Instances.getFooterContent();\n },\n getFooterContentTable: function () {\n return this.ej2Instances.getFooterContentTable();\n },\n getForeignKeyColumns: function () {\n return this.ej2Instances.getForeignKeyColumns();\n },\n getFrozenDataRows: function () {\n return this.ej2Instances.getFrozenDataRows();\n },\n getFrozenLeftColumnHeaderByIndex: function (index) {\n return this.ej2Instances.getFrozenLeftColumnHeaderByIndex(index);\n },\n getFrozenLeftCount: function () {\n return this.ej2Instances.getFrozenLeftCount();\n },\n getFrozenMode: function () {\n return this.ej2Instances.getFrozenMode();\n },\n getFrozenRightCellFromIndex: function (rowIndex, columnIndex) {\n return this.ej2Instances.getFrozenRightCellFromIndex(rowIndex, columnIndex);\n },\n getFrozenRightColumnHeaderByIndex: function (index) {\n return this.ej2Instances.getFrozenRightColumnHeaderByIndex(index);\n },\n getFrozenRightDataRows: function () {\n return this.ej2Instances.getFrozenRightDataRows();\n },\n getFrozenRightRowByIndex: function (index) {\n return this.ej2Instances.getFrozenRightRowByIndex(index);\n },\n getFrozenRightRows: function () {\n return this.ej2Instances.getFrozenRightRows();\n },\n getFrozenRowByIndex: function (index) {\n return this.ej2Instances.getFrozenRowByIndex(index);\n },\n getHeaderContent: function () {\n return this.ej2Instances.getHeaderContent();\n },\n getHeaderTable: function () {\n return this.ej2Instances.getHeaderTable();\n },\n getHiddenColumns: function () {\n return this.ej2Instances.getHiddenColumns();\n },\n getMediaColumns: function () {\n return this.ej2Instances.getMediaColumns();\n },\n getMovableCellFromIndex: function (rowIndex, columnIndex) {\n return this.ej2Instances.getMovableCellFromIndex(rowIndex, columnIndex);\n },\n getMovableColumnHeaderByIndex: function (index) {\n return this.ej2Instances.getMovableColumnHeaderByIndex(index);\n },\n getMovableDataRows: function () {\n return this.ej2Instances.getMovableDataRows();\n },\n getMovableRowByIndex: function (index) {\n return this.ej2Instances.getMovableRowByIndex(index);\n },\n getMovableRows: function () {\n return this.ej2Instances.getMovableRows();\n },\n getPager: function () {\n return this.ej2Instances.getPager();\n },\n getPrimaryKeyFieldNames: function () {\n return this.ej2Instances.getPrimaryKeyFieldNames();\n },\n getRowByIndex: function (index) {\n return this.ej2Instances.getRowByIndex(index);\n },\n getRowIndexByPrimaryKey: function (value) {\n return this.ej2Instances.getRowIndexByPrimaryKey(value);\n },\n getRowInfo: function (target) {\n return this.ej2Instances.getRowInfo(target);\n },\n getRows: function () {\n return this.ej2Instances.getRows();\n },\n getSelectedColumnsUid: function () {\n return this.ej2Instances.getSelectedColumnsUid();\n },\n getSelectedRecords: function () {\n return this.ej2Instances.getSelectedRecords();\n },\n getSelectedRowCellIndexes: function () {\n return this.ej2Instances.getSelectedRowCellIndexes();\n },\n getSelectedRowIndexes: function () {\n return this.ej2Instances.getSelectedRowIndexes();\n },\n getSelectedRows: function () {\n return this.ej2Instances.getSelectedRows();\n },\n getSummaryValues: function (summaryCol, summaryData) {\n return this.ej2Instances.getSummaryValues(summaryCol, summaryData);\n },\n getUidByColumnField: function (field) {\n return this.ej2Instances.getUidByColumnField(field);\n },\n getVisibleColumns: function () {\n return this.ej2Instances.getVisibleColumns();\n },\n goToPage: function (pageNo) {\n return this.ej2Instances.goToPage(pageNo);\n },\n groupCollapseAll: function () {\n return this.ej2Instances.groupCollapseAll();\n },\n groupColumn: function (columnName) {\n return this.ej2Instances.groupColumn(columnName);\n },\n groupExpandAll: function () {\n return this.ej2Instances.groupExpandAll();\n },\n hideColumns: function (keys, hideBy) {\n return this.ej2Instances.hideColumns(keys, hideBy);\n },\n hideScroll: function () {\n return this.ej2Instances.hideScroll();\n },\n hideSpinner: function () {\n return this.ej2Instances.hideSpinner();\n },\n isFrozenGrid: function () {\n return this.ej2Instances.isFrozenGrid();\n },\n openColumnChooser: function (x, y) {\n return this.ej2Instances.openColumnChooser(x, y);\n },\n pdfExport: function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n return this.ej2Instances.pdfExport(pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n },\n print: function () {\n return this.ej2Instances.print();\n },\n refresh: function () {\n return this.ej2Instances.refresh();\n },\n refreshColumns: function () {\n return this.ej2Instances.refreshColumns();\n },\n refreshHeader: function () {\n return this.ej2Instances.refreshHeader();\n },\n removeMaskRow: function () {\n return this.ej2Instances.removeMaskRow();\n },\n reorderColumnByIndex: function (fromIndex, toIndex) {\n return this.ej2Instances.reorderColumnByIndex(fromIndex, toIndex);\n },\n reorderColumnByTargetIndex: function (fieldName, toIndex) {\n return this.ej2Instances.reorderColumnByTargetIndex(fieldName, toIndex);\n },\n reorderColumns: function (fromFName, toFName) {\n return this.ej2Instances.reorderColumns(fromFName, toFName);\n },\n reorderRows: function (fromIndexes, toIndex) {\n return this.ej2Instances.reorderRows(fromIndexes, toIndex);\n },\n saveCell: function () {\n return this.ej2Instances.saveCell();\n },\n search: function (searchString) {\n return this.ej2Instances.search(searchString);\n },\n selectCell: function (cellIndex, isToggle) {\n return this.ej2Instances.selectCell(cellIndex, isToggle);\n },\n selectCells: function (rowCellIndexes) {\n return this.ej2Instances.selectCells(rowCellIndexes);\n },\n selectCellsByRange: function (startIndex, endIndex) {\n return this.ej2Instances.selectCellsByRange(startIndex, endIndex);\n },\n selectRow: function (index, isToggle) {\n return this.ej2Instances.selectRow(index, isToggle);\n },\n selectRows: function (rowIndexes) {\n return this.ej2Instances.selectRows(rowIndexes);\n },\n selectRowsByRange: function (startIndex, endIndex) {\n return this.ej2Instances.selectRowsByRange(startIndex, endIndex);\n },\n serverCsvExport: function (url) {\n return this.ej2Instances.serverCsvExport(url);\n },\n serverExcelExport: function (url) {\n return this.ej2Instances.serverExcelExport(url);\n },\n serverPdfExport: function (url) {\n return this.ej2Instances.serverPdfExport(url);\n },\n setCellValue: function (key, field, value) {\n return this.ej2Instances.setCellValue(key, field, value);\n },\n setGridContent: function (element) {\n return this.ej2Instances.setGridContent(element);\n },\n setGridContentTable: function (element) {\n return this.ej2Instances.setGridContentTable(element);\n },\n setGridHeaderContent: function (element) {\n return this.ej2Instances.setGridHeaderContent(element);\n },\n setGridHeaderTable: function (element) {\n return this.ej2Instances.setGridHeaderTable(element);\n },\n setGridPager: function (element) {\n return this.ej2Instances.setGridPager(element);\n },\n setRowData: function (key, rowData) {\n return this.ej2Instances.setRowData(key, rowData);\n },\n showAdaptiveFilterDialog: function () {\n return this.ej2Instances.showAdaptiveFilterDialog();\n },\n showAdaptiveSortDialog: function () {\n return this.ej2Instances.showAdaptiveSortDialog();\n },\n showColumns: function (keys, showBy) {\n return this.ej2Instances.showColumns(keys, showBy);\n },\n showMaskRow: function (axisDirection, dialogElement) {\n return this.ej2Instances.showMaskRow(axisDirection, dialogElement);\n },\n showSpinner: function () {\n return this.ej2Instances.showSpinner();\n },\n sortColumn: function (columnName, direction, isMultiSort) {\n return this.ej2Instances.sortColumn(columnName, direction, isMultiSort);\n },\n startEdit: function () {\n return this.ej2Instances.startEdit();\n },\n ungroupColumn: function (columnName) {\n return this.ej2Instances.ungroupColumn(columnName);\n },\n updateCell: function (rowIndex, field, value) {\n return this.ej2Instances.updateCell(rowIndex, field, value);\n },\n updateExternalMessage: function (message) {\n return this.ej2Instances.updateExternalMessage(message);\n },\n updateRow: function (index, data) {\n return this.ej2Instances.updateRow(index, data);\n },\n updateRowValue: function (key, rowData) {\n return this.ej2Instances.updateRowValue(key, rowData);\n },\n }\n});\nexport var GridPlugin = {\n name: 'ejs-grid',\n install: function (Vue) {\n Vue.component(GridPlugin.name, GridComponent);\n Vue.component(ColumnPlugin.name, ColumnDirective);\n Vue.component(ColumnsPlugin.name, ColumnsDirective);\n Vue.component(StackedColumnPlugin.name, StackedColumnDirective);\n Vue.component(StackedColumnsPlugin.name, StackedColumnsDirective);\n Vue.component(AggregatePlugin.name, AggregateDirective);\n Vue.component(AggregatesPlugin.name, AggregatesDirective);\n Vue.component(AggregateColumnPlugin.name, AggregateColumnDirective);\n Vue.component(AggregateColumnsPlugin.name, AggregateColumnsDirective);\n }\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { EventHandler, getValue, closest, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, extend, Browser } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport * as event from '../base/constant';\nimport { Row } from '../models/row';\nimport { RowModelGenerator } from './row-model-generator';\nimport { parentsUntil, addRemoveEventListener, findCellIndex } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * FocusStrategy class\n *\n * @hidden\n */\nvar FocusStrategy = /** @class */ (function () {\n function FocusStrategy(parent) {\n this.currentInfo = {};\n this.oneTime = true;\n this.swap = {};\n /** @hidden */\n this.isInfiniteScroll = false;\n this.forget = false;\n this.skipFocus = true;\n this.focusByClick = false;\n this.firstHeaderCellClick = false;\n this.prevIndexes = {};\n this.refMatrix = this.refreshMatrix(true);\n this.actions = ['downArrow', 'upArrow'];\n this.isVirtualScroll = false;\n this.parent = parent;\n this.rowModelGen = new RowModelGenerator(this.parent);\n this.addEventListener();\n }\n FocusStrategy.prototype.focusCheck = function (e) {\n var target = e.target;\n this.focusByClick = true;\n this.firstHeaderCellClick = true;\n this.skipFocus = target.classList.contains('e-grid');\n };\n FocusStrategy.prototype.onFocus = function (e) {\n if (this.parent.isDestroyed || Browser.isDevice || this.parent.enableVirtualization\n || this.parent.element.querySelector('.e-masked-table') || (!this.parent.isInitialLoad && e\n && e.target === this.parent.element && this.parent.element.querySelector('.e-spin-show'))) {\n return;\n }\n this.setActive(!this.parent.enableHeaderFocus && this.parent.frozenRows === 0);\n if (!this.parent.enableHeaderFocus && !this.parent.getCurrentViewRecords().length && ((this.parent.editSettings.mode !== 'Batch')\n || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule && !this.parent.editModule.getBatchChanges()[literals.addedRecords].length))) {\n this.getContent().matrix.\n generate(this.rowModelGen.generateRows({ rows: [new Row({ isDataRow: true })] }), this.getContent().selector, false);\n }\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n if (this.skipFocus && !(e && e.target === this.parent.element)) {\n this.focus(e);\n this.skipFocus = false;\n }\n };\n FocusStrategy.prototype.passiveFocus = function (e) {\n if (this.parent.isDestroyed) {\n return;\n }\n var firstHeaderCell = this.parent.getHeaderContent().querySelector('.e-headercell:not(.e-hide)');\n if (e.target === firstHeaderCell && e.relatedTarget && !parentsUntil(e.relatedTarget, 'e-grid')\n && !this.firstHeaderCellClick) {\n var firstHeaderCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstHeaderCellIndex[0]][firstHeaderCellIndex[1]] === 0) {\n firstHeaderCellIndex = findCellIndex(this.active.matrix.matrix, firstHeaderCellIndex, true);\n }\n this.active.matrix.current = firstHeaderCellIndex;\n this.currentInfo.element = e.target;\n this.currentInfo.elementToFocus = e.target;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n this.firstHeaderCellClick = false;\n if (e.target && e.target.classList.contains('e-detailcell')) {\n this.currentInfo.skipAction = false;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n };\n FocusStrategy.prototype.onBlur = function (e) {\n // The below boolean condition for gantt team focus fix.\n var isGantt = parentsUntil(e.target, 'e-gantt') && e.target.classList.contains('e-rowcell')\n && (!isNullOrUndefined(e.target.nextElementSibling)\n && e.target.nextElementSibling.classList.contains('e-rowcell')) ? true : false;\n if ((this.parent.isEdit || e && (!e.relatedTarget || closest(e.relatedTarget, '.e-grid'))\n && !(this.parent.element.classList.contains('e-childgrid') && !this.parent.element.matches(':focus-within')))\n && !(!isGantt && isNullOrUndefined(e.relatedTarget) && parseInt(e.target.getAttribute('data-colindex'), 10) === 0\n && parseInt(e.target.getAttribute('index'), 10) === 0) && !(!isGantt && isNullOrUndefined(e.relatedTarget)\n && !closest(document.activeElement, '.e-grid') && !isNullOrUndefined(e['sourceCapabilities']))) {\n return;\n }\n this.removeFocus();\n this.skipFocus = true;\n this.currentInfo.skipAction = false;\n this.setLastContentCellTabIndex();\n this.setFirstFocusableTabIndex();\n this.firstHeaderCellClick = false;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.setFirstFocusableTabIndex = function () {\n var gObj = this.parent;\n gObj.element.tabIndex = -1;\n if (gObj.allowGrouping && gObj.groupSettings.showDropArea) {\n var groupModule = gObj.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length > 0) {\n groupModule.element.tabIndex = -1;\n focusableGroupedItems[0].tabIndex = 0;\n }\n else {\n groupModule.element.tabIndex = 0;\n }\n return;\n }\n if (gObj.toolbar || gObj.toolbarTemplate) {\n var toolbarElement = gObj.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n if (focusableToolbarItems.length > 0 && focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input')) {\n toolbarElement.tabIndex = -1;\n focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').tabIndex = 0;\n }\n else {\n toolbarElement.tabIndex = 0;\n }\n return;\n }\n if (gObj.getColumns().length) {\n var firstHeaderCell = gObj.getHeaderContent().querySelector('.e-headercell:not(.e-hide)');\n firstHeaderCell.tabIndex = 0;\n this.setActive(false);\n if (!isNullOrUndefined(this.active) && (isNullOrUndefined(this.active.target) || !this.active.target.classList.contains('e-columnmenu'))) {\n var firstHeaderCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstHeaderCellIndex[0]][firstHeaderCellIndex[1]] === 0) {\n firstHeaderCellIndex = findCellIndex(this.active.matrix.matrix, firstHeaderCellIndex, true);\n }\n this.active.matrix.current = firstHeaderCellIndex;\n }\n return;\n }\n };\n FocusStrategy.prototype.setLastContentCellTabIndex = function () {\n var contentTable = this.parent.getContentTable();\n if (contentTable.rows[contentTable.rows.length - 1]) {\n var lastCell = contentTable.rows[contentTable.rows.length - 1].lastElementChild;\n lastCell.tabIndex = 0;\n }\n };\n FocusStrategy.prototype.onClick = function (e, force) {\n if (parentsUntil(e.target, 'e-filterbarcell') && (parentsUntil(e.target, 'e-multiselect') ||\n e.target.classList.contains('e-input-group-icon'))) {\n return;\n }\n var isContent = !isNullOrUndefined(closest(e.target, '.' + literals.gridContent));\n var isHeader = !isNullOrUndefined(closest(e.target, '.' + literals.gridHeader));\n isContent = isContent && isHeader ? !isContent : isContent;\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader)) ||\n e.target.classList.contains(literals.content) ||\n !isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n return;\n }\n this.setActive(isContent);\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader))) {\n this.clearOutline();\n return;\n }\n var beforeArgs = { cancel: false, byKey: false, byClick: !isNullOrUndefined(e.target), clickArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel || closest(e.target, '.e-inline-edit')) {\n return;\n }\n this.setActive(isContent);\n if (this.getContent()) {\n var returnVal = this.getContent().onClick(e, force);\n if (returnVal === false) {\n return;\n }\n this.focus();\n if (this.currentInfo.element.classList.contains('e-rowcell') && e.type && e.type === 'click') {\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n }\n };\n FocusStrategy.prototype.handleFilterNavigation = function (e, inputSelector, buttonSelector) {\n if (e.target === document.querySelector(inputSelector) && e.key === 'Tab' && e.shiftKey) {\n e.preventDefault();\n document.querySelector(buttonSelector).focus();\n }\n else if (e.target === document.querySelector(buttonSelector) && e.key === 'Tab' && !e.shiftKey &&\n document.activeElement === document.querySelector(buttonSelector)) {\n e.preventDefault();\n document.querySelector(inputSelector).focus();\n }\n };\n FocusStrategy.prototype.onKeyPress = function (e) {\n if (this.parent.allowPaging) {\n var pagerElement = this.parent.pagerModule.pagerObj.element;\n var focusablePagerElements = this.parent.pagerModule.pagerObj.getFocusablePagerElements(pagerElement, []);\n if (this.parent.childGrid && !parentsUntil(e.target, 'e-gridpager') && this.allowToPaging(e) && focusablePagerElements.length) {\n focusablePagerElements[0].tabIndex = 0;\n }\n if (this.parent.pagerModule.pagerObj.checkPagerHasFocus()) {\n if (e.action === 'shiftTab' && focusablePagerElements.length && focusablePagerElements[0] === e.target) {\n this.setActive(true);\n var lastHeaderCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastHeaderCellIndex[0]][lastHeaderCellIndex[1]] === 0) {\n lastHeaderCellIndex = findCellIndex(this.active.matrix.matrix, lastHeaderCellIndex, false);\n }\n this.active.matrix.current = this.parent.editSettings.mode === 'Batch' ?\n this.isValidBatchEditCell(lastHeaderCellIndex) ? lastHeaderCellIndex :\n this.findBatchEditCell(lastHeaderCellIndex, false) : lastHeaderCellIndex;\n e.preventDefault();\n this.focus(e);\n return;\n }\n if (!(e.action === 'tab' && this.parent.element.classList.contains('e-childgrid')\n && ((!this.parent.pageSettings.pageSizes && focusablePagerElements.length\n && focusablePagerElements[focusablePagerElements.length - 1] === e.target)\n || (this.parent.pagerModule.pagerObj.getDropDownPage() === e.target)))) {\n this.parent.pagerModule.pagerObj.changePagerFocus(e);\n return;\n }\n else {\n var parentCell = parentsUntil(this.parent.element, 'e-detailcell');\n removeClass([this.parent.element], ['e-focus']);\n removeClass([parentCell], ['e-focused']);\n parentCell.tabIndex = -1;\n }\n }\n if (this.parent.pagerModule.pagerObj.element.tabIndex === 0 && (e.keyCode === 38 || (e.shiftKey && e.keyCode === 9))) {\n e.preventDefault();\n this.focus(e);\n return;\n }\n else if (this.parent.pagerModule.pagerObj.element.tabIndex === 0 && e.keyCode === 9) {\n e.preventDefault();\n this.parent.pagerModule.pagerObj.setPagerFocus();\n return;\n }\n if (this.parent.pagerModule.pagerObj.checkFirstPagerFocus()) {\n var lastRow = this.getContent().matrix.rows;\n var lastColumn = this.getContent().matrix.columns;\n this.getContent().matrix.current = [lastRow, lastColumn];\n }\n }\n if (this.parent.filterSettings.type === 'Excel') {\n this.handleFilterNavigation(e, '.e-excelfilter .e-menu-item:not(.e-disabled)', '.e-excelfilter .e-footer-content button:nth-child(2)');\n }\n if (this.parent.filterSettings.type === 'CheckBox') {\n this.handleFilterNavigation(e, '.e-searchinput.e-input', '.e-checkboxfilter .e-footer-content button:nth-child(2)');\n }\n if (this.parent.filterSettings.type === 'Menu') {\n this.handleFilterNavigation(e, '.e-flmenu .e-input-group.e-popup-flmenu', '.e-flmenu .e-footer-content button:nth-child(2)');\n }\n if (this.skipOn(e)) {\n return;\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent')) {\n var rows = [].slice.call(this.parent.getContentTable().rows);\n var lastCell = rows[rows.length - 1].lastElementChild;\n if (e.target === lastCell) {\n this.setActive(true);\n this.setLastContentCellActive();\n }\n }\n if (e.action === 'shiftTab' && e.target && (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea'))) {\n if (e.target === this.parent.element) {\n if (this.parent.element.classList.contains('e-childgrid')) {\n this.focusOutFromChildGrid(e);\n }\n return;\n }\n if (parentsUntil(e.target, 'e-groupdroparea')) {\n if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n return;\n }\n if (parentsUntil(e.target, 'e-toolbar')) {\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n e.preventDefault();\n if (focusableGroupedItems.length > 0) {\n focusableGroupedItems[focusableGroupedItems.length - 1].focus();\n }\n else {\n groupModule.element.focus();\n }\n }\n else if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n return;\n }\n }\n var focusFirstHeaderCell = false;\n if (e.action === 'tab' && e.target && (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea'))) {\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea\n && (e.target === this.parent.element || e.target.classList.contains('e-groupdroparea'))) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length > 0) {\n e.preventDefault();\n focusableGroupedItems[0].focus();\n return;\n }\n if (!e.target.classList.contains('e-groupdroparea')) {\n e.preventDefault();\n groupModule.element.focus();\n return;\n }\n }\n if ((this.parent.toolbar || this.parent.toolbarTemplate) && (e.target === this.parent.element\n || parentsUntil(e.target, 'e-groupdroparea')\n || e.target.classList.contains('e-toolbar'))) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n if (focusableToolbarItems.length > 0) {\n e.preventDefault();\n focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').focus();\n return;\n }\n if (!e.target.classList.contains('e-toolbar')) {\n e.preventDefault();\n toolbarElement.focus();\n return;\n }\n }\n if (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea')) {\n focusFirstHeaderCell = true;\n }\n }\n if (focusFirstHeaderCell) {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length === this.parent.columns.length) {\n this.setActive(true);\n }\n else {\n this.setActive(false);\n }\n this.active.matrix.current = [0, -1];\n }\n this.activeKey = e.action;\n var beforeArgs = { cancel: false, byKey: true, byClick: false, keyArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel) {\n return;\n }\n var bValue = this.getContent().matrix.current;\n var prevBatchValue = this.active && this.active.matrix.current ?\n [this.active.matrix.current[0], this.active.matrix.current[1]] : undefined;\n this.currentInfo.outline = true;\n var swapInfo = this.getContent().jump(e.action, bValue);\n this.swap = swapInfo;\n if (swapInfo.swap && !(this.parent.editSettings.mode === 'Batch'\n && (e.action === 'tab' || e.action === 'shiftTab'))) {\n this.setActive(!swapInfo.toHeader);\n this.getContent().matrix.current = this.getContent().getNextCurrent(bValue, swapInfo, this.active, e.action);\n this.prevIndexes = {};\n }\n this.setActiveByKey(e.action, this.getContent());\n var returnVal = this.content.lastIdxCell ? false : this.getContent().onKeyPress(e);\n if (e.target && parentsUntil(e.target, 'e-gridheader')) {\n if (e.action === 'tab' && bValue.toString() === this.active.matrix.current.toString()) {\n var nextHeaderCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, true);\n var lastHeaderCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastHeaderCellIndex[0]][lastHeaderCellIndex[1]] === 0) {\n lastHeaderCellIndex = findCellIndex(this.active.matrix.matrix, lastHeaderCellIndex, false);\n }\n if (this.active.matrix.current.toString() === lastHeaderCellIndex.toString() && this.content.matrix.matrix.length) {\n returnVal = true;\n this.setActive(true);\n var firstContentCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(this.active.matrix.matrix, [0, 0], true);\n }\n this.active.matrix.current = this.parent.editSettings.mode === 'Batch' ?\n this.isValidBatchEditCell(firstContentCellIndex) ? firstContentCellIndex :\n this.findBatchEditCell(firstContentCellIndex, true) : firstContentCellIndex;\n }\n else if (this.active.matrix.current.toString() !== nextHeaderCellIndex.toString()) {\n this.active.matrix.current = nextHeaderCellIndex;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n var previousCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, false);\n if (previousCellIndex.toString() === this.active.matrix.current.toString()) {\n this.focusOutFromHeader(e);\n return;\n }\n if (this.active.matrix.current.toString() !== previousCellIndex.toString() && !returnVal) {\n returnVal = true;\n this.active.matrix.current = previousCellIndex;\n }\n }\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent')) {\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.active.matrix.current = this.findBatchEditCell(prevBatchValue, e.action === 'tab' ? true : false);\n if (e.action === 'tab' && prevBatchValue.toString() === this.active.matrix.current.toString()) {\n this.parent.editModule.editModule.addBatchRow = true;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length === this.parent.columns.length) {\n this.focusOutFromHeader(e);\n return;\n }\n var firstContentCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(this.active.matrix.matrix, [0, 0], true);\n }\n if (!returnVal && (firstContentCellIndex.toString() === this.active.matrix.current.toString()\n || (this.parent.editSettings.mode === 'Batch'\n && prevBatchValue.toString() === this.active.matrix.current.toString()))) {\n returnVal = true;\n this.setActive(false);\n this.setLastContentCellActive();\n }\n }\n }\n if (returnVal === false) {\n this.clearIndicator();\n if (e.action === 'shiftTab' && bValue.toString() === [0, 0].toString()) {\n this.parent.element.tabIndex = -1;\n }\n if (this.parent.allowPaging && !this.parent.pagerModule.pagerObj.checkPagerHasFocus() && this.allowToPaging(e)\n && bValue.toString() !== [0, 0].toString()) {\n e.preventDefault();\n if (e.keyCode === 40) {\n this.parent.pagerModule.pagerObj.setPagerContainerFocus();\n return;\n }\n else if (e.keyCode === 9) {\n this.parent.pagerModule.pagerObj.setPagerFocus();\n return;\n }\n }\n if (this.parent.element.classList.contains('e-childgrid')) {\n this.focusOutFromChildGrid(e);\n }\n return;\n }\n e.preventDefault();\n this.focus(e);\n };\n FocusStrategy.prototype.isValidBatchEditCell = function (cellIndex) {\n var cell = this.active.getTable().rows[cellIndex[0]].cells[cellIndex[1]];\n var tr = closest(cell, 'tr');\n var cellColIndex = parseInt(cell.getAttribute('data-colindex'), 10);\n var cellCol = this.parent.getColumns()[parseInt(cellColIndex.toString(), 10)];\n if (this.active.matrix.matrix[cellIndex[0]][cellIndex[1]] === 1\n && (!tr.classList.contains('e-row') || (tr.classList.contains('e-insertedrow') || !cellCol.isPrimaryKey) && cellCol.allowEditing)) {\n return true;\n }\n return false;\n };\n FocusStrategy.prototype.findBatchEditCell = function (currentCellIndex, next, limitRow) {\n var cellIndex = currentCellIndex;\n var tempCellIndex = currentCellIndex;\n var cellIndexObtain = false;\n while (!cellIndexObtain) {\n var prevTempCellIndex = tempCellIndex;\n tempCellIndex = findCellIndex(this.active.matrix.matrix, tempCellIndex, next);\n if ((prevTempCellIndex.toString() === tempCellIndex.toString())\n || (limitRow && prevTempCellIndex[0] !== tempCellIndex[0])) {\n cellIndexObtain = true;\n continue;\n }\n if (this.isValidBatchEditCell(tempCellIndex)) {\n cellIndex = tempCellIndex;\n cellIndexObtain = true;\n }\n }\n return cellIndex;\n };\n FocusStrategy.prototype.setLastContentCellActive = function () {\n var lastContentCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastContentCellIndex[0]][lastContentCellIndex[1]] === 0) {\n lastContentCellIndex = findCellIndex(this.active.matrix.matrix, lastContentCellIndex, false);\n }\n this.active.matrix.current = lastContentCellIndex;\n };\n FocusStrategy.prototype.focusOutFromChildGrid = function (e) {\n var parentTable = parentsUntil(this.parent.element, 'e-table');\n var parentGrid = parentsUntil(parentTable, 'e-grid').ej2_instances[0];\n var parentCell = parentsUntil(this.parent.element, 'e-detailcell');\n var uid = parentsUntil(this.parent.element, 'e-detailrow').getAttribute('data-uid');\n var parentRows = [].slice.call(parentGrid.getContentTable().rows);\n var parentRowIndex = parentRows.map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n if (e.action === 'tab' && parentRowIndex >= parentRows.length - 1) {\n return;\n }\n removeClass([this.parent.element], ['e-focus']);\n removeClass([parentCell], ['e-focused']);\n parentCell.tabIndex = -1;\n e.preventDefault();\n var nextFocusCell;\n parentGrid.focusModule.removeFocus();\n if (e.action === 'shiftTab') {\n var previousRow = parentRows[parentRowIndex - 1];\n var rowCells = previousRow.cells;\n for (var i = rowCells.length - 1; i >= 0; i--) {\n nextFocusCell = rowCells[parseInt(i.toString(), 10)];\n if (!nextFocusCell.classList.contains('e-hide')) {\n parentGrid.focusModule.active.matrix.current = [parentRowIndex - 1, i];\n break;\n }\n }\n }\n else {\n nextFocusCell = parentRows[parentRowIndex + 1].cells[0];\n parentGrid.focusModule.active.matrix.current = [parentRowIndex + 1, 0];\n }\n parentGrid.focusModule.currentInfo.element = nextFocusCell;\n parentGrid.focusModule.currentInfo.elementToFocus = nextFocusCell;\n addClass([nextFocusCell], ['e-focused', 'e-focus']);\n nextFocusCell.tabIndex = 0;\n nextFocusCell.focus();\n };\n FocusStrategy.prototype.focusOutFromHeader = function (e) {\n this.removeFocus();\n if (this.parent.toolbar || this.parent.toolbarTemplate) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n e.preventDefault();\n if (focusableToolbarItems.length > 0) {\n focusableToolbarItems[focusableToolbarItems.length - 1].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').focus();\n }\n else {\n toolbarElement.focus();\n }\n return;\n }\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n e.preventDefault();\n if (focusableGroupedItems.length > 0) {\n focusableGroupedItems[focusableGroupedItems.length - 1].focus();\n }\n else {\n groupModule.element.focus();\n }\n return;\n }\n if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n };\n FocusStrategy.prototype.allowToPaging = function (e) {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.allowAdding && e.keyCode !== 40) {\n return false;\n }\n return true;\n };\n FocusStrategy.prototype.skipOn = function (e) {\n var target = e.target;\n if (!target) {\n return false;\n }\n if (this.currentInfo.skipAction) {\n this.clearIndicator();\n return true;\n }\n if (['pageUp', 'pageDown', 'altDownArrow'].indexOf(e.action) > -1) {\n this.clearIndicator();\n return true;\n }\n if (this.parent.allowGrouping) {\n var focusableGroupedItems = this.parent.groupModule.getFocusableGroupedItems();\n if (parentsUntil(e.target, 'e-groupheadercell')\n && !((e.target === focusableGroupedItems[0] && e.action === 'shiftTab')\n || (e.target === focusableGroupedItems[focusableGroupedItems.length - 1] && e.action === 'tab'))) {\n return true;\n }\n }\n if (this.parent.toolbar || this.parent.toolbarTemplate) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = toolbarElement\n .querySelectorAll('.e-toolbar-item:not(.e-overlay):not(.e-hidden)');\n if (parentsUntil(e.target, 'e-toolbar-item')\n && !(focusableToolbarItems.length > 0 && ((parentsUntil(e.target, 'e-toolbar-item') === focusableToolbarItems[0] && e.action === 'shiftTab')\n || (parentsUntil(e.target, 'e-toolbar-item') === focusableToolbarItems[focusableToolbarItems.length - 1] && e.action === 'tab')))) {\n return true;\n }\n }\n var th = closest(target, 'th') && !closest(target, 'th').tabIndex;\n if (e.target.classList.contains('e-filterbaroperator') && (e.keyCode === 13 || e.keyCode === 27)) {\n var inputTarget = closest(e.target, '.e-filterbarcell');\n inputTarget.querySelector('input').focus();\n }\n if (th && closest(document.activeElement, '.e-filterbarcell') !== null) {\n this.removeFocus();\n }\n var filterCell = closest(document.activeElement, '.e-filterbarcell') !== null;\n if (this.parent.enableHeaderFocus && filterCell) {\n var matrix = this.active.matrix;\n var current = matrix.current;\n filterCell = matrix.matrix[current[0]].lastIndexOf(1) !== current[1];\n }\n return (e.action === 'delete'\n || (this.parent.editSettings.mode !== 'Batch' && (this.parent.isEdit || ['insert', 'f2'].indexOf(e.action) > -1))\n || ((filterCell && this.parent.enableHeaderFocus) || (filterCell && e.action !== 'tab' && e.action !== 'shiftTab') ||\n closest(document.activeElement, '#' + this.parent.element.id + '_searchbar') !== null\n && ['enter', 'leftArrow', 'rightArrow',\n 'shiftLeft', 'shiftRight', 'ctrlPlusA'].indexOf(e.action) > -1)\n || (closest(target, '.' + literals.gridContent) === null && closest(target, '.' + literals.gridHeader) === null\n && !(e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea')))\n || (e.action === 'space' && (!target.classList.contains(literals.gridChkBox) && closest(target, '.' + literals.gridChkBox) === null\n && closest(target, '.e-headerchkcelldiv') === null))) || closest(target, '.e-filter-popup') !== null;\n };\n FocusStrategy.prototype.focusVirtualElement = function (e) {\n var _this = this;\n if (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) {\n var data = { virtualData: {}, isAdd: false, isCancel: false };\n this.parent.notify(event.getVirtualData, data);\n var isKeyFocus = this.actions.some(function (value) { return value === _this.activeKey; });\n var isSelected = this.parent.contentModule ?\n this.parent.contentModule.selectedRowIndex > -1 : false;\n if (data.isAdd || Object.keys(data.virtualData).length || isKeyFocus || data.isCancel || isSelected) {\n this.parent.notify(event.resetVirtualFocus, { isCancel: false });\n data.isCancel = false;\n this.parent.contentModule.selectedRowIndex = -1;\n if (isKeyFocus) {\n this.activeKey = this.empty;\n this.parent.notify('virtaul-key-handler', e);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n if (this.isVirtualScroll || this.isInfiniteScroll) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n this.currentInfo.elementToFocus.focus();\n }\n }\n }\n this.isVirtualScroll = this.isInfiniteScroll = false;\n };\n FocusStrategy.prototype.getFocusedElement = function () {\n return this.currentInfo.elementToFocus;\n };\n FocusStrategy.prototype.getContent = function () {\n return this.active || this.content;\n };\n FocusStrategy.prototype.setActive = function (content) {\n this.active = content ? this.content : this.header;\n };\n FocusStrategy.prototype.setFocusedElement = function (element, e) {\n var _this = this;\n this.currentInfo.elementToFocus = element;\n setTimeout(function () {\n if (!isNullOrUndefined(_this.currentInfo.elementToFocus)) {\n if (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) {\n _this.focusVirtualElement(e);\n }\n else if (isNullOrUndefined(_this.parent.element.querySelector('.e-flmenu')) ||\n parentsUntil(document.activeElement, 'e-flmenu-valuediv') !== _this.parent.element.querySelector('.e-flmenu-valuediv')) {\n _this.currentInfo.elementToFocus.focus();\n }\n }\n }, 0);\n };\n FocusStrategy.prototype.focus = function (e) {\n this.parent.notify(event.virtaulCellFocus, e);\n this.removeFocus();\n this.addFocus(this.getContent().getFocusInfo(), e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FocusStrategy.prototype.removeFocus = function (e) {\n if (!this.currentInfo.element) {\n return;\n }\n if (this.parent.isReact && !this.parent.isEdit && this.currentInfo.element.classList.contains('e-rowcell')\n && !this.currentInfo.element.parentElement && !(this.parent.allowGrouping && this.parent.groupSettings.columns.length) &&\n this.parent.getRowByIndex(this.prevIndexes.rowIndex)) {\n var cellElem = this.parent.getCellFromIndex(this.prevIndexes.rowIndex, this.prevIndexes.cellIndex);\n this.currentInfo.element = cellElem ? cellElem : this.currentInfo.element;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.currentInfo.element.tabIndex = -1;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.addOutline = function () {\n var info = this.getContent().getFocusInfo();\n if (info.element) {\n addClass([info.element], ['e-focused']);\n addClass([info.elementToFocus], ['e-focus']);\n }\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusHeader = function () {\n this.setActive(false);\n this.resetFocus();\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusContent = function () {\n this.setActive(true);\n this.resetFocus();\n };\n FocusStrategy.prototype.resetFocus = function () {\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n this.focus();\n };\n FocusStrategy.prototype.addFocus = function (info, e) {\n this.currentInfo = info;\n this.currentInfo.outline = info.outline && (!isNullOrUndefined(e) || this.isVirtualScroll);\n if (this.isInfiniteScroll) {\n this.currentInfo.outline = true;\n }\n if (!info.element) {\n return;\n }\n var isFocused = info.elementToFocus.classList.contains('e-focus');\n if (isFocused) {\n return;\n }\n if (this.currentInfo.outline) {\n addClass([info.element], ['e-focused']);\n }\n addClass([info.elementToFocus], ['e-focus']);\n info.element.tabIndex = 0;\n if (!isFocused) {\n this.setFocusedElement(info.elementToFocus, e);\n }\n this.parent.notify(event.cellFocused, {\n element: info.elementToFocus,\n parent: info.element,\n indexes: this.getContent().matrix.current,\n byKey: !isNullOrUndefined(e),\n byClick: isNullOrUndefined(e),\n keyArgs: e,\n isJump: this.swap.swap,\n container: this.getContent().getInfo(e),\n outline: !isNullOrUndefined(e),\n swapInfo: this.swap\n });\n var _a = this.getContent().matrix.current, rowIndex = _a[0], cellIndex = _a[1];\n this.prevIndexes = { rowIndex: rowIndex, cellIndex: cellIndex };\n this.focusedColumnUid = this.parent.getColumnByIndex(cellIndex).uid;\n this.focusByClick = false;\n };\n FocusStrategy.prototype.refreshMatrix = function (content) {\n var _this = this;\n return function (e) {\n if (content && !_this.content) {\n _this.content = new ContentFocus(_this.parent);\n }\n if (!content && !_this.header) {\n _this.header = new HeaderFocus(_this.parent);\n }\n var cFocus = content ? _this.content : _this.header;\n var frozenRow = _this.parent.frozenRows;\n var batchLen = 0;\n if (frozenRow && _this.parent.editSettings.mode === 'Batch') {\n batchLen = _this.parent.getHeaderContent().querySelectorAll('.e-insertedrow').length +\n _this.parent.getHeaderContent().querySelectorAll('.e-hiddenrow').length;\n }\n if (_this.parent.groupSettings.columns.length && frozenRow && content) {\n frozenRow = 0;\n for (var i = 0; i < e.rows.length; i++) {\n frozenRow++;\n if (e.rows[parseInt(i.toString(), 10)].index + 1 === _this.parent.frozenRows) {\n break;\n }\n }\n }\n var rows = content ? e.rows.slice(frozenRow + batchLen) : e.rows;\n var updateRow = content ? e.rows.slice(0, frozenRow + batchLen) : e.rows;\n if (_this.parent.isCollapseStateEnabled() && content) {\n rows = rows.filter(function (x) { return x.visible !== false; });\n }\n var isRowTemplate = !isNullOrUndefined(_this.parent.rowTemplate);\n if (frozenRow && ((_this.parent.editSettings.mode === 'Batch' && content && (e.name === 'batchDelete' || e.name === 'batchAdd' ||\n e.name === 'batchCancel' || (e.args && (e.args.requestType === 'batchsave')))) ||\n (e.args && (e.args.requestType === 'delete' || e.args.requestType === 'save')))) {\n var matrixcs = _this.header.matrix.matrix;\n var hdrLen = _this.parent.headerModule.rows.length;\n matrixcs.splice(hdrLen, matrixcs.length - hdrLen);\n }\n var matrix = cFocus.matrix.generate(updateRow, cFocus.selector, isRowTemplate);\n cFocus.matrix.generate(rows, cFocus.selector, isRowTemplate);\n if (!(_this.parent.isFrozenGrid() && (e.args && (e.args.requestType === 'sorting'\n || e.args.requestType === 'batchsave' || e.args.requestType === 'paging'))) ||\n (frozenRow && _this.parent.editSettings.mode === 'Batch' && content && (e.name === 'batchDelete' || e.name === 'batchAdd' ||\n e.name === 'batchCancel' || e.args.requestType === 'batchsave'\n || e.name === 'batchAdd' || e.name === 'batchCancel'))) {\n cFocus.generateRows(updateRow, {\n matrix: matrix, handlerInstance: _this.header\n });\n }\n if (!Browser.isDevice && e && e.args) {\n if (!_this.focusByClick && e.args.requestType === 'paging' && !_this.parent.pagerModule.pagerObj.checkPagerHasFocus()) {\n _this.skipFocus = false;\n _this.parent.element.focus();\n }\n if (e.args.requestType === 'grouping') {\n _this.skipFocus = true;\n }\n }\n if (e && e.args && e.args.requestType === 'virtualscroll') {\n if (_this.currentInfo.uid) {\n var index_1;\n var bool = e.rows.some(function (row, i) {\n index_1 = i;\n return row.uid === _this.currentInfo.uid;\n });\n if (bool) {\n _this.content.matrix.current[0] = index_1;\n _this.content.matrix.current[1] = _this.parent.getColumnIndexByUid(_this.focusedColumnUid) || 0;\n var focusElement = _this.getContent().getFocusInfo().elementToFocus;\n if (focusElement) {\n var cellPosition = focusElement.getBoundingClientRect();\n var gridPosition = _this.parent.element.getBoundingClientRect();\n if (cellPosition.top >= 0 && cellPosition.left >= 0 &&\n cellPosition.right <= Math.min(gridPosition.right, window.innerWidth ||\n document.documentElement.clientWidth) &&\n cellPosition.bottom <= Math.min(gridPosition.bottom, window.innerHeight ||\n document.documentElement.clientHeight)) {\n _this.isVirtualScroll = true;\n _this.focus();\n }\n }\n }\n }\n else if (e.args.focusElement && e.args.focusElement.classList.contains('e-filtertext')) {\n var focusElement = _this.parent.element.querySelector('#' + e.args.focusElement.id);\n if (focusElement) {\n focusElement.focus();\n }\n }\n }\n if (e && e.args && e.args.requestType === 'infiniteScroll') {\n _this.isInfiniteScroll = true;\n }\n };\n };\n FocusStrategy.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.add(this.parent.element, 'mousedown', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'touchstart', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'focus', this.onFocus, this);\n this.parent.element.addEventListener('focus', this.passiveHandler = function (e) { return _this.passiveFocus(e); }, true);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n this.evtHandlers = [{ event: event.keyPressed, handler: this.onKeyPress },\n { event: event.click, handler: this.onClick },\n { event: event.contentReady, handler: this.refMatrix },\n { event: event.partialRefresh, handler: this.refMatrix },\n { event: event.refreshExpandandCollapse, handler: this.refMatrix },\n { event: event.headerRefreshed, handler: this.refreshMatrix() },\n { event: event.closeEdit, handler: this.restoreFocus },\n { event: event.restoreFocus, handler: this.restoreFocus },\n { event: 'start-edit', handler: this.clearIndicator },\n { event: 'start-add', handler: this.clearIndicator },\n { event: 'sorting-complete', handler: this.restoreFocus },\n { event: 'filtering-complete', handler: this.filterfocus },\n { event: 'grouping-complete', handler: this.restoreFocusWithAction },\n { event: 'ungrouping-complete', handler: this.restoreFocusWithAction },\n { event: event.batchAdd, handler: this.refMatrix },\n { event: event.batchCancel, handler: this.refMatrix },\n { event: event.batchDelete, handler: this.refMatrix },\n { event: event.detailDataBound, handler: this.refMatrix },\n { event: event.onEmpty, handler: this.refMatrix },\n { event: event.cellFocused, handler: this.internalCellFocus }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n FocusStrategy.prototype.filterfocus = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n this.restoreFocus();\n }\n };\n FocusStrategy.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(this.parent.element, 'mousedown', this.focusCheck);\n EventHandler.remove(this.parent.element, 'touchstart', this.focusCheck);\n EventHandler.remove(this.parent.element, 'focus', this.onFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n this.parent.element.removeEventListener('focus', this.passiveHandler, true);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n FocusStrategy.prototype.destroy = function () {\n this.removeEventListener();\n };\n FocusStrategy.prototype.restoreFocus = function () {\n var groupModule = this.parent.groupModule;\n if (this.parent.allowGrouping && groupModule && (groupModule.groupSortFocus || groupModule.groupTextFocus)) {\n groupModule.groupSortFocus = false;\n groupModule.groupTextFocus = false;\n return;\n }\n this.firstHeaderCellClick = true;\n this.addFocus(this.getContent().getFocusInfo());\n };\n FocusStrategy.prototype.restoreFocusWithAction = function (e) {\n if (!this.parent.enableInfiniteScrolling) {\n var matrix = this.getContent().matrix;\n var current = matrix.current;\n switch (e.requestType) {\n case 'grouping':\n case 'ungrouping':\n current[1] = current.length &&\n !this.parent.groupSettings.showGroupedColumn && !isNullOrUndefined(matrix.matrix[current[0]]) ?\n matrix.matrix[current[0]].indexOf(1) : e.requestType === 'grouping' ? current[1] + 1 : current[1] - 1;\n break;\n }\n this.getContent().matrix.current = current;\n var groupModule = this.parent.groupModule;\n if (this.parent.allowGrouping && groupModule && groupModule.groupCancelFocus) {\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length) {\n if (focusableGroupedItems[0].parentElement.getAttribute('ej-mappingname') === e.columnName) {\n focusableGroupedItems[3].focus();\n }\n else {\n focusableGroupedItems[0].focus();\n }\n }\n else {\n groupModule.element.focus();\n }\n groupModule.groupCancelFocus = false;\n return;\n }\n this.addFocus(this.getContent().getFocusInfo());\n }\n };\n FocusStrategy.prototype.clearOutline = function () {\n this.getContent().matrix.current = this.getContent().matrix.get(0, -1, [0, 1], 'downArrow', this.getContent().validator());\n this.clearIndicator();\n };\n FocusStrategy.prototype.clearIndicator = function () {\n if (!this.currentInfo.element || !this.currentInfo.elementToFocus) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focus', 'e-focused']);\n };\n FocusStrategy.prototype.getPrevIndexes = function () {\n var forget = this.forget;\n this.forget = false;\n return forget || !Object.keys(this.prevIndexes).length ? { rowIndex: null, cellIndex: null } : this.prevIndexes;\n };\n FocusStrategy.prototype.forgetPrevious = function () {\n this.forget = true;\n };\n FocusStrategy.prototype.setActiveByKey = function (action, active) {\n if (this.parent.frozenRows === 0) {\n return;\n }\n // eslint-disable-next-line prefer-const\n var info;\n var actions = {\n 'home': function () { return ({ toHeader: !info.isContent, toFrozen: true }); },\n 'end': function () { return ({ toHeader: !info.isContent, toFrozen: false }); },\n 'ctrlHome': function () { return ({ toHeader: true, toFrozen: false }); },\n 'ctrlEnd': function () { return ({ toHeader: false, toFrozen: false }); }\n };\n if (!(action in actions)) {\n return;\n }\n info = active.getInfo();\n var swap = actions[\"\" + action]();\n this.setActive(!swap.toHeader);\n this.getContent().matrix.current = active.matrix.current;\n };\n FocusStrategy.prototype.internalCellFocus = function (e) {\n if (!(e.byKey && e.container.isContent && e.keyArgs.action === 'enter'\n && (e.parent.classList.contains('e-detailcell') ||\n e.parent.classList.contains('e-unboundcell')))) {\n return;\n }\n this.clearIndicator();\n var focusEle = this.getContent().getFocusable(this.getFocusedElement());\n this.setFocusedElement(focusEle);\n this.currentInfo.skipAction = true;\n };\n return FocusStrategy;\n}());\nexport { FocusStrategy };\n/**\n * Create matrix from row collection which act as mental model for cell navigation\n *\n * @hidden\n */\nvar Matrix = /** @class */ (function () {\n function Matrix() {\n this.matrix = [];\n this.current = [];\n }\n Matrix.prototype.set = function (rowIndex, columnIndex, allow) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.columns));\n this.matrix[parseInt(rowIndex.toString(), 10)] = this.matrix[parseInt(rowIndex.toString(), 10)] || [];\n this.matrix[parseInt(rowIndex.toString(), 10)][parseInt(columnIndex.toString(), 10)] = allow ? 1 : 0;\n };\n Matrix.prototype.get = function (rowIndex, columnIndex, navigator, action, validator) {\n var tmp = columnIndex;\n if (rowIndex + navigator[0] < 0) {\n return [rowIndex, columnIndex];\n }\n rowIndex = Math.max(0, Math.min(rowIndex + navigator[0], this.rows));\n var emptyTable = true;\n if (isNullOrUndefined(this.matrix[parseInt(rowIndex.toString(), 10)])) {\n return null;\n }\n columnIndex = Math.max(0, Math.min(columnIndex + navigator[1], this.matrix[parseInt(rowIndex.toString(), 10)].length - 1));\n if (tmp + navigator[1] > this.matrix[parseInt(rowIndex.toString(), 10)].length - 1\n && validator(rowIndex, columnIndex, action)) {\n return [rowIndex, tmp];\n }\n var first = this.first(this.matrix[parseInt(rowIndex.toString(), 10)], columnIndex, navigator, true, action);\n columnIndex = first === null ? tmp : first;\n var val = getValue(rowIndex + \".\" + columnIndex, this.matrix);\n if (rowIndex === this.rows && (action === 'downArrow' || action === 'enter')) {\n navigator[0] = -1;\n }\n if (first === null) {\n for (var i = 0; i < this.rows; i++) {\n if (this.matrix[parseInt(i.toString(), 10)].some(function (v) { return v === 1; })) {\n emptyTable = false;\n break;\n }\n }\n if (emptyTable) {\n rowIndex = this.current.length ? this.current[0] : 0;\n return [rowIndex, columnIndex];\n }\n }\n return this.inValid(val) || !validator(rowIndex, columnIndex, action) ?\n this.get(rowIndex, tmp, navigator, action, validator) : [rowIndex, columnIndex];\n };\n Matrix.prototype.first = function (vector, index, navigator, moveTo, action) {\n if (((index < 0 || index === vector.length) && this.inValid(vector[parseInt(index.toString(), 10)])\n && (action !== 'upArrow' && action !== 'downArrow')) || !vector.some(function (v) { return v === 1; })) {\n return null;\n }\n return !this.inValid(vector[parseInt(index.toString(), 10)]) ? index :\n this.first(vector, (['upArrow', 'downArrow', 'shiftUp', 'shiftDown'].indexOf(action) !== -1) ? moveTo ? 0 : ++index : index + navigator[1], navigator, false, action);\n };\n Matrix.prototype.select = function (rowIndex, columnIndex) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.matrix[parseInt(rowIndex.toString(), 10)].length - 1));\n this.current = [rowIndex, columnIndex];\n };\n Matrix.prototype.generate = function (rows, selector, isRowTemplate) {\n this.rows = rows.length - 1;\n this.matrix = [];\n for (var i = 0; i < rows.length; i++) {\n var cells = rows[parseInt(i.toString(), 10)].cells.filter(function (c) { return c.isSpanned !== true; });\n this.columns = Math.max(cells.length - 1, this.columns | 0);\n var incrementNumber = 0;\n for (var j = 0; j < cells.length; j++) {\n if (cells[parseInt(j.toString(), 10)].column && cells[parseInt(j.toString(), 10)].column.columns) {\n incrementNumber = this.columnsCount(cells[parseInt(j.toString(), 10)].column.columns, incrementNumber);\n }\n else {\n incrementNumber++;\n }\n this.set(i, j, rows[parseInt(i.toString(), 10)].visible === false ?\n false : selector(rows[parseInt(i.toString(), 10)], cells[parseInt(j.toString(), 10)], isRowTemplate));\n }\n this.columns = Math.max(incrementNumber - 1, this.columns | 0);\n }\n return this.matrix;\n };\n Matrix.prototype.columnsCount = function (rowColumns, currentColumnCount) {\n var columns = rowColumns;\n var incrementNumber = currentColumnCount;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n incrementNumber = this.columnsCount(columns[parseInt(i.toString(), 10)].columns, incrementNumber);\n }\n else {\n incrementNumber++;\n }\n }\n return incrementNumber;\n };\n Matrix.prototype.inValid = function (value) {\n return value === 0 || value === undefined;\n };\n return Matrix;\n}());\nexport { Matrix };\n/**\n * @hidden\n */\nvar ContentFocus = /** @class */ (function () {\n function ContentFocus(parent) {\n var _this = this;\n this.matrix = new Matrix();\n this.lastIdxCell = false;\n this.parent = parent;\n this.keyActions = {\n 'rightArrow': [0, 1],\n 'tab': [0, 1],\n 'leftArrow': [0, -1],\n 'shiftTab': [0, -1],\n 'upArrow': [-1, 0],\n 'downArrow': [1, 0],\n 'shiftUp': [-1, 0],\n 'shiftDown': [1, 0],\n 'shiftRight': [0, 1],\n 'shiftLeft': [0, -1],\n 'enter': [1, 0],\n 'shiftEnter': [-1, 0]\n };\n this.indexesByKey = function (action) {\n var opt = {\n 'home': [_this.matrix.current[0], -1, 0, 1],\n 'end': [_this.matrix.current[0], _this.matrix.columns + 1, 0, -1],\n 'ctrlHome': [0, -1, 0, 1],\n 'ctrlEnd': [_this.matrix.rows, _this.matrix.columns + 1, 0, -1]\n };\n return opt[\"\" + action] || null;\n };\n }\n ContentFocus.prototype.getTable = function () {\n return (this.parent.getContentTable());\n };\n ContentFocus.prototype.onKeyPress = function (e) {\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (isMacLike && e.metaKey) {\n if (e.action === 'home') {\n e.action = 'ctrlHome';\n }\n else if (e.action === 'end') {\n e.action = 'ctrlEnd';\n }\n else if (['downArrow', 'upArrow', 'leftArrow', 'rightArrow'].indexOf(e.action) !== -1) {\n return;\n }\n }\n var navigators = this.keyActions[e.action];\n var current = this.getCurrentFromAction(e.action, navigators, e.action in this.keyActions, e);\n if (!current) {\n return;\n }\n if (((['tab', 'shiftTab'].indexOf(e.action) > -1 && this.matrix.current || []).toString() === current.toString())\n || (this.parent.allowPaging && !this.parent.pagerModule.pagerObj.checkPagerHasFocus()\n && this.matrix.current[0] === this.matrix.rows && ((this.parent.editSettings.mode === 'Batch'\n && this.parent.editSettings.allowAdding && e.keyCode === 40) || (e.keyCode === 40)))) {\n if (current.toString() === [this.matrix.rows, this.matrix.columns].toString() ||\n current.toString() === [0, 0].toString() || (this.matrix.current[0] === this.matrix.rows &&\n this.matrix.current.toString() === current.toString()) || (this.parent.allowGrouping &&\n this.parent.infiniteScrollSettings.enableCache && current.toString() === [0, 1].toString())) {\n return false;\n }\n else {\n current = this.editNextRow(current[0], current[1], e.action);\n }\n }\n this.matrix.select(current[0], current[1]);\n };\n ContentFocus.prototype.editNextRow = function (rowIndex, cellIndex, action) {\n var gObj = this.parent;\n var editNextRow = gObj.editSettings.allowNextRowEdit && (gObj.isEdit || gObj.isLastCellPrimaryKey);\n var visibleIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[0].field);\n var cell = this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n if (action === 'tab' && editNextRow) {\n rowIndex++;\n var index = (this.getTable().rows[parseInt(rowIndex.toString(), 10)].getElementsByClassName('e-indentcell').length +\n this.getTable().rows[parseInt(rowIndex.toString(), 10)].getElementsByClassName('e-detailrowcollapse').length);\n cellIndex = visibleIndex + index;\n }\n if (action === 'shiftTab' && editNextRow) {\n rowIndex--;\n cellIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[gObj.getVisibleColumns().length - 1].field);\n }\n return !cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-headercell') &&\n !cell.classList.contains('e-groupcaption') && !cell.classList.contains('e-filterbarcell') ?\n this.editNextRow(rowIndex, cellIndex, action) : [rowIndex, cellIndex];\n };\n ContentFocus.prototype.getCurrentFromAction = function (action, navigator, isPresent, e) {\n if (navigator === void 0) { navigator = [0, 0]; }\n if (!isPresent && !this.indexesByKey(action) || (this.matrix.current.length === 0)) {\n return null;\n }\n if (!this.shouldFocusChange(e)) {\n return this.matrix.current;\n }\n // eslint-disable-next-line\n var _a = this.indexesByKey(action) || this.matrix.current.concat(navigator), rowIndex = _a[0], cellIndex = _a[1], rN = _a[2], cN = _a[3];\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length && this.parent.aggregates.length && action === 'enter') {\n for (var i = rowIndex; i < this.matrix.matrix.length; i++) {\n var row = this.getTable().rows[i + 1];\n if (row && row.cells[parseInt(cellIndex.toString(), 10)] && row.cells[parseInt(cellIndex.toString(), 10)].classList.contains('e-rowcell')) {\n return [i + 1, cellIndex];\n }\n if (i === this.matrix.matrix.length - 1) {\n return [rowIndex, cellIndex];\n }\n }\n }\n if (action === 'ctrlEnd' || action === 'end') {\n var lastContentCellIndex = [this.matrix.matrix.length - 1,\n this.matrix.matrix[this.matrix.matrix.length - 1].length - 1];\n if (action === 'end') {\n lastContentCellIndex = [rowIndex, this.matrix.matrix[parseInt(rowIndex.toString(), 10)].length - 1];\n }\n if (this.matrix.matrix[lastContentCellIndex[0]][lastContentCellIndex[1]] === 0) {\n lastContentCellIndex = findCellIndex(this.matrix.matrix, lastContentCellIndex, false);\n }\n rowIndex = lastContentCellIndex[0];\n cellIndex = lastContentCellIndex[1] + 1;\n }\n var current = this.matrix.get(rowIndex, cellIndex, [rN, cN], action, this.validator());\n return current;\n };\n ContentFocus.prototype.onClick = function (e, force) {\n var target = e.target;\n this.target = target;\n target = (target.classList.contains(literals.rowCell) ? target : closest(target, 'td'));\n target = target ? target : closest(e.target, 'td.e-detailrowcollapse')\n || closest(e.target, 'td.e-detailrowexpand');\n target = closest(e.target, 'td.e-detailcell') ?\n isNullOrUndefined(closest(closest(e.target, '.e-grid'), 'td.e-detailcell')) ? null : target : target;\n target = target && closest(target, 'table').classList.contains(literals.table) ? target : null;\n if (!target) {\n return false;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var _b = this.matrix.current, oRowIndex = _b[0], oCellIndex = _b[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val) || (!force && oRowIndex === rowIndex && oCellIndex === cellIndex) ||\n (!parentsUntil(e.target, literals.rowCell) && !parentsUntil(e.target, 'e-groupcaption')\n && !parentsUntil(e.target, 'e-recordpluscollapse') && !parentsUntil(e.target, 'e-recordplusexpand')\n && !parentsUntil(e.target, 'e-detailrowcollapse') && !parentsUntil(e.target, 'e-detailrowexpand')\n && !parentsUntil(e.target, 'e-templatecell'))) {\n return false;\n }\n this.matrix.select(rowIndex, cellIndex);\n };\n ContentFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n this.matrix.current = [rowIndex, cellIndex];\n info.element = !isNullOrUndefined(this.getTable().rows[parseInt(rowIndex.toString(), 10)]) ?\n this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)] : null;\n if (!info.element) {\n return info;\n }\n info.elementToFocus = !info.element.classList.contains('e-unboundcell') && !info.element.classList.contains('e-detailcell')\n ? this.getFocusable(info.element) : info.element;\n info.elementToFocus = info.element.classList.contains('e-detailcell') && info.element.querySelector('.e-childgrid')\n ? info.element.querySelector('.e-childgrid') : info.elementToFocus;\n info.outline = true;\n info.uid = info.element.parentElement.getAttribute('data-uid');\n return info;\n };\n ContentFocus.prototype.getFocusable = function (element) {\n var query = 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n var isTemplate = !isNullOrUndefined(closest(element, '.e-templatecell'));\n if (this.parent.isEdit) {\n query = 'input:not([type=\"hidden\"]), select:not([aria-hidden=\"true\"]), textarea';\n }\n var child = [].slice.call(element.querySelectorAll(query));\n /* Select the first focusable child element\n * if no child found then select the cell itself.\n * if Grid is in editable state, check for editable control inside child.\n */\n return child.length ? isTemplate && child.length > 1 ? this.target ? this.target : element : child[0] : element;\n };\n ContentFocus.prototype.selector = function (row, cell, isRowTemplate) {\n var types = [CellType.Expand, CellType.GroupCaption, CellType.CaptionSummary, CellType.GroupSummary];\n return ((row.isDataRow && cell.visible && (cell.isDataCell || cell.isTemplate))\n || (row.isDataRow && cell.cellType === CellType.DetailExpand && isNullOrUndefined(cell.visible))\n || (!row.isDataRow && types.indexOf(cell.cellType) > -1\n && !((cell.cellType === CellType.GroupSummary || cell.cellType === CellType.CaptionSummary)\n && !(cell.isDataCell && cell.visible)))\n || (cell.column && cell.visible && cell.column.type === 'checkbox')\n || (cell.cellType === CellType.CommandColumn)\n || (row.isDataRow && isRowTemplate))\n && !(row.edit === 'delete' && row.isDirty);\n };\n ContentFocus.prototype.nextRowFocusValidate = function (index) {\n var lastIndex = index;\n for (var i = index, len = this.matrix.rows; i <= len; i++) {\n if (this.matrix.matrix[parseInt(index.toString(), 10)].indexOf(1) === -1) {\n index = index + 1;\n }\n else {\n return index;\n }\n }\n this.lastIdxCell = true;\n return lastIndex;\n };\n ContentFocus.prototype.previousRowFocusValidate = function (index) {\n var firstIndex = index;\n for (var i = index, len = 0; i >= len; i--) {\n if (this.matrix.matrix[parseInt(index.toString(), 10)].indexOf(1) === -1) {\n index = index - 1;\n if (index < 0) {\n this.lastIdxCell = true;\n return firstIndex;\n }\n }\n else {\n return index;\n }\n }\n return firstIndex;\n };\n ContentFocus.prototype.jump = function (action, current) {\n this.lastIdxCell = false;\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var headerSwap = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n if (action === 'tab' && this.matrix.matrix.length &&\n current[1] === this.matrix.matrix[current[0]].lastIndexOf(1) && this.matrix.matrix.length - 1 !== current[0]) {\n this.matrix.current[0] = this.nextRowFocusValidate(this.matrix.current[0] + 1);\n this.matrix.current[1] = -1;\n }\n if (action === 'shiftTab' &&\n current[0] !== 0 && this.matrix.matrix[current[0]].indexOf(1) === current[1]) {\n this.matrix.current[0] = this.previousRowFocusValidate(this.matrix.current[0] - 1);\n this.matrix.current[1] = this.matrix.matrix[current[0]].length;\n }\n var isHeaderFocus = false;\n var row = parentsUntil(document.activeElement, 'e-row');\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && !isNullOrUndefined(row) && row.classList.contains(literals.row)) {\n var rowIndex = parseInt(row.getAttribute(literals.dataRowIndex), 10);\n isHeaderFocus = rowIndex > 0;\n }\n var info = {\n swap: !isHeaderFocus ? ((action === 'upArrow' || enterFrozen) && current[0] === 0) : false,\n toHeader: headerSwap\n };\n return info;\n };\n ContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current = [];\n if (action === 'rightArrow' || action === 'tab') {\n current[0] = previous[0];\n current[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current[0] = -1;\n current[1] = previous[1];\n }\n return current;\n };\n ContentFocus.prototype.generateRows = function (rows, optionals) {\n var _a;\n var matrix = optionals.matrix, handlerInstance = optionals.handlerInstance;\n var len = handlerInstance.matrix.matrix.length;\n var defaultLen = this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' ? len + 1 : len;\n handlerInstance.matrix.matrix = handlerInstance.matrix.matrix.slice(0, defaultLen); //Header matrix update.\n handlerInstance.matrix.rows = defaultLen;\n (_a = handlerInstance.matrix.matrix).push.apply(_a, matrix);\n handlerInstance.matrix.rows += matrix.length;\n };\n ContentFocus.prototype.getInfo = function (e) {\n var info = this.getFocusInfo();\n var _a = this.matrix.current, rIndex = _a[0], cIndex = _a[1];\n var isData = info.element.classList.contains(literals.rowCell);\n var isSelectable = isData || (e && e.action !== 'enter' && (info.element.classList.contains('e-detailrowcollapse')\n || info.element.classList.contains('e-detailrowexpand')));\n // eslint-disable-next-line\n var _b = [Math.min(parseInt(info.element.parentElement.getAttribute(literals.dataRowIndex), 10), rIndex),\n Math.min(parseInt(info.element.getAttribute(literals.dataColIndex), 10), cIndex)], rowIndex = _b[0], cellIndex = _b[1];\n if (this.parent.allowGrouping && this.parent.groupSettings.enableLazyLoading && isData) {\n rowIndex = this.parent.getDataRows().indexOf(info.element.parentElement);\n }\n return { isContent: true, isDataCell: isData, indexes: [rowIndex, cellIndex], isSelectable: isSelectable };\n };\n ContentFocus.prototype.validator = function () {\n var table = this.getTable();\n return function (rowIndex, cellIndex, action) {\n if (!isNullOrUndefined(table.rows[parseInt(rowIndex.toString(), 10)])) {\n var cell = void 0;\n cellIndex = table.querySelector('.e-emptyrow') ? 0 : cellIndex;\n if (table.rows[parseInt(rowIndex.toString(), 10)].cells[0].classList.contains('e-editcell')) {\n cell = table.rows[parseInt(rowIndex.toString(), 10)].cells[0].querySelectorAll('td')[parseInt(cellIndex.toString(), 10)];\n }\n else {\n cell = table.rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n }\n var isCellWidth = cell.getBoundingClientRect().width !== 0;\n if (action === 'enter' || action === 'shiftEnter') {\n return isCellWidth && cell.classList.contains(literals.rowCell);\n }\n if ((action === 'shiftUp' || action === 'shiftDown') && cell.classList.contains(literals.rowCell)) {\n return isCellWidth;\n }\n else if (action !== 'shiftUp' && action !== 'shiftDown') {\n return isCellWidth;\n }\n }\n return false;\n };\n };\n ContentFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, _b = _a[0], rIndex = _b === void 0 ? -1 : _b, _c = _a[1], cIndex = _c === void 0 ? -1 : _c;\n if (rIndex < 0 || cIndex < 0) {\n return true;\n }\n var cell = getValue(rIndex + \".cells.\" + cIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'shiftEnter' ?\n cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-unboundcell')\n || cell.classList.contains('e-editedbatchcell') && !cell.classList.contains('e-detailcell') : true;\n };\n ContentFocus.prototype.getGridSeletion = function () {\n return this.parent.allowSelection && this.parent.selectionSettings.allowColumnSelection;\n };\n return ContentFocus;\n}());\nexport { ContentFocus };\n/**\n * @hidden\n */\nvar HeaderFocus = /** @class */ (function (_super) {\n __extends(HeaderFocus, _super);\n function HeaderFocus(parent) {\n return _super.call(this, parent) || this;\n }\n HeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderTable());\n };\n HeaderFocus.prototype.onClick = function (e) {\n var target = e.target;\n this.target = target;\n target = (target.classList.contains('e-headercell') ? target : closest(target, 'th'));\n if (!target && this.parent.frozenRows !== 0) {\n target = (e.target.classList.contains(literals.rowCell) ? e.target :\n closest(e.target, 'td'));\n }\n if (e.target.classList.contains('e-columnheader') ||\n e.target.querySelector('.e-stackedheadercell')) {\n return false;\n }\n if (!target) {\n return;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val)) {\n return false;\n }\n this.matrix.select(target.parentElement.rowIndex, target.cellIndex);\n };\n HeaderFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n info.element = this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n if (!isNullOrUndefined(info.element)) {\n info.elementToFocus = this.getFocusable(info.element);\n info.outline = !info.element.classList.contains('e-filterbarcell');\n }\n return info;\n };\n HeaderFocus.prototype.selector = function (row, cell) {\n return (cell.visible && (cell.column.field !== undefined || cell.isTemplate || !isNullOrUndefined(cell.column.template)\n || !isNullOrUndefined(cell.column.commands))) || cell.column.type === 'checkbox' || cell.cellType === CellType.StackedHeader;\n };\n HeaderFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var isLastCell;\n var lastRow;\n if (this.parent.enableHeaderFocus && action === 'tab') {\n lastRow = this.matrix.matrix.length - 1 === current[0];\n isLastCell = current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n if (isLastCell) {\n if (!lastRow) {\n this.matrix.current[0] = this.matrix.current[0] + 1;\n }\n else {\n this.matrix.current[0] = 0;\n }\n this.matrix.current[1] = -1;\n }\n }\n return {\n swap: ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (action === 'tab' && lastRow && isLastCell)\n };\n };\n HeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current1 = [];\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current1[0] = this.matrix.matrix.length;\n current1[1] = previous[1];\n }\n return current1;\n };\n HeaderFocus.prototype.generateRows = function (rows) {\n var length = this.matrix.matrix.length;\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar') {\n this.matrix.rows = ++this.matrix.rows;\n var cells = rows[0].cells;\n var incrementNumber = 0;\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].column && cells[parseInt(i.toString(), 10)].column.columns) {\n incrementNumber = this.checkFilterColumn(cells[parseInt(i.toString(), 10)].column.columns, length, incrementNumber);\n }\n else {\n this.matrix.set(length, incrementNumber, cells[parseInt(i.toString(), 10)].visible && cells[parseInt(i.toString(), 10)].column.allowFiltering !== false);\n incrementNumber++;\n }\n }\n }\n };\n HeaderFocus.prototype.checkFilterColumn = function (rowColumns, rowIndex, columnIndex) {\n var columns = rowColumns;\n var incrementNumber = columnIndex;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n incrementNumber = this.checkFilterColumn(columns[parseInt(i.toString(), 10)].columns, rowIndex, incrementNumber);\n }\n else {\n this.matrix.set(rowIndex, incrementNumber, columns[parseInt(i.toString(), 10)].visible && columns[parseInt(i.toString(), 10)].allowFiltering !== false);\n incrementNumber++;\n }\n }\n return incrementNumber;\n };\n HeaderFocus.prototype.getInfo = function (e) {\n return extend(_super.prototype.getInfo.call(this, e), { isContent: false, isHeader: true });\n };\n HeaderFocus.prototype.validator = function () {\n return function () { return true; };\n };\n HeaderFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, rowIndex = _a[0], columnIndex = _a[1];\n if (rowIndex < 0 || columnIndex < 0) {\n return true;\n }\n var cell = getValue(rowIndex + \".cells.\" + columnIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'altDownArrow' ? !cell.classList.contains('e-headercell') : true;\n };\n HeaderFocus.prototype.getHeaderType = function () {\n return 'HeaderFocus';\n };\n return HeaderFocus;\n}(ContentFocus));\nexport { HeaderFocus };\n/** @hidden */\nvar SearchBox = /** @class */ (function () {\n function SearchBox(searchBox, serviceLocator) {\n this.searchBox = searchBox;\n this.serviceLocator = serviceLocator;\n this.l10n = this.serviceLocator.getService('localization');\n }\n SearchBox.prototype.searchFocus = function (args) {\n args.target.parentElement.classList.add('e-input-focus');\n if (args.target.classList.contains('e-input') && args.target.classList.contains('e-search') && args.target.value) {\n var sIcon = args.target.parentElement.querySelector('.e-sicon');\n sIcon.classList.add('e-clear-icon');\n sIcon.setAttribute('title', this.l10n.getConstant('ClearButton'));\n (sIcon).style.cursor = 'pointer';\n }\n };\n SearchBox.prototype.searchBlur = function (args) {\n var relatedTarget = args.relatedTarget ? args.relatedTarget : null;\n if (relatedTarget && relatedTarget.classList.contains('e-sicon')) {\n if (relatedTarget.classList.contains('e-clear-icon')) {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n }\n else {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n if (args.target.classList.contains('e-search') && ((relatedTarget && !(relatedTarget.classList.contains('e-sicon e-clear-icon'))\n && !(relatedTarget.classList.contains('e-sicon'))) || isNullOrUndefined(relatedTarget))) {\n var sIcon = args.target.parentElement.querySelector('.e-sicon');\n sIcon.classList.remove('e-clear-icon');\n sIcon.removeAttribute('title');\n sIcon.style.cursor = 'default';\n }\n };\n SearchBox.prototype.wireEvent = function () {\n if (this.searchBox) {\n EventHandler.add(this.searchBox, 'focus', this.searchFocus, this);\n EventHandler.add(this.searchBox, 'blur', this.searchBlur, this);\n }\n };\n SearchBox.prototype.unWireEvent = function () {\n if (this.searchBox) {\n EventHandler.remove(this.searchBox, 'focus', this.searchFocus);\n EventHandler.remove(this.searchBox, 'blur', this.searchBlur);\n }\n };\n return SearchBox;\n}());\nexport { SearchBox };\n","/** @hidden */\nexport var created = 'create';\n/** @hidden */\nexport var destroyed = 'destroy';\n/** @hidden */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var headerCellInfo = 'headerCellInfo';\n/** @hidden */\nexport var actionBegin = 'actionBegin';\n/** @hidden */\nexport var actionComplete = 'actionComplete';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var rowSelecting = 'rowSelecting';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var rowDeselecting = 'rowDeselecting';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var cellSelecting = 'cellSelecting';\n/** @hidden */\nexport var cellSelected = 'cellSelected';\n/** @hidden */\nexport var cellDeselecting = 'cellDeselecting';\n/** @hidden */\nexport var cellDeselected = 'cellDeselected';\n/** @hidden */\nexport var columnSelecting = 'columnSelecting';\n/** @hidden */\nexport var columnSelected = 'columnSelected';\n/** @hidden */\nexport var columnDeselecting = 'columnDeselecting';\n/** @hidden */\nexport var columnDeselected = 'columnDeselected';\n/** @hidden */\nexport var columnDragStart = 'columnDragStart';\n/** @hidden */\nexport var columnDrag = 'columnDrag';\n/** @hidden */\nexport var columnDrop = 'columnDrop';\n/** @hidden */\nexport var rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nexport var rowDragStart = 'rowDragStart';\n/** @hidden */\nexport var rowDrag = 'rowDrag';\n/** @hidden */\nexport var rowDrop = 'rowDrop';\n/** @hidden */\nexport var beforePrint = 'beforePrint';\n/** @hidden */\nexport var printComplete = 'printComplete';\n/** @hidden */\nexport var detailDataBound = 'detailDataBound';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var batchAdd = 'batchAdd';\n/** @hidden */\nexport var batchCancel = 'batchCancel';\n/** @hidden */\nexport var batchDelete = 'batchDelete';\n/** @hidden */\nexport var beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nexport var beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nexport var beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nexport var beginEdit = 'beginEdit';\n/** @hidden */\nexport var cellEdit = 'cellEdit';\n/** @hidden */\nexport var cellSave = 'cellSave';\n/** @hidden */\nexport var cellSaved = 'cellSaved';\n/** @hidden */\nexport var endAdd = 'endAdd';\n/** @hidden */\nexport var endDelete = 'endDelete';\n/** @hidden */\nexport var endEdit = 'endEdit';\n/** @hidden */\nexport var recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nexport var recordClick = 'recordClick';\n/** @hidden */\nexport var beforeDataBound = 'beforeDataBound';\n/** @hidden */\nexport var beforeOpenColumnChooser = 'beforeOpenColumnChooser';\n/** @hidden */\nexport var beforeOpenAdaptiveDialog = 'beforeOpenAdaptiveDialog';\n/** @hidden */\nexport var resizeStart = 'resizeStart';\n/** @hidden */\nexport var onResize = 'resizing';\n/** @hidden */\nexport var resizeStop = 'resizeStop';\n/** @hidden */\nexport var checkBoxChange = 'checkBoxChange';\n/** @hidden */\nexport var beforeCopy = 'beforeCopy';\n/** @hidden */\nexport var beforePaste = 'beforePaste';\n/** @hidden */\nexport var beforeAutoFill = 'beforeAutoFill';\n/** @hidden */\nexport var filterChoiceRequest = 'filterchoicerequest';\n/** @hidden */\nexport var filterAfterOpen = 'filterAfterOpen';\n/** @hidden */\nexport var filterBeforeOpen = 'filterBeforeOpen';\n/** @hidden */\nexport var filterSearchBegin = 'filterSearchBegin';\n/** @hidden */\nexport var commandClick = 'commandClick';\n/** @hidden */\nexport var exportGroupCaption = 'exportGroupCaption';\n/** @hidden */\nexport var lazyLoadGroupExpand = 'lazyLoadGroupExpand';\n/** @hidden */\nexport var lazyLoadGroupCollapse = 'lazyLoadGroupCollapse';\n/**\n * Specifies grid internal events\n */\n/** @hidden */\nexport var initialLoad = 'initial-load';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var dataReady = 'data-ready';\n/** @hidden */\nexport var contentReady = 'content-ready';\n/** @hidden */\nexport var uiUpdate = 'ui-update';\n/** @hidden */\nexport var onEmpty = 'on-empty';\n/** @hidden */\nexport var inBoundModelChanged = 'inbound-model-changed';\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var colGroupRefresh = 'colgroup-refresh';\n/** @hidden */\nexport var headerRefreshed = 'header-refreshed';\n/** @hidden */\nexport var pageBegin = 'paging-begin';\n/** @hidden */\nexport var pageComplete = 'paging-complete';\n/** @hidden */\nexport var sortBegin = 'sorting-begin';\n/** @hidden */\nexport var sortComplete = 'sorting-complete';\n/** @hidden */\nexport var filterBegin = 'filtering-begin';\n/** @hidden */\nexport var filterComplete = 'filtering-complete';\n/** @hidden */\nexport var searchBegin = 'searching-begin';\n/** @hidden */\nexport var searchComplete = 'searching-complete';\n/** @hidden */\nexport var reorderBegin = 'reorder-begin';\n/** @hidden */\nexport var reorderComplete = 'reorder-complete';\n/** @hidden */\nexport var rowDragAndDropBegin = 'rowdraganddrop-begin';\n/** @hidden */\nexport var rowDragAndDropComplete = 'rowdraganddrop-complete';\n/** @hidden */\nexport var groupBegin = 'grouping-begin';\n/** @hidden */\nexport var groupComplete = 'grouping-complete';\n/** @hidden */\nexport var ungroupBegin = 'ungrouping-begin';\n/** @hidden */\nexport var ungroupComplete = 'ungrouping-complete';\n/** @hidden */\nexport var groupAggregates = 'group-aggregates';\n/** @hidden */\nexport var refreshFooterRenderer = 'refresh-footer-rendered';\n/** @hidden */\nexport var refreshAggregateCell = 'refresh-aggregate-cell';\n/** @hidden */\nexport var refreshAggregates = 'refresh-aggregates';\n/** @hidden */\nexport var rowSelectionBegin = 'rowselecting';\n/** @hidden */\nexport var rowSelectionComplete = 'rowselected';\n/** @hidden */\nexport var columnSelectionBegin = 'columnselecting';\n/** @hidden */\nexport var columnSelectionComplete = 'columnselected';\n/** @hidden */\nexport var cellSelectionBegin = 'cellselecting';\n/** @hidden */\nexport var cellSelectionComplete = 'cellselected';\n/** @hidden */\nexport var beforeCellFocused = 'beforecellfocused';\n/** @hidden */\nexport var cellFocused = 'cellfocused';\n/** @hidden */\nexport var keyPressed = 'key-pressed';\n/** @hidden */\nexport var click = 'click';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var columnVisibilityChanged = 'column-visible-changed';\n/** @hidden */\nexport var scroll = 'scroll';\n/** @hidden */\nexport var columnWidthChanged = 'column-width-changed';\n/** @hidden */\nexport var columnPositionChanged = 'column-position-changed';\n/** @hidden */\nexport var rowDragAndDrop = 'row-drag-and-drop';\n/** @hidden */\nexport var rowsAdded = 'rows-added';\n/** @hidden */\nexport var rowsRemoved = 'rows-removed';\n/** @hidden */\nexport var columnDragStop = 'column-drag-stop';\n/** @hidden */\nexport var headerDrop = 'header-drop';\n/** @hidden */\nexport var dataSourceModified = 'datasource-modified';\n/** @hidden */\nexport var refreshComplete = 'refresh-complete';\n/** @hidden */\nexport var refreshVirtualBlock = 'refresh-virtual-block';\n/** @hidden */\nexport var dblclick = 'dblclick';\n/** @hidden */\nexport var toolbarRefresh = 'toolbar-refresh';\n/** @hidden */\nexport var bulkSave = 'bulk-save';\n/** @hidden */\nexport var autoCol = 'auto-col';\n/** @hidden */\nexport var tooltipDestroy = 'tooltip-destroy';\n/** @hidden */\nexport var updateData = 'update-data';\n/** @hidden */\nexport var editBegin = 'edit-begin';\n/** @hidden */\nexport var editComplete = 'edit-complete';\n/** @hidden */\nexport var addBegin = 'add-begin';\n/** @hidden */\nexport var addComplete = 'add-complete';\n/** @hidden */\nexport var saveComplete = 'save-complete';\n/** @hidden */\nexport var deleteBegin = 'delete-begin';\n/** @hidden */\nexport var deleteComplete = 'delete-complete';\n/** @hidden */\nexport var preventBatch = 'prevent-batch';\n/** @hidden */\nexport var dialogDestroy = 'dialog-destroy';\n/** @hidden */\nexport var crudAction = 'crud-Action';\n/** @hidden */\nexport var addDeleteAction = 'add-delete-Action';\n/** @hidden */\nexport var destroyForm = 'destroy-form';\n/** @hidden */\nexport var doubleTap = 'double-tap';\n/** @hidden */\nexport var beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nexport var excelExportComplete = 'excelExportComplete';\n/** @hidden */\nexport var excelQueryCellInfo = 'excelQueryCellInfo';\n/** @hidden */\nexport var excelHeaderQueryCellInfo = 'excelHeaderQueryCellInfo';\n/** @hidden */\nexport var exportDetailDataBound = 'exportDetailDataBound';\n/** @hidden */\nexport var exportDetailTemplate = 'exportDetailTemplate';\n/** @hidden */\nexport var beforePdfExport = 'beforePdfExport';\n/** @hidden */\nexport var pdfExportComplete = 'pdfExportComplete';\n/** @hidden */\nexport var pdfQueryCellInfo = 'pdfQueryCellInfo';\n/** @hidden */\nexport var pdfHeaderQueryCellInfo = 'pdfHeaderQueryCellInfo';\n/** @hidden */\nexport var accessPredicate = 'access-predicate';\n/** @hidden */\nexport var contextMenuClick = 'contextMenuClick';\n/** @hidden */\nexport var freezeRender = 'freezerender';\n/** @hidden */\nexport var freezeRefresh = 'freezerefresh';\n/** @hidden */\nexport var contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nexport var columnMenuClick = 'columnMenuClick';\n/** @hidden */\nexport var columnMenuOpen = 'columnMenuOpen';\n/** @hidden */\nexport var filterOpen = 'filterOpen';\n/** @hidden */\nexport var filterDialogCreated = 'filterDialogCreated';\n/** @hidden */\nexport var filterMenuClose = 'filter-menu-close';\n/** @hidden */\nexport var initForeignKeyColumn = 'initForeignKeyColumn';\n/** @hidden */\nexport var getForeignKeyData = 'getForeignKeyData';\n/** @hidden */\nexport var generateQuery = 'generateQuery';\n/** @hidden */\nexport var showEmptyGrid = 'showEmptyGrid';\n/** @hidden */\nexport var foreignKeyData = 'foreignKeyData';\n/** @hidden */\nexport var columnDataStateChange = 'columnDataStateChange';\n/** @hidden */\nexport var dataStateChange = 'dataStateChange';\n/** @hidden */\nexport var dataSourceChanged = 'dataSourceChanged';\n/** @hidden */\nexport var rtlUpdated = 'rtl-updated';\n/** @hidden */\nexport var beforeFragAppend = 'beforeFragAppend';\n/** @hidden */\nexport var frozenHeight = 'frozenHeight';\n/** @hidden */\nexport var textWrapRefresh = 'textWrapRefresh';\n/** @hidden */\nexport var recordAdded = 'recordAdded';\n/** @hidden */\nexport var cancelBegin = 'cancel-Begin';\n/** @hidden */\nexport var editNextValCell = 'editNextValCell';\n/** @hidden */\nexport var hierarchyPrint = 'hierarchyprint';\n/** @hidden */\nexport var expandChildGrid = 'expandchildgrid';\n/** @hidden */\nexport var printGridInit = 'printGrid-Init';\n/** @hidden */\nexport var exportRowDataBound = 'export-RowDataBound';\n/** @hidden */\nexport var exportDataBound = 'export-DataBound';\n/** @hidden */\nexport var rowPositionChanged = 'row-position-changed';\n/** @hidden */\nexport var columnChooserOpened = 'columnChooserOpened';\n/** @hidden */\nexport var batchForm = 'batchedit-form';\n/** @hidden */\nexport var beforeStartEdit = 'edit-form';\n/** @hidden */\nexport var beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nexport var batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nexport var partialRefresh = 'partial-refresh';\n/** @hidden */\nexport var beforeCustomFilterOpen = 'beforeCustomFilterOpen';\n/** @hidden */\nexport var selectVirtualRow = 'select-virtual-Row';\n/** @hidden */\nexport var columnsPrepared = 'columns-prepared';\n/** @hidden */\nexport var cBoxFltrBegin = 'cbox-filter-begin';\n/** @hidden */\nexport var cBoxFltrComplete = 'cbox-filter-complete';\n/** @hidden */\nexport var fltrPrevent = 'filter-Prevent';\n/** @hidden */\nexport var beforeFltrcMenuOpen = 'before-filter-cmenu-open';\n/** @hidden */\nexport var valCustomPlacement = 'validation-custom-placement';\n/** @hidden */\nexport var filterCboxValue = 'filter-cbox-value';\n/** @hidden */\nexport var componentRendered = 'component-rendered';\n/** @hidden */\nexport var restoreFocus = 'restore-Focus';\n/** @hidden */\nexport var detailStateChange = 'detail-state-change';\n/** @hidden */\nexport var detailIndentCellInfo = 'detail-indentcell-info';\n/** @hidden */\nexport var virtaulKeyHandler = 'virtaul-key-handler';\n/** @hidden */\nexport var virtaulCellFocus = 'virtaul-cell-focus';\n/** @hidden */\nexport var virtualScrollEditActionBegin = 'virtual-scroll-edit-action-begin';\n/** @hidden */\nexport var virtualScrollEditSuccess = 'virtual-scroll-edit-success';\n/** @hidden */\nexport var virtualScrollEditCancel = 'virtual-scroll-edit-cancel';\n/** @hidden */\nexport var virtualScrollEdit = 'virtual-scroll-edit';\n/** @hidden */\nexport var refreshVirtualCache = 'refresh-virtual-cache';\n/** @hidden */\nexport var editReset = 'edit-reset';\n/** @hidden */\nexport var virtualScrollAddActionBegin = 'virtual-scroll-add-action-begin';\n/** @hidden */\nexport var getVirtualData = 'get-virtual-data';\n/** @hidden */\nexport var refreshInfiniteModeBlocks = 'refresh-infinite-mode-blocks';\n/** @hidden */\nexport var resetInfiniteBlocks = 'reset-infinite-blocks';\n/** @hidden */\nexport var infiniteScrollHandler = 'infinite-scroll-handler';\n/** @hidden */\nexport var infinitePageQuery = 'infinite-page-query';\n/** @hidden */\nexport var infiniteShowHide = 'infinite-show-hide';\n/** @hidden */\nexport var appendInfiniteContent = 'append-infinite-content';\n/** @hidden */\nexport var removeInfiniteRows = 'remove-infinite-rows';\n/** @hidden */\nexport var setInfiniteCache = 'set-infinite-cache';\n/** @hidden */\nexport var infiniteEditHandler = 'infinite-edit-handler';\n/** @hidden */\nexport var initialCollapse = 'initial-collapse';\n/** @hidden */\nexport var getAggregateQuery = 'get-aggregate-query';\n/** @hidden */\nexport var closeFilterDialog = 'close-filter-dialog';\n/** @hidden */\nexport var columnChooserCancelBtnClick = 'columnChooserCancelBtnClick';\n/** @hidden */\nexport var getFilterBarOperator = 'get-filterbar-operator';\n/** @hidden */\nexport var resetColumns = 'reset-columns';\n/** @hidden */\nexport var pdfAggregateQueryCellInfo = 'pdfAggregateQueryCellInfo';\n/** @hidden */\nexport var excelAggregateQueryCellInfo = 'excelAggregateQueryCellInfo';\n/** @hidden */\nexport var setGroupCache = 'group-cache';\n/** @hidden */\nexport var lazyLoadScrollHandler = 'lazy-load-scroll-handler';\n/** @hidden */\nexport var groupCollapse = 'group-collapse';\n/** @hidden */\nexport var beforeCheckboxRenderer = 'beforeCheckboxRenderer';\n/** @hidden */\nexport var refreshHandlers = 'refreshResizeHandlers';\n/** @hidden */\nexport var refreshFrozenColumns = 'refresh-frozen-columns';\n/** @hidden */\nexport var setReorderDestinationElement = 'set-reorder-destination-element';\n/** @hidden */\nexport var refreshVirtualFrozenHeight = 'refresh-virtual-frozen-height';\n/** @hidden */\nexport var setFreezeSelection = 'set-freeze-selection';\n/** @hidden */\nexport var setInfiniteFrozenHeight = 'set-infinite-frozen-height';\n/** @hidden */\nexport var setInfiniteColFrozenHeight = 'set-infinite-col-frozen-height';\n/** @hidden */\nexport var beforeRefreshOnDataChange = 'before-refresh-on-data-change';\n/** @hidden */\nexport var immutableBatchCancel = 'immutable-batch-cancel';\n/** @hidden */\nexport var refreshVirtualFrozenRows = 'refresh-virtual-frozenrows';\n/** @hidden */\nexport var checkScrollReset = 'check-scroll-reset';\n/** @hidden */\nexport var refreshFrozenHeight = 'refresh-frozen-height';\n/** @hidden */\nexport var setHeightToFrozenElement = 'set-height-to-frozen-element';\n/** @hidden */\nexport var preventFrozenScrollRefresh = 'prevent-frozen-scroll-refresh';\n/** @hidden */\nexport var nextCellIndex = 'next-cell-index';\n/** @hidden */\nexport var refreshInfiniteCurrentViewData = 'refresh-infinite-current-view-data';\n/** @hidden */\nexport var infiniteCrudCancel = 'infinite-crud-cancel';\n/** @hidden */\nexport var filterDialogClose = 'filter-dialog-close';\n/** @hidden */\nexport var refreshCustomFilterOkBtn = 'refresh-cutsom-filter-ok-button';\n/** @hidden */\nexport var refreshCustomFilterClearBtn = 'refresh-cutsom-filter-clear-button';\n/** @hidden */\nexport var renderResponsiveCmenu = 'render-responsive-cmenu';\n/** @hidden */\nexport var filterCmenuSelect = 'filter-cmenu-select';\n/** @hidden */\nexport var customFilterClose = 'custom-filter-close';\n/** @hidden */\nexport var setFullScreenDialog = 'set-fullscreen-dialog';\n/** @hidden */\nexport var refreshExpandandCollapse = 'refresh-Expand-and-Collapse';\n/** @hidden */\nexport var rowModeChange = 'row-mode-change';\n/** @hidden */\nexport var enterKeyHandler = 'enter-key-handler';\n/** @hidden */\nexport var refreshVirtualMaxPage = 'refresh-virtual-max-page';\n/** @hidden */\nexport var setVirtualPageQuery = 'set-virtual-page-query';\n/** @hidden */\nexport var selectRowOnContextOpen = 'select-row-on-context-open';\n/** @hidden */\nexport var pagerRefresh = 'pager-refresh';\n/** @hidden */\nexport var closeInline = 'closeinline';\n/** @hidden */\nexport var closeBatch = 'closebatch';\n/** @hidden */\nexport var closeEdit = 'close-edit';\n/** @hidden */\nexport var resetVirtualFocus = 'reset-virtual-focus';\n/** @hidden */\nexport var afterContentRender = 'after-content-renderer';\n/** @hidden */\nexport var refreshVirtualEditFormCells = 'refresh-virtual-editform-cells';\n/** @hidden */\nexport var scrollToEdit = 'scroll-to-edit';\n/** @hidden */\nexport var beforeCheckboxRendererQuery = 'before-checkbox-renderer-query';\n/** @hidden */\nexport var createVirtualValidationForm = 'create-virtual-validation-form';\n/** @hidden */\nexport var validateVirtualForm = 'validate-virtual-form';\n/** @hidden */\nexport var destroyChildGrid = 'destroy-child-grid';\n/** @hidden */\nexport var stickyScrollComplete = 'sticky-scroll-complete';\n/** @hidden */\nexport var captionActionComplete = 'infinite-group-collapse';\n/** @hidden */\nexport var refreshInfinitePersistSelection = 'refresh-infinite-persist-selection';\n/** @hidden */\nexport var refreshInfiniteEditrowindex = 'refresh-infinite-editrowindex';\n/** @hidden */\nexport var afterFilterColumnMenuClose = 'after-filter-column-menu-close';\n/** @hidden */\nexport var beforeCheckboxfilterRenderer = 'beforeCheckboxfilterRenderer';\n/** @hidden */\nexport var commandColumnDestroy = 'commandColumnDestroy';\n/** @hidden */\nexport var batchCnfrmDlgCancel = 'cancelcnfrmDlg';\n/** @hidden */\nexport var refreshVirtualLazyLoadCache = 'refresh-Virtual-LazyLoad-Cache';\n/** @hidden */\nexport var refreshFrozenPosition = 'refresh-Frozen-Position';\n/** @hidden */\nexport var refreshResizePosition = 'refresh-Resize-Position';\n/** @hidden */\nexport var refreshSplitFrozenColumn = 'refresh-Split-Frozen-Column';\n/** @hidden */\nexport var renderResponsiveChangeAction = 'render-Responsive-Change-Action';\n/** @hidden */\nexport var renderResponsiveColumnChooserDiv = 'render-Responsive-Column-Chooser-Div';\n","import { Droppable } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, remove, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { getUpdateUsingRaf, appendChildren, setDisplayValue, clearReactVueTemplates, getScrollBarWidth, getScrollWidth } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from './row-renderer';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport { isGroupAdaptive, addFixedColumnBorder } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar ContentRender = /** @class */ (function () {\n /**\n * Constructor for content renderer module\n *\n * @param {IGrid} parent - specifies the Igrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n */\n function ContentRender(parent, serviceLocator) {\n var _this = this;\n this.rows = [];\n this.freezeRows = [];\n this.movableRows = [];\n this.freezeRowElements = [];\n /** @hidden */\n this.currentInfo = {};\n /** @hidden */\n this.prevCurrentView = [];\n this.isLoaded = true;\n this.drop = function (e) {\n _this.parent.notify(events.columnDrop, { target: e.target, droppedElement: e.droppedElement });\n remove(e.droppedElement);\n };\n this.infiniteCache = {};\n /** @hidden */\n this.visibleRows = [];\n this.visibleFrozenRows = [];\n this.rightFreezeRows = [];\n this.isAddRows = false;\n this.isInfiniteFreeze = false;\n this.useGroupCache = false;\n /** @hidden */\n this.tempFreezeRows = [];\n this.rafCallback = function (args) {\n var arg = args;\n return function () {\n _this.ariaService.setBusy(_this.getPanel().querySelector('.' + literals.content), false);\n if (_this.parent.isDestroyed) {\n return;\n }\n var rows = _this.rows.slice(0);\n if (_this.parent.enableInfiniteScrolling) {\n if (_this.parent.groupSettings.enableLazyLoading) {\n for (var i = 0; i < _this.visibleRows.length; i++) {\n _this.setRowsInLazyGroup(_this.visibleRows[parseInt(i.toString(), 10)], i);\n }\n }\n rows = _this.parent.getRowsObject();\n var prevPage = arg.prevPage;\n if (_this.parent.infiniteScrollSettings.enableCache && prevPage) {\n var maxBlock = _this.parent.infiniteScrollSettings.maxBlocks;\n rows = [];\n var rowIdx = (parseInt(_this.rowElements[0].getAttribute('data-rowindex'), 10) + 1);\n var startIdx = Math.ceil(rowIdx / _this.parent.pageSettings.pageSize);\n for (var i = 0, count = startIdx; i < maxBlock; i++, count++) {\n if (_this.infiniteCache[parseInt(count.toString(), 10)]) {\n rows = rows.concat(_this.infiniteCache[parseInt(count.toString(), 10)]);\n }\n }\n }\n }\n _this.parent.notify(events.contentReady, { rows: rows, args: arg });\n if (_this.parent.autoFit) {\n _this.parent.preventAdjustColumns();\n }\n if (!_this.parent.isInitialLoad) {\n _this.parent.focusModule.setFirstFocusableTabIndex();\n }\n if (_this.isLoaded) {\n _this.parent.isManualRefresh = false;\n if (_this.parent.enableInfiniteScrolling && _this.parent.groupSettings.enableLazyLoading && args.requestType === 'sorting') {\n _this.parent.infiniteScrollModule['groupCaptionAction'] = undefined;\n }\n var isReactChild = _this.parent.parentDetails && _this.parent.parentDetails.parentInstObj &&\n _this.parent.parentDetails.parentInstObj.isReact;\n if ((_this.parent.isReact || isReactChild) && _this.parent.element.querySelectorAll('.e-templatecell').length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = _this;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(events.dataBound, {}, function () {\n if (thisRef_1.parent.allowTextWrap) {\n thisRef_1.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n });\n }\n else {\n _this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n }\n if (_this.parent.allowTextWrap && _this.parent.height === 'auto') {\n if (_this.parent.getContentTable().scrollHeight > _this.parent.getContent().clientHeight) {\n _this.parent.scrollModule.setPadding();\n }\n else {\n _this.parent.scrollModule.removePadding();\n }\n }\n }\n if (arg) {\n var action = (arg.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, arg);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.isLoaded) {\n _this.parent.hideSpinner();\n }\n };\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.widthService = serviceLocator.getService('widthService');\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.parent.enableDeepCompare = this.parent.getDataModule().isRemote();\n this.generator = this.getModelGenerator();\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization && !this.parent.enableVirtualization\n && !this.parent.groupSettings.enableLazyLoading) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.colGroupRefresh, this.colGroupRefresh, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.refreshInfiniteModeBlocks, this.refreshContentRows, this);\n this.parent.on(events.beforeCellFocused, this.beforeCellFocused, this);\n this.parent.on(events.destroy, this.droppableDestroy, this);\n }\n ContentRender.prototype.beforeCellFocused = function (e) {\n if (e.byKey && (e.keyArgs.action === 'upArrow' || e.keyArgs.action === 'downArrow')) {\n this.pressedKey = e.keyArgs.action;\n }\n else {\n this.pressedKey = undefined;\n }\n };\n /**\n * The function is used to render grid content div\n *\n * @returns {void}\n */\n ContentRender.prototype.renderPanel = function () {\n var gObj = this.parent;\n var div = this.parent.element.querySelector('.' + literals.gridContent);\n if (div) {\n this.ariaService.setOptions(this.parent.element.querySelector('.' + literals.content), { busy: false });\n this.setPanel(div);\n return;\n }\n div = this.parent.createElement('div', { className: literals.gridContent });\n var innerDiv = this.parent.createElement('div', {\n className: literals.content\n });\n this.ariaService.setOptions(innerDiv, { busy: false });\n if (this.parent.enableColumnVirtualization && this.parent.isFrozenGrid()) {\n this.renderHorizontalScrollbar(div);\n innerDiv.classList.add('e-virtual-content');\n }\n div.appendChild(innerDiv);\n this.setPanel(div);\n gObj.element.appendChild(div);\n };\n ContentRender.prototype.renderHorizontalScrollbar = function (element) {\n var parent = this.parent.createElement('div', { className: 'e-movablescrollbar' });\n var child = this.parent.createElement('div', { className: 'e-movablechild' });\n var scrollbarHeight = getScrollBarWidth().toString();\n this.setScrollbarHeight(child, scrollbarHeight);\n this.setScrollbarHeight(parent, scrollbarHeight);\n parent.appendChild(child);\n element.appendChild(parent);\n };\n ContentRender.prototype.setScrollbarHeight = function (ele, height) {\n ele.style.minHeight = height + 'px';\n ele.style.maxHeight = height + 'px';\n };\n /**\n * The function is used to render grid content table\n *\n * @returns {void}\n */\n ContentRender.prototype.renderTable = function () {\n var contentDiv = this.getPanel();\n var virtualTable = contentDiv.querySelector('.e-virtualtable');\n var virtualTrack = contentDiv.querySelector('.e-virtualtrack');\n if (this.parent.enableVirtualization && !isNullOrUndefined(virtualTable) && !isNullOrUndefined(virtualTrack)) {\n remove(virtualTable);\n remove(virtualTrack);\n }\n contentDiv.appendChild(this.createContentTable('_content_table'));\n this.setTable(contentDiv.querySelector('.' + literals.table));\n if (this.parent.selectionSettings.type === 'Multiple') {\n this.ariaService.setOptions(this.parent.element, {\n multiselectable: true\n });\n }\n this.initializeContentDrop();\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().classList.add('e-frozenhdr');\n }\n };\n /**\n * The function is used to create content table elements\n *\n * @param {string} id - specifies the id\n * @returns {Element} returns the element\n * @hidden\n */\n ContentRender.prototype.createContentTable = function (id) {\n var innerDiv = this.getPanel().firstElementChild;\n if (this.getTable()) {\n remove(this.getTable());\n }\n var table = innerDiv.querySelector('.' + literals.table) ? innerDiv.querySelector('.' + literals.table) :\n this.parent.createElement('table', {\n className: literals.table, attrs: {\n cellspacing: '0.25px', role: 'presentation',\n id: this.parent.element.id + id\n }\n });\n this.setColGroup(this.parent.getHeaderTable().querySelector(literals.colGroup).cloneNode(true));\n table.appendChild(this.getColGroup());\n table.appendChild(this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }));\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * Refresh the content of the Grid.\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n // tslint:disable-next-line:max-func-body-length\n ContentRender.prototype.refreshContentRows = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n if (gObj.currentViewData.length === 0) {\n return;\n }\n if (gObj.editSettings && gObj.editModule && gObj.editSettings.mode === 'Batch' && gObj.editModule.formObj\n && gObj.editSettings.showConfirmDialog === false) {\n gObj.editModule.destroyForm();\n }\n var dataSource = this.currentMovableRows || gObj.currentViewData;\n var isReact = gObj.isReact && !isNullOrUndefined(gObj.rowTemplate);\n var frag = isReact ? gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n if (!this.initialPageRecords) {\n this.initialPageRecords = extend([], dataSource);\n }\n var hdrfrag = isReact ? gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n var refFrag;\n var refHdrfrag;\n if (gObj.isReact && gObj.rowTemplate) {\n refFrag = frag;\n refHdrfrag = hdrfrag;\n }\n var columns = gObj.getColumns();\n var tr;\n var hdrTbody;\n var trElement;\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInfiniteScroll = this.parent.enableInfiniteScrolling\n && args.requestType === 'infiniteScroll';\n gObj.notify(events.destroyChildGrid, {});\n this.rowElements = [];\n this.rows = [];\n this.tempFreezeRows = [];\n var tbdy;\n var tableName;\n var isGroupFrozenHdr = this.parent.frozenRows && this.parent.groupSettings.columns.length ? true : false;\n if (isGroupAdaptive(gObj)) {\n if (['sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder', 'save', 'delete']\n .some(function (value) { return args.requestType === value; })) {\n this.emptyVcRows();\n }\n }\n var modelData;\n modelData = this.checkCache(modelData, args);\n if (!this.isAddRows && !this.useGroupCache) {\n modelData = this.generator.generateRows(dataSource, args);\n }\n this.setGroupCache(modelData, args);\n this.parent.notify(events.setInfiniteCache, { isInfiniteScroll: isInfiniteScroll, modelData: modelData, args: args });\n var isFrozenLeft = false;\n /* eslint-disable */\n if (!(args.requestType === 'infiniteScroll' && !this.parent.infiniteScrollSettings.enableCache) && this.parent.registeredTemplate\n && this.parent.registeredTemplate.template && !args.isFrozen && !isFrozenLeft) {\n var templatetoclear = [];\n for (var i = 0; i < this.parent.registeredTemplate.template.length; i++) {\n for (var j = 0; j < this.parent.registeredTemplate.template[i].rootNodes.length; j++) {\n if (isNullOrUndefined(this.parent.registeredTemplate.template[i].rootNodes[j].parentNode)) {\n templatetoclear.push(this.parent.registeredTemplate.template[i]);\n /* eslint-enable */\n }\n }\n }\n this.parent.destroyTemplate(['template'], templatetoclear);\n }\n if ((this.parent.isReact || this.parent.isVue) && !(args.requestType === 'infiniteScroll' && !this.parent.infiniteScrollSettings.enableCache) && !args.isFrozen) {\n var templates = [\n this.parent.isVue ? 'template' : 'columnTemplate', 'rowTemplate', 'detailTemplate',\n 'captionTemplate', 'commandsTemplate', 'groupFooterTemplate', 'groupCaptionTemplate'\n ];\n if (args.requestType === 'infiniteScroll' && this.parent.infiniteScrollSettings.enableCache) {\n templates = [\n this.parent.isVue ? 'template' : 'columnTemplate', 'commandsTemplate'\n ];\n }\n clearReactVueTemplates(this.parent, templates);\n }\n if (this.parent.enableColumnVirtualization) {\n var cellMerge = new CellMergeRender(this.serviceLocator, this.parent);\n cellMerge.updateVirtualCells(modelData);\n }\n this.tbody = this.getTable().querySelector(literals.tbody);\n var startIndex = 0;\n var blockLoad = true;\n if (isGroupAdaptive(gObj) && gObj.vcRows.length) {\n var top_1 = 'top';\n var scrollTop = !isNullOrUndefined(args.virtualInfo.offsets) ? args.virtualInfo.offsets.top :\n (!isNullOrUndefined(args.scrollTop) ? args.scrollTop[\"\" + top_1] : 0);\n if (scrollTop !== 0) {\n var offsets_1 = gObj.vGroupOffsets;\n var bSize = gObj.pageSettings.pageSize / 2;\n var values = Object.keys(offsets_1).map(function (key) { return offsets_1[\"\" + key]; });\n for (var m = 0; m < values.length; m++) {\n if (scrollTop < values[parseInt(m.toString(), 10)]) {\n if (!isNullOrUndefined(args.virtualInfo) && args.virtualInfo.direction === 'up') {\n startIndex = m > 0 ? ((m - 1) * bSize) : (m * bSize);\n break;\n }\n else {\n startIndex = m * bSize;\n if (this.parent.contentModule.isEndBlock(m) || this.parent.contentModule.isEndBlock(m + 1)) {\n args.virtualInfo.blockIndexes = [m, m + 1];\n }\n break;\n }\n }\n }\n if (Math.round(scrollTop + this.contentPanel.firstElementChild.offsetHeight) >=\n this.contentPanel.firstElementChild.scrollHeight && !args.rowObject) {\n blockLoad = false;\n }\n }\n }\n var isVFFrozenOnly = gObj.frozenRows && this.parent.enableVirtualization\n && args.requestType === 'reorder';\n if ((gObj.frozenRows && args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo.axis === 'X') || isVFFrozenOnly) {\n var bIndex = args.virtualInfo.blockIndexes;\n var page = args.virtualInfo.page;\n args.virtualInfo.blockIndexes = [1, 2];\n if (isVFFrozenOnly) {\n args.virtualInfo.page = 1;\n }\n var data = isVFFrozenOnly ? this.initialPageRecords : dataSource;\n var mhdrData = this.vgenerator\n .generateRows(data, args);\n mhdrData.splice(this.parent.frozenRows);\n for (var i = 0; i < this.parent.frozenRows; i++) {\n // mhdrData[parseInt(i.toString(), 10)].cells.splice(0, this.parent.getFrozenColumns());\n tr = row.render(mhdrData[parseInt(i.toString(), 10)], columns);\n addFixedColumnBorder(tr);\n hdrfrag.appendChild(tr);\n }\n args.virtualInfo.blockIndexes = bIndex;\n args.virtualInfo.page = page;\n if (isVFFrozenOnly && args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n }\n this.virtualFrozenHdrRefresh(hdrfrag, modelData, row, args, dataSource, columns);\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).refRowsObj[this.parent.pageSettings.currentPage] = [];\n }\n if (this.parent.enableInfiniteScrolling && this.parent.groupSettings.enableLazyLoading && args.requestType === 'delete') { // || (this.parent.infiniteScrollSettings && this.parent.infiniteScrollSettings.enableCache))\n this.visibleRows = [];\n }\n var _loop_1 = function (i, len) {\n this_1.rows.push(modelData[parseInt(i.toString(), 10)]);\n if (this_1.parent.groupSettings.enableLazyLoading && !this_1.useGroupCache && this_1.parent.groupSettings.columns.length) {\n (this_1.parent.enableVirtualization ? this_1.parent.lazyLoadRender :\n this_1.parent.contentModule).refRowsObj[this_1.parent.pageSettings.currentPage].push(modelData[parseInt(i.toString(), 10)]);\n this_1.setRowsInLazyGroup(modelData[parseInt(i.toString(), 10)], i);\n if (isNullOrUndefined(modelData[parseInt(i.toString(), 10)].indent)) {\n return \"continue\";\n }\n }\n this_1.setInfiniteVisibleRows(args, modelData[parseInt(i.toString(), 10)]);\n if (isGroupAdaptive(gObj) && args.virtualInfo && args.virtualInfo.blockIndexes\n && (this_1.rowElements.length >= (args.virtualInfo.blockIndexes.length * this_1.parent.contentModule.getBlockSize()))\n && blockLoad) {\n this_1.parent.currentViewData['records'] = this_1.rows.map(function (m) { return m.data; });\n return \"break\";\n }\n if (!gObj.rowTemplate) {\n tr = row.render(modelData[parseInt(i.toString(), 10)], columns);\n addFixedColumnBorder(tr);\n var isVFreorder = this_1.ensureFrozenHeaderRender(args);\n if (gObj.frozenRows && (i < gObj.frozenRows || isGroupFrozenHdr) && !isInfiniteScroll && args.requestType !== 'virtualscroll' && isVFreorder\n && this_1.ensureVirtualFrozenHeaderRender(args)) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n var rowIdx = parseInt(tr.getAttribute('data-rowindex'), 10);\n if (rowIdx + 1 === gObj.frozenRows) {\n isGroupFrozenHdr = false;\n }\n if (modelData[parseInt(i.toString(), 10)].isExpand) {\n gObj.notify(events.expandChildGrid, tr.cells[gObj.groupSettings.columns.length]);\n }\n }\n else {\n var rowTemplateID = gObj.element.id + 'rowTemplate';\n var elements = void 0;\n if (gObj.isReact) {\n var isHeader = gObj.frozenRows && i < gObj.frozenRows;\n var copied = extend({ index: i }, dataSource[parseInt(i.toString(), 10)]);\n gObj.getRowTemplate()(copied, gObj, 'rowTemplate', rowTemplateID, null, null, isHeader ? hdrfrag : frag);\n if (gObj.requireTemplateRef) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this_1;\n thisRef_2.parent.renderTemplates(function () {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = refHdrfrag.childNodes[parseInt(i.toString(), 10)];\n }\n else {\n trElement = refFrag.childNodes[parseInt(i.toString(), 10)];\n }\n var arg = { data: modelData[parseInt(i.toString(), 10)].data,\n row: trElement ? trElement : tr };\n thisRef_2.parent.trigger(events.rowDataBound, arg);\n if (modelData[parseInt(i.toString(), 10)].isDataRow || (thisRef_2.parent.enableVirtualization &&\n thisRef_2.parent.groupSettings.enableLazyLoading)) {\n thisRef_2.rowElements.push(tr);\n }\n thisRef_2.ariaService.setOptions(thisRef_2.parent.element, {\n colcount: gObj.getColumns().length.toString()\n });\n if (i === modelData.length - 1) {\n refFrag = null;\n refHdrfrag = null;\n }\n });\n return \"continue\";\n }\n }\n else {\n elements = gObj.getRowTemplate()(extend({ index: i }, dataSource[parseInt(i.toString(), 10)]), gObj, 'rowTemplate', rowTemplateID, undefined, undefined, undefined, this_1.parent['root']);\n }\n if (!gObj.isReact && elements[0].tagName === 'TBODY') {\n for (var j = 0; j < elements.length; j++) {\n var isTR = elements[parseInt(j.toString(), 10)].nodeName.toLowerCase() === 'tr';\n if (isTR || (elements[parseInt(j.toString(), 10)].querySelectorAll && elements[parseInt(j.toString(), 10)].querySelectorAll('tr').length)) {\n tr = isTR ? elements[parseInt(j.toString(), 10)] : elements[parseInt(j.toString(), 10)].querySelector('tr');\n }\n }\n if (gObj.frozenRows && i < gObj.frozenRows) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n }\n else {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = !gObj.isReact ? appendChildren(hdrfrag, elements) : hdrfrag.lastElementChild;\n }\n else {\n // frag.appendChild(tr);\n if (!gObj.isReact) {\n tr = appendChildren(frag, elements);\n }\n trElement = gObj.isReact ? frag.lastElementChild : tr.lastElementChild;\n }\n }\n var arg = { data: modelData[parseInt(i.toString(), 10)].data, row: trElement ? trElement : tr };\n this_1.parent.trigger(events.rowDataBound, arg);\n }\n if (modelData[parseInt(i.toString(), 10)].isDataRow || (this_1.parent.enableVirtualization &&\n this_1.parent.groupSettings.enableLazyLoading)) {\n this_1.rowElements.push(tr);\n }\n this_1.ariaService.setOptions(this_1.parent.element, { colcount: gObj.getColumns().length.toString() });\n };\n var this_1 = this;\n for (var i = startIndex, len = modelData.length; i < len; i++) {\n var state_1 = _loop_1(i, len);\n if (state_1 === \"break\")\n break;\n }\n var isReactChild = gObj.parentDetails && gObj.parentDetails.parentInstObj && gObj.parentDetails.parentInstObj.isReact;\n if ((gObj.isReact || isReactChild) && !gObj.requireTemplateRef) {\n gObj.renderTemplates();\n }\n if (this.parent.enableInfiniteScrolling && this.parent.groupSettings.enableLazyLoading) {\n this.parent.contentModule.refRowsObj[this.parent.pageSettings.currentPage] =\n this.parent.contentModule['groupCache'][this.parent.pageSettings.currentPage];\n }\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n this.parent.notify(events.refreshExpandandCollapse, {\n rows: (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).refRowsObj[this.parent.pageSettings.currentPage]\n });\n }\n gObj.removeMaskRow();\n this.parent.notify('removeGanttShimmer', { requestType: 'hideShimmer' });\n if ((gObj.frozenRows && args.requestType !== 'virtualscroll' && !isInfiniteScroll && this.ensureVirtualFrozenHeaderRender(args))\n || (args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo && args.virtualInfo.sentinelInfo.axis === 'X')) {\n hdrTbody = gObj.getHeaderTable().querySelector(literals.tbody);\n if (isReact) {\n var parentTable = hdrTbody.parentElement;\n remove(hdrTbody);\n parentTable.appendChild(hdrfrag);\n }\n else {\n hdrTbody.innerHTML = '';\n hdrTbody.appendChild(hdrfrag);\n }\n if (!gObj.isInitialLoad) {\n gObj.scrollModule.setHeight();\n }\n }\n // if (!gObj.enableVirtualization && hdrTbody && gObj.frozenRows && idx === 0 && cont.offsetHeight === Number(gObj.height)) {\n // cont.style.height = (cont.offsetHeight - hdrTbody.offsetHeight) + 'px';\n // }\n args.rows = this.rows.slice(0);\n getUpdateUsingRaf(function () {\n _this.parent.notify(events.beforeFragAppend, args);\n if (!_this.parent.enableVirtualization && !_this.parent.enableColumnVirtualization && !isInfiniteScroll) {\n if (!gObj.isReact) {\n _this.tbody.innerHTML = '';\n }\n if (!isNullOrUndefined(_this.tbody.parentElement)) {\n remove(_this.tbody);\n }\n else {\n remove(gObj.getContentTable().querySelector(literals.tbody));\n }\n _this.tbody = _this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n }\n if (gObj.rowTemplate) {\n updateBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate', gObj);\n }\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.isAddRows = false;\n _this.parent.notify(events.removeInfiniteRows, { args: args });\n _this.parent.notify(events.appendInfiniteContent, {\n tbody: tbdy ? tbdy : _this.tbody, frag: frag, args: args, rows: _this.rows,\n rowElements: _this.rowElements, visibleRows: _this.visibleRows,\n tableName: tableName\n });\n }\n else {\n _this.useGroupCache = false;\n _this.appendContent(_this.tbody, frag, args);\n }\n if (_this.parent.getVisibleFrozenRightCount() && _this.parent.getContent() && getScrollWidth(_this.parent) > 0) {\n _this.parent.element.classList.add('e-right-shadow');\n }\n frag = null;\n }, this.rafCallback(extend({}, args)));\n };\n ContentRender.prototype.emptyVcRows = function () {\n this.parent.vcRows = [];\n this.parent.vRows = [];\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ContentRender.prototype.appendContent = function (tbody, frag, args, tableName) {\n var isReact = this.parent.isReact && !isNullOrUndefined(this.parent.rowTemplate);\n if (isReact) {\n this.getTable().appendChild(frag);\n }\n else {\n tbody.appendChild(frag);\n this.getTable().appendChild(tbody);\n }\n if (this.parent.rowRenderingMode === 'Vertical' && this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Header'\n || this.parent.textWrapSettings.wrapMode === 'Both')) {\n var cells = tbody.querySelectorAll('td');\n for (var i = 0; i < cells.length; i++) {\n var headerCellHeight = parseFloat(document.defaultView.getComputedStyle(cells[parseInt(i.toString(), 10)], '::before').getPropertyValue('height'));\n var cellHeight = cells[parseInt(i.toString(), 10)].offsetHeight;\n if (headerCellHeight > cellHeight) {\n cells[parseInt(i.toString(), 10)].style.height = headerCellHeight + 'px';\n cells[parseInt(i.toString(), 10)].style.boxSizing = 'content-box';\n }\n }\n }\n if (this.parent.getVisibleFrozenLeftCount() && this.parent.enableColumnVirtualization) {\n this.widthService.refreshFrozenScrollbar();\n }\n };\n ContentRender.prototype.setRowsInLazyGroup = function (row, index) {\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).maintainRows(row, index);\n }\n };\n ContentRender.prototype.setGroupCache = function (data, args) {\n if (!this.useGroupCache && this.parent.groupSettings.enableLazyLoading) {\n this.parent.notify(events.setGroupCache, { args: args, data: data });\n }\n };\n ContentRender.prototype.ensureFrozenHeaderRender = function (args) {\n return !((this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) || (this.parent.infiniteScrollSettings.enableCache\n && this.parent.frozenRows && this.parent.infiniteScrollModule.requestType === 'delete'\n && this.parent.pageSettings.currentPage !== 1));\n };\n ContentRender.prototype.ensureVirtualFrozenHeaderRender = function (args) {\n return !(this.parent.enableVirtualization && args.requestType === 'delete');\n };\n ContentRender.prototype.checkCache = function (modelData, args) {\n if (this.parent.infiniteScrollSettings.enableCache && args.requestType === 'infiniteScroll') {\n this.isAddRows = !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage]);\n if (this.isAddRows) {\n var data = this.infiniteCache[this.parent.pageSettings.currentPage];\n modelData = this.parent.pageSettings.currentPage === 1 ? data.slice(this.parent.frozenRows) : data;\n }\n return modelData;\n }\n if (this.parent.groupSettings.enableLazyLoading && this.parent.groupSettings.columns.length && (args.requestType === 'paging'\n || args.requestType === 'columnstate' || args.requestType === 'reorder' || args.requestType === 'virtualscroll')\n && (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).getGroupCache()[this.parent.pageSettings.currentPage]) {\n if (!this.parent.enableVirtualization) {\n this.useGroupCache = true;\n }\n return this.parent.enableVirtualization ? this.parent.getRowsObject() :\n this.parent.contentModule.initialGroupRows(args.requestType === 'reorder');\n }\n return null;\n };\n ContentRender.prototype.setInfiniteVisibleRows = function (args, data) {\n if (this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache) {\n if (!this.parent.infiniteScrollSettings.enableCache) {\n this.visibleRows.push(data);\n }\n }\n };\n ContentRender.prototype.getCurrentBlockInfiniteRecords = function () {\n var data = [];\n if (this.parent.infiniteScrollSettings.enableCache) {\n if (!Object.keys(this.infiniteCache).length) {\n return [];\n }\n var rows = this.parent.getRows();\n var index = parseInt(rows[this.parent.frozenRows].getAttribute(literals.dataRowIndex), 10);\n var first = Math.ceil((index + 1) / this.parent.pageSettings.pageSize);\n index = parseInt(rows[rows.length - 1].getAttribute(literals.dataRowIndex), 10);\n var last = Math.ceil((index + (rows.length ? 1 : 0)) / this.parent.pageSettings.pageSize);\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[parseInt(i.toString(), 10)]\n : data.concat(this.infiniteCache[parseInt(i.toString(), 10)]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1].slice(0, this.parent.frozenRows).concat(data);\n }\n }\n return data;\n };\n ContentRender.prototype.getReorderedRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n };\n ContentRender.prototype.virtualFrozenHdrRefresh = function (hdrfrag, modelData, row, args, dataSource, columns) {\n if (this.parent.frozenRows && this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) {\n var tr = void 0;\n var fhdrData = this.getReorderedRows(args);\n for (var i = 0; i < fhdrData.length; i++) {\n tr = row.render(fhdrData[parseInt(i.toString(), 10)], columns);\n hdrfrag.appendChild(tr);\n }\n if (args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n }\n };\n ContentRender.prototype.getInfiniteRows = function () {\n var rows = [];\n if (this.parent.enableInfiniteScrolling) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var keys = Object.keys(this.infiniteCache);\n for (var i = 0; i < keys.length; i++) {\n rows = rows.concat(this.infiniteCache[keys[parseInt(i.toString(), 10)]]);\n }\n }\n else {\n rows = this.visibleRows;\n }\n }\n return rows;\n };\n ContentRender.prototype.getInfiniteMovableRows = function () {\n var infiniteCacheRows = this.getCurrentBlockInfiniteRecords();\n var infiniteRows = this.parent.enableInfiniteScrolling ? infiniteCacheRows.length ? infiniteCacheRows\n : this.visibleRows : [];\n return infiniteRows;\n };\n /**\n * Get the content div element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getPanel = function () {\n return this.contentPanel;\n };\n /**\n * Set the content div element of grid\n *\n * @param {Element} panel - specifies the panel\n * @returns {void}\n */\n ContentRender.prototype.setPanel = function (panel) {\n this.contentPanel = panel;\n };\n /**\n * Get the content table element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getTable = function () {\n return this.contentTable;\n };\n /**\n * Set the content table element of grid\n *\n * @param {Element} table - specifies the table\n * @returns {void}\n */\n ContentRender.prototype.setTable = function (table) {\n this.contentTable = table;\n };\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row\n */\n ContentRender.prototype.getRows = function () {\n var infiniteRows = this.getInfiniteRows();\n return infiniteRows.length ? infiniteRows : this.rows;\n };\n /**\n * Get the content table data row elements\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getRowElements = function () {\n return this.rowElements;\n };\n /**\n * Get the content table data row elements\n *\n * @param {Element[]} elements - specifies the elements\n * @returns {void}\n */\n ContentRender.prototype.setRowElements = function (elements) {\n this.rowElements = elements;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n ContentRender.prototype.setColGroup = function (colGroup) {\n if (!isNullOrUndefined(colGroup)) {\n colGroup.id = 'content-' + colGroup.id;\n }\n return this.colgroup = colGroup;\n };\n /**\n * Function to hide content table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n ContentRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var rows = this.getRows();\n var testRow;\n rows.some(function (r) { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n var needFullRefresh = true;\n if (!gObj.groupSettings.columns.length && testRow) {\n needFullRefresh = false;\n }\n var tr = gObj.getDataRows();\n var args = {};\n var infiniteData = this.infiniteRowVisibility();\n var contentrows = infiniteData ? infiniteData\n : this.rows.filter(function (row) { return !row.isDetailRow; });\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n var idx = this.parent.getNormalizedColumnIndex(column.uid);\n var colIdx = this.parent.getColumnIndexByUid(column.uid);\n var displayVal = column.visible === true ? '' : 'none';\n if (idx !== -1 && testRow && idx < testRow.cells.length) {\n setStyleAttribute(this.getColGroup().childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n if (!needFullRefresh) {\n this.setDisplayNone(tr, colIdx, displayVal, contentrows);\n }\n if (!this.parent.invokedFromMedia && column.hideAtMedia) {\n this.parent.updateMediaColumns(column);\n }\n this.parent.invokedFromMedia = false;\n }\n if (needFullRefresh) {\n this.refreshContentRows({ requestType: 'refresh' });\n }\n else {\n this.parent.notify(events.partialRefresh, { rows: contentrows, args: args });\n }\n };\n /**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.setDisplayNone = function (tr, idx, displayVal, rows) {\n setDisplayValue(tr, idx, displayVal, rows, this.parent, this.parent.isRowDragable());\n this.parent.notify(events.infiniteShowHide, { visible: displayVal, index: idx, isFreeze: this.isInfiniteFreeze });\n };\n ContentRender.prototype.infiniteRowVisibility = function (isFreeze) {\n var infiniteData;\n if (this.parent.enableInfiniteScrolling) {\n this.isInfiniteFreeze = isFreeze;\n if (this.parent.infiniteScrollSettings.enableCache) {\n infiniteData = isFreeze ? this.getCurrentBlockInfiniteRecords() : this.getCurrentBlockInfiniteRecords();\n }\n else {\n infiniteData = isFreeze ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return infiniteData;\n };\n ContentRender.prototype.colGroupRefresh = function () {\n if (this.getColGroup()) {\n var colGroup = this.getHeaderColGroup();\n this.getTable().replaceChild(colGroup, this.getColGroup());\n this.setColGroup(colGroup);\n }\n };\n ContentRender.prototype.getHeaderColGroup = function () {\n return this.parent.element.querySelector('.' + literals.gridHeader)\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').cloneNode(true);\n };\n ContentRender.prototype.initializeContentDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.element, {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n ContentRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n };\n ContentRender.prototype.canSkip = function (column, row, index) {\n /**\n * Skip the toggle visiblity operation when one of the following success\n * 1. Grid has empty records\n * 2. column visible property is unchanged\n * 3. cell`s isVisible property is same as column`s visible property.\n */\n return isNullOrUndefined(row) || //(1)\n isNullOrUndefined(column.visible) || //(2)\n row.cells[parseInt(index.toString(), 10)].visible === column.visible; //(3)\n };\n ContentRender.prototype.getModelGenerator = function () {\n return this.generator = this.parent.allowGrouping ? new GroupModelGenerator(this.parent) : new RowModelGenerator(this.parent);\n };\n ContentRender.prototype.renderEmpty = function (tbody) {\n this.getTable().appendChild(tbody);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector(literals.tbody).innerHTML = '';\n }\n };\n ContentRender.prototype.setSelection = function (uid, set, clearAll) {\n this.parent.notify(events.setFreezeSelection, { uid: uid, set: set, clearAll: clearAll });\n var row = this.getRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var j = 0; j < row.length; j++) {\n row[parseInt(j.toString(), 10)].isSelected = set;\n var cells = row[parseInt(j.toString(), 10)].cells;\n for (var k = 0; k < cells.length; k++) {\n cells[parseInt(k.toString(), 10)].isSelected = set;\n }\n }\n };\n ContentRender.prototype.getRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return !isNullOrUndefined(index) ? this.parent.getDataRows()[parseInt(index.toString(), 10)] : undefined;\n };\n ContentRender.prototype.getInfiniteRowIndex = function (index) {\n if (this.parent.infiniteScrollSettings.enableCache && !isNullOrUndefined(index)) {\n var fRows = this.parent.frozenRows;\n var idx = fRows > index ? 0 : fRows;\n var firstRowIndex = parseInt(this.parent.getRows()[parseInt(idx.toString(), 10)]\n .getAttribute(literals.dataRowIndex), 10);\n index = fRows > index ? index : (index - firstRowIndex) + fRows;\n }\n return index;\n };\n ContentRender.prototype.getVirtualRowIndex = function (index) {\n return index;\n };\n ContentRender.prototype.enableAfterRender = function (e) {\n if (e.module === 'group' && e.enable) {\n this.generator = this.getModelGenerator();\n }\n };\n ContentRender.prototype.setRowObjects = function (rows) {\n this.rows = rows;\n };\n /**\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.immutableModeRendering = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n gObj.hideSpinner();\n var key = gObj.getPrimaryKeyFieldNames()[0];\n var oldKeys = {};\n var newKeys = {};\n var newRowObjs = [];\n var oldIndexes = {};\n var oldRowObjs = gObj.getRowsObject().slice();\n var batchChangeKeys = this.getBatchEditedRecords(key, oldRowObjs);\n var newIndexes = {};\n var hasBatch = Object.keys(batchChangeKeys).length !== 0;\n if (gObj.getContent().querySelector('.e-emptyrow') || args.requestType === 'reorder'\n || this.parent.groupSettings.columns.length) {\n this.refreshContentRows(args);\n }\n else {\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var oldRowElements = {};\n var tbody = gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var dataSource = gObj.currentViewData;\n var trs = [].slice.call(this.getTable().querySelector(literals.tbody).children);\n if (this.prevCurrentView.length) {\n var prevLen = this.prevCurrentView.length;\n var currentLen = dataSource.length;\n if (prevLen === currentLen) {\n for (var i = 0; i < currentLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n newKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]] = oldKeys[this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key]] = i;\n newIndexes[parseInt(i.toString(), 10)] = dataSource[parseInt(i.toString(), 10)][\"\" + key];\n oldRowElements[oldRowObjs[parseInt(i.toString(), 10)].uid] = trs[parseInt(i.toString(), 10)];\n oldIndexes[parseInt(i.toString(), 10)] = this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key];\n }\n }\n else {\n for (var i = 0; i < currentLen; i++) {\n newKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]] = i;\n newIndexes[parseInt(i.toString(), 10)] = dataSource[parseInt(i.toString(), 10)][\"\" + key];\n }\n for (var i = 0; i < prevLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n oldRowElements[oldRowObjs[parseInt(i.toString(), 10)].uid] = trs[parseInt(i.toString(), 10)];\n oldKeys[this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key]] = i;\n oldIndexes[parseInt(i.toString(), 10)] = this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key];\n }\n }\n }\n for (var i = 0; i < dataSource.length; i++) {\n var oldIndex = oldKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]];\n if (!isNullOrUndefined(oldIndex)) {\n var isEqual = false;\n if (this.parent.enableDeepCompare) {\n isEqual = this.objectEqualityChecker(this.prevCurrentView[parseInt(oldIndex.toString(), 10)], dataSource[parseInt(i.toString(), 10)]);\n }\n var tr = oldRowElements[oldRowObjs[parseInt(oldIndex.toString(), 10)]\n .uid];\n newRowObjs.push(oldRowObjs[parseInt(oldIndex.toString(), 10)]);\n if (this.rowElements[parseInt(oldIndex.toString(), 10)] && this.rowElements[parseInt(oldIndex.toString(), 10)].getAttribute('data-uid') === newRowObjs[parseInt(i.toString(), 10)].uid\n && ((hasBatch && isNullOrUndefined(batchChangeKeys[newIndexes[parseInt(i.toString(), 10)]]))\n || (!hasBatch && (isEqual\n || this.prevCurrentView[parseInt(oldIndex.toString(), 10)] === dataSource[parseInt(i.toString(), 10)])))) {\n if (oldIndex !== i) {\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n tbody.appendChild(tr);\n continue;\n }\n if ((hasBatch && !isNullOrUndefined(batchChangeKeys[newIndexes[parseInt(i.toString(), 10)]]))\n || (!this.parent.enableDeepCompare\n && dataSource[parseInt(i.toString(), 10)] !== this.prevCurrentView[parseInt(oldIndex.toString(), 10)])\n || (this.parent.enableDeepCompare && !isEqual)) {\n oldRowObjs[parseInt(oldIndex.toString(), 10)].setRowValue(dataSource[parseInt(i.toString(), 10)]);\n }\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n else {\n var row = new RowRenderer(this.serviceLocator, null, gObj);\n var args_1 = { startIndex: i };\n var modelData = this.generator.generateRows([dataSource[parseInt(i.toString(), 10)]], args_1);\n newRowObjs.push(modelData[0]);\n var tr = row.render(modelData[0], gObj.getColumns());\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n }\n this.rows = newRowObjs;\n this.rowElements = [].slice.call(tbody.children);\n remove(this.getTable().querySelector(literals.tbody));\n this.getTable().appendChild(tbody);\n this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n this.parent.notify(action, args);\n }\n }\n };\n ContentRender.prototype.objectEqualityChecker = function (old, next) {\n var keys = Object.keys(old);\n var isEqual = true;\n for (var i = 0; i < keys.length; i++) {\n if (old[keys[parseInt(i.toString(), 10)]] !== next[keys[parseInt(i.toString(), 10)]]) {\n var isDate = old[keys[parseInt(i.toString(), 10)]] instanceof Date\n && next[keys[parseInt(i.toString(), 10)]] instanceof Date;\n if (!isDate || (old[keys[parseInt(i.toString(), 10)]]\n .getTime() !== next[keys[parseInt(i.toString(), 10)]].getTime())) {\n isEqual = false;\n break;\n }\n }\n }\n return isEqual;\n };\n ContentRender.prototype.getBatchEditedRecords = function (primaryKey, rows) {\n var keys = {};\n var changes = this.parent.getBatchChanges();\n var changedRecords = [];\n var addedRecords = [];\n if (Object.keys(changes).length) {\n changedRecords = changes.changedRecords;\n addedRecords = changes.addedRecords;\n }\n var args = { cancel: false };\n this.parent.notify(events.immutableBatchCancel, { rows: rows, args: args });\n if (addedRecords.length) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n rows.splice(rows.length - 1, addedRecords.length);\n }\n else {\n if (!args.cancel) {\n rows.splice(0, addedRecords.length);\n }\n }\n }\n for (var i = 0; i < changedRecords.length; i++) {\n keys[changedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey]] = i;\n }\n return keys;\n };\n ContentRender.prototype.refreshImmutableContent = function (index, tr, row) {\n row.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n if (row.isAltRow) {\n tr.classList.add('e-altrow');\n }\n else {\n tr.classList.remove('e-altrow');\n }\n row.index = index;\n row.edit = undefined;\n row.isDirty = false;\n tr.setAttribute(literals.dataRowIndex, index.toString());\n tr.setAttribute(literals.ariaRowIndex, (index + 1).toString());\n this.updateCellIndex(tr, index);\n };\n ContentRender.prototype.updateCellIndex = function (rowEle, index) {\n for (var i = 0; i < rowEle.cells.length; i++) {\n rowEle.cells[parseInt(i.toString(), 10)].setAttribute('index', index.toString());\n }\n };\n return ContentRender;\n}());\nexport { ContentRender };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { isNullOrUndefined, extend, setValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { getForeignData, getUid } from '../../grid/base/util';\n/**\n * GroupModelGenerator is used to generate group caption rows and data rows.\n *\n * @hidden\n */\nvar GroupModelGenerator = /** @class */ (function (_super) {\n __extends(GroupModelGenerator, _super);\n function GroupModelGenerator(parent) {\n var _this = _super.call(this, parent) || this;\n _this.rows = [];\n /** @hidden */\n _this.index = 0;\n _this.infiniteChildCount = 0;\n _this.renderInfiniteAgg = true;\n _this.parent = parent;\n _this.summaryModelGen = new GroupSummaryModelGenerator(parent);\n _this.captionModelGen = new CaptionSummaryModelGenerator(parent);\n return _this;\n }\n GroupModelGenerator.prototype.generateRows = function (data, args) {\n if (this.parent.groupSettings.columns.length === 0) {\n return _super.prototype.generateRows.call(this, data, args);\n }\n this.isInfiniteScroll = (args.requestType === 'infiniteScroll');\n this.rows = [];\n this.index = this.parent.enableVirtualization || this.isInfiniteScroll ? args.startIndex : 0;\n for (var i = 0, len = data.length; i < len; i++) {\n this.infiniteChildCount = 0;\n this.renderInfiniteAgg = true;\n this.getGroupedRecords(0, data[parseInt(i.toString(), 10)], data.level, i, undefined, this.rows.length);\n }\n this.index = 0;\n if (this.parent.isCollapseStateEnabled()) {\n this.ensureRowVisibility();\n }\n return this.rows;\n };\n GroupModelGenerator.prototype.getGroupedRecords = function (index, data, raw, parentid, childId, tIndex, parentUid) {\n var _a;\n var level = raw;\n if (isNullOrUndefined(data.items)) {\n if (isNullOrUndefined(data.GroupGuid)) {\n this.rows = this.rows.concat(this.generateDataRows(data, index, parentid, this.rows.length, parentUid));\n }\n else {\n for (var j = 0, len = data.length; j < len; j++) {\n this.getGroupedRecords(index, data[parseInt(j.toString(), 10)], data.level, parentid, index, this.rows.length, parentUid);\n }\n }\n }\n else {\n var preCaption = void 0;\n var captionRow = this.generateCaptionRow(data, index, parentid, childId, tIndex, parentUid);\n if (this.isInfiniteScroll) {\n preCaption = this.getPreCaption(index, captionRow.data.key);\n }\n if (!preCaption) {\n this.rows = this.rows.concat(captionRow);\n }\n else {\n captionRow.uid = preCaption.uid;\n }\n if (data.items && data.items.length) {\n this.getGroupedRecords(index + 1, data.items, data.items.level, parentid, index + 1, this.rows.length, captionRow.uid);\n }\n if (this.parent.aggregates.length && this.isRenderAggregate(captionRow)) {\n var rowCnt = this.rows.length;\n (_a = this.rows).push.apply(_a, this.summaryModelGen.generateRows(data, { level: level, parentUid: captionRow.uid }));\n for (var i = rowCnt - 1; i >= 0; i--) {\n if (this.rows[parseInt(i.toString(), 10)].isCaptionRow) {\n this.rows[parseInt(i.toString(), 10)].aggregatesCount = this.rows.length - rowCnt;\n }\n else if (!this.rows[parseInt(i.toString(), 10)].isCaptionRow && !this.rows[parseInt(i.toString(), 10)].isDataRow) {\n break;\n }\n }\n }\n if (preCaption) {\n this.setInfiniteRowVisibility(preCaption);\n }\n }\n };\n GroupModelGenerator.prototype.isRenderAggregate = function (data) {\n if (this.parent.enableInfiniteScrolling) {\n if (!this.renderInfiniteAgg) {\n return false;\n }\n this.getPreCaption(data.indent, data.data.key);\n this.renderInfiniteAgg = data.data.count === this.infiniteChildCount;\n return this.renderInfiniteAgg;\n }\n return !this.parent.enableInfiniteScrolling;\n };\n GroupModelGenerator.prototype.getPreCaption = function (indent, key) {\n var rowObj = this.parent.getRowsObject().concat(this.rows);\n var preCap;\n this.infiniteChildCount = 0;\n var i = rowObj.length;\n while (i--) {\n if (rowObj[parseInt(i.toString(), 10)].isCaptionRow && rowObj[parseInt(i.toString(), 10)].indent === indent\n && rowObj[parseInt(i.toString(), 10)].data.key === key) {\n preCap = rowObj[parseInt(i.toString(), 10)];\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === indent || rowObj[parseInt(i.toString(), 10)].indent < indent) {\n break;\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === indent + 1) {\n this.infiniteChildCount++;\n }\n }\n return preCap;\n };\n GroupModelGenerator.prototype.getCaptionRowCells = function (field, indent, data) {\n var cells = [];\n var visibles = [];\n var column = this.parent.getColumnByField(field);\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization) {\n column = this.parent.columns.filter(function (c) { return c.field === field; })[0];\n }\n var groupedLen = this.parent.groupSettings.columns.length;\n var gObj = this.parent;\n if (!this.parent.enableColumnVirtualization || indexes.indexOf(indent) !== -1) {\n for (var i = 0; i < indent; i++) {\n cells.push(this.generateIndentCell());\n }\n cells.push(this.generateCell({}, null, CellType.Expand));\n }\n indent = this.parent.enableColumnVirtualization ? 1 :\n (this.parent.getVisibleColumns().length + groupedLen + (gObj.detailTemplate || gObj.childGrid ? 1 : 0) -\n indent + (this.parent.getVisibleColumns().length ? -1 : 0));\n //Captionsummary cells will be added here.\n if (this.parent.aggregates.length && !this.captionModelGen.isEmpty()) {\n var captionCells = this.captionModelGen.generateRows(data)[0];\n extend(data, captionCells.data);\n var cIndex_1 = 0;\n captionCells.cells.some(function (cell, index) { cIndex_1 = index; return cell.visible && cell.isDataCell; });\n visibles = captionCells.cells.slice(cIndex_1).filter(function (cell) { return cell.visible; });\n if (captionCells.visible && visibles[0].column.field === this.parent.getVisibleColumns()[0].field) {\n visibles = visibles.slice(1);\n }\n if (this.parent.getVisibleColumns().length === 1) {\n visibles = [];\n }\n indent = indent - visibles.length;\n }\n var cols = (!this.parent.enableColumnVirtualization ? [column] : this.parent.getColumns());\n var wFlag = true;\n for (var j = 0; j < cols.length; j++) {\n var tmpFlag = wFlag && indexes.indexOf(indent) !== -1;\n if (tmpFlag) {\n wFlag = false;\n }\n var cellType = !this.parent.enableColumnVirtualization || tmpFlag ?\n CellType.GroupCaption : CellType.GroupCaptionEmpty;\n indent = this.parent.enableColumnVirtualization && cellType === CellType.GroupCaption ? indent + groupedLen : indent;\n if (gObj.isRowDragable()) {\n indent++;\n }\n cells.push(this.generateCell(column, null, cellType, indent));\n }\n cells.push.apply(cells, visibles);\n return cells;\n };\n /**\n * @param {GroupedData} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} parentID - specifies the parentID\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the TIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row} returns the Row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateCaptionRow = function (data, indent, parentID, childID, tIndex, parentUid) {\n var options = {};\n var records = 'records';\n var col = this.parent.getColumnByField(data.field);\n options.data = extend({}, data);\n if (col) {\n options.data.field = data.field;\n }\n options.isDataRow = false;\n options.isExpand = !this.parent.groupSettings.enableLazyLoading && !this.parent.isCollapseStateEnabled();\n options.parentGid = parentID;\n options.childGid = childID;\n options.tIndex = tIndex;\n options.isCaptionRow = true;\n options.parentUid = parentUid;\n options.gSummary = !isNullOrUndefined(data.items[\"\" + records]) ? data.items[\"\" + records].length : data.items.length;\n options.uid = getUid('grid-row');\n var row = new Row(options);\n row.indent = indent;\n this.getForeignKeyData(row);\n row.cells = this.getCaptionRowCells(data.field, indent, row.data);\n return row;\n };\n GroupModelGenerator.prototype.getForeignKeyData = function (row) {\n var data = row.data;\n var col = this.parent.getColumnByField(data.field);\n if (col && col.isForeignColumn && col.isForeignColumn()) {\n var fkValue = (isNullOrUndefined(data.key) ? '' : col.valueAccessor(col.foreignKeyValue, getForeignData(col, {}, data.key)[0], col));\n setValue('foreignKey', fkValue, row.data);\n }\n };\n /**\n * @param {Object[]} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the tIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row[]} returns the row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateDataRows = function (data, indent, childID, tIndex, parentUid) {\n var rows = [];\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = data.length; i < len; i++, tIndex++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(data[parseInt(i.toString(), 10)], this.index, i ? undefined : 'e-firstchildrow', indent, childID, tIndex, parentUid);\n for (var j = 0; j < indent; j++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(indent) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.unshift(this.generateIndentCell());\n }\n this.index++;\n }\n return rows;\n };\n GroupModelGenerator.prototype.generateIndentCell = function () {\n return this.generateCell({}, null, CellType.Indent);\n };\n GroupModelGenerator.prototype.refreshRows = function (input) {\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0; i < input.length; i++) {\n if (input[parseInt(i.toString(), 10)].isDataRow) {\n input[parseInt(i.toString(), 10)].cells = this.generateCells(input[parseInt(i.toString(), 10)]);\n for (var j = 0; j < input[parseInt(i.toString(), 10)].indent; j++) {\n if (this.parent.enableColumnVirtualization\n && indexes.indexOf(input[parseInt(i.toString(), 10)].indent) === -1) {\n continue;\n }\n input[parseInt(i.toString(), 10)].cells.unshift(this.generateIndentCell());\n }\n }\n else {\n var cRow = this.generateCaptionRow(input[parseInt(i.toString(), 10)].data, input[parseInt(i.toString(), 10)].indent);\n input[parseInt(i.toString(), 10)].cells = cRow.cells;\n }\n }\n return input;\n };\n GroupModelGenerator.prototype.setInfiniteRowVisibility = function (caption) {\n if (!caption.isExpand || caption.visible === false) {\n for (var _i = 0, _a = this.rows; _i < _a.length; _i++) {\n var row = _a[_i];\n if (row.parentUid === caption.uid) {\n row.visible = false;\n if (row.isCaptionRow) {\n this.setInfiniteRowVisibility(row);\n }\n }\n }\n }\n };\n GroupModelGenerator.prototype.ensureRowVisibility = function () {\n for (var i = 0; i < this.rows.length; i++) {\n var row = this.rows[parseInt(i.toString(), 10)];\n if (!row.isCaptionRow) {\n continue;\n }\n for (var j = i + 1; j < this.rows.length; j++) {\n var childRow = this.rows[parseInt(j.toString(), 10)];\n if (row.uid === childRow.parentUid) {\n this.rows[parseInt(j.toString(), 10)].visible = row.isExpand;\n }\n }\n }\n };\n return GroupModelGenerator;\n}(RowModelGenerator));\nexport { GroupModelGenerator };\n","import { ChildProperty, compile as baseTemplateComplier, setValue, Internationalization, isUndefined } from '@syncfusion/ej2-base';\nimport { extend as baseExtend, isNullOrUndefined, getValue, classList } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, addClass, attributes, remove, createElement, removeClass } from '@syncfusion/ej2-base';\nimport { isObject, select, selectAll } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate, UrlAdaptor, Deferred } from '@syncfusion/ej2-data';\nimport { Column } from '../models/column';\nimport { calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { Print } from '../actions/print';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\nimport * as literals from '../base/string-literals';\n//https://typescript.codeplex.com/discussions/401501\n/**\n * Function to check whether target object implement specific interface\n *\n * @param {Object} target - specifies the target\n * @param {string} checkFor - specifies the checkfors\n * @returns {boolean} returns the boolean\n * @hidden\n */\nexport function doesImplementInterface(target, checkFor) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return target.prototype && checkFor in target.prototype;\n}\n/**\n * Function to get value from provided data\n *\n * @param {string} field - specifies the field\n * @param {Object} data - specifies the data\n * @param {ColumnModel} column - specifies the column\n * @returns {Object} returns the object\n * @hidden\n */\n// eslint-disable-next-line\nexport function valueAccessor(field, data, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, data);\n}\n/**\n * Defines the method used to apply custom header cell values from external function and display this on each header cell rendered.\n *\n * @param {string} field - specifies the field\n * @param {ColumnModel} column - specifies the column\n * @returns {object} headerValueAccessor\n * @hidden\n */\nexport function headerValueAccessor(field, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, column);\n}\n/**\n * The function used to update Dom using requestAnimationFrame.\n *\n * @param {Function} updateFunction - Function that contains the actual action\n * @param {object} callBack - defines the callback\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function getUpdateUsingRaf(updateFunction, callBack) {\n requestAnimationFrame(function () {\n try {\n callBack(null, updateFunction());\n }\n catch (e) {\n callBack(e);\n }\n });\n}\n/**\n * @hidden\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @returns {boolean} Returns isExportColumns\n */\nexport function isExportColumns(exportProperties) {\n return !isNullOrUndefined(exportProperties) &&\n !isNullOrUndefined(exportProperties.columns) && exportProperties.columns.length > 0;\n}\n/**\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function updateColumnTypeForExportColumns(exportProperties, gObj) {\n var exportColumns = exportProperties.columns;\n var gridColumns = gObj.columns;\n for (var i = 0; i < exportColumns.length; i++) {\n if (gridColumns.length - 1 >= i) {\n if (gridColumns[parseInt(i.toString(), 10)].columns) {\n for (var j = 0; j < gridColumns[parseInt(i.toString(), 10)].columns.length; j++) {\n exportColumns[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)]\n .type = gridColumns[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)].type;\n }\n }\n else {\n exportColumns[parseInt(i.toString(), 10)].type = gridColumns[parseInt(i.toString(), 10)].type;\n }\n }\n }\n}\n/**\n * @hidden\n * @param {IGrid} grid - Defines the grid\n * @returns {void}\n */\nexport function updatecloneRow(grid) {\n var nRows = [];\n var actualRows = grid.vRows;\n for (var i = 0; i < actualRows.length; i++) {\n if (actualRows[parseInt(i.toString(), 10)].isDataRow) {\n nRows.push(actualRows[parseInt(i.toString(), 10)]);\n }\n else if (!actualRows[parseInt(i.toString(), 10)].isDataRow) {\n nRows.push(actualRows[parseInt(i.toString(), 10)]);\n if (!actualRows[parseInt(i.toString(), 10)].isExpand && actualRows[parseInt(i.toString(), 10)].isCaptionRow) {\n i += getCollapsedRowsCount(actualRows[parseInt(i.toString(), 10)], grid);\n }\n }\n }\n grid.vcRows = nRows;\n}\nvar count = 0;\n/**\n * @hidden\n * @param {Row} val - Defines the value\n * @param {IGrid} grid - Defines the grid\n * @returns {number} Returns the collapsed row count\n */\nexport function getCollapsedRowsCount(val, grid) {\n count = 0;\n var gSummary = 'gSummary';\n var total = 'count';\n var gLen = grid.groupSettings.columns.length;\n var records = 'records';\n var items = 'items';\n var value = val[\"\" + gSummary];\n var dataRowCnt = 0;\n var agrCnt = 'aggregatesCount';\n if (value === val.data[\"\" + total]) {\n if (grid.groupSettings.columns.length && !isNullOrUndefined(val[\"\" + agrCnt]) && val[\"\" + agrCnt]) {\n if (grid.groupSettings.columns.length !== 1) {\n count += (val.indent !== 0 && (value) < 2) ? (val[\"\" + gSummary] * ((gLen - val.indent) + (gLen - val.indent) * val[\"\" + agrCnt])) :\n (val[\"\" + gSummary] * ((gLen - val.indent) + (gLen - val.indent - 1) * val[\"\" + agrCnt])) + val[\"\" + agrCnt];\n }\n else if (grid.groupSettings.columns.length === 1) {\n count += (val[\"\" + gSummary] * (gLen - val.indent)) + val[\"\" + agrCnt];\n }\n }\n else if (grid.groupSettings.columns.length) {\n if (grid.groupSettings.columns.length !== 1) {\n count += val[\"\" + gSummary] * (grid.groupSettings.columns.length - val.indent);\n }\n else {\n count += val[\"\" + gSummary];\n }\n }\n return count;\n }\n else {\n for (var i = 0, len = val.data[\"\" + items].length; i < len; i++) {\n var gLevel = val.data[\"\" + items][parseInt(i.toString(), 10)];\n count += gLevel[\"\" + items].length + ((gLen !== grid.columns.length) &&\n !isNullOrUndefined(gLevel[\"\" + items][\"\" + records]) ? gLevel[\"\" + items][\"\" + records].length : 0);\n dataRowCnt += (!isNullOrUndefined(gLevel[\"\" + items][\"\" + records]) && !isNullOrUndefined(val[\"\" + agrCnt])) ? gLevel[\"\" + items][\"\" + records].length :\n gLevel[\"\" + items].length;\n if (gLevel[\"\" + items].GroupGuid && gLevel[\"\" + items].childLevels !== 0) {\n recursive(gLevel);\n }\n }\n count += val.data[\"\" + items].length;\n if (!isNullOrUndefined(val[\"\" + agrCnt])) {\n if (val[\"\" + agrCnt] && count && dataRowCnt !== 0) {\n count += ((count - dataRowCnt) * val[\"\" + agrCnt]) + val[\"\" + agrCnt];\n }\n }\n }\n return count;\n}\n/**\n * @param {Object[]} row - Defines the row\n * @returns {void}\n * @hidden\n */\nexport function recursive(row) {\n var items = 'items';\n var rCount = 'count';\n for (var j = 0, length_1 = row[\"\" + items].length; j < length_1; j++) {\n var nLevel = row[\"\" + items][parseInt(j.toString(), 10)];\n count += nLevel[\"\" + rCount];\n if (nLevel[\"\" + items].childLevels !== 0) {\n recursive(nLevel);\n }\n }\n}\n/**\n * @param {Object[]} collection - Defines the array\n * @param {Object} predicate - Defines the predicate\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateArrayOrObject(collection, predicate) {\n var result = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n var pred = predicate(collection[parseInt(i.toString(), 10)], i);\n if (!isNullOrUndefined(pred)) {\n result.push(pred);\n }\n }\n return result;\n}\n/**\n * @param {Object[]} array - Defines the array\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateExtend(array) {\n var obj = [];\n for (var i = 0; i < array.length; i++) {\n obj.push(baseExtend({}, getActualProperties(array[parseInt(i.toString(), 10)]), {}, true));\n }\n return obj;\n}\n/**\n * @param {string | Function} template - Defines the template\n * @returns {Function} Returns the function\n * @hidden\n */\nexport function templateCompiler(template) {\n if (template) {\n try {\n var validSelector = template[0] !== '<';\n if (typeof template === 'function') {\n return baseTemplateComplier(template);\n }\n else if (validSelector && document.querySelectorAll(template).length) {\n return baseTemplateComplier(document.querySelector(template).innerHTML.trim());\n }\n else {\n return baseTemplateComplier(template);\n }\n }\n catch (e) {\n return baseTemplateComplier(template);\n }\n }\n return undefined;\n}\n/**\n * @param {Element} node - Defines the column\n * @param {Object} customAttributes - Defines the index\n * @returns {void}\n * @hidden\n */\nexport function setStyleAndAttributes(node, customAttributes) {\n var copyAttr = {};\n var literals = ['style', 'class'];\n //Dont touch the original object - make a copy\n baseExtend(copyAttr, customAttributes, {});\n if ('style' in copyAttr) {\n setStyleAttribute(node, copyAttr[literals[0]]);\n delete copyAttr[literals[0]];\n }\n if ('class' in copyAttr) {\n addClass([node], copyAttr[literals[1]]);\n delete copyAttr[literals[1]];\n }\n attributes(node, copyAttr);\n}\n/**\n * @param {Object} copied - Defines the column\n * @param {Object} first - Defines the inndex\n * @param {Object} second - Defines the second object\n * @param {string[]} exclude - Defines the exclude\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function extend(copied, first, second, exclude) {\n var moved = baseExtend(copied, first, second);\n var values = Object.keys(moved);\n for (var i = 0; i < values.length; i++) {\n if (exclude && exclude.indexOf(values[parseInt(i.toString(), 10)]) !== -1) {\n delete moved[values[parseInt(i.toString(), 10)]];\n }\n }\n return moved;\n}\n/**\n * @param {Column[]} columnModel - Defines the column\n * @param {number} ind - Defines the inndex\n * @returns {number} - Returns the columnindex\n * @hidden\n */\nexport function setColumnIndex(columnModel, ind) {\n if (ind === void 0) { ind = 0; }\n for (var i = 0, len = columnModel.length; i < len; i++) {\n if (columnModel[parseInt(i.toString(), 10)].columns) {\n columnModel[parseInt(i.toString(), 10)].index = isNullOrUndefined(columnModel[parseInt(i.toString(), 10)].index) ? ind\n : columnModel[parseInt(i.toString(), 10)].index;\n ind++;\n ind = setColumnIndex(columnModel[parseInt(i.toString(), 10)].columns, ind);\n }\n else {\n columnModel[parseInt(i.toString(), 10)].index = isNullOrUndefined(columnModel[parseInt(i.toString(), 10)].index) ? ind\n : columnModel[parseInt(i.toString(), 10)].index;\n ind++;\n }\n }\n return ind;\n}\n/**\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines the column\n * @param {boolean} autoWidth - Defines the autowidth\n * @param {IGrid} gObj - Defines the class name\n * @returns {Column} - Returns the columns\n * @hidden\n */\nexport function prepareColumns(columns, autoWidth, gObj) {\n for (var c = 0, len = columns.length; c < len; c++) {\n var column = void 0;\n if (typeof columns[parseInt(c.toString(), 10)] === 'string') {\n column = new Column({ field: columns[parseInt(c.toString(), 10)] }, gObj);\n }\n else if (!(columns[parseInt(c.toString(), 10)] instanceof Column) || columns[parseInt(c.toString(), 10)].columns) {\n if (!columns[parseInt(c.toString(), 10)].columns) {\n column = new Column(columns[parseInt(c.toString(), 10)], gObj);\n }\n else {\n columns[parseInt(c.toString(), 10)].columns = prepareColumns(columns[parseInt(c.toString(), 10)].columns, null, gObj);\n column = new Column(columns[parseInt(c.toString(), 10)], gObj);\n }\n }\n else {\n column = columns[parseInt(c.toString(), 10)];\n }\n if (column.type && column.type.toLowerCase() === 'checkbox') {\n column.allowReordering = false;\n }\n column.headerText = isNullOrUndefined(column.headerText) ? column.foreignKeyValue || column.field || '' : column.headerText;\n column.foreignKeyField = column.foreignKeyField || column.field;\n column.valueAccessor = (typeof column.valueAccessor === 'string' ? getValue(column.valueAccessor, window)\n : column.valueAccessor) || valueAccessor;\n column.width = autoWidth && isNullOrUndefined(column.width) ? 200 : column.width;\n if (isNullOrUndefined(column.visible)) {\n column.visible = true;\n }\n columns[parseInt(c.toString(), 10)] = column;\n }\n return columns;\n}\n/**\n * @param {HTMLElement} popUp - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the moouse event\n * @param {string} className - Defines the class name\n * @returns {void}\n * @hidden\n */\nexport function setCssInGridPopUp(popUp, e, className) {\n var popUpSpan = popUp.querySelector('span');\n var position = popUp.parentElement.getBoundingClientRect();\n var targetPosition = e.target.getBoundingClientRect();\n popUpSpan.className = className;\n popUp.style.display = '';\n var isBottomTail = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY) > popUp.offsetHeight + 10;\n popUp.style.top = targetPosition.top - position.top +\n (isBottomTail ? -(popUp.offsetHeight + 10) : popUp.offsetHeight + 10) + 'px'; //10px for tail element\n popUp.style.left = getPopupLeftPosition(popUp, e, targetPosition, position.left) + 'px';\n if (isBottomTail) {\n popUp.querySelector('.e-downtail').style.display = '';\n popUp.querySelector('.e-uptail').style.display = 'none';\n }\n else {\n popUp.querySelector('.e-downtail').style.display = 'none';\n popUp.querySelector('.e-uptail').style.display = '';\n }\n}\n/**\n * @param {HTMLElement} popup - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the mouse event\n * @param {Object} targetPosition - Defines the target position\n * @param {number} targetPosition.top - Defines the top position\n * @param {number} targetPosition.left - Defines the left position\n * @param {number} targetPosition.right - Defines the right position\n * @param {number} left - Defines the left position\n * @returns {number} Returns the popup left position\n * @hidden\n */\nfunction getPopupLeftPosition(popup, e, targetPosition, left) {\n var width = popup.offsetWidth / 2;\n var x = getPosition(e).x;\n if (x - targetPosition.left < width) {\n return targetPosition.left - left;\n }\n else if (targetPosition.right - x < width) {\n return targetPosition.right - left - width * 2;\n }\n else {\n return x - left - width;\n }\n}\n/**\n * @param {Object} obj - Defines the object\n * @returns {Object} Returns the Properties\n * @hidden\n */\nexport function getActualProperties(obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the string selector\n * @param {boolean} isID - Defines the isID\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function parentsUntil(elem, selector, isID) {\n var parent = elem;\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n break;\n }\n parent = parent.parentElement;\n }\n return parent;\n}\n/**\n * @param {Element} element - Defines the element\n * @param {Element} elements - Defines the element\n * @returns {number} Returns the element index\n * @hidden\n */\nexport function getElementIndex(element, elements) {\n var index = -1;\n for (var i = 0, len = elements.length; i < len; i++) {\n if (elements[parseInt(i.toString(), 10)].isEqualNode(element)) {\n index = i;\n break;\n }\n }\n return index;\n}\n/**\n * @param {Object} value - Defines the value\n * @param {Object} collection - defines the collection\n * @returns {number} Returns the array\n * @hidden\n */\nexport function inArray(value, collection) {\n for (var i = 0, len = collection.length; i < len; i++) {\n if (collection[parseInt(i.toString(), 10)] === value) {\n return i;\n }\n }\n return -1;\n}\n/**\n * @param {Object} collection - Defines the collection\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getActualPropFromColl(collection) {\n var coll = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n // eslint-disable-next-line no-prototype-builtins\n if (collection[parseInt(i.toString(), 10)].hasOwnProperty('properties')) {\n coll.push(collection[parseInt(i.toString(), 10)].properties);\n }\n else {\n coll.push(collection[parseInt(i.toString(), 10)]);\n }\n }\n return coll;\n}\n/**\n * @param {Element} target - Defines the target element\n * @param {string} selector - Defines the selector\n * @returns {void}\n * @hidden\n */\nexport function removeElement(target, selector) {\n var elements = [].slice.call(target.querySelectorAll(selector));\n for (var i = 0; i < elements.length; i++) {\n remove(elements[parseInt(i.toString(), 10)]);\n }\n}\n/**\n * @param {MouseEvent | TouchEvent} e Defines the mouse event\n * @returns {IPosition} Returns the position\n * @hidden\n */\nexport function getPosition(e) {\n var position = {};\n position.x = (isNullOrUndefined(e.clientX) ? e.changedTouches[0].clientX :\n e.clientX);\n position.y = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY);\n return position;\n}\nvar uid = 0;\n/**\n * @param {string} prefix - Defines the prefix string\n * @returns {string} Returns the uid\n * @hidden\n */\nexport function getUid(prefix) {\n return prefix + uid++;\n}\n/**\n * @param {Element | DocumentFragment} elem - Defines the element\n * @param {Element[] | NodeList} children - Defines the Element\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function appendChildren(elem, children) {\n for (var i = 0, len = children.length; i < len; i++) {\n if (len === children.length) {\n elem.appendChild(children[parseInt(i.toString(), 10)]);\n }\n else {\n elem.appendChild(children[0]);\n }\n }\n return elem;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the selector\n * @param {boolean} isID - Defines isID\n * @returns {Element} Return the element\n * @hidden\n */\nexport function parents(elem, selector, isID) {\n var parent = elem;\n var parents = [];\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\n/**\n * @param {AggregateType | string} type - Defines the type\n * @param {Object} data - Defines the data\n * @param {AggregateColumnModel} column - Defines the column\n * @param {Object} context - Defines the context\n * @returns {Object} Returns the calculated aggragate\n * @hidden\n */\nexport function calculateAggregate(type, data, column, context) {\n if (type === 'Custom') {\n var temp = column.customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n return temp ? temp.call(context, data, column) : '';\n }\n return (column.field in data || data instanceof Array) ? DataUtil.aggregates[type.toLowerCase()](data, column.field) : null;\n}\n/** @hidden */\nvar scrollWidth = null;\n/** @hidden\n * @returns {number} - Returns the scrollbarwidth\n */\nexport function getScrollBarWidth() {\n if (scrollWidth !== null) {\n return scrollWidth;\n }\n var divNode = document.createElement('div');\n var value = 0;\n divNode.style.cssText = 'width:100px;height: 100px;overflow: scroll;position: absolute;top: -9999px;';\n document.body.appendChild(divNode);\n value = (divNode.offsetWidth - divNode.clientWidth) | 0;\n document.body.removeChild(divNode);\n return scrollWidth = value;\n}\n/** @hidden */\nvar rowHeight;\n/**\n * @param {HTMLElement} element - Defines the element\n * @returns {number} Returns the roww height\n * @hidden\n */\nexport function getRowHeight(element) {\n if (rowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('td').getBoundingClientRect();\n element.removeChild(table);\n rowHeight = Math.ceil(rect.height);\n return rowHeight;\n}\n/** @hidden */\nvar actualRowHeight;\n/**\n * @param {HTMLElement} element - Defines the HTMl element\n * @returns {number} Returns the row height\n * @hidden\n */\nexport function getActualRowHeight(element) {\n if (actualRowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('tr').getBoundingClientRect();\n element.removeChild(table);\n return rect.height;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {boolean} - Returns is complex field\n * @hidden\n */\nexport function isComplexField(field) {\n return field.split('.').length > 1;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the get complex field ID\n * @hidden\n */\nexport function getComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/\\./g, '___');\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the parsed column field id\n * @hidden\n */\nexport function getParsedFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/[^a-zA-Z0-9_.]/g, '\\\\$&');\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the set complex field ID\n * @hidden\n */\nexport function setComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/___/g, '.');\n}\n/**\n * @param {Column} col - Defines the column\n * @param {string} type - Defines the type\n * @param {Element} elem - Defines th element\n * @returns {boolean} Returns is Editable\n * @hidden\n */\nexport function isEditable(col, type, elem) {\n var row = parentsUntil(elem, literals.row);\n var isOldRow = !row ? true : row && !row.classList.contains('e-insertedrow');\n if (type === 'beginEdit' && isOldRow) {\n if (col.isIdentity || col.isPrimaryKey || !col.allowEditing) {\n return false;\n }\n return true;\n }\n else if (type === 'add' && col.isIdentity) {\n return false;\n }\n else {\n if (isOldRow && !col.allowEditing && !col.isIdentity && !col.isPrimaryKey) {\n return false;\n }\n return true;\n }\n}\n/**\n * @param {IGrid} inst - Defines the IGrid\n * @returns {boolean} Returns is action prevent in boolean\n * @hidden\n */\nexport function isActionPrevent(inst) {\n var dlg = select('#' + inst.element.id + 'EditConfirm', inst.element);\n return inst.editSettings.mode === 'Batch' &&\n (selectAll('.e-updatedtd', inst.element).length || selectAll('.e-gridform.e-formvalidator', inst.element).length)\n && inst.editSettings.showConfirmDialog && (dlg ? dlg.classList.contains('e-popup-close') : true);\n}\n/**\n * @param {any} elem - Defines the element\n * @param {boolean} action - Defines the boolean for action\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function wrap(elem, action) {\n var clName = 'e-wrap';\n elem = elem instanceof Array ? elem : [elem];\n for (var i = 0; i < elem.length; i++) {\n if (action) {\n elem[parseInt(i.toString(), 10)].classList.add(clName);\n }\n else {\n elem[parseInt(i.toString(), 10)].classList.remove(clName);\n }\n }\n}\n/**\n * @param {ServiceLocator} serviceLocator - Defines the service locator\n * @param {Column} column - Defines the column\n * @returns {void}\n * @hidden\n */\nexport function setFormatter(serviceLocator, column) {\n var fmtr = serviceLocator.getService('valueFormatter');\n var format = 'format';\n var args;\n if (column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly') {\n args = { type: column.type === 'dateonly' ? 'date' : column.type, skeleton: column.format };\n if ((typeof (column.format) === 'string') && column.format !== 'yMd') {\n args[\"\" + format] = column.format;\n }\n }\n switch (column.type) {\n case 'date':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'dateonly':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'datetime':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'number':\n column.setFormatter(fmtr.getFormatFunction({ format: column.format }));\n column.setParser(fmtr.getParserFunction({ format: column.format }));\n break;\n }\n}\n/**\n * @param {Element} cells - Defines the cell element\n * @param {boolean} add - Defines the add\n * @param {string} args - Defines the args\n * @returns {void}\n * @hidden\n */\nexport function addRemoveActiveClasses(cells, add) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n for (var i = 0, len = cells.length; i < len; i++) {\n if (add) {\n classList(cells[parseInt(i.toString(), 10)], args.slice(), []);\n cells[parseInt(i.toString(), 10)].setAttribute('aria-selected', 'true');\n }\n else {\n classList(cells[parseInt(i.toString(), 10)], [], args.slice());\n cells[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n }\n }\n}\n/**\n * @param {string} result - Defines th string\n * @returns {string} Returns the distinct staing values\n * @hidden\n */\nexport function distinctStringValues(result) {\n var temp = {};\n var res = [];\n for (var i = 0; i < result.length; i++) {\n if (!(result[parseInt(i.toString(), 10)] in temp)) {\n res.push(result[parseInt(i.toString(), 10)].toString());\n temp[result[parseInt(i.toString(), 10)]] = 1;\n }\n }\n return res;\n}\n/**\n * @param {Element} target - Defines the target\n * @param {Dialog} dialogObj - Defines the dialog\n * @returns {void}\n * @hidden\n */\nexport function getFilterMenuPostion(target, dialogObj) {\n var elementVisible = dialogObj.element.style.display;\n dialogObj.element.style.display = 'block';\n var dlgWidth = dialogObj.width;\n var newpos = calculateRelativeBasedPosition(target, dialogObj.element);\n dialogObj.element.style.display = elementVisible;\n dialogObj.element.style.top = (newpos.top + target.getBoundingClientRect().height) - 5 + 'px';\n var leftPos = ((newpos.left - dlgWidth) + target.clientWidth);\n if (leftPos < 1) {\n dialogObj.element.style.left = (dlgWidth + leftPos) - 16 + 'px'; // right calculation\n }\n else {\n dialogObj.element.style.left = leftPos + -4 + 'px';\n }\n}\n/**\n * @param {Object} args - Defines the args\n * @param {Popup} args.popup - Defines the args for popup\n * @param {Dialog} dialogObj - Defines the dialog obj\n * @returns {void}\n * @hidden\n */\nexport function getZIndexCalcualtion(args, dialogObj) {\n args.popup.element.style.zIndex = (dialogObj.zIndex + 1).toString();\n}\n/**\n * @param {Element} elem - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function toogleCheckbox(elem) {\n var span = elem.querySelector('.e-frame');\n var input = span.previousSibling;\n if (span.classList.contains('e-check')) {\n input.checked = false;\n classList(span, ['e-uncheck'], ['e-check']);\n }\n else {\n input.checked = true;\n classList(span, ['e-check'], ['e-uncheck']);\n }\n}\n/**\n * @param {HTMLInputElement} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function setChecked(elem, checked) {\n elem.checked = checked;\n}\n/**\n * @param {string} uid - Defines the string\n * @param {Element} elem - Defines the Element\n * @param {string} className - Defines the classname\n * @returns {Element} Returns the box wrap\n * @hidden\n */\nexport function createCboxWithWrap(uid, elem, className) {\n var div = createElement('div', { className: className });\n div.appendChild(elem);\n div.setAttribute('uid', uid);\n return div;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function removeAddCboxClasses(elem, checked) {\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n if (checked) {\n elem.classList.add('e-check');\n }\n else {\n elem.classList.add('e-uncheck');\n }\n}\n/**\n * Refresh the Row model's foreign data.\n *\n * @param {IRow} row - Grid Row model object.\n * @param {Column[]} columns - Foreign columns array.\n * @param {Object} data - Updated Row data.\n * @returns {void}\n * @hidden\n */\nexport function refreshForeignData(row, columns, data) {\n for (var i = 0; i < columns.length; i++) {\n setValue(columns[parseInt(i.toString(), 10)].field, getForeignData(columns[parseInt(i.toString(), 10)], data), row.foreignKeyData);\n }\n var cells = row.cells;\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].isForeignKey) {\n setValue('foreignKeyData', getValue(cells[parseInt(i.toString(), 10)].column.field, row.foreignKeyData), cells[parseInt(i.toString(), 10)]);\n }\n }\n}\n/**\n * Get the foreign data for the corresponding cell value.\n *\n * @param {Column} column - Foreign Key column\n * @param {Object} data - Row data.\n * @param {string | number} lValue - cell value.\n * @param {Object} foreignKeyData - foreign data source.\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getForeignData(column, data, lValue, foreignKeyData) {\n var fField = column.foreignKeyField;\n var key = (!isNullOrUndefined(lValue) ? lValue : valueAccessor(column.field, data, column));\n key = isNullOrUndefined(key) ? '' : key;\n var query = new Query();\n var fdata = foreignKeyData || ((column.dataSource instanceof DataManager) && column.dataSource.dataSource.json.length ?\n column.dataSource.dataSource.json : column.columnData);\n if (key.getDay) {\n query.where(getDatePredicate({ field: fField, operator: 'equal', value: key, matchCase: false }));\n }\n else {\n query.where(fField, '==', key, false);\n }\n return new DataManager(fdata).executeLocal(query);\n}\n/**\n * To use to get the column's object by the foreign key value.\n *\n * @param {string} foreignKeyValue - Defines ForeignKeyValue.\n * @param {Column[]} columns - Array of column object.\n * @returns {Column} Returns the element\n * @hidden\n */\nexport function getColumnByForeignKeyValue(foreignKeyValue, columns) {\n var column;\n return columns.some(function (col) {\n column = col;\n return col.foreignKeyValue === foreignKeyValue;\n }) && column;\n}\n/**\n * @param {number} value - Defines the date or month value\n * @returns {string} Returns string\n * @hidden\n */\nexport function padZero(value) {\n if (value < 10) {\n return '0' + value;\n }\n return String(value);\n}\n/**\n * @param {PredicateModel} filterObject - Defines the filterObject\n * @param {string} type - Defines the type\n * @param {boolean} isExecuteLocal - Defines whether the data actions performed in client and used for dateonly type field\n * @returns {Predicate} Returns the Predicate\n * @hidden\n */\nexport function getDatePredicate(filterObject, type, isExecuteLocal) {\n var datePredicate;\n var prevDate;\n var nextDate;\n var prevObj = baseExtend({}, getActualProperties(filterObject));\n var nextObj = baseExtend({}, getActualProperties(filterObject));\n if (isNullOrUndefined(filterObject.value) || filterObject.value === '') {\n datePredicate = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n return datePredicate;\n }\n var value = new Date(filterObject.value);\n if (type === 'dateonly' && !isExecuteLocal) {\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var dateOnlyString = prevObj.value.getFullYear() + '-' + padZero(prevObj.value.getMonth() + 1) + '-' + padZero(prevObj.value.getDate());\n var predicates = new Predicate(prevObj.field, prevObj.operator, dateOnlyString, false);\n datePredicate = predicates;\n }\n else {\n if (filterObject.operator === 'equal' || filterObject.operator === 'notequal') {\n if (type === 'datetime') {\n prevDate = new Date(value.setSeconds(value.getSeconds() - 1));\n nextDate = new Date(value.setSeconds(value.getSeconds() + 2));\n filterObject.value = new Date(value.setSeconds(nextDate.getSeconds() - 1));\n }\n else {\n prevDate = new Date(value.setHours(0) - 1);\n nextDate = new Date(value.setHours(24));\n }\n prevObj.value = prevDate;\n nextObj.value = nextDate;\n if (filterObject.operator === 'equal') {\n prevObj.operator = 'greaterthan';\n nextObj.operator = 'lessthan';\n }\n else if (filterObject.operator === 'notequal') {\n prevObj.operator = 'lessthanorequal';\n nextObj.operator = 'greaterthanorequal';\n }\n var predicateSt = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n var predicateEnd = new Predicate(nextObj.field, nextObj.operator, nextObj.value, false);\n datePredicate = filterObject.operator === 'equal' ? predicateSt.and(predicateEnd) : predicateSt.or(predicateEnd);\n }\n else {\n if (type === 'date' && (filterObject.operator === 'lessthanorequal' || filterObject.operator === 'greaterthan')) {\n prevObj.value = new Date(value.setHours(24) - 1);\n }\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var predicates = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n datePredicate = predicates;\n }\n }\n if (filterObject.setProperties) {\n filterObject.setProperties({ ejpredicate: datePredicate }, true);\n }\n else {\n filterObject.ejpredicate = datePredicate;\n }\n return datePredicate;\n}\n/**\n * @param {IGrid} grid - Defines the IGrid\n * @returns {boolean} Returns true if group adaptive is true\n * @hidden\n */\nexport function isGroupAdaptive(grid) {\n return grid.enableVirtualization && grid.groupSettings.columns.length > 0 && grid.isVirtualAdaptive &&\n !grid.groupSettings.enableLazyLoading;\n}\n/**\n * @param {string} field - Defines the Field\n * @param {Object} object - Defines the objec\n * @returns {any} Returns the object\n * @hidden\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getObject(field, object) {\n if (field === void 0) { field = ''; }\n if (field) {\n var value = object;\n var splits = field.split('.');\n for (var i = 0; i < splits.length && !isNullOrUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n if (isUndefined(value)) {\n var newCase = splits[parseInt(i.toString(), 10)].charAt(0).toUpperCase()\n + splits[parseInt(i.toString(), 10)].slice(1);\n value = object[\"\" + newCase] || object[(\"\" + newCase).charAt(0).toLowerCase() + (\"\" + newCase).slice(1)];\n }\n }\n return value;\n }\n}\n/**\n * @param {string | Object} format - defines the format\n * @param {string} colType - Defines the coltype\n * @returns {string} Returns the custom Data format\n * @hidden\n */\nexport function getCustomDateFormat(format, colType) {\n var intl = new Internationalization();\n var formatvalue;\n var formatter = 'format';\n var type = 'type';\n if (colType === 'date') {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[\"\" + type] ? format[\"\" + type] : 'date', format: format[\"\" + formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n else {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[\"\" + type] ? format[\"\" + type] : 'dateTime', format: format[\"\" + formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n return formatvalue;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getExpandedState(gObj, hierarchyPrintMode) {\n var rows = gObj.getRowsObject();\n var obj = {};\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.isExpand && !row.isDetailRow) {\n var index = gObj.allowPaging && gObj.printMode === 'AllPages' ? row.index +\n (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize : row.index;\n if (!isNullOrUndefined(index)) {\n obj[parseInt(index.toString(), 10)] = {};\n obj[parseInt(index.toString(), 10)].isExpand = true;\n if (gObj.childGrid) {\n obj[parseInt(index.toString(), 10)].gridModel = getPrintGridModel(row.childGrid, hierarchyPrintMode);\n obj[parseInt(index.toString(), 10)].gridModel.query = gObj.childGrid.query;\n }\n }\n }\n }\n return obj;\n}\n/**\n * @param {IGrid} gObj - Defines the grid objct\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {IGrid} Returns the IGrid\n * @hidden\n */\nexport function getPrintGridModel(gObj, hierarchyPrintMode) {\n if (hierarchyPrintMode === void 0) { hierarchyPrintMode = 'Expanded'; }\n var printGridModel = {};\n if (!gObj) {\n return printGridModel;\n }\n for (var _i = 0, _a = Print.printGridProp; _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'columns') {\n printGridModel[\"\" + key] = getActualPropFromColl(gObj.getColumns());\n }\n else if (key === 'allowPaging') {\n printGridModel[\"\" + key] = gObj.printMode === 'CurrentPage';\n }\n else {\n printGridModel[\"\" + key] = getActualProperties(gObj[\"\" + key]);\n }\n }\n printGridModel['enableHover'] = false;\n if ((gObj.childGrid || gObj.detailTemplate) && hierarchyPrintMode !== 'None') {\n printGridModel.expandedRows = getExpandedState(gObj, hierarchyPrintMode);\n }\n return printGridModel;\n}\n/**\n * @param {Object} copied - Defines the copied object\n * @param {Object} first - Defines the first object\n * @param {Object} second - Defines the second object\n * @param {boolean} deep - Defines the deep\n * @returns {Object} Returns the extended object\n * @hidden\n */\nexport function extendObjWithFn(copied, first, second, deep) {\n var res = copied || {};\n var len = arguments.length;\n if (deep) {\n len = len - 1;\n }\n for (var i = 1; i < len; i++) {\n // eslint-disable-next-line prefer-rest-params\n if (!arguments[parseInt(i.toString(), 10)]) {\n continue;\n }\n // eslint-disable-next-line prefer-rest-params\n var obj1 = arguments[parseInt(i.toString(), 10)];\n var keys = Object.keys(Object.getPrototypeOf(obj1)).length ?\n Object.keys(obj1).concat(getPrototypesOfObj(obj1)) : Object.keys(obj1);\n for (var i_1 = 0; i_1 < keys.length; i_1++) {\n var source = res[keys[parseInt(i_1.toString(), 10)]];\n var cpy = obj1[keys[parseInt(i_1.toString(), 10)]];\n var cln = void 0;\n if (deep && (isObject(cpy) || Array.isArray(cpy))) {\n if (isObject(cpy)) {\n cln = source ? source : {};\n res[keys[parseInt(i_1.toString(), 10)]] = baseExtend({}, cln, cpy, deep);\n }\n else {\n cln = source ? source : [];\n res[keys[parseInt(i_1.toString(), 10)]] = baseExtend([], cln, cpy, deep);\n }\n }\n else {\n res[keys[parseInt(i_1.toString(), 10)]] = cpy;\n }\n }\n }\n return res;\n}\n/**\n * @param {Object} obj - Defines the obj\n * @returns {string[]} Returns the string\n * @hidden\n */\nfunction getPrototypesOfObj(obj) {\n var keys = [];\n while (Object.getPrototypeOf(obj) && Object.keys(Object.getPrototypeOf(obj)).length) {\n keys = keys.concat(Object.keys(Object.getPrototypeOf(obj)));\n obj = Object.getPrototypeOf(obj);\n }\n return keys;\n}\n/**\n * @param {Column[]} column - Defines the Column\n * @returns {number} Returns the column Depth\n * @hidden\n */\nexport function measureColumnDepth(column) {\n var max = 0;\n for (var i = 0; i < column.length; i++) {\n var depth = checkDepth(column[parseInt(i.toString(), 10)], 0);\n if (max < depth) {\n max = depth;\n }\n }\n return max + 1;\n}\n/**\n * @param {Column} col - Defines the Column\n * @param {number} index - Defines the index\n * @returns {number} Returns the depth\n * @hidden\n */\nexport function checkDepth(col, index) {\n var max = index;\n var indices = [];\n if (col.columns) {\n index++;\n for (var i = 0; i < col.columns.length; i++) {\n indices[parseInt(i.toString(), 10)] = checkDepth(col.columns[parseInt(i.toString(), 10)], index);\n }\n for (var j = 0; j < indices.length; j++) {\n if (max < indices[parseInt(j.toString(), 10)]) {\n max = indices[parseInt(j.toString(), 10)];\n }\n }\n index = max;\n }\n return index;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {PredicateModel[]} filteredCols - Defines the PredicateModel\n * @returns {void}\n * @hidden\n */\nexport function refreshFilteredColsUid(gObj, filteredCols) {\n for (var i = 0; i < filteredCols.length; i++) {\n filteredCols[parseInt(i.toString(), 10)].uid = filteredCols[parseInt(i.toString(), 10)].isForeignKey ?\n getColumnByForeignKeyValue(filteredCols[parseInt(i.toString(), 10)].field, gObj.getForeignKeyColumns()).uid\n : gObj.enableColumnVirtualization ? getColumnModelByFieldName(gObj, filteredCols[parseInt(i.toString(), 10)].field).uid\n : gObj.getColumnByField(filteredCols[parseInt(i.toString(), 10)].field).uid;\n }\n}\n/** @hidden */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Global;\n(function (Global) {\n // eslint-disable-next-line prefer-const\n Global.timer = null;\n})(Global || (Global = {}));\n/**\n * @param {Element} element - Defines the element\n * @returns {Object} Returns the transform values\n * @hidden\n */\nexport function getTransformValues(element) {\n var style = document.defaultView.getComputedStyle(element, null);\n var transformV = style.getPropertyValue('transform');\n var replacedTv = transformV.replace(/,/g, '');\n var translateX = parseFloat((replacedTv).split(' ')[4]);\n var translateY = parseFloat((replacedTv).split(' ')[5]);\n return { width: translateX, height: translateY };\n}\n/**\n * @param {Element} rootElement - Defines the root Element\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function applyBiggerTheme(rootElement, element) {\n if (rootElement.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n}\n/**\n * @param {IGrid} gObj - Defines grid object\n * @returns {number} - Returns scroll width\n * @hidden\n */\nexport function getScrollWidth(gObj) {\n var scrollElem = gObj.getContent().firstElementChild;\n return scrollElem.scrollWidth > scrollElem.offsetWidth ? getScrollBarWidth() : 0;\n}\n/**\n * @param {IGrid} gObj - Defines grid object\n * @param {number} idx - Defines the index\n * @returns {number} Returns colSpan index\n * @hidden\n */\nexport function resetColspanGroupCaption(gObj, idx) {\n var colspan = 0;\n var cols = gObj.getColumns();\n var width = idx * 30;\n if (gObj.isRowDragable()) {\n colspan++;\n width += 30;\n }\n colspan += (gObj.groupSettings.columns.length - idx);\n width += (30 * (gObj.groupSettings.columns.length - idx));\n var gridWidth = (gObj.width === 'auto' ? gObj.element.offsetWidth : parseInt(gObj.width.toString(), 10)) -\n getScrollWidth(gObj);\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseInt(cols[parseInt(i.toString(), 10)].width.toString(), 10);\n colspan++;\n }\n if (width > gridWidth) {\n colspan--;\n break;\n }\n }\n return colspan;\n}\n/**\n * @param {HTMLElement} tr - Defines the tr Element\n * @param {IGrid} gObj - Defines grid object\n * @returns {void}\n * @hidden\n */\nexport function groupCaptionRowLeftRightPos(tr, gObj) {\n var width = 0;\n for (var j = 0; j < tr.childNodes.length; j++) {\n var td = tr.childNodes[parseInt(j.toString(), 10)];\n td.classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td, width, gObj.enableRtl, 'Left');\n if (td.classList.contains('e-indentcell') || td.classList.contains('e-recordplusexpand') ||\n td.classList.contains('e-recordpluscollapse')) {\n width += 30;\n }\n if (td.classList.contains('e-groupcaption')) {\n var colspan = parseInt(td.getAttribute('colspan'), 10);\n if (gObj.isRowDragable()) {\n colspan--;\n width += 30;\n }\n colspan = colspan - (gObj.groupSettings.columns.length - j);\n width = width + (30 * (gObj.groupSettings.columns.length - j));\n var cols = gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if ((parseInt(td.getAttribute('colspan'), 10) > 1) &&\n (parseInt(cols[parseInt(i.toString(), 10)].width.toString(), 10)\n + width) > (parseInt(gObj.width.toString(), 10) - getScrollWidth(gObj))) {\n var newColspan = resetColspanGroupCaption(gObj, j);\n td.setAttribute('colspan', newColspan.toString());\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseInt(cols[parseInt(i.toString(), 10)].width.toString(), 10);\n colspan--;\n }\n if (colspan === 0) {\n break;\n }\n }\n }\n if (td.classList.contains('e-summarycell')) {\n var uid_1 = td.getAttribute('e-mappinguid');\n var column = gObj.getColumnByUid(uid_1);\n width += parseInt(column.width.toString(), 10);\n }\n }\n}\n/**\n * @param {Element} row - Defines row element\n * @param {IGrid} gridObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function ensureLastRow(row, gridObj) {\n var content = gridObj.getContent().firstElementChild;\n return row && (row.getBoundingClientRect().top - content.getBoundingClientRect().top +\n gridObj.getRowHeight()) > content.offsetHeight;\n}\n/**\n * @param {Element} row - Defines row element\n * @param {number} rowTop - Defines row top number\n * @returns {boolean} Returns first row is true\n * @hidden\n */\nexport function ensureFirstRow(row, rowTop) {\n return row && row.getBoundingClientRect().top < rowTop;\n}\n/**\n * @param {number} index - Defines index\n * @param {IGrid} gObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function isRowEnteredInGrid(index, gObj) {\n var rowHeight = gObj.getRowHeight();\n var startIndex = gObj.getContent().firstElementChild.scrollTop / rowHeight;\n var endIndex = startIndex + (gObj.getContent().firstElementChild.offsetHeight / rowHeight);\n return index < endIndex && index > startIndex;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} data - Defines the query\n * @returns {number} Returns the edited data index\n * @hidden\n */\nexport function getEditedDataIndex(gObj, data) {\n var keyField = gObj.getPrimaryKeyFieldNames()[0];\n var dataIndex;\n gObj.getCurrentViewRecords().filter(function (e, index) {\n if (keyField.includes('.')) {\n var currentValue = getObject(keyField, e);\n var originalValue = getObject(keyField, data);\n if (currentValue === originalValue) {\n dataIndex = index;\n }\n }\n else {\n if (e[\"\" + keyField] === data[\"\" + keyField]) {\n dataIndex = index;\n }\n }\n });\n return dataIndex;\n}\n/**\n * @param {Object} args - Defines the argument\n * @param {Query} query - Defines the query\n * @returns {FilterStateObj} Returns the filter state object\n * @hidden\n */\nexport function eventPromise(args, query) {\n var state = getStateEventArgument(query);\n var def = new Deferred();\n state.dataSource = def.resolve;\n state.action = args;\n return { state: state, deffered: def };\n}\n/**\n * @param {Query} query - Defines the query\n * @returns {Object} Returns the state event argument\n * @hidden\n */\nexport function getStateEventArgument(query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return data;\n}\n/**\n * @param {IGrid} gObj - Defines the Igrid\n * @returns {boolean} Returns the ispercentageWidth\n * @hidden\n */\nexport function ispercentageWidth(gObj) {\n var columns = gObj.getVisibleColumns();\n var percentageCol = 0;\n var undefinedWidthCol = 0;\n for (var i = 0; i < columns.length; i++) {\n if (isUndefined(columns[parseInt(i.toString(), 10)].width)) {\n undefinedWidthCol++;\n }\n else if (columns[parseInt(i.toString(), 10)].width.toString().indexOf('%') !== -1) {\n percentageCol++;\n }\n }\n return (gObj.width === 'auto' || typeof (gObj.width) === 'string' && gObj.width.indexOf('%') !== -1) &&\n !gObj.groupSettings.showGroupedColumn && gObj.groupSettings.columns.length\n && percentageCol && !undefinedWidthCol;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {Row[]} rows - Defines the row\n * @param {HTMLTableRowElement[]} rowElms - Row elements\n * @param {number} index - Row index\n * @param {number} startRowIndex - Start Row Index\n * @returns {void}\n * @hidden\n */\nexport function resetRowIndex(gObj, rows, rowElms, index, startRowIndex) {\n var startIndex = index ? index : 0;\n for (var i = startRowIndex ? startRowIndex : 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)] && rows[parseInt(i.toString(), 10)].isDataRow) {\n rows[parseInt(i.toString(), 10)].index = startIndex;\n rows[parseInt(i.toString(), 10)].isAltRow = gObj.enableAltRow ? startIndex % 2 !== 0 : false;\n rowElms[parseInt(i.toString(), 10)].setAttribute(literals.dataRowIndex, startIndex.toString());\n rowElms[parseInt(i.toString(), 10)].setAttribute(literals.ariaRowIndex, (startIndex + 1).toString());\n if (rows[parseInt(i.toString(), 10)].isAltRow) {\n rowElms[parseInt(i.toString(), 10)].classList.add('e-altrow');\n }\n else {\n rowElms[parseInt(i.toString(), 10)].classList.remove('e-altrow');\n }\n for (var j = 0; j < rowElms[parseInt(i.toString(), 10)].cells.length; j++) {\n rowElms[parseInt(i.toString(), 10)].cells[parseInt(j.toString(), 10)].setAttribute('index', startIndex.toString());\n }\n startIndex++;\n }\n }\n if (!rows.length) {\n gObj.renderModule.emptyRow(true);\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} changes - Defines the changes\n * @param {string} type - Defines the type\n * @param {string} keyField - Defines the keyfield\n * @returns {void}\n * @hidden\n */\nexport function compareChanges(gObj, changes, type, keyField) {\n var newArray = gObj.dataToBeUpdated[\"\" + type].concat(changes[\"\" + type]).reduce(function (r, o) {\n r[o[\"\" + keyField]] = r[o[\"\" + keyField]] === undefined ? o : Object.assign(r[o[\"\" + keyField]], o);\n return r;\n }, {});\n gObj.dataToBeUpdated[\"\" + type] = Object.keys(newArray).map(function (k) { return newArray[\"\" + k]; });\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function setRowElements(gObj) {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-row:not(.e-addedrow)'));\n}\n/**\n * @param {Element} row - Defines the row\n * @param {number} start - Defines the start index\n * @param {number} end - Defines the end index\n * @returns {void}\n * @hidden\n */\nexport function sliceElements(row, start, end) {\n var cells = row.children;\n var len = cells.length;\n var k = 0;\n for (var i = 0; i < len; i++, k++) {\n if (i >= start && i < end) {\n continue;\n }\n row.removeChild(row.children[parseInt(k.toString(), 10)]);\n k--;\n }\n}\n/**\n * @param {Column} column - Defines the column\n * @param {string} uid - Defines the uid\n * @returns {boolean} Returns is child column\n * @hidden\n */\nexport function isChildColumn(column, uid) {\n var uids = [];\n uids.push(column.uid);\n pushuid(column, uids);\n if (uids.indexOf(uid) > -1) {\n return true;\n }\n else {\n return false;\n }\n}\n/**\n * @param {Column} column - Defines the column\n * @param {string[]} uids - Defines the uid\n * @returns {void}\n * @hidden\n */\nexport function pushuid(column, uids) {\n for (var i = 0; i < column.columns.length; i++) {\n if (column.columns[parseInt(i.toString(), 10)].uid) {\n uids.push(column.columns[parseInt(i.toString(), 10)].uid);\n }\n if (column.columns[parseInt(i.toString(), 10)].columns &&\n column.columns[parseInt(i.toString(), 10)].columns.length) {\n pushuid(column.columns[parseInt(i.toString(), 10)], uids);\n }\n }\n}\n/**\n * @param {Column} column - Defines the column\n * @returns {string} Returns the direction\n * @hidden\n */\nexport function frozenDirection(column) {\n if (column.columns[0].freeze || column.columns[0].isFrozen) {\n if (column.columns[0].freeze === 'Left' || column.columns[0].isFrozen) {\n return 'Left';\n }\n else if (column.columns[0].freeze === 'Right') {\n return 'Right';\n }\n else if (column.columns[0].freeze === 'Fixed') {\n return 'Fixed';\n }\n else {\n return 'None';\n }\n }\n else {\n if (column.columns[0].columns && column.columns[0].columns.length) {\n return frozenDirection(column.columns[0]);\n }\n else {\n return 'None';\n }\n }\n}\n/**\n * @param {Element} row - Defines the row\n * @returns {void}\n * @hidden\n */\nexport function addFixedColumnBorder(row) {\n if (row.querySelector('.e-fixedfreeze')) {\n var cells = [].slice.call(row.querySelectorAll('.e-filterbarcell:not(.e-hide),.e-summarycell:not(.e-hide),.e-headercell:not(.e-hide),.e-rowcell:not(.e-hide)'));\n for (var j = 0; j < cells.length; j++) {\n if (cells[parseInt(j.toString(), 10)].classList.contains('e-fixedfreeze') && (!(cells[j - 1]) ||\n (cells[j - 1] && !cells[j - 1].classList.contains('e-fixedfreeze')))) {\n cells[parseInt(j.toString(), 10)].classList.add('e-freezeleftborder');\n }\n if (cells[parseInt(j.toString(), 10)].classList.contains('e-fixedfreeze') && (!(cells[j + 1]) ||\n (cells[j + 1] && !cells[j + 1].classList.contains('e-fixedfreeze')))) {\n cells[parseInt(j.toString(), 10)].classList.add('e-freezerightborder');\n }\n }\n }\n}\n/**\n * @param {HTMLElement} node - Defines the row\n * @param {number} width - Defines the width\n * @param {boolean} isRtl - Boolean property\n * @param {string} position - Defines the position\n * @returns {void}\n * @hidden\n */\nexport function applyStickyLeftRightPosition(node, width, isRtl, position) {\n if (position === 'Left') {\n if (isRtl) {\n node.style.right = width + 'px';\n }\n else {\n node.style.left = width + 'px';\n }\n }\n if (position === 'Right') {\n if (isRtl) {\n node.style.left = width + 'px';\n }\n else {\n node.style.right = width + 'px';\n }\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @param {Column} column - Defines the column\n * @param {Element} node - Defines the Element\n * @returns {void}\n * @hidden\n */\nexport function addStickyColumnPosition(gObj, column, node) {\n if (column.freeze === 'Left' || column.isFrozen) {\n node.classList.add('e-leftfreeze');\n if (column.border === 'Left') {\n node.classList.add('e-freezeleftborder');\n }\n if (column.index === 0) {\n applyStickyLeftRightPosition(node, (gObj.getIndentCount() * 30), gObj.enableRtl, 'Left');\n if (gObj.enableColumnVirtualization) {\n column.valueX = (gObj.getIndentCount() * 30);\n }\n }\n else {\n var cols = gObj.getColumns();\n var width = gObj.getIndentCount() * 30;\n for (var i = 0; i < cols.length; i++) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, gObj.enableRtl, 'Left');\n if (gObj.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n }\n else if (column.freeze === 'Right') {\n node.classList.add('e-rightfreeze');\n var cols = gObj.getColumns();\n if (column.border === 'Right') {\n node.classList.add('e-freezerightborder');\n }\n if (column.index === cols[cols.length - 1].index) {\n var width = gObj.getFrozenMode() === 'Right' && gObj.isRowDragable() ? 30 : 0;\n applyStickyLeftRightPosition(node, width, gObj.enableRtl, 'Right');\n if (gObj.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n else {\n var width = gObj.getFrozenMode() === 'Right' && gObj.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, gObj.enableRtl, 'Right');\n if (gObj.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n }\n else if (column.freeze === 'Fixed') {\n node.classList.add('e-fixedfreeze');\n var cols = gObj.getColumns();\n var width = 0;\n if (gObj.getVisibleFrozenLeftCount()) {\n width = gObj.getIndentCount() * 30;\n }\n else if (gObj.getFrozenMode() === 'Right') {\n width = gObj.groupSettings.columns.length * 30;\n }\n for (var i = 0; i < cols.length; i++) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if ((cols[parseInt(i.toString(), 10)].freeze === 'Left' || cols[parseInt(i.toString(), 10)].isFrozen) ||\n cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n applyStickyLeftRightPosition(node, (width - 1), gObj.enableRtl, 'Left');\n width = gObj.getFrozenMode() === 'Right' && gObj.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].freeze === 'Right' || cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n applyStickyLeftRightPosition(node, (width - 1), gObj.enableRtl, 'Right');\n }\n else {\n node.classList.add('e-unfreeze');\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid Object\n * @param {Column} col - Defines the column\n * @param {number} rowIndex - Defines the rowindex\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function getCellsByTableName(gObj, col, rowIndex) {\n return [].slice.call(gObj.getDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell));\n}\n/**\n * @param {IGrid} gObj - Defines the column\n * @param {Column} col - Defines the index\n * @param {number} rowIndex - Defines the rules\n * @param {number} index - Defines the movable column rules\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getCellByColAndRowIndex(gObj, col, rowIndex, index) {\n return getCellsByTableName(gObj, col, rowIndex)[parseInt(index.toString(), 10)];\n}\n/**\n * @param {Column} col - Defines the column\n * @param {number} index - Defines the index\n * @param {Object} rules - Defines the rules\n * @param {Object} mRules - Defines the movable column rules\n * @param {Object} frRules - Defines the Frozen rules\n * @param {number} len - Defines the length\n * @param {boolean} isCustom - Defines custom form validation\n * @returns {void}\n * @hidden\n */\nexport function setValidationRuels(col, index, rules, mRules, frRules, len, isCustom) {\n if (isCustom) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else {\n if (col.getFreezeTableName() === literals.frozenLeft\n || (!index && col.getFreezeTableName() === literals.frozenRight) || len === 1) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === 'movable' || !col.getFreezeTableName()) {\n mRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n frRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n }\n}\n/**\n * @param {string} numberFormat - Format\n * @param {string} type - Value type\n * @param {boolean} isExcel - Boolean property\n * @param {string} currencyCode - Specifies the currency code to be used for formatting.\n * @returns {string} returns formated value\n * @hidden\n */\nexport function getNumberFormat(numberFormat, type, isExcel, currencyCode) {\n var format;\n var intl = new Internationalization();\n if (type === 'number') {\n try {\n format = intl.getNumberPattern({ format: numberFormat, currency: currencyCode, useGrouping: true }, true);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n else if (type === 'date' || type === 'time' || type === 'datetime') {\n try {\n format = intl.getDatePattern({ skeleton: numberFormat, type: type }, isExcel);\n if (isNullOrUndefined(format)) {\n // eslint-disable-next-line\n throw 'error';\n }\n }\n catch (error) {\n try {\n format = intl.getDatePattern({ format: numberFormat, type: type }, isExcel);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n }\n else {\n format = numberFormat;\n }\n if (type !== 'number') {\n var patternRegex = /G|H|c|'| a|yy|y|EEEE|E/g;\n var mtch_1 = { 'G': '', 'H': 'h', 'c': 'd', '\\'': '\"', ' a': ' AM/PM', 'yy': 'yy', 'y': 'yyyy', 'EEEE': 'dddd', 'E': 'ddd' };\n format = format.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return mtch_1[\"\" + pattern];\n });\n }\n return format;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @returns {void}\n * @hidden\n */\nexport function addBiggerDialog(gObj) {\n if (gObj.enableAdaptiveUI) {\n var dialogs = document.getElementsByClassName('e-responsive-dialog');\n for (var i = 0; i < dialogs.length; i++) {\n dialogs[parseInt(i.toString(), 10)].classList.add('e-bigger');\n }\n }\n}\n/**\n * @param {string} value - specifies the trr\n * @param {Object} mapObject - specifies the idx\n * @returns {Object | string} returns object or string\n * @hidden\n */\nexport function performComplexDataOperation(value, mapObject) {\n var returnObj;\n var length = value.split('.').length;\n var splits = value.split('.');\n var duplicateMap = mapObject;\n for (var i = 0; i < length; i++) {\n returnObj = duplicateMap[splits[parseInt(i.toString(), 10)]];\n duplicateMap = returnObj;\n }\n return returnObj;\n}\n/**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @param {IGrid} parent - Grid instance\n * @param {boolean} isContent - check for content renderer\n * @returns {void}\n * @hidden\n */\nexport function setDisplayValue(tr, idx, displayVal, rows, parent, isContent) {\n var trs = Object.keys(tr);\n var actualIndex = idx;\n for (var i = 0; i < trs.length; i++) {\n var td = tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)];\n if (parent && !parent.isFrozenGrid() && !parent.isRowDragable()) {\n td = (!isNullOrUndefined(td) && (parseInt(td.getAttribute('data-colindex'), 10) === idx))\n ? td : tr[parseInt(i.toString(), 10)].querySelector(\"td[data-colindex=\\\"\" + idx + \"\\\"]\");\n if (isNullOrUndefined(td)) {\n continue;\n }\n else {\n idx = (parent.getContentTable().querySelector('.e-detailrowcollapse, .e-detailrowexpand')) ?\n (td.cellIndex - 1) : td.cellIndex;\n }\n }\n if (tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell').length && td) {\n setStyleAttribute(tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)], { 'display': displayVal });\n if (tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)].classList.contains('e-hide')) {\n removeClass([tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)]], ['e-hide']);\n }\n if ((isContent && parent.isRowDragable()) || (parent && parent.isDetail())) {\n var index = idx + 1;\n rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(index.toString(), 10)].visible = displayVal === '' ? true : false;\n }\n else {\n if (!isNullOrUndefined(rows[trs[parseInt(i.toString(), 10)]])) {\n rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(idx.toString(), 10)].visible = displayVal === '' ? true : false;\n if (rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(idx.toString(), 10)].visible === false) {\n tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)].classList.add('e-hide');\n }\n }\n }\n idx = actualIndex;\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function addRemoveEventListener(parent, evt, isOn, module) {\n for (var _i = 0, evt_1 = evt; _i < evt_1.length; _i++) {\n var inst = evt_1[_i];\n if (isOn) {\n parent.on(inst.event, inst.handler, module);\n }\n else {\n parent.off(inst.event, inst.handler);\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function createEditElement(parent, column, classNames, attr) {\n var complexFieldName = getComplexFieldID(column.field);\n attr = Object.assign(attr, {\n id: parent.element.id + complexFieldName,\n name: complexFieldName, 'e-mappinguid': column.uid\n });\n return parent.createElement('input', {\n className: classNames, attrs: attr\n });\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} uid - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByUid(gObj, uid) {\n var column;\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.uid === uid) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} field - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByFieldName(gObj, field) {\n var column;\n if (!gObj.columnModel) {\n gObj.getColumns();\n }\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.field === field) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {string} id - Defines component id\n * @param {string[]} evts - Defines events\n * @param {object} handlers - Defines event handlers\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function registerEventHandlers(id, evts, handlers, instance) {\n instance.eventHandlers[\"\" + id] = {};\n for (var i = 0; i < evts.length; i++) {\n instance.eventHandlers[\"\" + id][evts[parseInt(i.toString(), 10)]] = handlers[evts[parseInt(i.toString(), 10)]];\n }\n}\n/**\n * @param {any} component - Defines component instance\n * @param {string[]} evts - Defines events\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function removeEventHandlers(component, evts, instance) {\n for (var i = 0; i < evts.length; i++) {\n if (component.isDestroyed) {\n break;\n }\n component.removeEventListener(evts[parseInt(i.toString(), 10)], instance.eventHandlers[component.element.id][evts[parseInt(i.toString(), 10)]]);\n }\n}\n/**\n * @param {IGrid | IXLFilter} parent - Defines parent instance\n * @param {string[]} templates - Defines the templates name which are needs to clear\n * @returns {void}\n * @hidden\n */\nexport function clearReactVueTemplates(parent, templates) {\n parent.destroyTemplate(templates);\n if (parent.isReact) {\n parent.renderTemplates();\n }\n}\n/**\n *\n * @param { Element } row - Defines row element\n * @returns { number } row index\n */\nexport function getRowIndexFromElement(row) {\n return parseInt(row.getAttribute(literals.dataRowIndex), 10);\n}\n/**\n *\n * @param { string[] } fields - Defines grouped fields\n * @param { values } values - Defines caption keys\n * @param { any } instance - Defines dynamic class instance\n * @returns { Predicate } returns filter predicate\n */\n// eslint-disable-next-line\nexport function generateExpandPredicates(fields, values, instance) {\n var filterCols = [];\n for (var i = 0; i < fields.length; i++) {\n var column = instance.parent.getColumnByField(fields[parseInt(i.toString(), 10)]);\n var value = values[parseInt(i.toString(), 10)] === 'null' ? null : values[parseInt(i.toString(), 10)];\n var pred = {\n field: fields[parseInt(i.toString(), 10)], predicate: 'or', uid: column.uid, operator: 'equal', type: column.type,\n matchCase: instance.allowCaseSensitive, ignoreAccent: instance.parent.filterSettings.ignoreAccent\n };\n if (value === '' || isNullOrUndefined(value)) {\n filterCols = filterCols.concat(CheckBoxFilterBase.generateNullValuePredicates(pred));\n }\n else {\n filterCols.push(extend({}, { value: value }, pred));\n }\n }\n return CheckBoxFilterBase.getPredicate(filterCols);\n}\n/**\n *\n * @param { Predicate } pred - Defines filter predicate\n * @returns { Predicate[] } Returns formed predicate\n */\nexport function getPredicates(pred) {\n var predicateList = [];\n for (var _i = 0, _a = Object.keys(pred); _i < _a.length; _i++) {\n var prop = _a[_i];\n predicateList.push(pred[\"\" + prop]);\n }\n return predicateList;\n}\n/**\n *\n * @param { number } index - Defines group caption indent\n * @param { Row[] } rowsObject - Defines rows object\n * @returns { { fields: string[], keys: string[] } } Returns grouped keys and values\n */\nexport function getGroupKeysAndFields(index, rowsObject) {\n var fields = [];\n var keys = [];\n for (var i = index; i >= 0; i--) {\n if (rowsObject[parseInt(i.toString(), 10)].isCaptionRow\n && fields.indexOf(rowsObject[parseInt(i.toString(), 10)].data.field) === -1\n && (rowsObject[parseInt(i.toString(), 10)].indent < rowsObject[parseInt(index.toString(), 10)].indent || i === index)) {\n fields.push(rowsObject[parseInt(i.toString(), 10)].data.field);\n keys.push(rowsObject[parseInt(i.toString(), 10)].data.key);\n if (rowsObject[parseInt(i.toString(), 10)].indent === 0) {\n break;\n }\n }\n }\n return { fields: fields, keys: keys };\n}\n// eslint-disable-next-line\n/**\n *\n * @param { number[][] } checkActiveMatrix - Defines matrix to check\n * @param { number[] } checkCellIndex - Defines index to check\n * @param { boolean } next - Defines select next or previous index\n * @returns { number[] } - Returns next active current index\n */\nexport function findCellIndex(checkActiveMatrix, checkCellIndex, next) {\n var activeMatrix = checkActiveMatrix;\n var cellIndex = checkCellIndex;\n var currentCellIndexPass = false;\n if (next) {\n for (var i = cellIndex[0]; i < activeMatrix.length; i++) {\n var rowCell = activeMatrix[parseInt(i.toString(), 10)];\n for (var j = 0; j < rowCell.length; j++) {\n if (currentCellIndexPass && activeMatrix[parseInt(i.toString(), 10)][parseInt(j.toString(), 10)] === 1) {\n cellIndex = [i, j];\n return cellIndex;\n }\n if (!currentCellIndexPass && cellIndex.toString() === [i, j].toString()) {\n currentCellIndexPass = true;\n }\n }\n }\n }\n else {\n for (var i = cellIndex[0]; i >= 0; i--) {\n var rowCell = activeMatrix[parseInt(i.toString(), 10)];\n for (var j = rowCell.length - 1; j >= 0; j--) {\n if (currentCellIndexPass && activeMatrix[parseInt(i.toString(), 10)][parseInt(j.toString(), 10)] === 1) {\n cellIndex = [i, j];\n return cellIndex;\n }\n if (!currentCellIndexPass && cellIndex.toString() === [i, j].toString()) {\n currentCellIndexPass = true;\n }\n }\n }\n }\n return cellIndex;\n}\n/**\n *\n * @param { string } string - Defines string need to capitalized first letter\n * @returns { string } - Returns capitalized first letter string\n */\nexport function capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var DropDownButtonItemsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-dropdownbuttonitems';\n }\n }\n});\nexport var DropDownButtonItemsPlugin = {\n name: 'e-dropdownbuttonitems',\n install: function (Vue) {\n Vue.component(DropDownButtonItemsPlugin.name, DropDownButtonItemsDirective);\n }\n};\nexport var DropDownButtonItemDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-dropdownbuttonitem';\n }\n }\n});\nexport var DropDownButtonItemPlugin = {\n name: 'e-dropdownbuttonitem',\n install: function (Vue) {\n Vue.component(DropDownButtonItemPlugin.name, DropDownButtonItemDirective);\n }\n};\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { DropDownButtonItemsDirective, DropDownButtonItemDirective, DropDownButtonItemsPlugin, DropDownButtonItemPlugin } from './items.directive';\nexport var properties = ['isLazyUpdate', 'plugins', 'closeActionEvents', 'content', 'createPopupOnClick', 'cssClass', 'disabled', 'enableHtmlSanitizer', 'enablePersistence', 'enableRtl', 'iconCss', 'iconPosition', 'items', 'locale', 'target', 'beforeClose', 'beforeItemRender', 'beforeOpen', 'close', 'created', 'open', 'select'];\nexport var modelProps = [];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents the Essential JS 2 VueJS DropDownButton Component\n * ```html\n * DropDownButton\n * ```\n */\nexport var DropDownButtonComponent = vueDefineComponent({\n name: 'DropDownButtonComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new DropDownButton({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: true,\n hasInjectedModules: false,\n tagMapper: { \"e-dropdownbuttonitems\": \"e-dropdownbuttonitem\" },\n tagNameMapper: { \"e-dropdownbuttonitems\": \"e-items\" },\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('button', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n custom: function () {\n this.updated();\n },\n addItems: function (items, text) {\n return this.ej2Instances.addItems(items, text);\n },\n focusIn: function () {\n return this.ej2Instances.focusIn();\n },\n removeItems: function (items, isUniqueId) {\n return this.ej2Instances.removeItems(items, isUniqueId);\n },\n toggle: function () {\n return this.ej2Instances.toggle();\n },\n }\n});\nexport var DropDownButtonPlugin = {\n name: 'ejs-dropdownbutton',\n install: function (Vue) {\n Vue.component(DropDownButtonPlugin.name, DropDownButtonComponent);\n Vue.component(DropDownButtonItemPlugin.name, DropDownButtonItemDirective);\n Vue.component(DropDownButtonItemsPlugin.name, DropDownButtonItemsDirective);\n }\n};\n","import { isNullOrUndefined, attributes } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject } from '../base/util';\nimport { CellType } from '../base/enum';\n/**\n * `CellMergeRender` module.\n *\n * @hidden\n */\nvar CellMergeRender = /** @class */ (function () {\n function CellMergeRender(serviceLocator, parent) {\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n }\n CellMergeRender.prototype.render = function (cellArgs, row, i, td) {\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[parseInt(i.toString(), 10)].cellType\n || CellType.Data);\n var colSpan = row.cells[parseInt(i.toString(), 10)].cellSpan ? row.cells[parseInt(i.toString(), 10)].cellSpan :\n (cellArgs.colSpan + i) <= row.cells.length ? cellArgs.colSpan : row.cells.length - i;\n var rowSpan = cellArgs.rowSpan;\n var visible = 0;\n var spannedCell;\n if (row.index > 0) {\n var rowsObject = this.parent.getRowsObject();\n var cells = this.parent.groupSettings.columns.length > 0 &&\n !rowsObject[row.index - 1].isDataRow ? rowsObject[row.index].cells : rowsObject[row.index - 1].cells;\n var targetCell_1 = row.cells[parseInt(i.toString(), 10)];\n var uid_1 = 'uid';\n spannedCell = cells.filter(function (cell) { return cell.column.uid === targetCell_1.column[\"\" + uid_1]; })[0];\n }\n var colSpanLen = spannedCell && spannedCell.colSpanRange > 1 && spannedCell.rowSpanRange > 1 ?\n spannedCell.colSpanRange : colSpan;\n for (var j = i + 1; j < i + colSpanLen && j < row.cells.length; j++) {\n if (row.cells[parseInt(j.toString(), 10)].visible === false) {\n visible++;\n }\n else {\n row.cells[parseInt(j.toString(), 10)].isSpanned = true;\n }\n }\n if (visible > 0) {\n for (var j = i + colSpan; j < i + colSpan + visible && j < row.cells.length; j++) {\n row.cells[parseInt(j.toString(), 10)].isSpanned = true;\n }\n if (i + colSpan + visible >= row.cells.length) {\n colSpan -= (i + colSpan + visible) - row.cells.length;\n }\n }\n if (row.cells[parseInt(i.toString(), 10)].cellSpan) {\n row.data[cellArgs.column.field] = row.cells[parseInt(i.toString(), 10)].spanText;\n td = cellRenderer.render(row.cells[parseInt(i.toString(), 10)], row.data, { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' });\n }\n if (colSpan > 1) {\n attributes(td, { 'colSpan': colSpan.toString(), 'aria-colSpan': colSpan.toString() });\n }\n if (rowSpan > 1) {\n attributes(td, { 'rowspan': rowSpan.toString(), 'aria-rowspan': rowSpan.toString() });\n row.cells[parseInt(i.toString(), 10)].isRowSpanned = true;\n row.cells[parseInt(i.toString(), 10)].rowSpanRange = Number(rowSpan);\n if (colSpan > 1) {\n row.cells[parseInt(i.toString(), 10)].colSpanRange = Number(colSpan);\n }\n }\n if (row.index > 0 && (spannedCell.rowSpanRange > 1)) {\n row.cells[parseInt(i.toString(), 10)].isSpanned = true;\n row.cells[parseInt(i.toString(), 10)].rowSpanRange = Number(spannedCell.rowSpanRange - 1);\n row.cells[parseInt(i.toString(), 10)].colSpanRange = spannedCell.rowSpanRange > 0 ? spannedCell.colSpanRange : 1;\n }\n if (this.parent.enableColumnVirtualization && !row.cells[parseInt(i.toString(), 10)].cellSpan &&\n !this.containsKey(cellArgs.column.field, cellArgs.data[cellArgs.column.field])) {\n this.backupMergeCells(cellArgs.column.field, cellArgs.data[cellArgs.column.field], cellArgs.colSpan);\n }\n return td;\n };\n CellMergeRender.prototype.backupMergeCells = function (fName, data, span) {\n this.setMergeCells(this.generteKey(fName, data), span);\n };\n CellMergeRender.prototype.generteKey = function (fname, data) {\n return fname + '__' + data.toString();\n };\n CellMergeRender.prototype.splitKey = function (key) {\n return key.split('__');\n };\n CellMergeRender.prototype.containsKey = function (fname, data) {\n // eslint-disable-next-line no-prototype-builtins\n return this.getMergeCells().hasOwnProperty(this.generteKey(fname, data));\n };\n CellMergeRender.prototype.getMergeCells = function () {\n return this.parent.mergeCells;\n };\n CellMergeRender.prototype.setMergeCells = function (key, span) {\n this.parent.mergeCells[\"\" + key] = span;\n };\n CellMergeRender.prototype.updateVirtualCells = function (rows) {\n var mCells = this.getMergeCells();\n for (var _i = 0, _a = Object.keys(mCells); _i < _a.length; _i++) {\n var key = _a[_i];\n var value = mCells[\"\" + key];\n var merge = this.splitKey(key);\n var columnIndex = this.getIndexFromAllColumns(merge[0]);\n var vColumnIndices = this.parent.getColumnIndexesInView();\n var span = value - (vColumnIndices[0] - columnIndex);\n if (columnIndex < vColumnIndices[0] && span > 1) {\n for (var _b = 0, rows_1 = rows; _b < rows_1.length; _b++) {\n var row = rows_1[_b];\n if (row.data[merge[0]].toString() === merge[1].toString()) {\n row.cells[0].cellSpan = span;\n row.cells[0].spanText = merge[1];\n break;\n }\n }\n }\n }\n return rows;\n };\n CellMergeRender.prototype.getIndexFromAllColumns = function (field) {\n var index = iterateArrayOrObject(this.parent.getVisibleColumns(), function (item, index) {\n if (item.field === field) {\n return index;\n }\n return undefined;\n })[0];\n return index;\n };\n return CellMergeRender;\n}());\nexport { CellMergeRender };\n","import { EventHandler, extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { remove, select, removeClass } from '@syncfusion/ej2-base';\nimport { Toolbar as tool } from '@syncfusion/ej2-navigations';\nimport * as events from '../base/constant';\nimport { templateCompiler, appendChildren, parentsUntil, addRemoveEventListener, applyBiggerTheme } from '../base/util';\nimport { ResponsiveToolbarAction } from '../base/enum';\nimport { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { SearchBox } from '../services/focus-strategy';\n/**\n *\n * The `Toolbar` module is used to handle ToolBar actions.\n */\nvar Toolbar = /** @class */ (function () {\n function Toolbar(parent, serviceLocator) {\n this.predefinedItems = {};\n this.isSearched = false;\n this.items = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print', 'Search',\n 'ColumnChooser', 'PdfExport', 'ExcelExport', 'CsvExport', 'WordExport'];\n this.isRightToolbarMenu = false;\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n Toolbar.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n var preItems = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print',\n 'PdfExport', 'ExcelExport', 'WordExport', 'CsvExport'];\n var isAdaptive = this.parent.enableAdaptiveUI;\n var excludingItems = ['Edit', 'Delete', 'Update', 'Cancel'];\n for (var _i = 0, preItems_1 = preItems; _i < preItems_1.length; _i++) {\n var item = preItems_1[_i];\n var itemStr = item.toLowerCase();\n var localeName = itemStr[0].toUpperCase() + itemStr.slice(1);\n this.predefinedItems[\"\" + item] = {\n id: this.gridID + '_' + itemStr, prefixIcon: 'e-' + itemStr,\n text: this.l10n.getConstant(localeName), tooltipText: this.l10n.getConstant(localeName)\n };\n if (isAdaptive) {\n this.predefinedItems[\"\" + item].text = '';\n this.predefinedItems[\"\" + item].visible = excludingItems.indexOf(item) === -1;\n }\n }\n this.predefinedItems.Search = {\n id: this.gridID + '_search',\n tooltipText: this.l10n.getConstant('Search'), align: 'Right', cssClass: 'e-search-wrapper',\n type: 'Input'\n };\n this.isRightToolbarMenu = false;\n if (this.parent.enableAdaptiveUI && this.isResponsiveToolbarMenuItems(true) && ((this.parent.rowRenderingMode === 'Horizontal') ||\n (this.parent.rowRenderingMode === 'Vertical' && !this.parent.allowFiltering && !this.parent.allowSorting))) {\n this.isRightToolbarMenu = true;\n }\n if (isAdaptive && this.isResponsiveToolbarMenuItems(false)) {\n this.predefinedItems.responsiveToolbarItems = {\n id: this.gridID + '_' + 'responsivetoolbaritems', cssClass: 'e-responsive-toolbar-items e-menu-toolbar', suffixIcon: 'e-' + 'responsivetoolbaritems-btn',\n align: this.isRightToolbarMenu ? 'Left' : 'Right'\n };\n }\n else {\n this.predefinedItems.ColumnChooser = {\n id: this.gridID + '_' + 'columnchooser', cssClass: 'e-cc e-ccdiv e-cc-toolbar', suffixIcon: 'e-' + 'columnchooser-btn',\n text: isAdaptive ? '' : this.l10n.getConstant('Columnchooser'),\n tooltipText: this.l10n.getConstant('Columnchooser'), align: 'Right'\n };\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n if (this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') {\n this.predefinedItems.responsiveFilter = {\n id: this.gridID + '_' + 'responsivefilter', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resfilter-icon', tooltipText: this.l10n.getConstant('FilterButton')\n };\n }\n if (this.parent.allowSorting) {\n this.predefinedItems.responsiveSort = {\n id: this.gridID + '_' + 'responsivesort', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'ressort-icon', tooltipText: this.l10n.getConstant('Sort')\n };\n }\n }\n if (this.parent.enableAdaptiveUI && this.parent.toolbar && this.parent.toolbar.indexOf('Search') > -1) {\n this.predefinedItems.responsiveBack = {\n id: this.gridID + '_' + 'responsiveback', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resback-icon', visible: false\n };\n }\n this.createToolbar();\n if (this.parent.enableAdaptiveUI) {\n if (isNullOrUndefined(this.responsiveToolbarMenu)) {\n this.renderResponsiveToolbarpopup();\n }\n this.toolbar.refreshOverflow();\n }\n };\n Toolbar.prototype.isResponsiveToolbarMenuItems = function (isRight) {\n var items = isRight ? ['Add', 'Edit', 'Delete', 'Search'] : ['Print', 'ColumnChooser', 'PdfExport', 'ExcelExport', 'CsvExport'];\n var toolbarItems = this.parent.toolbar || [];\n for (var i = 0; i < items.length; i++) {\n if (toolbarItems.indexOf(items[parseInt(i.toString(), 10)]) >= 0) {\n return isRight ? false : true;\n }\n }\n return isRight ? true : false;\n };\n /**\n * Gets the toolbar of the Grid.\n *\n * @returns {Element} returns the element\n * @hidden\n */\n Toolbar.prototype.getToolbar = function () {\n return this.toolbar.element;\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n */\n Toolbar.prototype.destroy = function () {\n if (this.toolbar && !this.toolbar.isDestroyed) {\n if (this.responsiveToolbarMenu) {\n this.responsiveToolbarMenu.destroy();\n }\n if (!this.toolbar.element) {\n this.parent.destroyTemplate(['toolbarTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n this.toolbar.off('render-react-toolbar-template', this.addReactToolbarPortals);\n this.toolbar.destroy();\n }\n this.unWireEvent();\n this.removeEventListener();\n if (this.element.parentNode) {\n remove(this.element);\n }\n }\n };\n Toolbar.prototype.bindSearchEvents = function () {\n this.searchElement = select('#' + this.gridID + '_searchbar', this.element);\n this.wireEvent();\n this.refreshToolbarItems();\n if (this.parent.searchSettings) {\n this.updateSearchBox();\n }\n };\n Toolbar.prototype.toolbarCreated = function (isNormal) {\n if (this.element.querySelector('.e-search-wrapper')) {\n if (!this.parent.enableAdaptiveUI || isNormal) {\n var classList = this.parent.cssClass ? 'e-input-group e-search ' + this.parent.cssClass\n : 'e-input-group e-search';\n this.element.querySelector('.e-search-wrapper').innerHTML = '
\\\n \\\n \\\n \\\n
';\n }\n else {\n this.element.querySelector('.e-search-wrapper').innerHTML = '\\\n \\\n
';\n }\n }\n if (this.element.querySelector('.e-responsive-toolbar-items')) {\n this.element.querySelector('.e-responsive-toolbar-items').innerHTML = '\n * ```\n * ```typescript\n * \n * ```\n */\nvar DropDownButton = /** @class */ (function (_super) {\n __extends(DropDownButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DropDownButtonModel} options - Specifies dropdown button model\n * @param {string|HTMLButtonElement} element - Specifies element\n * @hidden\n */\n function DropDownButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPopupCreated = true;\n return _this;\n }\n DropDownButton.prototype.preRender = function () {\n /** */\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n DropDownButton.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @returns {void}\n */\n DropDownButton.prototype.toggle = function () {\n if (this.canOpen()) {\n this.openPopUp();\n }\n else if (this.createPopupOnClick && !this.isPopupCreated) {\n this.createPopup();\n this.openPopUp();\n }\n else {\n this.closePopup();\n }\n };\n /**\n * Initialize the Component rendering\n *\n * @returns {void}\n * @private\n */\n DropDownButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n };\n /**\n * Adds a new item to the menu. By default, new item appends to the list as the last item,\n * but you can insert based on the text parameter.\n *\n * @param { ItemModel[] } items - Specifies an array of JSON data.\n * @param { string } text - Specifies the text to insert the newly added item in the menu.\n * @returns {void}.\n */\n DropDownButton.prototype.addItems = function (items, text) {\n var newItem;\n var idx = this.items.length;\n for (var j = 0, len = this.items.length; j < len; j++) {\n if (text === this.items[j].text) {\n idx = j;\n break;\n }\n }\n for (var i = items.length - 1; i >= 0; i--) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newItem = new Item(this, 'items', items[i], true);\n this.items.splice(idx, 0, newItem);\n }\n if (!this.canOpen()) {\n this.createItems();\n }\n };\n /**\n * Removes the items from the menu.\n *\n * @param { string[] } items - Specifies an array of string to remove the items.\n * @param { string } isUniqueId - Set `true` if specified items is a collection of unique id.\n * @returns {void}.\n */\n DropDownButton.prototype.removeItems = function (items, isUniqueId) {\n var refresh = false;\n for (var i = 0, len = items.length; i < len; i++) {\n for (var j = 0, len_1 = this.items.length; j < len_1; j++) {\n if (items[i] === (isUniqueId ? this.items[j].id : this.items[j].text)) {\n this.items.splice(j, 1);\n refresh = true;\n break;\n }\n }\n }\n if (refresh && this.getULElement()) {\n this.createItems();\n }\n };\n DropDownButton.prototype.createPopup = function () {\n var _a;\n var div = this.createElement('div', {\n className: classNames.POPUP,\n id: this.element.id + '-popup'\n });\n document.body.appendChild(div);\n this.dropDown = new Popup(div, {\n relateTo: this.element,\n collision: { X: 'fit', Y: 'flip' },\n position: { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n content: this.target ? this.getTargetElement() : '',\n enableRtl: this.enableRtl\n });\n this.dropDown.element.setAttribute('role', 'dialog');\n this.dropDown.element.setAttribute('aria-label', 'dropdown menu');\n if (!isNullOrUndefined(this.popupContent)) {\n this.popupContent.style.display = '';\n }\n if (this.dropDown.element.style.position === 'fixed') {\n this.dropDown.refreshPosition(this.element);\n }\n this.dropDown.hide();\n attributes(this.element, (_a = {},\n _a['aria-haspopup'] = this.items.length || this.target ? 'true' : 'false',\n _a['aria-expanded'] = 'false',\n _a['type'] = 'button',\n _a));\n if (this.cssClass) {\n addClass([div], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.isPopupCreated = true;\n };\n DropDownButton.prototype.getTargetElement = function () {\n if (this.createPopupOnClick && !this.isColorPicker() && !isNullOrUndefined(this.popupContent)) {\n return this.popupContent;\n }\n return typeof (this.target) === 'string' ? select(this.target) : this.target;\n };\n DropDownButton.prototype.createItems = function (appendItems) {\n var items = this.items;\n var showIcon = this.hasIcon(this.items, 'iconCss');\n var span;\n var item;\n var li;\n var eventArgs;\n var ul = this.getULElement();\n if (ul) {\n ul.innerHTML = '';\n }\n else {\n ul = this.createElement('ul', {\n attrs: { 'role': 'menu', 'tabindex': '0' }\n });\n }\n for (var i = 0; i < items.length; i++) {\n item = items[i];\n var tempItem = item.text;\n li = this.createElement('li', {\n innerHTML: item.url ? '' : tempItem,\n className: item.separator ? classNames.ITEM + ' ' + classNames.SEPARATOR : classNames.ITEM,\n attrs: item.separator ? { 'role': 'separator', 'tabindex': '-1', 'aria-label': 'separator', 'aria-hidden': 'true' } : { 'role': 'menuitem', 'tabindex': '-1', 'aria-label': tempItem },\n id: item.id ? item.id : getUniqueID('e-' + this.getModuleName() + '-item')\n });\n if (this.enableHtmlSanitizer) {\n li.textContent = item.url ? '' : tempItem;\n }\n else {\n li.innerHTML = item.url ? '' : tempItem;\n }\n if (item.url) {\n li.appendChild(this.createAnchor(item));\n li.classList.add('e-url');\n }\n if (item.iconCss) {\n span = this.createElement('span', { className: classNames.ICON + ' ' + item.iconCss });\n if (item.url) {\n li.childNodes[0].appendChild(span);\n }\n else {\n li.insertBefore(span, li.childNodes[0]);\n }\n }\n else {\n if (showIcon && !item.separator) {\n li.classList.add('e-blank-icon');\n }\n }\n var beforeDisabled = item.disabled;\n if (item.disabled) {\n li.classList.add('e-disabled');\n }\n eventArgs = { item: item, element: li };\n this.trigger('beforeItemRender', eventArgs);\n var afterDisabled = eventArgs.item.disabled;\n if (beforeDisabled !== afterDisabled) {\n if (eventArgs.item.disabled) {\n li.classList.add('e-disabled');\n }\n else {\n li.classList.remove('e-disabled');\n }\n }\n ul.appendChild(li);\n }\n if (appendItems) {\n this.getPopUpElement().appendChild(ul);\n }\n if (showIcon) {\n setBlankIconStyle(this.getPopUpElement());\n }\n };\n DropDownButton.prototype.hasIcon = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n DropDownButton.prototype.createAnchor = function (item) {\n var tempItem = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(item.text) : item.text;\n return this.createElement('a', { className: 'e-menu-text e-menu-url', innerHTML: tempItem, attrs: { 'href': item.url } });\n };\n DropDownButton.prototype.initialize = function () {\n this.button = new Button({\n iconCss: this.iconCss, iconPosition: this.iconPosition, cssClass: this.cssClass, content: this.content,\n disabled: this.disabled, enableRtl: this.enableRtl, enablePersistence: this.enablePersistence\n });\n this.button.createElement = this.createElement;\n this.button.appendTo(this.element);\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.appendArrowSpan();\n this.setActiveElem([this.element]);\n this.element.setAttribute('aria-label', this.element.textContent ? this.element.textContent : 'dropdownbutton');\n if ((this.target && !this.isColorPicker() && !this.createPopupOnClick) || !this.createPopupOnClick) {\n this.createPopup();\n }\n else {\n this.isPopupCreated = false;\n if (this.target && !this.isColorPicker() && this.createPopupOnClick) {\n this.popupContent = this.getTargetElement();\n this.popupContent.style.display = 'none';\n }\n }\n };\n DropDownButton.prototype.isColorPicker = function () {\n if (!this.element) {\n return false;\n }\n var prevElem = this.element.previousSibling;\n if (prevElem && prevElem.classList && prevElem.classList.contains('e-split-colorpicker')) {\n return true;\n }\n return false;\n };\n DropDownButton.prototype.appendArrowSpan = function () {\n this.element.appendChild(this.createElement('span', {\n className: 'e-btn-icon e-icons ' + 'e-icon-' + (this.cssClass.indexOf(classNames.VERTICAL) > -1\n ? 'bottom' : 'right') + ' e-caret'\n }));\n };\n DropDownButton.prototype.setActiveElem = function (elem) {\n this.activeElem = elem;\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n DropDownButton.prototype.getModuleName = function () {\n return 'dropdown-btn';\n };\n DropDownButton.prototype.canOpen = function () {\n var val = false;\n if (this.isPopupCreated) {\n val = this.getPopUpElement().classList.contains('e-popup-close');\n }\n return val;\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n DropDownButton.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'dropdown-btn') {\n var classList_1;\n if (this.element.querySelector('span.e-caret')) {\n detach(this.element.querySelector('span.e-caret'));\n }\n if (this.cssClass) {\n classList_1 = this.cssClass.split(' ');\n }\n this.button.destroy();\n if (classList_1) {\n removeClass([this.element], classList_1);\n }\n removeClass(this.activeElem, ['e-active']);\n var attrList = this.element.getAttribute('class') ? ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type']\n : ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type', 'class'];\n attrList.forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n this.popupUnWireEvents();\n this.destroyPopup();\n this.isPopupCreated = false;\n if (!this.disabled) {\n this.unWireEvents();\n }\n }\n };\n DropDownButton.prototype.destroyPopup = function () {\n if (this.isPopupCreated) {\n this.dropDown.destroy();\n if (this.getPopUpElement()) {\n var popupEle = document.getElementById(this.getPopUpElement().id);\n if (popupEle) {\n removeClass([popupEle], ['e-popup-open', 'e-popup-close']);\n detach(popupEle);\n }\n }\n EventHandler.remove(this.getPopUpElement(), 'click', this.clickHandler);\n EventHandler.remove(this.getPopUpElement(), 'keydown', this.keyBoardHandler);\n if (this.isPopupCreated && this.dropDown) {\n this.dropDown.element = null;\n this.dropDown = undefined;\n }\n }\n this.isPopupCreated = false;\n };\n DropDownButton.prototype.getPopUpElement = function () {\n var val = null;\n if (!this.dropDown && this.activeElem[0].classList.contains('e-split-btn')) {\n var dropDownBtn = getComponent(this.activeElem[1], 'dropdown-btn');\n if (dropDownBtn) {\n this.dropDown = dropDownBtn.dropDown;\n }\n }\n if (this.dropDown) {\n val = this.dropDown.element;\n }\n return val;\n };\n DropDownButton.prototype.getULElement = function () {\n var val = null;\n if (this.getPopUpElement()) {\n val = this.getPopUpElement().children[0];\n }\n return val;\n };\n DropDownButton.prototype.wireEvents = function () {\n this.delegateMousedownHandler = this.mousedownHandler.bind(this);\n if (!this.createPopupOnClick) {\n EventHandler.add(document, 'mousedown touchstart', this.delegateMousedownHandler, this);\n }\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyBoardHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n };\n DropDownButton.prototype.windowResize = function () {\n if (!this.canOpen() && this.dropDown) {\n this.dropDown.refreshPosition(this.element);\n }\n };\n DropDownButton.prototype.popupWireEvents = function () {\n if (!this.delegateMousedownHandler) {\n this.delegateMousedownHandler = this.mousedownHandler.bind(this);\n }\n var popupElement = this.getPopUpElement();\n if (this.createPopupOnClick) {\n EventHandler.add(document, 'mousedown touchstart', this.delegateMousedownHandler, this);\n }\n if (popupElement) {\n EventHandler.add(popupElement, 'click', this.clickHandler, this);\n EventHandler.add(popupElement, 'keydown', this.keyBoardHandler, this);\n if (this.closeActionEvents) {\n EventHandler.add(popupElement, this.closeActionEvents, this.focusoutHandler, this);\n }\n }\n this.rippleFn = rippleEffect(popupElement, { selector: '.' + classNames.ITEM });\n };\n DropDownButton.prototype.popupUnWireEvents = function () {\n var popupElement = this.getPopUpElement();\n if (this.createPopupOnClick) {\n EventHandler.remove(document, 'mousedown touchstart', this.delegateMousedownHandler);\n }\n if (popupElement && popupElement.parentElement) {\n EventHandler.remove(popupElement, 'click', this.clickHandler);\n EventHandler.remove(popupElement, 'keydown', this.keyBoardHandler);\n if (this.closeActionEvents) {\n EventHandler.remove(popupElement, this.closeActionEvents, this.focusoutHandler);\n }\n }\n if (isRippleEnabled && this.rippleFn) {\n this.rippleFn();\n }\n };\n /**\n * Handles the keyboard interactions.\n *\n * @param {KeyboardEventArgs} e - Specifies keyboard event args.\n * @returns {void}\n * @hidden\n */\n DropDownButton.prototype.keyBoardHandler = function (e) {\n if (e.target === this.element && (e.keyCode === 9 || (!e.altKey && e.keyCode === 40) || e.keyCode === 38)) {\n return;\n }\n switch (e.keyCode) {\n case 38:\n case 40:\n if (e.altKey && (e.keyCode === 38 || e.keyCode === 40)) {\n this.keyEventHandler(e);\n }\n else {\n this.upDownKeyHandler(e);\n }\n break;\n case 9:\n case 13:\n case 27:\n case 32:\n this.keyEventHandler(e);\n break;\n }\n };\n DropDownButton.prototype.upDownKeyHandler = function (e) {\n if (this.target && (e.keyCode === 38 || e.keyCode === 40)) {\n return;\n }\n e.preventDefault();\n upDownKeyHandler(this.getULElement(), e.keyCode);\n };\n DropDownButton.prototype.keyEventHandler = function (e) {\n if (this.target && (e.keyCode === 13 || e.keyCode === 9)) {\n return;\n }\n if (e.keyCode === 13 && this.activeElem[0].classList.contains('e-split-btn')) {\n this.triggerSelect(e);\n this.activeElem[0].focus();\n return;\n }\n if (e.target && e.target.className.indexOf('e-edit-template') > -1 && e.keyCode === 32) {\n return;\n }\n if (e.keyCode !== 9) {\n e.preventDefault();\n }\n if (e.keyCode === 27 || e.keyCode === 38 || e.keyCode === 9) {\n if (!this.canOpen()) {\n this.closePopup(e, this.element);\n }\n }\n else {\n this.clickHandler(e);\n }\n };\n DropDownButton.prototype.getLI = function (elem) {\n return elem.tagName === 'LI' ? elem : closest(elem, 'li');\n };\n DropDownButton.prototype.mousedownHandler = function (e) {\n var trgt = e.target;\n if (this.dropDown && !this.canOpen() && !(closest(trgt, '[id=\"' + this.getPopUpElement().id + '\"]')\n || closest(trgt, '[id=\"' + this.element.id + '\"]'))) {\n this.closePopup(e);\n }\n };\n DropDownButton.prototype.focusoutHandler = function (e) {\n if (this.isPopupCreated && !this.canOpen()) {\n var liTarget = e.relatedTarget;\n if (liTarget && liTarget.className.indexOf('e-item') > -1) {\n var li = this.getLI(liTarget);\n if (li) {\n var liIdx = Array.prototype.indexOf.call(this.getULElement().children, li);\n var item = this.items[liIdx];\n if (item) {\n var selectEventArgs = { element: li, item: item, event: e };\n this.trigger('select', selectEventArgs);\n }\n }\n }\n this.closePopup(e);\n }\n };\n DropDownButton.prototype.clickHandler = function (e) {\n var trgt = e.target;\n if (closest(trgt, '[id=\"' + this.element.id + '\"]')) {\n if (!this.createPopupOnClick || (this.target && this.target !== '' && !this.isColorPicker() && !this.createPopupOnClick)) {\n if (this.getPopUpElement().classList.contains('e-popup-close')) {\n this.openPopUp(e);\n }\n else {\n this.closePopup(e);\n }\n }\n else if (this.isPopupCreated) {\n this.closePopup(e, this.activeElem[0]);\n }\n else {\n this.createPopup();\n this.openPopUp(e);\n }\n }\n else {\n if (closest(trgt, '[id=\"' + this.getPopUpElement().id + '\"]')) {\n var li = this.getLI(e.target);\n if (li) {\n this.triggerSelect(e);\n this.closePopup(e, this.activeElem[0]);\n }\n }\n }\n };\n DropDownButton.prototype.triggerSelect = function (e) {\n var eventArgs;\n var liIdx;\n var item;\n var li = this.getLI(e.target);\n if (li) {\n liIdx = Array.prototype.indexOf.call(this.getULElement().children, li);\n item = this.items[liIdx];\n if (item) {\n eventArgs = { element: li, item: item, event: e };\n this.trigger('select', eventArgs);\n }\n }\n };\n DropDownButton.prototype.openPopUp = function (e) {\n var _this = this;\n if (e === void 0) { e = null; }\n var isReact = false;\n var popupElem = this.getPopUpElement();\n if (!this.target) {\n this.createItems(true);\n }\n else {\n if (this.activeElem.length > 1) {\n var splitButton = getComponent(this.activeElem[0], 'split-btn');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (splitButton.isReact && popupElem.childNodes.length < 1) {\n isReact = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n splitButton.appendReactElement(this.getTargetElement(), this.getPopUpElement());\n this.renderReactTemplates();\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && popupElem.childNodes.length < 1) {\n isReact = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.appendReactElement(this.getTargetElement(), this.getPopUpElement());\n this.renderReactTemplates();\n }\n }\n }\n var ul = this.getULElement();\n this.popupWireEvents();\n var beforeOpenArgs = { element: ul, items: this.items, event: e, cancel: false };\n this.trigger('beforeOpen', beforeOpenArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var ul_1 = _this.getULElement();\n _this.dropDown.show(null, _this.element);\n addClass([_this.element], 'e-active');\n _this.element.setAttribute('aria-expanded', 'true');\n _this.element.setAttribute('aria-owns', _this.getPopUpElement().id);\n if (ul_1) {\n ul_1.focus();\n }\n if (_this.enableRtl && ul_1.parentElement.style.left !== '0px') {\n var wrapperWidth = void 0;\n if (_this.element.parentElement && _this.element.parentElement.classList.contains('e-split-btn-wrapper')) {\n wrapperWidth = _this.element.parentElement.offsetWidth;\n }\n else {\n wrapperWidth = _this.element.offsetWidth;\n }\n var popupRect = ul_1.parentElement.offsetWidth - wrapperWidth;\n var popupLeft = parseFloat(ul_1.parentElement.style.left) - popupRect;\n if (popupLeft < 0) {\n popupLeft = 0;\n }\n ul_1.parentElement.style.left = popupLeft + \"px\";\n }\n var openArgs = { element: ul_1, items: _this.items };\n _this.trigger('open', openArgs);\n }\n });\n };\n DropDownButton.prototype.closePopup = function (e, focusEle) {\n var _this = this;\n if (e === void 0) { e = null; }\n var ul = this.getULElement();\n var beforeCloseArgs = { element: ul, items: this.items, event: e, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var popupElement = _this.getPopUpElement();\n if (popupElement) {\n EventHandler.remove(popupElement, 'keydown', _this.keyBoardHandler);\n }\n _this.popupUnWireEvents();\n var ul_2 = _this.getULElement();\n var selectedLi = void 0;\n if (ul_2) {\n selectedLi = ul_2.querySelector('.e-selected');\n }\n if (selectedLi) {\n selectedLi.classList.remove('e-selected');\n }\n _this.dropDown.hide();\n removeClass(_this.activeElem, 'e-active');\n _this.element.setAttribute('aria-expanded', 'false');\n _this.element.removeAttribute('aria-owns');\n if (focusEle) {\n focusEle.focus();\n }\n var closeArgs = { element: ul_2, items: _this.items };\n _this.trigger('close', closeArgs);\n if (!_this.target && ul_2) {\n detach(ul_2);\n }\n if (!_this.target || _this.isColorPicker() || (_this.target && !_this.isColorPicker())) {\n if (_this.createPopupOnClick) {\n _this.destroyPopup();\n }\n }\n }\n else {\n if (ul) {\n ul.focus();\n }\n }\n });\n };\n DropDownButton.prototype.unWireEvents = function () {\n if (!this.createPopupOnClick) {\n EventHandler.remove(document, 'mousedown touchstart', this.delegateMousedownHandler);\n }\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keydown', this.keyBoardHandler);\n if (this.isPopupCreated) {\n EventHandler.remove(this.getPopUpElement(), 'click', this.clickHandler);\n EventHandler.remove(this.getPopUpElement(), 'keydown', this.keyBoardHandler);\n }\n EventHandler.remove(window, 'resize', this.windowResize);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DropDownButtonModel} newProp - Specifies new properties\n * @param {DropDownButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n DropDownButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var btnModel = ['content', 'cssClass', 'iconCss', 'iconPosition', 'disabled', 'enableRtl'];\n this.button.setProperties(getModel(newProp, btnModel));\n var popupElement;\n if (this.isPopupCreated) {\n popupElement = this.getPopUpElement();\n this.dropDown.setProperties(getModel(newProp, ['enableRtl']));\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!this.element.querySelector('span.e-caret')) {\n this.appendArrowSpan();\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.unWireEvents();\n if (this.isPopupCreated && !this.canOpen()) {\n this.closePopup();\n }\n }\n else {\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (newProp.cssClass.indexOf(classNames.VERTICAL) > -1 || oldProp.cssClass.indexOf(classNames.VERTICAL) > -1) {\n if (!this.element.querySelector('span.e-caret')) {\n this.appendArrowSpan();\n }\n var arrowSpan = this.element.querySelector('span.e-caret');\n newProp.cssClass.indexOf(classNames.VERTICAL) > -1 ? classList(arrowSpan, ['e-icon-bottom'], ['e-icon-right'])\n : classList(arrowSpan, ['e-icon-right'], ['e-icon-bottom']);\n }\n if (this.isPopupCreated) {\n if (oldProp.cssClass) {\n removeClass([popupElement], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([popupElement], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n }\n break;\n case 'target':\n this.dropDown.content = this.getTargetElement();\n this.dropDown.dataBind();\n break;\n case 'items':\n if (this.isPopupCreated && this.getULElement()) {\n this.createItems();\n }\n break;\n case 'createPopupOnClick':\n if (newProp.createPopupOnClick) {\n this.destroyPopup();\n }\n else {\n this.createPopup();\n }\n break;\n }\n }\n };\n /**\n * Sets the focus to DropDownButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n DropDownButton.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], DropDownButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property('Left')\n ], DropDownButton.prototype, \"iconPosition\", void 0);\n __decorate([\n Property(false)\n ], DropDownButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Collection([], Item)\n ], DropDownButton.prototype, \"items\", void 0);\n __decorate([\n Property(false)\n ], DropDownButton.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"created\", void 0);\n DropDownButton = __decorate([\n NotifyPropertyChanges\n ], DropDownButton);\n return DropDownButton;\n}(Component));\nexport { DropDownButton };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Row\n *\n * @hidden\n */\nvar Row = /** @class */ (function () {\n function Row(options, parent) {\n merge(this, options);\n this.parent = parent;\n }\n Row.prototype.clone = function () {\n var row = new Row({});\n merge(row, this);\n row.cells = this.cells.map(function (cell) { return cell.clone(); });\n return row;\n };\n /**\n * Replaces the row data and grid refresh the particular row element only.\n *\n * @param {Object} data - To update new data for the particular row.\n * @returns {void}\n */\n Row.prototype.setRowValue = function (data) {\n if (!this.parent) {\n return;\n }\n var key = this.data[this.parent.getPrimaryKeyFieldNames()[0]];\n this.parent.setRowData(key, data);\n };\n /**\n * Replaces the given field value and refresh the particular cell element only.\n *\n * @param {string} field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n * @returns {void}\n */\n Row.prototype.setCellValue = function (field, value) {\n if (!this.parent) {\n return;\n }\n var isValDiff = !(this.data[\"\" + field].toString() === value.toString());\n if (isValDiff) {\n var pKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var key = this.data[\"\" + pKeyField];\n this.parent.setCellValue(key, field, value);\n this.makechanges(pKeyField, this.data);\n }\n else {\n return;\n }\n };\n Row.prototype.makechanges = function (key, data) {\n if (!this.parent) {\n return;\n }\n var gObj = this.parent;\n var dataManager = gObj.getDataModule().dataManager;\n dataManager.update(key, data);\n };\n return Row;\n}());\nexport { Row };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Cell\n *\n * @hidden\n */\nvar Cell = /** @class */ (function () {\n function Cell(options) {\n this.isSpanned = false;\n this.isRowSpanned = false;\n merge(this, options);\n }\n Cell.prototype.clone = function () {\n var cell = new Cell({});\n merge(cell, this);\n return cell;\n };\n return Cell;\n}());\nexport { Cell };\n","import { EventHandler, detach, formatUnit, Browser, closest } from '@syncfusion/ej2-base';\nimport { Column } from '../models/column';\nimport { ColumnWidthService } from '../services/width-controller';\nimport * as events from '../base/constant';\nimport { getScrollBarWidth, parentsUntil, Global, frozenDirection, isChildColumn, applyStickyLeftRightPosition, groupCaptionRowLeftRightPos } from '../base/util';\nimport { isNullOrUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\nexport var resizeClassList = {\n root: 'e-rhandler',\n suppress: 'e-rsuppress',\n icon: 'e-ricon',\n helper: 'e-rhelper',\n header: 'th.e-headercell',\n cursor: 'e-rcursor'\n};\n/**\n * `Resize` module is used to handle Resize to fit for columns.\n *\n * @hidden\n * @private\n */\nvar Resize = /** @class */ (function () {\n /**\n * Constructor for the Grid resize module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Resize(parent) {\n this.tapped = false;\n this.isDblClk = true;\n /** @hidden */\n this.resizeProcess = false;\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.widthService = new ColumnWidthService(parent);\n this.addEventListener();\n }\n /**\n * Resize by field names.\n *\n * @param {string|string[]} fName - Defines the field name.\n * @returns {void}\n */\n Resize.prototype.autoFitColumns = function (fName) {\n var columnName = (fName === undefined || fName === null || fName.length <= 0) ?\n this.parent.getColumns().map(function (x) { return x.field; }) : (typeof fName === 'string') ? [fName] : fName;\n this.parent.isAutoFitColumns = true;\n if (this.parent.enableAdaptiveUI) {\n this.parent.element.classList.add('e-grid-autofit');\n }\n this.findColumn(columnName);\n };\n Resize.prototype.autoFit = function () {\n var newarray = this.parent.getColumns().filter(function (c) { return c.autoFit === true; })\n .map(function (c) { return c.field || c.headerText; });\n if (newarray.length > 0) {\n this.autoFitColumns(newarray);\n }\n if (this.parent.resizeSettings.mode === 'Auto') {\n this.widthService.setWidthToTable();\n }\n };\n Resize.prototype.resizeColumn = function (fName, index, id) {\n var gObj = this.parent;\n var tWidth = 0;\n var headerTable = gObj.getHeaderTable();\n var contentTable = gObj.getContentTable();\n var footerTable;\n var headerDivTag = 'e-gridheader';\n var contentDivTag = literals.gridContent;\n var footerDivTag = literals.gridFooter;\n var indentWidth = 0;\n var uid = id ? id : this.parent.getUidByColumnField(fName);\n var columnIndex = this.parent.getNormalizedColumnIndex(uid);\n var headerTextClone = headerTable.querySelector('[e-mappinguid=\"' + uid + '\"]').parentElement.cloneNode(true);\n var contentTextClone = contentTable.querySelectorAll(\"td.e-rowcell:nth-child(\" + (columnIndex + 1) + \"):not(.e-groupcaption):not(.e-detailcell)\");\n var footerTextClone;\n var columnIndexByField = this.parent.getColumnIndexByField(fName);\n if (!isNullOrUndefined(gObj.getFooterContent())) {\n footerTable = gObj.getFooterContentTable();\n }\n if (footerTable) {\n footerTextClone = footerTable.querySelectorAll(\"td:nth-child(\" + (columnIndex + 1) + \"):not(.e-groupcaption)\");\n }\n var indentWidthClone = [].slice.call(headerTable.querySelector('tr').getElementsByClassName('e-grouptopleftcell'));\n if (indentWidthClone.length > 0) {\n for (var i = 0; i < indentWidthClone.length; i++) {\n indentWidth += indentWidthClone[parseInt(i.toString(), 10)].offsetWidth;\n }\n }\n var detailsElement = contentTable.querySelector('.e-detailrowcollapse') ||\n contentTable.querySelector('.e-detailrowexpand');\n if ((this.parent.detailTemplate || this.parent.childGrid) && detailsElement) {\n indentWidth += detailsElement.offsetWidth;\n }\n var headerText = [headerTextClone];\n var contentText = [];\n var footerText = [];\n if (footerTable) {\n for (var i = 0; i < footerTextClone.length; i++) {\n footerText[parseInt(i.toString(), 10)] = footerTextClone[parseInt(i.toString(), 10)].cloneNode(true);\n }\n }\n for (var i = 0; i < contentTextClone.length; i++) {\n contentText[parseInt(i.toString(), 10)] = contentTextClone[parseInt(i.toString(), 10)].cloneNode(true);\n }\n var wHeader = this.createTable(headerTable, headerText, headerDivTag);\n var wFooter = null;\n var wContent = null;\n if (gObj.getCurrentViewRecords().length) {\n wContent = this.createTable(contentTable, contentText, contentDivTag);\n }\n if (footerText.length) {\n wFooter = this.createTable(footerTable, footerText, footerDivTag);\n }\n var columnbyindex = gObj.getColumns()[parseInt(columnIndexByField.toString(), 10)];\n var width = columnbyindex.width = formatUnit(Math.max(wHeader, wContent, wFooter));\n var colMaxWidth = columnbyindex.maxWidth && parseFloat(columnbyindex.maxWidth.toString());\n if (parseInt(width, 10) > colMaxWidth) {\n columnbyindex.width = colMaxWidth;\n }\n this.widthService.setColumnWidth(gObj.getColumns()[parseInt(columnIndexByField.toString(), 10)]);\n var result = gObj.getColumns().some(function (x) { return x.width === null\n || x.width === undefined || x.width.length <= 0; });\n if (result === false) {\n var element = gObj.getColumns();\n for (var i = 0; i < element.length; i++) {\n if (element[parseInt(i.toString(), 10)].visible) {\n tWidth = tWidth + parseFloat(element[parseInt(i.toString(), 10)].width);\n }\n }\n }\n var calcTableWidth = tWidth + indentWidth;\n if (tWidth > 0) {\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.widthService.setColumnWidth(new Column({ width: '30px' }));\n }\n if (this.parent.resizeSettings.mode === 'Auto') {\n calcTableWidth = '100%';\n }\n headerTable.style.width = formatUnit(calcTableWidth);\n contentTable.style.width = formatUnit(calcTableWidth);\n if (!isNullOrUndefined(footerTable)) {\n footerTable.style.width = formatUnit(calcTableWidth);\n }\n }\n if (gObj.isFrozenGrid() && gObj.enableColumnVirtualization) {\n this.widthService.refreshFrozenScrollbar();\n }\n var tableWidth = headerTable.offsetWidth;\n var contentwidth = (gObj.getContent().scrollWidth);\n if (contentwidth > tableWidth) {\n if (!isNullOrUndefined(contentTable.querySelector('.e-emptyrow'))) {\n addClass([headerTable], ['e-tableborder']);\n removeClass([contentTable], ['e-tableborder']);\n }\n else {\n addClass([headerTable, contentTable], ['e-tableborder']);\n }\n }\n else {\n removeClass([headerTable, contentTable], ['e-tableborder']);\n }\n if (!isNullOrUndefined(footerTable)) {\n footerTable.classList.add('e-tableborder');\n }\n };\n /**\n * To destroy the resize\n *\n * @returns {void}\n * @hidden\n */\n Resize.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.widthService = null;\n this.unwireEvents();\n this.removeEventListener();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Resize.prototype.getModuleName = function () {\n return 'resize';\n };\n Resize.prototype.findColumn = function (fName) {\n for (var i = 0; i < fName.length; i++) {\n var fieldName = fName[parseInt(i.toString(), 10)];\n var columnIndex = this.parent.getColumnIndexByField(fieldName);\n var column = this.parent.getColumns()[parseInt(columnIndex.toString(), 10)];\n if (columnIndex > -1 && !isNullOrUndefined(column) && column.visible === true) {\n this.resizeColumn(fieldName, columnIndex);\n }\n }\n if (this.parent.allowTextWrap) {\n this.parent.notify(events.freezeRender, { case: 'refreshHeight', isModeChg: true });\n }\n if (this.parent.isFrozenGrid()) {\n this.refreshResizefrzCols(true, true);\n }\n };\n /**\n * To create table for autofit\n *\n * @param {Element} table - specifies the table\n * @param {Element[]} text - specifies the text\n * @param {string} tag - specifies the tag name\n * @returns {number} returns the number\n * @hidden\n */\n Resize.prototype.createTable = function (table, text, tag) {\n var myTableDiv = this.parent.createElement('div');\n var adaptiveClass = this.parent.enableAdaptiveUI ? ' e-bigger' : '';\n myTableDiv.className = this.parent.element.className + adaptiveClass;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n var mySubDiv = this.parent.createElement('div');\n mySubDiv.className = tag;\n var myTable = this.parent.createElement('table', { attrs: { role: 'grid' } });\n myTable.className = table.className;\n myTable.classList.add('e-resizetable');\n myTable.style.cssText = 'table-layout: auto;width: auto';\n var myTr = this.parent.createElement('tr');\n for (var i = 0; i < text.length; i++) {\n var tr = myTr.cloneNode();\n tr.className = table.querySelector('tr').className;\n tr.appendChild(text[parseInt(i.toString(), 10)]);\n myTable.appendChild(tr);\n }\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n var offsetWidthValue = myTable.getBoundingClientRect().width;\n document.body.removeChild(myTableDiv);\n return Math.ceil(offsetWidthValue);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Resize.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.headerRefreshed, this.refreshHeight, this);\n this.parent.on(events.refreshResizePosition, this.refreshResizePosition, this);\n this.parent.on(events.initialEnd, this.wireEvents, this);\n this.parent.on(events.contentReady, this.autoFit, this);\n this.parent.on(events.refreshHandlers, this.refreshHeight, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Resize.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.headerRefreshed, this.refreshHeight);\n this.parent.off(events.refreshResizePosition, this.refreshResizePosition);\n this.parent.off(events.initialEnd, this.wireEvents);\n this.parent.off(events.refreshHandlers, this.refreshHeight);\n this.parent.off(events.destroy, this.destroy);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Resize.prototype.render = function () {\n this.unwireEvents();\n this.wireEvents();\n this.setHandlerHeight();\n };\n Resize.prototype.refreshHeight = function () {\n if (this.parent.getHeaderTable()) {\n var element = this.getResizeHandlers();\n for (var i = 0; i < element.length; i++) {\n if (element[parseInt(i.toString(), 10)].parentElement.offsetHeight > 0) {\n element[parseInt(i.toString(), 10)].style.height = element[parseInt(i.toString(), 10)].parentElement.offsetHeight + 'px';\n }\n }\n this.setHandlerHeight();\n }\n };\n Resize.prototype.wireEvents = function () {\n EventHandler.add(this.parent.getHeaderContent(), Browser.touchStartEvent, this.touchResizeStart, this);\n EventHandler.add(this.parent.getHeaderContent(), events.dblclick, this.callAutoFit, this);\n };\n Resize.prototype.unwireEvents = function () {\n EventHandler.remove(this.parent.getHeaderContent(), Browser.touchStartEvent, this.touchResizeStart);\n EventHandler.remove(this.parent.getHeaderContent(), events.dblclick, this.callAutoFit);\n };\n Resize.prototype.getResizeHandlers = function () {\n return [].slice.call(this.parent.getHeaderTable().getElementsByClassName(resizeClassList.root));\n };\n Resize.prototype.setHandlerHeight = function () {\n var element = [].slice.call(this.parent.getHeaderTable().getElementsByClassName(resizeClassList.suppress));\n for (var i = 0; i < element.length; i++) {\n element[parseInt(i.toString(), 10)].style.height = element[parseInt(i.toString(), 10)].parentElement.offsetHeight + 'px';\n }\n };\n Resize.prototype.callAutoFit = function (e) {\n if (e.target.classList.contains('e-rhandler')) {\n var col = this.getTargetColumn(e);\n if (col.columns) {\n return;\n }\n this.resizeColumn(col.field, this.parent.getNormalizedColumnIndex(col.uid), col.uid);\n var header = closest(e.target, resizeClassList.header);\n header.classList.add('e-resized');\n }\n };\n Resize.prototype.touchResizeStart = function (e) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n return this.resizeStart(e);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.callAutoFit(e);\n }\n };\n Resize.prototype.resizeStart = function (e) {\n var _this = this;\n if (e.target.classList.contains('e-rhandler')) {\n if (!this.helper) {\n if (this.getScrollBarWidth() === 0) {\n this.resizeProcess = true;\n if (this.parent.allowGrouping) {\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n this.widthService.setColumnWidth(new Column({ width: '30px' }), i);\n }\n }\n for (var _i = 0, _a = this.refreshColumnWidth(); _i < _a.length; _i++) {\n var col = _a[_i];\n this.widthService.setColumnWidth(col);\n }\n this.widthService.setWidthToTable();\n this.resizeProcess = false;\n }\n this.refreshStackedColumnWidth();\n this.element = e.target;\n this.parentElementWidth = this.parent.element.getBoundingClientRect().width;\n this.appendHelper();\n this.column = this.getTargetColumn(e);\n this.pageX = this.getPointX(e);\n if (this.column.getFreezeTableName() === literals.frozenRight) {\n if (this.parent.enableRtl) {\n this.minMove = (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0)\n - parseFloat(isNullOrUndefined(this.column.width) ? '' : this.column.width.toString());\n }\n else {\n this.minMove = parseFloat(isNullOrUndefined(this.column.width) ? '' : this.column.width.toString())\n - (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0);\n }\n }\n else if (this.parent.enableRtl) {\n this.minMove = parseFloat(this.column.width.toString())\n - (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0);\n }\n else {\n this.minMove = (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0)\n - parseFloat(isNullOrUndefined(this.column.width) ? '' : this.column.width.toString());\n }\n this.minMove += this.pageX;\n }\n if (Browser.isDevice && !this.helper.classList.contains(resizeClassList.icon)) {\n this.helper.classList.add(resizeClassList.icon);\n EventHandler.add(document, Browser.touchStartEvent, this.removeHelper, this);\n EventHandler.add(this.helper, Browser.touchStartEvent, this.resizeStart, this);\n }\n else {\n var args = { e: e, column: this.column };\n this.parent.trigger(events.resizeStart, args, function (args) {\n if (args.cancel || _this.parent.isEdit) {\n _this.cancelResizeAction();\n return;\n }\n EventHandler.add(document, Browser.touchEndEvent, _this.resizeEnd, _this);\n EventHandler.add(_this.parent.element, Browser.touchMoveEvent, _this.resizing, _this);\n _this.updateCursor('add');\n });\n }\n }\n };\n Resize.prototype.cancelResizeAction = function (removeEvents) {\n if (removeEvents) {\n EventHandler.remove(this.parent.element, Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(document, Browser.touchEndEvent, this.resizeEnd);\n this.updateCursor('remove');\n }\n if (Browser.isDevice) {\n EventHandler.remove(document, Browser.touchStartEvent, this.removeHelper);\n EventHandler.remove(this.helper, Browser.touchStartEvent, this.resizeStart);\n }\n detach(this.helper);\n this.refresh();\n };\n Resize.prototype.getWidth = function (width, minWidth, maxWidth) {\n if (minWidth && width < minWidth) {\n return minWidth;\n }\n else if ((maxWidth && width > maxWidth)) {\n return maxWidth;\n }\n else {\n return width;\n }\n };\n Resize.prototype.updateResizeEleHeight = function () {\n var elements = [].slice.call(this.parent.getHeaderContent().getElementsByClassName('e-rhandler'));\n for (var i = 0; i < elements.length; i++) {\n elements[parseInt(i.toString(), 10)].style.height = this.element.parentElement.offsetHeight + 'px';\n }\n };\n Resize.prototype.getColData = function (column, mousemove) {\n return {\n width: parseFloat(isNullOrUndefined(this.widthService.getWidth(column)) || this.widthService.getWidth(column) === 'auto' ? '0'\n : this.widthService.getWidth(column).toString()) + mousemove,\n minWidth: column.minWidth ? parseFloat(column.minWidth.toString()) : null,\n maxWidth: column.maxWidth ? parseFloat(column.maxWidth.toString()) : null\n };\n };\n Resize.prototype.refreshResizeFixedCols = function (pos) {\n var cols = this.parent.getColumns();\n var translateX = this.parent.enableColumnVirtualization ? this.parent.translateX : 0;\n var th = [].slice.call(this.parent.getHeaderContent().querySelector('tbody').querySelectorAll('.e-fixedfreeze')).concat([].slice.call(this.parent.getContent().querySelectorAll('.e-fixedfreeze')));\n for (var i = 0; i < th.length; i++) {\n var node = th[parseInt(i.toString(), 10)];\n var column = void 0;\n if (node.classList.contains('e-summarycell')) {\n var uid = node.getAttribute('e-mappinguid');\n column = this.parent.getColumnByUid(uid);\n }\n else {\n var index = parseInt(node.getAttribute('data-colindex'), 10);\n column = cols[parseInt(index.toString(), 10)];\n }\n var width = 0;\n if (pos === 'Left') {\n if (this.parent.getVisibleFrozenLeftCount()) {\n width = this.parent.getIndentCount() * 30;\n }\n else if (this.parent.getFrozenMode() === 'Right') {\n width = this.parent.groupSettings.columns.length * 30;\n }\n for (var j = 0; j < cols.length; j++) {\n if (column.index > cols[parseInt(j.toString(), 10)].index) {\n if (column.uid === cols[parseInt(j.toString(), 10)].uid) {\n break;\n }\n if ((cols[parseInt(j.toString(), 10)].freeze === 'Left' || cols[parseInt(j.toString(), 10)].isFrozen) ||\n cols[parseInt(j.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(j.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(j.toString(), 10)].width.toString());\n }\n }\n }\n }\n applyStickyLeftRightPosition(node, ((width === 0 ? width : width - 1) - translateX), this.parent.enableRtl, 'Left');\n }\n if (pos === 'Right') {\n width = this.parent.getFrozenMode() === 'Right' && this.parent.isRowDragable() ? 30 : 0;\n for (var j = cols.length - 1; j >= 0; j--) {\n if (column.uid === cols[parseInt(j.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(j.toString(), 10)].freeze === 'Right' || cols[parseInt(j.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(j.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(j.toString(), 10)].width.toString());\n }\n }\n }\n applyStickyLeftRightPosition(node, width + translateX, this.parent.enableRtl, 'Right');\n }\n }\n };\n Resize.prototype.refreshResizePosition = function () {\n this.refreshResizefrzCols(true);\n };\n Resize.prototype.refreshResizefrzCols = function (freezeRefresh, isAutoFitCol) {\n var _this = this;\n var translateX = this.parent.enableColumnVirtualization ? this.parent.translateX : 0;\n if (freezeRefresh || ((this.column.freeze === 'Left' || this.column.isFrozen) ||\n (this.column.columns && frozenDirection(this.column) === 'Left'))) {\n var width_1 = this.parent.getIndentCount() * 30;\n var columns = this.parent.getColumns().filter(function (col) { return col.freeze === 'Left' || col.isFrozen; });\n if (!freezeRefresh || isAutoFitCol) {\n this.frzHdrRefresh('Left');\n }\n for (var i = 0; i < columns.length; i++) {\n if (freezeRefresh || (columns[parseInt(i.toString(), 10)].index > this.column.index)) {\n var elements = [];\n if (this.parent.frozenRows) {\n elements = [].slice.call(this.parent.getHeaderContent().querySelectorAll('td[data-colindex=\"' + i + '\"]')).concat([].slice.call(this.parent.getContent().querySelectorAll('td[data-colindex=\"' + i + '\"]')));\n }\n else {\n elements = [].slice.call(this.parent.getContent().querySelectorAll('td[data-colindex=\"' + i + '\"]'));\n }\n elements.filter(function (cell) {\n applyStickyLeftRightPosition(cell, width_1 - translateX, _this.parent.enableRtl, 'Left');\n });\n if (this.parent.enableColumnVirtualization) {\n columns[parseInt(i.toString(), 10)].valueX = width_1;\n }\n }\n if (columns[parseInt(i.toString(), 10)].visible) {\n width_1 += parseFloat(columns[parseInt(i.toString(), 10)].width.toString());\n }\n }\n this.refreshResizeFixedCols('Left');\n }\n if (freezeRefresh || (this.column.freeze === 'Right' || (this.column.columns && frozenDirection(this.column) === 'Right'))) {\n var width_2 = this.parent.getFrozenMode() === 'Right' && this.parent.isRowDragable() ? 30 : 0;\n var columns = this.parent.getColumns();\n if (!freezeRefresh || isAutoFitCol) {\n this.frzHdrRefresh('Right');\n }\n var columnsRight = columns.filter(function (col) { return col.freeze === 'Right'; });\n for (var i = columns.length - 1; i >= columns.length - columnsRight.length; i--) {\n var elements = [];\n if (this.parent.frozenRows) {\n elements = [].slice.call(this.parent.getHeaderContent().querySelectorAll('td[data-colindex=\"' + i + '\"]')).concat([].slice.call(this.parent.getContent().querySelectorAll('td[data-colindex=\"' + i + '\"]')));\n }\n else {\n elements = [].slice.call(this.parent.getContent().querySelectorAll('td[data-colindex=\"' + i + '\"]'));\n }\n elements.filter(function (cell) {\n applyStickyLeftRightPosition(cell, width_2 + translateX, _this.parent.enableRtl, 'Right');\n });\n if (this.parent.enableColumnVirtualization) {\n columns[parseInt(i.toString(), 10)].valueX = width_2;\n }\n if (columns[parseInt(i.toString(), 10)].visible) {\n width_2 = width_2 + parseFloat(columns[parseInt(i.toString(), 10)].width.toString());\n }\n }\n this.refreshResizeFixedCols('Right');\n }\n if (this.column && (this.column.freeze === 'Fixed' || (this.column.columns && frozenDirection(this.column) === 'Fixed'))) {\n this.refreshResizeFixedCols('Left');\n this.refreshResizeFixedCols('Right');\n this.frzHdrRefresh('Left');\n this.frzHdrRefresh('Right');\n }\n if (this.parent.groupSettings.columns.length && this.parent.aggregates.length &&\n this.parent.getContent().querySelector('.e-groupcaptionrow')) {\n this.refreshGroupCaptionRow();\n }\n };\n Resize.prototype.refreshGroupCaptionRow = function () {\n var capRow = [].slice.call(this.parent.getContent().querySelectorAll('.e-groupcaptionrow'));\n for (var i = 0; i < capRow.length; i++) {\n var tr = capRow[parseInt(i.toString(), 10)];\n if (tr.querySelector('.e-summarycell')) {\n groupCaptionRowLeftRightPos(tr, this.parent);\n }\n }\n };\n Resize.prototype.frzHdrRefresh = function (pos) {\n var _this = this;\n var translateX = this.parent.enableColumnVirtualization ? this.parent.translateX : 0;\n if (pos === 'Left') {\n var tr = [].slice.call(this.parent.getHeaderContent().querySelector('thead').querySelectorAll('tr'));\n for (var i = 0; i < tr.length; i++) {\n var th = [].slice.call(tr[parseInt(i.toString(), 10)].querySelectorAll('.e-leftfreeze,.e-fixedfreeze'));\n var _loop_1 = function (j) {\n var node = th[parseInt(j.toString(), 10)];\n if (node.classList.contains('e-rowdragheader') || node.classList.contains('e-dragheadercell') ||\n node.classList.contains('e-grouptopleftcell')) {\n return \"continue\";\n }\n var column = this_1.getParticularCol(node);\n var cols = this_1.parent.getColumns();\n var width = 0;\n var summarycell = [];\n if (this_1.parent.aggregates.length && this_1.parent.getFooterContent()) {\n if (this_1.parent.getContent().querySelectorAll('.e-summaryrow').length) {\n var summaryRows = [].slice.call(this_1.parent.getContent().querySelectorAll('.e-summaryrow'));\n summaryRows.filter(function (row) {\n summarycell.push(row.querySelector('[e-mappinguid=\"' + column.uid + '\"]'));\n });\n }\n summarycell = summarycell.concat([].slice.call(this_1.parent.getFooterContent().querySelectorAll('[e-mappinguid=\"' + column.uid + '\"]')));\n }\n if (node.classList.contains('e-fixedfreeze')) {\n if (this_1.parent.getVisibleFrozenLeftCount()) {\n width = this_1.parent.getIndentCount() * 30;\n }\n else if (this_1.parent.getFrozenMode() === 'Right') {\n width = this_1.parent.groupSettings.columns.length * 30;\n }\n for (var w = 0; w < cols.length; w++) {\n if (column.index > cols[parseInt(w.toString(), 10)].index) {\n if (column.uid === cols[parseInt(w.toString(), 10)].uid) {\n break;\n }\n if ((cols[parseInt(w.toString(), 10)].freeze === 'Left' || cols[parseInt(w.toString(), 10)].isFrozen) ||\n cols[parseInt(w.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(w.toString(), 10)].visible) {\n width += parseInt(cols[parseInt(w.toString(), 10)].width.toString(), 10);\n }\n }\n }\n }\n if (summarycell && summarycell.length) {\n summarycell.filter(function (cell) {\n applyStickyLeftRightPosition(cell, width - translateX, _this.parent.enableRtl, 'Left');\n });\n }\n applyStickyLeftRightPosition(node, ((width === 0 ? width : width - 1) - translateX), this_1.parent.enableRtl, 'Left');\n }\n else {\n width = this_1.parent.getIndentCount() * 30;\n if (column.index === 0) {\n if (summarycell && summarycell.length) {\n summarycell.filter(function (cell) {\n applyStickyLeftRightPosition(cell, width - translateX, _this.parent.enableRtl, 'Left');\n });\n }\n applyStickyLeftRightPosition(node, width - translateX, this_1.parent.enableRtl, 'Left');\n if (this_1.parent.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n else {\n for (var k = 0; k < cols.length; k++) {\n if (column.index < cols[parseInt(k.toString(), 10)].index ||\n column.uid === cols[parseInt(k.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(k.toString(), 10)].visible) {\n width += parseInt(cols[parseInt(k.toString(), 10)].width.toString(), 10);\n }\n }\n if (summarycell && summarycell.length) {\n summarycell.filter(function (cell) {\n applyStickyLeftRightPosition(cell, width - translateX, _this.parent.enableRtl, 'Left');\n });\n }\n applyStickyLeftRightPosition(node, width - translateX, this_1.parent.enableRtl, 'Left');\n if (this_1.parent.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n }\n };\n var this_1 = this;\n for (var j = 0; j < th.length; j++) {\n _loop_1(j);\n }\n }\n }\n if (pos === 'Right') {\n var tr = [].slice.call(this.parent.getHeaderContent().querySelector('thead').querySelectorAll('tr'));\n for (var i = 0; i < tr.length; i++) {\n var th = [].slice.call(tr[parseInt(i.toString(), 10)].querySelectorAll('.e-rightfreeze, .e-fixedfreeze'));\n var _loop_2 = function (j) {\n var node = th[parseInt(j.toString(), 10)];\n var column = this_2.getParticularCol(node);\n var cols = this_2.parent.getColumns();\n var width = 0;\n var summarycell = [];\n if (this_2.parent.aggregates.length && this_2.parent.getFooterContent()) {\n if (this_2.parent.getContent().querySelectorAll('.e-summaryrow').length) {\n var summaryRows = [].slice.call(this_2.parent.getContent().querySelectorAll('.e-summaryrow'));\n summaryRows.filter(function (row) {\n summarycell.push(row.querySelector('[e-mappinguid=\"' + column.uid + '\"]'));\n });\n }\n summarycell = summarycell.concat([].slice.call(this_2.parent.getFooterContent().querySelectorAll('[e-mappinguid=\"' + column.uid + '\"]')));\n }\n if (node.classList.contains('e-fixedfreeze')) {\n width = this_2.parent.getFrozenMode() === 'Right' && this_2.parent.isRowDragable() ? 30 : 0;\n for (var w = cols.length - 1; w >= 0; w--) {\n if (column.index < cols[parseInt(w.toString(), 10)].index) {\n if ((column.columns && isChildColumn(column, cols[parseInt(w.toString(), 10)].uid)) ||\n column.index > cols[parseInt(w.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(w.toString(), 10)].freeze === 'Right' ||\n cols[parseInt(w.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(w.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(w.toString(), 10)].width.toString());\n }\n }\n }\n }\n if (summarycell.length) {\n summarycell.filter(function (cell) {\n applyStickyLeftRightPosition(cell, width + translateX, _this.parent.enableRtl, 'Right');\n });\n }\n applyStickyLeftRightPosition(node, width + translateX, this_2.parent.enableRtl, 'Right');\n }\n else {\n width = this_2.parent.getFrozenMode() === 'Right' && this_2.parent.isRowDragable() ? 30 : 0;\n for (var k = cols.length - 1; k >= 0; k--) {\n if ((column.columns && isChildColumn(column, cols[parseInt(k.toString(), 10)].uid)) ||\n column.index > cols[parseInt(k.toString(), 10)].index ||\n column.uid === cols[parseInt(k.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(k.toString(), 10)].visible) {\n width += parseInt(cols[parseInt(k.toString(), 10)].width.toString(), 10);\n }\n }\n if (summarycell.length) {\n summarycell.filter(function (cell) {\n applyStickyLeftRightPosition(cell, width + translateX, _this.parent.enableRtl, 'Right');\n });\n }\n applyStickyLeftRightPosition(node, width + translateX, this_2.parent.enableRtl, 'Right');\n if (this_2.parent.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n };\n var this_2 = this;\n for (var j = th.length - 1; j >= 0; j--) {\n _loop_2(j);\n }\n }\n }\n };\n Resize.prototype.getParticularCol = function (node) {\n var uid = node.classList.contains('e-filterbarcell') ? node.getAttribute('e-mappinguid') :\n node.querySelector('[e-mappinguid]').getAttribute('e-mappinguid');\n return this.parent.getColumnByUid(uid);\n };\n Resize.prototype.resizing = function (e) {\n if (isNullOrUndefined(this.column)) {\n return;\n }\n if (this.parent.isFrozenGrid()) {\n this.refreshResizefrzCols();\n }\n var offsetWidth = 0;\n if (isNullOrUndefined(this.column)) {\n offsetWidth = parentsUntil(this.element, 'th').offsetWidth;\n }\n if (this.parent.allowTextWrap) {\n this.updateResizeEleHeight();\n this.setHelperHeight();\n }\n var pageX = this.getPointX(e);\n var mousemove = this.parent.enableRtl ? -(pageX - this.pageX) : (pageX - this.pageX);\n var colData = this.getColData(this.column, mousemove);\n if (!colData.width) {\n colData.width = closest(this.element, 'th').offsetWidth;\n }\n var width = this.getWidth(colData.width, colData.minWidth, colData.maxWidth);\n this.parent.log('resize_min_max', { column: this.column, width: width });\n if (((!this.parent.enableRtl && this.minMove >= pageX) || (this.parent.enableRtl && this.minMove <= pageX))) {\n width = this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 10;\n this.pageX = pageX = this.minMove;\n }\n if (width !== parseFloat(isNullOrUndefined(this.column.width) || this.column.width === 'auto' ?\n offsetWidth.toString() : this.column.width.toString())) {\n this.pageX = pageX;\n this.column.width = formatUnit(width);\n var args = {\n e: e,\n column: this.column\n };\n this.parent.trigger(events.onResize, args);\n if (args.cancel) {\n this.cancelResizeAction(true);\n return;\n }\n var columns = [this.column];\n var finalColumns = [this.column];\n if (this.column.columns) {\n columns = this.getSubColumns(this.column, []);\n columns = this.calulateColumnsWidth(columns, false, mousemove);\n finalColumns = this.calulateColumnsWidth(columns, true, mousemove);\n }\n this.resizeProcess = true;\n for (var _i = 0, finalColumns_1 = finalColumns; _i < finalColumns_1.length; _i++) {\n var col = finalColumns_1[_i];\n this.widthService.setColumnWidth(col, null, 'resize');\n }\n this.resizeProcess = false;\n this.updateHelper();\n }\n this.isDblClk = false;\n };\n Resize.prototype.calulateColumnsWidth = function (columns, isUpdate, mousemove) {\n var finalColumns = [];\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n var totalWidth = 0;\n for (var i = 0; i < columns.length; i++) {\n totalWidth += parseFloat(columns[parseInt(i.toString(), 10)].width.toString());\n }\n var colData = this.getColData(col, (parseFloat(col.width)) * mousemove / totalWidth);\n var colWidth = this.getWidth(colData.width, colData.minWidth, colData.maxWidth);\n if ((colWidth !== parseFloat(col.width.toString()))) {\n if (isUpdate) {\n col.width = formatUnit(colWidth < 1 ? 1 : colWidth);\n }\n finalColumns.push(col);\n }\n }\n return finalColumns;\n };\n Resize.prototype.getSubColumns = function (column, subColumns) {\n for (var _i = 0, _a = column.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible !== false && col.allowResizing) {\n if (col.columns) {\n this.getSubColumns(col, subColumns);\n }\n else {\n subColumns.push(col);\n }\n }\n }\n return subColumns;\n };\n Resize.prototype.resizeEnd = function (e) {\n if (!this.helper || this.parent.isDestroyed) {\n return;\n }\n var gObj = this.parent;\n EventHandler.remove(this.parent.element, Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(document, Browser.touchEndEvent, this.resizeEnd);\n this.updateCursor('remove');\n detach(this.helper);\n var args = { e: e, column: this.column };\n var content = this.parent.getContent().querySelector('.' + literals.content);\n var cTable = content;\n if (cTable.scrollHeight > cTable.clientHeight) {\n this.parent.scrollModule.setPadding();\n cTable.style.overflowY = 'scroll';\n }\n this.parent.trigger(events.resizeStop, args);\n closest(this.element, '.e-headercell').classList.add('e-resized');\n this.isFrozenColResized = false;\n if (this.parent.allowTextWrap) {\n this.updateResizeEleHeight();\n this.parent.notify(events.textWrapRefresh, { case: 'textwrap' });\n }\n var headerTable = gObj.getHeaderTable();\n var contentTable = gObj.getContentTable();\n var footerTable;\n if (!isNullOrUndefined(gObj.getFooterContent())) {\n footerTable = gObj.getFooterContentTable();\n }\n var tableWidth = headerTable.offsetWidth;\n var contentwidth = (gObj.getContent().scrollWidth);\n if (contentwidth > tableWidth) {\n if (!isNullOrUndefined(contentTable.querySelector('.e-emptyrow'))) {\n addClass([headerTable], ['e-tableborder']);\n removeClass([contentTable], ['e-tableborder']);\n }\n else {\n addClass([headerTable, contentTable], ['e-tableborder']);\n }\n }\n else {\n removeClass([headerTable, contentTable], ['e-tableborder']);\n }\n if (!isNullOrUndefined(footerTable)) {\n footerTable.classList.add('e-tableborder');\n }\n this.refresh();\n this.doubleTapEvent(e);\n this.isDblClk = true;\n };\n Resize.prototype.getPointX = function (e) {\n if (e.touches && e.touches.length) {\n return e.touches[0].pageX;\n }\n else {\n return e.pageX;\n }\n };\n Resize.prototype.refreshColumnWidth = function () {\n var columns = this.parent.getColumns();\n for (var _i = 0, _a = [].slice.apply(this.parent.getHeaderContent().querySelectorAll('th.e-headercell')); _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, columns_2 = columns; _b < columns_2.length; _b++) {\n var column = columns_2[_b];\n if (ele.querySelector('[e-mappinguid]') &&\n ele.querySelector('[e-mappinguid]').getAttribute('e-mappinguid') === column.uid && column.visible) {\n column.width = ele.getBoundingClientRect().width;\n break;\n }\n }\n }\n return columns;\n };\n Resize.prototype.refreshStackedColumnWidth = function () {\n for (var _i = 0, _a = this.parent.getStackedColumns(this.parent.columns); _i < _a.length; _i++) {\n var stackedColumn = _a[_i];\n stackedColumn.width = this.getStackedWidth(stackedColumn, 0);\n }\n };\n Resize.prototype.getStackedWidth = function (column, width) {\n for (var _i = 0, _a = column.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible !== false) {\n if (col.columns) {\n width = this.getStackedWidth(col, width);\n }\n else {\n width += parseFloat(col.width.toString());\n }\n }\n }\n return width;\n };\n Resize.prototype.getTargetColumn = function (e) {\n var cell = closest(e.target, resizeClassList.header);\n cell = cell.querySelector('.e-headercelldiv') || cell.querySelector('.e-stackedheadercelldiv');\n var uid = cell.getAttribute('e-mappinguid');\n return this.parent.getColumnByUid(uid);\n };\n Resize.prototype.updateCursor = function (action) {\n var headerRows = [].slice.call(this.parent.getHeaderContent().querySelectorAll('th'));\n headerRows.push(this.parent.element);\n for (var _i = 0, headerRows_1 = headerRows; _i < headerRows_1.length; _i++) {\n var row = headerRows_1[_i];\n row.classList[\"\" + action](resizeClassList.cursor);\n }\n };\n Resize.prototype.refresh = function () {\n this.column = null;\n this.pageX = null;\n this.element = null;\n this.helper = null;\n };\n Resize.prototype.appendHelper = function () {\n this.helper = this.parent.createElement('div', {\n className: resizeClassList.helper\n });\n this.parent.element.appendChild(this.helper);\n this.setHelperHeight();\n };\n Resize.prototype.setHelperHeight = function () {\n var height = this.parent.getContent().offsetHeight - this.getScrollBarWidth();\n var rect = closest(this.element, resizeClassList.header);\n var tr = [].slice.call(this.parent.getHeaderContent().querySelectorAll('tr'));\n for (var i = tr.indexOf(rect.parentElement); i < tr.length && i > -1; i++) {\n height += tr[parseInt(i.toString(), 10)].offsetHeight;\n }\n var pos = this.calcPos(rect);\n pos.left += (this.parent.enableRtl ? 0 - 1 : rect.offsetWidth - 2);\n this.helper.style.cssText = 'height: ' + height + 'px; top: ' + pos.top + 'px; left:' + Math.floor(pos.left) + 'px;';\n if (this.parent.enableVirtualization) {\n this.helper.classList.add('e-virtual-rhandler');\n }\n };\n Resize.prototype.getScrollBarWidth = function (height) {\n var ele = this.parent.getContent().firstChild;\n return (ele.scrollHeight > ele.clientHeight && height) ||\n ele.scrollWidth > ele.clientWidth ? getScrollBarWidth() : 0;\n };\n Resize.prototype.removeHelper = function (e) {\n var cls = e.target.classList;\n if (!(cls.contains(resizeClassList.root) || cls.contains(resizeClassList.icon)) && this.helper) {\n EventHandler.remove(document, Browser.touchStartEvent, this.removeHelper);\n EventHandler.remove(this.helper, Browser.touchStartEvent, this.resizeStart);\n detach(this.helper);\n this.refresh();\n }\n };\n Resize.prototype.updateHelper = function () {\n var rect = closest(this.element, resizeClassList.header);\n var left;\n left = Math.floor(this.calcPos(rect).left + (this.parent.enableRtl ? 0 - 1 : rect.offsetWidth - 2));\n var borderWidth = 2; // to maintain the helper inside of grid element.\n if (left > this.parentElementWidth) {\n left = this.parentElementWidth - borderWidth;\n }\n this.helper.style.left = left + 'px';\n };\n Resize.prototype.calcPos = function (elem) {\n var parentOffset = {\n top: 0,\n left: 0\n };\n var offset = elem.getBoundingClientRect();\n var doc = elem.ownerDocument;\n var offsetParent = parentsUntil(elem, 'e-grid') || doc.documentElement;\n while (offsetParent &&\n (offsetParent === doc.body || offsetParent === doc.documentElement) &&\n offsetParent.style.position === 'static') {\n offsetParent = offsetParent.parentNode;\n }\n if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {\n parentOffset = offsetParent.getBoundingClientRect();\n }\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left\n };\n };\n Resize.prototype.doubleTapEvent = function (e) {\n var _this = this;\n if (this.getUserAgent() && this.isDblClk) {\n if (!this.tapped) {\n this.tapped = setTimeout(function () {\n _this.tapped = null;\n }, 300);\n }\n else {\n clearTimeout(this.tapped);\n this.callAutoFit(e);\n this.tapped = null;\n }\n }\n };\n Resize.prototype.getUserAgent = function () {\n var userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad/.test(userAgent);\n };\n Resize.prototype.timeoutHandler = function () {\n this.tapped = null;\n };\n return Resize;\n}());\nexport { Resize };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, EventHandler, L10n, setValue, getValue, isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, detach, Internationalization, getUniqueID, closest } from '@syncfusion/ej2-base';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\nimport { Input } from '../input/input';\nvar HIDE_CLEAR = 'e-clear-icon-hide';\nvar TEXTBOX_FOCUS = 'e-input-focus';\nvar containerAttr = ['title', 'style', 'class'];\n/**\n * Represents the TextBox component that allows the user to enter the values based on it's type.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar TextBox = /** @class */ (function (_super) {\n __extends(TextBox, _super);\n /**\n *\n * @param {TextBoxModel} options - Specifies the TextBox model.\n * @param {string | HTMLInputElement | HTMLTextAreaElement} element - Specifies the element to render as component.\n * @private\n */\n function TextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousValue = null;\n _this.isAngular = false;\n _this.isHiddenInput = false;\n _this.isForm = false;\n _this.inputPreviousValue = null;\n _this.isVue = false;\n _this.textboxOptions = options;\n return _this;\n }\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {TextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {TextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'floatLabelType':\n Input.removeFloating(this.textboxWrapper);\n Input.addFloating(this.respectiveElement, this.floatLabelType, this.placeholder);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n this.bindClearEvent();\n break;\n case 'width':\n Input.setWidth(newProp.width, this.textboxWrapper.container);\n break;\n case 'value':\n {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n if (!this.isBlank(this.value)) {\n this.value = this.value.toString();\n }\n this.isProtectedOnChange = prevOnChange;\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if ((this.isAngular || this.isVue) && this.preventChange === true) {\n this.previousValue = this.isAngular ? this.value : this.previousValue;\n this.preventChange = false;\n }\n else if (isNullOrUndefined(this.isAngular) || !this.isAngular\n || (this.isAngular && !this.preventChange) || (this.isAngular && isNullOrUndefined(this.preventChange))) {\n this.raiseChangeEvent();\n }\n }\n break;\n case 'htmlAttributes':\n {\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkAttributes(true);\n this.multiline && !isNullOrUndefined(this.textarea) ? Input.validateInputType(this.textboxWrapper.container, this.textarea) : Input.validateInputType(this.textboxWrapper.container, this.element);\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.respectiveElement);\n break;\n case 'type':\n if (this.respectiveElement.tagName !== 'TEXTAREA') {\n this.respectiveElement.setAttribute('type', this.type);\n Input.validateInputType(this.textboxWrapper.container, this.element);\n this.raiseChangeEvent();\n }\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.respectiveElement, this.textboxWrapper);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.textboxWrapper.container]);\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n Input.calculateWidth(this.respectiveElement, this.textboxWrapper.container);\n break;\n case 'autocomplete':\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else {\n this.removeAttributes(['autocomplete']);\n }\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n break;\n }\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TextBox.prototype.getModuleName = function () {\n return 'textbox';\n };\n TextBox.prototype.isBlank = function (str) {\n return (!str || /^\\s*$/.test(str));\n };\n TextBox.prototype.preRender = function () {\n this.cloneElement = this.element.cloneNode(true);\n this.formElement = closest(this.element, 'form');\n if (!isNullOrUndefined(this.formElement)) {\n this.isForm = true;\n }\n /* istanbul ignore next */\n if (this.element.tagName === 'EJS-TEXTBOX') {\n var ejInstance = getValue('ej2_instances', this.element);\n var inputElement = this.multiline ?\n this.createElement('textarea') :\n this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n inputElement.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n inputElement.innerHTML = this.element.innerHTML;\n if (attributeName === 'name') {\n this.element.removeAttribute('name');\n }\n }\n else if (attributeName === 'class') {\n inputElement.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) { return item.indexOf('ng-') !== 0; }).join(' '));\n }\n }\n this.element.appendChild(inputElement);\n this.element = inputElement;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) && this.element.value !== '') {\n this.setProperties({ value: this.element.value }, true);\n }\n if (this.element.tagName !== 'TEXTAREA') {\n this.element.setAttribute('type', this.type);\n }\n if (this.type === 'text') {\n this.element.setAttribute('role', 'textbox');\n }\n this.globalize = new Internationalization(this.locale);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('textbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('textbox'));\n }\n if (!this.element.hasAttribute('name')) {\n this.element.setAttribute('name', this.element.getAttribute('id'));\n }\n if (this.element.tagName === 'INPUT' && this.multiline) {\n this.isHiddenInput = true;\n this.textarea = this.createElement('textarea');\n this.element.parentNode.insertBefore(this.textarea, this.element);\n this.element.setAttribute('type', 'hidden');\n this.textarea.setAttribute('name', this.element.getAttribute('name'));\n this.element.removeAttribute('name');\n this.textarea.setAttribute('role', this.element.getAttribute('role'));\n this.element.removeAttribute('role');\n this.textarea.setAttribute('id', getUniqueID('textarea'));\n var apiAttributes = ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var index = 0; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (this.element.hasAttribute(attributeName) && containerAttr.indexOf(attributeName) < 0 &&\n !(attributeName === 'id' || attributeName === 'type' || attributeName === 'e-mappinguid')) {\n // e-mappinguid attribute is handled for Grid component.\n this.textarea.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n if (apiAttributes.indexOf(attributeName) < 0) {\n this.element.removeAttribute(attributeName);\n index--;\n }\n }\n }\n }\n };\n TextBox.prototype.checkAttributes = function (isDynamic) {\n var attrs = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var _i = 0, attrs_1 = attrs; _i < attrs_1.length; _i++) {\n var key = attrs_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(key))) {\n switch (key) {\n case 'disabled':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(key) === 'disabled' || this.element.getAttribute(key) === '' ||\n this.element.getAttribute(key) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(key) === 'readonly' || this.element.getAttribute(key) === ''\n || this.element.getAttribute(key) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'autocomplete':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['autocomplete'] === undefined)) || isDynamic) {\n var autoCompleteTxt = this.element.autocomplete === 'off' ? 'off' : 'on';\n this.setProperties({ autocomplete: autoCompleteTxt }, !isDynamic);\n }\n break;\n case 'value':\n if (((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) || isDynamic) && this.element.value !== '') {\n this.setProperties({ value: this.element.value }, !isDynamic);\n }\n break;\n case 'type':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['type'] === undefined)) || isDynamic) {\n this.setProperties({ type: this.element.type }, !isDynamic);\n }\n break;\n }\n }\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n TextBox.prototype.render = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getInputValidClassList(this.cssClass);\n }\n this.respectiveElement = (this.isHiddenInput) ? this.textarea : this.element;\n this.textboxWrapper = Input.createInput({\n element: this.respectiveElement,\n floatLabelType: this.floatLabelType,\n properties: {\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValue,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n });\n this.updateHTMLAttrToWrapper();\n if (this.isHiddenInput) {\n this.respectiveElement.parentNode.insertBefore(this.element, this.respectiveElement);\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.value)) {\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n }\n if (!isNullOrUndefined(this.value)) {\n this.initialValue = this.value;\n this.setInitialValue();\n }\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else if (!isNullOrUndefined(this.textboxOptions) && (this.textboxOptions['autocomplete'] !== undefined)) {\n this.removeAttributes(['autocomplete']);\n }\n this.previousValue = this.value;\n this.inputPreviousValue = this.value;\n this.respectiveElement.defaultValue = this.respectiveElement.value;\n Input.setWidth(this.width, this.textboxWrapper.container);\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n };\n TextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = this.getInputValidClassList(this.htmlAttributes[\"\" + key]);\n if (updatedClassValues !== '') {\n addClass([this.textboxWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.textboxWrapper.container.getAttribute(key);\n setStyle = !isNullOrUndefined(setStyle) ? (setStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.textboxWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.textboxWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n TextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) < 0) {\n this.multiline && !isNullOrUndefined(this.textarea) ? this.textarea.setAttribute(key, this.htmlAttributes[\"\" + key]) : this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n TextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getInputValidClassList(newClass), [this.textboxWrapper.container], this.getInputValidClassList(oldClass));\n };\n TextBox.prototype.getInputValidClassList = function (inputClassName) {\n var result = inputClassName;\n if (!isNullOrUndefined(inputClassName) && inputClassName !== '') {\n result = (inputClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n TextBox.prototype.setInitialValue = function () {\n if (!this.isAngular) {\n this.respectiveElement.setAttribute('value', this.initialValue);\n }\n };\n TextBox.prototype.wireEvents = function () {\n EventHandler.add(this.respectiveElement, 'focus', this.focusHandler, this);\n EventHandler.add(this.respectiveElement, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.respectiveElement, 'keydown', this.keydownHandler, this);\n EventHandler.add(this.respectiveElement, 'input', this.inputHandler, this);\n EventHandler.add(this.respectiveElement, 'change', this.changeHandler, this);\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.resetForm, this);\n }\n this.bindClearEvent();\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto'\n && this.textboxWrapper.container.classList.contains('e-autofill') &&\n this.textboxWrapper.container.classList.contains('e-outline')) {\n EventHandler.add((this.textboxWrapper.container.querySelector('.e-float-text')), 'animationstart', this.animationHandler, this);\n }\n };\n TextBox.prototype.animationHandler = function () {\n this.textboxWrapper.container.classList.add('e-valid-input');\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label)) {\n label.classList.add('e-label-top');\n if (label.classList.contains('e-label-bottom')) {\n label.classList.remove('e-label-bottom');\n }\n }\n };\n TextBox.prototype.resetValue = function (value) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.value = value;\n if (value == null && this.textboxWrapper.container.classList.contains('e-valid-input')) {\n this.textboxWrapper.container.classList.remove('e-valid-input');\n }\n this.isProtectedOnChange = prevOnChange;\n };\n TextBox.prototype.resetForm = function () {\n if (this.isAngular) {\n this.resetValue('');\n }\n else {\n this.resetValue(this.initialValue);\n }\n if (!isNullOrUndefined(this.textboxWrapper)) {\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label) && this.floatLabelType !== 'Always') {\n if ((isNullOrUndefined(this.initialValue) || this.initialValue === '')) {\n label.classList.add('e-label-bottom');\n label.classList.remove('e-label-top');\n }\n else if (this.initialValue !== '') {\n label.classList.add('e-label-top');\n label.classList.remove('e-label-bottom');\n }\n }\n }\n };\n TextBox.prototype.focusHandler = function (args) {\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('focus', eventArgs);\n };\n TextBox.prototype.focusOutHandler = function (args) {\n if (!(this.previousValue === null && this.value === null && this.respectiveElement.value === '') &&\n (this.previousValue !== this.value)) {\n this.raiseChangeEvent(args, true);\n }\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('blur', eventArgs);\n };\n TextBox.prototype.keydownHandler = function (args) {\n if ((args.keyCode === 13 || args.keyCode === 9) && !((this.previousValue === null || this.previousValue === \"\") && (this.value === null || this.value === \"\") && this.respectiveElement.value === \"\")) {\n this.setProperties({ value: this.respectiveElement.value }, true);\n }\n };\n TextBox.prototype.inputHandler = function (args) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var textboxObj = this;\n var eventArgs = {\n event: args,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if (this.isAngular) {\n textboxObj.localChange({ value: this.respectiveElement.value });\n this.preventChange = true;\n }\n if (this.isVue) {\n this.preventChange = true;\n }\n this.trigger('input', eventArgs);\n args.stopPropagation();\n };\n TextBox.prototype.changeHandler = function (args) {\n this.setProperties({ value: this.respectiveElement.value }, true);\n if (this.previousValue != this.value) {\n this.raiseChangeEvent(args, true);\n }\n args.stopPropagation();\n };\n TextBox.prototype.raiseChangeEvent = function (event, interaction) {\n var eventArgs = {\n event: event,\n value: this.value,\n previousValue: this.previousValue,\n container: this.textboxWrapper.container,\n isInteraction: interaction ? interaction : false,\n isInteracted: interaction ? interaction : false\n };\n this.preventChange = false;\n this.trigger('change', eventArgs);\n this.previousValue = this.value;\n //EJ2CORE-738:For this task we update the textarea value to the input when input tag with multiline is present\n if (this.element.tagName === 'INPUT' && this.multiline && Browser.info.name === 'mozilla') {\n this.element.value = this.respectiveElement.value;\n }\n };\n TextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n if (this.enabled) {\n EventHandler.add(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler, this);\n }\n else {\n EventHandler.remove(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler);\n }\n }\n };\n TextBox.prototype.resetInputHandler = function (event) {\n event.preventDefault();\n if (!(this.textboxWrapper.clearButton.classList.contains(HIDE_CLEAR)) || this.textboxWrapper.container.classList.contains('e-static-clear')) {\n Input.setValue('', this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.setProperties({ value: this.respectiveElement.value }, true);\n var eventArgs = {\n event: event,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.trigger('input', eventArgs);\n this.inputPreviousValue = this.respectiveElement.value;\n this.raiseChangeEvent(event, true);\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n }\n };\n TextBox.prototype.unWireEvents = function () {\n EventHandler.remove(this.respectiveElement, 'focus', this.focusHandler);\n EventHandler.remove(this.respectiveElement, 'blur', this.focusOutHandler);\n EventHandler.remove(this.respectiveElement, 'keydown', this.keydownHandler);\n EventHandler.remove(this.respectiveElement, 'input', this.inputHandler);\n EventHandler.remove(this.respectiveElement, 'change', this.changeHandler);\n if (this.isForm) {\n EventHandler.remove(this.formElement, 'reset', this.resetForm);\n }\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto'\n && this.textboxWrapper.container.classList.contains('e-outline') &&\n this.textboxWrapper.container.classList.contains('e-autofill')) {\n EventHandler.remove((this.textboxWrapper.container.querySelector('.e-float-text')), 'animationstart', this.animationHandler);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also, it maintains the initial TextBox element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n TextBox.prototype.destroy = function () {\n this.unWireEvents();\n if (this.element.tagName === 'INPUT' && this.multiline) {\n detach(this.textboxWrapper.container.getElementsByTagName('textarea')[0]);\n this.respectiveElement = this.element;\n this.element.removeAttribute('type');\n }\n this.respectiveElement.value = this.respectiveElement.defaultValue;\n this.respectiveElement.classList.remove('e-input');\n this.removeAttributes(['aria-disabled', 'aria-readonly', 'aria-labelledby']);\n if (!isNullOrUndefined(this.textboxWrapper)) {\n this.textboxWrapper.container.insertAdjacentElement('afterend', this.respectiveElement);\n detach(this.textboxWrapper.container);\n }\n this.textboxWrapper = null;\n Input.destroy();\n _super.prototype.destroy.call(this);\n };\n /**\n * Adding the icons to the TextBox component.\n *\n * @param { string } position - Specify the icon placement on the TextBox. Possible values are append and prepend.\n * @param { string | string[] } icons - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for TextBox.\n * @returns {void}\n */\n TextBox.prototype.addIcon = function (position, icons) {\n Input.addIcon(position, icons, this.textboxWrapper.container, this.respectiveElement, this.createElement);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n */\n TextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\n /**\n * Adding the multiple attributes as key-value pair to the TextBox element.\n *\n * @param {string} attributes - Specifies the attributes to be add to TextBox element.\n * @returns {void}\n */\n TextBox.prototype.addAttributes = function (attributes) {\n for (var _i = 0, _a = Object.keys(attributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: false }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: true }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'class') {\n this.respectiveElement.classList.add(attributes[\"\" + key]);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: attributes[\"\" + key] }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else if (key === 'rows' && this.respectiveElement.tagName === 'TEXTAREA') {\n this.respectiveElement.setAttribute(key, attributes[\"\" + key]);\n }\n else {\n this.respectiveElement.setAttribute(key, attributes[\"\" + key]);\n }\n }\n };\n /**\n * Removing the multiple attributes as key-value pair to the TextBox element.\n *\n * @param { string[] } attributes - Specifies the attributes name to be removed from TextBox element.\n * @returns {void}\n */\n TextBox.prototype.removeAttributes = function (attributes) {\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var key = attributes_1[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: true }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: false }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: null }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else {\n this.respectiveElement.removeAttribute(key);\n }\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n TextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.respectiveElement && this.enabled) {\n this.respectiveElement.focus();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n addClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n TextBox.prototype.focusOut = function () {\n if (document.activeElement === this.respectiveElement && this.enabled) {\n this.respectiveElement.blur();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n removeClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n __decorate([\n Property('text')\n ], TextBox.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"value\", void 0);\n __decorate([\n Property('Never')\n ], TextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property('')\n ], TextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('on')\n ], TextBox.prototype, \"autocomplete\", void 0);\n __decorate([\n Property({})\n ], TextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"multiline\", void 0);\n __decorate([\n Property(true)\n ], TextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"input\", void 0);\n TextBox = __decorate([\n NotifyPropertyChanges\n ], TextBox);\n return TextBox;\n}(Component));\nexport { TextBox };\n"," //For m3 conversion fixed fileds\r\nconst _calorificValue = 38;\r\nconst _correctionFactor = 1.02264;\r\nconst _kWhConversionFactor = 3.6;\r\n\r\nconst unitConversions = {\r\n // kWh base\r\n kWhToMWh: function (kWh) {\r\n return kWh / 1000;\r\n },\r\n kWhToMW: function (kWh, numberOfDays, isPeakload) {\r\n return kWh / numberOfDays / (!isPeakload? 24:12) / 1000;\r\n },\r\n kWhToTherms: function (kWh) {\r\n return kWh / 29.3071;\r\n },\r\n kWhToThermsPerDay: function (kWh, numberOfDays) {\r\n return kWh / numberOfDays / 29.3071;\r\n },\r\n kWhToMmbtu: function (kWh) {\r\n return kWh / 293.071;\r\n }, \r\n kWhToM3: function (kWh ) {\r\n return kWh * _calorificValue / _correctionFactor * _kWhConversionFactor;\r\n },\r\n \r\n // MWh base\r\n MWhTokWh: function (MWh) {\r\n return MWh * 1000;\r\n },\r\n MWhToMW: function (MWh, numberOfDays, isPeakload) {\r\n return MWh / numberOfDays / (!isPeakload ? 24 : 12);\r\n },\r\n MWhToTherms: function (MWh) {\r\n return MWh / 0.0293071;\r\n },\r\n MWhToThermsPerDay: function (MWh, numberOfDays) {\r\n return MWh / numberOfDays / 0.2931;\r\n },\r\n MWhToMmbtu: function (MWh) {\r\n return MWh / 0.293071;\r\n }, \r\n MWhToM3: function (MWh ) {\r\n return MWh / calorificValue / correctionFactor * kWhConversionFactor * 1000;\r\n },\r\n \r\n\r\n // MW base\r\n MWTokWh: function (MW, numberOfDays, isPeakload) {\r\n return MW * numberOfDays * (!isPeakload ? 24 : 12) * 1000;\r\n },\r\n MWToMWh: function (MW, numberOfDays, isPeakload) {\r\n return MW * numberOfDays * (!isPeakload ? 24 : 12);\r\n },\r\n MWToTherms: function (MW, numberOfDays, isPeakload) {\r\n return MW * numberOfDays * (!isPeakload ? 24 : 12) * 34.12142;\r\n },\r\n MWToThermsPerDay: function (MW) {\r\n return MW / 0.04167 / 0.0293071;\r\n },\r\n MWToMmbtu: function (MW, numberOfDays, isPeakload) {\r\n return MW * numberOfDays * (!isPeakload ? 24 : 12) * 3.412142;\r\n }, \r\n MWToM3: function (MW, numberOfDays) {\r\n return MW / _calorificValue / _correctionFactor * _kWhConversionFactor * 1000 * numberOfDays * 24;\r\n },\r\n \r\n // therms base\r\n thermsTokWh: function (therms) {\r\n return therms * 29.3071;\r\n },\r\n thermsToMWh: function (therms) {\r\n return therms * 0.0293071;\r\n },\r\n thermsToMW: function (therms, numberOfDays, isPeakload) {\r\n return therms / numberOfDays / (!isPeakload ? 24 : 12) / 34.12124;\r\n },\r\n thermsToThermsPerDay: function (therms, numberOfDays) {\r\n return therms / numberOfDays;\r\n },\r\n thermsToMmbtu: function (therms) {\r\n return therms / 10;\r\n }, \r\n thermsToM3: function (therm) {\r\n return therm / _calorificValue / _correctionFactor * _kWhConversionFactor * 29.3071;\r\n },\r\n \r\n\r\n // th/d base\r\n thermsPerDayTokWh: function (thermsPerDay, numberOfDays) {\r\n return thermsPerDay * numberOfDays * 29.3071;\r\n },\r\n thermsPerDayToMWh: function (thermsPerDay, numberOfDays) {\r\n return thermsPerDay * numberOfDays * 0.0293071;\r\n },\r\n thermsPerDayToMW: function (thermsPerDay) {\r\n return thermsPerDay * 0.0293071 * 0.04167;\r\n },\r\n thermsPerDayToTherms: function (thermsPerDay, numberOfDays) {\r\n return thermsPerDay * numberOfDays;\r\n },\r\n thermsPerDayToMmbtu: function (thermsPerDay, numberOfDays) {\r\n return thermsPerDay * numberOfDays * 0.1;\r\n }, \r\n thermsPerDayToM3: function (thermsPerDay, numberOfDays ) {\r\n return thermsPerDay / _calorificValue / _correctionFactor * _kWhConversionFactor * numberOfDays * 29.3071;\r\n },\r\n \r\n\r\n // mmbtu base\r\n mmbtuTokWh: function (mmbtu) {\r\n return mmbtu * 293.071;\r\n },\r\n mmbtuToMWh: function (mmbtu) {\r\n return mmbtu * 0.293071;\r\n },\r\n mmbtuToMW: function (mmbtu, numberOfDays, isPeakload) {\r\n return mmbtu / numberOfDays / (!isPeakload ? 24 : 12) / 3.412124;\r\n },\r\n mmbtuToTherms: function (mmbtu) {\r\n return mmbtu * 10;\r\n },\r\n mmbtuToThermsPerDay: function (mmbtu, numberOfDays) {\r\n return mmbtu / numberOfDays / 0.1;\r\n },\r\n mmbtuToM3: function (mmbtu) {\r\n return mmbtu / _calorificValue / _correctionFactor * _kWhConversionFactor * 293.071;\r\n },\r\n\r\n\r\n m3TokWh: function (m3b ) {\r\n return m3b * _calorificValue * _correctionFactor / _kWhConversionFactor;\r\n },\r\n m3ToMWh: function (m3b ) {\r\n return m3b * _calorificValue * _correctionFactor / _kWhConversionFactor / 1000;\r\n },\r\n m3ToMW: function (m3b, numberOfDays ) {\r\n return m3b * _calorificValue * _correctionFactor / _kWhConversionFactor / 1000 / numberOfDays / 24;\r\n },\r\n m3ToTherms: function (m3b ) {\r\n return m3b * _calorificValue * _correctionFactor / _kWhConversionFactor / 29.3071;\r\n },\r\n m3ToThermsPerDay: function (m3b, numberOfDays) {\r\n return m3b * _calorificValue * _correctionFactor / _kWhConversionFactor / numberOfDays / 29.3071;\r\n },\r\n m3ToMmbtu: function (m3b ) {\r\n return m3b * _calorificValue * _correctionFactor / _kWhConversionFactor / 293.071;\r\n },\r\n\r\n \r\n\r\n\r\n\r\n\r\n // percentage\r\n percentageToUnit: function (percentage, total) {\r\n return (percentage / 100) * total;\r\n },\r\n unitToPercentage: function (part, total) {\r\n if (total === 0) {\r\n return 0;\r\n }\r\n return (part / total) * 100;\r\n },\r\n\r\n /**\r\n * Converts values from one unit to another\r\n * @param {any} inputValue - the input value in the original unit\r\n * @param {any} inputUnit - the original unit from which the value is being converted to\r\n * @param {any} outputUnit - the unit to which the value is being converted to\r\n * @param {any} numberOfDays - default: 30\r\n * @param {any} totalAvailableValue - default: 0, used for calculating percentages\r\n */\r\n convert: function (inputValue, inputUnit, outputUnit, numberOfDays = 30, isPeakload = false) {\r\n if (inputUnit == \"m\\u00B3\") {\r\n inputUnit = \"m3\";\r\n } \r\n if (outputUnit == \"m\\u00B3\") {\r\n outputUnit = \"m3\";\r\n }\r\n \r\n switch (inputUnit) {\r\n case 'therm':\r\n switch (outputUnit) {\r\n case 'kWh':\r\n return this.thermsTokWh(inputValue);\r\n break;\r\n case 'MWh':\r\n return this.thermsToMWh(inputValue);\r\n break;\r\n case 'MW':\r\n return this.thermsToMW(inputValue, numberOfDays, isPeakload);\r\n break;\r\n case 'th/d':\r\n return this.thermsToThermsPerDay(inputValue, numberOfDays);\r\n break;\r\n case 'mmbtu':\r\n return this.thermsToMmbtu(inputValue)\r\n break;\r\n case 'm3':\r\n return this.thermsTom3(inputValue);\r\n break;\r\n default:\r\n return inputValue;\r\n break;\r\n }\r\n case 'kWh':\r\n switch (outputUnit) {\r\n case 'MWh':\r\n return this.kWhToMWh(inputValue);\r\n break;\r\n case 'MW':\r\n return this.kWhToMW(inputValue, numberOfDays, isPeakload);\r\n break;\r\n case 'therm':\r\n return this.kWhToTherms(inputValue);\r\n break;\r\n case 'th/d':\r\n return this.kWhToThermsPerDay(inputValue, numberOfDays);\r\n break;\r\n case 'mmbtu':\r\n return this.kWhToMmbtu(inputValue);\r\n break;\r\n case 'm3':\r\n return this.kWhTom3(inputValue);\r\n break;\r\n default:\r\n return inputValue;\r\n break;\r\n }\r\n case 'MWh':\r\n switch (outputUnit) {\r\n case 'kWh':\r\n return this.MWhTokWh(inputValue);\r\n break;\r\n case 'MW':\r\n return this.MWhToMW(inputValue, numberOfDays, isPeakload);\r\n break;\r\n case 'therm':\r\n return this.MWhToTherms(inputValue);\r\n break;\r\n case 'th/d':\r\n return this.MWhToThermsPerDay(inputValue, numberOfDays);\r\n break;\r\n case 'mmbtu':\r\n return this.MWhToMmbtu(inputValue);\r\n break;\r\n case 'm3':\r\n return this.MWhTom3(inputValue);\r\n break;\r\n default:\r\n return inputValue;\r\n break;\r\n }\r\n case 'MW':\r\n switch (outputUnit) {\r\n case 'kWh':\r\n return this.MWTokWh(inputValue, numberOfDays, isPeakload);\r\n break;\r\n case 'MWh':\r\n return this.MWToMWh(inputValue, numberOfDays, isPeakload);\r\n break;\r\n case 'therm':\r\n return this.MWToTherms(inputValue, numberOfDays, isPeakload);\r\n break;\r\n case 'th/d':\r\n return this.MWToThermsPerDay(inputValue);\r\n break;\r\n case 'mmbtu':\r\n return this.MWToMmbtu(inputValue, numberOfDays, isPeakload);\r\n break;\r\n case 'm3':\r\n return this.MWTom3(inputValue, numberOfDays);\r\n break;\r\n default:\r\n return inputValue;\r\n break;\r\n }\r\n case 'mmbtu':\r\n switch (outputUnit) {\r\n case 'kWh':\r\n return this.mmbtuTokWh(inputValue);\r\n break;\r\n case 'MWh':\r\n return this.mmbtuToMWh(inputValue);\r\n break;\r\n case 'MW':\r\n return this.mmbtuToMW(inputValue, numberOfDays, isPeakload);\r\n break;\r\n case 'th/d':\r\n return this.mmbtuToThermsPerDay(inputValue, numberOfDays);\r\n break;\r\n case 'therm':\r\n return this.mmbtuToTherms(inputValue)\r\n break;\r\n case 'm3':\r\n return this.mmbtuToM3(inputValue)\r\n break;\r\n default:\r\n return inputValue;\r\n break;\r\n }\r\n case 'th/d':\r\n switch (outputUnit) {\r\n case 'kWh':\r\n return this.thermsPerDayTokWh(inputValue, numberOfDays);\r\n break;\r\n case 'MWh':\r\n return this.thermsPerDayToMWh(inputValue, numberOfDays);\r\n break;\r\n case 'MW':\r\n return this.thermsPerDayToMW(inputValue);\r\n break;\r\n case 'therm':\r\n return this.thermsPerDayToTherms(inputValue, numberOfDays);\r\n break;\r\n case 'mmbtu':\r\n return this.thermsPerDayToMmbtu(inputValue, numberOfDays);\r\n break;\r\n case 'm3':\r\n return this.thermsPerDayTom3(inputValue, numberOfDays);\r\n break;\r\n default:\r\n return inputValue;\r\n break;\r\n }\r\n case 'm3':\r\n switch (outputUnit) {\r\n case 'kWh':\r\n return this.m3TokWh(inputValue );\r\n case 'MWh':\r\n return this.m3ToMWh(inputValue );\r\n case 'MW':\r\n return this.m3ToMW(inputValue, numberOfDays );\r\n case 'therm':\r\n return this.m3ToTherms(inputValue );\r\n case 'th/d':\r\n return this.m3ToThermsPerDay(inputValue, numberOfDays );\r\n case 'mmbtu':\r\n return this.m3ToMmbtu(inputValue );\r\n default:\r\n return inputValue;\r\n }\r\n default:\r\n return inputValue;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nexport default unitConversions;","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/triple-slash-reference */\n/// \nimport { attributes, getUniqueID, Collection, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { getZindexPartial } from '@syncfusion/ej2-popups';\nimport { MenuBase, MenuItem } from '../common/menu-base';\n/**\n * The ContextMenu is a graphical user interface that appears on the user right click/touch hold operation.\n * ```html\n *
\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar ContextMenu = /** @class */ (function (_super) {\n __extends(ContextMenu, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {ContextMenuModel} options - Specifies the context menu model\n * @param {string} element - Specifies the element\n */\n function ContextMenu(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * For internal use only - prerender processing.\n *\n * @private\n * @returns {void}\n */\n ContextMenu.prototype.preRender = function () {\n this.isMenu = false;\n this.element.id = this.element.id || getUniqueID('ej2-contextmenu');\n _super.prototype.preRender.call(this);\n };\n ContextMenu.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n attributes(this.element, { 'role': 'menubar', 'tabindex': '0' });\n this.element.style.zIndex = getZindexPartial(this.element).toString();\n };\n /**\n * This method is used to open the ContextMenu in specified position.\n *\n * @param {number} top - To specify ContextMenu vertical positioning.\n * @param {number} left - To specify ContextMenu horizontal positioning.\n * @param {HTMLElement} target - To calculate z-index for ContextMenu based upon the specified target.\n * @function open\n * @returns {void}\n */\n ContextMenu.prototype.open = function (top, left, target) {\n _super.prototype.openMenu.call(this, null, null, top, left, null, target);\n };\n /**\n * Closes the ContextMenu if it is opened.\n *\n * @function close\n * @returns {void}\n */\n ContextMenu.prototype.close = function () {\n _super.prototype.closeMenu.call(this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {ContextMenuModel} newProp - Specifies new properties\n * @param {ContextMenuModel} oldProp - Specifies old properties\n * @returns {void}\n */\n ContextMenu.prototype.onPropertyChanged = function (newProp, oldProp) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'filter':\n this.close();\n this.filter = newProp.filter;\n break;\n case 'target':\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n break;\n }\n }\n };\n /**\n * Get module name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"filter\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], ContextMenu.prototype, \"items\", void 0);\n ContextMenu = __decorate([\n NotifyPropertyChanges\n ], ContextMenu);\n return ContextMenu;\n}(MenuBase));\nexport { ContextMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { formatUnit, removeClass } from '@syncfusion/ej2-base';\nimport { colGroupRefresh, columnWidthChanged, scroll, columnVisibilityChanged, refreshFooterRenderer } from '../base/constant';\nimport { ContentRender } from './content-renderer';\nimport { RowRenderer } from './row-renderer';\nimport { SummaryModelGenerator } from '../services/summary-model-generator';\nimport { calculateAggregate, iterateExtend, addRemoveEventListener, applyStickyLeftRightPosition } from '../base/util';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n/**\n * Footer module is used to render grid content\n *\n * @hidden\n */\nvar FooterRenderer = /** @class */ (function (_super) {\n __extends(FooterRenderer, _super);\n function FooterRenderer(gridModule, serviceLocator) {\n var _this = _super.call(this, gridModule, serviceLocator) || this;\n _this.aggregates = {};\n _this.parent = gridModule;\n _this.locator = serviceLocator;\n _this.modelGenerator = new SummaryModelGenerator(_this.parent);\n _this.addEventListener();\n return _this;\n }\n /**\n * The function is used to render grid footer div\n *\n * @returns {void}\n */\n FooterRenderer.prototype.renderPanel = function () {\n var div = this.parent.createElement('div', { className: literals.gridFooter });\n var innerDiv = this.parent.createElement('div', { className: 'e-summarycontent' });\n div.appendChild(innerDiv);\n this.setPanel(div);\n if (this.parent.getPager() != null) {\n this.parent.element.insertBefore(div, this.parent.getPager());\n }\n else {\n this.parent.element.appendChild(div);\n }\n };\n /**\n * The function is used to render grid footer table\n *\n * @returns {void}\n */\n FooterRenderer.prototype.renderTable = function () {\n var innerDiv = this.createContentTable('_footer_table');\n var table = innerDiv.querySelector('.' + literals.table);\n var tFoot = this.parent.createElement('tfoot');\n table.appendChild(tFoot);\n this.setTable(table);\n };\n FooterRenderer.prototype.renderSummaryContent = function (e, table, cStart, cEnd) {\n var input = this.parent.dataSource instanceof Array ? !this.parent.getDataModule().isRemote() &&\n this.parent.parentDetails ? this.getData() : this.parent.dataSource : this.parent.currentViewData;\n var summaries = this.modelGenerator.getData();\n var dummies = isNullOrUndefined(cStart) ? this.modelGenerator.getColumns() :\n this.modelGenerator.getColumns(cStart);\n // eslint-disable-next-line max-len\n var rows = isNullOrUndefined(cStart) ? this.modelGenerator.generateRows(input, e || this.aggregates) :\n this.modelGenerator.generateRows(input, e || this.aggregates, cStart, cEnd);\n var fragment = document.createDocumentFragment();\n var rowrenderer = new RowRenderer(this.locator, null, this.parent);\n rowrenderer.element = this.parent.createElement('TR', { className: 'e-summaryrow', attrs: { role: 'row' } });\n for (var srow = 0, len = summaries.length; srow < len; srow++) {\n var row = rows[parseInt(srow.toString(), 10)];\n if (!row) {\n continue;\n }\n var tr = rowrenderer.render(row, dummies);\n if (tr.querySelectorAll('.e-leftfreeze').length && tr.querySelectorAll('.e-indentcell').length) {\n var td = tr.querySelectorAll('.e-indentcell');\n for (var i = 0; i < td.length; i++) {\n td[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td[parseInt(i.toString(), 10)], i * 30, this.parent.enableRtl, 'Left');\n }\n }\n if (this.parent.isFrozenGrid() && tr.querySelectorAll('.e-summarycell').length) {\n removeClass([].slice.call(tr.querySelectorAll('.e-summarycell')), ['e-freezeleftborder', 'e-freezerightborder']);\n }\n fragment.appendChild(tr);\n }\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if ((this.parent.isReact || isReactChild) && summaries.length && this.parent.isInitialLoad) {\n this.parent.renderTemplates(function () {\n table.tFoot.innerHTML = '';\n table.tFoot.appendChild(fragment);\n });\n }\n else {\n table.tFoot.appendChild(fragment);\n }\n this.aggregates = !isNullOrUndefined(e) ? e : this.aggregates;\n };\n FooterRenderer.prototype.refresh = function (e) {\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (!(this.parent.isReact || isReactChild) || !this.parent.isInitialLoad) {\n this.getTable().tFoot.innerHTML = '';\n }\n this.renderSummaryContent(e, this.getTable(), undefined, undefined);\n if (isNullOrUndefined(e) && this.parent.isAutoFitColumns) {\n this.parent.autoFitColumns();\n }\n this.onScroll();\n };\n FooterRenderer.prototype.refreshCol = function () {\n // frozen table\n var mheaderCol = this.parent.element.querySelector('.' + literals.gridHeader).querySelector(literals.colGroup).cloneNode(true);\n this.getTable().replaceChild(mheaderCol, this.getColGroup());\n this.setColGroup(mheaderCol);\n };\n FooterRenderer.prototype.onWidthChange = function (args) {\n this.getColFromIndex(args.index).style.width = formatUnit(args.width);\n if (this.parent.allowResizing && args.module === 'resize') {\n this.updateFooterTableWidth(this.getTable());\n }\n };\n FooterRenderer.prototype.onScroll = function (e) {\n if (e === void 0) { e = {\n left: this.parent.getContent().firstChild.scrollLeft\n }; }\n this.getTable().parentElement.scrollLeft = e.left;\n };\n FooterRenderer.prototype.getColFromIndex = function (index) {\n return this.getColGroup().children[parseInt(index.toString(), 10)];\n };\n FooterRenderer.prototype.columnVisibilityChanged = function () {\n this.refresh();\n };\n FooterRenderer.prototype.addEventListener = function () {\n this.evtHandlers = [{ event: colGroupRefresh, handler: this.refreshCol },\n { event: columnWidthChanged, handler: this.onWidthChange },\n { event: scroll, handler: this.onScroll },\n { event: columnVisibilityChanged, handler: this.columnVisibilityChanged },\n { event: refreshFooterRenderer, handler: this.refreshFooterRenderer }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n FooterRenderer.prototype.removeEventListener = function () {\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n FooterRenderer.prototype.updateFooterTableWidth = function (tFoot) {\n var tHead = this.parent.getHeaderTable();\n if (tHead && tFoot) {\n tFoot.style.width = tHead.style.width;\n }\n };\n FooterRenderer.prototype.refreshFooterRenderer = function (editedData) {\n var aggregates = this.onAggregates(editedData);\n this.refresh(aggregates);\n };\n FooterRenderer.prototype.getIndexByKey = function (data, ds) {\n var key = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < ds.length; i++) {\n if (ds[parseInt(i.toString(), 10)][\"\" + key] === data[\"\" + key]) {\n return i;\n }\n }\n return -1;\n };\n FooterRenderer.prototype.getData = function () {\n return this.parent.getDataModule().dataManager.executeLocal(this.parent.getDataModule().generateQuery(true));\n };\n FooterRenderer.prototype.onAggregates = function (editedData) {\n editedData = editedData instanceof Array ? editedData : [];\n var field = this.parent.getPrimaryKeyFieldNames()[0];\n var dataSource = [];\n var isModified = false;\n var batchChanges = {};\n var gridData = 'dataSource';\n var isFiltered = false;\n if (!(this.parent.renderModule.data.isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && ((this.parent.allowFiltering\n && this.parent.filterSettings.columns.length) || this.parent.searchSettings.key.length)) {\n isFiltered = true;\n }\n var currentViewData;\n if (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result) {\n currentViewData = this.parent.getCurrentViewRecords();\n }\n else {\n currentViewData = this.parent.dataSource instanceof Array ?\n (isFiltered ? this.parent.getFilteredRecords() : this.parent.dataSource) : (this.parent.dataSource[\"\" + gridData].json.length ?\n (isFiltered ? this.parent.getFilteredRecords() : this.parent.dataSource[\"\" + gridData].json)\n : this.parent.getCurrentViewRecords());\n }\n if (this.parent.parentDetails && !this.parent.getDataModule().isRemote()) {\n currentViewData = this.getData();\n }\n if (this.parent.editModule) {\n batchChanges = this.parent.editModule.getBatchChanges();\n }\n if (Object.keys(batchChanges).length) {\n for (var i = 0; i < currentViewData.length; i++) {\n isModified = false;\n // eslint-disable-next-line max-len\n if (batchChanges[literals.changedRecords].length && this.getIndexByKey(currentViewData[parseInt(i.toString(), 10)], batchChanges[literals.changedRecords]) > -1) {\n isModified = true;\n // eslint-disable-next-line max-len\n dataSource.push(batchChanges[literals.changedRecords][this.getIndexByKey(currentViewData[parseInt(i.toString(), 10)], batchChanges[literals.changedRecords])]);\n }\n // eslint-disable-next-line max-len\n if (batchChanges[literals.deletedRecords].length && this.getIndexByKey(currentViewData[parseInt(i.toString(), 10)], batchChanges[literals.deletedRecords]) > -1) {\n isModified = true;\n }\n else if (!isModified) {\n dataSource.push(currentViewData[parseInt(i.toString(), 10)]);\n }\n }\n if (batchChanges[literals.addedRecords].length) {\n for (var i = 0; i < batchChanges[literals.addedRecords].length; i++) {\n dataSource.push(batchChanges[literals.addedRecords][parseInt(i.toString(), 10)]);\n }\n }\n }\n else {\n if (editedData.length) {\n var data = iterateExtend(currentViewData);\n dataSource = data.map(function (item) {\n var idVal = DataUtil.getObject(field, item);\n var value;\n var hasVal = editedData.some(function (cItem) {\n value = cItem;\n return idVal === DataUtil.getObject(field, cItem);\n });\n return hasVal ? value : item;\n });\n }\n else {\n dataSource = currentViewData;\n }\n }\n var eData = editedData;\n if ((eData.type && eData.type === 'cancel')) {\n dataSource = currentViewData;\n }\n var aggregate = {};\n var agrVal;\n var aggregateRows = this.parent.aggregates;\n for (var i = 0; i < aggregateRows.length; i++) {\n for (var j = 0; j < aggregateRows[parseInt(i.toString(), 10)].columns.length; j++) {\n var data = [];\n var type = aggregateRows[parseInt(i.toString(), 10)]\n .columns[parseInt(j.toString(), 10)].type.toString();\n data = dataSource;\n agrVal = calculateAggregate(type, data, aggregateRows[parseInt(i.toString(), 10)]\n .columns[parseInt(j.toString(), 10)], this.parent);\n aggregate[aggregateRows[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)].field + ' - ' + type.toLowerCase()] = agrVal;\n }\n }\n var result = {\n result: dataSource,\n count: dataSource.length,\n aggregates: aggregate\n };\n return result;\n };\n return FooterRenderer;\n}(ContentRender));\nexport { FooterRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { appendChildren } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\nimport { refreshAggregateCell } from '../base/constant';\n/**\n * SummaryCellRenderer class which responsible for building summary cell content.\n *\n * @hidden\n */\nvar SummaryCellRenderer = /** @class */ (function (_super) {\n __extends(SummaryCellRenderer, _super);\n function SummaryCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent\n .createElement('TD', { className: 'e-summarycell', attrs: { tabindex: '-1', role: 'gridcell' } });\n return _this;\n }\n SummaryCellRenderer.prototype.getValue = function (field, data, column) {\n var key = !isNullOrUndefined(column.type) ?\n column.field + ' - ' + (typeof column.type === 'string' ? column.type.toLowerCase() : '') : column.columnName;\n return data[column.columnName] ? data[column.columnName][\"\" + key] : '';\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n SummaryCellRenderer.prototype.evaluate = function (node, cell, data, attributes) {\n var column = cell.column;\n this.parent.on(refreshAggregateCell, this.refreshWithAggregate(node, cell), this);\n if (!(column.footerTemplate || column.groupFooterTemplate || column.groupCaptionTemplate)) {\n if (this.parent.rowRenderingMode === 'Vertical') {\n node.style.display = 'none';\n }\n return true;\n }\n else {\n if (this.parent.rowRenderingMode === 'Vertical') {\n node.classList.add('e-lastsummarycell');\n }\n }\n var tempObj = column.getTemplate(cell.cellType);\n var tempID = '';\n var gColumn = this.parent.getColumnByField(data[column.columnName].field);\n if (!isNullOrUndefined(gColumn)) {\n data[column.columnName].headerText = gColumn.headerText;\n if (gColumn.isForeignColumn()) {\n var fData = gColumn.columnData.filter(function (e) {\n return e[gColumn.foreignKeyField] === data[column.columnName].key;\n })[0];\n if (fData) {\n data[column.columnName].foreignKey = fData[gColumn.foreignKeyValue];\n }\n }\n }\n var isReactCompiler = this.parent.isReact && (column.footerTemplate ?\n typeof (column.footerTemplate) !== 'string' : column.groupFooterTemplate ? typeof (column.groupFooterTemplate) !== 'string'\n : column.groupCaptionTemplate ? typeof (column.groupCaptionTemplate) !== 'string' : false);\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n var prop = data[column.columnName];\n if (tempObj.property === 'groupCaptionTemplate' || tempObj.property === 'groupFooterTemplate') {\n var groupKey = 'groupKey';\n var key = 'key';\n prop[\"\" + groupKey] = prop[\"\" + key];\n }\n tempObj.fn(prop, this.parent, tempObj.property, tempID, null, null, node);\n if (!this.parent.isInitialLoad) {\n this.parent.renderTemplates();\n }\n }\n else {\n appendChildren(node, tempObj.fn(data[column.columnName], this.parent, tempObj.property, tempID));\n }\n return false;\n };\n SummaryCellRenderer.prototype.refreshWithAggregate = function (node, cell) {\n var _this = this;\n var cellNode = cell;\n return function (args) {\n var cell = cellNode;\n var field = cell.column.columnName ? cell.column.columnName : null;\n var curCell = (!isNullOrUndefined(field) ? args.cells.filter(function (cell) {\n return cell.column.columnName === field;\n })[0] : null);\n if (node.parentElement && node.parentElement.getAttribute('data-uid') === args.dataUid && field && curCell &&\n field === curCell.column.columnName) {\n _this.refreshTD(node, curCell, args.data);\n }\n };\n };\n return SummaryCellRenderer;\n}(CellRenderer));\nexport { SummaryCellRenderer };\n","import { remove, extend, getValue } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, addClass } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { uiUpdate, initialEnd, dataReady, modelChanged, refreshAggregates, refreshFooterRenderer, groupAggregates, destroy } from '../base/constant';\nimport { FooterRenderer } from '../renderer/footer-renderer';\nimport { SummaryCellRenderer } from '../renderer/summary-cell-renderer';\nimport { GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport * as literals from '../base/string-literals';\n/**\n * Summary Action controller.\n */\nvar Aggregate = /** @class */ (function () {\n function Aggregate(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.addEventListener();\n }\n Aggregate.prototype.getModuleName = function () {\n return 'aggregate';\n };\n Aggregate.prototype.initiateRender = function () {\n var _this = this;\n var cellFac = this.locator.getService('cellRendererFactory');\n var instance = new SummaryCellRenderer(this.parent, this.locator);\n var type = [CellType.Summary, CellType.CaptionSummary, CellType.GroupSummary];\n for (var i = 0; i < type.length; i++) {\n cellFac.addCellRenderer(type[parseInt(i.toString(), 10)], instance);\n }\n this.footerRenderer = new FooterRenderer(this.parent, this.locator);\n this.footerRenderer.renderPanel();\n this.footerRenderer.renderTable();\n var footerContent = this.footerRenderer.getPanel();\n if (this.parent.element.scrollHeight >= this.parent.getHeight(this.parent.height)\n && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n this.locator.register('footerRenderer', this.footerRenderer);\n var fn = function () {\n _this.prepareSummaryInfo();\n _this.parent.off(dataReady, fn);\n };\n this.parent.on(dataReady, fn, this);\n this.parent.on(dataReady, this.footerRenderer.refresh, this.footerRenderer);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Aggregate.prototype.prepareSummaryInfo = function () {\n var _this = this;\n summaryIterator(this.parent.aggregates, function (column) {\n var cFormat = getValue('customFormat', column);\n if (!isNullOrUndefined(cFormat)) {\n column.setPropertiesSilent({ format: cFormat });\n }\n if (typeof (column.format) === 'object') {\n var valueFormatter = new ValueFormatter();\n column.setFormatter(valueFormatter.getFormatFunction(extend({}, column.format)));\n }\n else if (typeof (column.format) === 'string') {\n var fmtr = _this.locator.getService('valueFormatter');\n column.setFormatter(fmtr.getFormatFunction({ format: column.format }));\n }\n column.setPropertiesSilent({ columnName: column.columnName || column.field });\n });\n };\n Aggregate.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (isNullOrUndefined(this.footerRenderer)) {\n this.initiateRender();\n }\n this.prepareSummaryInfo();\n this.footerRenderer.refresh();\n var cModel = new CaptionSummaryModelGenerator(this.parent);\n var gModel = new GroupSummaryModelGenerator(this.parent);\n if (gModel.getData().length !== 0 || !cModel.isEmpty()) {\n this.parent.notify(modelChanged, {});\n }\n };\n Aggregate.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initialEnd, this.initiateRender, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n this.parent.on(refreshAggregates, this.refresh, this);\n this.parent.on(destroy, this.destroy, this);\n };\n Aggregate.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.footerRenderer.removeEventListener();\n this.parent.off(initialEnd, this.initiateRender);\n this.parent.off(dataReady, this.footerRenderer.refresh);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n this.parent.off(refreshAggregates, this.refresh);\n this.parent.off(destroy, this.destroy);\n if (this.parent.element.querySelector('.' + literals.gridFooter)) {\n remove(this.parent.element.querySelector('.' + literals.gridFooter));\n }\n };\n Aggregate.prototype.destroy = function () {\n this.removeEventListener();\n };\n Aggregate.prototype.refresh = function (data, element) {\n var editedData = data instanceof Array ? data : [data];\n this.parent.notify(refreshFooterRenderer, editedData);\n if (element) {\n editedData.row = element;\n }\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(groupAggregates, editedData);\n }\n };\n return Aggregate;\n}());\nexport { Aggregate };\n/**\n * @param {AggregateRowModel[]} aggregates - specifies the AggregateRowModel\n * @param {Function} callback - specifies the Function\n * @returns {void}\n * @private\n */\nexport function summaryIterator(aggregates, callback) {\n for (var i = 0; i < aggregates.length; i++) {\n for (var j = 0; j < aggregates[parseInt(i.toString(), 10)].columns.length; j++) {\n callback(aggregates[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)], aggregates[parseInt(i.toString(), 10)]);\n }\n }\n}\n"],"sourceRoot":""}