{"version":3,"sources":["../node_modules/devextreme/ui/hierarchical_collection/ui.hierarchical_collection_widget.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.sorting.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.sorting_mixin.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.rows.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.state_storing.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.state_storing_core.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.selection.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.validating.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.virtual_scrolling.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.virtual_scrolling_core.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.search.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.virtual_columns.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.virtual_columns_core.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.row_dragging.js","../node_modules/devextreme/ui/html_editor/modules/popup.js","../node_modules/devextreme/ui/html_editor/converterController.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.utils.js","../node_modules/devextreme/ui/hierarchical_collection/ui.data_adapter.js","../node_modules/devextreme/ui/hierarchical_collection/ui.data_converter.js","../node_modules/devextreme/ui/html_editor.js","../node_modules/devextreme/ui/html_editor/ui.html_editor.js","../node_modules/devextreme/ui/html_editor/quill_registrator.js","../node_modules/devextreme/ui/html_editor/quill_importer.js","../node_modules/devextreme/ui/html_editor/themes/base.js","../node_modules/devextreme/ui/html_editor/formats/image.js","../node_modules/devextreme/ui/html_editor/formats/link.js","../node_modules/devextreme/ui/html_editor/formats/font.js","../node_modules/devextreme/ui/html_editor/formats/size.js","../node_modules/devextreme/ui/html_editor/formats/align.js","../node_modules/devextreme/ui/html_editor/modules/toolbar.js","../node_modules/devextreme/ui/html_editor/modules/widget_collector.js","../node_modules/devextreme/ui/html_editor/modules/dropImage.js","../node_modules/devextreme/ui/html_editor/modules/variables.js","../node_modules/devextreme/ui/html_editor/formats/variable.js","../node_modules/devextreme/ui/html_editor/modules/resizing.js","../node_modules/devextreme/ui/html_editor/modules/mentions.js","../node_modules/devextreme/ui/html_editor/formats/mention.js","../node_modules/devextreme/ui/html_editor/converters/delta.js","../node_modules/devextreme/ui/html_editor/matchers/wordLists.js","../node_modules/devextreme/ui/html_editor/ui/formDialog.js"],"names":["exports","default","_renderer","_interopRequireDefault","require","_data","_extend","_iterator","_devices","_icon","_ui","_uiCollection_widget","_bindable_template","_type","_common","obj","__esModule","_default","inherit","_getDefaultOptions","extend","this","callBase","keyExpr","displayExpr","selectedExpr","disabledExpr","itemsExpr","hoverStateEnabled","parentIdExpr","expandedExpr","_defaultOptionsRules","concat","device","real","deviceType","isSimulator","options","focusStateEnabled","_init","_initAccessors","_initDataAdapter","_initDynamicTemplates","_initDataSource","_dataSource","paginate","accessors","_createDataAdapterAccessors","_dataAdapter","dataAccessors","getters","setters","items","option","_getDataAdapterOptions","noop","that","_templateManager","addDefaultTemplates","item","BindableTemplate","$container","itemData","html","append","_getIconContainer","_getTextContainer","_getPopoutContainer","_addContentClasses","parent","bind","text","_displayGetter","_itemsGetter","icon","getImageContainer","each","_getAccessors","_","accessor","_compileAccessor","_compileDisplayGetter","_getChildNodes","node","arr","internalFields","childrenKeys","key","childNode","getNodeByKey","push","_hasChildren","length","optionName","getter","setter","optionExpr","isFunction","value","compileGetter","compileSetter","getterName","setterName","newAccessor","display","_initMarkup","_addWidgetClass","_focusTarget","addClass","_widgetClass","_renderItemFrame","index","$itemFrame","apply","arguments","toggleClass","_disabledGetter","_optionChanged","args","name","repaint","module","_events_engine","_click","_uiGrid_core","_message","_index","defaultOptions","sorting","mode","ascendingText","format","descendingText","clearText","showSortIndexes","extenders","views","columnHeadersView","_createRow","row","_this","$row","rowType","on","addNamespace","createAction","e","_processHeaderAction","event","currentTarget","get","keyName","$cellElementFromEvent","rowIndex","columnIndex","slice","call","getCellElements","some","$cellElement","column","_columnsController","getVisibleColumns","editingController","getController","editingMode","isEditing","_isSortableElement","target","isDefined","groupIndex","command","shiftKey","ctrlKey","setTimeout","changeSortOrder","_renderCellContent","$cell","_applyColumnState","rootElement","showColumnLines","_columnOptionChanged","changeTypes","_updateIndicators","optionChanged","_invalidate","handled","headerPanel","_createGroupPanelItem","$rootElement","groupColumn","$item","_processGroupItemAction","alignment","allowSorting","sortOrder","groupColumnIndex","_this2","ariaSortState","$sortIndicator","sortingMode","$indicatorsContainer","_getIndicatorContainer","find","remove","children","isSortingAllowed","columnOption","sortIndex","appendTo","addWidgetPrefix","setAria","_getIndicatorClassName","_renderIndicator","container","$indicator","indicator","rtlEnabled","columnAlignment","prepend","_updateIndicator","indicatorName","_getIndicatorElements","returnAll","$indicatorElements","not","_window","_style","_position","_string","_uiGrid_core2","_remove_event","_browser","getMaxHorizontalScrollOffset","scrollable","scrollWidth","clientWidth","scrolling","useNative","loadPanel","enabled","width","height","showIndicator","indicatorSrc","showPane","rowTemplate","columnAutoWidth","noDataText","wordWrapEnabled","showRowLines","rowAlternationEnabled","activeStateEnabled","twoWayBindingEnabled","rowsView","ColumnsView","defaultCellTemplate","isDataTextEmpty","isEmpty","setEmptyText","encodeHtml","textContent","innerHTML","_getDefaultTemplate","_getDefaultGroupTemplate","summaryTexts","data","caption","summaryItems","getGroupRowSummaryText","groupContinuedMessage","groupContinuesMessage","_update","_getCellTemplate","showWhenGrouped","cellTemplate","allowRenderToDetachedContainer","render","groupCellTemplate","isGroup","isDataRow","visible","hide","isRowExpanded","isExpanded","toString","_rowPrepared","rowOptions","_isAltRow","watch","_setAriaRowIndex","component","isPagerMode","pageIndex","pageSize","_dataController","getRowIndexOffset","_afterRowPrepared","arg","dataController","getVisibleRows","isNewRow","dispose","generateDataValues","columns","repaintRows","deep","skipImmediate","rowElement","_renderScrollable","force","$element","element","_loadPanel","_renderLoadPanel","isLocalStore","getScrollable","isLoaded","getColumns","allColumnsHasWidth","i","minWidth","_hasHeight","_isColumnFixing","_renderScrollableCore","_handleScroll","_isScrollByEvent","_scrollTop","scrollOffset","top","_scrollLeft","left","_scrollRight","scrollChanged","fire","dxScrollableOptions","_createScrollableOptions","scrollHandler","onScroll","onStop","_scrollable","_createComponent","_scrollableContainer","_$container","renderLoadPanel","_renderContent","contentElement","tableElement","empty","_findContentElement","_updateContent","newTableElement","change","getTableElement","changeType","executors","highlightChanges","rowInsertedClass","rowIndices","$newRowElement","_getRowElements","eq","$rowsElement","$rowElement","columnIndices","is","toggle","_updateCells","replaceWith","insertBefore","insertAfter","last","prependTo","isLiveUpdate","setTableElement","_createEmptyRow","className","isFixed","getFixedColumns","_createCell","isNumeric","css","_appendEmptyRow","$table","$emptyRow","location","$tBodies","_getBodies","isTableContainer","first","$colgroup","_renderFreeSpaceRow","$tableElement","$freeSpaceRowElement","_wrapRowIfNeed","_checkRowKeys","rows","_getRows","store","fireError","_needUpdateRowHeight","itemsCount","_rowHeight","_getRowsHeight","toArray","reduce","sum","getBoundingRect","_updateRowHeight","rowsHeight","$content","$rows","_getFreeSpaceRowElements","tableElements","getTableElements","_getNoDataText","_rowClick","executeAction","evaluate","expr","_rowDblClick","_getColumnsCountBeforeGroups","type","_getGroupCellOptions","columnsCountBeforeGroups","colspan","_renderCells","_renderGroupedCells","values","expandColumn","groupCellOptions","allowCollapsing","scrollingMode","cssClass","_renderCell","groupColumnAlignment","getDefaultAlignment","_renderRows","updateFreeSpaceRowHeight","_renderRow","renderTemplate","_renderTable","resizeCompleted","add","resizeCompletedHandler","scrollableInstance","closest","getWindow","document","_visibilityChanged","_createTable","_renderCore","_lastColumnWidths","_getCellOptions","summaryCells","displayValue","getDisplayValue","parameters","oldValue","formatValue","resized","resizedCallbacks","groupingTextsOptions","isContinuationOnNextPage","isContinuation","_setRowsOpacityCore","visibleColumns","columnsController","columnID","isBand","hasClass","isParentBandColumn","opacity","_getDevicePixelRatio","devicePixelRatio","renderNoDataText","getCellOptions","columnIdentifier","cellOptions","isString","calculateCellValue","getRow","_this3","itemCount","freeSpaceRowElements","totalCount","isFreeSpaceRowVisible","deferUpdate","scrollbarWidth","getScrollbarWidth","elementHeightWithoutScrollbar","showFreeSpaceRow","outerHeight","resultHeight","Math","ceil","parseFloat","_getHeightCorrection","deferRender","show","_updateLastRowBorder","freeSpaceRowCount","pageCount","setHeight","isZoomedWebkit","webkit","isChromeLatest","chrome","version","hasExtraBorderTop","mozilla","optionNames","grouping","visibleWidth","_fireColumnResizedCallbacks","init","_editorFactoryController","loadingChanged","isLoading","messageText","setLoading","dataSourceChanged","_handleDataChanged","publicMethods","contentWidth","isHorizontal","scrollableContainer","clientHeight","offsetHeight","getScrollableBottomPadding","offsetWidth","lastColumnWidths","columnWidths","removeClass","_updateScrollable","dxScrollable","getInstance","update","_updateHorizontalScrollPosition","scrollLeft","maxHorizontalScrollOffset","scrollTo","x","_resizeCore","_height","hasHeight","loadPanelOptions","animation","hasWindow","visibilityOptions","message","clearTimeout","_hideLoadingTimeoutID","setRowsOpacity","_getCellElementsCore","$cells","groupCellIndex","filter","getTopVisibleItemIndex","isFloor","itemIndex","prevOffsetTop","offsetTop","scrollPosition","$contentElement","contentElementOffsetTop","offset","rowElements","round","getTopVisibleRowData","_scrollToElement","scrollToElement","_tableElement","fullName","setScrollerSpacing","_deferred","processLoadState","selectionController","exportController","columnsChanged","updateState","getUserState","selectionChanged","selectedRowKeys","selectionFilter","_initialPageSize","_initialFilterValue","changed","state","pagerView","getView","allowedPageSizes","getPageSizes","filterPanel","filterEnabled","filterValue","focusedRowKey","getDataState","selectionOnlyChanged","exportSelectionOnly","selectionOnly","stateStoring","storageKey","customLoad","customSave","savingTimeout","controllers","StateStoringController","stateLoaded","getDataSource","_fireContentReadyAction","isStateLoading","_state","result","applyState","isEnabled","oldState","newState","oldStateHash","getKeyHash","newStateHash","equalByValue","save","searchText","isVirtualScrollingMode","showPageSizeSelector","beginUpdate","setUserState","endUpdate","filterSyncController","hasFilterState","getFilterValueFromColumns","getFilterValue","reset","stateStoringController","callbackNames","_refreshDataSource","_restoreStateTimeoutID","deferred","Deferred","load","always","done","resolve","fail","error","_handleLoadError","reject","promise","selection","_fireSelectionChanged","isDeferredSelection","_storage","DATE_REGEX","parseDates","isPlainObject","Array","isArray","date","exec","Date","UTC","ViewController","getStorage","storage","sessionStorage","localStorage","protocol","msie","Error","getUniqueStorageKey","_loadState","JSON","parse","getItem","log","_saveState","setItem","stringify","_isLoaded","_isLoading","_windowUnloadHandler","_savingTimeoutID","loadResult","fromPromise","off","_uiData_grid","_support","_hold","_selection","SHOW_CHECKBOXES_MODE","processLongTap","dxEvent","getRowIndex","isSelectionWithCheckboxes","stopSelectionWithCheckboxes","startSelectionWithCheckboxes","changeItemSelection","control","showCheckBoxesMode","allowSelectAll","selectAllMode","maxFilterLengthInRequest","Controller","selectionCellTemplate","isRowSelected","renderSelectCheckBoxContainer","selectionHeaderTemplate","_renderSelectAllCheckBox","_attachSelectAllCheckBoxClickEvent","_selectionMode","_isSelectionWithCheckboxes","_createSelection","_updateSelectColumn","excludeValidators","_getSelectionConfig","selectionOptions","selectedKeys","ignoreDisabledItems","keyOf","dataFields","dataSource","select","plainItems","isItemSelected","selected","isSelectableItem","getItemData","oldData","getCombinedFilter","onSelectionChanged","_updateSelectedItems","isSelectColumnVisible","addCommandColumn","visibleIndex","dataType","headerCellTemplate","argument","_updateCheckboxesState","isDeferredMode","selectedItemKeys","removedItemKeys","keyIndex","isComplexKey","isSeveralRowsSelected","selectionChangedOptions","changedItemIndexes","getChangedItemIndexes","updateItems","itemIndexes","addedItemKeys","_selectedItemsInternalChange","selectedRowsData","selectedItems","currentSelectedRowKeys","currentDeselectedRowKeys","isDataItem","isSelected","oldSelectionMode","selectionMode","selectRows","updateColumns","_isOnePageSelectAll","isSelectAll","getSelectAllState","selectAll","deselectAll","clearSelection","refresh","preserve","isDeselect","getSelectedRowKeys","getSelectedItemKeys","keys","deselectRows","selectRowsByIndexes","indexes","prototype","getSelectedRowsData","getSelectedItems","getRowIndexDelta","focusedItemIndex","_focusedItemIndex","_loadDataSource","_processDataItem","hasSelectColumn","dataItem","d","_repaintChangesOnly","_applyChange","forEach","currentItem","_items","_endUpdateCore","changes","_changes","isUpdateSelection","every","map","a","b","removedKeys","contextMenu","_contextMenuPrepared","originalEvent","_updateSelectAllValue","$editor","selectAllValue","hasSelection","isVisible","dxCheckBox","isEmptyData","groupElement","createEditor","parentType","editorOptions","tabIndex","setValue","preventDefault","trigger","_attachCheckBoxClickEvent","_renderSelectCheckBox","lookup","_e$event","shift","_updateCheckboxesClass","touch","stopPropagation","isSelectionDisabled","isClickableElement","isCommandKeyPressed","$target","isCheckBoxesHidden","_array_utils","_selectors","_button","_pointer","_validation_engine","_validator","_overlay","_load_indicator","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","iter","Symbol","iterator","from","_iterableToArray","o","minLen","n","Object","constructor","test","_unsupportedIterableToArray","TypeError","_nonIterableSpread","len","arr2","FORM_BASED_MODES","VALIDATION_STATUS","validationResultIsValid","cellValueShouldBeValidated","editing","texts","validationCancelChanges","validating","_editingController","_validationState","_rowIsValidated","validationData","_getValidationData","validated","create","isValid","_getBrokenRules","validationResults","brokenRules","brokenRule","_rowValidating","getChangeByKey","newData","_getOldData","errorText","getHiddenValidatorsErrorText","when","brokenRulesMessages","isGroupExpandColumn","isVisibleColumn","validator","join","validate","isFull","completeList","editMode","getEditMode","_isValidationInProgress","addDeferred","getChanges","_ref","validationResult","validateGroup","_currentCellValidator","_findGroup","_validationResult","getGroupConfig","validators","resetRowValidationResults","complete","isRowDataModified","isEmptyObject","updateValidationState","indexOf","setDisableApplyValidationResults","setValidator","renderCellPendingIndicator","$indicatorContainer","disposeCellPendingIndicator","validationStatusChanged","validationGroup","updateCellValidationResult","rowKey","validatorInitialized","validatorDisposing","getCellValidationResult","status","cancelCellValidationResult","applyValidationResult","rule","requestIsDisabled","disabledPendingId","id","_disableApplyValidationResults","$focus","focused","down","editor","editCellTemplate","getEditorInstance","_syncInternalEditingData","_parameters$row","oldDataFromState","_addInternalData","createValidator","showEditorAlways","validationRules","needCreateValidator","getIndexByKey","_parameters$row$oldDa","_parameters$row2","isEditRow","isCellOrBatchEditingAllowed","isCellOrBatchEditMode","allowUpdating","getValue","useDefaultValidator","adapter","applyValidationResults","dataGetter","createObjectWithChanges","onInitialized","onDisposing","validationRequestsCallbacks","flag","getDisableApplyValidationResults","isCurrentValidatorProcessing","_ref2","validateCell","cellParams","stateRestored","_ref3","_ref4","_validationData$valid","removeCellValidationResult","_ref5","_ref6","isInvalidCell","_ref7","getCellValidator","_ref8","groupConfig","v","setCellValidationStatus","validationStatus","_addChange","validatingController","_handleChangesChange","_updateRowAndPageIndices","_this4","startInsertIndex","_ref9","_pageIndex","getEditFormOptions","detailOptions","editFormOptions","_updateEditRowCore","skipCurrentRow","isCustomSetCellValue","_editForm","_needInsertItem","_ref10","_prepareEditCell","params","isNotCanceled","processItems","addInValidItem","isInsert","getIndexByChange","splice","processDataItem","isInserted","editIndex","_createInvisibleColumnValidators","_this5","invisibleColumns","getInvisibleColumns","groupColumns","getGroupColumns","invisibleColumnValidators","getRowIndexByKey","isCellVisible","_beforeSaveEditData","_this6","disposeValidators","executeOperation","isFullValid","_focusEditingCell","_resetEditRowKey","_resetEditColumnName","_beforeEditCell","_rowsView","_getCellElement","_afterSaveEditData","cancel","$firstErrorRow","_this7","isCellEditMode","$errorRow","_showErrorRow","_needUpdateRow","editRowIndex","getEditRowIndex","shouldResetValidationState","col","_col$validationRules","validationState","resetRowAndPageIndices","_this8","_beforeCancelEditData","$popupContent","errorHandling","getPopupContent","renderErrorRow","updateFieldValue","_this9","currentValidator","refocus","highlightDataCell","isEditableCell","cellModified","isCellModified","isValidated","needValidation","setCellValue","isCellInvalid","editorFactory","_showRevertButton","_this10","$tooltipElement","$overlayContainer","tooltipOptions","shading","propagateOutsideClick","closeOnOutsideClick","closeOnTargetScroll","contentTemplate","$buttonElement","buttonOptions","hint","onClick","cancelEditData","position","my","at","collision","boundaryOffset","boundary","onPositioned","_positionedHandler","_hideFixedGroupCell","overlayOptions","$nextFixedRowElement","$groupCellElement","isFixedColumns","isFormEditMode","nextRowOptions","next","getRowElement","style","visibility","isOverlayVisible","__skipPositionProcessing","isRevertButton","needRepaint","normalizedPosition","_normalizeValidationMessagePositionAndMaxWidth","_showValidationMessage","messages","revertTooltip","_this11","editorPopup","myPosition","atPosition","errorMessageText","invalidMessageClass","$overlayElement","y","_shiftValidationMessageIfNeed","fixedColumns","visibleTableWidth","$cellElements","_getWidths","w1","w2","getWidthOfVisibleCells","validationMessageWidth","outerWidth","needMaxWidth","getCellIndex","boundaryNonFixedColumnsInfo","firstNonFixedColumnIndex","lastNonFixedColumnIndex","startColumnIndex","endColumnIndex","getBoundaryNonFixedColumnsInfo","maxWidth","$revertContent","contentOffset","revertContentOffset","_getTooltipsSelector","loseFocus","skipValidator","updateCellState","hideBorder","_change$data","_getFocusCellSelector","isSaving","errorMessages","focus","_this12","$tooltips","waitForDeferredOperations","getWidgetInstance","_isCellChanged","oldRow","newRow","visibleRowIndex","_oldRow$cells","_cell$column$validati","cell","cells","oldValidationStatus","newValidationStatus","rowIsModified","modifiedValues","cellIsMarkedAsInvalid","cellElement","editingChanged","hasValidationRules","$rowElements","$freeSpaceRowElements","$tooltipContent","_formItemPrepared","_this13","_cellPrepared","_translator","isVirtualMode","isAppendMode","isVirtualRowRendering","rowRenderingMode","_correctCount","count","fromEnd","isItemCountableFunc","isItemCountableByDataSource","isGroupItemCountable","VirtualScrollingDataSourceAdapterExtender","_updateLoading","beginPageIndex","_virtualScrollController","viewportSize","getViewportItemIndex","VirtualScrollController","totalItemsCount","hasKnownLastPage","isCustomLoading","updateLoading","viewportItems","onChanged","changingDuration","_renderTime","_handleLoadingChanged","_isLoadingAll","_startLoadTime","handleDataChanged","_customizeRemoteOperations","operationTypes","reload","skip","delay","isBase","loadOptions","resetPagesCache","_changeRowExpandCore","virtualScrollController","r","delayDeferred","_delayDeferred","storeLoadOptions","_skipCorrection","VirtualScrollingRowsViewExtender","removeEmptyRows","$emptyRows","tBodies","rowCount","_dataController$state","pageChanged","scrollToPage","_scrollToCurrentPageOnResize","resizeHandler","itemSize","getItemSize","itemSizes","getItemSizes","renderDelayedTemplates","_updateContentPosition","startRenderTime","virtualItemsCount","_contentHeight","_removeRowsElements","contentTable","removeCount","errorHandlingController","removeErrorRow","_restoreErrorRow","hasChanges","_updateBottomLoading","_addVirtualRow","$virtualRow","_getRowHeights","_correctRowHeights","rowHeights","correctedRowHeights","visibleRows","firstCountableItem","isRender","rowHeight","viewportItemSize","_updateContentPositionCore","setContentSize","getContentOffset","bottom","$tables","$virtualRows","_isFixedTableRendering","contentHeight","$contentTable","virtualTable","_contentTableHeight","getVirtualContentSize","move","_isTableLinesDisplaysCorrect","_isColumnElementsEqual","_renderVirtualTableContent","table","$columns","$virtualColumns","_createColGroup","prop","freeSpaceCellsHtml","columnLinesClass","createFreeSpaceRowHtml","classes","_getCellClasses","classString","isExpandColumn","_findBottomLoadPanel","$bottomLoadPanel","virtualMode","appendMode","showBottomLoading","bottomLoadPanelElement","setViewportPosition","viewportHeight","_windowScroll","subscribeToExternalScrollers","scrollPos","loadIfNeed","setColumnWidths","widths","_scrollTimeoutID","timeout","updateTimeout","minTimeout","renderingThreshold","removeInvisiblePages","rowPageSize","preloadEnabled","loadTwoPagesOnStart","dataSourceAdapter","members","baseResult","initVirtualRows","getRowPageSize","rowsScrollController","_rowsScrollController","getItemIndexByPosition","rowIndexOffset","floor","isSortingOperation","virtualRowsRendering","_visibleItems","_rowPageIndex","isItemCountable","_fireChanged","correctCount","isNextAfterLast","countableOnly","begin","take","positionChanged","_that$_dataSource","setViewportItemIndex","_updateItemsCore","delta","visibleItems","isRefresh","newItem","unshift","allItems","byLoadedRows","sizes","resetCurrentTotalCount","proxyMethod","resizing","resize","_resizeTimeout","diff","_lastTime","getContentHeightLimit","getPixelRatio","_class","_callbacks","_isVirtual","needTwoPagesLoading","_viewportItemIndex","window","browser","scrollChangedHandler","$targetElement","$scrollElement","scrollableArray","scrollToArray","disposeArray","getElementOffset","$scrollableElement","scrollableOffset","scrollTop","widgetScrollStrategy","eventName","handler","subscribeToScrollEvents","isDocument","nodeName","eventsStrategy","createWindowScrollHandler","pos","topOffset","scrollMethod","getPreloadPageCount","previous","realViewportSize","_viewportSize","_viewportItemSize","_itemSizes","getViewportPageCount","getBeginPageIndex","_cache","getEndPageIndex","fireChanged","_isChangedFiring","processDelayChanged","_isDelayChanged","processChanged","isDelayChanged","removeCacheItem","isObject","isPrepend","removeItemCount","itemsLength","_lastPageIndex","ctor","isVirtual","_sizeRatio","_loadingPageIndexes","beginItemsCount","end","max","scrollingTimeout","min","_setViewportPositionCore","getViewportPosition","defaultItemSize","itemOffset","itemOffsetsWithSize","itemOffsetWithSize","parseInt","itemOffsetDiff","size","_contentSize","virtualContentSize","contentHeightLimit","getItemOffset","isEnd","currentItemIndex","newPageIndex","lastPageSize","maxPageIndex","defaultPageIndex","endPageIndex","pageIndexForLoad","getPageIndexForLoad","loadCore","lastCacheLength","cacheItem","isDelayed","pop","subscribeToWindowScrollEvents","_dom_adapter","_query","allowSearch","allowFiltering","parseValue","searchPanel","placeholder","highlightSearchText","highlightCaseSensitive","searchVisibleColumnsOnly","_calculateAdditionalFilter","searchFilter","filters","onQueryDone","valueGetter","valueExpr","_i","createFilterExpression","calculateFilterExpression","dataField","enumerate","combineFilters","calculateSearchFilter","searchByText","_applyFilter","getSearchPanelOptions","_getToolbarItems","_prepareSearchItem","searchPanelOptions","toolbarItem","template","$search","updateValueTimeout","inputAttr","NAME","locateInMenu","getSearchTextEditor","$searchPanel","dxTextBox","_searchParams","_getFormattedSearchText","formatOptions","getFormatOptionsByColumn","_getStringNormalizer","isCaseSensitive","str","toLowerCase","_findHighlightingTextNodes","_$items","$items","$parent","stringNormalizer","normalizedSearchText","resultTextNodes","getVisibleIndex","$contents","contents","nodeType","nodeValue","_highlightSearchTextCore","$textNode","$searchTextSpan","firstContentElement","substr","after","createTextNode","_highlightSearchText","isEquals","textNode","_highlightTimer","_updateCell","isOnForm","columnRenderingMode","columnPageSize","columnRenderingThreshold","getWidths","_beginPageIndex","_endPageIndex","_virtualVisibleColumns","resetColumnsCache","currentPosition","getColumnPageSize","getTotalWidth","_lastWidth","_fireColumnsChanged","all","setScrollPosition","_changedTimeout","_setScrollPositionCore","needColumnsChanged","transparentColumnIndex","c","visibleColumnsHash","getRowCount","startIndex","endIndex","beginFixedColumnCount","beginFixedColumns","beginColumns","beginWidth","endFixedColumnCount","endFixedColumns","endColumns","endWidth","columnsInfo","createColumnsInfo","getColumnIndexOffset","leftFixedColumnCount","_updateScrollLeftPosition","info","newInfo","foreachColumnInfo","columnInfo","cellColspan","callback","offsets","columnCount","lastProcessedIndexes","colIndex","processedColumnCount","rowspan","_sortable","rowDragging","showDragIcons","dropFeedbackMode","allowReordering","allowDropInsideItem","_updateHandleColumn","_allowReordering","group","isHandleColumnVisible","_getHandleTemplate","isFixedTableRendering","sortableName","sortableFixedName","currentSortableName","anotherSortableName","togglePointerEventsStyle","_this$sortableFixedNa","dragTemplate","_getDraggableRowTemplate","handle","onDragStart","_rowDragging$onDragSt","fromIndex","onDragEnter","onDragLeave","onDragEnd","_rowDragging$onDragEn","onAdd","_rowDragging$onAdd","onOptionChanged","_sortableFixed","sortable","_getDraggableGridOptions","gridOptions","parentId","showBorders","showColumnHeaders","showScrollbar","pager","loadingTimeout","columnFixing","fixed","fixedPosition","onRowPrepared","clone","$dataGridContainer","_devextremeQuill","_popup","_list","_defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","_setPrototypeOf","p","setPrototypeOf","__proto__","ListPopupModule","BaseModule","import","_BaseModule","subClass","superClass","Constructor","protoProps","staticProps","_proto","quill","renderPopup","$wrapper","renderList","$list","editorInstance","popupConfig","_getPopupConfig","contentElem","listConfig","_getListConfig","deferRendering","onShown","onHidden","unselectAll","showTitle","duration","to","fullScreen","maxHeight","selectionChangedHandler","pageLoadMode","insertEmbedContent","selectionChangedEvent","showPopup","savePosition","caretPosition","getPosition","windowHeight","ConverterController","_converters","addConverter","converter","getConverter","_filtering","_load_panel","_utils","_format_helper","DATE_INTERVAL_SELECTORS","year","getFullYear","month","getMonth","day","getDate","quarter","hour","getHours","minute","getMinutes","second","getSeconds","getIntervalSelector","isDateType","nameIntervalSelector","groupInterval","Number","normalizeSortingInfo","sort","valueText","formatObject","getDisplayFormat","customizeText","getSummaryText","summaryItem","displayFormat","columnCaption","summaryType","valueFormat","editorData","dxComponents","widgetName","noDataClass","noDataElement","$window","of","operation","resultFilter","checkChanges","changeNames","changesWithChangeNamesCount","equalFilterParameters","filter1","filter2","toComparable","instance","methodName","defaultResult","trueText","falseText","displayValueMap","calculateDisplayValue","calculateGroupValue","getFormatByDataType","getHeaderFilterGroupParameters","remoteGrouping","getGroupInterval","interval","selector","sortingMethod","compare","equalSortParameters","sortParameters1","sortParameters2","ignoreIsExpanded","selector1","selector2","originalCallback","desc","Boolean","getPointsByColumns","pointCreated","isVertical","cellsLength","notCreatePoint","point","prevItemOffset","getExpandCellTemplate","localize","getSelectionRange","focusedElement","selectionStart","selectionEnd","setSelectionRange","selectionRange","focusAndSelectElement","isFocused","isSelectTextOnEditingStart","_loadItemDeferred","getLastResizableColumnIndex","resultWidths","lastColumnIndex","hasResizableColumns","allowResizing","isElementInCurrentGrid","controller","getWidgetContainerClass","_ui2","_array","_store_helper","_ui3","_defaultOptions","dataConverter","setDataAccessors","_selectedNodesKeys","_expandedNodesKeys","_dataStructure","_createInternalDataStructure","getTreeNodes","setOption","_updateSelection","multipleSelection","recursiveSelection","recursiveExpansion","rootValue","searchValue","searchMode","onNodeChanged","_initialDataStructure","createPlainStructure","search","_updateExpansion","_setChildrenSelection","_setParentSelection","_updateNodesKeysArray","_updateOneBranch","_setParentExpansion","property","array","_getDataBySelectionMode","_isNodeVisible","toggleSelection","getData","getFullData","_getByKey","getByKey","_toggleChildrenSelection","getParentNode","parentKey","_iterateParents","newParentState","_calculateSelectedState","_setFieldState","expanded","_iterateChildren","recursive","processedKeys","nodeKey","child","selectedItemsCount","invisibleItemsCount","isChildInvisible","childState","field","publicNode","_markChildren","_removeNode","counter","_addNode","_convertItemToNode","_updateFields","updateChildrenKeys","getSelectedNodesKeys","getExpandedNodesKeys","getNodeByItem","getNodesByItems","nodes","convertToPublicNodes","getRootNodes","getItemsCount","getVisibleItemsCount","getPublicNode","getChildrenNodes","addItem","removeItem","selectRecursive","isSingleModeUnselect","_isSingleModeUnselect","selectionState","toggleNodeDisabledState","toggleSelectAll","lastSelectedKey","dataStructure","selectionRequired","isAllSelected","toggleExpansion","isFiltered","_filterDataStructure","_createCriteria","searchExpr","getOperationBySearchMode","criteria","matches","lookForParents","inArray","queryByOptions","_indexByKey","setChildrenKeys","_itemsCount","_visibleItemsCount","_convertItemsToNodes","_getParentId","_checkForDuplicateId","_itemHasChildren","_dataAccessors","_dataType","_getUniqueKey","keyGetter","itemKey","isPrimitive","disabled","defaultValue","_rootValue","_makeObjectFromPrimitive","_convertToPublicNode","publicNodes","updateIndexByKey","removeChildrenKeys","_element","_component_registrator","_empty_template","_editor","_index2","_uiEventsEmitterGesture","_quill_registrator","_converterController","_wordLists","_formDialog","HtmlEditor","valueType","toolbar","variables","mediaResizing","mentions","customizeModules","formDialogOptions","_cleanCallback","_contentInitializedCallback","_getAnonymousTemplateName","_initTemplates","EmptyTemplate","_getContent","_focusInHandler","relatedTarget","_shouldSkipFocusEvent","_toggleFocusClass","_focusOutHandler","_$htmlContainer","wrapInner","_getTemplate","_$templateResult","getPublicElement","noModel","transclude","_renderSubmitElement","_updateContainerMarkup","_$submitElement","attr","_setSubmitValue","_getSubmitElement","val","markup","_isMarkdownValue","_prepareMarkdownConverter","_markdownConverter","toHtml","MarkdownConverter","_render","_prepareConverters","_prepareQuillRegistrator","_quillRegistrator","_getRegistrator","_deltaConverter","DeltaConverter","_renderContentImpl","_contentRenderedDeferred","renderContentPromise","_renderHtmlEditor","_renderFormDialog","_addKeyPressHandler","_attachFocusEvents","keyDownEvent","_keyDownHandler","_saveValueChangeEvent","modulesConfig","_getModulesConfig","_quillInstance","readOnly","modules","theme","setQuillInstance","_textChangeHandlerWithContext","_textChangeHandler","_renderScrollHandler","_hasTranscludedContent","_updateContentTask","executeAsync","_applyTranscludedContent","_finalizeContentRendering","$scrollContainer","initScrollData","prepareScrollData","valueOption","newDelta","clipboard","convert","ops","setContents","getQuill","wordListMatcher","_getModuleConfigByOption","uploader","onDrop","Event","imageBlot","keyboard","onKeydown","onPaste","onCut","matchers","_getCustomModules","userOptionName","optionValue","config","_getBaseModuleConfig","getRegisteredModuleNames","modulePath","oldDelta","source","htmlMarkup","convertedValue","_updateValueByType","currentValue","_isNullValueConverted","_isEditorUpdating","clearHistory","ensureDefined","toMarkdown","_resetEnabledState","enable","userOptions","_getQuillContainer","updatedValue","_updateHtmlContent","newValue","previousValue","getModule","_repaintToolbar","_clean","_abortUpdateContentTask","abort","_applyQuillMethod","_applyQuillHistoryMethod","history","addCleanCallback","addContentInitializedCallback","register","components","registerModules","moduleName","getQuillInstance","getSelection","setSelection","formatName","formatText","formatLine","getFormat","removeFormat","undo","redo","getLength","insertText","formats","insertEmbed","showFormDialog","formConfig","formDialogOption","popupOption","_quill_importer","_base","_image","_link","_font","_size","_align","_toolbar","_dropImage","_variables","_resizing","_mentions","QuillRegistrator","initialized","DirectionStyle","_customModules","_initialized","isModule","RegExp","isRegisteredModule","imports","BaseTheme","_Theme","root","classList","ExtImage","_Image","SRC","src","setAttribute","alt","domNode","imageSrc","getAttribute","floatValue","float","blotName","ExtLink","_Link","HREF","href","innerText","removeAttribute","_ExtLink$formats","link","FontStyle","whitelist","SizeStyle","AlignStyle","_widget_collector","_inflector","ToolbarModule","TABLE_OPERATIONS","HEADING_TEXT","NORMAL_TEXT","_editorInstance","_toolbarWidgets","_formatHandlers","_getFormatHandlers","_addCallbacks","_renderToolbar","isSelectionChanged","_updateToolbar","_applyFormat","formatArgs","_this$quill","clean","updateHistoryWidgets","updateFormatWidgets","updateTableWidgets","_getDefaultClickHandler","isBoolean","_updateFormatWidget","isApplied","widget","getByName","_markActiveFormatWidget","_resetFormatWidget","hasOwnProperty","_toggleClearFormatting","clear","range","_prepareLinkHandler","image","_prepareImageHandler","color","_prepareColorClickHandler","background","orderedList","_prepareShortcutHandler","bulletList","alignLeft","alignCenter","alignRight","alignJustify","codeBlock","increaseIndent","decreaseIndent","superscript","subscript","insertTable","_prepareInsertTableHandler","insertRowAbove","_getTableOperationHandler","insertRowBelow","insertColumnLeft","insertColumnRight","deleteColumn","deleteRow","deleteTable","shortcutValue","hasEmbedContent","_hasEmbedContent","formData","getText","_getLinkFormItems","deleteText","trim","label","editorType","isUpdateDialog","defaultIndex","_defaultPasteIndex","formatIndex","_embedFormatIndex","_imageFormItems","_insertTableFormItems","operationName","_len","rest","_key","_getContainer","_$toolbar","_$toolbarContainer","toolbarInstance","toolbarConfig","isInteractionDisabled","isMultilineMode","_this$options$multili","multiline","_prepareToolbarItems","resultItems","_handleObjectItem","buttonItemConfig","_prepareButtonItemConfig","_getToolbarItem","formatValues","_isAcceptableItem","selectItemConfig","_prepareSelectItemConfig","defaultButtonItemConfig","acceptableWidgetName","iconName","buttonText","titleize","stylingMode","showText","onValueChanged","_isReset","_setValueSilent","_forceItemFlexSizeCorrectionInIE","baseItem","multilineItem","_getDefaultConfig","_getDefaultItemsConfig","header","separator","menuItemTemplate","historyModule","_historyModule$stack","stack","undoOps","redoOps","_updateManipulationWidget","_this$quill$getFormat","_this14","isTableOperationsEnabled","isInsertTable","isOperationEnabled","isResetRequired","hasFormats","_resetFormatWidgets","_getFormatWidgetName","formatWidget","_isColorFormat","_updateColorWidget","clearWidget","_this15","addClickHandler","_selection$index","menuContainer","WidgetCollector","_collection","_assertThisInitialized","self","ReferenceError","DropImageModule","_dragOverHandler","_dropHandler","_pasteHandler","_dataTransfer$files","dataTransfer","hasFiles","files","_getImage","_addImage","_clipboardData$items","clipboardData","hasDataItems","imageData","_isBrowserSupportImagePaste","_isImage","file","match","reader","FileReader","onload","readableFile","getAsFile","Blob","readAsDataURL","pasteIndex","_variable","VariableModule","_PopupModule","addBinding","altKey","$ofElement","baseConfig","escapeChar","_resetPopupPosition","h","mentionBounds","getBounds","rootRect","selectedItem","variableData","Variable","_Embed","startEscapeChar","endEscapeChar","dataset","varStartEscChar","varEndEscChar","varValue","tagName","_resizable","KEYDOWN_EVENT","SCROLL_EVENT","MOUSEDOWN_EVENT","ResizingModule","allowedTargets","_hideFrameWithContext","hideFrame","_framePositionChangedHandler","_prepareFramePositionChangedHandler","_attachEvents","_createResizeFrame","_clickHandler","_detachEvents","_isAllowedTarget","_$target","updateFramePosition","showFrame","_adjustSelection","targetElement","toUpperCase","_$resizeFrame","_handleFrameKeyDown","normalizeKeyName","_deleteImage","_getBoundingRect","targetTop","targetLeft","_getBoundingRect2","containerTop","containerLeft","borderWidth","_getBorderWidth","padding","current","onResize","correction","_Quill$find","deleteAt","_option","_mention","MentionModule","KEYS","ARROW_UP","ARROW_DOWN","ARROW_LEFT","ARROW_RIGHT","ENTER","ESCAPE","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","NAVIGATION_KEYS","ALLOWED_PREFIX_CHARS","marker","preparedTemplate","addTemplate","_attachKeyboardHandlers","onTextChange","itemTemplate","searchTimeout","minSearchLength","_moveToItem","_selectItemHandler","enterBindings","bindings","_escapeKeyHandler","_ignoreKeyHandler","direction","_isMentionActive","defaultItemPosition","$nextItem","_activeListItems","scrollToItem","_fitIntoRange","start","selectItem","compileGetters","_valueGetter","_idGetter","onContentReady","_hasSearch","_focusFirstElement","markerLength","_activeMentionConfig","textLength","_searchValue","Delta","_getCharByIndex","retain","delete","insert","mention","updateContents","_getLastInsertOperation","lastOperation","isLastOperationDelete","penultOperation","_isPopupVisible","_processSearchValue","_filterList","lastInsertOperation","checkMentionRequest","caret","_isMarkerPartOfText","_updateList","_popupPosition","getContents","_isMinSearchLengthExceeded","_searchTimer","_search","_resetFilter","$firstItem","removeTemplate","_this$_popup","_this$quill$getBounds","mentionLeft","mentionTop","mentionHeight","_$$offset","leftOffset","pageX","pageY","itemElements","Mention","mentionValue","renderContent","_templates","model","baseContentRender","$marker","set","Map","quillInstance","_isQuillEmpty","getSemanticHTML","_isDeltaEmpty","__","insertOperation","replace","listDecoratorMatches","indent","level","getIndent","substring","operations","newLineOperation","removeNewLineChar","attributes","list","_form","_dom","getActiveElement","FormDialog","_popupUserConfig","_renderPopup","_escKeyHandler","_addEscapeHandler","registerKeyHandler","_isSmallScreen","screenFactor","getCurrentScreenFactor","showCloseButton","$formContainer","_renderForm","onEditorEnterKey","_updateEditorValue","customizeItem","itemType","toolbarItems","getEditor","activeElement","resetActiveElement","formUserConfig"],"mappings":"6GASAA,EAAQC,aAAU,EAClB,IAAIC,EAAYC,EAAuBC,EAAQ,KAC3CC,EAAQD,EAAQ,KAChBE,EAAUF,EAAQ,IAClBG,EAAYH,EAAQ,IACpBI,EAAWL,EAAuBC,EAAQ,KAC1CK,EAAQL,EAAQ,KAChBM,EAAMP,EAAuBC,EAAQ,OACrCO,EAAuBR,EAAuBC,EAAQ,MACtDQ,EAAqBR,EAAQ,KAC7BS,EAAQT,EAAQ,IAChBU,EAAUV,EAAQ,IAEtB,SAASD,EAAuBY,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAsKIE,EArK+BN,EAAqBV,QAAQiB,QAAQ,CACpEC,mBAAoB,WAChB,OAAO,EAAIb,EAAQc,QAAQC,KAAKC,WAAY,CACxCC,QAAS,KACTC,YAAa,OACbC,aAAc,WACdC,aAAc,WACdC,UAAW,QACXC,mBAAmB,EACnBC,aAAc,WACdC,aAAc,cAGtBC,qBAAsB,WAClB,OAAOV,KAAKC,WAAWU,OAAO,CAAC,CAC3BC,OAAQ,WACJ,MAAO,YAAczB,EAASP,QAAQiC,OAAOC,aAAe3B,EAASP,QAAQmC,eAEjFC,QAAS,CACLC,mBAAmB,OAI/BC,MAAO,WACHlB,KAAKC,WACLD,KAAKmB,iBACLnB,KAAKoB,mBACLpB,KAAKqB,yBAETC,gBAAiB,WACbtB,KAAKC,WACLD,KAAKuB,aAAevB,KAAKuB,YAAYC,UAAS,IAElDJ,iBAAkB,WACd,IAAIK,EAAYzB,KAAK0B,8BACrB1B,KAAK2B,aAAe,IAAItC,EAAIT,SAAQ,EAAIK,EAAQc,QAAQ,CACpD6B,cAAe,CACXC,QAASJ,EAAUI,QACnBC,QAASL,EAAUK,SAEvBC,MAAO/B,KAAKgC,OAAO,UACpBhC,KAAKiC,4BAEZA,uBAAwBxC,EAAQyC,KAChCb,sBAAuB,WACnB,IAAIc,EAAOnC,KACXA,KAAKoC,iBAAiBC,oBAAoB,CACtCC,KAAM,IAAI/C,EAAmBgD,iBAAiB,SAASC,EAAYC,GAC/DD,EAAWE,KAAKD,EAASC,MAAMC,OAAO3C,KAAK4C,kBAAkBH,IAAWE,OAAO3C,KAAK6C,kBAAkBJ,IAAWE,OAAO3C,KAAK8C,oBAAoBL,IACjJN,EAAKY,mBAAmBN,EAAUD,EAAWQ,WAC/CC,KAAKjD,MAAO,CAAC,OAAQ,OAAQ,QAAS,QAASA,KAAKgC,OAAO,kCAAmC,CAC5FkB,KAAMlD,KAAKmD,eACXpB,MAAO/B,KAAKoD,kBAIxBR,kBAAmB,SAASH,GACxB,OAAOA,EAASY,MAAO,EAAIjE,EAAMkE,mBAAmBb,EAASY,WAAQ,GAEzER,kBAAmB,SAASJ,GACxB,OAAO,EAAI5D,EAAUD,SAAS,UAAUsE,KAAKT,EAASS,OAE1DJ,oBAAqBrD,EAAQyC,KAC7Ba,mBAAoBtD,EAAQyC,KAC5Bf,eAAgB,WACZ,IAAIgB,EAAOnC,MACX,EAAId,EAAUqE,MAAMvD,KAAKwD,iBAAiB,SAASC,EAAGC,GAClDvB,EAAKwB,iBAAiBD,MAE1B1D,KAAK4D,yBAETJ,cAAe,WACX,MAAO,CAAC,MAAO,WAAY,QAAS,WAAY,WAAY,aAEhEK,eAAgB,SAASC,GACrB,IAAI3B,EAAOnC,KACP+D,EAAM,GAKV,OAJA,EAAI7E,EAAUqE,MAAMO,EAAKE,eAAeC,cAAc,SAASR,EAAGS,GAC9D,IAAIC,EAAYhC,EAAKR,aAAayC,aAAaF,GAC/CH,EAAIM,KAAKF,MAENJ,GAEXO,aAAc,SAASR,GACnB,OAAOA,GAAQA,EAAKE,eAAeC,aAAaM,QAEpDZ,iBAAkB,SAASa,GACvB,IAAIC,EAAS,IAAMD,EAAa,SAC5BE,EAAS,IAAMF,EAAa,SAC5BG,EAAa3E,KAAKgC,OAAOwC,EAAa,QAC1C,OAAKG,GAKG,EAAInF,EAAMoF,YAAYD,IACtB3E,KAAK0E,GAAU,SAAShF,EAAKmF,GACzBnF,EAAIiF,KAAgBE,QAExB7E,KAAKyE,GAAU,SAAS/E,GACpB,OAAOA,EAAIiF,SAKvB3E,KAAKyE,IAAU,EAAIzF,EAAM8F,eAAeH,QACxC3E,KAAK0E,IAAU,EAAI1F,EAAM+F,eAAeJ,MAfpC3E,KAAKyE,GAAUhF,EAAQyC,UACvBlC,KAAK0E,GAAUjF,EAAQyC,QAgB/BR,4BAA6B,WACzB,IAAIS,EAAOnC,KACPyB,EAAY,CACZI,QAAS,GACTC,QAAS,IAYb,OAVA,EAAI5C,EAAUqE,MAAMvD,KAAKwD,iBAAiB,SAASC,EAAGC,GAClD,IAAIsB,EAAa,IAAMtB,EAAW,SAC9BuB,EAAa,IAAMvB,EAAW,SAC9BwB,EAAc,aAAexB,EAAW,YAAcA,EAC1DjC,EAAUI,QAAQqD,GAAe/C,EAAK6C,GACtCvD,EAAUK,QAAQoD,GAAe/C,EAAK8C,MAE1CxD,EAAUI,QAAQsD,QAAWnF,KAAKmD,eAE9BnD,KAAKmD,eAF0C,SAASV,GACxD,OAAOA,EAASS,MAEbzB,GAEX2D,YAAa,WACTpF,KAAKC,WACLD,KAAKqF,mBAETA,gBAAiB,WACbrF,KAAKsF,eAAeC,SAASvF,KAAKwF,iBAEtCA,aAAc/F,EAAQyC,KACtBuD,iBAAkB,SAASC,EAAOjD,GAC9B,IAAIkD,EAAa3F,KAAKC,SAAS2F,MAAM5F,KAAM6F,WAE3C,OADAF,EAAWG,YAzIQ,sBAyI4B9F,KAAK+F,gBAAgBtD,IAC7DkD,GAEXK,eAAgB,SAASC,GACrB,OAAQA,EAAKC,MACT,IAAK,cACL,IAAK,UACDlG,KAAKmB,iBACLnB,KAAKqB,wBACLrB,KAAKmG,UACL,MACJ,IAAK,YACL,IAAK,eACL,IAAK,eACL,IAAK,eACL,IAAK,eACDnG,KAAKmB,iBACLnB,KAAKoB,mBACLpB,KAAKmG,UACL,MACJ,IAAK,QACDnG,KAAKoB,mBACLpB,KAAKC,SAASgG,GACd,MACJ,QACIjG,KAAKC,SAASgG,OAK9BtH,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCC1LzBD,EAAQC,aAAU,EAClB,IAAIC,EAAYC,EAAuBC,EAAQ,KAC3CsH,EAAiBvH,EAAuBC,EAAQ,KAChDuH,EAASvH,EAAQ,KACjBS,EAAQT,EAAQ,IAChBE,EAAUF,EAAQ,IAClBwH,EAAezH,EAAuBC,EAAQ,OAC9CyH,EAAW1H,EAAuBC,EAAQ,KAC1C0H,EAAS1H,EAAQ,IAErB,SAASD,EAAuBY,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAsHIE,EAAW,CACX8G,eAAgB,WACZ,MAAO,CACHC,QAAS,CACLC,KAAM,SACNC,cAAeL,EAAS5H,QAAQkI,OAAO,mCACvCC,eAAgBP,EAAS5H,QAAQkI,OAAO,oCACxCE,UAAWR,EAAS5H,QAAQkI,OAAO,+BACnCG,iBAAiB,KAI7BC,UAAW,CACPC,MAAO,CACHC,mBAnI2B,EAAInI,EAAQc,QAAQ,GAAIwG,EAAa3H,QAAS,CACjFyI,WAAY,SAASC,GACjB,IAAIC,EAAQvH,KACRwH,EAAOxH,KAAKC,SAASqH,GAMzB,MALI,WAAaA,EAAIG,SACjBpB,EAAezH,QAAQ8I,GAAGF,GAAM,EAAIf,EAAOkB,cAAcrB,EAAOJ,KANxC,+BAM8E,KAAMlG,KAAK4H,cAAa,SAASC,GACnIN,EAAMO,qBAAqBD,EAAEE,MAAOP,OAGrCA,GAEXM,qBAAsB,SAASC,EAAOP,GAClC,IAAI,EAAI3I,EAAUD,SAASmJ,EAAMC,eAAehF,SAASiF,IAAI,KAAOT,EAAKS,IAAI,GAA7E,CAGA,IAAI9F,EAAOnC,KACPkI,EAAU,KACVC,GAAwB,EAAItJ,EAAUD,SAASmJ,EAAMC,eACrDI,EAAWD,EAAsBnF,SAAS0C,QAC1C2C,GAAe,EACnB,GAAGC,MAAMC,KAAKpG,EAAKqG,gBAAgBJ,IAAWK,MAAK,SAASC,EAAchD,GACtE,GAAIgD,IAAiBP,EAAsBF,IAAI,GAE3C,OADAI,EAAc3C,GACP,KAGf,IACIiD,EADiBxG,EAAKyG,mBAAmBC,kBAAkBT,GACnCC,GACxBS,EAAoB3G,EAAK4G,cAAc,WACvCC,EAAc7G,EAAKH,OAAO,kBACV8G,GAAqBA,EAAkBG,cAAgB,UAAYD,GAAe,SAAWA,KAC3F7G,EAAK+G,oBAAmB,EAAIrK,EAAUD,SAASmJ,EAAMoB,YAGvER,IAAW,EAAInJ,EAAM4J,WAAWT,EAAOU,aAAgBV,EAAOW,UAC1DvB,EAAMwB,SACNrB,EAAU,QAENH,EAAMyB,UACNtB,EAAU,QAGlBuB,YAAW,WACPtH,EAAKyG,mBAAmBc,gBAAgBf,EAAOjD,MAAOwC,UAIlEyB,mBAAoB,SAASC,EAAO5I,GAChC,IACI2H,EAAS3H,EAAQ2H,OAChBA,EAAOW,SAAW,WAAatI,EAAQyG,SAFjCzH,KAGF6J,kBAAkB,CACnB3D,KAAM,OACN4D,YAAaF,EACbjB,OAAQA,EACRoB,gBAPG/J,KAOmBgC,OAAO,qBAP1BhC,KAUNC,SAAS2J,EAAO5I,IAEzBgJ,qBAAsB,SAASnC,GAC3B,IAAIoC,EAAcpC,EAAEoC,YAChB,IAAMA,EAAY1F,QAAU0F,EAAYtD,QACxC3G,KAAKkK,kBAAkB,QAG3BlK,KAAKC,SAAS4H,IAElBsC,cAAe,SAASlE,GAEpB,OAAQA,EAAKC,MACT,IAAK,UAFElG,KAGEoK,cACLnE,EAAKoE,SAAU,EACf,MACJ,QANOrK,KAOEC,SAASgG,OAwDlBqE,aApDqB,EAAIrL,EAAQc,QAAQ,GAAIwG,EAAa3H,QAAS,CAC3E2L,sBAAuB,SAASC,EAAcC,GAC1C,IAAItI,EAAOnC,KACP0K,EAAQvI,EAAKlC,SAAS2F,MAAMzD,EAAM0D,WActC,OAbAQ,EAAezH,QAAQ8I,GAAGgD,GAAO,EAAIjE,EAAOkB,cAAcrB,EAAOJ,KAAM,yBAA0B/D,EAAKyF,cAAa,WAC/GzF,EAAKwI,wBAAwBF,EAAY/E,WAE7CvD,EAAK0H,kBAAkB,CACnB3D,KAAM,OACN4D,YAAaY,EACb/B,OAAQ,CACJiC,UAAWzI,EAAKH,OAAO,cAAgB,QAAU,OACjD6I,aAAcJ,EAAYI,aAC1BC,UAAW,SAAWL,EAAYK,UAAY,OAAS,OAE3Df,iBAAiB,IAEdW,GAEXC,wBAAyB,SAASI,GAC9B,IAAIC,EAAShL,KACbyJ,YAAW,WACP,OAAOuB,EAAOjC,cAAc,WAAWW,gBAAgBqB,OAG/DZ,cAAe,SAASlE,GAEpB,OAAQA,EAAKC,MACT,IAAK,UAFElG,KAGEoK,cACLnE,EAAKoE,SAAU,EACf,MACJ,QANOrK,KAOEC,SAASgG,UAuB9BtH,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCCzJzBD,EAAQC,aAAU,EAClB,IAGgCc,EAH5BF,EAAQT,EAAQ,IAChBF,GAE4Ba,EAFOX,EAAQ,MAG7BW,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAOIE,EAAW,CACXiK,kBAAmB,SAAS7I,GACxB,IACIiK,EACAC,EACAC,EAHOnL,KAGYgC,OAAO,gBAC1B8H,EAAc9I,EAAQ8I,YACtBnB,EAAS3H,EAAQ2H,OACjByC,EANOpL,KAMqBqL,uBAAuBvB,GACvD,GAAI,SAAW9I,EAAQkF,KAAM,CACzB4D,EAAYwB,KAAK,YAAkBC,UAClCH,EAAqBI,WAAWjH,QAAU6G,EAAqBG,SAChE,IAAIE,EAAmB,SAAWN,GAAexC,EAAOkC,aACxD,KAAK,EAAIrL,EAAM4J,WAAWT,EAAOU,cAAgBoC,IAAoB,EAAIjM,EAAM4J,WAAWT,EAAOmC,YAC7FG,EAAgB,QAAUtC,EAAOmC,UAAY,YAAc,aAC3DI,EAbGlL,KAamBC,SAASe,GAAS8E,YApBrC,aAoB+D,QAAU6C,EAAOmC,WAAWhF,YAnBzF,eAmBqH,SAAW6C,EAAOmC,WAbzI9K,KAc8B+I,iBAd9B/I,KAcsD+I,cAAc,WAAW2C,aAAa,gBAd5F1L,KAe+BgC,OAAO,4BAA8B2G,EAAOgD,WAAa,KACvF,EAAI9M,EAAUD,SAAS,UAAU2G,SApBzB,sBAoByDrC,KAAKyF,EAAOgD,UAAY,GAAGC,SAASV,GACrGA,EAAe3F,SAtBZ,kBAwBHkG,GACAzK,EAAQ8I,YAAYvE,SApBrBvF,KAoBmC6L,gBAvB3B,WA+Bf,OALK,EAAIrM,EAAM4J,WAAWT,EAAOmC,WAvB1B9K,KA0BE8L,QAAQ,OAAQb,EAAenB,GA1BjC9J,KAwBE8L,QAAQ,OAAQ,OAAQhC,GAI1BoB,EAEP,OA9BOlL,KA8BKC,SAASe,IAG7B+K,uBAAwB,SAAS7F,GAC7B,MAAI,SAAWA,EA3CN,UA8CD,cAAgBA,EAzCJ,qBA6CblG,KAAKC,SAASiG,IAEzB8F,iBAAkB,SAAShL,GACvB,IAAI2H,EAAS3H,EAAQ2H,OACjBnG,EAAaxB,EAAQiL,UACrBC,EAAalL,EAAQmL,UACzB,GAAI,SAAWnL,EAAQkF,KAAM,CACzB,IAAIkG,EAAapM,KAAKgC,OAAO,cAI7B,IAHK,EAAIxC,EAAM4J,WAAWT,EAAOmC,YAC7BoB,GAAcA,EAAW3G,SA1DnB,gBA4DN/C,EAAWgJ,WAAWjH,UAAY6H,GAAc,SAAWpL,EAAQqL,iBAAmBD,GAAc,UAAYpL,EAAQqL,iBAExH,YADA7J,EAAW8J,QAAQJ,GAI3BlM,KAAKC,SAASe,IAElBuL,iBAAkB,SAAS3C,EAAOjB,EAAQ6D,GACtC,GAAI,SAAWA,KAAiB,EAAIhN,EAAM4J,WAAWT,EAAOU,YAG5D,OAAOrJ,KAAKC,SAAS2F,MAAM5F,KAAM6F,YAErC4G,sBAAuB,SAAS7C,EAAO8C,GACnC,IAAIC,EAAqB3M,KAAKC,SAAS2J,GACvC,OAAO8C,EAAYC,EAAqBA,GAAsBA,EAAmBC,IAAI,mBAG7FjO,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCCzFzBD,EAAQC,aAAU,EAClB,IAAIC,EAAYC,EAAuBC,EAAQ,KAC3C8N,EAAU9N,EAAQ,IAClBsH,EAAiBvH,EAAuBC,EAAQ,KAChDU,EAAUV,EAAQ,IAClB+N,EAAS/N,EAAQ,KACjBS,EAAQT,EAAQ,IAChBG,EAAYH,EAAQ,IACpBE,EAAUF,EAAQ,IAClBgO,EAAYhO,EAAQ,KACpBiO,EAAUjO,EAAQ,KAClBC,EAAQD,EAAQ,KAChBwH,EAAezH,EAAuBC,EAAQ,MAC9CkO,EAAgBlO,EAAQ,KACxBM,EAAMP,EAAuBC,EAAQ,MACrCmO,EAAgBpO,EAAuBC,EAAQ,MAC/CyH,EAAW1H,EAAuBC,EAAQ,KAC1CoO,EAAWrO,EAAuBC,EAAQ,MAE9C,SAASD,EAAuBY,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAkBnB,SAAS0N,EAA6BC,GAClC,OAAOA,EAAaA,EAAWC,cAAgBD,EAAWE,cAAgB,EAE9E,IAAI3N,EAAW,CACX8G,eAAgB,WACZ,MAAO,CACHnG,mBAAmB,EACnBiN,UAAW,CACPC,UAAW,QAEfC,UAAW,CACPC,QAAS,OACTzK,KAAMsD,EAAS5H,QAAQkI,OAAO,WAC9B8G,MAAO,IACPC,OAAQ,GACRC,eAAe,EACfC,aAAc,GACdC,UAAU,GAEdC,YAAa,KACbC,iBAAiB,EACjBC,WAAY3H,EAAS5H,QAAQkI,OAAO,yBACpCsH,iBAAiB,EACjBrE,iBAAiB,EACjBsE,cAAc,EACdC,uBAAuB,EACvBC,oBAAoB,EACpBC,sBAAsB,IAG9BrH,MAAO,CACHsH,SAAUxB,EAAcyB,YAAY7O,QAAQ,WACxC,IAAI8O,EAAsB,SAASnM,EAAYxB,GAC3C,IAAI4N,GAAkB,EAAI5B,EAAQ6B,SAAS7N,EAAQkC,OAAS,SAAWlC,EAAQyG,QAC3EvE,EAAOlC,EAAQkC,KACf+I,EAAYzJ,EAAWyF,IAAI,GAC3B2G,EACArI,EAAa3H,QAAQkQ,aAAatM,GAE9BxB,EAAQ2H,OAAOoG,WACf9C,EAAU+C,YAAc9L,EAExB+I,EAAUgD,UAAY/L,GAQlC,MAAO,CACHgM,oBAAqB,SAASvG,GAC1B,OAAQA,EAAOW,SACX,IAAK,QACD,OAAO,SAAS2C,GACZA,EAAUvJ,KAAK,WAEvB,QACI,OAAOiM,IAGnBQ,yBAA0B,SAASxG,GAC/B,IACIyG,EADOpP,KACagC,OAAO,iBAC/B,OAAO,SAASQ,EAAYxB,GACxB,IAAIqO,EAAOrO,EAAQqO,KACfnM,EAAOlC,EAAQ2H,OAAO2G,QAAU,KAAOtO,EAAQkC,KAC/C+I,EAAYzJ,EAAWyF,IAAI,GAC3BjH,EAAQuO,cAAgBvO,EAAQuO,aAAahL,SAC7CrB,GAAQ,IAAMqD,EAAa3H,QAAQ4Q,uBAAuBxO,EAAQuO,aAAcH,IAEhFC,IACIrO,EAAQyO,uBAAyBzO,EAAQ0O,sBACzCxM,GAAQ,KAAOlC,EAAQyO,sBAAwB,KAAOzO,EAAQ0O,sBAAwB,IAElF1O,EAAQ0O,sBACRxM,GAAQ,KAAOlC,EAAQ0O,sBAAwB,IAE3C1O,EAAQyO,wBACRvM,GAAQ,KAAOlC,EAAQyO,sBAAwB,MAK/DjN,EAAW+C,SA/FZ,iBAgGKoD,EAAOoG,WACP9C,EAAU+C,YAAc9L,EAExB+I,EAAUgD,UAAY/L,IAIlCyM,QAAS,aACTC,iBAAkB,SAAS5O,GACvB,IACI2H,EAAS3H,EAAQ2H,OAiBrB,MAfI,UAAY3H,EAAQyG,WAAW,EAAIjI,EAAM4J,WAAWT,EAAOU,aAAgBV,EAAOkH,iBAAoBlH,EAAOW,SAMxG,SAAWtI,EAAQyG,SAAWkB,EAAOW,UAAYX,EAAOmH,aAC9CnH,EAAOmH,aAEP,CACPC,gCAAgC,EAChCC,OAdDhQ,KAcckP,oBAAoBvG,IAV9BA,EAAOsH,mBAAqB,CACnCF,gCAAgC,EAChCC,OANGhQ,KAMUmP,yBAAyBxG,KAclDtB,WAAY,SAASC,GACjB,IAAIE,EAAOxH,KAAKC,SAASqH,GACzB,GAAIA,EAAK,CACL,IAAI4I,EAAU,UAAY5I,EAAIG,QAC1B0I,EAAY,SAAW7I,EAAIG,QAO/B,GANA0I,GAAa3I,EAAKjC,SAjIrB,eAkIG4K,GAAanQ,KAAKgC,OAAO,iBAAmBwF,EAAKjC,SAhInD,gBAiIEvF,KAAKgC,OAAO,oBAAsBwF,EAAKjC,SAhItC,oBAiIG,IAAU+B,EAAI8I,SACd5I,EAAK6I,OAELH,EAAS,CACT1I,EAAKjC,SA1IX,gBA2IM,IAAI+K,EAAgBhJ,EAAIiJ,WACxBvQ,KAAK8L,QAAQ,OAAQ,MAAOtE,GAC5BxH,KAAK8L,QAAQ,YAAY,EAAItM,EAAM4J,WAAWkH,IAAkBA,EAAcE,WAAYhJ,IAGlG,OAAOA,GAEXiJ,aAAc,SAASjJ,EAAMkJ,EAAYpJ,GACrC,IAAIC,EAAQvH,KACR,SAAW0Q,EAAWjJ,UAClBzH,KAAKgC,OAAO,2BACZhC,KAAK2Q,UAAUrJ,IAAQE,EAAKjC,SAhJ5B,cAiJAmL,EAAWE,OAASF,EAAWE,OAAM,WACjC,OAAOrJ,EAAMoJ,UAAUrJ,MACxB,SAASzC,GACR2C,EAAK1B,YApJT,aAoJ4CjB,OAGhD7E,KAAK6Q,iBAAiBH,EAAYlJ,GAClCkJ,EAAWE,OAASF,EAAWE,OAAM,WACjC,OAAOF,EAAWtI,YACnB,WACC,OAAOb,EAAMsJ,iBAAiBH,EAAYlJ,OAGlDxH,KAAKC,SAAS2F,MAAM5F,KAAM6F,YAE9BgL,iBAAkB,SAASvJ,EAAKE,GAC5B,IAAIsJ,EAAY9Q,KAAK8Q,UACjBC,EAAc,aAAeD,EAAU9O,OAAO,mBAAqB,YAAc8O,EAAU9O,OAAO,8BAClGoG,EAAWd,EAAIc,SAAW,EAC1B2I,EACA3I,EAAW0I,EAAUE,YAAcF,EAAUG,WAAa7I,EAE1DA,GAAYpI,KAAKkR,gBAAgBC,oBAErCnR,KAAK8L,QAAQ,WAAY1D,EAAUZ,IAEvC4J,kBAAmB,SAASvJ,GACxB,IAAImD,EAAShL,KACTqR,EAAMxJ,EAAE5B,KAAK,GACbqL,EAAiBtR,KAAKkR,gBACtB5J,EAAMgK,EAAeC,iBAAiBF,EAAIjJ,UAC1CwI,EAAQ5Q,KAAKgC,OAAO,kCACxB,GAAKqP,EAAIhC,MAAQ,SAAWgC,EAAI5J,UAAW4J,EAAIG,UAAaxR,KAAKgC,OAAO,yBAA4B4O,GAAUtJ,EAA9G,CAGA,IAAImK,EAAUb,GAAM,WAChB,OAAOU,EAAeI,mBAAmBL,EAAIhC,KAAMgC,EAAIM,YACxD,WACCL,EAAeM,YAAY,CAACtK,EAAIc,UAAW4C,EAAOhJ,OAAO,yBAC1D,CACC6P,MAAM,EACNC,eAAe,IAEnBzL,EAAezH,QAAQ8I,GAAG2J,EAAIU,WAAY7E,EAActO,QAAS6S,KAErEO,kBAAmB,SAASC,GACxB,IACIC,EADOlS,KACSmS,UAOpB,GANKD,EAAS1G,WAAWjH,QACrB2N,EAASvP,OAAO,UAEhBsP,GALOjS,KAKQoS,YALRpS,KAMFqS,iBAAiBH,EAAUA,EAASlP,SANlChD,KAMiDkR,gBAAgBoB,iBAEvEL,IARMjS,KAQSuS,kBARTvS,KAQkCkR,gBAAgBsB,WAAY,CAGrE,IAFA,IAAIb,EATG3R,KASYyS,aACfC,GAAqB,EAChBC,EAAI,EAAGA,EAAIhB,EAAQpN,OAAQoO,IAChC,IAAKhB,EAAQgB,GAAG/E,QAAU+D,EAAQgB,GAAGC,SAAU,CAC3CF,GAAqB,EACrB,OAdD1S,KAiBEgC,OAAO,oBAjBThC,KAiBoC6S,YAAcH,GAjBlD1S,KAiB6E4I,mBAAmBkK,oBAjBhG9S,KAkBE+S,sBAAsBb,KAIvCc,cAAe,SAASnL,GACpB,IACIuE,EADOpM,KACWgC,OAAO,cADlBhC,KAENiT,mBAAqBpL,EAAEE,MAFjB/H,KAGNkT,WAAarL,EAAEsL,aAAaC,IAHtBpT,KAINqT,YAAcxL,EAAEsL,aAAaG,KAC9BlH,IACApM,KAAKuT,aAAenG,EAA6BvF,EAAEiJ,WAAa9Q,KAAKqT,aAN9DrT,KAQNwT,cAAcC,KAAK5L,EAAEsL,aARfnT,KAQkCkG,OAEjD6M,sBAAuB,SAASb,GAC5B,IACIwB,EADO1T,KACoB2T,2BAC3BC,EAFO5T,KAEcgT,cAAc/P,KAF5BjD,MAGX0T,EAAoBG,SAAWD,EAC/BF,EAAoBI,OAASF,EAJlB5T,KAKN+T,YALM/T,KAKagU,iBAAiB9B,EAAU7S,EAAIT,QAAS8U,GALrD1T,KAMNiU,qBANMjU,KAMsB+T,aANtB/T,KAM0C+T,YAAYG,aAErE7B,iBAAkB9L,EAAa3H,QAAQuV,gBACvCC,eAAgB,SAASC,EAAgBC,GAErC,OADAD,EAAeE,QAAQ5R,OAAO2R,GACvBtU,KAAKwU,uBAEhBC,eAAgB,SAASC,EAAiBC,GACtC,IAAIxS,EAAOnC,KACPsU,EAAenS,EAAKyS,kBACpBP,EAAiBlS,EAAKqS,sBACtBK,EAAaF,GAAUA,EAAOE,WAC9BC,EAAY,GACZC,EAAmB/U,KAAKgC,OAAO,oBAC/BgT,EAAmBhV,KAAK6L,gBAlPb,0BAmPf,OAAQgJ,GACJ,IAAK,UACD,EAAI3V,EAAUqE,MAAMoR,EAAOM,YAAY,SAASvP,EAAO0C,GACnD,IAAI8M,EAAiB/S,EAAKgT,gBAAgBT,GAAiBU,GAAG1P,GAC1DmP,EAAaF,EAAO1K,aAAe0K,EAAO1K,YAAYvE,GACtDpD,EAAOqS,EAAO5S,OAAS4S,EAAO5S,MAAM2D,GACxCoP,EAAUzQ,MAAK,WACX,IAAIgR,EAAelT,EAAKgT,kBACpBG,EAAcD,EAAaD,GAAGhN,GAClC,OAAQyM,GACJ,IAAK,SACD,GAAIvS,EAAM,CACN,IAAIiT,EAAgBZ,EAAOY,eAAiBZ,EAAOY,cAAc7P,IAC7D,EAAIlG,EAAM4J,WAAW9G,EAAK8N,UAAY9N,EAAK8N,UAAYkF,EAAYE,GAAG,YACtEF,EAAYG,OAAOnT,EAAK8N,SAEpBmF,EACApT,EAAKuT,aAAaJ,EAAaJ,EAAgBK,GAE/CD,EAAYK,YAAYT,GAIpC,MACJ,IAAK,SACD,GAAKG,EAAa9Q,OAMV+Q,EAAY/Q,OACZ2Q,EAAeU,aAAaN,GAE5BJ,EAAeW,YAAYR,EAAaS,aAR5C,GAAIxB,EAAc,CACd,IAAInL,EAAS+L,EAAeM,GAAG,SAAWlB,EAAeA,EAAa9I,SAAS,SAC/E0J,EAAea,UAAU5M,GAS7B4L,GAAoBJ,EAAOqB,cAC3Bd,EAAe3P,SAASyP,GAE5B,MACJ,IAAK,SACDM,EAAY/J,iBAI5B,EAAIrM,EAAUqE,MAAMuR,GAAW,WAC3B9U,UAEJ0U,EAAgBnJ,SAChB,MACJ,QACIpJ,EAAK8T,gBAAgBvB,GACrBL,EAAe9O,SAASpD,EAAK0J,gBAnTrC,YAoTQ1J,EAAKiS,eAAeC,EAAgBK,KAGhDwB,gBAAiB,SAASC,EAAWC,EAASvI,GAC1C,IACIjE,EACApC,EAFOxH,KAEKqH,aACZsK,EAAUyE,EAAUpW,KAAKqW,kBAAoBrW,KAAKyS,aACtDjL,EAAKjC,SAAS4Q,GAAWrQ,YArTpB,kBAiTM9F,KAImDgC,OAAO,oBACrE,IAAK,IAAI2Q,EAAI,EAAGA,EAAIhB,EAAQpN,OAAQoO,IAChC/I,EANO5J,KAMMsW,YAAY,CACrB3N,OAAQgJ,EAAQgB,GAChBlL,QAAS,YACTY,YAAasK,EACbhB,QAASA,KAEb,EAAInS,EAAM+W,WAAW1I,IAAWjE,EAAM4M,IAAI,SAAU3I,GACpDrG,EAAK7E,OAAOiH,GAGhB,OAhBW5J,KAeN8L,QAAQ,OAAQ,eAAgBtE,GAC9BA,GAEXiP,gBAAiB,SAASC,EAAQC,EAAWC,GACzC,IAAIC,EAAW7W,KAAK8W,WAAWJ,GAC3BK,GAAoBF,EAAStS,QAAUoS,EAAUnB,GAAG,SACpDhT,EAAauU,EAAmBL,EAASG,EAC7C,GAAI,QAAUD,GAEV,GADApU,EAAWwU,QAAQ1K,QAAQqK,GACvBI,EAAkB,CAClB,IAAIE,EAAYzU,EAAWgJ,SAAS,YACpChJ,EAAW8J,QAAQ2K,SAGvBzU,EAAWsT,OAAOnT,OAAOgU,IAGjCO,oBAAqB,SAASC,GAC1B,IAAIC,EAAuBpX,KAAKkW,gBApV7B,oBAqVHkB,EAAuBpX,KAAKqX,eAAeF,EAAeC,GAC1DpX,KAAKyW,gBAAgBU,EAAeC,IAExCE,cAAe,SAAStW,GACpB,IAAImB,EAAOnC,KACPuX,EAAOpV,EAAKqV,SAASxW,GACrBd,EAAUiC,EAAK+O,gBAAgBuG,SAAWtV,EAAK+O,gBAAgBuG,QAAQvT,MAC3EhE,GAAWqX,EAAK9O,MAAK,SAASnB,GAC1B,GAAI,SAAWA,EAAIG,cAAW,IAAWH,EAAIpD,IAEzC,OADA/B,EAAK+O,gBAAgBwG,UAAU,QAASxX,IACjC,MAInByX,qBAAsB,SAASC,GAC3B,OAAOA,EAAa,IAAM5X,KAAK6X,YAEnCC,eAAgB,SAASX,GAErB,OADmBA,EAAc3L,SAAS,SAASA,WAAWoB,IAAI,mBAAmBA,IAAI,qBACrEmL,UAAUC,QAAO,SAASC,EAAK3Q,GAC/C,OAAO2Q,GAAM,EAAIlL,EAAUmL,iBAAiB5Q,GAAKuG,SAClD,IAEPsK,iBAAkB,WACd,IACIhB,EADOnX,KACc4U,kBACrBgD,EAFO5X,KAEWkR,gBAAgBnP,QAAQwC,OAC9C,GAAI4S,GAHOnX,KAGe2X,qBAAqBC,GAAa,CACxD,IAAIQ,EAJGpY,KAIe8X,eAAeX,GAJ9BnX,KAKF6X,WAAaO,EAAaR,IAGvCpD,oBAAqB,WACjB,IAAI6D,EAAWrY,KAAKmS,UAChB9E,EAAarN,KAAKuS,gBACtB,GAAI8F,EAIA,OAHIhL,IACAgL,EAAWhL,EAAWgL,YAEnBA,EAAS7M,WAAWwL,SAGnC7B,gBAAiB,SAASb,GACtB,IAAIgE,EAAQtY,KAAKC,SAASqU,GAC1B,OAAOgE,GAASA,EAAM1L,IAAI,sBAE9B2L,yBAA0B,SAAS7B,GAC/B,IAAI8B,EAAgB9B,GAAU1W,KAAKyY,mBACnC,OAAOD,GAAiBA,EAAchN,SAAS,SAASA,SAAS,sBAErEkN,eAAgB,WACZ,OAAO1Y,KAAKgC,OAAO,eAEvB2W,UAAW,SAAS9Q,GAChB,IAAIvF,EAAOtC,KAAKkR,gBAAgBnP,QAAQ8F,EAAEO,WAAa,GACvDpI,KAAK4Y,cAAc,cAAc,EAAI3Z,EAAQc,QAAQ,CACjD8Y,SAAU,SAASC,GAEf,OADa,EAAI9Z,EAAM8F,eAAegU,EAC/BrU,CAAOnC,EAAK+M,QAExBxH,EAAGvF,KAEVyW,aAAc,SAASlR,GACnB,IAAIvF,EAAOtC,KAAKkR,gBAAgBnP,QAAQ8F,EAAEO,WAAa,GACvDpI,KAAK4Y,cAAc,iBAAiB,EAAI3Z,EAAQc,QAAQ,GAAI8H,EAAGvF,KAEnE0W,6BAA8B,SAASrH,GACnC,IAAK,IAAIgB,EAAI,EAAGA,EAAIhB,EAAQpN,OAAQoO,IAChC,GAAI,gBAAkBhB,EAAQgB,GAAGsG,KAC7B,OAAOtG,EAGf,OAAO,GAEXuG,qBAAsB,SAASlY,GAC3B,IAAImY,EAA2BnZ,KAAKgZ,6BAA6BhY,EAAQ2Q,SACrEtJ,GAAerH,EAAQsG,IAAI+B,YAAc,GAAK8P,EAClD,MAAO,CACH9Q,YAAaA,EACb+Q,QAASpY,EAAQ2Q,QAAQpN,OAAS8D,EAAc,IAGxDgR,aAAc,SAAS7R,EAAMxG,GACrB,UAAYA,EAAQsG,IAAIG,QACxBzH,KAAKsZ,oBAAoB9R,EAAMxG,GAE3BA,EAAQsG,IAAIiS,QACZvZ,KAAKC,SAASuH,EAAMxG,IAIhCsY,oBAAqB,SAAS9R,EAAMxG,GAOhC,IANA,IACIwY,EAGAjJ,EAJAjJ,EAAMtG,EAAQsG,IAEdqK,EAAU3Q,EAAQ2Q,QAClBvJ,EAAWd,EAAIc,SAEfqR,EAAmBzZ,KAAKkZ,qBAAqBlY,GACxC2R,EAAI,EAAGA,GAAK8G,EAAiBpR,YAAasK,IAC3CA,IAAM8G,EAAiBpR,aAAesJ,EAAQgB,GAAG+G,iBAAmB,aAAe1Y,EAAQ2Y,eAC3FpJ,IAAejJ,EAAIiJ,WACnBiJ,EAAe7H,EAAQgB,KAEvBpC,EAAa,KACbiJ,EAAe,CACXlQ,QAAS,SACTsQ,SAAUjI,EAAQgB,GAAGiH,WAG7B5Z,KAAK6Z,YAAYrS,EAAM,CACnB3C,MAAO0L,EACPjJ,IAAKA,EACLc,SAAUA,EACVO,OAAQ6Q,EACRnR,YAAasK,IAGrB,IAAImH,GAAuB,EAAI/M,EAAUgN,qBAAqB/Z,KAAKgC,OAAO,eACtEyI,GAAc,EAAIxL,EAAQc,QAAQ,GAAI4R,EAAQ8H,EAAiBpR,aAAc,CAC7EiB,QAAS,KACTsQ,SAAU,KACVhM,MAAO,KACPiC,iBAAiB,EACjBjF,UAAWkP,IAEXL,EAAiBL,QAAU,IAC3B3O,EAAY2O,QAAUK,EAAiBL,SAE3CpZ,KAAK6Z,YAAYrS,EAAM,CACnB3C,MAAOyC,EAAIiS,OAAOjS,EAAI+B,YACtB/B,IAAKA,EACLc,SAAUA,EACVO,OAAQ8B,EACRpC,YAAaoR,EAAiBpR,eAGtC2R,YAAa,SAAStD,EAAQ1V,GAC1B,IACI2Y,EADO3Z,KACcgC,OAAO,kBADrBhC,KAENC,SAASyW,GAAQ,EAAIzX,EAAQc,QAAQ,CACtC4Z,cAAeA,GAChB3Y,IAJQhB,KAKNsX,cAActW,EAAQ2T,QALhB3U,KAMNkX,oBAAoBR,GANd1W,KAOD6S,YAPC7S,KAQFia,yBAAyBvD,IAGtCwD,WAAY,SAASxD,EAAQ1V,GACzB,IACIsG,EAAMtG,EAAQsG,IACd2G,EAFOjO,KAEYgC,OAAO,eACzB,SAAWsF,EAAIG,SAAW,UAAYH,EAAIG,UAAa,EAAIjI,EAAM4J,WAAW9B,EAAI+B,cAAe4E,EAHzFjO,KAQFC,SAASyW,EAAQ1V,GARfhB,KAIFma,eAAezD,EAAQzI,GAAa,EAAIhP,EAAQc,QAAQ,CACzD4R,QAAS3Q,EAAQ2Q,SAClBrK,IAAM,IAKjB8S,aAAc,SAASpZ,GACnB,IAAImB,EAAOnC,KACP0W,EAASvU,EAAKlC,SAASe,GAe3B,OAPK,EAAIxB,EAAM4J,WAAWjH,EAAKyS,mBAK3BzS,EAAK6P,qBAJL7P,EAAK8T,gBAAgBS,GACrBvU,EAAK6P,mBAAkB,GACvB7P,EAAKkY,gBAAgBC,KAVI,SAASC,IAClC,IAAIC,EAAqBrY,EAAKoQ,gBAC1BiI,GAAsBrY,EAAKgQ,UAAUsI,SAAQ,EAAI5N,EAAQ6N,aAAaC,UAAUpW,SAChFpC,EAAKkY,gBAAgB9O,OAAOgP,GAC5BC,EAAmBI,oBAAmB,QAUvClE,GAEXmE,aAAc,WACV,IAAInE,EAAS1W,KAAKC,SAAS2F,MAAM5F,KAAM6F,WAIvC,OAHI7F,KAAKgC,OAAO,gBACZ0U,EAAO9K,SAAS5L,KAAK8Q,UAAUoB,YAE5BwE,GAEXoE,YAAa,SAASnG,GAClB,IACIzC,EADOlS,KACSmS,UACpBD,EAAS3M,SAFEvF,KAEY6L,gBAxhBrB,aAwhBuD/F,YAF9C9F,KAE+D6L,gBAthB3E,WAohBY7L,KAEoGgC,OAAO,oBACtHkQ,EAASpM,YA9gBX,WA8gBoC,IAHvB9F,KAGkCkR,gBAAgBnP,QAAQwC,QAH1DvE,KAIN8L,QAAQ,OAAQ,eAAgBoG,GACrC,IAAIwE,EALO1W,KAKOoa,aAAa,CAC3BzF,OAAQA,IAND3U,KAQNyU,eAAeiC,EAAQ/B,GARjB3U,KASNC,SAAS0U,GATH3U,KAUN+a,kBAAoB,MAE7BvD,SAAU,SAAS7C,GACf,OAAOA,GAAUA,EAAO5S,OAAS/B,KAAKkR,gBAAgBnP,SAE1DiZ,gBAAiB,SAASha,GACtB,IACI2H,EAAS3H,EAAQ2H,OACjBrB,EAAMtG,EAAQsG,IACd+H,EAAO/H,EAAI+H,KACX4L,EAAe3T,GAAOA,EAAI2T,aAC1BpW,EAAQ7D,EAAQ6D,MAChBqW,EAAe3U,EAAa3H,QAAQuc,gBAAgBxS,EAAQ9D,EAAOwK,EAAM/H,EAAIG,SAC7E2T,EAAapb,KAAKC,SAASe,GAa/B,GAZAoa,EAAWvW,MAAQA,EACnBuW,EAAWC,SAAWra,EAAQqa,SAC9BD,EAAWF,aAAeA,EAC1BE,EAAW9T,IAAMA,EACjB8T,EAAWlX,IAAMoD,EAAIpD,IACrBkX,EAAW/L,KAAOA,EAClB+L,EAAW3T,QAAUH,EAAIG,QACzB2T,EAAW7B,OAASjS,EAAIiS,OACxB6B,EAAWlY,KAAQyF,EAAOW,QAAmE,GAAzD/C,EAAa3H,QAAQ0c,YAAYJ,EAAcvS,GACnFyS,EAAWhT,SAAWd,EAAIc,SAC1BgT,EAAW7L,aAAe0L,GAAgBA,EAAaja,EAAQqH,aAC/D+S,EAAWG,QAAU5S,EAAO6S,kBACxB,EAAIhc,EAAM4J,WAAWT,EAAOU,cAAgBV,EAAOW,QAAS,CAC5D,IAAImS,EArBGzb,KAqByBgC,OAAO,kBACnC2X,EAtBG3Z,KAsBkBgC,OAAO,kBAC5B,YAAc2X,GAAiB,aAAeA,IAC9CyB,EAAW1L,sBAAwBL,GAAQA,EAAKqM,0BAA4BD,GAAwBA,EAAqB/L,sBACzH0L,EAAW3L,sBAAwBJ,GAAQA,EAAKsM,gBAAkBF,GAAwBA,EAAqBhM,uBAGvH,OAAO2L,GAEXQ,oBAAqB,SAAStD,EAAOuD,EAAgBxT,EAAaxD,GAC9D,IAAIiX,EAAoB9b,KAAK4I,mBACzB+I,EAAUmK,EAAkBrJ,aAC5B9J,EAASgJ,GAAWA,EAAQtJ,GAC5B0T,EAAWpT,GAAUA,EAAOqT,QAAUrT,EAAOjD,OACjD,EAAIxG,EAAUqE,MAAM+U,GAAO,SAASlQ,EAAUd,GAC1C,KAAK,EAAIzI,EAAUD,SAAS0I,GAAK2U,SAvkBnC,gBAwkBM,IAAK,IAAItJ,EAAI,EAAGA,EAAIkJ,EAAetX,YAC3B,EAAI/E,EAAM+W,WAAWwF,IAAaD,EAAkBI,mBAAmBL,EAAelJ,GAAGjN,MAAOqW,IAAaF,EAAelJ,GAAGjN,QAAU2C,KACzIiQ,EAAMlD,GAAGhN,GAAUoD,WAAW4J,GAAGzC,GAAG6D,IAAI,CACpC2F,QAAStX,KAER,EAAIrF,EAAM+W,WAAWwF,KALSpJ,UAavDyJ,qBAAsB,WAClB,OAAO,EAAIvP,EAAQ6N,aAAa2B,kBAEpCC,iBAAkB/V,EAAa3H,QAAQ0d,iBACvCC,eAAgB,SAASnU,EAAUoU,GAC/B,IACIC,EACA9T,EAFA+H,EAAa1Q,KAAKkR,gBAAgBnP,QAAQqG,GAkB9C,OAfIsI,IAEI/H,GADA,EAAInJ,EAAMkd,UAAUF,GACXxc,KAAK4I,mBAAmB8C,aAAa8Q,GAErCxc,KAAK4I,mBAAmBC,oBAAoB2T,MAGrDC,EAAczc,KAAKgb,gBAAgB,CAC/BnW,MAAO8D,EAAOgU,mBAAmBjM,EAAWrB,MAC5CjH,SAAUsI,EAAWtI,SACrBd,IAAKoJ,EACL/H,OAAQA,KAIb8T,GAEXG,OAAQ,SAASlX,GACb,GAAIA,GAAS,EAAG,CACZ,IAAI6R,EAAOvX,KAAKmV,kBAChB,GAAIoC,EAAKhT,OAASmB,EACd,OAAO,EAAI7G,EAAUD,SAAS2Y,EAAK7R,MAI/CuU,yBAA0B,SAASvD,GAC/B,IAAImG,EAAS7c,KACTsR,EAAiBtR,KAAKkR,gBACtB4L,EAAYxL,EAAevP,OAAM,GAAMwC,OACvC8P,EAAiBrU,KAAKwU,sBACtBuI,EAAuB/c,KAAKuY,yBAAyB7B,GACzD,GAAIqG,GAAwB1I,GAAkB/C,EAAe0L,cAAgB,EAAG,CAC5E,IAAIC,GAAwB,EAC5B,GAAIH,EAAY,EACZ,GAAK9c,KAAK6S,WAcNkK,EAAqB1M,QACrB,EAAI5Q,EAAQyd,cAAa,WACrB,IAAIC,EAAiBN,EAAOO,mBAAkB,GAC1CC,EAAgCR,EAAO1K,UAAUtE,SAAWsP,EAE5DG,EAAmBD,EADHhJ,EAAekJ,cACoC,EACnEnF,EAAayE,EAAO/E,eAAezD,EAAe7I,WAAWwL,SAC7DG,EAAgBT,GAAUmG,EAAOpE,mBAGjC+E,EAAeH,EAAgCjF,EAF9BqF,KAAKC,KAAKC,WAAWxG,EAAcX,IAAI,oBACrCqG,EAAOe,uBAE1BN,IACA,EAAI7d,EAAQoe,cAAa,WACrBd,EAAqBvG,IAAI,SAAUgH,GACnCP,GAAwB,EACxBF,EAAqBe,WAE5B,EAAIre,EAAQoe,cAAa,WACtB,OAAOhB,EAAOkB,qBAAqBd,aAhCzB,CAClB,IAAIe,EAAoB1M,EAAeL,WAAa6L,EAChDnD,EAAgB3Z,KAAKgC,OAAO,kBAC5Bgc,EAAoB,GAAK1M,EAAe2M,YAAc,GAAK,YAActE,GAAiB,aAAeA,KACzG,EAAI7M,EAAOoR,WAAWnB,EAAsBiB,EAAoBhe,KAAK6X,YACrEoF,GAAwB,IAEvBA,GAAyBvG,GAC1B,EAAI5J,EAAOoR,WAAWnB,EAAsB,GAE5CA,EAAqBtH,OAAOwH,GAEhCjd,KAAK+d,qBAAqBd,QAyB9BF,EAAqBvG,IAAI,SAAU,GACnCuG,EAAqBe,OACrB9d,KAAK+d,sBAAqB,KAItCH,qBAAsB,WAClB,IAAIO,EAAiBhR,EAASvO,QAAQwf,QAAUpe,KAAKoc,wBAA0B,EAC3EiC,EAAiBlR,EAASvO,QAAQ0f,QAAUnR,EAASvO,QAAQ2f,SAAW,GACxEC,EAAoBrR,EAASvO,QAAQ6f,SAAWtR,EAASvO,QAAQ2f,SAAW,KAAOve,KAAKgC,OAAO,gBACnG,OAAOmc,GAAkBK,GAAqBH,EAAiB,EAAI,GAEvErU,qBAAsB,SAASnC,GAC3B,IAAI6W,EAAc7W,EAAE6W,YAChB7W,EAAEoC,YAAY0U,WAGdD,EAAY9Q,OAAS8Q,EAAYE,gBACjC5e,KAAKC,SAAS4H,GACd7H,KAAK6e,gCAGbtM,cAAe,WACX,OAAOvS,KAAK+T,aAEhB+K,KAAM,WACF,IAAI3c,EAAOnC,KACPsR,EAAiBnP,EAAK4G,cAAc,QACxC5G,EAAKlC,WACLkC,EAAK4c,yBAA2B5c,EAAK4G,cAAc,iBACnD5G,EAAK0V,WAAa,EAClB1V,EAAK+Q,WAAa,EAClB/Q,EAAKkR,aAAe,EACpBlR,EAAKoR,aAAe,EACpBpR,EAAK0Q,YAAa,EAClBvB,EAAe0N,eAAe1E,KAAI,SAAS2E,EAAWC,GAClD/c,EAAKgd,WAAWF,EAAWC,MAE/B5N,EAAe8N,kBAAkB9E,KAAI,WAC7BnY,EAAKkR,aAAe,GACpBlR,EAAK6Q,cAAc,CACflC,UAAW3O,EAAKoQ,gBAChBY,aAAc,CACVC,IAAKjR,EAAK+Q,WACVI,KAAMnR,EAAKkR,mBAM/BgM,mBAAoB,SAAS1K,GAEzB,OAAQA,EAAOE,YACX,IAAK,UACL,IAAK,UACL,IAAK,SACL,IAAK,SALE7U,KAMEgQ,OAAO,KAAM2E,GAClB,MACJ,QARO3U,KASE2P,QAAQgF,KAGzB2K,cAAe,WACX,MAAO,CAAC,qBAAsB,uBAAwB,oBAAqB,iBAAkB,gBAAiB,kBAElHC,aAAc,WACV,OAAOvf,KAAKmS,UAAUvE,QAAU5N,KAAKod,qBAEzCA,kBAAmB,SAASoC,GACxB,IAAIC,EAAsBzf,KAAKiU,sBAAwBjU,KAAKiU,qBAAqBhM,IAAI,GACjFkV,EAAiB,EASrB,OARIsC,IACKD,GAGDrC,EAAiBsC,EAAoBC,aAAeD,EAAoBE,aAAeF,EAAoBC,aAAe,EAC1HvC,GAvrBiB,SAAShb,GACtC,IAAIkL,EAAalL,EAAKoQ,gBACtB,OAAOlF,EAAaoQ,KAAKC,KAAKC,WAAWtQ,EAAWgL,WAAW7B,IAAI,mBAAqB,EAqrB1DoJ,CAA2B5f,OAH7Cmd,EAAiBsC,EAAoBlS,YAAckS,EAAoBI,YAAcJ,EAAoBlS,YAAc,GAMxH4P,EAAiB,EAAIA,EAAiB,GAEjD0B,4BAA6B,WAKzB,IAJA,IACIiB,EADO9f,KACiB+a,mBAAqB,GAC7CgF,EAAe,GACfpO,EAHO3R,KAGQyS,aACVE,EAAI,EAAGA,EAAIhB,EAAQpN,OAAQoO,IAChCoN,EAAapN,GAAKhB,EAAQgB,GAAGiM,aACzBjN,EAAQgB,GAAG6I,oBAAqB,EAAIhc,EAAM4J,WAAWuI,EAAQgB,GAAGtJ,aAAeyW,EAAiBnN,KAAOoN,EAAapN,IACpHhB,EAAQgB,GAAG6I,iBAAiB/H,KAAKsM,EAAapN,IAP3C3S,KAUN+a,kBAAoBgF,GAE7BhC,qBAAsB,SAASd,GACvBjd,KAAKgC,OAAO,gBAAkBhC,KAAKgC,OAAO,kBAAoBib,EAC9Djd,KAAKmS,UAAU5M,SA9vBjB,sBAgwBEvF,KAAKmS,UAAU6N,YAhwBjB,uBAmwBNC,kBAAmB,WACf,IAAIC,EAAe7gB,EAAIT,QAAQuhB,YAAYngB,KAAKmS,WAC5C+N,IACAA,EAAaE,SACbpgB,KAAKqgB,oCAGbA,gCAAiC,WAC7B,IAAIhT,EAAarN,KAAKuS,gBAClB+N,EAAajT,GAAcA,EAAW8F,eAAeG,KAEzD,GADiBtT,KAAKgC,OAAO,cACb,CACZ,IAAIue,EAA4BnT,EAA6BC,GAC3CkT,EAA4BD,IAC1BtgB,KAAKuT,eACrBvT,KAAKqT,YAAckN,EAA4BvgB,KAAKuT,cAGxDvT,KAAKqT,aAAe,GAAKiN,IAAetgB,KAAKqT,aAC7ChG,EAAWmT,SAAS,CAChBC,EAAGzgB,KAAKqT,eAIpBqN,YAAa,WACT,IAAIve,EAAOnC,KACXmC,EAAK0c,8BACL1c,EAAKgW,oBACL,EAAI1Y,EAAQoe,cAAa,WACrB1b,EAAK6P,oBACL7P,EAAKma,mBACLna,EAAK8X,4BACL,EAAIxa,EAAQyd,cAAa,WACrB/a,EAAK8d,2BAIjBO,SAAU,SAAS5J,GACf,IAAI1E,EAAWlS,KAAKmS,UAChB+N,EAAehO,GAAY7S,EAAIT,QAAQuhB,YAAYjO,GACnDgO,GACAA,EAAaM,SAAS5J,IAG9B/I,OAAQ,SAAS8S,EAASC,GACtB,IAAIze,EAAOnC,KACPkS,EAAWlS,KAAKmS,UACpB,GAAI,IAAMtM,UAAUtB,OAChB,OAAO2N,EAAWA,EAASqL,aAAY,GAAQ,EAEnDpb,EAAK0Q,gBAAa,IAAW+N,EAAY,SAAWD,EAAUC,GAC1D,EAAIphB,EAAM4J,WAAWuX,IAAYzO,IACjC,EAAIpF,EAAOoR,WAAWhM,EAAUyO,IAGxCxB,WAAY,SAASF,EAAWC,GAC5B,IACIxR,EADO1N,KACUoS,WACjBd,EAFOtR,KAEekR,gBACtB2P,EAHO7gB,KAGiBgC,OAAO,cAAgB,GAC/C8e,EAAYxP,EAAekB,WAAaqO,EAAiBC,UAAY,KACrE5O,EALOlS,KAKSmS,UACpB,IAAK,EAAItF,EAAQkU,gBAGZrT,QAAa,IAAWwR,GAAe5N,EAAegB,gBAAkB,SAAWuO,EAAiBlT,SAAWuE,IATzGlS,KAUFqS,iBAAiBH,EAAUA,EAASlP,UACzC0K,EAXO1N,KAWUoS,YAEjB1E,GAAW,CACX,IAAIsT,EAAoB,CACpBC,QAAS/B,GAAe2B,EAAiB3d,KACzC4d,UAAWA,EACX1Q,QAAS6O,GAEbiC,aAnBOlhB,KAmBWmhB,uBACdzT,EAAU1L,OAAO,aAAeid,EApB7Bjf,KAqBEmhB,sBAAwB1X,YAAW,WACpCiE,EAAU1L,OAAOgf,KA90BpB,KAi1BDtT,EAAU1L,OAAOgf,KAI7BI,eAAgB,SAAS/Y,EAAaxD,GAClC,IAAIyT,EAAQtY,KAAKmV,kBAAkBvI,IAAI,kBAA0B,GACjE5M,KAAK4b,oBAAoBtD,EAAOtY,KAAKyS,aAAcpK,EAAaxD,IAEpEwc,qBAAsB,SAASjZ,GAC3B,IAAIkZ,EAASthB,KAAKC,SAAS2F,MAAM5F,KAAM6F,WACvC,GAAIyb,EAAQ,CACR,IAAIC,EAAiBD,EAAOE,OAAO,kBAAwB9b,QAC3D,GAAI6b,GAAkB,GAAKD,EAAO/c,OAASgd,EAAiB,EACxD,OAAOD,EAAOhZ,MAAM,EAAGiZ,EAAiB,GAGhD,OAAOD,GAEXG,uBAAwB,SAASC,GAC7B,IACIC,EAAY,EACZC,EAAgB,EAChBC,EAAY,EACZC,EAJO9hB,KAIekT,WACtB6O,EALO/hB,KAKgBwU,sBACvBwN,EAA0BD,GAAmBA,EAAgBE,SAAS7O,IACtErR,EAPO/B,KAOMkR,gBAAgBnP,QAC7BuS,EAROtU,KAQa4U,kBACxB,GAAI7S,EAAMwC,QAAU+P,EAAc,CAC9B,IAAI4N,EAVGliB,KAUgBmV,gBAAgBb,GAAckN,OAAO,YAC5D,IAAKG,EAAY,EAAGA,EAAY5f,EAAMwC,OAAQod,IAAa,CACvDC,EAAgBC,EAChB,IAAI9P,EAAamQ,EAAY9M,GAAGuM,GAChC,GAAI5P,EAAWxN,SACXsd,EAAY9P,EAAWkQ,SAAS7O,IAAM4O,GACtBF,EAAgB,CACxBH,IACID,GAAW,EAAII,EAAiBrE,KAAK0E,MAAMN,EAAYD,KACvDD,IAGR,OAIRA,GAAaA,IAAc5f,EAAMwC,QACjCod,IAGR,OAAOA,GAEXS,qBAAsB,WAClB,IAAIT,EAAY3hB,KAAKyhB,yBACjB1f,EAAQ/B,KAAKkR,gBAAgBnP,QACjC,GAAIA,EAAM4f,GACN,OAAO5f,EAAM4f,GAAWtS,MAGhCgT,iBAAkB,SAASnQ,EAAU+P,GACjC,IAAI5U,EAAarN,KAAKuS,gBACtBlF,GAAcA,EAAWiV,gBAAgBpQ,EAAU+P,IAEvD9X,cAAe,SAASlE,GAGpB,OAFWjG,KACNC,SAASgG,GACNA,EAAKC,MACT,IAAK,kBACL,IAAK,kBACL,IAAK,eACL,IAAK,wBACL,IAAK,cACL,IAAK,uBARElG,KASEoK,aAAY,GAAM,GACvBnE,EAAKoE,SAAU,EACf,MACJ,IAAK,YAZErK,KAaE6X,WAAa,KAbf7X,KAcEuiB,cAAgB,KACrBtc,EAAKoE,SAAU,EACf,MACJ,IAAK,aAjBErK,KAkBE6X,WAAa,KAlBf7X,KAmBEuiB,cAAgB,KACrB,MACJ,IAAK,YArBEviB,KAsBEuiB,cAAgB,KAtBlBviB,KAuBEoK,aAAY,EAAM,sBAAwBnE,EAAKuc,UACpDvc,EAAKoE,SAAU,EACf,MACJ,IAAK,aA1BErK,KA2BEsc,mBACLrW,EAAKoE,SAAU,IAG3BoH,QAAS,WACLyP,aAAalhB,KAAKmhB,uBAClBnhB,KAAK+T,aAAe/T,KAAK+T,YAAYtC,WAEzCgR,mBAAoB,cAl5BgB,MAu5BpD9jB,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCC99BzBD,EAAQC,aAAU,EAClB,IAAIa,EAAUV,EAAQ,IAClBS,EAAQT,EAAQ,IAChBE,EAAUF,EAAQ,IAClBwH,EAAexH,EAAQ,MACvB2jB,EAAY3jB,EAAQ,IAcpB4jB,EAAmB,SAASxgB,GAC5B,IAAI2Z,EAAoB3Z,EAAK4G,cAAc,WACvC6Z,EAAsBzgB,EAAK4G,cAAc,aACzC8Z,EAAmB1gB,EAAK4G,cAAc,UACtCuI,EAAiBnP,EAAK4G,cAAc,QACpC+S,GACAA,EAAkBgH,eAAexI,KAAI,WACjCnY,EAAK4gB,YAAY,CACbpR,QAASmK,EAAkBkH,oBAInCJ,GACAA,EAAoBK,iBAAiB3I,KAAI,SAASzS,GAC9C1F,EAAK4gB,YAAY,CACbG,gBAAiBrb,EAAEqb,gBACnBC,gBAAiBtb,EAAEsb,qBAI3B7R,IACAnP,EAAKihB,iBAAmBjhB,EAAKH,OAAO,mBACpCG,EAAKkhB,oBAAsBlhB,EAAKH,OAAO,eACvCsP,EAAegS,QAAQhJ,KAAI,WACvB,IAAIiJ,EArCG,SAASphB,GACxB,IAAIqhB,EAAYrhB,EAAKshB,QAAQ,aACzBnS,EAAiBnP,EAAK4G,cAAc,QACpCwa,EAAQ,CACRG,iBAAkBF,EAAYA,EAAUG,oBAAiB,EACzDC,YAAa,CACTC,cAAe1hB,EAAKH,OAAO,8BAE/B8hB,YAAa3hB,EAAKH,OAAO,eACzB+hB,cAAe5hB,EAAKH,OAAO,qBAAuBG,EAAKH,OAAO,sBAAmB,GAErF,OAAO,EAAI/C,EAAQc,QAAQwjB,EAAOjS,EAAe0R,gBA0B7BgB,CAAa7hB,GACzBA,EAAK4gB,YAAYQ,OAGrBV,GACAA,EAAiBoB,qBAAqB3J,KAAI,WACtCnY,EAAK4gB,YAAY,CACbmB,oBAAqBrB,EAAiBsB,sBAmBlDvkB,EAAW,CACX8G,eAAgB,WACZ,MAAO,CACH0d,aAAc,CACVzW,SAAS,EACT0W,WAAY,KACZpL,KAAM,eACNqL,WAAY,KACZC,WAAY,KACZC,cAAe,OAI3BC,YAAa,CACTL,aAAc7d,EAAame,wBAE/Bxd,UAAW,CACPC,MAAO,CACHsH,SAAU,CACNqQ,KAAM,WACF,IAAI3c,EAAOnC,KACPsR,EAAiBnP,EAAK4G,cAAc,QACxC5G,EAAKlC,WACLqR,EAAeqT,YAAYrK,KAAI,WAC3B,GAAIhJ,EAAekB,aAAelB,EAAesT,gBAAiB,CAC9DziB,EAAKgd,YAAW,GAChBhd,EAAKma,mBACL,IAAIlV,EAAoBjF,EAAK2O,UAAU2S,QAAQ,qBAC/Crc,GAAqBA,EAAkB4I,SACvC7N,EAAK2O,UAAU+T,iCAMnCJ,YAAa,CACTL,aAAc,CACVtF,KAAM,WACF9e,KAAKC,SAAS2F,MAAM5F,KAAM6F,WAC1B8c,EAAiB3iB,OAErBif,UAAW,WACP,OAAOjf,KAAKC,YAAcD,KAAK+I,cAAc,QAAQ+b,kBAEzDvB,MAAO,SAASwB,GACZ,IAAIC,EAAShlB,KAAKC,SAAS2F,MAAM5F,KAAM6F,WAIvC,YAHI,IAAWkf,GACX/kB,KAAKilB,YAAW,EAAIhmB,EAAQc,QAAQ,GAAIglB,IAErCC,GAEXjC,YAAa,SAASQ,GAClB,GAAIvjB,KAAKklB,YAAa,CAClB,IAAIC,EAAWnlB,KAAKujB,QAChB6B,GAAW,EAAInmB,EAAQc,QAAQ,GAAIolB,EAAU5B,GAC7C8B,GAAe,EAAI5lB,EAAQ6lB,YAAYH,GACvCI,GAAe,EAAI9lB,EAAQ6lB,YAAYF,IACtC,EAAI3lB,EAAQ+lB,cAAcH,EAAcE,MACzC,EAAItmB,EAAQc,QAAQC,KAAK+kB,OAAQxB,GACjCvjB,KAAKylB,aAGT,EAAIxmB,EAAQc,QAAQC,KAAK+kB,OAAQxB,IAGzC0B,WAAY,SAAS1B,GACjB,IACIG,EAAmBH,EAAMG,iBACzBgC,EAAanC,EAAMmC,WACnBxC,EAAkBK,EAAML,gBACxBC,EAAkBI,EAAMJ,gBACxBN,EALO7iB,KAKiB+I,cAAc,UACtC+S,EANO9b,KAMkB+I,cAAc,WACvCuI,EAPOtR,KAOe+I,cAAc,QACpC4Q,EARO3Z,KAQcgC,OAAO,kBAC5B2jB,EAAyB,YAAchM,GAAiB,aAAeA,EACvEiM,GAAuB,IAVhB5lB,KAU8BgC,OAAO,kBAVrChC,KAU8DgC,OAAO,8BAVrEhC,KAWN8Q,UAAU+U,cACX/J,GACAA,EAAkBgK,aAAavC,EAAM5R,SAErCkR,GACAA,EAAiBsB,cAAcZ,EAAMW,qBAErChB,GAlBOljB,KAmBFgC,OAAO,kBAAmBkhB,GAnBxBljB,KAqBNgC,OAAO,kBAAmBmhB,GAC3BO,GAAoB,SAtBb1jB,KAsB6BgC,OAAO,4BAtBpChC,KAuBFgC,OAAO,SAAS0hB,iBAAmBA,GAvBjC1jB,KAyBFgC,OAAO,2BAAwB,IAAWuhB,EAAMQ,eAzB9C/jB,KA0BFgC,OAAO,gBAAiBuhB,EAAMQ,eA1B5B/jB,KA4BN8Q,UAAUiV,YACfL,GA7BW1lB,KA6BQgC,OAAO,mBAAoB0jB,GA7BnC1lB,KA8BNgC,OAAO,cA7GX,SAASG,EAAMohB,GAChC,IAAIyC,EAAuB7jB,EAAK4G,cAAc,cAC1C+S,EAAoB3Z,EAAK4G,cAAc,WACvCkd,EAAiB1C,EAAM5R,cAAW,IAAW4R,EAAMO,YACvD,OAAIkC,EACIC,EACO1C,EAAMO,aAAekC,EAAqBE,0BAA0B3C,EAAM5R,SAE1ExP,EAAKkhB,qBAAuB2C,EAAqBE,0BAA0BpK,EAAkBrJ,cATrF,KA8GoB0T,CA9BhBnmB,KA8BqCujB,IA9BrCvjB,KA+BNgC,OAAO,6BAA6BuhB,EAAMK,aAAcL,EAAMK,YAAYC,eA/BpE7jB,KAgCNgC,OAAO,kBAAqB2jB,IAA0BC,KAAyB,EAAIpmB,EAAM4J,WAAWma,EAAMtS,UAhCpGjR,KAgCsIojB,iBAAtBG,EAAMtS,UAhCtHjR,KAiCNgC,OAAO,mBAAoBuhB,EAAMvS,WAAa,GACnDM,GAAkBA,EAAe8U,UAGzCzU,QAAS,CACL9I,kBAAmB,WACf,IAAIgT,EAAiB7b,KAAKC,SAAS2F,MAAM5F,KAAM6F,WAC3CwgB,EAAyBrmB,KAAK+I,cAAc,gBAChD,OAAOsd,EAAuBnB,cAAgBmB,EAAuB7T,WAAa,GAAKqJ,IAG/FxM,KAAM,CACFiX,cAAe,WACX,OAAOtmB,KAAKC,WAAWU,OAAO,CAAC,iBAEnC4lB,mBAAoB,WAChB,IAAIhf,EAAQvH,KACRC,EAAWD,KAAKC,SAChBomB,EAAyBrmB,KAAK+I,cAAc,gBAChD,GAAIsd,EAAuBnB,cAAgBmB,EAAuB7T,WAAY,CAC1E0O,aAAalhB,KAAKwmB,wBAClB,IAAIC,EAAW,IAAI/D,EAAUgE,SAc7B,OAbA1mB,KAAKwmB,uBAAyB/c,YAAW,WACrC4c,EAAuBM,OAAOC,QAAO,WACjCrf,EAAMif,uBAAyB,QAChCK,MAAK,WACJ5mB,EAASsI,KAAKhB,GACdA,EAAMod,YAAYlR,OAClBgT,EAASK,aACVC,MAAK,SAASC,GACbzf,EAAMod,YAAYlR,OAClBlM,EAAM0f,iBAAiBD,GAAS,iBAChCP,EAASS,eAGVT,EAASU,UAEXnnB,KAAK8kB,kBACN7kB,EAASsI,KAAKvI,OAI1Bif,UAAW,WACP,IACIoH,EADOrmB,KACuB+I,cAAc,gBAChD,OAAO/I,KAAKC,YAAcomB,EAAuBpH,aAErD6F,eAAgB,WACZ,OAAO,EAAItlB,EAAM4J,WAAWpJ,KAAKwmB,yBAErChU,SAAU,WACN,OAAOxS,KAAKC,aAAeD,KAAK8kB,kBAEpCrT,QAAS,WACLyP,aAAalhB,KAAKwmB,wBAClBxmB,KAAKC,aAGbmnB,UAAW,CACPC,sBAAuB,SAASrmB,GAC5B,IAAIqlB,EAAyBrmB,KAAK+I,cAAc,gBAC5Cue,EAAsBtnB,KAAKgC,OAAO,sBAClCqkB,EAAuBpH,aAAeqI,GAG1CtnB,KAAKC,SAAS2F,MAAM5F,KAAM6F,gBAM9ClH,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCChPzBD,EAAQ+lB,4BAAyB,EACjC,IAAIre,EAAiBvH,EAAuBC,EAAQ,KAChD8N,EAAU9N,EAAQ,IAClBwH,EAAezH,EAAuBC,EAAQ,MAC9CM,EAAMP,EAAuBC,EAAQ,MACrCoO,EAAWrO,EAAuBC,EAAQ,MAC1CwoB,EAAWxoB,EAAQ,MACnBE,EAAUF,EAAQ,IAClBG,EAAYH,EAAQ,IACpBS,EAAQT,EAAQ,IAChB2jB,EAAY3jB,EAAQ,IAExB,SAASD,EAAuBY,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAAI8nB,EAAa,+DACbC,EAAa,SAASA,EAAWlE,GAC5BA,IAEJ,EAAIrkB,EAAUqE,MAAMggB,GAAO,SAASrf,EAAKW,GACtC,IAAI,EAAIrF,EAAMkoB,eAAe7iB,IAAU8iB,MAAMC,QAAQ/iB,GACjD4iB,EAAW5iB,QAEX,GAAI,kBAAoBA,EAAO,CAC3B,IAAIgjB,EAAOL,EAAWM,KAAKjjB,GACvBgjB,IACAtE,EAAMrf,GAAO,IAAI6jB,KAAKA,KAAKC,KAAKH,EAAK,IAAKA,EAAK,GAAK,GAAIA,EAAK,IAAKA,EAAK,IAAKA,EAAK,IAAKA,EAAK,WAM3GnD,EAAyBne,EAAa3H,QAAQqpB,eAAepoB,QAAQ,WACrE,IAAIqoB,EAAa,SAASlnB,GACtB,IAAImnB,EAAU,mBAAqBnnB,EAAQiY,MAAO,EAAIsO,EAASa,mBAAoB,EAAIvb,EAAQ6N,aAAa2N,aAC5G,IAAKF,EACD,KAAI,WAAY,EAAItb,EAAQ6N,aAAa9D,SAAS0R,UAAYnb,EAASvO,QAAQ2pB,KACrE,IAAIC,MAAM,SAEV,IAAIA,MAAM,SAGxB,OAAOL,GAEPM,EAAsB,SAASznB,GAC/B,OAAO,EAAIxB,EAAM4J,WAAWpI,EAAQqjB,YAAcrjB,EAAQqjB,WAAa,WAE3E,MAAO,CACHqE,WAAY,WACR,IAAI1nB,EAAUhB,KAAKgC,OAAO,gBAC1B,GAAI,WAAahB,EAAQiY,KACrB,OAAOjY,EAAQsjB,YAActjB,EAAQsjB,aAEzC,IACI,OAAOqE,KAAKC,MAAMV,EAAWlnB,GAAS6nB,QAAQJ,EAAoBznB,KACpE,MAAO6G,GACLxI,EAAIT,QAAQkqB,IAAIjhB,EAAEoZ,WAG1B8H,WAAY,SAASxF,GACjB,IAAIviB,EAAUhB,KAAKgC,OAAO,gBAC1B,GAAI,WAAahB,EAAQiY,KAIzB,IACIiP,EAAWlnB,GAASgoB,QAAQP,EAAoBznB,GAAU2nB,KAAKM,UAAU1F,IAC3E,MAAO1b,GACLxI,EAAIT,QAAQkqB,IAAIjhB,EAAEoZ,cANlBjgB,EAAQujB,YAAcvjB,EAAQujB,WAAWhB,IASjDjE,cAAe,WACX,MAAO,CAAC,UAEZ4F,UAAW,WACP,OAAOllB,KAAKgC,OAAO,yBAEvB8c,KAAM,WACF,IAAI3c,EAAOnC,KAUX,OATAmC,EAAK4iB,OAAS,GACd5iB,EAAK+mB,WAAY,EACjB/mB,EAAKgnB,YAAa,EAClBhnB,EAAKinB,qBAAuB,gBACpB,IAAWjnB,EAAKknB,kBAChBlnB,EAAK4mB,WAAW5mB,EAAKohB,UAG7Bld,EAAezH,QAAQ8I,IAAG,EAAImF,EAAQ6N,aAAc,SAAUvY,EAAKinB,sBAC5DjnB,GAEXqQ,SAAU,WACN,OAAOxS,KAAKkpB,WAEhBjK,UAAW,WACP,OAAOjf,KAAKmpB,YAEhBxC,KAAM,WACF,IAAIpf,EAAQvH,KACZA,KAAKmpB,YAAa,EAClB,IAAIG,GAAa,EAAI5G,EAAU6G,aAAavpB,KAAK0oB,cAOjD,OANAY,EAAW1C,QAAO,WACdrf,EAAM2hB,WAAY,EAClB3hB,EAAM4hB,YAAa,KACpBtC,MAAK,SAAStD,GACbhc,EAAMgc,MAAMA,MAET+F,GAEX/F,MAAO,SAASwB,GACZ,IAAI5iB,EAAOnC,KACX,IAAK6F,UAAUtB,OACX,OAAO,EAAItF,EAAQc,SAAQ,EAAM,GAAIoC,EAAK4iB,QAE1C5iB,EAAK4iB,QAAS,EAAI9lB,EAAQc,QAAQ,GAAIglB,GACtC0C,EAAWtlB,EAAK4iB,SAGxBU,KAAM,WACF,IAAItjB,EAAOnC,KACXkhB,aAAa/e,EAAKknB,kBAClBlnB,EAAKknB,iBAAmB5f,YAAW,WAC/BtH,EAAK4mB,WAAW5mB,EAAKohB,SACrBphB,EAAKknB,sBAAmB,IACzBlnB,EAAKH,OAAO,gCAEnBmI,cAAe,SAASlE,GAEpB,OAAQA,EAAKC,MACT,IAAK,eAFElG,KAGMklB,cAHNllB,KAG2Bif,aAH3Bjf,KAIM2mB,OAET1gB,EAAKoE,SAAU,EACf,MACJ,QAROrK,KASEC,SAASgG,KAG1BwL,QAAS,WACLyP,aAAalhB,KAAKqpB,kBAClBhjB,EAAezH,QAAQ4qB,KAAI,EAAI3c,EAAQ6N,aAAc,SAAU1a,KAAKopB,wBA5GP,IAgHzEzqB,EAAQ+lB,uBAAyBA,G,kCClJjC/lB,EAAQC,aAAU,EAClB,IAAIC,EAAYC,EAAuBC,EAAQ,KAC3CsH,EAAiBvH,EAAuBC,EAAQ,KAChD0qB,EAAe3qB,EAAuBC,EAAQ,MAC9CwH,EAAezH,EAAuBC,EAAQ,MAC9CS,EAAQT,EAAQ,IAChBG,EAAYH,EAAQ,IACpBE,EAAUF,EAAQ,IAClB2qB,EAAW3qB,EAAQ,KACnBuH,EAASvH,EAAQ,KACjByH,EAAW1H,EAAuBC,EAAQ,KAC1C0H,EAAS1H,EAAQ,IACjB4qB,EAAQ7qB,EAAuBC,EAAQ,MACvC6qB,EAAa9qB,EAAuBC,EAAQ,OAC5C2jB,EAAY3jB,EAAQ,IAExB,SAASD,EAAuBY,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAQImqB,EAAuB,+BAEvBC,EAAiB,SAAS3nB,EAAM4nB,GAChC,IAAInH,EAAsBzgB,EAAK4G,cAAc,aACzC0F,EAAWtM,EAAKshB,QAAQ,YACxBjc,GAAO,EAAI3I,EAAUD,SAASmrB,EAAQ5gB,QAAQsR,QAAQ,gBACtDrS,EAAWqG,EAASub,YAAYxiB,GAChCY,EAAW,IAGX,cAAgBjG,EAAKH,OAAO6nB,GACxBjH,EAAoBqH,4BACpBrH,EAAoBsH,8BAEpBtH,EAAoBuH,gCAGpB,YAAchoB,EAAKH,OAAO6nB,IAC1BjH,EAAoBuH,+BAEpB,WAAahoB,EAAKH,OAAO6nB,IACzBjH,EAAoBwH,oBAAoBhiB,EAAU,CAC9CiiB,SAAS,OAuVrBzqB,EAAW,CACX8G,eAAgB,WACZ,MAAO,CACH0gB,UAAW,CACPxgB,KAAM,OACN0jB,mBAAoB,UACpBC,gBAAgB,EAChBC,cAAe,WACfC,yBAA0B,KAC1BhE,UAAU,GAEdtD,gBAAiB,GACjBD,gBAAiB,KAGzBuB,YAAa,CACT2C,UAlWkBqC,EAAa7qB,QAAQ8rB,WAAW7qB,QAAQ,WAC9D,IAqBI8qB,EAAwB,SAAS1e,EAAWjL,GAC5C,IAAI8P,EAAY9P,EAAQ8P,UACpBrC,EAAWqC,EAAU2S,QAAQ,YAC7B3S,EAAU9O,OAAO,iBAAmB8O,EAAU9O,OAAO,wBACrDhB,EAAQ6D,MAAQiM,EAAU8Z,cAAc5pB,EAAQsG,IAAIpD,MAExDuK,EAASoc,+BAA8B,EAAIhsB,EAAUD,SAASqN,GAAYjL,IAE1E8pB,EAA0B,SAAS7e,EAAWjL,GAC9C,IAAI2H,EAAS3H,EAAQ2H,OACjBD,GAAe,EAAI7J,EAAUD,SAASqN,GACtC7E,EAAoBpG,EAAQ8P,UAAU2S,QAAQ,qBAClD/a,EAAanD,SArEG,kBAsEhB6B,EAAkB2jB,yBAAyBriB,EAAcC,GACzDvB,EAAkB4jB,mCAAmCtiB,IAEzD,MAAO,CACHoW,KAAM,WACF9e,KAAKkR,gBAAkBlR,KAAK+I,cAAc,QAC1C/I,KAAKirB,eAAiBjrB,KAAKgC,OAnElB,kBAoEThC,KAAKkrB,4BAA6B,EAClClrB,KAAK4pB,WAAa5pB,KAAKmrB,mBACvBnrB,KAAKorB,sBACLprB,KAAK4H,aAAa,qBAAsB,CACpCyjB,kBAAmB,CAAC,WAAY,eAGxCC,oBAAqB,WACjB,IACIha,EADOtR,KACekR,gBACtBqa,EAFOvrB,KAEiBgC,OAAO,cAAgB,GACnD,MAAO,CACHwpB,aAJOxrB,KAIYgC,OAAO,mBAC1B4E,KALO5G,KAKIirB,eACXxE,SAAU8E,EAAiB9E,SAC3BgE,yBAA0Bc,EAAiBd,yBAC3CtH,gBAROnjB,KAQegC,OAAO,mBAC7BypB,qBAAqB,EACrBvnB,IAAK,WACD,OAAOoN,GAAkBA,EAAepN,OAE5CwnB,MAAO,SAASppB,GACZ,OAAOgP,GAAkBA,EAAeoa,MAAMppB,IAElDqpB,WAAY,WACR,OAAOra,EAAesa,cAAgBta,EAAesa,aAAaC,UAEtElF,KAAM,SAAS3lB,GACX,OAAOsQ,EAAesa,cAAgBta,EAAesa,aAAajF,KAAK3lB,KAAa,IAAI0hB,EAAUgE,UAAUI,QAAQ,KAExHgF,WAAY,WACR,OAAOxa,EAAevP,OAAM,IAEhCgqB,eAAgB,SAASzpB,GACrB,OAAOA,EAAK0pB,UAEhBC,iBAAkB,SAAS3pB,GACvB,OAAOA,GAAQ,SAAWA,EAAKmF,UAAYnF,EAAKkP,UAEpD0a,YAAa,SAAS5pB,GAClB,OAAOA,IAASA,EAAK6pB,SAAW7pB,EAAK+M,MAAQ/M,IAEjDkf,OAAQ,WACJ,OAAOlQ,EAAe8a,mBAAkB,IAE5CpP,WAAY,WACR,OAAO1L,EAAe0L,cAE1BqP,mBAxCOrsB,KAwCkBssB,qBAAqBrpB,KAAKjD,QAG3DorB,oBAAqB,WACjB,IAAItP,EAAoB9b,KAAK+I,cAAc,WACvCwjB,EAAwBvsB,KAAKusB,wBACjCzQ,EAAkB0Q,iBAAiB,CAC/BvT,KAAM,YACN3P,QAAS,SACT8G,QAASmc,EACTE,cAAe,EACfC,SAAU,UACV9hB,UAAW,SACXgP,SArIW,oBAsIXhM,MAAO,OACPkC,aAAc6a,EACdgC,mBAAoB7B,IAExBhP,EAAkBpQ,aAAa,iBAAkB,UAAW6gB,IAEhEpB,iBAAkB,WACd,IAAInqB,EAAUhB,KAAKsrB,sBACnB,OAAO,IAAI1B,EAAWhrB,QAAQoC,IAElCqmB,sBAAuB,SAASrmB,GACxBA,GACAhB,KAAK4Y,cAAc,qBAAsB5X,GAE7C,IAAI4rB,EAAW5sB,KAAKgC,OAAO,sBAAwB,CAC/CmhB,gBAAiBnjB,KAAKgC,OAAO,oBAC7B,CACAkhB,gBAAiBljB,KAAKgC,OAAO,oBAEjChC,KAAKijB,iBAAiBxP,KAAKmZ,IAE/BC,uBAAwB,SAAS7rB,GAC7B,IAAI8rB,EAAiB9rB,EAAQ8rB,eACzB3J,EAAkBniB,EAAQmiB,gBAC1B4J,EAAmB/rB,EAAQ+rB,iBAC3BC,EAAkBhsB,EAAQgsB,gBAC1B,YAAchtB,KAAKgC,OAAO6nB,MACtBiD,EAAiB3J,GAlIL,SAAShhB,EAAMghB,GACvC,IAAI8J,EAAW,EACXxV,EAAQtV,EAAK+O,gBAAgBuG,QAC7BvT,EAAMuT,GAASA,EAAMvT,MACrBgpB,EAAevF,MAAMC,QAAQ1jB,GACjC,IAAKif,EAAgB5e,OACjB,OAAO,EAEX,GAAI2oB,GAAgBvF,MAAMC,QAAQzE,EAAgB,KAAO,QAAUA,EAAgB,GAAI,CACnF,IAAK,IAAIxQ,EAAI,EAAGA,EAAIwQ,EAAgB5e,OAAQoO,IACxC,GAAIgV,MAAMC,QAAQzE,EAAgBxQ,IAAK,CACnC,GAAIwQ,EAAgBxQ,GAAG,KAAOzO,EAAI+oB,IAAa,MAAQ9J,EAAgBxQ,GAAG,GACtE,OAAO,EAEXsa,IAGR,OAAO,EAEX,OAAO/oB,IAAQif,EAAgB,GA+GiBgK,CAAsBntB,KAAMmjB,GAAmB4J,EAAiBxoB,OAAS,GAC7GvE,KAAKmqB,gCAED2C,EAAiB3J,IAAoBA,EAAgB5e,OAAS,IAAMwoB,EAAiBxoB,QAAUyoB,EAAgBzoB,SAC/GvE,KAAKkqB,gCAKrBoC,qBAAsB,SAASrmB,GAC3B,IACImnB,EACAN,EAFO9sB,KAEegC,OAAO,sBAC7BmhB,EAHOnjB,KAGgB4pB,WAAWzG,kBAClC7R,EAJOtR,KAIekR,gBACtBnP,EAAQuP,EAAevP,QAC3B,GAAKA,EAAL,CAGA,IAAIkoB,EATOjqB,KAS0BiqB,4BACjCoD,EAVOrtB,KAUmBstB,sBAAsBvrB,GAVzC/B,KAWN6sB,uBAAuB,CACxBE,iBAAkB9mB,EAAK8mB,iBACvBC,gBAAiB/mB,EAAK+mB,gBACtB7J,gBAAiBA,EACjB2J,eAAgBA,KAEhBO,EAAmB9oB,QAAU0lB,IAjBtBjqB,KAiByDiqB,8BAChE3Y,EAAeic,YAAY,CACvB1Y,WAAY,kBACZ2Y,YAAaH,IAGjBP,GAvBO9sB,KAwBFgC,OAAO,kBAAmBmhB,GAC/BiK,EAA0B,KAEtBnnB,EAAKwnB,cAAclpB,QAAU0B,EAAK+mB,gBAAgBzoB,UA3B/CvE,KA4BE0tB,8BAA+B,EA5BjC1tB,KA6BEgC,OAAO,kBAAmBiE,EAAK8mB,iBAAiBzkB,MAAM,IA7BxDtI,KA8BE0tB,8BAA+B,EACpCN,EAA0B,CACtBO,iBAAkB1nB,EAAK2nB,cAActlB,MAAM,GAC3C4a,gBAAiBjd,EAAK8mB,iBAAiBzkB,MAAM,GAC7CulB,uBAAwB5nB,EAAKwnB,cAAcnlB,MAAM,GACjDwlB,yBAA0B7nB,EAAK+mB,gBAAgB1kB,MAAM,KAnCtDtI,KAuCNqnB,sBAAsB+F,KAE/BE,sBAAuB,SAASvrB,GAI5B,IAHA,IACIyrB,EAAc,GACdlG,EAAsBtnB,KAAKgC,OAAO,sBAC7B2Q,EAAI,EAAGpO,EAASxC,EAAMwC,OAAQoO,EAAIpO,EAAQoO,IAAK,CACpD,IAAIrL,EAAMvF,EAAM4Q,GACZoZ,EALG/rB,KAKmB4qB,cAActD,EAAsBhgB,EAAI+H,KAAO/H,EAAIpD,KALtElE,KAME4pB,WAAWmE,WAAWzmB,IAAQA,EAAI0mB,aAAejC,GACtDyB,EAAYnpB,KAAKsO,GAGzB,OAAO6a,GAEXlH,cAAe,WACX,MAAO,CAAC,qBAEZnc,cAAe,SAASlE,GACpB,IAAIsB,EAAQvH,KAEZ,OADAA,KAAKC,SAASgG,GACNA,EAAKC,MACT,IAAK,YACD,IAAI+nB,EAAmBjuB,KAAKirB,eAE5B,GADAjrB,KAAK8e,OACD,iCAAmC7Y,EAAKuc,SAAU,CAClD,IAAI0L,EAAgBluB,KAAKirB,eACrB/H,EAAkBljB,KAAKgC,OAAO,mBAC9BisB,IAAqBC,IACjB,WAAaA,EACThL,EAAgB3e,OAAS,IACzB2e,EAAkB,CAACA,EAAgB,KAGnC,aAAegL,IACfhL,EAAkB,KAI9BljB,KAAKmuB,WAAWjL,GAAiB0D,QAAO,WACpCrf,EAAM8f,2BAGdrnB,KAAK+I,cAAc,WAAWqlB,gBAC9BnoB,EAAKoE,SAAU,EACf,MACJ,IAAK,kBACDrK,KAAK4pB,WAAWzG,gBAAgBld,EAAKpB,OACrCoB,EAAKoE,SAAU,EACf,MACJ,IAAK,kBACD,IAAIxF,EAAQoB,EAAKpB,OAAS,IACtB8iB,MAAMC,QAAQ/iB,IAAW7E,KAAK0tB,+BAAiC1tB,KAAK8Q,UAAU8T,iBAAoB/f,EAAMN,QACxGvE,KAAKmuB,WAAWtpB,GAEpBoB,EAAKoE,SAAU,IAG3BiV,cAAe,WACX,MAAO,CAAC,aAAc,eAAgB,sBAAuB,qBAAsB,sBAAuB,iBAAkB,YAAa,cAAe,+BAAgC,8BAA+B,kBAE3NsL,cAAe,SAASvZ,GACpB,OAAOrR,KAAK4pB,WAAWmC,eAAe1a,IAE1Ckb,sBAAuB,WACnB,MAAO,aAAevsB,KAAKgC,OA/QlB,oBA+Q6C,WAAahC,KAAKgC,OAAO6nB,IAAyB,YAAc7pB,KAAKgC,OAAO6nB,IAAyB7pB,KAAKkrB,6BAEpKmD,oBAAqB,WACjB,MAAO,SAAWruB,KAAKgC,OAAO,4BAElCssB,YAAa,WACT,OAAOtuB,KAAK4pB,WAAW2E,kBAAkBvuB,KAAKquB,wBAElDG,UAAW,WAIP,MAHI,YAAcxuB,KAAKgC,OAAO6nB,IAC1B7pB,KAAKmqB,+BAEFnqB,KAAK4pB,WAAW4E,UAAUxuB,KAAKquB,wBAE1CI,YAAa,WACT,OAAOzuB,KAAK4pB,WAAW6E,YAAYzuB,KAAKquB,wBAE5CK,eAAgB,WACZ,OAAO1uB,KAAK+sB,iBAAiB,KAEjC4B,QAAS,WACL,IAAIzL,EAAkBljB,KAAKgC,OAAO,oBAAsB,GACxD,OAAKhC,KAAKgC,OAAO,uBAAyBkhB,EAAgB3e,OAC/CvE,KAAK+sB,iBAAiB7J,IAEzB,IAAIR,EAAUgE,UAAUI,UAAUK,WAE9C4F,iBAAkB,SAASloB,EAAO+pB,EAAUC,EAAYP,GACpD,OAAOtuB,KAAK4pB,WAAWmD,iBAAiBloB,EAAO+pB,EAAUC,EAAYP,IAEzEQ,mBAAoB,WAChB,OAAO9uB,KAAK4pB,WAAWmF,uBAE3BZ,WAAY,SAASa,EAAMJ,GACvB,OAAO5uB,KAAK+sB,iBAAiBiC,EAAMJ,IAEvCK,aAAc,SAASD,GACnB,OAAOhvB,KAAK+sB,iBAAiBiC,GAAM,GAAM,IAE7CE,oBAAqB,SAASC,GAC1B,IAAIptB,EAAQ/B,KAAKkR,gBAAgBnP,QAC7BitB,EAAO,GASX,OARKrH,MAAMC,QAAQuH,KACfA,EAAUxH,MAAMyH,UAAU9mB,MAAMC,KAAK1C,UAAW,KACnD,EAAI3G,EAAUqE,MAAM4rB,GAAS,WAC1B,IAAI7sB,EAAOP,EAAM/B,MACbsC,GAAQ,SAAWA,EAAKmF,SACxBunB,EAAK3qB,KAAK/B,EAAK4B,QAGhBlE,KAAKmuB,WAAWa,IAE3BK,oBAAqB,WACjB,OAAOrvB,KAAK4pB,WAAW0F,oBAE3BlF,oBAAqB,SAASzI,EAAWqN,GAKrC,OAJAA,EAAOA,GAAQ,GACXhvB,KAAKiqB,8BACL+E,EAAK3E,SAAU,GAEZrqB,KAAK4pB,WAAWQ,oBAAoBpqB,KAAKkR,gBAAgBqe,mBAAqB5N,EAAWqN,IAEpGQ,iBAAkB,SAAS7N,GAEvB,KAAI,EAAIniB,EAAM4J,WAAWuY,GAGrB,OAJO3hB,KAIK4pB,WAAW6F,kBAJhBzvB,KAEF4pB,WAAW6F,kBAAoB9N,GAK5CsI,0BAA2B,WACvB,MAAO,aAAejqB,KAAKgC,OAtVlB,oBAsV6C,WAAahC,KAAKgC,OAAO6nB,IAAyB7pB,KAAKkrB,6BAEjHf,6BAA8B,WAE1B,MAAI,aADOnqB,KACagC,OA1Vf,oBAyVEhC,KAC6CiqB,8BAD7CjqB,KAEFkrB,4BAA6B,EAF3BlrB,KAGForB,uBACE,IAIflB,4BAA6B,WAEzB,QADWlqB,KACFkrB,6BADElrB,KAEFkrB,4BAA6B,EAF3BlrB,KAGForB,uBACE,KA5U2C,KAoW9DlkB,UAAW,CACPud,YAAa,CACTpV,KAAM,CACFyP,KAAM,WACF,IAAI8D,EAAsB5iB,KAAK+I,cAAc,aACzC+jB,EAAiB9sB,KAAKgC,OAAO,sBACjChC,KAAKC,SAAS2F,MAAM5F,KAAM6F,WACtBinB,GACAlK,EAAoBiK,uBAAuB,CACvCC,gBAAgB,EAChB3J,gBAAiBnjB,KAAKgC,OAAO,sBAIzC0tB,gBAAiB,WACb,IAAIvtB,EAAOnC,KACX,OAAOmC,EAAKlC,WAAW4mB,MAAK,WACxB1kB,EAAK4G,cAAc,aAAa4lB,cAGxCgB,iBAAkB,SAASrtB,EAAMtB,GAC7B,IAAImB,EAAOnC,KACP4iB,EAAsBzgB,EAAK4G,cAAc,aACzC6mB,EAAkBhN,EAAoB2J,wBACtCjF,EAAsBtmB,EAAQsmB,yBAAsB,IAAWtmB,EAAQsmB,oBAAsBtnB,KAAKgC,OAAO,sBAAwBhB,EAAQsmB,oBACzIuI,EAAW7vB,KAAKC,SAAS2F,MAAM5F,KAAM6F,WAEzC,GADAgqB,EAAS7B,WAAapL,EAAoBgI,cAActD,EAAsBuI,EAASxgB,KAAOwgB,EAAS3rB,KACnG0rB,GAAmBC,EAAStW,OAC5B,IAAK,IAAI5G,EAAI,EAAGA,EAAI3R,EAAQ6a,eAAetX,OAAQoO,IAC/C,GAAI,WAAa3R,EAAQ6a,eAAelJ,GAAGrJ,QAAS,CAChDumB,EAAStW,OAAO5G,GAAKkd,EAAS7B,WAC9B,MAIZ,OAAO6B,GAEXlB,QAAS,SAAS3tB,GACd,IAAImB,EAAOnC,KACP8vB,EAAI,IAAIpN,EAAUgE,SAQtB,OAPA1mB,KAAKC,SAAS2F,MAAM5F,KAAM6F,WAAWghB,MAAK,YACjC7lB,GAAWA,EAAQomB,UACpBjlB,EAAK4G,cAAc,aAAa4lB,UAAU9H,KAAKiJ,EAAEhJ,SAASC,KAAK+I,EAAE5I,QAEjE4I,EAAEhJ,aAEPC,KAAK+I,EAAE5I,QACH4I,EAAE3I,WAEb9H,mBAAoB,SAASxX,GACzB7H,KAAKC,SAAS2F,MAAM5F,KAAM6F,WACpBgC,GAAK,YAAcA,EAAEgN,YAAgB7U,KAAK+vB,qBAC5C/vB,KAAK+I,cAAc,aAAaymB,kBAAkB,IAG1DQ,aAAc,SAASrb,GACnB,IAAI3J,EAAShL,KACb,IAAI2U,GAAU,oBAAsBA,EAAOE,WAU3C,OAAO7U,KAAKC,SAAS2F,MAAM5F,KAAM6F,WAT7B8O,EAAO5S,MAAMkuB,SAAQ,SAAS3tB,EAAMoD,GAChC,IAAIwqB,EAAcllB,EAAOmlB,OAAOzqB,GAC5BwqB,IACAA,EAAYlC,WAAa1rB,EAAK0rB,WAC9BkC,EAAY3W,OAASjX,EAAKiX,YAO1C6W,eAAgB,WACZ,IAAIC,EAAUrwB,KAAKswB,SACfC,EAAoBF,EAAQ9rB,OAAS,GAAK8rB,EAAQG,OAAM,SAAS7b,GACjE,MAAO,oBAAsBA,EAAOE,cAExC,GAAI0b,EAAmB,CACnB,IAAI/C,EAAc6C,EAAQI,KAAI,SAAS9b,GACnC,OAAOA,EAAO6Y,aAAe,MAC9BxV,QAAO,SAAS0Y,EAAGC,GAClB,OAAOD,EAAE/vB,OAAOgwB,MAEpB3wB,KAAKswB,SAAW,CAAC,CACbzb,WAAY,kBACZ2Y,YAAaA,IAGrBxtB,KAAKC,SAAS2F,MAAM5F,KAAM6F,YAE9BxB,KAAM,SAASgsB,GACXrwB,KAAKC,SAAS2F,MAAM5F,KAAM6F,WAC1B,IAAI+qB,EAAcP,EAAQ7O,QAAO,SAAS7M,GACtC,MAAO,WAAaA,EAAOsE,QAC5BwX,KAAI,SAAS9b,GACZ,OAAOA,EAAOzQ,OAElB0sB,EAAYrsB,QAAUvE,KAAK+I,cAAc,aAAakmB,aAAa2B,KAG3EC,YAAa,CACTC,qBAAsB,SAAS9vB,GAC3B,IAAI+oB,EAAU/oB,EAAQ+G,MAClBgiB,EAAQgH,eAAiB,WAAahH,EAAQgH,cAAc9X,MAAQjY,EAAQe,OAASf,EAAQe,MAAMwC,OAAS,GAGhHulB,EAAe9pB,KAAM+pB,MAIjC5iB,MAAO,CACHC,kBAAmB,CACf0X,KAAM,WACS9e,KACNC,WADMD,KAEN+I,cAAc,aAAaka,iBAAiB3I,IAFtCta,KAE+CgxB,sBAAsB/tB,KAFrEjD,QAIfgxB,sBAAuB,WACnB,IACI9e,EADOlS,KACSmS,UAChB8e,EAAU/e,GAAYA,EAAS5G,KAAK,uBACxC,GAAI4G,GAAY+e,EAAQ1sB,QAAU,aAHvBvE,KAG2CgC,OAAO,kBAAmB,CAC5E,IAAIkvB,EAJGlxB,KAImB+I,cAAc,aAAaulB,cACjD6C,GAAe,IAAUD,EACzBE,EANGpxB,KAMcgC,OAAO,6BANrBhC,KAMyD+I,cAAc,QAAQ8F,UAAYsiB,EAClGF,EAAQI,WAAW,YAAYrvB,OAAO,CAClCoO,QAASghB,EACTvsB,MAAOqsB,MAInB7R,mBAAoB,SAASxX,GACzB7H,KAAKC,SAAS4H,GACTA,GAAK,YAAcA,EAAEgN,YACtB7U,KAAKgxB,yBAGbjG,yBAA0B,SAASvoB,EAAYmG,GAC3C,IAAIxG,EAAOnC,KACP4iB,EAAsBzgB,EAAK4G,cAAc,aACzCuoB,EAAcnvB,EAAK4G,cAAc,QAAQ8F,UACzC0iB,GAAe,EAAI1yB,EAAUD,SAAS,SAASgN,SAASpJ,GAAY+C,SA9gBhE,sBAsiBR,OAvBApD,EAAK2J,QAAQ,QAAStF,EAAS5H,QAAQkI,OAAO,4BAA6BtE,GAC3EL,EAAK4G,cAAc,iBAAiByoB,aAAaD,GAAc,EAAItyB,EAAQc,QAAQ,GAAI4I,EAAQ,CAC3F8oB,WAAY,YACZ/E,SAAU,UACV7nB,MAAO+d,EAAoB0L,cAC3BoD,cAAe,CACXthB,SAAUkhB,IAAgBnvB,EAAKH,OAAO,8BAA+B,IAAU4gB,EAAoB0L,gBAEvGqD,SAAUxvB,EAAKH,OAAO,gCAAkC,EAAIG,EAAKH,OAAO,aAAe,EACvF4vB,SAAU,SAAS/sB,EAAOgD,GACtB,IAAI0iB,EAAiBpoB,EAAKH,OAAO,4BACjC6F,EAAEiJ,UAAU9O,OAAO,UAAWuoB,IAAkB,IAAU1iB,EAAEiJ,UAAU9O,OAAO,UACxE6F,EAAEE,OAAS6a,EAAoB0L,gBAAkBzpB,IAGlDgD,EAAEhD,QAAU0lB,EACZ1iB,EAAEiJ,UAAU9O,OAAO,SAAS,GAE5B6F,EAAEhD,MAAQ+d,EAAoB4L,YAAc5L,EAAoB6L,cAEpE5mB,EAAEE,MAAM8pB,sBAGTN,GAEXvG,mCAAoC,SAAS9Y,GACzC7L,EAAezH,QAAQ8I,GAAGwK,EAAU5L,EAAOJ,KAAMlG,KAAK4H,cAAa,SAASC,GACxE,IAAIE,EAAQF,EAAEE,OACT,EAAIlJ,EAAUD,SAASmJ,EAAMoB,QAAQsR,QAAQ,uBAA6BlW,QAC3E8B,EAAezH,QAAQkzB,SAAQ,EAAIjzB,EAAUD,SAASmJ,EAAMC,eAAewD,SAAS,uBAA8BlF,EAAOJ,MAE7H6B,EAAM8pB,uBAIlBpjB,SAAU,CACNoc,8BAA+B,SAASroB,EAAYxB,GAC5C,SAAWA,EAAQyG,SAAYzG,EAAQsG,IAAIkK,SAM3CjL,EAAa3H,QAAQkQ,aAAatM,IALlCA,EAAW+C,SAxjBX,kBAyjBAvF,KAAK+xB,0BAA0BvvB,GAC/BxC,KAAK8L,QAAQ,QAAStF,EAAS5H,QAAQkI,OAAO,4BAA6BtE,GAC3ExC,KAAKgyB,sBAAsBxvB,EAAYxB,KAK/CgxB,sBAAuB,SAAS/lB,EAAWjL,GACvC,IAAIuwB,GAAe,EAAI1yB,EAAUD,SAAS,SAAS2G,SA9jB3C,sBA8jB2EqG,SAASK,GAc5F,OAbAjM,KAAK+I,cAAc,iBAAiByoB,aAAaD,GAAc,EAAItyB,EAAQc,QAAQ,GAAIiB,EAAQ2H,OAAQ,CACnG8oB,WAAY,UACZ/E,SAAU,UACVuF,OAAQ,KACRptB,MAAO7D,EAAQ6D,MACf+sB,SAAU,SAAS/sB,EAAOgD,GACtB,IAAIqqB,EACA,aAAe,OAASrqB,QAAK,IAAWA,GAAa,QAAUqqB,EAAWrqB,EAAEE,aAAU,IAAWmqB,OAArD,EAAyEA,EAASjZ,OAC9H5S,EAAezH,QAAQkzB,QAAQjqB,EAAEsK,QAAS7L,EAAOJ,KAAM2B,IAG/DP,IAAKtG,EAAQsG,OAEViqB,GAEXQ,0BAA2B,SAAS7f,GAChC7L,EAAezH,QAAQ8I,GAAGwK,EAAU5L,EAAOJ,KAAMlG,KAAK4H,cAAa,SAASC,GACxE,IAAI+a,EAAsB5iB,KAAK+I,cAAc,aACzChB,EAAQF,EAAEE,MACVK,EAAWpI,KAAKgqB,aAAY,EAAInrB,EAAUD,SAASmJ,EAAMC,eAAeyS,QAAQ,YAChFrS,GAAY,IACZwa,EAAoBuH,+BACpBvH,EAAoBwH,oBAAoBhiB,EAAU,CAC9C+pB,MAAOpqB,EAAMwB,YAEb,EAAI1K,EAAUD,SAASmJ,EAAMoB,QAAQsR,QAAQ,uBAA6BlW,QAC1EvE,KAAK+I,cAAc,QAAQwkB,YAAY,CACnC1Y,WAAY,kBACZ2Y,YAAa,CAACplB,WAMlCuH,QAAS,SAASgF,GACd,IAAIxS,EAAOnC,KACPwY,EAAgBrW,EAAKsW,mBACrB,oBAAsB9D,EAAOE,WACzB2D,EAAcjU,OAAS,KACvB,EAAIrF,EAAUqE,MAAMiV,GAAe,SAAS/U,EAAG6Q,IAC3C,EAAIpV,EAAUqE,MAAMoR,EAAO6Y,aAAe,IAAI,SAAS/pB,EAAGiC,GACtD,IAAI8B,EACJ,GAAImN,EAAO5S,MAAM2D,KACb8B,EAAOrF,EAAKgT,iBAAgB,EAAItW,EAAUD,SAAS0V,IAAec,GAAG1P,IAC5DnB,OAAQ,CACb,IAAIypB,EAAarZ,EAAO5S,MAAM2D,GAAOsoB,WACrCxmB,EAAK1B,YA9mBvB,oBA8mBwD,IAAWkoB,GAAqBA,GAAY1iB,KAAK,uBAA6B+lB,WAAW,SAAU,QAASrD,GAClJ7rB,EAAK2J,QAAQ,WAAYkiB,EAAYxmB,UAKrDrF,EAAKiwB,0BAGTjwB,EAAKlC,SAAS0U,IAGtBkG,aAAc,WACV,IAAI1Y,EAAOnC,KACPkuB,EAAgB/rB,EAAKH,OAAO,kBAC5B0U,EAASvU,EAAKlC,SAAS2F,MAAMzD,EAAM0D,WAevC,MAdI,SAAWqoB,IACP,cAAgB/rB,EAAKH,OAAO6nB,IAA0BH,EAAS2I,OAC/DhsB,EAAezH,QAAQ8I,GAAGgP,GAAQ,EAAIjQ,EAAOkB,cAAcgiB,EAAM/qB,QAAQsH,KAAM,sBAAuB,eAAsB/D,EAAKyF,cAAa,SAASC,GACnJiiB,EAAe3nB,EAAK2O,UAAWjJ,EAAEE,OACjCF,EAAEE,MAAMuqB,sBAGhBjsB,EAAezH,QAAQ8I,GAAGgP,EAAQ,wBAAyBvU,EAAKyF,cAAa,SAASC,GAClF,IAAIE,EAAQF,EAAEE,MACVA,EAAMwB,UACNxB,EAAM8pB,sBAIXnb,GAEXrP,WAAY,SAASC,GACjB,IAAIE,EAAOxH,KAAKC,SAASqH,GACzB,GAAIA,EAAK,CACL,IAAI0mB,IAAe1mB,EAAI0mB,WACnBA,GACAxmB,EAAKjC,SAnpBP,gBAqpBFvF,KAAK8L,QAAQ,WAAYkiB,EAAYxmB,GAEzC,OAAOA,GAEXmR,UAAW,SAAS9Q,GAChB,IACIkiB,EAAUliB,EAAEE,MACZwqB,GAAsB,EAAI1zB,EAAUD,SAASmrB,EAAQ5gB,QAAQsR,QAAQ,0BAAgClW,OAF9FvE,KAGDwyB,oBAAmB,EAAI3zB,EAAUD,SAASmrB,EAAQ5gB,WACnDopB,GAAwB,aAJtBvyB,KAI0CgC,OAvpBpD,mBAupB8E,WAJpEhC,KAIsFgC,OAAO6nB,IAJ7F7pB,KAKM+I,cAAc,aAAaqhB,oBAAoBviB,EAAEO,SAAU,CAC5DiiB,SAAS,EAAI5jB,EAAOgsB,qBAAqB1I,GACzCoI,MAAOpI,EAAQxgB,aAEnBwgB,EAAQ8H,iBACRhqB,EAAEwC,SAAU,GAVbrK,KAaFC,SAAS4H,KAGtB2qB,mBAAoB,SAASE,GAEzB,QADsBA,EAAQjY,QAAQ,sBAA4BlW,QAGtEuW,YAAa,SAASnG,GAClB3U,KAAKC,SAAS0U,GACd3U,KAAKoyB,0BAETA,uBAAwB,WACpB,IAAI5Z,EAAgBxY,KAAKyY,mBACrBmK,EAAsB5iB,KAAK+I,cAAc,aACzC4pB,EAAqB/P,EAAoB2J,0BAA4B3J,EAAoBqH,6BAC7F,EAAI/qB,EAAUqE,MAAMiV,GAAe,SAAS/U,EAAG6Q,IAC3C,EAAIzV,EAAUD,SAAS0V,GAAcxO,YArrB/B,8BAqrBoE6sB,WAOlGh0B,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCCttBzBD,EAAQC,aAAU,EAClB,IAAIC,EAAYC,EAAuBC,EAAQ,KAC3CsH,EAAiBvH,EAAuBC,EAAQ,KAChDwH,EAAezH,EAAuBC,EAAQ,MAC9CkO,EAAgBnO,EAAuBC,EAAQ,MAC/C6zB,EAAe7zB,EAAQ,KACvBU,EAAUV,EAAQ,IAClBG,EAAYH,EAAQ,IACpBS,EAAQT,EAAQ,IAChBE,EAAUF,EAAQ,IAClB8zB,EAAa9zB,EAAQ,KACrByH,EAAW1H,EAAuBC,EAAQ,KAC1C+zB,EAAUh0B,EAAuBC,EAAQ,MACzCg0B,EAAWj0B,EAAuBC,EAAQ,MAC1Ci0B,EAAqBl0B,EAAuBC,EAAQ,MACpDk0B,EAAan0B,EAAuBC,EAAQ,MAC5Cm0B,EAAWp0B,EAAuBC,EAAQ,MAC1CM,EAAMP,EAAuBC,EAAQ,MACrC2jB,EAAY3jB,EAAQ,IACpBo0B,EAAkBr0B,EAAuBC,EAAQ,MACjDiO,EAAUjO,EAAQ,KAClBoO,EAAWrO,EAAuBC,EAAQ,MAE9C,SAASD,EAAuBY,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAInB,SAAS0zB,EAAmBrvB,GACxB,OAgCJ,SAA4BA,GACxB,GAAI4jB,MAAMC,QAAQ7jB,GACd,OAAOsvB,EAAkBtvB,GAlCtBuvB,CAAmBvvB,IA0B9B,SAA0BwvB,GACtB,GAAI,qBAAuBC,QAAU,MAAQD,EAAKC,OAAOC,WAAa,MAAQF,EAAK,cAC/E,OAAO5L,MAAM+L,KAAKH,GA5BYI,CAAiB5vB,IAOvD,SAAqC6vB,EAAGC,GACpC,IAAKD,EACD,OAEJ,GAAI,kBAAoBA,EACpB,OAAOP,EAAkBO,EAAGC,GAEhC,IAAIC,EAAIC,OAAO3E,UAAU5e,SAASjI,KAAKqrB,GAAGtrB,MAAM,GAAI,GAChD,WAAawrB,GAAKF,EAAEI,cACpBF,EAAIF,EAAEI,YAAY9tB,MAEtB,GAAI,QAAU4tB,GAAK,QAAUA,EACzB,OAAOnM,MAAM+L,KAAKE,GAEtB,GAAI,cAAgBE,GAAK,2CAA2CG,KAAKH,GACrE,OAAOT,EAAkBO,EAAGC,GAtB2BK,CAA4BnwB,IAG3F,WACI,MAAM,IAAIowB,UAAU,wIAJ2EC,GAsCnG,SAASf,EAAkBtvB,EAAKswB,IACxB,MAAQA,GAAOA,EAAMtwB,EAAIQ,UACzB8vB,EAAMtwB,EAAIQ,QAEd,IAAK,IAAIoO,EAAI,EAAG2hB,EAAO,IAAI3M,MAAM0M,GAAM1hB,EAAI0hB,EAAK1hB,IAC5C2hB,EAAK3hB,GAAK5O,EAAI4O,GAElB,OAAO2hB,EAEX,IAmBIC,EAAmB,CAFD,QAHD,QAOjBC,EACO,QADPA,EAES,UAFTA,EAGS,UAKTC,EAA0B,SAASzP,GACnC,OAAO,EAAIxlB,EAAM4J,WAAW4b,IAFL,WAEgBA,GAEvC0P,EAA6B,SAAS7vB,EAAO6L,GAC7C,YAAO,IAAW7L,QAAS,IAAWA,GAAS6L,IAAeA,EAAWc,UA6dzE5R,EAAW,CACX8G,eAAgB,WACZ,MAAO,CACHiuB,QAAS,CACLC,MAAO,CACHC,wBAAyBruB,EAAS5H,QAAQkI,OAAO,0CAKjE2d,YAAa,CACTqQ,WAtemBvuB,EAAa3H,QAAQ8rB,WAAW7qB,QAChD,CACHif,KAAM,WACF9e,KAAK+0B,mBAAqB/0B,KAAK+I,cAAc,WAC7C/I,KAAK4H,aAAa,mBACb5H,KAAKg1B,mBACNh1B,KAAKg1B,iBAAmB,KAGhCC,gBAAiB,SAAStgB,GACtB,IAAIugB,EAAiBl1B,KAAKm1B,mBAAmB,OAASxgB,QAAU,IAAWA,OAAS,EAASA,EAAOzQ,KACpG,QAASgxB,KAAoBA,EAAeE,WAEhDD,mBAAoB,SAASjxB,EAAKmxB,GAC9B,IAAIH,EAAiBl1B,KAAKg1B,iBAAiBxT,QAAO,SAASnS,GACvD,OAAO,EAAI5P,EAAQ+lB,cAAcnW,EAAKnL,IAAKA,MAC5C,GAQH,OAPKgxB,GAAkBG,IACnBH,EAAiB,CACbhxB,IAAKA,EACLoxB,SAAS,GAEbt1B,KAAKg1B,iBAAiB3wB,KAAK6wB,IAExBA,GAEXK,gBAAiB,SAASL,EAAgBM,GAOtC,OALIA,EACcA,EAAkBC,aAAeD,EAAkBE,YAAc,CAACF,EAAkBE,YAEpFR,EAAeO,aAAe,IAIpDE,eAAgB,SAAST,EAAgBM,GACrC,IAAI/O,EAAW,IAAI/D,EAAUgE,SACzB/R,EAAS3U,KAAK+0B,mBAAmBa,eAAe,OAASV,QAAkB,IAAWA,OAAiB,EAASA,EAAehxB,KAC/HuxB,EAAcz1B,KAAKu1B,gBAAgBL,EAAgBM,GAEnDpa,EAAa,CACbqa,YAAaA,EACbH,QAHUE,EAAoBA,EAAkBF,QAAUJ,EAAeI,QAIzEpxB,IAAKyQ,EAAOzQ,IACZ2xB,QAASlhB,EAAOtF,KAChB8c,QAASnsB,KAAK+0B,mBAAmBe,YAAYnhB,EAAOzQ,KACpDijB,QAAS,KACT4O,UAAW/1B,KAAKg2B,6BAA6BP,IAQjD,OANAz1B,KAAK4Y,cAAc,kBAAmBwC,IACtC,EAAIsH,EAAUuT,OAAM,EAAIvT,EAAU6G,aAAanO,EAAW+L,UAAUP,QAAO,WACvEsO,EAAeI,QAAUla,EAAWka,QACpCJ,EAAea,UAAY3a,EAAW2a,UACtCtP,EAASK,QAAQ1L,MAEdqL,EAASU,WAEpB6O,6BAA8B,SAASP,GACnC,IAAIS,EAAsB,GAS1B,OARA,EAAIh3B,EAAUqE,MAAMkyB,GAAa,SAAShyB,EAAGiyB,GACzC,IAAI/sB,EAAS+sB,EAAW/sB,OACpBwtB,EAAsBxtB,QAAU,IAAWA,EAAOU,aAAeV,EAAOkH,gBACxEumB,EAAkBztB,GAAUA,EAAOyH,QAClCslB,EAAWW,UAAUnkB,WAAWlP,SAASuB,QAAY6xB,IAAmBD,GACzED,EAAoB7xB,KAAKqxB,EAAWzU,YAGrCiV,EAAoBI,KAAK,OAEpCC,SAAU,SAASC,GACf,IAAIjvB,EAAQvH,KACRs1B,GAAU,EACVxsB,EAAoB9I,KAAK+0B,mBACzBtO,EAAW,IAAI/D,EAAUgE,SACzB+P,EAAe,GACfC,EAAW5tB,EAAkB6tB,cAEjC,GADAH,EAASA,GAlGD,QAkGWE,EACf12B,KAAK42B,wBACL,OAAOnQ,EAASK,SAAQ,GAAOK,UAGnC,GADAnnB,KAAK42B,yBAA0B,EAC3BJ,EAAQ,CACR1tB,EAAkB+tB,YAAYpQ,GAC9B,IAAI4J,EAAUvnB,EAAkBguB,cAChC,EAAI53B,EAAUqE,MAAM8sB,GAAS,SAAS3qB,EAAOqxB,GACzC,IAAI9d,EAAO8d,EAAK9d,KACZ/U,EAAM6yB,EAAK7yB,IACf,GAAI,WAAa+U,EAAM,CACnB,IAAIic,EAAiB3tB,EAAM4tB,mBAAmBjxB,GAAK,GAC/C8yB,EAAmBzvB,EAAM0vB,cAAc/B,GAC3CuB,EAAapyB,KAAK2yB,GAClBA,EAAiBnQ,MAAK,SAASmQ,GAC3B9B,EAAeE,WAAY,EAC3BE,EAAUA,GAAW0B,EAAiB1B,oBAKlD,GAAIt1B,KAAKk3B,sBAAuB,CAC5B,IAAIF,EAAmBh3B,KAAKi3B,cAAcj3B,KAAKk3B,sBAAsBC,cACrEV,EAAapyB,KAAK2yB,GAClBA,EAAiBnQ,MAAK,SAASmQ,GAC3B1B,EAAU0B,EAAiB1B,WAQvC,OAJA5S,EAAUuT,KAAKrwB,WAAM,EAAQ6wB,GAAc5P,MAAK,WAC5Ctf,EAAMqvB,yBAA0B,EAChCnQ,EAASK,QAAQwO,MAEd7O,EAASU,WAEpB8P,cAAe,SAAuB/B,GAClC,IAAIkC,EAGAJ,EAHmBhsB,EAAShL,KAC5BglB,EAAS,IAAItC,EAAUgE,SACvBuQ,EAAgB/B,GAAkBlC,EAAmBp0B,QAAQy4B,eAAenC,GAQhF,OANI,OAAS+B,QAAiB,IAAWA,GAAiBA,EAAcK,WAAW/yB,SAC/EvE,KAAKu3B,0BAA0BrC,GAC/B8B,EAAmBhE,EAAmBp0B,QAAQq4B,cAAc/B,KAC/D,EAAIxS,EAAUuT,OAAO,QAAUmB,EAAoBJ,SAAqB,IAAWI,OAAoB,EAASA,EAAkBI,WAAaR,GAAkBnQ,MAAK,SAASmQ,IAC5K,EAAItU,EAAUuT,MAAMjrB,EAAO2qB,eAAeT,EAAgB8B,IAAmBnQ,KAAK7B,EAAO8B,YAEtF9B,EAAOmC,WAElBsQ,kBAAmB,SAAS9iB,GACxB,QAAQ,EAAInV,EAAMk4B,eAAe/iB,EAAOtF,OAE5CsoB,sBAAuB,SAAShjB,GAC5B,IAAI+hB,EAAW12B,KAAK+0B,mBAAmB4B,cACnCzyB,EAAMyQ,EAAOzQ,IACbgxB,EAAiBl1B,KAAKm1B,mBAAmBjxB,GAAK,GAClD,IAA4C,IAAxCqwB,EAAiBqD,QAAQlB,GAAkB,CAC3C,GA9IY,WA8IR/hB,EAAOsE,OAAmCjZ,KAAKy3B,kBAAkB9iB,GAEjE,YADAugB,EAAeI,SAAU,GAK7B,GAFAt1B,KAAK63B,kCAAiC,GACpB7E,EAAmBp0B,QAAQy4B,eAAenC,GAC3C,CACb,IAAI8B,EAAmBhE,EAAmBp0B,QAAQq4B,cAAc/B,IAChE,EAAIxS,EAAUuT,MAAMe,EAAiBQ,UAAYR,GAAkBnQ,MAAK,SAASmQ,GAC7E9B,EAAeI,QAAU0B,EAAiB1B,QAC1CJ,EAAeO,YAAcuB,EAAiBvB,oBAG7CP,EAAeO,aAAgBP,EAAeO,YAAYlxB,SAC3D2wB,EAAeI,SAAU,GAGjCt1B,KAAK63B,kCAAiC,QAEtC3C,EAAeI,SAAU,GAGjCwC,aAAc,SAASzB,GACnBr2B,KAAKk3B,sBAAwBb,GAEjC0B,2BAA4B,SAASv1B,GACjC,IAAI0J,EAAa1J,EAAW8I,KAAK,yBACjC,IAAKY,EAAW3H,OAAQ,CACpB,IAAIyzB,EAAsBx1B,EAC1B0J,GAAa,EAAIrN,EAAUD,SAAS,SAASgN,SAASosB,GAAqBzyB,SA7L7D,wBA8LdvF,KAAKgU,iBAAiB9H,EAAYinB,EAAgBv0B,SAClD4D,EAAW+C,SA9LI,2BAiMvB0yB,4BAA6B,SAASz1B,GAClC,IAAI0J,EAAa1J,EAAW8I,KAAK,yBACjC,GAAIY,EAAW3H,OAAQ,CACnB,IAAI4H,EAAYgnB,EAAgBv0B,QAAQuhB,YAAYjU,GAChDC,IACAA,EAAUsF,UACVtF,EAAU+F,WAAW3G,UAEzB/I,EAAWwd,YAzMI,2BA4MvBkY,wBAAyB,SAASlT,GAC9B,IAAIqR,EAAYrR,EAAOqR,UACnB8B,EAAkB9B,EAAUr0B,OAAO,mBACnC2G,EAAS0tB,EAAUr0B,OAAO,aAAjBq0B,GAAiC1tB,OAC9C3I,KAAKo4B,2BAA2B,CAC5BC,OAAQF,EAAgBj0B,IACxBmE,YAAaM,EAAOjD,MACpBsxB,iBAAkBhS,KAG1BsT,qBAAsB,SAASjnB,GAC3BA,EAAIP,UAAUpJ,GAAG,aAAc1H,KAAKk4B,wBAAwBj1B,KAAKjD,OACjEqR,EAAIP,UAAUpJ,GAAG,YAAa1H,KAAKk4B,wBAAwBj1B,KAAKjD,QAEpEu4B,mBAAoB,SAASlnB,GACzB,IAAIglB,EAAYhlB,EAAIP,UAChBqnB,EAAkB9B,EAAUr0B,OAAO,mBACnC2G,EAAS0tB,EAAUr0B,OAAO,aAAjBq0B,GAAiC1tB,OAC1Cqc,EAAShlB,KAAKw4B,wBAAwB,CACtCH,OAAQ,OAASF,QAAmB,IAAWA,OAAkB,EAASA,EAAgBj0B,IAC1FmE,YAAaM,EAAOjD,QAEpB+uB,EAAwBzP,IAAWA,EAAOyT,SAAWjE,GACrDx0B,KAAK04B,2BAA2B,CAC5B/jB,OAAQwjB,EACR9vB,YAAaM,EAAOjD,SAIhCizB,sBAAuB,SAASn2B,EAAYwiB,GACxC,IAAIqR,EAAYrR,EAAOqR,UACnB8B,EAAkB9B,EAAUr0B,OAAO,mBACnC2G,EAAS0tB,EAAUr0B,OAAO,aAAjBq0B,GAAiC1tB,OAK9C,GAJAqc,EAAOyQ,aAAezQ,EAAOyQ,YAAYxF,SAAQ,SAAS2I,GACtDA,EAAKvwB,YAAcM,EAAOjD,MAC1BkzB,EAAKjwB,OAASA,KAEdnG,EAAY,CACZ,IAAIw0B,EAAmBh3B,KAAKw4B,wBAAwB,CAChDH,OAAQF,EAAgBj0B,IACxBmE,YAAaM,EAAOjD,QAEpBmzB,EAAoBpE,EAAwBuC,IAAqBA,EAAiB8B,oBAAsB9T,EAAO+T,GACnH,GAAI/4B,KAAKg5B,gCAAkCH,EACvC,OAEJ,GAAI7T,EAAOyT,SAAWjE,EAA2B,CAC7C,IAAIyE,EAASz2B,EAAW8I,KAAK,WACxB,EAAIunB,EAAWqG,SAASD,KACzB5yB,EAAezH,QAAQkzB,QAAQmH,EAAQ,SACvC5yB,EAAezH,QAAQkzB,QAAQmH,EAAQlG,EAASn0B,QAAQu6B,OAGhE,IAAIC,GAAUzwB,EAAO0wB,kBAAoBr5B,KAAK+I,cAAc,iBAAiBuwB,kBAAkB92B,GAC3FwiB,EAAOyT,SAAWjE,EACd4E,EACAA,EAAOp3B,OAAO,mBAAoBwyB,GAElCx0B,KAAK+3B,2BAA2Bv1B,GAGhC42B,EACAA,EAAOp3B,OAAO,mBAAoBwyB,GAElCx0B,KAAKi4B,4BAA4Bz1B,GAGzCA,EAAWsD,YAAY9F,KAAK6L,gBAxRrB,WAwRwDmZ,EAAOyT,SAAWjE,KAGzF+E,yBAA0B,SAASne,GAC/B,IAAIoe,EACA1wB,EAAoB9I,KAAK+0B,mBACzBpgB,EAAS7L,EAAkB8sB,eAAexa,EAAWlX,KACrDu1B,EAAmB3wB,EAAkBgtB,YAAY1a,EAAWlX,KAC5DioB,EAAU,QAAUqN,EAAkBpe,EAAW9T,WAAQ,IAAWkyB,OAAkB,EAASA,EAAgBrN,QAC/GxX,GAAUwX,IAAYsN,GACtB3wB,EAAkB4wB,iBAAiB,CAC/Bx1B,IAAKkX,EAAWlX,IAChBioB,QAASA,KAIrBwN,gBAAiB,SAASve,EAAY5Y,GAClC,IAAIqa,EAAS7c,KACT8I,EAAoB9I,KAAK+0B,mBACzBpsB,EAASyS,EAAWzS,OACpBixB,EAAmBjxB,EAAOixB,iBAC9B,KAAI,EAAIp6B,EAAM4J,WAAWT,EAAOW,UAAaX,EAAOkxB,iBAAoBlS,MAAMC,QAAQjf,EAAOkxB,kBAAqBlxB,EAAOkxB,gBAAgBt1B,OAAzI,CAGA,IACIu1B,EADYhxB,EAAkBixB,cAAc3e,EAAWlX,IAAK4E,EAAkBguB,eAC3C,EACvC,IAAKgD,EAAqB,CACtB,IAAKF,EAAkB,CACnB,IAAI9d,EAAoB9b,KAAK+I,cAAc,WAE3C6wB,IADsB,OAAS9d,QAAqB,IAAWA,OAAoB,EAASA,EAAkBjT,sBAAwB,IACpGJ,MAAK,SAASE,GAC5C,OAAOA,EAAOixB,oBAGtB,IAMQI,EAAuBC,EAN3BC,GAAY,EAAIz6B,EAAQ+lB,cAAcxlB,KAAKgC,OAAO,sBAAuBoZ,EAAWlX,KACpFi2B,EAA8BrxB,EAAkBsxB,yBAA2BtxB,EAAkBuxB,cAAc,CAC3G/yB,IAAK8T,EAAW9T,MAEpBwyB,EAAsBI,GAAaC,GAA+BP,EAC9DO,GAA+BP,GAE/B9wB,EAAkB4wB,iBAAiB,CAC/Bx1B,IAAKkX,EAAWlX,IAChBioB,QAAS,QAAU6N,EAAwB,QAAUC,EAAmB7e,EAAW9T,WAAQ,IAAW2yB,OAAmB,EAASA,EAAiB9N,eAAY,IAAW6N,EAAwBA,EAAwB5e,EAAW/L,OAIjP,GAAIyqB,EAAqB,CACrB,GAAIt3B,IAAeA,EAAW+B,OAE1B,YADAlF,EAAIT,QAAQkqB,IAAI,SAGpB9oB,KAAKu5B,yBAAyBne,GAC9B,IAAI8Z,EAAiBl1B,KAAKm1B,mBAAmB/Z,EAAWlX,KAAK,GACzDo2B,EAAW,WACX,IAAI3lB,EAAS7L,EAAkB8sB,eAAe,OAASV,QAAkB,IAAWA,OAAiB,EAASA,EAAehxB,KACzHW,EAAQ8D,EAAOgU,oBAAoB,OAAShI,QAAU,IAAWA,OAAS,EAASA,EAAOtF,OAAS,IACvG,YAAO,IAAWxK,EAAQA,EAAQuW,EAAWvW,OAE7C01B,EAAsB/3B,GAAcA,EAAWyZ,SAAS,aAC5DzZ,GAAcA,EAAW+C,SAASvF,KAAK6L,gBA7UjC,cA8UN,IAAIwqB,EAAY,IAAIpD,EAAWr0B,QAAQ4D,IAAc,EAAI3D,EAAUD,SAAS,SAAU,CAClFsH,KAAMyC,EAAO2G,QACbuqB,iBAAiB,EAAI56B,EAAQc,SAAQ,EAAM,GAAI4I,EAAOkxB,iBACtD1B,gBAAiBjD,EACjBsF,QAASD,EAAsB,KAAO,CAClCD,SAAUA,EACVG,uBAAwB,SAASzV,GAC7BnI,EAAO8b,sBAAsBn2B,EAAYwiB,KAGjD0V,WAAY,WACR,IAAIx2B,EAAM,OAASgxB,QAAkB,IAAWA,OAAiB,EAASA,EAAehxB,IACrFyQ,EAAS7L,EAAkB8sB,eAAe1xB,GAC1CioB,EAAUrjB,EAAkBgtB,YAAY5xB,GAC5C,MAAO,CACHmL,MAAM,EAAIujB,EAAa+H,yBAAyBxO,EAAS,OAASxX,QAAU,IAAWA,OAAS,EAASA,EAAOtF,MAChH1G,OAAQA,IAGhBiyB,cAAe56B,KAAKs4B,qBAAqBr1B,KAAKjD,MAC9C66B,YAAa76B,KAAKu4B,mBAAmBt1B,KAAKjD,QAE9C,GAAIu6B,EAAqB,CACrB,IAAIC,EAAUnE,EAAUr0B,OAAO,WAC3Bw4B,IACAA,EAAQF,SAAWA,EACnBE,EAAQM,4BAA8B,IAG9C,OAAOzE,KAGfwB,iCAAkC,SAASkD,GACvC/6B,KAAKg5B,+BAAiC+B,GAE1CC,iCAAkC,WAC9B,OAAOh7B,KAAKg5B,gCAEhBiC,6BAA8B,SAASC,GACnC,IAAI7C,EAAS6C,EAAM7C,OACfhwB,EAAc6yB,EAAM7yB,YACxB,OAAOrI,KAAKk3B,wBAAyB,EAAIz3B,EAAQ+lB,cAAcxlB,KAAKk3B,sBAAsBl1B,OAAO,mBAAmBkC,IAAKm0B,IAAWr4B,KAAKk3B,sBAAsBl1B,OAAO,aAAlChC,GAAkD2I,OAAOjD,QAAU2C,GAE3M8yB,aAAc,SAAS9E,GACnB,IAAI+E,EAAa,CACb/C,OAAQhC,EAAUr0B,OAAO,mBAAmBkC,IAC5CmE,YAAaguB,EAAUr0B,OAAO,aAAjBq0B,GAAiC1tB,OAAOjD,OAErDsxB,EAAmBh3B,KAAKw4B,wBAAwB4C,GAChDC,EAAgB5G,EAAwBuC,GACvCqE,IACDrE,EAAmBX,EAAUE,YAEjC,IAAI9P,EAAW,IAAI/D,EAAUgE,SACzB8T,EAAUnE,EAAUr0B,OAAO,WAQ/B,OAPIq5B,GAAiBrE,EAAiByB,SAAWjE,IAC7Cx0B,KAAKo4B,2BAA2BgD,GAChCZ,EAAQC,uBAAuBzD,KAClC,EAAItU,EAAUuT,MAAMe,EAAiBQ,UAAYR,GAAkBnQ,MAAK,SAASmQ,GAC9EqE,GAAiBb,EAAQC,uBAAuBzD,GAChDvQ,EAASK,QAAQkQ,MAEdvQ,EAASU,WAEpBiR,2BAA4B,SAASkD,GACjC,IAAIjD,EAASiD,EAAMjD,OACfhwB,EAAcizB,EAAMjzB,YACpB2uB,EAAmBsE,EAAMtE,iBACzB9B,EAAiBl1B,KAAKm1B,mBAAmBkD,GAC7C,GAAKnD,EAAL,CAMA,IAAIlQ,EACJ,GAJKkQ,EAAeM,oBAChBN,EAAeM,kBAAoB,IAGnCwB,GAGA,GAFAhS,GAAS,EAAI/lB,EAAQc,QAAQ,GAAIi3B,GACjC9B,EAAeM,kBAAkBntB,GAAe2c,EAC5CgS,EAAiByB,SAAWjE,IApZ3B,SAqZGx0B,KAAK+0B,mBAAmB4B,gBACxB3R,EAAOyB,SAAW,IAAI/D,EAAUgE,SAChC1B,EAAOwS,SAAS5Q,QAAO,WACnB5B,EAAOyB,SAASK,aAEpB9mB,KAAK+0B,mBAAmB8B,YAAY7R,EAAOyB,WAE3CzmB,KAAKg5B,gCAEL,YADAhU,EAAO8T,kBAAoB9B,EAAiB+B,SAKpD/T,EAASkQ,EAAeM,kBAAkBntB,GAE1C2c,GAAUA,EAAO8T,0BACV9T,EAAO8T,oBAGtBN,wBAAyB,SAAS+C,GAC9B,IAAIC,EACAnD,EAASkD,EAAMlD,OACfhwB,EAAckzB,EAAMlzB,YACpB6sB,EAAiBl1B,KAAKm1B,mBAAmBkD,GAAQ,GACrD,OAAO,OAASnD,QAAkB,IAAWA,GAA0B,QAAUsG,EAAwBtG,EAAeM,yBAAsB,IAAWgG,OAA3F,EAA4HA,EAAsBnzB,IAEpNozB,2BAA4B,SAASC,GACjC,IAAI/mB,EAAS+mB,EAAM/mB,OACftM,EAAcqzB,EAAMrzB,YACpB6sB,EAAiBl1B,KAAKm1B,mBAAmB,OAASxgB,QAAU,IAAWA,OAAS,EAASA,EAAOzQ,KAChGgxB,GAAkBA,EAAeM,oBACjCx1B,KAAK04B,2BAA2B,CAC5B/jB,OAAQA,EACRtM,YAAaA,WAEV6sB,EAAeM,kBAAkBntB,KAGhDqwB,2BAA4B,SAASiD,GACjC,IAAIhnB,EAASgnB,EAAMhnB,OACftM,EAAcszB,EAAMtzB,YACpB6sB,EAAiBl1B,KAAKm1B,mBAAmBxgB,EAAOzQ,KACpD,GAAIyQ,GAAUugB,EAAeM,kBAAmB,CAC5C,IAAIxQ,EAASkQ,EAAeM,kBAAkBntB,GAC1C2c,IACAA,EAAOyB,UAAYzB,EAAOyB,SAASS,OAtb5B,UAubPgO,EAAeM,kBAAkBntB,GAvb1B,YA2bnBkvB,0BAA2B,SAASrC,GAC5BA,IACAA,EAAeM,0BAA4BN,EAAeM,yBACnDN,EAAeE,YAG9BwG,cAAe,SAASC,GACpB,IAAIxD,EAASwD,EAAMxD,OACfhwB,EAAcwzB,EAAMxzB,YACpB2c,EAAShlB,KAAKw4B,wBAAwB,CACtCH,OAAQA,EACRhwB,YAAaA,IAEjB,OAAOosB,EAAwBzP,IAAWA,EAAOyT,SAAWjE,GAEhEsH,iBAAkB,SAASC,GACvB,IAAI1D,EAAS0D,EAAM1D,OACfhwB,EAAc0zB,EAAM1zB,YACpB6sB,EAAiBl1B,KAAKm1B,mBAAmBkD,GACzC2D,EAAc9G,GAAkBlC,EAAmBp0B,QAAQy4B,eAAenC,GAC1EoC,EAAa0E,GAAeA,EAAY1E,WAC5C,OAAOA,GAAcA,EAAW9V,QAAO,SAASya,GAC5C,IAAItzB,EAASszB,EAAEj6B,OAAO,aAATi6B,GAAyBtzB,OACtC,QAAOA,GAASA,EAAOjD,QAAU2C,KAClC,IAEP6zB,wBAAyB,SAASzf,GAC9B,IAAIua,EAAmBh3B,KAAKw4B,wBAAwB,CAChDH,OAAQ5b,EAAYvY,IACpBmE,YAAaoU,EAAY9T,OAAOjD,SAEhC,EAAIlG,EAAM4J,WAAW4tB,GACrBva,EAAY0f,iBA3dD,WA2doBnF,EAA4CA,EAAiByB,OA3djF,gBA6dJhc,EAAY0f,qBAkB/Bj1B,UAAW,CACPud,YAAa,CACTkQ,QAAS,CACLyH,WAAY,SAASp7B,EAASsG,GAC1B,IAAI5B,EAAQ1F,KAAKC,SAASe,EAASsG,GAC/B+0B,EAAuBr8B,KAAK+I,cAAc,cAC9C,GAAIrD,GAAS,GAtfL,WAsfU1E,EAAQiY,KAAgC,CACtD,IAAItE,EAAS3U,KAAK82B,aAAapxB,GAC/BiP,GAAU0nB,EAAqB1E,sBAAsBhjB,GAEzD,OAAOjP,GAEX42B,qBAAsB,SAASr2B,GAC3BjG,KAAKC,SAAS2F,MAAM5F,KAAM6F,WAC1B,IAAIw2B,EAAuBr8B,KAAK+I,cAAc,cAC9C9C,EAAKpB,MAAMorB,SAAQ,SAAStb,QACpB,IAAW0nB,EAAqBlH,mBAAmBxgB,EAAOzQ,MAC1Dm4B,EAAqB1E,sBAAsBhjB,OAIvD4nB,yBAA0B,WACtB,IAAIC,EAASx8B,KACTmC,EAAOnC,KACPy8B,EAAmBt6B,EAAKshB,QAAQ,YAAYhC,yBAC5CrZ,EAAWq0B,GACf,EAAIv9B,EAAUqE,MAAMpB,EAAK20B,cAAc,SAASrzB,EAAGi5B,GAC/C,IAAIx4B,EAAMw4B,EAAMx4B,IACZ+U,EAAOyjB,EAAMzjB,KACbic,EAAiBsH,EAAOzzB,cAAc,cAAcosB,mBAAmBjxB,GACvEgxB,IAAmBA,EAAeI,SAAWJ,EAAelkB,YAAc7O,EAAKw6B,aAC/EzH,EAAelkB,UAAY7O,EAAKw6B,WAE5BzH,EAAe9sB,SAlhBnB,WAihBI6Q,EAC0BwjB,EAEAr0B,EAE9BA,SAIZw0B,mBAAoB,SAASC,GACzB,IAAIC,EAAkB98B,KAAKC,SAAS2F,MAAM5F,KAAM6F,WAC5Cw2B,EAAuBr8B,KAAK+I,cAAc,cAC1CmsB,EAAiBmH,EAAqBlH,mBAAmB0H,EAAc34B,KAAK,GAChF,OAAO,EAAIjF,EAAQc,QAAQ,GAAI+8B,EAAiB,CAC5C3E,gBAAiBjD,KAGzB6H,mBAAoB,SAASz1B,EAAK01B,EAAgBC,GAC9Cj9B,KAAKC,SAAS2F,MAAM5F,KAAM6F,WACtBo3B,GAAwBj9B,KAAKk9B,YAAc51B,EAAIkK,UAC/CxR,KAAKk9B,UAAU3G,YAGvB4G,gBAAiB,SAASC,GACtB,IAAIl5B,EAAMk5B,EAAOl5B,IACb8gB,EAAShlB,KAAKC,SAAS2F,MAAM5F,KAAM6F,WACnCqvB,EAAiBl1B,KAAK+I,cAAc,cAAcosB,mBAAmBjxB,GAIzE,OAHI8gB,GAAY,OAASkQ,QAAkB,IAAWA,GAAkBA,EAAeI,UACnFtQ,EAAS9gB,EAAI8M,YAAchR,KAAK28B,YAE7B3X,GAEXqY,iBAAkB,SAASC,GACvB,IAAIC,EAAgBv9B,KAAKC,SAAS2F,MAAM5F,KAAM6F,WAC1Cw2B,EAAuBr8B,KAAK+I,cAAc,cAM9C,OALIw0B,GAAiBD,EAAO30B,OAAOixB,kBAC/ByC,EAAqB1E,sBAAsB,CACvCzzB,IAAKo5B,EAAOp5B,MAGbq5B,GAEXC,aAAc,SAASz7B,EAAO8S,GAC1B,IACIlC,EACA0d,EAFOrwB,KAEQ82B,aACfxlB,EAHOtR,KAGe+I,cAAc,QACpCszB,EAAuBr8B,KAAK+I,cAAc,cAc1C6O,GADJ7V,EAjBW/B,KAiBEC,SAAS8B,EAAO8S,IACNtQ,OACnBk5B,EAAiB,SAAS9oB,EAAQugB,GAClC,IAAI7lB,EAAO,CACPnL,IAAKyQ,EAAOzQ,KAGhB,KAnBmB,SAASyQ,EAAQ5S,GACpC,IAAI2D,GAAS,EACTg4B,EAnkBA,WAmkBW/oB,EAAOsE,KAClB/U,EAAMyQ,EAAOzQ,IAOjB,OANA,EAAIhF,EAAUqE,MAAMxB,GAAO,SAAS4Q,EAAGrQ,GACnC,IAAI,EAAI7C,EAAQ+lB,cAActhB,EAAKw5B,EAAWp7B,EAAOgP,EAAeoa,MAAMppB,IAEtE,OADAoD,EAAQiN,GACD,KAGRjN,EAQKi4B,CAAiBhpB,EAAQ5S,IACxB,GAAb,CAGAmzB,EAAe9sB,SAAW8sB,EAAe9sB,SAAWwP,EAAasd,EAAe9sB,SAAWwP,EAAasd,EAAe9sB,SACvH,IAAIA,EAAW8sB,EAAe9sB,SAC9BiH,EAAiB,oBAAI,EACrBtN,EAAM67B,OAAOx1B,EAAU,EAAGiH,KAE9B,GAvmBE,UAukBSrP,KAgCF22B,eAAqC,YAAc9hB,GAAc,WAAaA,EACnF,IAAKlC,EAAI,EAAGA,EAAI0d,EAAQ9rB,OAAQoO,IAAK,CACjC,IAAIzO,EAAMmsB,EAAQ1d,GAAGzO,IACjBgxB,EAAiBmH,EAAqBlH,mBAAmBjxB,GACzDgxB,GAAkB7E,EAAQ1d,GAAGsG,MAAQic,EAAelkB,YApCrDhR,KAoCwE28B,YAAcz4B,EAAI8M,YApC1FhR,KAoC6G28B,YAC5Gc,EAAepN,EAAQ1d,GAAIuiB,GAIvC,OAAOnzB,GAEX87B,gBAAiB,SAASv7B,GACtB,IAAIw7B,EAAax7B,EAAK+M,KAAiB,oBACnCnL,EAAM45B,EAAax7B,EAAK+M,KAAKnL,IAAM5B,EAAK4B,IACxCwyB,EAAW12B,KAAK22B,cACpB,GAtnBE,UAsnBED,GAAgCoH,GAAc55B,EAAK,CACnD,IAAImsB,EAAUrwB,KAAK82B,aACfiH,EAAY9wB,EAAcrO,QAAQm7B,cAAc71B,EAAKmsB,GACzD,GAAI0N,GAAa,EAAG,CAChB,IAAIppB,EAAS0b,EAAQ0N,GACrB,GAhnBA,WAgnBIppB,EAAOsE,KAAgC,CACvC,IAAIkT,EAAUnsB,KAAK81B,YAAYnhB,EAAOzQ,KACtC5B,EAAK+M,MAAO,EAAIpQ,EAAQc,SAAQ,EAAM,GAAIosB,EAASxX,EAAOtF,MAC1D/M,EAAK4B,IAAMA,IAIvBlE,KAAKC,SAAS2F,MAAM5F,KAAM6F,YAE9Bm4B,iCAAkC,SAAS3N,GACvC,IAAI4N,EAASj+B,KACTmC,EAAOnC,KACPq8B,EAAuBr8B,KAAK+I,cAAc,cAC1C+S,EAAoB9b,KAAK+I,cAAc,WACvC4I,EAAUmK,EAAkBrJ,aAC5ByrB,EAAmBpiB,EAAkBqiB,sBAAsB3c,QAAO,SAAS7Y,GAC3E,OAAQA,EAAOqT,UAEfoiB,EAAetiB,EAAkBuiB,kBAAkB7c,QAAO,SAAS7Y,GACnE,OAAQA,EAAOkH,kBAAyD,IAAtCquB,EAAiBtG,QAAQjvB,MAE3D21B,EAA4B,GAiChC,OA7BAJ,EAAiB75B,KAAKuB,MAAMs4B,EAAkB9K,EAAmBgL,KACX,IAAlD7J,EAAiBqD,QAAQ53B,KAAK22B,iBAC9B,EAAIz3B,EAAUqE,MAAMoO,GAAS,SAASlO,EAAGkF,GACrC0nB,EAAQJ,SAAQ,SAAStb,GACrB,IAAItF,EACJ,IARQ,SAAS1G,EAAQ0vB,GACjC,OAAO4F,EAAO/sB,gBAAgBqtB,iBAAiBlG,IAAW,GAAK6F,EAAiBtG,QAAQjvB,GAAU,EAOtF61B,CAAc71B,EAAQgM,EAAOzQ,KAAjC,CAGA,GAjpBJ,WAipBQyQ,EAAOsE,KACP5J,EAAOsF,EAAOtF,UAEd,GAAI,WAAasF,EAAOsE,KAAM,CAC1B,IAAIkT,EAAUhqB,EAAK2zB,YAAYnhB,EAAOzQ,KACtCmL,GAAO,EAAIujB,EAAa+H,yBAAyBxO,EAASxX,EAAOtF,MAGzE,GAAIA,EAAM,CACN,IAAIgnB,EAAYgG,EAAqB1C,gBAAgB,CACjDhxB,OAAQA,EACRzE,IAAKyQ,EAAOzQ,IACZW,MAAO8D,EAAOgU,mBAAmBtN,KAEjCgnB,GACAiI,EAA0Bj6B,KAAKgyB,WAM5C,WACHiI,EAA0BrO,SAAQ,SAASoG,GACvCA,EAAU5kB,eAItBgtB,oBAAqB,SAAS9pB,EAAQopB,GAClC,IAAIW,EAAS1+B,KACTglB,EAAShlB,KAAKC,SAAS2F,MAAM5F,KAAM6F,WACnCw2B,EAAuBr8B,KAAK+I,cAAc,cAC1CmsB,EAAiBmH,EAAqBlH,mBAAmB,OAASxgB,QAAU,IAAWA,OAAS,EAASA,EAAOzQ,KACpH,GAAIyQ,EAAQ,CACR,IAAI2gB,EAAU,WAAa3gB,EAAOsE,MAAQic,EAAeI,QACzDtQ,EAASA,IAAWsQ,MACjB,CACH,IAAIqJ,EAAoB3+B,KAAKg+B,iCAAiCh+B,KAAK82B,cACnE9R,EAAS,IAAItC,EAAUgE,SACvB1mB,KAAK4+B,iBAAiB5Z,GAAQ,WAC1BqX,EAAqB9F,UAAS,GAAM1P,MAAK,SAASgY,GAG9C,OAFAF,IACAD,EAAOnC,2BACCmC,EAAO/H,eACX,IAtsBf,OAusBwBkI,GACDH,EAAOI,oBAEX,MACJ,IA5sBd,QA6sBuBD,IACDH,EAAOK,mBACPL,EAAOM,uBACPN,EAAO31B,cAAc,QAAQwkB,eAGzCvI,EAAO8B,SAAS+X,SAI5B,OAAO7Z,EAAOmC,QAAUnC,EAAOmC,UAAYnC,GAE/Cia,gBAAiB,SAAS72B,EAAUC,EAAa/F,GAC7C,IAAI0iB,EAAShlB,KAAKC,SAASmI,EAAUC,EAAa/F,GAClD,GA1tBC,SA0tBGtC,KAAK22B,cAAkC,CACvC,IAAI/sB,EAAQ5J,KAAKk/B,UAAUC,gBAAgB/2B,EAAUC,GACjDguB,EAAYzsB,GAASA,EAAMyF,KAAK,eAChCqB,EAAa9G,GAASA,EAAM6Q,QAAQ,WAAWpL,KAAK,WACpDxK,EAAQwxB,GAAaA,EAAUr0B,OAAO,WAAWs4B,WACrD,GAAIjE,GAAa3B,EAA2B7vB,EAAO6L,GAAa,CAC5D,IAAI2rB,EAAuBr8B,KAAK+I,cAAc,cAC1C0d,EAAW,IAAI/D,EAAUgE,SAI7B,OAHA,EAAIhE,EAAUuT,MAAMoG,EAAqBlB,aAAa9E,GAAYrR,GAAQ6B,MAAK,SAASmQ,EAAkBhS,GACtGyB,EAASK,QAAQkQ,EAAiByB,SAAWjE,GAA2BxP,MAErEyB,EAASU,UAEhB,IAAKkP,EACD,OAAOrR,IAKvBoa,mBAAoB,SAASC,GACzB,IACIC,EADAC,EAASv/B,KAETw/B,EAhvBH,SAgvBoBx/B,KAAK22B,cAK1B,IAJA,EAAIz3B,EAAUqE,MAAMvD,KAAK82B,cAAc,SAASrzB,EAAGkR,GAC/C,IAAI8qB,EAAYF,EAAOG,cAAc/qB,GACrC2qB,EAAiBA,GAAkBG,KAEnCH,EAAgB,CAChB,IAAIjyB,EAAarN,KAAKk/B,UAAU3sB,gBAC5BlF,IACAA,EAAW+S,SACX/S,EAAWiV,gBAAgBgd,IAGnC,GAAID,GAAUG,GAAkBx/B,KAAK2/B,iBAAkB,CACnD,IAAIC,EAAe5/B,KAAK6/B,kBACxB7/B,KAAKkR,gBAAgBqc,YAAY,CAC7B1Y,WAAY,SACZI,WAAY,CAAC2qB,KAEjB5/B,KAAK8+B,yBAEL,IAAKO,EAAQ,CACT,IAAIS,GAA6B,EACjC,GAAIN,EAMAM,IALc9/B,KAAK+I,cAAc,WAAW0J,aACD+O,QAAO,SAASue,GACvD,IAAIC,EACJ,OAAOD,EAAInG,mBAAqB,QAAUoG,EAAuBD,EAAIlG,uBAAoB,IAAWmG,OAAuB,EAASA,EAAqBz7B,QAAU,KACpKA,OAAS,GAGZu7B,IACA9/B,KAAK+I,cAAc,cAAcisB,iBAAmB,MAKpE3V,mBAAoB,SAASpZ,GACzB,IAAIg6B,EAAkBjgC,KAAK+I,cAAc,cAAcisB,iBACnD,aAAeh1B,KAAKgC,OAAO,mBAC3BhC,KAAKkgC,yBAEL,YAAcj6B,EAAK4O,aACnB,EAAI3V,EAAUqE,MAAM08B,GAAiB,SAASx8B,EAAGyxB,GAC7CA,EAAe9sB,UAAYnC,EAAKlE,MAAMwC,UAG9CvE,KAAKC,SAASgG,IAElBi6B,uBAAwB,WACpB,IAAIC,EAASngC,KACTigC,EAAkBjgC,KAAK+I,cAAc,cAAcisB,kBACvD,EAAI91B,EAAUqE,MAAM08B,GAAiB,SAASx8B,EAAGyxB,GACzCA,EAAelkB,YAAcmvB,EAAOxD,oBAC7BzH,EAAelkB,iBACfkkB,EAAe9sB,cAIlCg4B,sBAAuB,WACQpgC,KAAK+I,cAAc,cACzBisB,iBAAmB,GACxCh1B,KAAKC,YAETy/B,cAAe,SAAS/qB,GACpB,IAAI0rB,EACAC,EAAgBtgC,KAAK+I,cAAc,iBACnChH,EAAQ/B,KAAK+I,cAAc,QAAQhH,QACnCqG,EAAWpI,KAAK+5B,cAAcplB,EAAOzQ,IAAKnC,GAC1CmzB,EAAiBl1B,KAAK+I,cAAc,cAAcosB,mBAAmBxgB,EAAOzQ,KAChF,IAAM,OAASgxB,QAAkB,IAAWA,IAAkBA,EAAeI,UAAY,OAASJ,QAAkB,IAAWA,GAAkBA,EAAea,WAAa3tB,GAAY,EAErL,OADAi4B,EAAgBrgC,KAAKugC,kBACdD,GAAiBA,EAAcE,eAAe,OAAStL,QAAkB,IAAWA,OAAiB,EAASA,EAAea,UAAW3tB,EAAUi4B,IAGjKI,iBAAkB,SAAS54B,GACvB,IAAI64B,EAAS1gC,KACTq8B,EAAuBr8B,KAAK+I,cAAc,cAC1C0d,EAAW,IAAI/D,EAAUgE,SAe7B,OAdA2V,EAAqBZ,2BAA2B,CAC5C9mB,OAAQ3U,KAAK41B,eAAe/tB,EAAE3D,KAC9BmE,YAAaR,EAAEc,OAAOjD,QAE1B1F,KAAKC,SAAS2F,MAAM5F,KAAM6F,WAAWghB,MAAK,WACtC,IAAI8Z,EAAmBtE,EAAqBP,iBAAiB,CACzDzD,OAAQxwB,EAAE3D,IACVmE,YAAaR,EAAEc,OAAOjD,SAE1B,EAAIgd,EAAUuT,MAAM0K,GAAoBtE,EAAqBlB,aAAawF,IAAmB9Z,MAAK,SAASmQ,GACvG0J,EAAO33B,cAAc,iBAAiB63B,UACtCna,EAASK,QAAQkQ,SAGlBvQ,EAASU,WAEpB0Z,kBAAmB,SAASj3B,EAAOwR,GAC/Bpb,KAAKC,SAAS2F,MAAM5F,KAAM6F,WAC1B,IAAIw2B,EAAuBr8B,KAAK+I,cAAc,cAC9CszB,EAAqBH,wBAAwB9gB,GAC7C,IAAI0lB,IAAmB1lB,EAAWwW,SAC9BmP,EAAe/gC,KAAKghC,eAAe5lB,GACnC6lB,GAAc,EAAIzhC,EAAM4J,WAAWgS,EAAW+gB,kBAC9C+E,EAAiBH,GAAgB3lB,EAAWzS,OAAOw4B,cAAgBL,IAAmBC,KAAkB3lB,EAAW9T,IAAIkK,WAAayvB,GACxI,GAAIC,EAAgB,CAChB,IAAI7K,EAAYzsB,EAAMyF,KAAK,eACvBgnB,IACA,EAAI3T,EAAUuT,MAAMj2B,KAAK+I,cAAc,cAAcoyB,aAAa9E,IAAYxP,MAAK,WAC/EwV,EAAqBH,wBAAwB9gB,QAK7Dwa,eAAgB,SAAS1xB,GACrB,IAAImsB,EAAUrwB,KAAK82B,aACnB,OAAOzG,EAAQpjB,EAAcrO,QAAQm7B,cAAc71B,EAAKmsB,KAE5D2Q,eAAgB,SAAS5lB,GACrB,IAAI2lB,EAAe/gC,KAAKC,SAASmb,GAC7BzG,EAAS3U,KAAK41B,eAAexa,EAAWlX,KACxCk9B,IAAkBhmB,EAAW9T,KAAOtH,KAAK+I,cAAc,cAAc6yB,cAAc,CACnFvD,OAAQjd,EAAWlX,IACnBmE,YAAa+S,EAAWzS,OAAOjD,QAEnC,OAAOq7B,GAAgB/gC,KAAK+I,cAAc,cAAcksB,gBAAgBtgB,IAAWysB,IAG3FC,cAuBW,CACHC,kBAAmB,SAAS9+B,GACxB,IAAI++B,EAAUvhC,KACd,GAAKwC,GAAeA,EAAW+B,OAA/B,CAGA,IAAIi9B,EAAkBxhC,KAAKk/B,UAAU/sB,UAAU7G,KAAK,IAAMtL,KAAK6L,gBAz5B5D,mBA05BC41B,EAAoBj/B,EAAWiY,QAAQ,IAAI9Z,OAAOX,KAAK6L,gBAj5B/D,aAk5BI21B,GAAmBA,EAAgBj2B,SACnCi2B,GAAkB,EAAI3iC,EAAUD,SAAS,SAAS2G,SAASvF,KAAK6L,gBA55B7D,mBA45BoGD,SAASpJ,GAChH,IAAIk/B,EAAiB,CACjB5gB,UAAW,KACX1Q,SAAS,EACTxC,MAAO,OACPC,OAAQ,OACR1E,OAAQ3G,EACRm/B,SAAS,EACT11B,UAAWw1B,EACXG,uBAAuB,EACvBC,qBAAqB,EACrBC,qBAAqB,EACrBC,gBAAiB,WACb,IAAIC,GAAiB,EAAInjC,EAAUD,SAAS,SAAS2G,SAp6B3D,oBAq6BU08B,EAAgB,CAChB5+B,KAAM,SACN6+B,KAAMX,EAAQv/B,OAAO,yCACrBmgC,QAAS,WACLZ,EAAQxM,mBAAmBqN,mBAGnC,OAAO,IAAItP,EAAQl0B,QAAQojC,EAAgBC,GAAe/vB,YAE9DmwB,SAAU,CACNC,GAAI,WACJC,GAAI,YACJtgB,OAAQ,MACRugB,UAAW,OACXC,eAAgB,MAChBC,SAAU1iC,KAAKk/B,UAAU/sB,WAE7BwwB,aAAc3iC,KAAK4iC,mBAAmB3/B,KAAKjD,OAE/C,OAAO,IAAIkzB,EAASt0B,QAAQ4iC,EAAiBE,KAEjDmB,oBAAqB,SAASj5B,EAAOk5B,GACjC,IAAIC,EACAC,EACAC,EAAiBjjC,KAAKk/B,UAAU+D,iBAChCC,EAAiBljC,KAAK+0B,mBAAmBmO,iBAC7C,GAAID,IAAmBC,EAAgB,CACnC,IAAIC,EAAiBv5B,EAAM6Q,QAAQ,WAAW2oB,OAAO/zB,KAAK,WACtD8zB,GAAkB,UAAYA,EAAe17B,UAC7Cs7B,GAAuB,EAAIlkC,EAAUD,SAASoB,KAAKk/B,UAAUmE,cAAcF,EAAe/6B,WAAW0N,QACrGktB,EAAoBD,EAAqBz3B,KAAK,mBACxB/G,QAAU,WAAay+B,EAAkB/6B,IAAI,GAAGq7B,MAAMC,aACxEP,EAAkBxsB,IAAI,aAAc,UACpCssB,EAAejI,YAAc,WACzBmI,EAAkBxsB,IAAI,aAAc,SAMxDosB,mBAAoB,SAAS/6B,EAAG27B,GAC5B,IAAK37B,EAAEiJ,UAAU2yB,yBAA0B,CACvC,IAAIC,GAAiB,EAAI7kC,EAAUD,SAASiJ,EAAEsK,SAAS8J,SAASjc,KAAK6L,gBAp9BtE,mBAq9BK83B,GAAeD,GAAkB1jC,KAAKk/B,UAAUjlB,2BAChD2pB,EAAqB5jC,KAAK6jC,+CAA+Ch8B,EAAG67B,EAAgBF,GAChG37B,EAAEiJ,UAAU2yB,4BAA8BE,IAAeC,GACrDA,EACA/7B,EAAEiJ,UAAU9O,OAAO4hC,GAEfD,GACA97B,EAAEiJ,UAAU3K,YAK5B29B,uBAAwB,SAASl6B,EAAOm6B,EAAUn5B,EAAWo5B,GACzD,IAAIC,EAAUjkC,KACVkkC,EAAct6B,EAAM0B,KAAK,8BAA8B+D,KAAK,WAC5Dm0B,EAAmBU,GAAeA,EAAYliC,OAAO,WACrDmiC,EAAaX,EAAmB,YAAc,OAAS54B,EACvDw5B,EAAaZ,EAAmB,WAAa,UAAY54B,EACzD62B,EAAoB73B,EAAM6Q,QAAQ,IAAI9Z,OAAOX,KAAK6L,gBA99B1D,aA+9BQw4B,EAAmB,GACvBN,GAAYA,EAAS9T,SAAQ,SAAShP,GAClCojB,IAAqBA,EAAiB9/B,OAAS,QAAU,KAAM,EAAIyI,EAAQ+B,YAAYkS,MAE3F,IAAIqjB,EAAsBtkC,KAAK6L,gBAz+BpB,mBA0+BX7L,KAAKk/B,UAAU/sB,UAAU7G,KAAK,IAAMg5B,GAAqB/4B,SACzD,IAAIg5B,GAAkB,EAAI1lC,EAAUD,SAAS,SAAS2G,SA5+BlD,sBA4+BkFA,SA1+B3E,6BA0+BkHA,SAAS++B,GAAqB5hC,KAAK2hC,GAAkBz4B,SAAShC,GACvLk5B,EAAiB,CACjB35B,OAAQS,EACRqC,UAAWw1B,EACXE,SAAS,EACT/zB,MAAO,OACPC,OAAQ,OACRuC,SAAS,EACT0Q,WAAW,EACX8gB,uBAAuB,EACvBC,qBAAqB,EACrBC,qBAAqB,EACrBO,SAAU,CACNG,UAAW,OACXE,SAAU1iC,KAAKk/B,UAAU/sB,UACzBswB,eAAgB,MAChBxgB,OAAQ,CACJxB,EAAG,EACH+jB,EAAIhB,IAAqBr2B,EAASvO,QAAQ6f,UAAWtR,EAASvO,QAAQ2pB,KAAa,GAAJ,GAEnF+Z,GAAI6B,EACJ5B,GAAI6B,GAERzB,aAAc,SAAS96B,GACnBo8B,EAAQrB,mBAAmB/6B,EAAG27B,GAC9BS,EAAQQ,8BAA8B58B,EAAEiJ,UAAUuH,WAAY2rB,GAAiBA,EAAc3rB,WAAYzO,KAGjH5J,KAAK6iC,oBAAoBj5B,EAAOk5B,GAChC,IAAI5P,EAASt0B,QAAQ2lC,EAAiBzB,IAE1Ce,+CAAgD,SAAS7iC,EAAS0iC,EAAgBF,GAC9E,IAAIkB,EAAe1kC,KAAK4I,mBAAmByN,kBAC3C,GAAKquB,GAAiBA,EAAangC,OAAnC,CAGA,IAAI89B,EACAsC,GAAqBjB,GAtJJ,SAASvhC,EAAMgQ,GACxC,IAAI/J,GAAW,EAAIvJ,EAAUD,SAASuT,GAASsI,QAAQ,MAAM/U,QACzDk/B,GAAgB,EAAI/lC,EAAUD,SAASuD,EAAK+8B,UAAUmE,cAAcj7B,IAAW4O,QAAQxL,WAAWgW,OAAO,yBAC7G,OAAOrf,EAAK+8B,UAAU2F,WAAWD,GAAe5sB,QAAO,SAAS8sB,EAAIC,GAChE,OAAOD,EAAKC,IACb,GAiJ4CC,CAAuBhlC,KAAMgB,EAAQmR,SAE5E8yB,EADyBjkC,EAAQ8P,UAAUuH,WACK6sB,YAAW,GAC3DC,GAAgBzB,GAAkBuB,EAAyBN,EAC3Dt8B,EAAcrI,KAAKk/B,UAAUkG,cAAa,EAAIvmC,EAAUD,SAASoC,EAAQmR,SAASsI,QAAQ,OAC1F4qB,EApJyB,SAASX,GAC1C,IAAIY,EACAC,EAQJ,OAPAb,EAAaj8B,MAAK,SAASE,EAAQjD,GAC/B,GAr3BE,gBAq3BEiD,EAAOW,QAGP,OAFAg8B,EAA2B,IAAM5/B,GAAS,EAAIA,EAC9C6/B,EAA0B7/B,IAAUg/B,EAAangC,OAAS,GAAK,EAAImB,EAAQiD,EAAOyQ,QAAU,GACrF,KAGR,CACHosB,iBAAkBF,EAClBG,eAAgBF,GAwIkBG,CAA+BhB,GAmBjE,OAlBKhB,GAAmBr7B,IAAgBg9B,EAA4BG,mBAAoBL,EAOhF98B,IAAgBg9B,EAA4BI,iBAC5CpD,EAAW,CACPG,UAAW,YACXF,GAAI,YACJC,GAAImB,GAAkBF,EAAmB,WAAa,gBAEtDE,IACArB,EAASpgB,OAAS,SAb1BogB,EAAW,CACPG,UAAW,YACXF,GAAI,WACJC,GAAIiB,EAAmB,YAAc,eActCnB,GAAY,CACfA,SAAUA,EACVsD,SAAUR,EAAeR,EAAoB,OAAI,KAGzDF,8BAA+B,SAASpsB,EAAUutB,EAAgBh8B,GAC9D,GAAKg8B,EAAL,CAGA,IAAIC,EAAgBxtB,EAAS4J,SACzB6jB,EAAsBF,EAAe3jB,SACzC,GAAI4jB,EAAczyB,MAAQ0yB,EAAoB1yB,KAAOyyB,EAAcvyB,KAAO+E,EAASzK,QAAUk4B,EAAoBxyB,KAAM,CACnH,IAAIA,EAAOsyB,EAAeh4B,QA5iCvB,EA6iCHyK,EAAS7B,IAAI,OAAQsvB,EAAoBxyB,KAAO1J,EAAMqY,SAAS3O,MAAQA,EAAOA,MAGtFyyB,qBAAsB,WAClB,IAAIzB,EAAsBtkC,KAAK6L,gBAzjCpB,mBA2jCX,MAAO,oBADkB7L,KAAK6L,gBA7jC3B,kBA8jC+C,sBAAwBy4B,EAAsB,wBAA0BA,GAE9HxlB,KAAM,WACF9e,KAAKC,WACLD,KAAK+0B,mBAAqB/0B,KAAK+I,cAAc,WAC7C/I,KAAK4I,mBAAqB5I,KAAK+I,cAAc,WAC7C/I,KAAKk/B,UAAYl/B,KAAKyjB,QAAQ,aAElCuiB,UAAW,SAASC,GACXA,GACDjmC,KAAK+I,cAAc,cAAc+uB,aAAa,MAElD93B,KAAKC,YAETimC,gBAAiB,SAASh0B,EAAU8kB,EAAkBmP,GAClD,IAAIC,EAOApC,EANA/K,EAAS,OAAS/mB,QAAY,IAAWA,OAAW,EAASA,EAASuI,QAAQza,KAAKqmC,yBACnFz8B,EAAQ,OAASqvB,QAAU,IAAWA,GAAUA,EAAOzjB,GAAG,MAAQyjB,EAAS,KAC3EvoB,EAAa,OAASuoB,QAAU,IAAWA,OAAS,EAASA,EAAOxe,QAAQ,WAAWpL,KAAK,WAC5FsF,EAASjE,EAAa1Q,KAAK+I,cAAc,WAAW6sB,eAAellB,EAAWxM,KAAO,KACrFyE,EAASiB,GAAS5J,KAAK+I,cAAc,WAAWF,oBAAoBe,EAAMlE,SAC1Es7B,OAAiB,KAAY,OAASrsB,QAAU,IAAWA,GAAkB,QAAUyxB,EAAezxB,EAAOtF,YAAS,IAAW+2B,OAA7D,EAAqFA,EAAa,OAASz9B,QAAU,IAAWA,OAAS,EAASA,EAAOzC,SAAWlG,KAAK+0B,mBAAmBuR,WAQpQ,KANK,OAAStP,QAAoB,IAAWA,OAAmB,EAASA,EAAiByB,UAAYjE,GAA6BwM,IAtkCtI,SAukCWhhC,KAAK+0B,mBAAmB4B,gBACxBqN,EAAgBhkC,KAAKshC,kBAAkBrI,IAGnBjC,GAAoBA,EAAiByB,SAAWjE,GAC/C5qB,GAASjB,GAAUquB,GAAoBA,EAAiBvB,YAAa,CAC9F,IAAI8Q,EAAgB,GACpBvP,EAAiBvB,YAAYxF,SAAQ,SAAS2I,GAC1C2N,EAAcliC,KAAKu0B,EAAK3X,YAE5BjhB,KAAK8jC,uBAAuB7K,EAAQsN,EAAe59B,EAAOiC,WAAa,OAAQo5B,IACjFmC,GAAcnmC,KAAKk/B,UAAU/sB,WAAanS,KAAKk/B,UAAUjlB,4BAE/DusB,MAAO,SAASt0B,EAAUi0B,GACtB,IAAIM,EAAUzmC,KACd,IAAK6F,UAAUtB,OACX,OAAOvE,KAAKC,WAEhB,IAAIymC,EAAYx0B,GAAYA,EAASuI,QAAQ,IAAMza,KAAK6L,gBAvmC1D,aAumC4FP,KAAKtL,KAAK+lC,wBAEpG,GADAW,GAAaA,EAAUn7B,SACnB,OAAS2G,QAAY,IAAWA,GAAYA,EAAS+J,SAAS,UAC9D,OAAOjc,KAAKC,SAASiS,EAAUi0B,GAEnC,IAMInP,EANAiC,EAAS,OAAS/mB,QAAY,IAAWA,OAAW,EAASA,EAASuI,QAAQza,KAAKqmC,yBACnFpmC,EAAWD,KAAKC,SAChBo2B,EAAY4C,IAAWA,EAAO5pB,KAAK,gBAAkB6C,EAAS5G,KAAK,IAAMtL,KAAK6L,gBAzmCpF,cAymCsHuJ,GAAG,GAAG/F,KAAK,gBAC3HqB,EAAauoB,GAAUA,EAAOxe,QAAQ,WAAWpL,KAAK,WACtDvG,EAAoB9I,KAAK+I,cAAc,WACvC4L,EAASjE,EAAa5H,EAAkB8sB,eAAellB,EAAWxM,KAAO,KAEzEm4B,EAAuBr8B,KAAK+I,cAAc,cAC9C,GAAIstB,EAAW,CACXgG,EAAqBvE,aAAazB,GAClC,IAAIxxB,EAAQwxB,EAAUr0B,OAAO,WAAWs4B,WACxC,GAAI5F,EAA2B7vB,EAAO6L,IAAe2rB,EAAqBpH,gBAAgBtgB,GAkBtF,OAjBA7L,EAAkB69B,4BAA4B9f,MAAK,YAC/C,EAAInE,EAAUuT,MAAMoG,EAAqBlB,aAAa9E,IAAYxP,MAAK,SAAS7B,GAE5E,IAAIrc,GADJquB,EAAmBhS,GACWqR,UAAUr0B,OAAO,aAAlCg1B,GAAkDruB,OAC3DgM,GAAUhM,IAAW0zB,EAAqBpB,6BAA6B,CACnE5C,OAAQ1jB,EAAOzQ,IACfmE,YAAaM,EAAOjD,UAIxBsxB,EAAiByB,SAAWjE,IAC5B2R,GAAa,GAEjBM,EAAQP,gBAAgBh0B,EAAU8kB,EAAkBmP,GACpDlmC,EAASsI,KAAKk+B,EAASv0B,EAAUi0B,UAGlCnmC,KAAKC,SAASiS,EAAUi0B,GAIvC,OADAnmC,KAAKkmC,gBAAgBh0B,EAAU8kB,EAAkBmP,GAC1CnmC,KAAKC,SAASiS,EAAUi0B,IAEnC7M,kBAAmB,SAAS92B,GACxB,IAAIyuB,EAAUzuB,EAAW8I,KAAK,kBAAkB8J,GAAG,GACnD,OAAOnI,EAAcrO,QAAQgoC,kBAAkB3V,KAI3D5hB,KAAM,CACFw3B,eAAgB,SAASC,EAAQC,EAAQC,EAAiB3+B,EAAa2N,GACnE,IAAIixB,EAAeC,EACfC,EAAO,QAAUF,EAAgBH,EAAOM,aAAU,IAAWH,OAAgB,EAASA,EAAc5+B,GACpGg/B,EAAsBF,GAAQA,EAAKhL,iBACnCE,EAAuBr8B,KAAK+I,cAAc,cAC1CiuB,EAAmBqF,EAAqB7D,wBAAwB,CAChEH,OAAQyO,EAAO5iC,IACfmE,YAAaA,IAEb6sB,EAAiBmH,EAAqBlH,mBAAmB2R,EAAO5iC,KAChEojC,EAAsB7S,EAAwBuC,GAAoBA,EAAiByB,OAASzB,EAC5FuQ,EAAgB5e,KAAKM,UAAU8d,EAAOS,kBAAoB7e,KAAKM,UAAU6d,EAAOU,gBAChFC,GAAwB,EAAI5oC,EAAUD,SAAS,OAASuoC,QAAQ,IAAWA,OAAO,EAASA,EAAKO,aAAazrB,SAASjc,KAAK6L,gBApqC5H,YAqqCC87B,EAAiBb,EAAO79B,YAAc89B,EAAO99B,UAC7C2+B,EAAqB,OAAST,QAAQ,IAAWA,GAAgB,QAAUD,EAAwBC,EAAKx+B,OAAOkxB,uBAAoB,IAAWqN,OAAtF,EAAuHA,EAAsB3iC,OACzM,SAAIojC,GAAkBC,GAAsBP,IAAwBC,GAAuBC,GAAiBrS,EAAeI,SAAWmS,IAG/HznC,KAAKC,SAAS2F,MAAM5F,KAAM6F,cAI7CsB,MAAO,CACHsH,SAAU,CACNwL,yBAA0B,SAASvD,GAC/B,IACImxB,EACAzwB,EACA0wB,EACA51B,EAJOlS,KAISmS,UAChB41B,EAAkB71B,GAAYA,EAAS5G,KAAK,IALrCtL,KAKgD6L,gBAlrC5C,mBAkrC4F,wBAE3G,GAPW7L,KAMNC,SAASyW,GACVqxB,GAAmBA,EAAgBxjC,SACnCsjC,EARO7nC,KAQamV,mBAEpBiC,GADA0wB,EATO9nC,KASsBuY,yBAAyB7B,IACTM,UACjB,IAAM6wB,EAAatjC,UAAY6S,EAAqB5B,GAAG,aAAeuyB,EAAgBxqB,cAAgBnG,EAAqBmG,gBAGnJ,OAFAuqB,EAAsBhqB,OACtBgqB,EAAsBj6B,OAAOk6B,EAAgBxqB,gBACtC,GAInByqB,kBAAmB,SAASvrB,EAAaja,GACrC,IAAIylC,EAAUjoC,KACdA,KAAKC,SAAS2F,MAAM5F,KAAM6F,YAC1B,EAAIpG,EAAQyd,cAAa,WACrB,IAAI+T,EAAUzuB,EAAW8I,KAAK,cAAc0L,QACrBia,EAAQ1sB,SAAW0sB,EAAQzlB,WAAWjH,QAEzD0jC,EAAQl/B,cAAc,cAAc4wB,gBAAgBld,EAAawU,OAI7EiX,cAAe,SAASt+B,EAAOwR,GACtBpb,KAAK+I,cAAc,WAAWm6B,kBAC/BljC,KAAK+I,cAAc,cAAc4wB,gBAAgBve,EAAYxR,GAEjE5J,KAAKC,SAAS2F,MAAM5F,KAAM6F,gBAM9ClH,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCCtyCzBD,EAAQC,aAAU,EAClB,IAAIC,EAAYC,EAAuBC,EAAQ,KAC3C8N,EAAU9N,EAAQ,IAClBU,EAAUV,EAAQ,IAClBwH,EAAexH,EAAQ,MACvBkO,EAAgBnO,EAAuBC,EAAQ,MAC/CG,EAAYH,EAAQ,IACpB2jB,EAAY3jB,EAAQ,IACpBopC,EAAcppC,EAAQ,KACtBo0B,EAAkBr0B,EAAuBC,EAAQ,MACjDoO,EAAWrO,EAAuBC,EAAQ,MAC1CgO,EAAYhO,EAAQ,KACpBS,EAAQT,EAAQ,IAEpB,SAASD,EAAuBY,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAcI0oC,EAAgB,SAASjmC,GACzB,MALyB,YAKlBA,EAAKH,OAAO,mBAEnBqmC,EAAe,SAASlmC,GACxB,MAT0B,aASnBA,EAAKH,OAAO,mBAEnBsmC,EAAwB,SAASnmC,GACjC,IAAIomC,EAAmBpmC,EAAKH,OAAO,8BACnC,MAZyB,YAYrBumC,GAXsB,aAclBA,QAAJ,GAKJC,EAAgB,SAASzmC,EAAO0mC,EAAOC,EAASC,GAChD,IAAK,IAAIh2B,EAAI,EAAGA,EAAI81B,EAAQ,EAAG91B,IAAK,CAChC,IAAIrQ,EAAOP,EAAM2mC,EAAU3mC,EAAMwC,OAAS,EAAIoO,EAAIA,GAC9CrQ,IAASqmC,EAAoBrmC,EAAMqQ,IAAM81B,EAAOC,IAChDD,IAGR,OAAOA,GAEPG,EAA8B,SAAStmC,EAAMspB,GAC7C,MAAO,SAAWtpB,EAAKmF,UAAYnF,EAAKkP,UAAY,UAAYlP,EAAKmF,SAAWmkB,EAAWid,qBAAqBvmC,EAAK+M,OAErHy5B,EAA4C,WAC5C,IAAIC,EAAiB,SAAS5mC,GAC1B,IAAI6mC,EAAiB7mC,EAAK8mC,yBAAyBD,gBAAgB,GAC/DZ,EAAcjmC,KACV6mC,EAAiB,GAAK7mC,EAAK+mC,gBAAkB,GAAK/mC,EAAKgnC,wBAA0B,IAAMH,EAAiB7mC,EAAK8O,WAAa9O,EAAKgnC,wBAA0BH,EAAiB7mC,EAAK8O,WAAa9O,EAAKyV,aAAezV,EAAKgnC,uBAAyBhnC,EAAK+mC,iBAAmB/mC,EAAKZ,YAAY0d,YAClR9c,EAAKgnB,aACNhnB,EAAKgnB,YAAa,EAClBhnB,EAAK6c,eAAevL,MAAK,IAGzBtR,EAAKgnB,aACLhnB,EAAKgnB,YAAa,EAClBhnB,EAAK6c,eAAevL,MAAK,MAKrCuR,EAAS,CACTlG,KAAM,SAAS8M,GACX,IAAIzpB,EAAOnC,KACXmC,EAAKlC,SAAS2F,MAAMzD,EAAM0D,WAC1B1D,EAAKguB,OAAS,GACdhuB,EAAK+mB,WAAY,EACjB/mB,EAAK8mC,yBAA2B,IAAI1iC,EAAa6iC,wBAAwBjnC,EAAK2O,UAAW,CACrFG,SAAU,WACN,OAAO9O,EAAK8O,YAEhBo4B,gBAAiB,WACb,OAAOlnC,EAAKknC,mBAEhBC,iBAAkB,WACd,OAAOnnC,EAAKmnC,oBAEhBt4B,UAAW,SAAStL,GAChB,OAAOkmB,EAAW5a,UAAUtL,IAEhCuZ,UAAW,WACP,OAAO2M,EAAW3M,cAAgB9c,EAAKonC,mBAE3CtrB,UAAW,WACP,OAAO9b,EAAK8b,aAEhB0I,KAAM,WACF,OAAOiF,EAAWjF,QAEtB6iB,cAAe,WACXT,EAAe5mC,IAEnByV,WAAY,WACR,OAAOzV,EAAKyV,YAAW,IAE3B7V,MAAO,WACH,OAAO6pB,EAAW7pB,SAEtB0nC,cAAe,SAAS1nC,GAIpB,OAHIA,IACAI,EAAKguB,OAASpuB,GAEXI,EAAKguB,QAEhBuZ,UAAW,SAAS7hC,GAChB1F,EAAKmhB,QAAQ7P,KAAK5L,IAEtB8hC,iBAAkB,SAAS9hC,GACvB,OAAI1F,EAAK8c,YA7FV,IAgGQ9c,EAAKynC,aAAe,MAIvCC,sBAAuB,SAAS5qB,GACvBmpB,EAAcpoC,QAASA,KAAK8pC,gBAC7B9pC,KAAKmpB,WAAalK,EAClBjf,KAAKC,SAAS2F,MAAM5F,KAAM6F,YAG1B7F,KAAK+pC,eADL9qB,EACsB,IAAI8I,UAEJ,GAG9Bd,iBAAkB,WACd,IAAI9kB,EAAOnC,KACXmC,EAAKgnB,YAAa,EAClBhnB,EAAK6c,eAAevL,MAAK,GACzBtR,EAAKlC,SAAS2F,MAAMzD,EAAM0D,YAE9BwZ,mBAAoB,SAASxX,GACzB,IAAI5H,EAAWD,KAAKC,SAASgD,KAAKjD,MAClCA,KAAKipC,yBAAyBe,kBAAkB/pC,EAAU4H,IAE9DoiC,2BAA4B,SAASjpC,EAASkpC,GAC1C,IAAI/nC,EAAOnC,MACNmC,EAAKH,OAAO,oBAAsBomC,EAAcjmC,KAAU+nC,EAAeC,QAAUD,EAAeE,MAAQjoC,EAAKynC,YAAcznC,EAAKH,OAAO,kCAC1IhB,EAAQqpC,WAAQ,GAEpBloC,EAAKlC,SAAS2F,MAAMzD,EAAM0D,YAE9B9D,MAAO,WACH,OAAO/B,KAAKmwB,QAEhBvY,WAAY,SAAS0yB,GACjB,OAAIA,EACOtqC,KAAKC,WAETD,KAAKipC,yBAAyBrxB,cAEzC+O,KAAM,SAAS4jB,GACX,OAAIA,EACOvqC,KAAKC,SAASsqC,GAElBvqC,KAAKipC,yBAAyBtiB,QAEzC1H,UAAW,WACP,OAAOjf,KAAKmpB,YAEhB3W,SAAU,WACN,OAAOxS,KAAKuB,YAAYiR,YAAcxS,KAAKkpB,WAE/CshB,gBAAiB,SAASx0B,GACjBA,GACDhW,KAAKipC,yBAAyB7iB,OAAM,GAExCpmB,KAAKC,SAAS2F,MAAM5F,KAAM6F,YAE9B4kC,qBAAsB,WAClB,IAAIzlB,EAAShlB,KAAKC,SAAS2F,MAAM5F,KAAM6F,WAGvC,OAFA7F,KAAKwqC,kBACLzB,EAAe/oC,MACRglB,GAEXmlB,OAAQ,WACJnqC,KAAKuB,YAAYyP,UAAUhR,KAAKgR,aAChC,IAAI05B,EAA0B1qC,KAAKipC,yBACnC,GAAIyB,EAAyB,CACzB,IAAI5a,EAAI,IAAIpN,EAAUgE,SAStB,OARA1mB,KAAKC,SAAS2F,MAAM5F,KAAM6F,WAAWghB,MAAK,SAAS8jB,GAC/C,IAAIC,EAAgBF,EAAwBG,eACxCD,EACAA,EAAc/jB,KAAKiJ,EAAEhJ,SAASC,KAAK+I,EAAE5I,QAErC4I,EAAEhJ,QAAQ6jB,MAEf5jB,KAAK+I,EAAE5I,QACH4I,EAEP,OAAO9vB,KAAKC,SAAS2F,MAAM5F,KAAM6F,YAGzC8oB,QAAS,SAAS3tB,EAASkpC,GACvB,IAAI/nC,EAAOnC,KACP8qC,EAAmB9pC,EAAQ8pC,iBAC3Blf,EAAazpB,EAAKZ,YAyBtB,OAxBI2oC,EAAeC,QACfhoC,EAAK8mC,yBAAyB7iB,QAC9BwF,EAAW7pB,QAAQwC,OAAS,EAC5BpC,EAAK+mB,WAAY,EACjB6f,EAAe5mC,GACfA,EAAK+mB,WAAY,EACbmf,EAAalmC,IACbA,EAAK6O,UAAU,GACf4a,EAAW5a,UAAU,GACrB85B,EAAiB95B,UAAY,EAC7BhQ,EAAQgQ,UAAY,EACpB85B,EAAiBV,KAAO,IAExBxe,EAAW5a,UAAU7O,EAAK6O,aACtB4a,EAAWpqB,aACXR,EAAQgQ,UAAY7O,EAAK6O,YACzB85B,EAAiBV,KAAOjoC,EAAK6O,YAAc7O,EAAK8O,cAIpDo3B,EAAalmC,IAAS2oC,EAAiBV,MAAQjoC,EAAK4oC,gBAAkB,IACtED,EAAiBV,MAAQjoC,EAAK4oC,iBAG/B5oC,EAAKlC,SAAS2F,MAAMzD,EAAM0D,YAErC4L,QAAS,WACLzR,KAAKipC,yBAAyBx3B,UAC9BzR,KAAKC,SAAS2F,MAAM5F,KAAM6F,aASlC,MANA,CAAC,oBAAqB,mBAAoB,wBAAyB,iBAAkB,sBAAuB,uBAAwB,uBAAwB,yBAA0B,eAAgB,mBAAoB,cAAe,eAAgB,YAAa,iBAAkB,eAAgB,cAAcoqB,SAAQ,SAAS/pB,GACnU8e,EAAO9e,GAAQ,WACX,IAAIwkC,EAA0B1qC,KAAKipC,yBACnC,OAAOyB,EAAwBxkC,GAAMN,MAAM8kC,EAAyB7kC,eAGrEmf,EA/LqC,GAiM5CgmB,EAAmC,WACnC,IAAIC,EAAkB,SAASC,EAAY/0B,GACvC,IAGIg1B,EAAUD,EAAWnzB,UAAU0Y,KAHhB,SAASnpB,GACxB,OAAO,EAAIzI,EAAUD,SAAS0I,GAAKtE,OAAO,IAAMmT,GAAWlO,IAAI,MAEduZ,QAAO,SAASla,GACjE,OAAOA,KAEP6jC,EAAQ5mC,SACR2mC,GAAa,EAAIrsC,EAAUD,SAASusC,IAGxC,IADA,IAAIC,EAhPU,qBAgPCj1B,EAAgC+0B,EAAW3mC,OAAS,EAAI2mC,EAAW3mC,OACzEoO,EAAI,EAAGA,EAAIy4B,EAAUz4B,IAC1Bu4B,EAAW91B,GAAGzC,GAAGpH,UAGzB,MAAO,CACHuT,KAAM,WACF,IAAIusB,EAAuB9jC,EAAQvH,KAC/BsR,EAAiBtR,KAAK+I,cAAc,QACxC/I,KAAKC,WACLqR,EAAeg6B,YAAYhxB,KAAI,WAC3B/S,EAAMgkC,aAAaj6B,EAAeN,gBAEtCM,EAAe8N,kBAAkB9E,KAAI,YAChC/S,EAAM2L,YAAc3L,EAAMikC,kCAE/B,QAAUH,EAAwB/5B,EAAeqT,mBAAgB,IAAW0mB,GAAiCA,EAAsB/wB,KAAI,WACnI/S,EAAMikC,kCAEVxrC,KAAKwrC,gCAETA,6BAA8B,WAC1B,IAAIxgC,EAAShL,KACTsR,EAAiBtR,KAAK+I,cAAc,QACxC,IAAK/I,KAAKgC,OAAO,oBAAsBsP,EAAeN,YAAc,EAAG,CAKnEhR,KAAKqa,gBAAgBC,KAJD,SAASmxB,IACzBzgC,EAAOqP,gBAAgB9O,OAAOkgC,GAC9BzgC,EAAOugC,aAAaj6B,EAAeN,kBAK/Cu6B,aAAc,SAASv6B,GACnB,IAGI8Q,EAFAxQ,EADOtR,KACekR,gBACtBD,EAAWK,EAAiBA,EAAeL,WAAa,EAE5D,GAAIm3B,EAJOpoC,OAIgBqoC,EAJhBroC,MAIoC,CAC3C,IAAI0rC,EAAWp6B,EAAeq6B,cAC1BC,EAAYt6B,EAAeu6B,eAC3BlqB,EAAY3Q,EAAYC,EAE5B,IAAK,IAAIvL,KADToc,EAAiBH,EAAY+pB,EACXE,EACVlmC,EAAQic,IACRG,GAAkB8pB,EAAUlmC,GAASgmC,QAI7C5pB,EAAiB,EAfV9hB,KAiBNwgB,SAAS,CACVgkB,EAAG1iB,EACHrB,EAnBOzgB,KAmBCqT,eAGhBy4B,uBAAwB,SAASjkC,GAC7B7H,KAAK+rC,wBAAuB,GAC5B/rC,KAAKC,SAAS2F,MAAM5F,KAAM6F,YAE9BiV,YAAa,SAASjT,GAClB,IAAI1F,EAAOnC,KACPgsC,EAAkB,IAAIjkB,KAC1B5lB,EAAKlC,SAAS2F,MAAMzD,EAAM0D,WAC1B,IAAI+lB,EAAazpB,EAAK+O,gBAAgB3P,YACtC,GAAIqqB,GAAc/jB,EAAG,CACjB,IAAIiV,EAAYjV,EAAE9F,MAAQ8F,EAAE9F,MAAMwC,OAAS,GACvC2kC,EAAe/mC,EAAK+O,gBAAgBg4B,gBAAkB,GACtDZ,EAAsBnmC,GACtBypB,EAAWge,aAAe,IAAI7hB,KAAOikB,GAAmB9C,EAAepsB,EAEvE8O,EAAWge,YAAc,IAAI7hB,KAAOikB,IAIhD72B,gBAAiB,SAASb,GACtB,IAAIgE,EAAQtY,KAAKC,SAASqU,GAC1B,OAAOgE,GAASA,EAAM1L,IAAI,oBAE9BwH,eAAgB,SAASC,EAAgBC,GACrC,IAAInS,EAAOnC,KACPisC,EAAoB9pC,EAAK+O,gBAAgB+6B,oBAC7C,OAAIA,GAAqB9pC,EAAKH,OAAO,qBAC7B,EAAI6K,EAAQkU,cACZzM,EAAa/O,SAASpD,EAAK0J,gBAvUrB,kBAyULwI,EAAe7I,WAAWjH,OAG3B8P,EAAe7I,WAAWwL,QAAQrB,YAAYrB,GAF9CD,EAAe1R,OAAO2R,GAItB,IAAMD,EAAe7I,SAAS,SAASjH,SACvC8P,EAAe1R,OAAOR,EAAK0Y,gBAC3B1Y,EAAK+pC,eAAiB,GAEnB73B,GAEJlS,EAAKlC,SAAS2F,MAAMzD,EAAM0D,YAErCsmC,oBAAqB,SAASC,EAAcC,EAAax3B,GACrD,IAAIqN,EAAcliB,KAAKmV,gBAAgBi3B,GAAcr0B,UAEjDmK,EADA,WAAarN,EACCqN,EAAY5Z,MAAM,EAAG+jC,GAErBnqB,EAAY5Z,OAAO+jC,GAErC,IAAIC,EAA0BtsC,KAAK+I,cAAc,iBACjDmZ,EAAYuO,KAAI,SAAS1e,GACrB,IAAIuD,GAAc,EAAIzW,EAAUD,SAASmT,GACzCu6B,GAA2BA,EAAwBC,eAAej3B,EAAY8tB,QAC9E9tB,EAAY/J,aAGpBihC,iBAAkB,SAASJ,GACvB,IAAItjC,EAAoB9I,KAAK+I,cAAc,WAC3CD,GAAqBA,EAAkB2jC,cAAgBzsC,KAAKmV,gBAAgBi3B,GAAc7oC,MAAK,SAASE,EAAGnB,GACvG,IAAIoO,GAAa,EAAI7R,EAAUD,SAAS0D,GAAM+M,KAAK,WACnD,GAAIqB,EAAY,CACZ,IAAIiE,EAAS7L,EAAkB8sB,eAAellB,EAAWxM,KACzDyQ,GAAU7L,EAAkB42B,cAAc/qB,QAItDF,eAAgB,SAASH,EAAcK,GACnC,IACImzB,EADA3lC,EAAOnC,KAEPqU,EAAiBlS,EAAKqS,sBACtBK,EAAaF,GAAUA,EAAOE,WAClC,GAAI,WAAaA,GAAc,YAAcA,EAAY,CACrD,IAAIu3B,EAAe/3B,EAAe7I,WAAWwL,QACzCH,EAAW1U,EAAK2U,WAAWxC,GAC1BnS,EAAKH,OAAO,oBAAsB,IAAM6U,EAAStS,OAGlDsS,EAAS,WAAahC,EAAa,WAAa,aAAau3B,GAF7DjqC,EAAK2U,WAAWs1B,GAAc,WAAav3B,EAAa,SAAW,WAAWgC,EAASrL,YAI3F8I,EAAa/I,SACbu8B,EAAwB3lC,EAAKoW,yBAAyB6zB,GACtDnB,EAAgBnD,EAzXV,oBA0XFnzB,EAAO03B,aACPlqC,EAAKgqC,oBAAoBC,EAAcz3B,EAAO03B,YAAax3B,GAE/D1S,EAAKqqC,iBAAiBJ,QAEtBjqC,EAAKlC,SAAS2F,MAAMzD,EAAM0D,WAE9B1D,EAAKuqC,wBAETC,eAAgB,SAASj2B,EAAQN,EAASQ,EAAUyrB,GAChD,GAAKA,EAAL,CAGA,IAAIuK,EAAc5sC,KAAKkW,gBArYX,iBAqY8CE,EAASisB,GACnEuK,EAAc5sC,KAAKqX,eAAeX,EAAQk2B,GAC1C5sC,KAAKyW,gBAAgBC,EAAQk2B,EAAah2B,KAE9Ci2B,eAAgB,WAIZ,OAHiB7sC,KAAKmV,gBAAgBnV,KAAKuiB,eAAexK,UAAU0Y,KAAI,SAASnpB,GAC7E,OAAO,EAAIyF,EAAUmL,iBAAiB5Q,GAAKuG,WAInDi/B,mBAAoB,SAASC,GAOzB,IANA,IAAIz7B,EAAiBtR,KAAKkR,gBACtB0a,EAAata,EAAe/P,YAC5ByrC,EAAsB,GACtBC,EAAc37B,EAAeC,iBAC7Bm6B,EAAW,EACXwB,GAAqB,EAChBv6B,EAAI,EAAGA,EAAIo6B,EAAWxoC,OAAQoO,IAAK,CACxC,IAAIud,EAAc+c,EAAYt6B,IACzB,EAAInT,EAAM4J,WAAW8mB,KAGtB0Y,EAA4B1Y,EAAatE,KACrCshB,EACAA,GAAqB,GAErBF,EAAoB3oC,KAAKqnC,GACzBA,EAAW,IAGnBA,GAAYqB,EAAWp6B,IAG3B,OADA+4B,EAAW,GAAKsB,EAAoB3oC,KAAKqnC,GAClCsB,GAEXjB,uBAAwB,SAASoB,GAC7B,IAAIhrC,EAAOnC,KACPsR,EAAiBnP,EAAK+O,gBACtBk8B,EAAYjrC,EAAK0V,YAAc,GAEnC,GADAvG,EAAe+7B,iBAAiBD,GAC3BjrC,EAAKH,OAAO,qBAAuBomC,EAAcjmC,KAASmmC,EAAsBnmC,IAmBjF,EAAI1C,EAAQyd,cAAa,WACrB/a,EAAKmrC,oCApBgF,CACzF,IAAKH,EAAU,CACX,IAAIJ,EAAa5qC,EAAK0qC,iBAClBG,EAAsB7qC,EAAK2qC,mBAAmBC,GAClDz7B,EAAei8B,eAAeP,GAElC,IAAI55B,EAAM9B,EAAek8B,iBAAiB,SACtCC,EAASn8B,EAAek8B,iBAAiB,OACzCE,EAAUvrC,EAAKsW,mBACfk1B,EAAeD,EAAQliC,SAAS,SAASA,SAAS,mBACtDy/B,EAAgB0C,EAvbR,kBAwbRD,EAAQnqC,MAAK,SAASmC,GAClB,IAAI0Q,EAAU1Q,EAAQ,EACtBvD,EAAKyrC,uBAAyBx3B,EAC9BjU,EAAKwqC,gBAAe,EAAI9tC,EAAUD,SAASoB,MAAOoW,EAAS,MAAOhD,GAClEjR,EAAKwqC,gBAAe,EAAI9tC,EAAUD,SAASoB,MAAOoW,EAAS,SAAUq3B,GACrEtrC,EAAKyrC,wBAAyB,OAQ1CN,2BAA4B,WACxB,IACIO,EACAH,EACAI,EAHA3rC,EAAOnC,KAIPotC,EAAYjrC,EAAK0V,YAAc,GAEnC,GADwB1V,EAAK+O,gBAAgB+6B,oBACtB,CAEnByB,EADqBvrC,EAAKqS,sBACDhJ,WACzBsiC,EAAgBJ,EAAQt4B,GAAG,GAC3B,IAAI24B,EAAeL,EAAQt4B,GAAG,GAC9BjT,EAAK6rC,oBAAsBF,EAAc,GAAGnuB,aAC5Cxd,EAAK+O,gBAAgBm8B,iBAAiBD,GACtCjrC,EAAK+O,gBAAgBq8B,eAAeprC,EAAK6rC,qBACzCH,EAAgB1rC,EAAK+O,gBAAgB+8B,wBACrC,IAAI76B,EAAMjR,EAAK+O,gBAAgBs8B,oBAC/B,EAAI/tC,EAAQoe,cAAa,YACrB,EAAIsqB,EAAY+F,MAAMJ,EAAe,CACjCx6B,KAAM,EACNF,IAAKA,KAEiCjR,EAAK+pC,iBAAmB2B,GAAiB,IAAMA,IAAkB1rC,EAAKgsC,6BAA6BJ,KAAkB5rC,EAAKisC,uBAAuBN,EAAcxiC,KAAK,OAAQyiC,EAAaziC,KAAK,WAEpOnJ,EAAK+pC,eAAiB2B,EACtB1rC,EAAKksC,2BAA2BN,EAAcF,SAK9DM,6BAA8B,SAASG,GAEnC,OADqBA,EAAMhjC,KAAK,oBAA0B/G,OAAS,IACzCvE,KAAKgC,OAAO,oBAE1CosC,uBAAwB,SAASG,EAAUC,GACvC,IAAIxpB,EAASupB,EAAShqC,SAAWiqC,EAAgBjqC,OASjD,OARIygB,IACA,EAAI9lB,EAAUqE,MAAMgrC,GAAU,SAAS7oC,EAAOyM,GAC1C,GAAIA,EAAQmxB,MAAM11B,QAAU4gC,EAAgB9oC,GAAO49B,MAAM11B,MAErD,OADAoX,GAAS,KAKdA,GAEXqpB,2BAA4B,SAASpiC,EAAW4B,GAS5C,IARA,IACI8D,EADO3R,KACQ4I,mBAAmBC,oBAClCnG,EAFO1C,KAEKyuC,gBAAgB98B,GAAS+8B,KAAK,aAC1CC,EAAqB,GACrBC,EAJO5uC,KAIiBgC,OAAO,mBAzftB,kBAyfgE,GACzE6sC,EAAyB,SAAShhC,GAClC,MAAO,qBAAuBA,EAAvB,uCAA2F+gC,EAAmB,MAAQD,EAAqB,SAE7Ih8B,EAAI,EAAGA,EAAIhB,EAAQpN,OAAQoO,IAAK,CACrC,IAAIm8B,EATG9uC,KASY+uC,gBAAgBp9B,EAAQgB,IACvCq8B,EAAcF,EAAQvqC,OAAS,WAAauqC,EAAQxY,KAAK,KAAO,IAAM,GAC1EqY,GAAsB,MAAQK,EAAc,KAEhD,KAAOnhC,EA7fA,MA8fHnL,GAAQmsC,EA9fL,MA+fHhhC,GA/fG,KAigBPnL,GAAQmsC,EAAuBhhC,GAC/B5B,EAAU1G,SAlBCvF,KAkBa6L,gBA9gBlB,UA+gBNI,EAAUvJ,KAAKA,IAEnBqsC,gBAAiB,SAASpmC,GACtB,IAAImmC,EAAU,GACVl1B,EAAWjR,EAAOiR,SAClBq1B,EAAiB,WAAatmC,EAAOW,QAGzC,OAFAsQ,GAAYk1B,EAAQzqC,KAAKuV,GACzBq1B,GAAkBH,EAAQzqC,KAAKrE,KAAK6L,gBAnhBxB,gBAohBLijC,GAEXI,qBAAsB,SAASntB,GAC3B,IAAI7P,EAAW6P,GAAmB/hB,KAAKmS,UACnCg9B,EAAmBj9B,GAAYA,EAAS5G,KAAK,IAAMtL,KAAK6L,gBA1hB1C,sBA2hBlB,GAAIsjC,GAAoBA,EAAiB5qC,OACrC,OAAO4qC,GAGfzC,qBAAsB,WAClB,IACI/yB,EADO3Z,KACcgC,OAAO,kBAC5BotC,EAzhBa,YAyhBCz1B,EACd01B,EA3hBc,aA2hBD11B,EACb21B,GAJOtvC,KAImBkR,gBAAgBo4B,oBAJnCtpC,KAI8DkR,gBAAgBsB,aAAe48B,GAAeC,GACnHttB,EALO/hB,KAKgBwU,sBACvB+6B,EANOvvC,KAMuBkvC,qBAAqBntB,GACnDutB,EACKC,IACD,EAAI1wC,EAAUD,SAAS,SAAS2G,SAT7BvF,KAS2C6L,gBAziBpC,sBAyiB8ElJ,OATrF3C,KASiGgU,kBAAiB,EAAInV,EAAUD,SAAS,SAAUu0B,EAAgBv0B,SAASsT,YAAYtG,SAASmW,GAGpMwtB,GACAA,EAAuBhkC,UAInCyH,cAAe,SAASnL,GACpB,IAAI1F,EAAOnC,KACPmC,EAAK0Q,YAAc1Q,EAAK0V,YACxB1V,EAAK+O,gBAAgBs+B,oBAAoB3nC,EAAEsL,aAAaC,KAE5DjR,EAAKlC,SAAS2F,MAAMzD,EAAM0D,YAE9B8R,qBAAsB,SAASC,GAC3B,IAAIzV,EAAOnC,KACX,OAAOmC,EAAKlC,SAAS2F,MAAMzD,EAAM0D,YAAc+R,EAAa,GAljB1C,aAkjB+CzV,EAAKH,OAAO,mBAjjB5D,YAijB6GG,EAAKH,OAAO,+BAE9ImW,iBAAkB,WACd,IAAIhW,EAAOnC,KAEX,GADAmC,EAAKlC,SAAS2F,MAAMzD,EAAM0D,WACtB1D,EAAK0V,WAAY,CACjB1V,EAAK4pC,yBACL,IAAI0D,EAAiBttC,EAAK0Q,WAAa1Q,EAAKgQ,UAAUoL,eAAgB,EAAI1e,EAAUD,UAAS,EAAIiO,EAAQ6N,cAAc6C,cACnHjM,EAAiBtR,KAAKkR,gBACtB0G,EAAatG,EAAevP,QAAQwC,OACpC4S,EAAgBnX,KAAK4U,kBACrBwD,EAAapY,KAAK8X,eAAeX,GACjCi2B,EAAYx1B,EAAaQ,EAAaR,EAAa5X,KAAK6X,WAC5DvG,EAAe43B,aAAazrB,KAAKC,KAAK+xB,EAAiBrC,MAG/DnzB,yBAA0B,WACtB,IAAI+K,EAAShlB,KAAKC,SAAS2F,MAAM5F,KAAM6F,WAIvC,OAHImf,GACAhlB,KAAK+rC,yBAEF/mB,GAEX7F,WAAY,SAASF,EAAWC,GAC5B,IACIjf,EADOD,KACSC,SAChBqR,EAFOtR,KAEekR,gBACDI,EAAeN,YAAc,GAAKM,EAAekB,cAH/DxS,KAGoFkvC,yBAE3FjwB,GAAY,GAEhBhf,EAASsI,KAPEvI,KAOSif,EAAWC,IAEnCwB,YAAa,WACT,IAAIve,EAAOnC,KACPkS,EAAW/P,EAAKgQ,UACpBhQ,EAAKlC,WACDkC,EAAK2O,UAAUoB,aAAe/P,EAAKutC,eAAiBx9B,EAASuI,SAAQ,EAAI5N,EAAQ6N,aAAaC,UAAUpW,SACxGpC,EAAKutC,eAAgB,EAAInpC,EAAaopC,8BAA8Bz9B,GAAU,SAAS09B,IAC9EztC,EAAK0Q,YAAc1Q,EAAK0V,YACzB1V,EAAK+O,gBAAgBs+B,oBAAoBI,KAE9CztC,EAAK2O,UAAUoB,YAClB/P,EAAKuF,GAAG,aAAa,WACjBvF,EAAKutC,cAAcj+B,cAG3BtP,EAAK0tC,cAETA,WAAY,WACR,IAAIv+B,EAAiBtR,KAAKkR,gBACtBI,GAAkBA,EAAeu+B,YACjCv+B,EAAeu+B,cAGvBC,gBAAiB,SAASC,GACtB,IACI13B,EADAhL,EAAarN,KAAKuS,gBAEtBvS,KAAKC,SAAS2F,MAAM5F,KAAM6F,WACtB,YAAc7F,KAAKgC,OAAO,oBAC1BqW,EAAWhL,EAAaA,EAAWgL,WAAarY,KAAKmS,UACrDnS,KAAKC,SAAS8vC,EAAQ13B,EAAS7M,SAAS,IAAMxL,KAAK6L,gBApnB/C,YAonB+EL,SAAS,SAAWxL,KAAK6L,gBAtnBlG,iBAsnByI,QAG3J4F,QAAS,WACLyP,aAAalhB,KAAKgwC,kBAClBhwC,KAAKC,aAlZsB,GAsZnCL,EAAW,CACX8G,eAAgB,WACZ,MAAO,CACH8G,UAAW,CACPyiC,QAAS,IACTC,cAAe,IACfC,WAAY,EACZC,mBAAoB,IACpBC,sBAAsB,EACtBC,YAAa,EACb1pC,KAAM,WACN2pC,gBAAgB,EAChBhI,iBAAkB,WAClBiI,qBAAqB,KAIjCtpC,UAAW,CACPupC,kBAAmB3H,EACnBrkB,YAAa,CACTpV,KAAM,WACF,IAAIqhC,EAAU,CACVnqB,mBAAoB,WAChB,IAAIoqB,EAAa3wC,KAAKC,SAAS2F,MAAM5F,KAAM6F,aAAe,IAAI6c,EAAUgE,UAAUI,UAAUK,UAE5F,OADAwpB,EAAW9pB,KAAK7mB,KAAK4wC,gBAAgB3tC,KAAKjD,OACnC2wC,GAEXE,eAAgB,WACZ,IAAIP,EAActwC,KAAKgC,OAAO,yBAC1BiP,EAAWjR,KAAKiR,WACpB,OAAOA,GAAYA,EAAWq/B,EAAcr/B,EAAWq/B,GAE3DnG,OAAQ,WACJ,IAAIhoC,EAAOnC,KACP8wC,EAAuB3uC,EAAK4uC,uBAAyB5uC,EAAKZ,YAC1DogB,EAAYmvB,GAAwBA,EAAqBE,yBACzDhsB,EAAShlB,KAAKC,SAAS2F,MAAM5F,KAAM6F,WACvC,OAAOmf,GAAUA,EAAO6B,MAAK,WACzB,GAAIuhB,EAAcjmC,IAASmmC,EAAsBnmC,GAAO,CACpD,IAAI8uC,EAAiB9uC,EAAKgP,oBACtB/I,EAAWqV,KAAKyzB,MAAMvvB,GAAasvB,EACnCngC,EAAY3O,EAAK2O,UACjBzD,EAAayD,EAAUyB,eAAiBzB,EAAUyB,gBAClD4+B,EAAqBhvC,EAAKypB,aAAase,iBAAiBvjC,QAC5D,GAAI0G,IAAelL,EAAKH,OAAO,qBAAuBmvC,EAAoB,CACtE,IAAIp/B,EAAajB,EAAUuyB,cAAcj7B,GACrCkN,EAAcvD,GAAcA,EAAW,KAAM,EAAIlT,EAAUD,SAASmT,EAAW,IAC/EqB,EAAMkC,GAAeA,EAAY+sB,WAAWjvB,IAC5CiL,EAAiBlR,EAASvO,QAAQ0f,QAAUnR,EAASvO,QAAQ2f,SAAW,GAExEnL,GADmBjG,EAASvO,QAAQ6f,SAAWtR,EAASvO,QAAQ2pB,MAAQlK,EAAiB,EAAI,KAE7FjL,EAAMqK,KAAK0E,MAAM/O,EAAMkC,EAAYiI,eAAiBoE,EAAY,IAChEtU,EAAWmT,SAAS,CAChBgkB,EAAGpxB,WAO3Bw9B,gBAAiB,WACb,IAAIzuC,EAAOnC,KACPoxC,EAAuB9I,EAAsBnmC,GACjD,GAAI,YAAcA,EAAKH,OAAO,oBAAqB,IAASovC,IAAwB,IAAUA,GAAwBjvC,EAAKH,OAAO,qBAAuBG,EAAKH,OAAO,yBAGjK,OAFAG,EAAKkvC,cAAgB,UACrBlvC,EAAK4uC,sBAAwB,MAGjC,IAAI//B,GAAao3B,EAAcpoC,OAASmC,EAAK6O,aAAe7O,EAAK8b,YAAc9b,EAAK8b,YAAc,EAAI9b,EAAK6O,YAC3G7O,EAAKmvC,cAAgB7zB,KAAKC,KAAK1M,EAAY7O,EAAK8O,WAAa9O,EAAK0uC,kBAClE1uC,EAAKkvC,cAAgB,GACrB,IAAIE,EAAkB,SAASjvC,GAC3B,OAAOsmC,EAA4BtmC,EAAMH,EAAKZ,cAElDY,EAAK4uC,sBAAwB,IAAIxqC,EAAa6iC,wBAAwBjnC,EAAK2O,UAAW,CAClFG,SAAU,WACN,OAAO9O,EAAK0uC,kBAEhBxH,gBAAiB,WACb,OAAOjB,EAAcjmC,GAAQA,EAAKknC,kBAAoBlnC,EAAKguB,OAAO3O,OAAO+vB,GAAiBhtC,QAE9F+kC,iBAAkB,WACd,OAAO,GAEXt4B,UAAW,SAAStL,GAIhB,YAHI,IAAWA,IACXvD,EAAKmvC,cAAgB5rC,GAElBvD,EAAKmvC,eAEhBryB,UAAW,WACP,OAAO9c,EAAK8c,aAEhBhB,UAAW,WACP,IAAIA,EAAYR,KAAKC,KAAK1d,KAAKqpC,kBAAoBrpC,KAAKiR,YACxD,OAAOgN,GAAwB,GAEnC0I,KAAM,WACExkB,EAAK4uC,sBAAsB//B,aAAehR,KAAKie,cAC/C9b,EAAKmvC,cAAgBtxC,KAAKie,YAAc,EACxC9b,EAAK4uC,sBAAsB//B,UAAU7O,EAAKmvC,iBAEzCnvC,EAAK4uC,sBAAsBxvC,YAAYQ,QAAQwC,QAAUvE,KAAKqpC,mBAGnElnC,EAAK4uC,sBAAsB/G,mBAAkB,SAASr1B,IAClDA,EAASA,GAAU,IACZE,WAAaF,EAAOE,YAAc,UACzCF,EAAO5S,MAAQ4S,EAAO5S,OAASI,EAAKkvC,cACpClvC,EAAKkvC,cAAcphB,SAAQ,SAAS3tB,EAAMoD,GACtCpD,EAAK8F,SAAW1C,KAEpBvD,EAAKqvC,aAAa78B,OAG1B60B,cAAe,aACf5xB,WAAY,WACR,OAAOzV,EAAK4uC,sBAAsBxvC,YAAYQ,QAAQyf,OAAO+vB,GAAiBhtC,QAElFktC,aAAc,SAAS1vC,EAAO0mC,EAAOC,GACjC,OAAOF,EAAczmC,EAAO0mC,EAAOC,GAAS,SAASpmC,EAAMovC,EAAiBhJ,GACxE,OAAIpmC,EAAKkP,SACEkgC,IAAoBhJ,EAE3BgJ,GAAmBhJ,GACXpmC,EAAKkP,SAEV+/B,EAAgBjvC,OAG/BP,MAAO,SAAS4vC,GACZ,IAAI/lB,EAAazpB,EAAKypB,aAClBqgB,EAAoBrgB,GAAcA,EAAWqgB,oBAC7C2F,EAAQ3F,EAAoBA,EAAkB2F,MAAQ,EACtDtB,EAAcnuC,EAAK0uC,iBACnBzG,EAAOjoC,EAAKmvC,cAAgBhB,EAAcsB,EAC1CC,EAAOvB,EACPtrB,EAAS7iB,EAAKguB,OAClB,OAAIia,EAAO,EACA,IAEPA,IACAA,EAAOpqC,KAAKyxC,aAAazsB,EAAQolB,GACjCplB,EAASA,EAAO1c,MAAM8hC,IAEtByH,IACAA,EAAO7xC,KAAKyxC,aAAazsB,EAAQ6sB,GACjC7sB,EAASA,EAAO1c,MAAM,EAAGupC,IAEtBF,EAAgB3sB,EAAOxD,OAAO+vB,GAAmBvsB,IAE5DykB,cAAe,SAAS1nC,GAIpB,OAHIA,IACAI,EAAKkvC,cAAgBtvC,GAElBI,EAAKkvC,eAEhB3H,UAAW,aACXC,iBAAkB,SAAS9hC,GACvB,IAAI+jB,EAAazpB,EAAKypB,aACtB,OAAIA,EAAW3M,YApxB5B,KAuxBqB,OAAS2M,QAAc,IAAWA,OAAa,EAASA,EAAWge,cAAgB,KAEhG,GACHznC,EAAK4uC,sBAAsBe,gBAAgBx3B,KAAI,WAC3C,IAAIy3B,EACJ,QAAUA,EAAoB5vC,EAAKZ,mBAAgB,IAAWwwC,GAA6BA,EAAkBC,qBAAqB7vC,EAAK4uC,sBAAsB5H,2BAE7JhnC,EAAKqQ,YACLrQ,EAAK4uC,sBAAsBpqB,QAGnCsrB,iBAAkB,SAASt9B,GACvB,IAAIkI,EAAS7c,KACTkyC,EAAQlyC,KAAKuvB,mBACjBvvB,KAAKC,SAAS2F,MAAM5F,KAAM6F,WAC1B,IAAIirC,EAAuB9wC,KAAK+wC,sBAChC,GAAID,EAAsB,CACtB,IAAIqB,EAAenyC,KAAKqxC,cACpBe,EAAY,YAAcz9B,EAAOE,YAAcF,EAAOqB,aAC1D,GAAI,WAAarB,EAAOE,YAAcF,EAAO5S,QAAU4S,EAAO5S,MAAMwC,OAChE,OAEA6tC,GAAa,WAAaz9B,EAAOE,YAAc,YAAcF,EAAOE,YACpEF,EAAO0qB,QAAS,EAChB+S,GAAatB,EAAqB1qB,OAAM,GACxC0qB,EAAqBnqB,SAEjB,WAAahS,EAAOE,WACpBF,EAAOM,WAAWgb,SAAQ,SAAS7nB,EAAU1C,GACzC,IAAImP,EAAaF,EAAO1K,YAAYvE,GAChC2sC,EAAU19B,EAAO5S,MAAM2D,GACvB,WAAamP,EACbs9B,EAAa/pC,GAAYiqC,EAErB,WAAax9B,EACbs9B,EAAavU,OAAOx1B,EAAU,EAAGiqC,GAE7B,WAAax9B,GACbs9B,EAAavU,OAAOx1B,EAAU,OAM9C+pC,EAAaliB,SAAQ,SAAS3tB,EAAMoD,GAChCysC,EAAazsC,GAASmX,EAAOsT,OAAOzqB,EAAQwsC,IAAUC,EAAazsC,MAEvEiP,EAAO5S,MAAQowC,GAEnBA,EAAaliB,SAAQ,SAAS3tB,EAAMoD,GAChCpD,EAAK8F,SAAW1C,QAKhCsqB,aAAc,SAASrb,GACnB,IAAIxS,EAAOnC,KACP+B,EAAQ4S,EAAO5S,MACf8S,EAAaF,EAAOE,WACpBw3B,EAAc13B,EAAO03B,YACzB,GAAIA,EAAa,CACb,IAAI3D,EAAU,YAAc7zB,EAC5Bw3B,EAAc7D,EAAcrmC,EAAKguB,OAAQkc,EAAa3D,GAAS,SAASpmC,EAAMovC,GAC1E,MAAO,SAAWpvC,EAAKmF,UAAYnF,EAAKkP,UAAY,UAAYlP,EAAKmF,UAAYtF,EAAKZ,YAAYsnC,qBAAqBvmC,EAAK+M,OAASqiC,MAEzI/8B,EAAO03B,YAAcA,EAEzB,OAAQx3B,GACJ,IAAK,UACD1S,EAAKguB,OAAOmiB,QAAQ1sC,MAAMzD,EAAKguB,OAAQpuB,GACnCsqC,GACAlqC,EAAKguB,OAAOyN,QAAQyO,GAExB,MACJ,IAAK,SACDlqC,EAAKguB,OAAO9rB,KAAKuB,MAAMzD,EAAKguB,OAAQpuB,GAChCsqC,GACAlqC,EAAKguB,OAAOyN,OAAO,EAAGyO,GAE1B,MACJ,QACIlqC,EAAKlC,SAAS0U,KAG1B5S,MAAO,SAASwwC,GACZ,OAAOA,EAAWvyC,KAAKmwB,OAASnwB,KAAKqxC,eAAiBrxC,KAAKmwB,QAE/DZ,iBAAkB,WACd,IAAI4iB,EAAenyC,KAAKqxC,cACpBa,EAAQ,EAIZ,OAHIC,GAAgBA,EAAa,KAC7BD,EAAQlyC,KAAKmwB,OAAOyH,QAAQua,EAAa,KAEtCD,EAAQ,EAAI,EAAIA,GAE3B/gC,kBAAmB,SAASqhC,GACxB,IAAIvwB,EAAS,EACT2J,EAAa5rB,KAAK4rB,aAClBklB,EAAuB9wC,KAAK+wC,sBAQhC,OAPID,IAAyB0B,EACzBvwB,EAAS6uB,EAAqB9H,iBAAmB8H,EAAqBvvC,YAAY0P,WAE9E,YAAcjR,KAAKgC,OAAO,mBAAqB4pB,IAC/C3J,EAAS2J,EAAWod,iBAAmBpd,EAAW3a,YAGnDgR,GAEXinB,aAAc,WACV,IAAI4H,EAAuB9wC,KAAK+wC,sBAChCD,GAAwBA,EAAqB5H,aAAatjC,MAAMkrC,EAAsBjrC,WACtF,IAAI+lB,EAAa5rB,KAAKuB,YACtB,OAAOqqB,GAAcA,EAAWsd,aAAatjC,MAAMgmB,EAAY/lB,YAEnEwnC,iBAAkB,WACd,IAAIyD,EAAuB9wC,KAAK+wC,sBAChCD,GAAwBA,EAAqBzD,iBAAiBznC,MAAMkrC,EAAsBjrC,WAC1F,IAAI+lB,EAAa5rB,KAAKuB,YACtB,OAAOqqB,GAAcA,EAAWyhB,iBAAiBznC,MAAMgmB,EAAY/lB,YAEvE2pC,oBAAqB,WACjB,IAAIsB,EAAuB9wC,KAAK+wC,sBAC5BnlB,EAAa5rB,KAAKuB,YAClBuvC,EACAA,EAAqBtB,oBAAoB5pC,MAAMkrC,EAAsBjrC,WAErE,OAAS+lB,QAAc,IAAWA,GAAsBA,EAAW4jB,oBAAoB5pC,MAAMgmB,EAAY/lB,YAGjH0nC,eAAgB,SAASkF,GACrB,IAAI3B,EAAuB9wC,KAAK+wC,sBAChCD,GAAwBA,EAAqBvD,eAAekF,GAC5D,IAAI7mB,EAAa5rB,KAAKuB,YACtB,OAAOqqB,GAAcA,EAAW2hB,eAAekF,IAEnD5C,WAAY,WACR,IAAIiB,EAAuB9wC,KAAK+wC,sBAChCD,GAAwBA,EAAqBjB,aAC7C,IAAIjkB,EAAa5rB,KAAKuB,YACtB,OAAOqqB,GAAcA,EAAWikB,cAEpClE,YAAa,WACT,IAAImF,EAAuB9wC,KAAK+wC,sBAChC,GAAID,EACA,OAAOA,EAAqBnF,YAAY/lC,MAAMkrC,EAAsBjrC,WAExE,IAAI+lB,EAAa5rB,KAAKuB,YACtB,OAAOqqB,GAAcA,EAAW+f,YAAY/lC,MAAMgmB,EAAY/lB,YAElEgmC,aAAc,WACV,IAAIiF,EAAuB9wC,KAAK+wC,sBAChC,GAAID,EACA,OAAOA,EAAqBjF,aAAajmC,MAAMkrC,EAAsBjrC,WAEzE,IAAI+lB,EAAa5rB,KAAKuB,YACtB,OAAOqqB,GAAcA,EAAWigB,aAAajmC,MAAMgmB,EAAY/lB,YAEnE2nC,iBAAkB,WACd,IAAIsD,EAAuB9wC,KAAK+wC,sBAChC,GAAID,EACA,OAAOA,EAAqBtD,iBAAiB5nC,MAAMkrC,EAAsBjrC,WAE7E,IAAI+lB,EAAa5rB,KAAKuB,YACtB,OAAOqqB,GAAcA,EAAW4hB,iBAAiB5nC,MAAMgmB,EAAY/lB,YAEvE8oB,QAAS,SAAS3tB,GACd,IAAI4qB,EAAa5rB,KAAKuB,YAItB,OAHIqqB,GAAc5qB,GAAWA,EAAQ2lB,MAAQ0hB,EAAaroC,OACtD4rB,EAAW8mB,yBAER1yC,KAAKC,SAAS2F,MAAM5F,KAAM6F,YAErC4L,QAAS,WACL,IAAIq/B,EAAuB9wC,KAAK+wC,sBAChCD,GAAwBA,EAAqBr/B,UAC7CzR,KAAKC,SAAS2F,MAAM5F,KAAM6F,YAE9BomC,kBAAmB,WACf,IAAI6E,EAAuB9wC,KAAK+wC,sBAChC,GAAID,EACA,OAAOA,EAAqB7E,kBAAkBrmC,MAAMkrC,EAAsBjrC,WAE9E,IAAI+lB,EAAa5rB,KAAKuB,YACtB,OAAO,OAASqqB,QAAc,IAAWA,OAAa,EAASA,EAAWqgB,kBAAkBrmC,MAAMgmB,EAAY/lB,aAKtH,OAFAoH,EAAcrO,QAAQ+zC,YAAYjC,EAAS,yBAC3CzjC,EAAcrO,QAAQ+zC,YAAYjC,EAAS,wBACpCA,EA3UL,GA6UNkC,SAAU,CACNC,OAAQ,WACJ,IAEI7tB,EAFA7iB,EAAOnC,KACPC,EAAWkC,EAAKlC,SAEpB,GAAKkC,EAAKH,OAAO,qBAAuBomC,EAAcjmC,KAASmmC,EAAsBnmC,GAkBjF6iB,EAAS/kB,EAAS2F,MAAMzD,OAlBiE,CACzF+e,aAAa/e,EAAK2wC,gBAClB,IAAIC,EAAO,IAAIhrB,KAAO5lB,EAAK6wC,UACvB9C,EAAgB/tC,EAAKH,OAAO,2BAC5BG,EAAK6wC,WAAaD,EAAO7C,GACzBlrB,EAAS,IAAItC,EAAUgE,SACvBvkB,EAAK2wC,eAAiBrpC,YAAW,WAC7BxJ,EAAS2F,MAAMzD,GAAM0kB,KAAK7B,EAAO8B,SAASC,KAAK/B,EAAOkC,QACtD/kB,EAAK6wC,UAAY,IAAIjrB,OACtBmoB,GACH/tC,EAAK6wC,UAAY,IAAIjrB,OAErB/C,EAAS/kB,EAAS2F,MAAMzD,GACpBA,EAAK+O,gBAAgBsB,aACrBrQ,EAAK6wC,UAAY,IAAIjrB,OAMjC,OAAO/C,GAEXvT,QAAS,WACLzR,KAAKC,SAAS2F,MAAM5F,KAAM6F,WAC1Bqb,aAAalhB,KAAK8yC,mBAI9B3rC,MAAO,CACHsH,SAAUu8B,KAItBrsC,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCC5hCzBD,EAAQyqC,6BAA0B,EAClCzqC,EAAQs0C,sBAAwBA,EAChCt0C,EAAQu0C,mBAAgB,EACxBv0C,EAAQgxC,6BAA+BA,EACvC,IAAI9wC,EAAYC,EAAuBC,EAAQ,KAC3C8N,EAAU9N,EAAQ,IAClBsH,EAAiBvH,EAAuBC,EAAQ,KAChDoO,EAAWrO,EAAuBC,EAAQ,MAC1CS,EAAQT,EAAQ,IAChBgO,EAAYjO,EAAuBC,EAAQ,MAC3CG,EAAYH,EAAQ,IACpBo0C,EAASr0C,EAAuBC,EAAQ,MACxC2jB,EAAY3jB,EAAQ,IACpBq0C,EAAat0C,EAAuBC,EAAQ,MAEhD,SAASD,EAAuBY,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAEI0oC,EAAgB,SAASjmC,GACzB,MAFyB,YAElBA,EAAKH,OAAO,mBAAgDG,EAAKkxC,YAExEhL,EAAe,SAASlmC,GACxB,MAN0B,aAMnBA,EAAKH,OAAO,oBAAkDG,EAAKkxC,YAE1EC,EAAsB,SAASnxC,GAC/B,OAAOA,EAAKH,OAAO,kCAAoCG,EAAKkxC,YAAclxC,EAAKoxC,mBAAqB,GAEpGL,EAAgB,SAASM,GACzB,OAAOA,EAAOn3B,kBAAoB,GAItC,SAAS42B,EAAsBQ,GAC3B,OAAIA,EAAQlrB,KACD,IAEHkrB,EAAQh1B,QACD,IAGR,KAAOy0B,GAAc,EAAIrmC,EAAQ6N,cAG5C,SAASi1B,EAA6Bz9B,EAAUwhC,EAAsBC,GAClE,IAAIC,EACAC,EAAkB,GAClBC,EAAgB,GAChBC,EAAe,GAGnB,SAASC,EAAiB3mC,GACtB,IAAI4mC,EAAqB5mC,EAAW8E,QAAU9E,EAAW6E,WAAa7E,EAClE6mC,EAAmBnnC,EAAUnO,QAAQqjB,OAAOgyB,GAChD,OAAKC,EAGE7mC,EAAW8mC,aAAeD,EAAiB9gC,IAAMlB,EAAS+P,SAAS7O,KAF/DlB,EAAS+P,SAAS7O,IAYjC,IAAIghC,EAAuB,CACvB1sC,GAAI,SAAS2F,EAAYgnC,EAAWC,GAChCjnC,EAAW3F,GAAG,SAAU4sC,IAE5B9qB,IAAK,SAASnc,EAAYgnC,EAAWC,GACjCjnC,EAAWmc,IAAI,SAAU8qB,KAIjC,SAASC,EAAwBX,GAC7B,IAAIY,EAAa,cAAgBZ,EAAe3rC,IAAI,GAAGwsC,SACnDpnC,EAAaumC,EAAevkC,KAAK,gBACjCqlC,EAAiBN,EACrB,GAAK/mC,IACDA,EAAamnC,IAAc,EAAI31C,EAAUD,UAAS,EAAIiO,EAAQ6N,eAAiB,SAAWk5B,EAAep9B,IAAI,cAAgBo9B,EAC7Hc,EAAiBruC,EAAezH,QAC3ByO,GAHT,CAOA,IAAIinC,EA3BR,SAAmCjnC,GAC/B,OAAO,WACH,IAAI8mC,EAAY9mC,EAAW8mC,YAAcH,EAAiB3mC,GAE1DqmC,EADAS,EAAYA,EAAY,EAAIA,EAAY,IAwB9BQ,CAA0BtnC,GACxCqnC,EAAehtC,GAAG2F,EAAY,SAAUinC,GACxCR,EAAczvC,MAAK,SAASuwC,GACxB,IAAIC,EAAYb,EAAiB3mC,GAC7BynC,EAAeznC,EAAWmT,SAAW,WAAa,YAClDo0B,EAAMC,GAAa,GACnBxnC,EAAWynC,GAAcF,EAAMC,MAGvChB,EAAgBxvC,KAAKgJ,GACrB0mC,EAAa1vC,MAAK,WACdqwC,EAAelrB,IAAInc,EAAY,SAAUinC,OAGjD,IAAKV,GApDLD,EAAiBA,GAAkBzhC,GAoDElP,SAAU4wC,EAAervC,OAAQqvC,EAAiBA,EAAe5wC,SAClGuxC,EAAwBX,GAE5B,MAAO,CACHpzB,SAAU,SAASo0B,IACf,EAAI11C,EAAUqE,MAAMuwC,GAAe,SAASrwC,EAAG+c,GAC3CA,EAASo0B,OAGjBnjC,QAAS,YACL,EAAIvS,EAAUqE,MAAMwwC,GAAc,SAAStwC,EAAGgO,GAC1CA,SAjFhB9S,EAAQu0C,cAAgBA,EAsFxB,IAAI9J,EAA0B+J,EAAOv0C,QAAQiB,QAAQ,WACjD,IA2BIk1C,EAAsB,SAAS5yC,EAAM6yC,GACrC,IAAIzE,EAAiBpuC,EAAKH,OAAO,4BAC7Bic,EA7BmB,SAAS9b,GAChC,IAAI8O,EAAW9O,EAAKZ,YAAY0P,WAEhC,GADqB9O,EAAKH,OAAO,4BAE7B,OAAO,EAEX,IAAIizC,EAAmB9yC,EAAK+yC,cAC5B,GAAI9M,EAAcjmC,KAAUA,EAAKH,OAAO,oBAAsBG,EAAKH,OAAO,kCAAmC,CACzGizC,EAAmB,EAMnB,IALA,IAAI/L,EAAe/mC,EAAK+yC,cAAgB/yC,EAAKgzC,kBACzClzB,EAAS9f,EAAKqrC,mBACdnL,EAAWlgC,EAAK4K,WAAa,EAC7Bk/B,EAAoB9pC,EAAK8pC,oBACzB5C,EAAkBlnC,EAAKZ,YAAY8nC,kBAC9B1nB,EAAYsqB,EAAkB2F,MAAOjwB,EAAY0nB,KAClDpnB,GAAUogB,EAAW6G,GAD8CvnB,IAAa,EAKpFM,GADe9f,EAAKizC,WAAWzzB,IAAcxf,EAAKgzC,oBAEpC9S,GACV4S,KAIZ,OAAOhkC,GAAYgkC,EAAmB,EAAIx3B,KAAKC,KAAKu3B,EAAmBhkC,GAAY,EAInEokC,CAAqBlzC,GAarC,OAZI8b,IACI+2B,EACA/2B,EAAYsyB,EAAiB,EAAI,GAE7BA,GACAtyB,KAEAoqB,EAAalmC,IAAUmxC,EAAoBnxC,IAC3C8b,MAILA,GAmCX,SAASq3B,EAAkBnzC,GACvB,OAAOA,EAAKozC,OAAOhxC,OAASpC,EAAKozC,OAAO,GAAGvkC,WAAa,EAG5D,SAASwkC,EAAgBrzC,GACrB,OAAOA,EAAKozC,OAAOhxC,OAASpC,EAAKozC,OAAOpzC,EAAKozC,OAAOhxC,OAAS,GAAGyM,WAAa,EAEjF,IAAIykC,EAAc,SAAStzC,EAAMmhB,EAASrd,GACtC9D,EAAKuzC,kBAAmB,EACxBpyB,EAAQrd,GACR9D,EAAKuzC,kBAAmB,GAExBC,EAAsB,SAASxzC,EAAMmhB,EAASrd,GAC9C,GAAI9D,EAAKyzC,gBAGL,OAFAzzC,EAAKyzC,iBAAkB,EACvBH,EAAYtzC,EAAMmhB,EAASrd,IACpB,GAGX4vC,EAAiB,SAAS1zC,EAAMmhB,EAASzO,EAAYihC,EAAgBC,GACrE,IAAInqB,EAAazpB,EAAKZ,YAClBQ,EAAQ6pB,EAAW7pB,QAAQuG,QAC3BqM,GAAS,EAAInV,EAAMw2C,UAAUnhC,GAAcA,OAAa,EACxDohC,EAAY,YAAcphC,EAC1B40B,EAAgB7d,EAAW6d,gBAC3B50B,IAAc,EAAIrV,EAAMkd,UAAU7H,KAAgB1S,EAAKyzC,kBACvDjhC,EAAS,CACLE,WAAYA,EACZ9S,MAAOA,GAEPg0C,IACAphC,EAAO03B,YAAc0J,EAAgBn+B,WACjCjD,EAAO03B,aAAezgB,EAAW6lB,eACjC98B,EAAO03B,YAAczgB,EAAW6lB,aAAahI,EAAe90B,EAAO03B,YAAa4J,MAI5F,IAAIC,EAAkBH,EAAkBA,EAAgBI,YAAc,EAClED,GAAmBtqB,EAAW6lB,eAC9ByE,EAAkBtqB,EAAW6lB,aAAahI,EAAeyM,EAAiBD,IAE1E,WAAaphC,GACb40B,EAAcplC,KAAKuB,MAAM6jC,EAAe1nC,GACpCg0C,GACAtM,EAAc7L,OAAO,EAAGsY,IAGxBD,GACAxM,EAAc6I,QAAQ1sC,MAAM6jC,EAAe1nC,GACvCg0C,GACAtM,EAAc7L,QAAQsY,IAG1B/zC,EAAKZ,YAAYkoC,cAAc1nC,GAGvC6pB,EAAW4d,gBACXrnC,EAAKi0C,eAAiBj0C,EAAK6O,YAC3B7O,EAAKyzC,gBAAkBE,EAClBA,GACDL,EAAYtzC,EAAMmhB,EAAS3O,IAanC,MAAO,CACH0hC,KAAM,SAASvlC,EAAW8a,EAAY0qB,GACvBt2C,KACNuB,YAAcqqB,EADR5rB,KAEN8Q,UAAYA,EAFN9Q,KAGN28B,WAHM38B,KAGYo2C,eAAiBxqB,EAAW5a,YAHxChR,KAINk1C,cAAgB,EAJVl1C,KAKNm1C,kBAAoB,GALdn1C,KAMNuzC,oBAAsB,EANhBvzC,KAONo1C,WAAa,GAPPp1C,KAQNu2C,WAAa,EARPv2C,KASNmwB,OAAS,GATHnwB,KAUNu1C,OAAS,GAVHv1C,KAWNqzC,WAAaiD,EAXPt2C,KAYNw2C,oBAAsB,GAZhBx2C,KAaN8xC,iBAAkB,EAAIsB,EAAWx0C,YAE1CitC,aAAc,WACV,OAAO7rC,KAAKo1C,YAEhBpzC,OAAQ,WACJ,OAAOhC,KAAK8Q,UAAU9O,OAAO4D,MAAM5F,KAAK8Q,UAAWjL,YAEvDomC,kBAAmB,WACf,IACIj7B,EACA4G,EAAa,EACjB,GAAIwwB,EAHOpoC,MAGc,EACrBgR,EAAYskC,EAJLt1C,OAKS,IACZgR,EANGhR,KAMcuB,YAAYyP,aAEjC,IAAIylC,EAAkBzlC,EARfhR,KAQgCuB,YAAY0P,WAGnD,OAFA2G,EATO5X,KASWu1C,OAAOhxC,OATlBvE,KASgCuB,YAAY0P,WAE5C,CACH2gC,MAAO6E,EACPC,IAHgBj5B,KAAKk5B,IAAI,EAVtB32C,KAU8BuB,YAAY8nC,kBAAoBzxB,EAAa6+B,MAO1FjH,oBAAqB,SAASnN,GAC1B,IAAIlgC,EAAOnC,KACPglB,EAAS,IAAItC,EAAUgE,SACvBkwB,EAAmBn5B,KAAKo5B,IAAI10C,EAAKH,OAAO,sBAAwB,EAAGG,EAAKZ,YAAYooC,oBAcxF,OAbIiN,EAAmBz0C,EAAKH,OAAO,kCAC/B40C,EAAmBz0C,EAAKH,OAAO,yBAA2B,GAE9Dkf,aAAa/e,EAAK6tC,kBACd4G,EAAmB,EACnBz0C,EAAK6tC,iBAAmBvmC,YAAW,WAC/BtH,EAAK20C,yBAAyBzU,GAC9Brd,EAAO8B,YACR8vB,IAEHz0C,EAAK20C,yBAAyBzU,GAC9Brd,EAAO8B,WAEJ9B,EAAOmC,WAElB4vB,oBAAqB,WACjB,OAAO/2C,KAAK+M,WAAa,GAE7BikC,uBAAwB,WAOpB,IANA,IACI3O,EADOriC,KACS+M,UAChBiqC,EAFOh3C,KAEgB2rC,cACvB1pB,EAAS,EACTg1B,EAAa,EACbC,EAAsBnjB,OAAO/E,KALtBhvB,KAKgCo1C,YAAYz0C,QAAQ,GACtDgS,EAAI,EAAGA,EAAIukC,EAAoB3yC,QAAU0d,EAASogB,EAAU1vB,IAAK,CACtE,IAAIwkC,EAAqBC,SAASF,EAAoBvkC,IAClD0kC,GAAkBhV,EAAWpgB,GAAU+0B,EAC3C,GAAIG,EAAqB,GAAKF,EAAaI,EAAiBF,EAAoB,CAC5EF,GAAcI,EACd,MAGAp1B,IADAo1B,EAAiBF,EAAqBF,GACXD,EAC3BC,GAAcI,EAElB,IAAI3L,EAjBG1rC,KAiBao1C,WAAW+B,GAE/BF,IADAh1B,GAAUypB,GACarJ,EAAW,GAAKA,EAAWpgB,EAASypB,GAAYA,EAE3E,OAAOjuB,KAAK0E,MAAM,GAAK80B,GAAc,IAEzCH,yBAA0B,SAASzU,GAC/BriC,KAAK+M,UAAYs1B,EACjB,IAAI1gB,EAAY3hB,KAAKgxC,yBACjBhsB,EAAShlB,KAAKgyC,qBAAqBrwB,GAEvC,OADA3hB,KAAK8xC,gBAAgBr+B,OACduR,GAEXuoB,eAAgB,SAAS+J,GACrB,IAAIn1C,EAAOnC,KACPyyC,EAAQ9qB,MAAMC,QAAQ0vB,IAASA,EAC/BrL,EAAoB9pC,EAAK8pC,oBAO7B,GANIwG,IACA6E,EAAO7E,EAAMz6B,QAAO,SAAS0Y,EAAGC,GAC5B,OAAOD,EAAIC,IACZ,IAEPxuB,EAAKo1C,aAAeD,EAChBrL,EAAmB,CACfwG,GACAA,EAAMxiB,SAAQ,SAASqnB,EAAM5xC,GACzBvD,EAAKizC,WAAWnJ,EAAkB2F,MAAQlsC,GAAS4xC,KAG3D,IAAIE,GAAsBvL,EAAkB2F,MAAQ3F,EAAkByK,IAAMv0C,EAAKyV,cAAgBzV,EAAKgzC,kBAClGsC,EAAqBxE,EAAsB9lC,EAASvO,SAEpDuD,EAAKo0C,WADLiB,EAAqBC,EACHA,EAAqBD,EAErB,IAI9B7L,YAAa,WACT,OAAO3rC,KAAKm1C,kBAAoBn1C,KAAKu2C,YAEzCmB,cAAe,SAAS/1B,EAAWg2B,GAC/B,IAAIx1C,EAAOnC,KACPisC,EAAoB9pC,EAAK8pC,oBACzBnvB,EAAY6E,EAChB,IAAKsqB,EACD,OAAO,EAEX,IAAIhqB,EAAS,EACTonB,EAAkBlnC,EAAKZ,YAAY8nC,kBAUvC,OATAtV,OAAO/E,KAAK7sB,EAAKizC,YAAYnlB,SAAQ,SAAS2nB,GACrC96B,IAGD66B,EAAQC,GAAoBvO,EAAkB1nB,EAAYi2B,EAAmBj2B,KAC7EM,GAAU9f,EAAKizC,WAAWwC,GAC1B96B,QAGDW,KAAKyzB,MAAMjvB,EAASnF,EAAY3a,EAAKgzC,kBAAoBhzC,EAAKo0C,aAEzE/I,iBAAkB,SAASv0B,GACvB,IAAI0+B,EAAQ,QAAU1+B,EAClBgzB,EAAoBjsC,KAAKisC,oBAC7B,OAAKA,EAGEjsC,KAAK03C,cAAcC,EAAQ1L,EAAkByK,IAAMzK,EAAkB2F,MAAO+F,GAFxE,GAIf1J,sBAAuB,WAGnB,OAFWjuC,KACkBisC,oBADlBjsC,KAEqBwtC,iBAAiB,SAFtCxtC,KAEsDwtC,iBAAiB,OAFvExtC,KAEqFu3C,aAAe,GAEnHpO,qBAAsB,WAClB,OAAOnpC,KAAKuzC,oBAEhBvB,qBAAsB,SAASrwB,GAC3B,IAMIk2B,EALA5mC,EADOjR,KACSuB,YAAY0P,WAC5BgN,EAFOje,KAEUuB,YAAY0c,YAC7BmxB,EAAchH,EAHPpoC,MAIPqvC,EAAahH,EAJNroC,MAKPqpC,EALOrpC,KAKgBuB,YAAY8nC,kBAGvC,GARWrpC,KAONuzC,mBAAqB5xB,EACtB1Q,IAAam+B,GAAeC,IAAehG,GAAmB,EAAG,CACjE,GATOrpC,KASEk1C,eAAiBvzB,EATnB3hB,KASoCk1C,eAAiB7L,IATrDrpC,KAS8EqzC,WACjF,GAVGrzC,KAUMuB,YAAY+nC,mBAAoB,CAErC,IAAIwO,EAAezO,EAAkBp4B,GADrC4mC,EAAe55B,EAAY,GAER,GAAK65B,EAAe,GAAKA,EAb7C93C,KAaiEk1C,eAC5D2C,SAGJA,EAAe55B,MAEhB,CACH45B,EAAep6B,KAAKyzB,MAAMvvB,EAAY1Q,GACtC,IAAI8mC,EAAe95B,EAAY,EAC/B45B,EAAep6B,KAAKk5B,IAAIkB,EAAc,GACtCA,EAAep6B,KAAKo5B,IAAIgB,EAAcE,GAG1C,OA1BO/3C,KAyBFgR,UAAU6mC,GAzBR73C,KA0BK2mB,SAGpB0mB,iBAAkB,SAASiK,GAIvB,YAHI,IAAWA,IACXt3C,KAAKm1C,kBAAoBmC,GAEtBt3C,KAAKm1C,mBAEhBjM,aAAc,SAASoO,GAInB,YAHI,IAAWA,IACXt3C,KAAKk1C,cAAgBoC,GAElBt3C,KAAKk1C,eAEhBlkC,UAAW,SAAS2rB,GAChB,OAAIyL,EAAcpoC,OAASqoC,EAAaroC,YAChC,IAAW28B,IACX38B,KAAK28B,WAAaA,GAEf38B,KAAK28B,YAEL38B,KAAKuB,YAAYyP,UAAU2rB,IAG1CqM,eAAgB,SAAwBgP,GACpC,IAAIhP,EAAiBsM,EAAkBt1C,MAIvC,OAHIgpC,EAAiB,IACjBA,OAAiB,IAAWgP,EAAmBA,EAAmBh4C,KAAKgR,aAEpEg4B,GAEXiP,aAAc,WACV,IAAIA,EAAezC,EAAgBx1C,MACnC,OAAOi4C,EAAe,EAAIA,EAAej4C,KAAKo2C,gBAElDnlC,SAAU,WACN,OAAOjR,KAAKuB,YAAY0P,YAE5B0V,KAAM,WACF,IAEI3B,EAFA7iB,EAAOnC,KACP4rB,EAAazpB,EAAKZ,YAEtB,GAAI6mC,EAAcjmC,IAASkmC,EAAalmC,GAAO,CAC3C,IAAI+1C,EA/UU,SAAS/1C,GAC/B,IAAI6iB,GAAU,EACVgkB,EAAiBsM,EAAkBnzC,GACnCypB,EAAazpB,EAAKZ,YACtB,GAAIynC,EAAiB,EACjBhkB,EAAS7iB,EAAKw6B,gBAEd,GAAKx6B,EAAKozC,OAAOpzC,EAAKw6B,WAAaqM,IAG/B,GAAIA,GAAkB,GAAK7mC,EAAK+yC,eAAiB,EAAG,CAChD,GAAIlM,EAAiB,GACcwM,EAAgBrzC,GAAQ,IAAMypB,EAAW3N,aAAe9b,EAAKozC,OAAOhxC,OAASwwC,EAAoB5yC,GAAQ,GACnFA,EAAKw6B,aAAeqM,GAAkB+L,EAAoB5yC,GAAM,MAEjH6iB,EAASgkB,EAAiB,GAGlC,GAAIhkB,EAAS,EACgBgkB,EAAiB7mC,EAAKozC,OAAOhxC,QAAUpC,EAAKw6B,WAAaoY,EAAoB5yC,KAElG6iB,EAASgkB,EAAiB7mC,EAAKozC,OAAOhxC,cAblDygB,EAAS7iB,EAAKw6B,WAsBtB,OAHIx6B,EAAKq0C,oBAAoBxxB,KACzBA,GAAU,GAEPA,EAiTwBmzB,CAAoBh2C,GAC3C,GAAI+1C,GAAoB,EAAG,CACvB,IAAI5uB,EAjPL,SAASnnB,EAAM6O,GAC1B,IAAI4a,EAAazpB,EAAKZ,YACtB,GAAIyP,IAAc7O,EAAK6O,cAAgB4a,EAAW3M,aAAejO,EAAY4a,EAAW3N,cAAgB2N,EAAW0d,oBAAsBt4B,IAAc4a,EAAW3N,YAG9J,OAFA2N,EAAW5a,UAAUA,GACrB7O,EAAKq0C,oBAAoBxlC,IAAa,GAC/B,EAAI0R,EAAUuT,MAAMrK,EAAWjF,QAAQC,QAAO,WACjDzkB,EAAKq0C,oBAAoBxlC,IAAa,KA2OjBonC,CAASj2C,EAAM+1C,GAC5B5uB,IACAtE,EAAS,IAAItC,EAAUgE,SACvB4C,EAAWzC,MAAK,WACZ,IAAI+jB,EAAgBzoC,EAAK0oC,eACrBD,EACAA,EAAc/jB,KAAK7B,EAAO8B,SAASC,KAAK/B,EAAOkC,QAE/ClC,EAAO8B,aAEZC,KAAK/B,EAAOkC,QACf0E,EAAW4d,uBAInBxkB,EAAS4G,EAAWjF,OAOxB,OALK3B,GAAU7iB,EAAKi0C,iBAAmBj0C,EAAK6O,aACxC7O,EAAKZ,YAAYmoC,UAAU,CACvB70B,WAAY,cAGbmQ,IAAW,IAAItC,EAAUgE,UAAUI,WAE9C+oB,WAAY,WAER,IAAKzH,EADMpoC,OACiBqoC,EADjBroC,cAC8CuB,YAAY0d,eAD1Djf,KACgF01C,kBADhF11C,KACyGqzC,YAAa,CAC7H,IAAIhR,EAFGriC,KAEa+2C,sBAChB1U,EAAW,EAHRriC,KAIE82C,yBAAyBzU,GAJ3BriC,KAME2mB,SAIjBqjB,kBAAmB,SAAS/pC,EAAU4H,GAClC,IAGIgN,EACAw7B,EAJAluC,EAAOnC,KACP4rB,EAAazpB,EAAKZ,YAClB82C,EAAkBl2C,EAAKozC,OAAOhxC,OAGlC,GAAIsD,GAAKA,EAAEwoB,QACPolB,EAAYtzC,EAAMlC,EAAU4H,QAE5B,GAAIugC,EAAcjmC,IAASkmC,EAAalmC,GAAO,CAC3C,IAAI6mC,EAAiBsM,EAAkBnzC,GACvC,GAAI6mC,GAAkB,IACdZ,EAAcjmC,IAAS6mC,EAAiB7mC,EAAKozC,OAAOhxC,SAAWqnB,EAAW5a,aAAeg4B,EAAiB,IAAMpd,EAAW5a,cAC3HqnC,EAAkB,EAClBl2C,EAAKozC,OAAS,IAEdlN,EAAalmC,IACb,GAAI,IAAMypB,EAAW5a,YACjB7O,EAAKozC,OAAS,QAEd,GAAI3pB,EAAW5a,YAAcwkC,EAAgBrzC,GAKzC,YAJAszC,EAAYtzC,EAAMlC,EAAU,CACxB4U,WAAY,SACZ9S,MAAO,KAO3B,IAYIg0C,EAZAuC,EAAY,CACZtnC,UAAW4a,EAAW5a,YACtBmlC,YAAavqB,EAAW7pB,OAAM,GAAMwC,OACpCqT,WAAYzV,EAAKyV,YAAW,KAE3BzV,EAAKH,OAAO,oBAAsBG,EAAKH,OAAO,mCAAqComC,EAAcjmC,GAClGkuC,EAAuBluC,EAAKozC,OAAOhxC,OAASkZ,KAAKk5B,IAAI5B,EAAoB/0C,OAASmC,EAAKH,OAAO,4BAA8B,EAAI,GAAI,GAEpI2zC,EAAoBxzC,EAAMlC,EAAU,CAChCs4C,WAAW,IAIfvP,IAAmBpd,EAAW5a,YAAc,GACxCq/B,IACA0F,EAAkB5zC,EAAKozC,OAAOiD,OAElC3jC,EAAa,UACb1S,EAAKozC,OAAOjD,QAAQgG,KAEhBjI,IACA0F,EAAkB5zC,EAAKozC,OAAOpjB,SAElCtd,EAAa,SACb1S,EAAKozC,OAAOlxC,KAAKi0C,IAErB,IAAIxC,EAAiB1N,EAAcjmC,IAAS,IAAMk2C,GAAmB/E,EAAoBnxC,GACzF0zC,EAAe1zC,EAAMlC,EAAUkC,EAAKozC,OAAOhxC,OAAS,EAAIsQ,OAAa,EAAQihC,EAAgBC,GAC7F5zC,EAAK0oC,eAAiB1oC,EAAKwkB,OAAOE,MAAK,WAC/B8uB,EAAoBxzC,EAAMlC,IAC1BkC,EAAKwkB,eAIbkvB,EAAe1zC,EAAMlC,EAAU4H,IAI3C+P,WAAY,SAAoB0yB,GAC5B,IAAI1yB,EAAa,EAQjB,OAPK0yB,GAAUlC,EAAcpoC,OACzB,EAAId,EAAUqE,MAAMvD,KAAKu1C,QAAQ,WAC7B39B,GAAc5X,KAAK4X,cAGvBA,EAAa5X,KAAKuB,YAAYqW,aAE3BA,GAEXwO,MAAO,SAASgsB,GACZpyC,KAAKw2C,oBAAsB,GAC3Bx2C,KAAKu1C,OAAS,GACTnD,IACDpyC,KAAKo1C,WAAa,KAG1BqD,8BAA+B,SAASvmC,GACpC,IAAI/P,EAAOnC,KACXmC,EAAKutC,cAAgBvtC,EAAKutC,eAAiBC,EAA6Bz9B,GAAU,SAASiiC,GACnFhyC,EAAKkrC,oBACLlrC,EAAKqtC,oBAAoB2E,OAIrC1iC,QAAS,WACLyP,aAAalhB,KAAKgwC,kBAClBhwC,KAAK0vC,eAAiB1vC,KAAK0vC,cAAcj+B,UACzCzR,KAAK0vC,cAAgB,MAEzBlvB,SAAU,SAASo0B,GACf50C,KAAK0vC,eAAiB1vC,KAAK0vC,cAAclvB,SAASo0B,KArgBT,IAygBrDj2C,EAAQyqC,wBAA0BA,G,kCCjoBlCzqC,EAAQC,aAAU,EAClB,IAAIC,EAAYC,EAAuBC,EAAQ,KAC3C25C,EAAe55C,EAAuBC,EAAQ,KAC9CS,EAAQT,EAAQ,IAChBC,EAAQD,EAAQ,KAChBwH,EAAezH,EAAuBC,EAAQ,MAC9CyH,EAAW1H,EAAuBC,EAAQ,KAC1C45C,EAAS75C,EAAuBC,EAAQ,MAE5C,SAASD,EAAuBY,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAQnB,SAASk5C,EAAYjwC,GACjB,OAAO,EAAInJ,EAAM4J,WAAWT,EAAOiwC,aAAejwC,EAAOiwC,YAAcjwC,EAAOkwC,eAGlF,SAASC,EAAWnwC,EAAQzF,GACxB,IAAI+uB,EAAStpB,EAAOspB,OACpB,OAAKtpB,EAAOmwC,WAGR7mB,EACOtpB,EAAOmwC,WAAWvwC,KAAK0pB,EAAQ/uB,GAEnCyF,EAAOmwC,WAAW51C,GALdA,EAOf,IAAItD,EAAW,CACX8G,eAAgB,WACZ,MAAO,CACHqyC,YAAa,CACT3oC,SAAS,EACTxC,MAAO,IACPorC,YAAaxyC,EAAS5H,QAAQkI,OAAO,qCACrCmyC,qBAAqB,EACrBC,wBAAwB,EACxBh2C,KAAM,GACNi2C,0BAA0B,KAItCjyC,UAAW,CACPud,YAAa,CACTpV,KA0CW,CACHiQ,cAAe,WACX,OAAOtf,KAAKC,WAAWU,OAAO,CAAC,kBAEnCy4C,2BAA4B,WACxB,IACI53B,EADOxhB,KACOC,WACdo5C,EAhDgB,SAASl3C,EAAMe,GACvC,IAAIyP,EACAhK,EAGAspB,EAFAtgB,EAAUxP,EAAKyG,mBAAmB6J,aAClC0mC,EAA2Bh3C,EAAKH,OAAO,wCAEvCs3C,EAAU,GACd,IAAKp2C,EACD,OAAO,KAGX,SAASq2C,EAAYx3C,GAEjB,IADA,IAAIy3C,GAAc,EAAIx6C,EAAM8F,eAAemtB,EAAOwnB,WACzCC,EAAK,EAAGA,EAAK33C,EAAMwC,OAAQm1C,IAAM,CACtC,IAAI70C,EAAQ20C,EAAYz3C,EAAM23C,IAC9BJ,EAAQj1C,KAAKsE,EAAOgxC,uBAAuB90C,EAAO,KAAM,YAGhE,IAAK8N,EAAI,EAAGA,EAAIhB,EAAQpN,OAAQoO,IAE5B,GADAhK,EAASgJ,EAAQgB,KACbwmC,GAA6BxwC,EAAOyH,UAGpCwoC,EAAYjwC,IAAWA,EAAOixC,0BAA2B,CACzD3nB,EAAStpB,EAAOspB,OAChB,IAAInO,EAAcg1B,EAAWnwC,EAAQzF,GACjC+uB,GAAUA,EAAOlwB,OACjB,EAAI42C,EAAO/5C,SAASqzB,EAAOlwB,OAAOyf,OAAO7Y,EAAOgxC,uBAAuBpxC,KAAK,CACxEsxC,UAAW5nB,EAAO9xB,YAClBusB,SAAUuF,EAAOvF,SACjBktB,0BAA2BjxC,EAAOixC,2BACnC91B,EAAa,KAAM,WAAWg2B,YAAYjzB,KAAK0yB,QAE9C,IAAWz1B,GACXw1B,EAAQj1C,KAAKsE,EAAOgxC,uBAAuB71B,EAAa,KAAM,WAK9E,OAAOvd,EAAa3H,QAAQm7C,eAAeT,EAAS,MAS7BU,CAFRh6C,UAEyCgC,OAAO,qBAC3D,OAAOuE,EAAa3H,QAAQm7C,eAAe,CAACv4B,EAAQ63B,KAExDY,aAAc,SAAS/2C,GACnBlD,KAAKgC,OAAO,mBAAoBkB,IAEpCiH,cAAe,SAASlE,GAEpB,OAAQA,EAAKuc,UACT,IAAK,mBACL,IAAK,cAHExiB,KAIEk6C,eACLj0C,EAAKoE,SAAU,EACf,MACJ,QAPOrK,KAQEC,SAASgG,OAMtCkB,MAAO,CACHmD,YAAa,WACT,IAAI6vC,EAAwB,SAASh4C,GACjC,OAAOA,EAAKH,OAAO,gBAEvB,MAAO,CACHo4C,iBAAkB,WACd,IAAIr4C,EAAQ/B,KAAKC,WACjB,OAAOD,KAAKq6C,mBAAmBt4C,IAEnCs4C,mBAAoB,SAASt4C,GACzB,IAAII,EAAOnC,KACPsR,EAAiBnP,EAAK4G,cAAc,QACpCuxC,EAAqBH,EAAsBh4C,GAC/C,GAAIm4C,GAAsBA,EAAmBlqC,QAAS,CAClD,IAAImqC,EAAc,CACdC,SAAU,SAASnrC,EAAM3J,EAAOuG,GAC5B,IAAIwuC,GAAU,EAAI57C,EAAUD,SAAS,SAAS2G,SAASpD,EAAK0J,gBA1HvE,iBA0H4GD,SAASK,GAC1G9J,EAAK4G,cAAc,iBAAiByoB,aAAaipB,EAAS,CACtD7sC,MAAO0sC,EAAmB1sC,MAC1BorC,YAAasB,EAAmBtB,YAChCvnB,WAAY,cACZ5sB,MAAO1C,EAAKH,OAAO,oBACnB04C,mBA7HhB,IA8HgB9oB,SAAU,SAAS/sB,GACfyM,EAAe2oC,aAAap1C,IAEhC6sB,cAAe,CACXipB,UAAW,CACP,aAAcn0C,EAAS5H,QAAQkI,OAAO,GAAGnG,OAAOwB,EAAK2O,UAAU8pC,KAAM,0BAIjFz4C,EAAK0wC,UAET3sC,KAAM,cACN0Q,SAAU,QACVikC,aAAc,QACdlvC,UAAW,IAEf5J,EAAMsC,KAAKk2C,GAEf,OAAOx4C,GAEX+4C,oBAAqB,WACjB,IAAI34C,EAAOnC,KACPkS,EAAW/P,EAAKgQ,UAChB4oC,EAAe7oC,EAAS5G,KAAK,IAAMnJ,EAAK0J,gBAxJ3C,iBAwJgF2V,QAAO,WACpF,OAAO,EAAI3iB,EAAUD,SAASoB,MAAMya,QAAQ,IAAMtY,EAAK0J,gBAvJ1D,iBAuJ+F2J,GAAGtD,MAEnG,OAAI6oC,EAAax2C,OACNw2C,EAAaC,UAAU,YAE3B,MAEX5pB,UAAW,WACP,IAAIkpB,EAAqBH,EAAsBn6C,MAC/C,OAAOA,KAAKC,YAAcq6C,GAAsBA,EAAmBlqC,SAEvEjG,cAAe,SAASlE,GACpB,GAAI,gBAAkBA,EAAKC,KAAM,CAC7B,GAAI,qBAAuBD,EAAKuc,SAAU,CACtC,IAAI4W,EAASp5B,KAAK86C,sBACd1hB,GACAA,EAAOp3B,OAAO,QAASiE,EAAKpB,YAGhC7E,KAAKoK,cAETnE,EAAKoE,SAAU,OAEfrK,KAAKC,SAASgG,KAtEjB,GA2EbwI,SAAU,CACNqQ,KAAM,WACF9e,KAAKC,SAAS2F,MAAM5F,KAAM6F,WAC1B7F,KAAKi7C,cAAgB,IAEzBC,wBAAyB,SAASvyC,EAAQ+c,GACtC,IAAI7gB,EAAQi0C,EAAWnwC,EAAQ+c,GAC3By1B,EAAgB50C,EAAa3H,QAAQw8C,yBAAyBzyC,EAAQ,UAC1E,OAAOpC,EAAa3H,QAAQ0c,YAAYzW,EAAOs2C,IAEnDE,qBAAsB,WAClB,IAAIC,EAAkBt7C,KAAKgC,OAAO,sCAClC,OAAO,SAASu5C,GACZ,OAAOD,EAAkBC,EAAMA,EAAIC,gBAG3CC,2BAA4B,SAAS9yC,EAAQ++B,EAAahiB,GACtD,IAAIg2B,EAGAC,EADAC,EAAUlU,EAAY1kC,SAEtB64C,EAAmB77C,KAAKq7C,uBACxBS,EAAuBD,EAAiBn2B,GACxCq2B,EAAkB,GACtB,GAAKH,EAAQr3C,QAGT,GAAIoE,EACA,GAAIA,EAAOU,YAAc,IAAMV,EAAOkH,gBAClC8rC,EAASjU,MACN,CACH,IAAIr/B,EAbLrI,KAawB4I,mBAAmBozC,gBAAgBrzC,EAAOjD,OACjEi2C,EAASC,EAAQpwC,SAAS,MAAM4J,GAAG/M,GAAaiD,KAAK,WAP7DswC,GAAU,EAAI/8C,EAAUD,SAAS,SAAS+D,OAAO+kC,GAwBrD,OAbAiU,EAAS,QAAUD,EAAUC,SAAW,IAAWD,GAAWA,EAAQn3C,OAASo3C,EAASC,EAAQtwC,KAAK,MAC9F/H,MAAK,SAASE,EAAG0O,GAEpB,IADA,IAAI8pC,GAAY,EAAIp9C,EAAUD,SAASuT,GAAS+pC,WACvCvpC,EAAI,EAAGA,EAAIspC,EAAU13C,OAAQoO,IAAK,CACvC,IAAI7O,EAAOm4C,EAAUh0C,IAAI0K,GACzB,GAAI,IAAM7O,EAAKq4C,SACUN,EAAiB/3C,EAAKkL,aAAelL,EAAKs4C,WAC5CxkB,QAAQkkB,IAAyB,GAChDC,EAAgB13C,KAAKP,OAK9Bi4C,GAEXM,yBAA0B,SAASC,EAAW52B,GAC1C,IACI62B,GAAkB,EAAI19C,EAAUD,SAAS,UAAU2G,SAD5CvF,KAC0D6L,gBAzOjE,gBA0OA3I,EAAOo5C,EAAUp5C,OACjBs5C,EAAsBF,EAAU,GAChCT,EAAmB77C,KAAKq7C,uBACxB31C,EAAQm2C,EAAiB34C,GAAM00B,QAAQikB,EAAiBn2B,IAC5D,GAAIhgB,GAAS,EAQT,OAPI82C,EAAoBxtC,YACpBwtC,EAAoBxtC,YAAc9L,EAAKu5C,OAAO,EAAG/2C,GAEjD82C,EAAoBJ,UAAYl5C,EAAKu5C,OAAO,EAAG/2C,GAEnD42C,EAAUI,MAAMH,EAAgBr5C,KAAKA,EAAKu5C,OAAO/2C,EAAOggB,EAAWnhB,UACnE+3C,GAAY,EAAIz9C,EAAUD,SAAS85C,EAAa95C,QAAQ+9C,eAAez5C,EAAKu5C,OAAO/2C,EAAQggB,EAAWnhB,UAAUsR,YAAY0mC,GAbrHv8C,KAcKq8C,yBAAyBC,EAAW52B,IAGxDk3B,qBAAsB,SAASlV,EAAamV,EAAUl0C,GAClD,IAAIxG,EAAOnC,KACP67C,EAAmB77C,KAAKq7C,uBACxB31B,EAAavjB,EAAKH,OAAO,qBACzB66C,GAAYl0C,IACZ+c,EAAaA,GAAcvjB,EAAK+4C,wBAAwBvyC,EAAQ+c,IAEhEA,GAAcvjB,EAAKH,OAAO,qCACVG,EAAKs5C,2BAA2B9yC,EAAQ++B,EAAahiB,GAC3DuK,SAAQ,SAAS6sB,GACnBD,EACIhB,GAAiB,EAAIh9C,EAAUD,SAASk+C,GAAU55C,UAAY24C,EAAiBn2B,KAC/E,EAAI7mB,EAAUD,SAASk+C,GAAUnnC,aAAY,EAAI9W,EAAUD,SAAS,UAAU2G,SAASpD,EAAK0J,gBArQxG,gBAqQ4I3I,MAAK,EAAIrE,EAAUD,SAASk+C,GAAU55C,SAG1Kf,EAAKk6C,0BAAyB,EAAIx9C,EAAUD,SAASk+C,GAAWp3B,OAKhF5K,YAAa,WACT9a,KAAKC,SAAS2F,MAAM5F,KAAM6F,WACtB7F,KAAKgC,OAAO,iBACRhC,KAAKgC,OAAO,kCACZkf,aAAalhB,KAAK+8C,iBAClB/8C,KAAK+8C,gBAAkBtzC,WAAW,WAC9BzJ,KAAK48C,qBAAqB58C,KAAK4U,oBACjC3R,KAAKjD,QAEPA,KAAK48C,qBAAqB58C,KAAK4U,qBAI3CooC,YAAa,SAASpzC,EAAOwR,GACzB,IAAIzS,EAASyS,EAAWzS,OAEpBk0C,EAAW,YADAl0C,EAAOspB,QAAUtpB,EAAOspB,OAAOvF,UAAY/jB,EAAO+jB,UAE7DksB,EAAYjwC,KAAYyS,EAAW6hC,WAC/Bj9C,KAAKgC,OAAO,kCACPhC,KAAKi7C,cAAc12C,SACpB2c,aAAalhB,KAAK+8C,iBAClB/8C,KAAK+8C,gBAAkBtzC,WAAW,WAC9BzJ,KAAKi7C,cAAchrB,QAAQ,SAASqN,GAChCt9B,KAAK48C,qBAAqBh3C,MAAM5F,KAAMs9B,IACxCr6B,KAAKjD,OACPA,KAAKi7C,cAAgB,IACvBh4C,KAAKjD,QAEXA,KAAKi7C,cAAc52C,KAAK,CAACuF,EAAOizC,EAAUl0C,KAE1C3I,KAAK48C,qBAAqBhzC,EAAOizC,EAAUl0C,IAGnD3I,KAAKC,SAAS2J,EAAOwR,IAEzB3J,QAAS,WACLyP,aAAalhB,KAAK+8C,iBAClB/8C,KAAKC,gBAMzBtB,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCCxUzBD,EAAQC,aAAU,EAClB,IAAIiO,EAAU9N,EAAQ,IAClBwH,EAAexH,EAAQ,MAiOvBa,EAAW,CACX8G,eAAgB,WACZ,MAAO,CACH8G,UAAW,CACP0vC,oBAAqB,WACrBC,eAAgB,EAChBC,yBAA0B,OAItCl2C,UAAW,CACPud,YAAa,CACT9S,QAnNoB,WAC5B,IAAI0rC,EAAY,SAAS1rC,GACrB,OAAOA,EAAQ8e,KAAI,SAAS9nB,GACxB,OAAOA,EAAOiW,cAAgBjB,WAAWhV,EAAOiF,QA5BjC,OA8NvB,MA/Lc,CACVkR,KAAM,WACS9e,KACNC,WADMD,KAENs9C,gBAAkB,EAFZt9C,KAGNu9C,cAAgB,EAHVv9C,KAIN+M,UAAY,EAJN/M,KAKNw9C,uBAAyB,IAElCC,kBAAmB,WACfz9C,KAAKC,WACLD,KAAKw9C,uBAAyB,IAElClI,kBAAmB,SAASjT,GAIxB,IAHA,IAAIxmB,EAAiB7b,KAAK6I,uBAAkB,GAAQ,GAChDknC,EAASsN,EAAUxhC,GACnB6hC,EAAkB,EACbh4C,EAAQ,EAAGA,EAAQqqC,EAAOxrC,OAAQmB,IAAS,CAChD,GAAIg4C,GAAmBrb,EACnB,OAAO5kB,KAAKyzB,MAAMxrC,EAAQ1F,KAAK29C,qBAEnCD,GAAmB3N,EAAOrqC,GAE9B,OAAO,GAEXk4C,cAAe,WACX,IAAIhwC,EAAQ5N,KAAKgC,OAAO,SACxB,MAAI,kBAAoB4L,EACbA,EAEJ5N,KAAK+I,cAAc,YAAY80C,YAAc79C,KAAK8Q,UAAUoB,WAAWgzB,cAElFsQ,gBAAiB,SAASnT,GACtB,IAAIxmB,EAAiB7b,KAAK6I,uBAAkB,GAAQ,GAChDknC,EAASsN,EAAUxhC,GACnB6hC,EAAkB,EACtBrb,GAAYriC,KAAK49C,gBACjB,IAAK,IAAIl4C,EAAQ,EAAGA,EAAQqqC,EAAOxrC,OAAQmB,IAAS,CAChD,GAAIg4C,GAAmBrb,EACnB,OAAO5kB,KAAKC,KAAKhY,EAAQ1F,KAAK29C,qBAElCD,GAAmB3N,EAAOrqC,GAE9B,OAAO+X,KAAKC,KAAKqyB,EAAOxrC,OAASvE,KAAK29C,sBAE1CA,kBAAmB,WACf,OAAO39C,KAAKgC,OAAO,6BAEvB87C,oBAAqB,WACjB,IAAIj2B,EAAO,IAAIE,KACf/nB,KAAK8iB,eAAerP,KAAK,CACrBiL,YAAa,CACTq/B,KAAK,EACLx5C,OAAQ,GAEZ0F,YAAa,CACT0H,SAAS,EACTpN,OAAQ,KAGhBvE,KAAK4pC,YAAc,IAAI7hB,KAAOF,GAElCm2B,kBAAmB,SAAS3b,GACxB,IAAIlgC,EAAOnC,KACPowC,EAAqBjuC,EAAKH,OAAO,sCACjCG,EAAKynC,YAAcwG,GACnBlvB,aAAa/e,EAAK87C,iBAClB97C,EAAK87C,gBAAkBx0C,YAAW,WAC9BtH,EAAK+7C,uBAAuB7b,KAC7BlgC,EAAKH,OAAO,uBAEfG,EAAK+7C,uBAAuB7b,IAGpC+F,cAAe,WACX,OAAO,EAAIv7B,EAAQkU,cAAgB,YAAc/gB,KAAKgC,OAAO,kCAEjE6wC,OAAQ,WACJ7yC,KAAKk+C,uBAAuBl+C,KAAK+M,YAErCmxC,uBAAwB,SAAS7b,GAE7B,GADWriC,KACFooC,gBAAiB,CACtB,IAAIY,EAFGhpC,KAEmBs1C,kBAAkBjT,GACxC4V,EAHGj4C,KAGiBw1C,gBAAgBnT,GACpC8b,EAAqB9b,EAJlBriC,KAIkC+M,UAJlC/M,KAImDs9C,gBAAkBtU,EAJrEhpC,KAI2Fu9C,cAAgBtF,EAJ3Gj4C,KAKF+M,UAAYs1B,EACb8b,IANGn+C,KAOEs9C,gBAAkBtU,EAPpBhpC,KAQEu9C,cAAgBtF,EARlBj4C,KASE89C,yBAIjBznC,gBAAiB,SAASjO,EAAUkiC,GAChC,IAAI5F,EAAe1kC,KAAKC,SAASmI,GACjC,GAAIpI,KAAKooC,kBAAoBkC,GAAU5F,EAAangC,OAAQ,CACxD,IAAI65C,EAAyB1Z,EAAajU,KAAI,SAAS4tB,GACnD,OAAOA,EAAE/0C,WACVsuB,QAAQ,eAEX,OADA8M,EAAa0Z,GAAwBhlC,QAAUpZ,KAAK6I,oBAAoBtE,OAASvE,KAAKC,WAAWsE,OAAS,EACnGmgC,EAEX,OAAOA,GAEX77B,kBAAmB,SAAST,EAAUkiC,GAClC,GAAIA,IAAWtqC,KAAKooC,gBAChB,OAAOpoC,KAAKC,SAASmI,GAEpBpI,KAAKs9C,iBAAoBt9C,KAAKu9C,gBAC/Bv9C,KAAKs9C,gBAAkBt9C,KAAKs1C,kBAAkBt1C,KAAK+M,WACnD/M,KAAKu9C,cAAgBv9C,KAAKw1C,gBAAgBx1C,KAAK+M,YAEnD,IAAIi8B,EAAiBhpC,KAAKs9C,gBACtBrF,EAAej4C,KAAKu9C,cACpBe,EAAqBl2C,EAAW,IAAM4gC,EAAiB,IAAMiP,EACjE,GAAIj4C,KAAKw9C,uBAAuBc,GAC5B,OAAOt+C,KAAKw9C,uBAAuBc,GAEvC,IAAIziC,EAAiB7b,KAAKC,WACtBmrC,EAAWprC,KAAKu+C,cAChBttC,EAAWjR,KAAK29C,oBAChBa,EAAaxV,EAAiB/3B,EAC9BwtC,EAAWxG,EAAehnC,EAC1ByzB,EAAe1kC,KAAKqW,qBAAgB,GAAQ,GAC5C+nC,EAAyB1Z,EAAajU,KAAI,SAAS4tB,GACnD,OAAOA,EAAE/0C,WACVsuB,QAAQ,eACP8mB,EAAwBha,EAAangC,OAAS65C,EAAyB,EACvEO,EAAoB9iC,EAAevT,MAAM,EAAGo2C,GAC5CE,EAAe/iC,EAAevT,MAAMo2C,EAAuBF,GAC3DK,EAAaxB,EAAUuB,GAAc5mC,QAAO,SAAS0Y,EAAGC,GACxD,OAAOD,EAAIC,IACZ,GACEkuB,IACDL,EAAa,GAEjB,IAAIM,EAAsBpa,EAAangC,OAASmgC,EAAangC,OAAS65C,EAAyB,EAAI,EAC/FW,EAAkBljC,EAAevT,MAAMuT,EAAetX,OAASu6C,GAC/DE,EAAanjC,EAAevT,MAAMm2C,EAAU5iC,EAAetX,OAASu6C,GACpEG,EAAW5B,EAAU2B,GAAYhnC,QAAO,SAAS0Y,EAAGC,GACpD,OAAOD,EAAIC,IACZ,GAIH,GAHKsuB,IACDR,EAAW5iC,EAAetX,QAE1B6mC,EAAW,GAAK,kBAAoBhjC,EAAU,CAE9C,IADA,IAAI82C,EAAc,GACTvsC,EAAI,EAAGA,EAAIy4B,EAAUz4B,IAC1BusC,EAAY76C,KAAKrE,KAAKC,SAAS0S,IAEnCgsC,GAAoB,EAAIp4C,EAAa44C,mBAAmBD,EAAa,EAAGP,EAAkBp6C,QAAQ6D,IAAa,GAC/G22C,GAAkB,EAAIx4C,EAAa44C,mBAAmBD,EAAarjC,EAAetX,OAASw6C,EAAgBx6C,OAAQsX,EAAetX,QAAQ6D,IAAa,GACvJyT,GAAiB,EAAItV,EAAa44C,mBAAmBD,EAAaV,EAAYC,GAAUr2C,IAAa,QAErGyT,EAAiBA,EAAevT,MAAMk2C,EAAYC,GAiBtD,OAfII,IACAhjC,EAAey2B,QAAQ,CACnBhpC,QAAS,UACTsE,MAAOixC,IAEXhjC,EAAiB8iC,EAAkBh+C,OAAOkb,IAE1CojC,IACApjC,EAAexX,KAAK,CAChBiF,QAAS,UACTsE,MAAOqxC,IAEXpjC,EAAiBA,EAAelb,OAAOo+C,IAE3C/+C,KAAKw9C,uBAAuBc,GAAsBziC,EAC3CA,GAEXujC,qBAAsB,WAClB,IAAIn9B,EAAS,EACb,GAAIjiB,KAAKs9C,gBAAkB,EAAG,CAC1B,IACIc,EADep+C,KAAKqW,kBACkBoa,KAAI,SAAS4tB,GACnD,OAAOA,EAAE/0C,WACVsuB,QAAQ,eACPynB,EAAuBjB,GAA0B,EAAIA,EAAyB,EAClFn8B,EAASjiB,KAAKs9C,gBAAkBt9C,KAAK29C,oBAAsB0B,EAAuB,EAEtF,OAAOp9B,EAAS,EAAIA,EAAS,GAEjCxQ,QAAS,WACLyP,aAAalhB,KAAKi+C,iBAClBj+C,KAAKC,SAAS2F,MAAM5F,KAAM6F,aAlMN,IAqNxBsB,MAAO,CACHC,kBA9Na,CACrB0T,YAAa,WACT9a,KAAKC,SAAS2F,MAAM5F,KAAM6F,WACtB7F,KAAK4I,mBAAmBw/B,iBACxBpoC,KAAKs/C,8BA2NL7wC,SA/O2B,CACnCiS,YAAa,WACT1gB,KAAKC,SAAS2F,MAAM5F,KAAM6F,WAC1B7F,KAAK4I,mBAAmBiqC,UAE5B7/B,cAAe,SAASnL,GACpB,IAAI1F,EAAOnC,KACPqN,EAAarN,KAAKuS,gBAClBe,EAAOzL,EAAEsL,aAAaG,KAC1BnR,EAAKlC,SAAS2F,MAAMzD,EAAM0D,WACtB1D,EAAKH,OAAO,eAAiBqL,IAC7BiG,EAAOjG,EAAWgL,WAAWzK,QAAUP,EAAW6E,WAAWtE,QAAU0F,GAE3EnR,EAAKyG,mBAAmBo1C,kBAAkB1qC,QAsOlD3U,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCCxPzBD,EAAQwgD,kBAuCR,SAA2BI,EAAMf,EAAYC,GACzC,IAAIe,EAAU,GACdC,EAAkBF,GAAM,SAASG,EAAYjzB,EAAcrkB,GACvD,IACIgR,EADA+tB,EAAOuY,EAEPC,EAAcxY,EAAK/tB,SAAW,EAC9BgY,EAAY3E,EAAekzB,EAAc,GAAKnB,GAAc/xB,EAAegyB,EAE/E,GADAe,EAAQp3C,GAAYo3C,EAAQp3C,IAAa,GACrCgpB,EACI3E,EAAe+xB,GACfplC,EAAUumC,GAAenB,EAAa/xB,GACtCA,EAAe+xB,GAEfplC,EAAUumC,EAEVlzB,EAAerT,EAAUqlC,IACzBrlC,EAAUqlC,EAAWhyB,GAErBrT,IAAYumC,IACZxY,GAAO,EAAIloC,EAAQc,QAAQ,GAAIonC,EAAM,CACjC/tB,QAASA,KAGjBomC,EAAQp3C,GAAU/D,KAAK8iC,QAEvB,GAAI1a,EAAegyB,EACf,OAAO,KAInB,IAAK,IAAI9rC,EAAI,EAAGA,EAAI6sC,EAAQj7C,OAAQoO,IAChC6sC,EAAQ7sC,GAAK6sC,EAAQ7sC,IAAM,GAE/B,OAAO6sC,GAvEX7gD,EAAQ8gD,kBAAoBA,EAC5B,IAAIxgD,EAAUF,EAAQ,IAEtB,SAAS0gD,EAAkBF,EAAMK,EAAUx3C,EAAUy3C,EAASC,EAAaC,GAGvEA,EAAuBA,GAAwB,IAD/CF,EAAUA,GAAW,IADrBz3C,EAAWA,GAAY,GAGHy3C,EAAQz3C,IAAa,EACzC,IAGI43C,EAHA14C,EAAMi4C,EAAKn3C,GACXo2C,EAAauB,EAAqB33C,GAAY,GAAK,EACnD63C,EAAuB,EAE3B,GAAK34C,EAAL,CAGA,IAAK04C,EAAWxB,EAAYwB,EAAW14C,EAAI/C,OAAQy7C,IAAY,CAC3D,IAAI7Y,EAAO7/B,EAAI04C,GACXvzB,EAAeuzB,EAAWH,EAAQz3C,GAClCgR,EAAU+tB,EAAK/tB,SAAW,EAI9B,GAHAqmC,EAAkBF,EAAMK,EAAUx3C,GAAY++B,EAAK+Y,SAAW,GAAIL,EAASzmC,EAAS2mC,GACpFF,EAAQz3C,IAAagR,EAAU,EAC/B6mC,GAAwB7mC,EACpB+tB,EAAK+Y,QACL,IAAK,IAAIvtC,EAAIvK,EAAW,EAAGuK,EAAIvK,EAAW++B,EAAK+Y,QAASvtC,IACpDktC,EAAQltC,GAAKktC,EAAQltC,IAAM,EAC3BktC,EAAQltC,IAAMw0B,EAAK/tB,SAAW,EAGtC,IAAI,IAAUwmC,EAASzY,EAAM1a,EAAcrkB,EAAU43C,GACjD,MAEJ,QAAI,IAAWF,GAAeG,GAAwBH,EAClD,MAGRC,EAAqB33C,GAAY43C,K,kCCpCrCrhD,EAAQC,aAAU,EAClB,IAAIC,EAAYC,EAAuBC,EAAQ,KAC3CE,EAAUF,EAAQ,IAClBohD,EAAYrhD,EAAuBC,EAAQ,OAC3CwH,EAAezH,EAAuBC,EAAQ,MAC9CoO,EAAWrO,EAAuBC,EAAQ,MAE9C,SAASD,EAAuBY,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAyKIE,EAAW,CACX8G,eAAgB,WACZ,MAAO,CACH05C,YAAa,CACTC,eAAe,EACfC,iBAAkB,WAClBC,iBAAiB,EACjBC,qBAAqB,KAIjCt5C,UAAW,CACPC,MAAO,CACHsH,SAjLc,CACtBqQ,KAAM,WACF9e,KAAKC,SAAS2F,MAAM5F,KAAM6F,WAC1B7F,KAAKygD,uBAETC,iBAAkB,WACd,IAAIN,EAAcpgD,KAAKgC,OAAO,eAC9B,SAAUo+C,KAAgBA,EAAYG,iBAAmBH,EAAYI,qBAAuBJ,EAAYO,SAE5GF,oBAAqB,WACjB,IAAIL,EAAcpgD,KAAKgC,OAAO,eAC1Bu+C,EAAkBvgD,KAAK0gD,mBACvB5kC,EAAoB9b,KAAK4I,mBACzBg4C,EAAwBL,GAAmBH,EAAYC,cAC3DvkC,GAAqBA,EAAkB0Q,iBAAiB,CACpDvT,KAAM,OACN3P,QAAS,OACTmjB,cAAe,EACf7hB,UAAW,SACXgP,SAxBe,kBAyBfhM,MAAO,OACPkC,aAAc9P,KAAK6gD,qBACnBzwC,QAASwwC,IAEb9kC,EAAkBpQ,aAAa,YAAa,UAAWk1C,IAE3DxsC,eAAgB,WACZ,IAAI7M,EAAQvH,KACRogD,EAAcpgD,KAAKgC,OAAO,eAC1Bu+C,EAAkBvgD,KAAK0gD,mBACvBroC,EAAWrY,KAAKC,SAAS2F,MAAM5F,KAAM6F,WACrCi7C,EAAwB9gD,KAAK4tC,uBAC7BmT,EAAe,YACfC,EAAoB,iBACpBC,EAAsBH,EAAwBE,EAAoBD,EAClEG,EAAsBJ,EAAwBC,EAAeC,EAC7DG,EAA2B,SAAS1rC,GACpC,IAAI2rC,EACJ,QAAUA,EAAwB75C,EAAMy5C,UAAuB,IAAWI,GAAiCA,EAAsBlvC,WAAWsE,IAAI,gBAAiBf,EAAS,OAAS,KAgDvL,OA9CK8qC,GAAmBvgD,KAAKihD,KAAyB5oC,EAAS9T,SAC3DvE,KAAKihD,GAAuBjhD,KAAKgU,iBAAiBqE,EAAU8nC,EAAUvhD,SAAS,EAAIK,EAAQc,QAAQ,CAC/F+Q,UAAW9Q,KAAK8Q,UAChBixB,gBAAiB,KACjBvgB,OAAQ,wEACR6/B,aAAcrhD,KAAKshD,2BACnBC,OAAQnB,EAAYC,eAAiB,IAAI1/C,OAnD9B,mBAoDX2/C,iBAAkB,YACnBF,EAAa,CACZoB,YAAa,SAAS35C,GAClB,IAAI45C,EACAn6C,EAAMO,EAAEiJ,UAAUS,iBAAiB1J,EAAE65C,WACzC75C,EAAEpF,SAAW6E,GAAOA,EAAI+H,KACxB,IAAIc,EAAY7I,GAAO,SAAWA,EAAIG,QACtCI,EAAEw3B,QAAUkhB,IAAoBpwC,EAChC,QAAUsxC,EAAwBrB,EAAYoB,mBAAgB,IAAWC,GAAiCA,EAAsBl5C,KAAK63C,EAAav4C,IAEtJ85C,YAAa,WACTR,GAAyB,IAE7BS,YAAa,WACTT,GAAyB,IAE7BU,UAAW,SAASh6C,GAChB,IAAIi6C,EACJX,GAAyB,GACzB,QAAUW,EAAwB1B,EAAYyB,iBAAc,IAAWC,GAAiCA,EAAsBv5C,KAAK63C,EAAav4C,IAEpJk6C,MAAO,SAASl6C,GACZ,IAAIm6C,EACJb,GAAyB,GACzB,QAAUa,EAAqB5B,EAAY2B,aAAU,IAAWC,GAA8BA,EAAmBz5C,KAAK63C,EAAav4C,IAEvIy4C,iBAAkBnzC,EAASvO,QAAQ2pB,KAAO,WAAa63B,EAAYE,iBACnE2B,gBAAiB,SAASp6C,GACCN,EAAMy5C,KAErB,cAAgBn5C,EAAE3B,MAAQ,YAAc2B,EAAE3B,MAC1CqB,EAAM25C,GAAqBl/C,OAAO6F,EAAE3B,KAAM2B,EAAEhD,YAK5DwT,EAASvS,YAAY,0BAA2Bg7C,GAChDzoC,EAASvS,YArFe,6BAqF4By6C,IAAoBH,EAAYC,gBAEjFhoC,GAEXqI,YAAa,WACT1gB,KAAKC,SAAS2F,MAAM5F,KAAM6F,WAC1B,IAAIoc,EAASjiB,KAAKkR,gBAAgBC,oBAClC,CAACnR,KAAKmgD,UAAWngD,KAAKkiD,gBAAgBjyB,SAAQ,SAASkyB,GACnD,OAASA,QAAY,IAAWA,GAAoBA,EAASngD,OAAO,SAAUigB,GAC9E,OAASkgC,QAAY,IAAWA,GAAoBA,EAAS/hC,aAGrEgiC,yBAA0B,SAASphD,GAC/B,IAAIqhD,EAAcriD,KAAKgC,SACnB2P,EAAU3R,KAAKyS,aACf6C,GAAc,EAAIzW,EAAUD,SAASoB,KAAKqjC,cAAcriC,EAAQoH,WACpE,MAAO,CACHwjB,WAAY,CAAC,CACTmN,GAAI,EACJupB,SAAU,IAEdC,aAAa,EACbC,mBAAmB,EACnBh1C,UAAW,CACPC,WAAW,EACXg1C,eAAe,GAEnBC,MAAO,CACHtyC,SAAS,GAEbuyC,oBAAgB,EAChBC,aAAcP,EAAYO,aAC1B10C,gBAAiBm0C,EAAYn0C,gBAC7BnE,gBAAiBs4C,EAAYt4C,gBAC7B4H,QAASA,EAAQ8e,KAAI,SAAS9nB,GAC1B,MAAO,CACHiF,MAAOjF,EAAOiF,OAASjF,EAAOiW,aAC9BikC,MAAOl6C,EAAOk6C,MACdC,cAAen6C,EAAOm6C,kBAG9BC,cAAe,SAASl7C,GACpB,IAAI4G,EAAW5G,EAAEiJ,UAAU2S,QAAQ,aACnC,EAAI5kB,EAAUD,SAASiJ,EAAEkK,YAAY4D,YAAYL,EAAYF,GAAG3G,EAASm/B,uBAAyB,EAAI,GAAGoV,YAIrH1B,yBAA0B,WACtB,IAAIt2C,EAAShL,KACb,OAAO,SAASgB,GACZ,IAAIwJ,EAAeQ,EAAO8F,UAAUoB,WAChC+wC,GAAqB,EAAIpkD,EAAUD,SAAS,SAASgP,MAAMpD,EAAaoD,SACxE7L,EAAQiJ,EAAOkG,gBAAgBnP,QAC/BuF,EAAMvF,GAASA,EAAMf,EAAQ0gD,WAC7BW,EAAcr3C,EAAOo3C,yBAAyB96C,GAGlD,OAFA0D,EAAOgJ,iBAAiBivC,EAAoBj4C,EAAO8F,UAAU8pC,KAAMyH,GACnEY,EAAmB33C,KAAK,0BAA0BE,SAAS,SAAS7K,OAAOqK,EAAOa,gBA9I9E,YA8I0G,MAAMwE,OAC7G4yC,IAGfpC,mBAAoB,WAChB,IAAIhkC,EAAS7c,KACb,OAAO,SAASiM,EAAWjL,GACvB,GAAI,SAAWA,EAAQyG,QAEnB,OADA,EAAI5I,EAAUD,SAASqN,GAAW1G,SAxJlB,2BAyJT,EAAI1G,EAAUD,SAAS,UAAU2G,SAASsX,EAAOhR,gBAxJhD,cA0JRtF,EAAa3H,QAAQkQ,cAAa,EAAIjQ,EAAUD,SAASqN,MAIrE9B,cAAe,SAASlE,GAChB,gBAAkBA,EAAKC,OACvBlG,KAAKygD,sBACLzgD,KAAKoK,aAAY,GAAM,GACvBnE,EAAKoE,SAAU,GAEnBrK,KAAKC,SAAS2F,MAAM5F,KAAM6F,gBAoBlClH,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCCvMzBD,EAAQC,aAAU,EAClB,IAAIskD,EAAmBpkD,EAAuBC,EAAQ,MAClDF,EAAYC,EAAuBC,EAAQ,KAC3CE,EAAUF,EAAQ,IAClB8N,EAAU9N,EAAQ,IAClBokD,EAASrkD,EAAuBC,EAAQ,MACxCqkD,EAAQtkD,EAAuBC,EAAQ,MAE3C,SAASD,EAAuBY,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAInB,SAAS2jD,EAAkBl6C,EAAQm6C,GAC/B,IAAK,IAAI3wC,EAAI,EAAGA,EAAI2wC,EAAM/+C,OAAQoO,IAAK,CACnC,IAAI4wC,EAAaD,EAAM3wC,GACvB4wC,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IACXA,EAAWG,UAAW,GAE1B3vB,OAAO4vB,eAAex6C,EAAQo6C,EAAWr/C,IAAKq/C,IAuBtD,SAASK,EAAgBhwB,EAAGiwB,GAKxB,OAJAD,EAAkB7vB,OAAO+vB,gBAAkB,SAASlwB,EAAGiwB,GAEnD,OADAjwB,EAAEmwB,UAAYF,EACPjwB,IAEYA,EAAGiwB,GAE9B,IAAIG,EAAkB,GACtB,GAAId,EAAiBtkD,QAAS,CAC1B,IAEIqlD,EAAaf,EAAiBtkD,QAAQslD,OAAO,eAEjDF,EAAkB,SAASG,GAnB/B,IAAwBC,EAAUC,IAoBMF,GApBhBC,EAoBDJ,GAnBV50B,UAAY2E,OAAOsB,OAAOgvB,EAAWj1B,WAC9Cg1B,EAASh1B,UAAU4E,YAAcowB,EACjCR,EAAgBQ,EAAUC,GAkBtB,IAlCcC,EAAaC,EAAYC,EAkCnCC,EAAST,EAAgB50B,UAO7B,SAAS40B,EAAgBU,EAAO1jD,GAC5B,IAAIuG,EAKJ,OAJAA,EAAQ48C,EAAY57C,KAAKvI,KAAM0kD,EAAO1jD,IAAYhB,MAC5CgB,SAAU,EAAI/B,EAAQc,QAAQ,GAAIwH,EAAMzH,qBAAsBkB,GACpEuG,EAAM47C,OAAS57C,EAAMo9C,cACrBp9C,EAAM47C,OAAOyB,WAAWr/C,SAjBI,8BAkBrBgC,EAmFX,OA/FAk9C,EAAO3kD,mBAAqB,WACxB,MAAO,CACH8rB,WAAY,OAYpB64B,EAAOI,WAAa,SAASriD,EAAYxB,GACrC,IAAI8jD,GAAQ,EAAIjmD,EAAUD,SAAS,SAAS2G,SAtBxB,sBAsBwDqG,SAASpJ,GACrFxC,KAAKojD,MAAQpjD,KAAKgB,QAAQ+jD,eAAe/wC,iBAAiB8wC,EAAO1B,EAAMxkD,QAASoC,IAEpFyjD,EAAOE,YAAc,WACjB,IAAII,EAAiB/kD,KAAKgB,QAAQ+jD,eAC9BviD,GAAa,EAAI3D,EAAUD,SAAS,SAASgN,SAASm5C,EAAe7yC,YACrE8yC,EAAchlD,KAAKilD,kBACvB,OAAOF,EAAe/wC,iBAAiBxR,EAAY2gD,EAAOvkD,QAASomD,IAEvEP,EAAOQ,gBAAkB,WACrB,IAAIj6C,EAAShL,KACb,MAAO,CACH+hC,gBAAiB,SAASmjB,GACtB,IAAIC,EAAan6C,EAAOo6C,eAAep6C,EAAOhK,SAC9CgK,EAAO65C,YAAW,EAAIhmD,EAAUD,SAASsmD,GAAcC,IAE3DE,gBAAgB,EAChBC,QAAS,WACLt6C,EAAOo4C,MAAM5c,SAEjB+e,SAAU,WACNv6C,EAAOo4C,MAAMoC,cACbx6C,EAAOo4C,MAAMphD,OAAO,iBAAkB,OAE1CyjD,WAAW,EACX73C,MAAO,OACPC,OAAQ,OACR8zB,SAAS,EACTG,qBAAqB,EACrBD,qBAAqB,EACrB/gB,UAAW,CACPhD,KAAM,CACF7E,KAAM,OACNysC,SAAU,EACVhyB,KAAM,EACNiyB,GAAI,GAERt1C,KAAM,CACF4I,KAAM,OACNysC,SAAU,IACVhyB,KAAM,EACNiyB,GAAI,IAGZC,YAAY,EACZC,UAAW7lD,KAAK6lD,YAGxBpB,EAAOW,eAAiB,SAASpkD,GAC7B,MAAO,CACH4qB,WAAY5qB,EAAQ4qB,WACpBS,mBAAoBrsB,KAAK8lD,wBAAwB7iD,KAAKjD,MACtDkuB,cAAe,SACf63B,aAAc,iBAGtBtB,EAAOqB,wBAA0B,SAASj+C,GAClC7H,KAAKmjD,OAAOnhD,OAAO,aACnBhC,KAAKmjD,OAAO9yC,OACZrQ,KAAKgmD,mBAAmBn+C,KAGhC48C,EAAOuB,mBAAqB,SAASC,KACrCxB,EAAOyB,UAAY,WACflmD,KAAKmjD,QAAUnjD,KAAKmjD,OAAOrlC,QAE/B2mC,EAAO0B,aAAe,SAAS9jB,GAC3BriC,KAAKomD,cAAgB/jB,GAEzBoiB,EAAO4B,YAAc,WACjB,OAAOrmD,KAAKomD,eAxHF9B,EA0HDN,GA1HcO,EA0HG,CAAC,CAC3BrgD,IAAK,YACL+D,IAAK,WACD,IAAIurC,GAAS,EAAI3mC,EAAQ6N,aACrB4rC,EAAe9S,IAAU,EAAI30C,EAAUD,SAAS40C,GAAQ3lC,UAAY,EACxE,OAAO4P,KAAKk5B,IAhGP,IAgGuB,GAAK2P,QA7HzCjD,EAAkBiB,EAAYl1B,UAAWm1B,GAEzCC,GACAnB,EAAkBiB,EAAaE,GAEnCzwB,OAAO4vB,eAAeW,EAAa,YAAa,CAC5CZ,UAAU,IA0HHM,EAlGO,CAmGhBC,GAEN,IAAIrkD,EAAWokD,EACfrlD,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCCjKzBD,EAAQC,aAAU,EAClB,IAcIgB,EADa,IAbS,WACtB,SAAS2mD,IACLvmD,KAAKwmD,YAAc,GAEvB,IAAI/B,EAAS8B,EAAoBn3B,UAOjC,OANAq1B,EAAOgC,aAAe,SAASvgD,EAAMwgD,GACjC1mD,KAAKwmD,YAAYtgD,GAAQwgD,GAE7BjC,EAAOkC,aAAe,SAASzgD,GAC3B,OAAOlG,KAAKwmD,YAAYtgD,IAErBqgD,EAXe,IAe1B5nD,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,iCCjBzBD,EAAQC,aAAU,EAClB,IAAIC,EAAYC,EAAuBC,EAAQ,KAC3CS,EAAQT,EAAQ,IAChB2jB,EAAY3jB,EAAQ,IACpB6nD,EAAa9nD,EAAuBC,EAAQ,MAC5CiO,EAAUjO,EAAQ,KAClBG,EAAYH,EAAQ,IACpBE,EAAUF,EAAQ,IAClBgO,EAAYhO,EAAQ,KACpBC,EAAQD,EAAQ,KAChBU,EAAUV,EAAQ,IAClB8nD,EAAc/nD,EAAuBC,EAAQ,MAC7C+nD,EAAShoD,EAAuBC,EAAQ,MACxCgoD,EAAiBjoD,EAAuBC,EAAQ,MAChD8N,EAAU9N,EAAQ,IAClBsH,EAAiBvH,EAAuBC,EAAQ,KAEpD,SAASD,EAAuBY,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAKIsnD,EAA0B,CAC1BC,KAAM,SAASpiD,GACX,OAAOA,GAASA,EAAMqiD,eAE1BC,MAAO,SAAStiD,GACZ,OAAOA,GAASA,EAAMuiD,WAAa,GAEvCC,IAAK,SAASxiD,GACV,OAAOA,GAASA,EAAMyiD,WAE1BC,QAAS,SAAS1iD,GACd,OAAOA,GAAS4Y,KAAKyzB,MAAMrsC,EAAMuiD,WAAa,GAAK,GAEvDI,KAAM,SAAS3iD,GACX,OAAOA,GAASA,EAAM4iD,YAE1BC,OAAQ,SAAS7iD,GACb,OAAOA,GAASA,EAAM8iD,cAE1BC,OAAQ,SAAS/iD,GACb,OAAOA,GAASA,EAAMgjD,eAG1BC,EAAsB,WACtB,IAAIz4C,EAAOxJ,UAAU,GACjBhB,EAAQ7E,KAAK2c,mBAAmBtN,GACpC,KAAK,EAAI7P,EAAM4J,WAAWvE,GACtB,OAAO,KAEP,GAAIkjD,EAAW/nD,KAAK0sB,UAAW,CAC3B,IAAIs7B,EAAuBniD,UAAU,GACrC,OAAOmhD,EAAwBgB,GAAsBnjD,GAErD,GAAI,WAAa7E,KAAK0sB,SAAU,CAC5B,IAAIu7B,EAAgBpiD,UAAU,GAC9B,OAAO4X,KAAKyzB,MAAMgX,OAAOrjD,GAASojD,GAAiBA,IAcnE,SAASF,EAAWr7B,GAChB,MAAO,SAAWA,GAAY,aAAeA,EAEjD,IAAI5d,EAAe,SAAStM,GACxBA,EAAWyF,IAAI,GAAG+G,YAAc,QAEhCm5C,EAAuB,SAASC,GAChCA,EAAOA,GAAQ,GAEf,IADA,IAAIpjC,EAAS8hC,EAAOloD,QAAQupD,qBAAqBC,GACxCz1C,EAAI,EAAGA,EAAIy1C,EAAK7jD,OAAQoO,IACzBy1C,GAAQA,EAAKz1C,SAAM,IAAWy1C,EAAKz1C,GAAGpC,aACtCyU,EAAOrS,GAAGpC,WAAa63C,EAAKz1C,GAAGpC,YAE/B63C,GAAQA,EAAKz1C,SAAM,IAAWy1C,EAAKz1C,GAAGs1C,gBACtCjjC,EAAOrS,GAAGs1C,cAAgBG,EAAKz1C,GAAGs1C,eAG1C,OAAOjjC,GAEP1J,EAAc,SAASzW,EAAO7D,GAC9B,IAAIqnD,EAAYtB,EAAenoD,QAAQkI,OAAOjC,EAAO7D,EAAQ8F,SAAWjC,GAASA,EAAM2L,YAAc,GACjG83C,EAAe,CACfzjD,MAAOA,EACPwjD,UAAWrnD,EAAQunD,iBAAmBvnD,EAAQunD,iBAAiBF,GAAaA,EAC5El/C,OAAQnI,EAAQmI,QAAU,MAC1B8+C,cAAejnD,EAAQinD,eAE3B,OAAOjnD,EAAQwnD,cAAgBxnD,EAAQwnD,cAAcjgD,KAAKvH,EAASsnD,GAAgBA,EAAaD,WAEhGI,EAAiB,SAASC,EAAat5C,GACvC,IAAIu5C,EAAgBD,EAAYC,eAAiBD,EAAYE,eAAiBx5C,EAAas5C,EAAYG,YAAc,gBAAkBz5C,EAAas5C,EAAYG,aAChK,OAAOvtC,EAAYotC,EAAY7jD,MAAO,CAClCiC,OAAQ4hD,EAAYI,YACpBP,iBAAkB,SAASF,GACvB,OAAOM,GAAgB,EAAI37C,EAAQlG,QAAQ6hD,EAAeN,EAAWK,EAAYE,eAAiBP,GAEtGG,cAAeE,EAAYF,iBAG/B5hB,EAAoB,SAAS10B,GAC7B,IAAI62C,EAAa72C,EAAS7C,MAAQ6C,EAAS7C,OACvC25C,EAAeD,GAAcA,EAAWC,aACxCC,EAAaD,GAAgBA,EAAa,GAC9C,OAAOC,GAAcF,EAAWE,IAsBhCrpD,EAAW,CACX0c,iBAAkB,SAASpK,GAGvB,GADAA,EAAWA,GAAYlS,KAAKmS,UAC5B,CAGA,IAAI+2C,EALOlpD,KAKY6L,gBA1HX,UA2HRs9C,EAAgBj3C,EAAS5G,KAAK,IAAM49C,GAAapzC,OACjDsb,EAAYpxB,KAAKkR,gBAAgBrC,UACjCoQ,EAAYjf,KAAKkR,gBAAgB+N,YAChCkqC,EAAc5kD,SACf4kD,GAAgB,EAAItqD,EAAUD,SAAS,UAAU2G,SAAS2jD,GAAat9C,SAASsG,IAEhFkf,IAAcnS,EACdkqC,EAAcnpC,YAAY,aAAa9c,KAbhClD,KAa0C0Y,kBAEjDywC,EAAc5jD,SAAS,eAG/B4O,gBAAiB,SAASjC,EAAU1P,EAAY8P,GAC5C,IACIuO,EADO7gB,KAENoS,YAFMpS,KAEaoS,WAAWF,WAAW3G,UAC9CsV,EAHW7gB,KAGagC,OAAO,gBACN,SAAW6e,EAAiBlT,SAAW2E,EAAeuO,EAAiBlT,UAC5FkT,GAAmB,EAAI5hB,EAAQc,QAAQ,CACnC4hC,SAAS,EACT1gB,QAASJ,EAAiB3d,KAC1Bm/B,SAAU,WACN,IAAI+mB,GAAU,EAAIvqD,EAAUD,UAAS,EAAIiO,EAAQ6N,cACjD,OAAIxI,EAASrE,SAAWu7C,EAAQv7C,SACrB,CACHw7C,GAAID,EACJ1mB,SAAUxwB,EACVswB,UAAW,OAGZ,CACH6mB,GAAIn3C,IAGZjG,UAAWzJ,GACZqe,GAtBI7gB,KAuBFoS,WAvBEpS,KAuBgBgU,kBAAiB,EAAInV,EAAUD,SAAS,SAASgN,SAASpJ,GAAaqkD,EAAYjoD,QAASiiB,IAvB5G7gB,KAyBFoS,WAAa,MAG1B2nB,cAAe,SAAS71B,EAAKnC,EAAOmG,GAChC,IAAIxC,GAAS,EACb,QAAI,IAAWxB,GAAOyjB,MAAMC,QAAQ7lB,GAAQ,CACxCmG,EAAUrC,UAAUtB,QAAU,EAAI,MAAQ2D,EAC1C,IAAK,IAAIyK,EAAI,EAAGA,EAAI5Q,EAAMwC,OAAQoO,IAAK,CACnC,IAAIrQ,GAAO,EAAI9C,EAAM4J,WAAWlB,GAAWnG,EAAM4Q,GAAGzK,GAAWnG,EAAM4Q,GACrE,IAAI,EAAIlT,EAAQ+lB,cAActhB,EAAK5B,GAAO,CACtCoD,EAAQiN,EACR,QAIZ,OAAOjN,GAEXq0C,eAAgB,SAAST,EAASgQ,GAC9B,IAAIC,EAAe,GACnBD,EAAYA,GAAa,MACzB,IAAK,IAAI32C,EAAI,EAAGA,EAAI2mC,EAAQ/0C,OAAQoO,IAC3B2mC,EAAQ3mC,KAGT42C,EAAahlD,QACbglD,EAAallD,KAAKilD,GAEtBC,EAAallD,KAAKi1C,EAAQ3mC,KAK9B,GAHI,IAAM42C,EAAahlD,SACnBglD,EAAeA,EAAa,IAE5BA,EAAahlD,OACb,OAAOglD,GAGfC,aAAc,SAASn5B,EAASo5B,GAE5B,IADA,IAAIC,EAA8B,EACzB/2C,EAAI,EAAGA,EAAI82C,EAAYllD,OAAQoO,IAChC0d,EAAQo5B,EAAY92C,KACpB+2C,IAGR,OAAOr5B,EAAQ9rB,QAAU8rB,EAAQ9rB,SAAWmlD,GAEhDC,sBA/GwB,SAASA,EAAsBC,EAASC,GAChE,GAAIliC,MAAMC,QAAQgiC,IAAYjiC,MAAMC,QAAQiiC,GAAU,CAClD,GAAID,EAAQrlD,SAAWslD,EAAQtlD,OAC3B,OAAO,EAEP,IAAK,IAAIoO,EAAI,EAAGA,EAAIi3C,EAAQrlD,OAAQoO,IAChC,IAAKg3C,EAAsBC,EAAQj3C,GAAIk3C,EAAQl3C,IAC3C,OAAO,EAInB,OAAO,EAEP,OAAI,EAAInT,EAAMoF,YAAYglD,IAAYA,EAAQvhD,aAAe,IAAK,EAAI7I,EAAMoF,YAAYilD,IAAYA,EAAQxhD,aAAe,EAChHuhD,EAAQvhD,cAAgBwhD,EAAQxhD,cAAe,EAAIrJ,EAAM8qD,cAAcF,EAAQ9lC,gBAAiB,EAAI9kB,EAAM8qD,cAAcD,EAAQ/lC,cAEhI,EAAI9kB,EAAM8qD,cAAcF,KAAY,EAAI5qD,EAAM8qD,cAAcD,IAgG3ElX,YAAa,SAASoX,EAAUC,EAAYC,GACnCF,EAASC,KACVD,EAASC,GAAc,WACnB,IAAIp+B,EAAa5rB,KAAKuB,YACtB,OAAOqqB,EAAaA,EAAWo+B,GAAYpkD,MAAMgmB,EAAY/lB,WAAaokD,KAItF3uC,YAAaA,EACb8/B,yBAA0B,SAASzyC,EAAQQ,GACvC,MAAO,CACHrC,OAAQ6B,EAAO7B,OACfyhD,iBAAkB5/C,EAAO4/C,iBACzBC,cAAe7/C,EAAO6/C,cACtBr/C,OAAQA,EACR+gD,SAAUvhD,EAAOuhD,SACjBC,UAAWxhD,EAAOwhD,YAG1BhvC,gBAAiB,SAASxS,EAAQ9D,EAAOwK,EAAM5H,GAC3C,OAAIkB,EAAOyhD,sBAAmB,IAAWzhD,EAAOyhD,gBAAgBvlD,GACrD8D,EAAOyhD,gBAAgBvlD,GAE1B8D,EAAO0hD,uBAAyBh7C,GAAQ,UAAY5H,EAC7CkB,EAAO0hD,sBAAsBh7C,IAEhC1G,EAAOspB,QAAY,UAAYxqB,IAAYkB,EAAO2hD,qBAAuB3hD,EAAO0hD,uBAKrFxlD,EAJY8D,EAAOspB,OAAOtV,mBAAmB9X,IAMxD2K,uBAAwB,SAASD,EAAcH,GAE3C,IADA,IAAI4V,EAAS,IACJrS,EAAI,EAAGA,EAAIpD,EAAahL,OAAQoO,IAAK,CAC1C,IAAI+1C,EAAcn5C,EAAaoD,GAC/BqS,IAAWrS,EAAI,EAAI,KAAO,IAAM81C,EAAeC,EAAat5C,GAEhE,OAAO4V,EAAU,KAErByjC,eAAgBA,EAChBN,qBAAsBA,EACtBoC,oBAAqB,SAAS79B,GAC1B,OAAQA,GACJ,IAAK,OACD,MAAO,YACX,IAAK,WACD,MAAO,uBAGnB89B,+BAAgC,SAAS7hD,EAAQ8hD,GAC7C,IAAIzlC,EAAS,GACT60B,EAAYlxC,EAAOkxC,WAAalxC,EAAOzC,KACvC+hD,EAAgBrB,EAAWhoD,QAAQ8rD,iBAAiB/hD,GACxD,OAAIs/C,IACA,EAAI/oD,EAAUqE,MAAM0kD,GAAe,SAASviD,EAAOilD,GAC/C3lC,EAAO3gB,KAAKomD,EAAiB,CACzBG,SAAU/Q,EACVoO,cAAe0C,EACfp6C,WAAY7K,EAAQuiD,EAAc1jD,OAAS,GAC3CujD,EAAoB7kD,KAAK0F,EAAQgiD,OAElC3lC,IAEPylC,EACAzlC,EAAS,CAAC,CACN4lC,SAAU/Q,EACVtpC,YAAY,KAGhByU,EAAS,SAAgB3V,GACrB,IAAI2V,EAASrc,EAAOgU,mBAAmBtN,GAIvC,YAHI,IAAW2V,GAAU,KAAOA,IAC5BA,EAAS,MAENA,GAEPrc,EAAOkiD,gBACP7lC,EAAS,CAAC,CACN4lC,SAAU5lC,EACV8lC,QAASniD,EAAOkiD,cAAc5nD,KAAK0F,OAIxCqc,IAEX+lC,oBAAqB,SAASC,EAAiBC,EAAiBC,GAG5D,GAFAF,EAAkB7C,EAAqB6C,GACvCC,EAAkB9C,EAAqB8C,GACnCtjC,MAAMC,QAAQojC,IAAoBrjC,MAAMC,QAAQqjC,GAAkB,CAClE,GAAID,EAAgBzmD,SAAW0mD,EAAgB1mD,OAC3C,OAAO,EAEP,IAAK,IAAIoO,EAAI,EAAGA,EAAIq4C,EAAgBzmD,OAAQoO,IACxC,GArQUw4C,EAqQUH,EAAgBr4C,GAAGi4C,SArQlBQ,EAqQ4BH,EAAgBt4C,GAAGi4C,YApQhF,EAAIprD,EAAMoF,YAAYumD,KAAc,EAAI3rD,EAAMoF,YAAYwmD,IACtDD,EAAUE,kBAAoBD,EAAUC,iBACjCF,EAAUE,mBAAqBD,EAAUC,kBAAoBF,EAAU9iD,cAAgB+iD,EAAU/iD,YAGzG8iD,IAAcC,IA+P4EJ,EAAgBr4C,GAAG24C,OAASL,EAAgBt4C,GAAG24C,MAAQN,EAAgBr4C,GAAGs1C,gBAAkBgD,EAAgBt4C,GAAGs1C,gBAAkBiD,GAAoBK,QAAQP,EAAgBr4C,GAAGpC,cAAgBg7C,QAAQN,EAAgBt4C,GAAGpC,YACxS,OAAO,EAInB,OAAO,EAEP,QAASy6C,IAAoBA,EAAgBzmD,YAAc0mD,IAAoBA,EAAgB1mD,QA5QtF,IAAS4mD,EAAWC,GA+QrCI,mBAAoB,SAASzpD,EAAO0pD,EAAcC,EAAYlmB,GAQ1D,IAPA,IAEIljC,EACA2f,EAGA7V,EANAu/C,EAAc5pD,EAAMwC,OACpBqnD,GAAiB,EAGjBvjD,EAAcm9B,GAAoB,EAClCxgB,EAAS,GAEJrS,EAAI,EAAGA,GAAKg5C,EAAah5C,IAAK,CAC/BA,EAAIg5C,IAEJ1pC,GADA3f,EAAOP,EAAMqT,GAAGzC,IACFsP,SACd7V,EAAa,QAAU9J,EAAKkU,IAAI,cAEpC,IAAIq1C,EAAQ,CACRnmD,MAAO2C,EACPoY,EAAGwB,EAASA,EAAO3O,OAASo4C,GAAct/C,EAAauG,IAAMg5C,GAAc,EAAI5+C,EAAUmL,iBAAiB5V,EAAK,IAAIsL,MAAQ,GAAK,EAChI42B,EAAGviB,EAASA,EAAO7O,KAAOs4C,GAAc/4C,IAAMg5C,GAAc,EAAI5+C,EAAUmL,iBAAiB5V,EAAK,IAAIuL,OAAS,GAAK,EAClHxF,YAAaA,GAEjB,IAAKqjD,GAAc/4C,EAAI,EAAG,CACtB,IAAIm5C,EAAiB/pD,EAAMqT,GAAGzC,EAAI,GAAGsP,SACjC6pC,EAAe14C,IAAMy4C,EAAMrnB,IAC3BqnB,EAAMrnB,EAAIsnB,EAAe14C,KAG7Bq4C,IACAG,EAAiBH,EAAaI,IAE7BD,GACD5mC,EAAO3gB,KAAKwnD,GAEhBxjD,IAEJ,OAAO2c,GAEX+mC,sBAAuB,WACnB,MAAO,CACHh8C,gCAAgC,EAChCC,OAAQ,SAAS/D,EAAWjL,GACxB,IAAIwB,GAAa,EAAI3D,EAAUD,SAASqN,GACxC,KAAI,EAAIzM,EAAM4J,WAAWpI,EAAQ6D,QAAY7D,EAAQqO,MAAQrO,EAAQqO,KAAKsM,gBAAoB3a,EAAQsG,IAAIkK,SAMtG1C,EAAatM,OANmG,CAChH,IAAIiM,EAAWzN,EAAQ8P,UAAU2S,QAAQ,YACzCjhB,EAAW+C,SApWH,sBAoWmCA,SAvWvB,0BAwWpB,EAAI1G,EAAUD,SAAS,SAAS2G,SAASvE,EAAQ6D,MAvWnC,2BACA,4BAsWsG+G,SAASpJ,GAC7HiM,EAAS3C,QAAQ,QAAS9K,EAAQ6D,MAAQ4J,EAASu9C,SAAS,2BAA6Bv9C,EAASu9C,SAAS,yBAA0BxpD,OAOrJsM,aAAcA,EACdi5C,WAAYA,EACZkE,kBAAmB,SAASC,GACxB,IACI,GAAIA,EACA,MAAO,CACHC,eAAgBD,EAAeC,eAC/BC,aAAcF,EAAeE,cAGvC,MAAOvkD,IACT,MAAO,IAEXwkD,kBAAmB,SAASH,EAAgBI,GACxC,IACQJ,GAAkBA,EAAeG,mBACjCH,EAAeG,kBAAkBC,EAAeH,eAAgBG,EAAeF,cAErF,MAAOvkD,MAEb0kD,sBAAuB,SAASz7C,EAAWoB,GACvC,IAAIs6C,EAAYt6C,EAASsD,GAAG,UAC5BnP,EAAezH,QAAQkzB,QAAQ5f,EAAU,SACzC,IAAIu6C,EAA6B37C,EAAU9O,OAAO,iCAC9CmQ,EAAUD,EAASjK,IAAI,GAC3B,IAAKukD,GAAaC,GAA8Bv6C,EAASsD,GAAG,0BAA4BtD,EAASsD,GAAG,cAAe,CAC/G,IAAI4jB,EAASwN,EAAkB10B,EAASuI,QAAQ,oBAChD,EAAIiI,EAAUuT,MAAMmD,GAAUA,EAAOszB,mBAAmB7lC,MAAK,WACzD1U,EAAQ0Z,cAIpB+a,kBAAmBA,EACnB+lB,4BAA6B,SAASh7C,EAASi7C,GAC3C,IAGIC,EAHAC,EAAsBn7C,EAAQlJ,MAAK,SAASE,GAC5C,OAAOA,IAAWA,EAAOW,UAAYX,EAAOk6C,QAAS,IAAUl6C,EAAOokD,iBAG1E,IAAKF,EAAkBl7C,EAAQpN,OAAS,EAAGoN,EAAQk7C,GAAkBA,IAAmB,CACpF,IAAIlkD,EAASgJ,EAAQk7C,GACjBj/C,EAAQg/C,GAAgBA,EAAaC,GACrCE,GAAiBD,IAAuB,IAAUnkD,EAAOokD,cAC7D,IAAKpkD,EAAOW,UAAYX,EAAOk6C,OAAS,mBAAqBj1C,GAASm/C,EAClE,MAGR,OAAOF,GAEXG,uBAAwB,SAASC,EAAY/6C,GACzC,SAAIA,IAAYA,EAAS3N,SACT2N,EAASuI,QAAQ,IAAMwyC,EAAWC,2BAA2BlqD,SAC5DwS,GAAGy3C,EAAWn8C,UAAUoB,cAKjDvT,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCC/bzBD,EAAQC,aAAU,EAClB,IAAIu0C,EAASr0C,EAAuBC,EAAQ,MACxCU,EAAUV,EAAQ,IAClBG,EAAYH,EAAQ,IACpBS,EAAQT,EAAQ,IAChBE,EAAUF,EAAQ,IAClBM,EAAMP,EAAuBC,EAAQ,MACrCouD,EAAOruD,EAAuBC,EAAQ,OACtCquD,EAASruD,EAAQ,IACjB45C,EAAS75C,EAAuBC,EAAQ,MACxCsuD,EAAgBvuD,EAAuBC,EAAQ,MAC/CuuD,EAAOxuD,EAAuBC,EAAQ,OAE1C,SAASD,EAAuBY,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IA+ZIE,EA5ZcuzC,EAAOv0C,QAAQiB,QAAQ,CACrCw2C,KAAM,SAASr1C,GACXhB,KAAKgB,QAAU,IACf,EAAI/B,EAAQc,QAAQC,KAAKgB,QAAShB,KAAKutD,kBAAmBvsD,GAC1DhB,KAAKgB,QAAQwsD,cAAcC,iBAAiBztD,KAAKgB,QAAQY,eACzD5B,KAAK0tD,mBAAqB,GAC1B1tD,KAAK2tD,mBAAqB,GAC1B3tD,KAAK4tD,eAAiB,GACtB5tD,KAAK6tD,+BACL7tD,KAAK8tD,gBAETC,UAAW,SAAS7nD,EAAMrB,GACtB7E,KAAKgB,QAAQkF,GAAQrB,EACjB,uBAAyBqB,GACzBlG,KAAKguD,oBAGbT,gBAAiB,WACb,MAAO,CACH3rD,mBAAe,EACfG,MAAO,GACPksD,mBAAmB,EACnBC,oBAAoB,EACpBC,oBAAoB,EACpBC,UAAW,EACXC,YAAa,GACb3hC,SAAU,OACV4hC,WAAY,WACZd,cAAe,IAAIF,EAAK1uD,QACxB2vD,cAAe9uD,EAAQyC,KACvBkmD,KAAM,OAGdyF,6BAA8B,WAC1B7tD,KAAKwuD,sBAAwBxuD,KAAKgB,QAAQwsD,cAAciB,qBAAqBzuD,KAAKgB,QAAQe,MAAO/B,KAAKgB,QAAQotD,UAAWpuD,KAAKgB,QAAQ0rB,UACtI1sB,KAAK4tD,eAAiB5tD,KAAKgB,QAAQqtD,YAAY9pD,OAASvE,KAAK0uD,OAAO1uD,KAAKgB,QAAQqtD,aAAeruD,KAAKwuD,sBACrGxuD,KAAKgB,QAAQwsD,cAAcI,eAAiB5tD,KAAK4tD,eACjD5tD,KAAKguD,mBACLhuD,KAAK2uD,oBAETX,iBAAkB,WACVhuD,KAAKgB,QAAQktD,qBACbluD,KAAK4uD,wBACL5uD,KAAK6uD,uBAET7uD,KAAK0tD,mBAAqB1tD,KAAK8uD,sBA/CxB,aAiDXH,iBAAkB,SAASzqD,GACnBlE,KAAKgB,QAAQmtD,qBACbjqD,EAAMlE,KAAK+uD,iBAAiB7qD,GAAOlE,KAAKgvD,uBAE5ChvD,KAAK2tD,mBAAqB3tD,KAAK8uD,sBAtDxB,aAwDXA,sBAAuB,SAASG,GAC5B,IAAI9sD,EAAOnC,KACPkvD,EAAQ,GAcZ,OAbA,EAAIhwD,EAAUqE,MAAMpB,EAAKgtD,2BAA2B,SAAS1rD,EAAGK,GACvD3B,EAAKitD,eAAetrD,IAGrBA,EAAKE,eAAeirD,KA/DrB,aAgEKA,GAAyB9sD,EAAKnB,QAAQitD,kBACtCiB,EAAM7qD,KAAKP,EAAKE,eAAeE,MAE/BgrD,EAAM3qD,QAAUpC,EAAKktD,gBAAgBH,EAAM,IAAI,GAAO,GACtDA,EAAQ,CAACprD,EAAKE,eAAeE,UAIlCgrD,GAEXC,wBAAyB,WACrB,OAAOnvD,KAAKgB,QAAQitD,kBAAoBjuD,KAAKsvD,UAAYtvD,KAAKuvD,eAElEH,eAAgB,SAAStrD,GACrB,OAAO,IAAUA,EAAKE,eAAe1B,KAAK8N,SAE9Co/C,UAAW,SAASngD,EAAMnL,GACtB,OAAOmL,IAASrP,KAAK4tD,eAAiB5tD,KAAKgB,QAAQwsD,cAAcgC,UAAUtrD,GAAOlE,KAAKgB,QAAQwsD,cAAciC,SAASpgD,EAAMnL,IAEhI0qD,sBAAuB,WACnB,IAAIzsD,EAAOnC,MACX,EAAId,EAAUqE,MAAMvD,KAAK4tD,gBAAgB,SAASnqD,EAAGK,GACjD,GAAKA,EAAKE,eAAeC,aAAaM,OAAtC,CAGA,IAAIypB,EAAalqB,EAAKE,eAAegoB,UACrC,IAASgC,GAAc7rB,EAAKutD,yBAAyB5rD,EAAMkqB,QAGnE6gC,oBAAqB,WACjB,IAAI1sD,EAAOnC,MACX,EAAId,EAAUqE,MAAMvD,KAAK4tD,gBAAgB,SAASnqD,EAAGK,GACpC3B,EAAKnB,QAAQwsD,cAAcmC,cAAc7rD,IACxCA,EAAKE,eAAe4rD,YAAcztD,EAAKnB,QAAQotD,WACzDjsD,EAAK0tD,gBAAgB/rD,GAAM,SAASd,GAChC,IAAI8sD,EAAiB3tD,EAAK4tD,wBAAwB/sD,GAClDb,EAAK6tD,eAAehtD,EAnGzB,WAmG2C8sD,UAKtDd,oBAAqB,WACjB,IAAI7sD,EAAOnC,MACX,EAAId,EAAUqE,MAAMvD,KAAK4tD,gBAAgB,SAASnqD,EAAGK,GAC5CA,EAAKE,eAAeisD,UAGzB9tD,EAAK4sD,iBAAiBjrD,EAAKE,eAAeE,SAGlD6qD,iBAAkB,SAAS7qD,GACvB,IAAI/B,EAAOnC,KACP8D,EAAO9D,KAAKoE,aAAaF,GAC7B/B,EAAK0tD,gBAAgB/rD,GAAM,SAASd,GAChCb,EAAK6tD,eAAehtD,EAtHjB,YAsHmC,OAG9CktD,iBAAkB,SAASpsD,EAAMqsD,EAAWvQ,EAAUwQ,GAClD,IAAK,EAAI5wD,EAAMoF,YAAYg7C,GAA3B,CAGA,IAAIz9C,EAAOnC,KACPqwD,EAAUvsD,EAAKE,eAAeE,KAEM,KADxCksD,EAAgBA,GAAiB,IACfx4B,QAAQy4B,KACtBD,EAAc/rD,KAAKgsD,IACnB,EAAInxD,EAAUqE,MAAMO,EAAKE,eAAeC,cAAc,SAASR,EAAGS,GAC9D,IAAIosD,EAAQnuD,EAAKiC,aAAaF,GAC9B07C,EAAS0Q,GACLA,EAAMtsD,eAAeC,aAAaM,QAAU4rD,GAC5ChuD,EAAK+tD,iBAAiBI,EAAOH,EAAWvQ,EAAUwQ,SAKlEP,gBAAiB,SAAS/rD,EAAM87C,EAAUwQ,GACtC,GAAItsD,EAAKE,eAAe4rD,YAAc5vD,KAAKgB,QAAQotD,YAAc,EAAI5uD,EAAMoF,YAAYg7C,GAAvF,CAGAwQ,EAAgBA,GAAiB,GACjC,IAAIlsD,EAAMJ,EAAKE,eAAeE,IAC9B,IAAoC,IAAhCksD,EAAcx4B,QAAQ1zB,GAAa,CACnCksD,EAAc/rD,KAAKH,GACnB,IAAIlB,EAAShD,KAAKgB,QAAQwsD,cAAcmC,cAAc7rD,GAClDd,IACA48C,EAAS58C,GACLA,EAAOgB,eAAe4rD,YAAc5vD,KAAKgB,QAAQotD,WACjDpuD,KAAK6vD,gBAAgB7sD,EAAQ48C,EAAUwQ,OAKvDL,wBAAyB,SAASjsD,GAK9B,IAJA,IAAI8T,EAAa9T,EAAKE,eAAeC,aAAaM,OAC9CgsD,EAAqB,EACrBC,EAAsB,EACtBxrC,GAAS,EACJrS,EAAI,EAAGA,GAAKiF,EAAa,EAAGjF,IAAK,CACtC,IAAIxO,EAAYnE,KAAKoE,aAAaN,EAAKE,eAAeC,aAAa0O,IAC/D89C,GAAmB,IAAUtsD,EAAUH,eAAe1B,KAAK8N,QAC3DsgD,EAAavsD,EAAUH,eAAegoB,SACtCykC,EACAD,IAGAE,EACAH,SAEI,IAAWG,IACXH,GAAsB,IAOlC,OAHIA,IACAvrC,EAASurC,IAAuB34C,EAAa44C,QAA6B,GAEvExrC,GAEX0qC,yBAA0B,SAAS5rD,EAAMyf,GACrC,IAAIphB,EAAOnC,KACXA,KAAKkwD,iBAAiBpsD,GAAM,GAAM,SAASwsD,GACnCnuD,EAAKitD,eAAekB,IACpBnuD,EAAK6tD,eAAeM,EAzLrB,WAyLsC/sC,OAIjDysC,eAAgB,SAASlsD,EAAM6sD,EAAOptC,GAC9Bzf,EAAKE,eAAe2sD,KAAWptC,IAGnCzf,EAAKE,eAAe2sD,GAASptC,EACzBzf,EAAKE,eAAe4sD,aACpB9sD,EAAKE,eAAe4sD,WAAWD,GAASptC,GAE5CvjB,KAAKgB,QAAQY,cAAcE,QAAQ6uD,GAAO7sD,EAAKE,eAAe1B,KAAMihB,GACpEvjB,KAAKgB,QAAQutD,cAAczqD,KAE/B+sD,cAAe,SAAS7hC,GACpB,IAAI7sB,EAAOnC,MACX,EAAId,EAAUqE,MAAMyrB,GAAM,SAASvrB,EAAGS,GAClC,IAAIwB,EAAQvD,EAAK43B,cAAc71B,GAC3BJ,EAAO3B,EAAKiC,aAAaF,GAC7B/B,EAAKyrD,eAAeloD,GAAS,EAC7B5B,EAAKE,eAAeC,aAAaM,QAAUpC,EAAK0uD,cAAc/sD,EAAKE,eAAeC,kBAG1F6sD,YAAa,SAAS5sD,GAClB,IAAIJ,EAAO9D,KAAKoE,aAAaF,GAC7BlE,KAAK4tD,eAAe5tD,KAAK+5B,cAAc71B,IAAQ,EAC/ClE,KAAK6wD,cAAc/sD,EAAKE,eAAeC,cACvC,IAAI9B,EAAOnC,KACP+wD,EAAU,EACVhvD,GAAQ,EAAI9C,EAAQc,QAAQ,GAAIC,KAAK4tD,iBACzC,EAAI1uD,EAAUqE,MAAMxB,GAAO,SAAS2D,EAAOpD,GAClCA,IACDH,EAAKyrD,eAAehwB,OAAOl4B,EAAQqrD,EAAS,GAC5CA,SAIZC,SAAU,SAAS1uD,GACf,IAAIkrD,EAAgBxtD,KAAKgB,QAAQwsD,cAC7B1pD,EAAO0pD,EAAcyD,mBAAmB3uD,EAAMtC,KAAKgB,QAAQY,cAAcC,QAAQ+tD,UAAUttD,IAC/FtC,KAAK4tD,eAAiB5tD,KAAK4tD,eAAejtD,OAAOmD,GACjD9D,KAAKwuD,sBAAwBxuD,KAAKwuD,sBAAsB7tD,OAAOmD,GAC/D0pD,EAAcI,eAAiBJ,EAAcI,eAAejtD,OAAOmD,IAEvEotD,cAAe,WACXlxD,KAAKgB,QAAQwsD,cAAc2D,qBAC3BnxD,KAAKguD,mBACLhuD,KAAK2uD,oBAETyC,qBAAsB,WAClB,OAAOpxD,KAAK0tD,oBAEhB2D,qBAAsB,WAClB,OAAOrxD,KAAK2tD,oBAEhB2B,QAAS,WACL,OAAOtvD,KAAK4tD,gBAEhB2B,YAAa,WACT,OAAOvvD,KAAKwuD,uBAEhB8C,cAAe,SAAShvD,GACpB,IAAI0iB,EAAS,KAOb,OANA,EAAI9lB,EAAUqE,MAAMvD,KAAK4tD,gBAAgB,SAASnqD,EAAGK,GACjD,GAAIA,EAAKE,eAAe1B,OAASA,EAE7B,OADA0iB,EAASlhB,GACF,KAGRkhB,GAEXusC,gBAAiB,SAASxvD,GACtB,IAAII,EAAOnC,KACPwxD,EAAQ,GAKZ,OAJA,EAAItyD,EAAUqE,MAAMxB,GAAO,SAAS0B,EAAGnB,GACnC,IAAIwB,EAAO3B,EAAKmvD,cAAchvD,GAC9BwB,GAAQ0tD,EAAMntD,KAAKP,MAEhB0tD,GAEXptD,aAAc,SAASF,EAAKmL,GACxB,OAAOrP,KAAKwvD,UAAUngD,GAAQrP,KAAKmvD,0BAA2BjrD,IAElE4pD,aAAc,WACV,OAAO9tD,KAAKgB,QAAQwsD,cAAciE,qBAAqBzxD,KAAK0xD,iBAEhEC,cAAe,WACX,OAAO3xD,KAAKgB,QAAQwsD,cAAcmE,iBAEtCC,qBAAsB,WAClB,OAAO5xD,KAAKgB,QAAQwsD,cAAcoE,wBAEtCC,cAAe,SAAS/tD,GACpB,OAAOA,EAAKE,eAAe4sD,YAE/Bc,aAAc,WACV,OAAO1xD,KAAK8xD,iBAAiB9xD,KAAKgB,QAAQotD,YAE9C0D,iBAAkB,SAASlC,GACvB,OAAO,EAAIjX,EAAO/5C,SAASoB,KAAK4tD,gBAAgBpsC,OAAO,CAAC,2BAA4BouC,IAAY73C,WAEpGgiB,cAAe,SAAS71B,GACpB,OAAOlE,KAAKgB,QAAQwsD,cAAczzB,cAAc71B,IAEpD6tD,QAAS,SAASzvD,GACdtC,KAAKgxD,SAAS1uD,GACdtC,KAAKkxD,iBAETc,WAAY,SAAS9tD,GACjBlE,KAAK8wD,YAAY5sD,GACjBlE,KAAKkxD,iBAET7B,gBAAiB,SAASnrD,EAAKqf,EAAO0uC,GAClC,IAAIC,EAAuBlyD,KAAKmyD,sBAAsB5uC,GAClDzf,EAAO9D,KAAKwvD,UAAUyC,GAAmBC,EAAuBlyD,KAAKwuD,sBAAwBxuD,KAAK4tD,eAAgB1pD,GACtHlE,KAAKgwD,eAAelsD,EA7Sb,WA6S6Byf,GAChCvjB,KAAKgB,QAAQktD,qBAAuB+D,IACpC1uC,EAAQvjB,KAAK4uD,wBAA0B5uD,KAAK0vD,yBAAyB5rD,EAAMyf,GAC3EvjB,KAAK6uD,uBAET7uD,KAAK0tD,mBAAqB1tD,KAAK8uD,sBAlTxB,aAoTXqD,sBAAuB,SAASC,GAC5B,OAAQpyD,KAAKgB,QAAQitD,oBAAsBmE,GAE/CC,wBAAyB,SAASnuD,EAAKqf,GACnC,IAAIzf,EAAO9D,KAAKoE,aAAaF,GAC7BlE,KAAKgwD,eAAelsD,EAxTb,WAwT6Byf,IAExC+uC,gBAAiB,SAAS/uC,GACtB,IAAK,EAAI/jB,EAAM4J,WAAWma,GAA1B,CAGA,IAAIphB,EAAOnC,KACPuyD,EAAkBpwD,EAAKurD,mBAAmBvrD,EAAKurD,mBAAmBnpD,OAAS,GAC3EiuD,EAAgBrwD,EAAKgwD,sBAAsB5uC,GAASvjB,KAAKwuD,sBAAwBxuD,KAAK4tD,gBAC1F,EAAI1uD,EAAUqE,MAAMivD,GAAe,SAAS9sD,EAAO5B,GAC1C3B,EAAKitD,eAAetrD,IAGzB3B,EAAK6tD,eAAelsD,EAtUjB,WAsUiCyf,MAExCphB,EAAKurD,mBAAqBvrD,EAAK2sD,sBAxUxB,aAyUFvrC,GAASphB,EAAKnB,QAAQyxD,mBACvBtwD,EAAKktD,gBAAgBkD,GAAiB,KAG9CG,cAAe,WACX,QAAI1yD,KAAKoxD,uBAAuB7sD,SACrBvE,KAAKoxD,uBAAuB7sD,SAAWvE,KAAK4xD,6BAAgC,IAK3Fe,gBAAiB,SAASzuD,EAAKqf,GAC3B,IAAIzf,EAAO9D,KAAKoE,aAAaF,GAC7BlE,KAAKgwD,eAAelsD,EAvVb,WAuV6Byf,GAChCA,GACAvjB,KAAK2uD,iBAAiBzqD,GAE1BlE,KAAK2tD,mBAAqB3tD,KAAK8uD,sBA3VxB,aA6VX8D,WAAY,SAAStwD,GACjB,OAAQtC,KAAKgB,QAAQqtD,YAAY9pD,UAAYvE,KAAK6yD,qBAAqB7yD,KAAKgB,QAAQqtD,YAAa,CAAC/rD,IAAOiC,QAE7GuuD,gBAAiB,SAASlI,EAAU/lD,EAAOykD,GACvC,IAAIjQ,EAAe,GACnB,OAAK1xB,MAAMC,QAAQgjC,KAElB,EAAI1rD,EAAUqE,MAAMqnD,GAAU,SAASj4C,EAAGrQ,GACvC+2C,EAAah1C,KAAK,CAAC/B,EAAMgnD,EAAWzkD,GAAQ,SAEhDw0C,EAAab,MACNa,GALI,CAACuR,EAAUtB,EAAWzkD,IAOrCguD,qBAAsB,SAAS/uC,EAAa0uC,GACxC,IAAI5H,EAAW5qD,KAAKgB,QAAQ+xD,YAAc/yD,KAAKgB,QAAQY,cAAcC,QAAQsD,QACzEmkD,EAAY6D,EAAKvuD,QAAQo0D,yBAAyBhzD,KAAKgB,QAAQstD,YAC/D2E,EAAWjzD,KAAK8yD,gBAAgBlI,EAAU9mC,EAAawlC,GAE3D,OADAkJ,EAAgBA,GAAiBxyD,KAAKwuD,uBAC/B,EAAI7V,EAAO/5C,SAAS4zD,GAAehxC,OAAOyxC,GAAUl7C,WAE/D22C,OAAQ,SAASL,GACb,IAAIlsD,EAAOnC,KACPkzD,EAAUlzD,KAAK6yD,qBAAqBxE,GACpCb,EAAgBxtD,KAAKgB,QAAQwsD,cAwCjC,OAtCA,SAAS2F,EAAeD,EAASxtD,GAE7B,IADA,IAAInB,EAAS2uD,EAAQ3uD,OACdmB,EAAQnB,GAAQ,CACnB,IAAIT,EAAOovD,EAAQxtD,GACnB,GAAI5B,EAAKE,eAAe4rD,YAAcztD,EAAKnB,QAAQotD,UAAnD,CAIA,IAAIprD,EAASwqD,EAAcmC,cAAc7rD,GACpCd,GAKAA,EAAOgB,eAAeisD,UACvB9tD,EAAK6tD,eAAehtD,EArYzB,YAqY2C,IAEtC,EAAIoqD,EAAOgG,SAASpwD,EAAQkwD,IAAY,EACxCxtD,KAGJwtD,EAAQt1B,OAAOl4B,EAAO,EAAG1C,GACzBmwD,EAAeD,EAASxtD,MAZpBrG,EAAIT,QAAQkqB,IAAI,QAAShlB,EAAKE,eAAe4rD,UAAW9rD,EAAKE,eAAeE,KAC5EwB,UANAA,KAoBZytD,CAAeD,EAAS,GACpBlzD,KAAKgB,QAAQonD,OACb8K,EAAU7F,EAAczuD,QAAQy0D,gBAAe,EAAI1a,EAAO/5C,SAASs0D,GAAU,CACzE9K,KAAMpoD,KAAKgB,QAAQonD,OACpBrwC,WAEPy1C,EAAc8F,YAAc,IAC5B,EAAIp0D,EAAUqE,MAAM2vD,GAAS,SAASxtD,EAAO5B,GACzCA,EAAKE,eAAeC,aAAe,GACnCupD,EAAc8F,YAAYxvD,EAAKE,eAAeE,KAAOwB,KAEzD8nD,EAAcI,eAAiBsF,EAC/B1F,EAAc+F,kBACP/F,EAAcI,kBAI7BjvD,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCCnbzBD,EAAQC,aAAU,EAClB,IAAIu0C,EAASr0C,EAAuBC,EAAQ,MACxCE,EAAUF,EAAQ,IAClBM,EAAMP,EAAuBC,EAAQ,MACrCG,EAAYH,EAAQ,IACpBS,EAAQT,EAAQ,IAEpB,SAASD,EAAuBY,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IA2LIE,EA3LgBuzC,EAAOv0C,QAAQiB,QAAQ,CACvCw2C,KAAM,WACFr2C,KAAK4tD,eAAiB,GACtB5tD,KAAKwzD,YAAc,EACnBxzD,KAAKyzD,mBAAqB,GAE9BH,YAAa,GACbI,qBAAsB,SAAS3xD,EAAO6tD,GAClC,IAAIztD,EAAOnC,MACX,EAAId,EAAUqE,MAAMxB,GAAO,SAAS0B,EAAGnB,GACnC,IAAIggD,GAAW,EAAI9iD,EAAM4J,WAAWwmD,GAAaA,EAAYztD,EAAKwxD,aAAarxD,GAC3EwB,EAAO3B,EAAK8uD,mBAAmB3uD,EAAMggD,GACzCngD,EAAKyrD,eAAevpD,KAAKP,GACzB3B,EAAKyxD,qBAAqB9vD,EAAKE,eAAeE,KAC9C/B,EAAKmxD,YAAYxvD,EAAKE,eAAeE,KAAO/B,EAAKyrD,eAAerpD,OAAS,EACrEpC,EAAK0xD,iBAAiBvxD,IACtBH,EAAKuxD,qBAAqBvxD,EAAK2xD,eAAejyD,QAAQE,MAAMO,GAAOwB,EAAKE,eAAeE,SAInG0vD,qBAAsB,SAAS1vD,GAC3B,IAAI,EAAI1E,EAAM4J,WAAWpJ,KAAKszD,YAAYpvD,IACtC,MAAM7E,EAAIT,QAAQ4pB,MAAM,QAAStkB,IAGzCyvD,aAAc,SAASrxD,GACnB,MAAO,UAAYtC,KAAK+zD,UAAY/zD,KAAK8zD,eAAejyD,QAAQ+tD,UAAUttD,QAAQ,GAEtFuxD,iBAAkB,SAASvxD,GACvB,GAAI,UAAYtC,KAAK+zD,UAArB,CAGA,IAAIhyD,EAAQ/B,KAAK8zD,eAAejyD,QAAQE,MAAMO,GAC9C,OAAOP,GAASA,EAAMwC,SAE1ByvD,cAAe,SAAS1xD,GACpB,IAAI2xD,EAAYj0D,KAAK8zD,eAAejyD,QAAQqC,IACxCgwD,EAAUD,EAAU3xD,GAExB,OADmB2xD,IAAcC,GAAW,IAAMA,KAAY,EAAI10D,EAAM20D,aAAaD,GAC/DA,EAAUl0D,KAAK2xD,iBAEzCV,mBAAoB,SAAS3uD,EAAMstD,GAC/B5vD,KAAKwzD,eACL,IAAUlxD,EAAK8N,SAAWpQ,KAAKyzD,qBAC/B,IACI3vD,EAAO,CACPE,eAAgB,CACZowD,SAHGp0D,KAGY8zD,eAAejyD,QAAQuyD,SAAS9xD,EAAM,CACjD+xD,cAAc,IAElBpE,SANGjwD,KAMY8zD,eAAejyD,QAAQouD,SAAS3tD,EAAM,CACjD+xD,cAAc,IAElBroC,SATGhsB,KASY8zD,eAAejyD,QAAQmqB,SAAS1pB,EAAM,CACjD+xD,cAAc,IAElBnwD,IAZGlE,KAYOg0D,cAAc1xD,GACxBstD,WAAW,EAAIpwD,EAAM4J,WAAWwmD,GAAaA,EAb1C5vD,KAa2Ds0D,WAC9DhyD,KAdGtC,KAcQu0D,yBAAyBjyD,GACpC2B,aAAc,KAKtB,OAFA,EAAIhF,EAAQc,QAAQ+D,EAAMxB,UACnBwB,EAAK/B,MACL+B,GAEXyvD,gBAAiB,WACb,IAAIpxD,EAAOnC,MACX,EAAId,EAAUqE,MAAMvD,KAAK4tD,gBAAgB,SAASnqD,EAAGK,GACjD,GAAIA,EAAKE,eAAe4rD,YAAcztD,EAAKmyD,WAA3C,CAGA,IAAItxD,EAASb,EAAKwtD,cAAc7rD,GAChCd,GAAUA,EAAOgB,eAAeC,aAAaI,KAAKP,EAAKE,eAAeE,UAG9EqwD,yBAA0B,SAASjyD,GAC/B,IAAI,EAAI9C,EAAM20D,aAAa7xD,GAAO,CAC9B,IAAI4B,EAAM5B,EACVA,EAAO,GACPtC,KAAK8zD,eAAehyD,QAAQoC,IAAI5B,EAAM4B,GAE1C,OAAO5B,GAEXkyD,qBAAsB,SAAS1wD,EAAMd,GACjC,IAAKc,EACD,OAAO,KAEX,IAAI8sD,EAAa,CACb1tD,KAAMlD,KAAK8zD,eAAejyD,QAAQsD,QAAQrB,GAC1CI,IAAKJ,EAAKE,eAAeE,IACzB8nB,SAAUloB,EAAKE,eAAegoB,SAC9BikC,SAAUnsD,EAAKE,eAAeisD,SAC9BmE,SAAUtwD,EAAKE,eAAeowD,SAC9BpxD,OAAQA,GAAU,KAClBP,SAAUqB,EAAKE,eAAe1B,KAC9BkJ,SAAU,GACVzJ,MAAO,IAMX,OAJI6uD,EAAW5tD,SACX4tD,EAAW5tD,OAAOwI,SAASnH,KAAKusD,GAChCA,EAAW5tD,OAAOjB,MAAMsC,KAAKusD,IAE1BA,GAEXa,qBAAsB,SAASpiD,EAAMrM,GACjC,IAAKqM,EAAK9K,OACN,MAAO,GAEX,IAAIpC,EAAOnC,KACPy0D,EAAc,GAQlB,OAPA,EAAIv1D,EAAUqE,MAAM8L,GAAM,SAAS5L,EAAGK,GAClCA,GAAO,EAAItE,EAAM20D,aAAarwD,GAAQ3B,EAAKqtD,UAAU1rD,GAAQA,EAC7D,IAAI8sD,EAAazuD,EAAKqyD,qBAAqB1wD,EAAMd,GACjD4tD,EAAWplD,SAAWrJ,EAAKsvD,qBAAqB3tD,EAAKE,eAAeC,aAAc2sD,GAClF6D,EAAYpwD,KAAKusD,GACjB9sD,EAAKE,eAAe4sD,WAAaA,KAE9B6D,GAEXhH,iBAAkB,SAAShsD,GACvBzB,KAAK8zD,eAAiBryD,GAE1B+tD,UAAW,SAAStrD,GAChB,OAAOlE,KAAK4tD,eAAe5tD,KAAK+5B,cAAc71B,KAAS,MAE3DyrD,cAAe,SAAS7rD,GACpB,OAAO9D,KAAKwvD,UAAU1rD,EAAKE,eAAe4rD,YAE9CH,SAAU,SAAkBpgD,EAAMnL,GAC9B,GAAI,OAASA,QAAO,IAAWA,EAC3B,OAAO,KAEX,IAAI8gB,EAAS,KACT7iB,EAAOnC,KACPyvD,EAAW,SAASpgD,EAAMnL,GAQ1B,OAPA,EAAIhF,EAAUqE,MAAM8L,GAAM,SAAS5L,EAAG0O,GAElC,IADwBA,EAAQnO,gBAAkBmO,EAAQnO,eAAeE,KAAO/B,EAAK2xD,eAAejyD,QAAQqC,IAAIiO,IAC1F3B,aAAetM,EAAIsM,WAErC,OADAwU,EAAS7S,GACF,KAGR6S,GAEX,OAAOyqC,EAASpgD,EAAMnL,IAE1BytD,cAAe,WACX,OAAO3xD,KAAKwzD,aAEhB5B,qBAAsB,WAClB,OAAO5xD,KAAKyzD,oBAEhBiB,iBAAkB,WACd,IAAIvyD,EAAOnC,KACXA,KAAKszD,YAAc,IACnB,EAAIp0D,EAAUqE,MAAMvD,KAAK4tD,gBAAgB,SAASloD,EAAO5B,GACrD3B,EAAKyxD,qBAAqB9vD,EAAKE,eAAeE,KAC9C/B,EAAKmxD,YAAYxvD,EAAKE,eAAeE,KAAOwB,MAGpDyrD,mBAAoB,WAChBnxD,KAAKszD,YAAc,GACnBtzD,KAAK20D,qBACL30D,KAAK00D,mBACL10D,KAAKuzD,mBAEToB,mBAAoB,WAChB30D,KAAKszD,YAAc,IACnB,EAAIp0D,EAAUqE,MAAMvD,KAAK4tD,gBAAgB,SAASloD,EAAO5B,GACrDA,EAAKE,eAAeC,aAAe,OAG3C81B,cAAe,SAAS71B,GACpB,OAAOlE,KAAKszD,YAAYpvD,IAE5BuqD,qBAAsB,SAAS1sD,EAAOqsD,EAAW1hC,GAQ7C,OAPA1sB,KAAKwzD,YAAc,EACnBxzD,KAAKyzD,mBAAqB,EAC1BzzD,KAAKs0D,WAAalG,EAClBpuD,KAAK+zD,UAAYrnC,EACjB1sB,KAAKszD,YAAc,GACnBtzD,KAAK0zD,qBAAqB3xD,GAC1B/B,KAAKuzD,kBACEvzD,KAAK4tD,kBAIpBjvD,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCCxMzB,IAEgCc,EAHhCf,EAAQC,aAAU,EAQlB,IAAIgB,IAL4BF,EAFCX,EAAQ,QAGvBW,EAAIC,WAAaD,EAAM,CACjC,QAAWA,IAGAd,QACnBD,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,QACzBwH,EAAOzH,QAAQC,QAAUwH,EAAOzH,S,kCCXhCA,EAAQC,aAAU,EAClB,IAAIC,EAAYC,EAAuBC,EAAQ,KAC3CE,EAAUF,EAAQ,IAClBS,EAAQT,EAAQ,IAChB61D,EAAW71D,EAAQ,KACnBU,EAAUV,EAAQ,IAClB81D,EAAyB/1D,EAAuBC,EAAQ,KACxD+1D,EAAkB/1D,EAAQ,KAC1Bg2D,EAAUj2D,EAAuBC,EAAQ,MACzCM,EAAMP,EAAuBC,EAAQ,MACrCq0C,EAAat0C,EAAuBC,EAAQ,MAC5C2jB,EAAY3jB,EAAQ,IACpBsH,EAAiBvH,EAAuBC,EAAQ,KAChD0H,EAAS1H,EAAQ,IACjBi2D,EAAUj2D,EAAQ,MAClBk2D,EAA0Bn2D,EAAuBC,EAAQ,OACzD+nD,EAAS/nD,EAAQ,MACjBm2D,EAAqBp2D,EAAuBC,EAAQ,OACxDA,EAAQ,MACR,IAAIo2D,EAAuBr2D,EAAuBC,EAAQ,OACtDq2D,EAAat2D,EAAuBC,EAAQ,OAC5Cs2D,EAAcv2D,EAAuBC,EAAQ,OAEjD,SAASD,EAAuBY,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAiBnB,IAOI41D,EAAaP,EAAQn2D,QAAQiB,QAAQ,CACrCC,mBAAoB,WAChB,OAAO,EAAIb,EAAQc,QAAQC,KAAKC,WAAY,CACxCgB,mBAAmB,EACnBs0D,UAAW,OACXvc,YAAa,GACbwc,QAAS,KACTC,UAAW,KACXC,cAAe,KACfC,SAAU,KACVC,iBAAkB,KAClBC,kBAAmB,QAG3B30D,MAAO,WACHlB,KAAKC,WACLD,KAAK81D,gBAAiB,EAAI1iB,EAAWx0C,WACrCoB,KAAK+1D,6BAA8B,EAAI3iB,EAAWx0C,YAEtDo3D,0BAA2B,WACvB,MArBsB,eAuB1BC,eAAgB,WA1CpB,IAAyBv2D,EAAKwE,EAAKW,EA2C3B7E,KAAKoC,iBAAiBC,qBA3CL3C,EA2CyC,GA3CpCwE,EAmBA,cAnBKW,EA2C4D,IAAIiwD,EAAgBoB,cA1C3GhyD,KAAOxE,EACPq0B,OAAO4vB,eAAejkD,EAAKwE,EAAK,CAC5BW,MAAOA,EACP2+C,YAAY,EACZC,cAAc,EACdC,UAAU,IAGdhkD,EAAIwE,GAAOW,EAERnF,IAiCHM,KAAKC,YAETqF,aAAc,WACV,OAAOtF,KAAKm2D,eAEhBA,YAAa,WACT,OAAOn2D,KAAKkS,WAAW5G,KAAK,IAAI3K,OAjCR,2BAmC5By1D,gBAAiB,SAASr/B,GACtB,IAAIs/B,EAAgBt/B,EAAKs/B,cACrBr2D,KAAKs2D,sBAAsBD,KAG/Br2D,KAAKu2D,mBAAkB,EAAMv2D,KAAKkS,YAClClS,KAAKC,SAAS2F,MAAM5F,KAAM6F,aAE9B2wD,iBAAkB,SAASt7B,GACvB,IAAIm7B,EAAgBn7B,EAAMm7B,cACtBr2D,KAAKs2D,sBAAsBD,KAG/Br2D,KAAKu2D,mBAAkB,EAAOv2D,KAAKkS,YACnClS,KAAKC,SAAS2F,MAAM5F,KAAM6F,aAE9BywD,sBAAuB,SAASD,GAC5B,OAAO,EAAIx3D,EAAUD,SAASy3D,GAAep6C,SAtDzB,iBAwDxB7W,YAAa,WACTpF,KAAKy2D,iBAAkB,EAAI53D,EAAUD,SAAS,SAAS2G,SA1DnC,sBA2DpBvF,KAAKkS,WAAW3M,SA5DA,iBA4D4BmxD,UAAU12D,KAAKy2D,iBAC3D,IAAIjc,EAAWx6C,KAAK22D,aAvDE,eAyDtB32D,KAAK42D,iBAAmBpc,GAAYA,EAASxqC,OAAO,CAChD/D,WAAW,EAAI2oD,EAASiC,kBAAkB72D,KAAKy2D,iBAC/CK,SAAS,EACTC,YAJa,IAMjB/2D,KAAKg3D,uBACLh3D,KAAKC,WACLD,KAAKi3D,0BAETD,qBAAsB,WAClBh3D,KAAKk3D,iBAAkB,EAAIr4D,EAAUD,SAAS,cAAc2G,SAtE7B,gCAsEwE4xD,KAAK,UAAU,GAAMvrD,SAAS5L,KAAKkS,YAC1IlS,KAAKo3D,gBAAgBp3D,KAAKgC,OAAO,WAErCo1D,gBAAiB,SAASvyD,GACtB7E,KAAKq3D,oBAAoBC,IAAIzyD,IAEjCwyD,kBAAmB,WACf,OAAOr3D,KAAKk3D,iBAEhBD,uBAAwB,WACpB,IAAIM,EAASv3D,KAAKgC,OAAO,SACrBhC,KAAKw3D,qBACLx3D,KAAKy3D,4BACLF,EAASv3D,KAAK03D,mBAAmBC,OAAOJ,IAExCA,GACAv3D,KAAKy2D,gBAAgB/zD,KAAK60D,IAGlCE,0BAA2B,WACvB,IAAIG,EAAoBzC,EAAqBv2D,QAAQ+nD,aAAa,YAClE,IAAIiR,EAGA,MAAMv4D,EAAIT,QAAQ4pB,MAAM,QAAS,YAFjCxoB,KAAK03D,mBAAqB,IAAIE,GAKtCC,QAAS,WACL73D,KAAK83D,qBACL93D,KAAKC,YAET83D,yBAA0B,WACjB/3D,KAAKg4D,oBACNh4D,KAAKg4D,kBAAoB,IAAI9C,EAAmBt2D,UAGxDq5D,gBAAiB,WAEb,OADAj4D,KAAK+3D,2BACE/3D,KAAKg4D,mBAEhBF,mBAAoB,WAChB,IAAK93D,KAAKk4D,gBAAiB,CACvB,IAAIC,EAAiBhD,EAAqBv2D,QAAQ+nD,aAAa,SAC3DwR,IACAn4D,KAAKk4D,gBAAkB,IAAIC,GAhHjB,aAmHdn4D,KAAKgC,OAAO,cAAyChC,KAAK03D,oBAC1D13D,KAAKy3D,6BAGbW,mBAAoB,WAChBp4D,KAAKq4D,yBAA2B,IAAI31C,EAAUgE,SAC9C,IAAI4xC,EAAuBt4D,KAAKq4D,yBAAyBlxC,UAKzD,OAJAnnB,KAAKC,WACLD,KAAKu4D,oBACLv4D,KAAKw4D,oBACLx4D,KAAKy4D,sBACEH,GAEXI,mBAAoB,YAChB,EAAIj5D,EAAQoe,aAAa7d,KAAKC,SAASgD,KAAKjD,QAEhDy4D,oBAAqB,WACjB,IAAIE,GAAe,EAAIlyD,EAAOkB,cAAc,UAAW,GAAGhH,OAAOX,KAAK46C,KAAM,eAC5Ev0C,EAAezH,QAAQ8I,GAAG1H,KAAKy2D,gBAAiBkC,EAAc34D,KAAK44D,gBAAgB31D,KAAKjD,QAE5F44D,gBAAiB,SAAS/wD,GACtB7H,KAAK64D,sBAAsBhxD,IAE/B0wD,kBAAmB,WACf,IAAIhxD,EAAQvH,KACR41D,EAAmB51D,KAAKgC,OAAO,oBAC/B82D,EAAgB94D,KAAK+4D,qBACrB,EAAIv5D,EAAMoF,YAAYgxD,IACtBA,EAAiBkD,GAErB94D,KAAKg5D,eAAiBh5D,KAAKi4D,kBAAkBzmC,aAAaxxB,KAAKy2D,gBAAgB,GAAI,CAC/Ezd,YAAah5C,KAAKgC,OAAO,eACzBi3D,SAAUj5D,KAAKgC,OAAO,aAAehC,KAAKgC,OAAO,YACjDk3D,QAASJ,EACTK,MAAO,UAEXn5D,KAAKk4D,gBAAgBkB,iBAAiBp5D,KAAKg5D,gBAC3Ch5D,KAAKq5D,8BAAgCr5D,KAAKs5D,mBAAmBr2D,KAAKjD,MAClEA,KAAKg5D,eAAetxD,GAAG,cAAe1H,KAAKq5D,+BAC3Cr5D,KAAKu5D,uBACDv5D,KAAKw5D,yBACLx5D,KAAKy5D,oBAAqB,EAAIh6D,EAAQi6D,eAAc,WAChDnyD,EAAMoyD,8BAGV35D,KAAK45D,6BAGbL,qBAAsB,WAClB,IAAIM,EAAmB75D,KAAKm2D,cACxB2D,GAAiB,EAAIhT,EAAOiT,mBAAmBF,GACnDxzD,EAAezH,QAAQ8I,GAAGmyD,GAAkB,EAAIpzD,EAAOkB,cAAcstD,EAAwBr2D,QAAQkgB,KAAM9e,KAAK46C,MAAOkf,EAAgBr6D,EAAQyC,OAEnJy3D,yBAA0B,WACtB,IAAIK,EAAch6D,KAAKgC,OAAO,SAC9B,KAAK,EAAIxC,EAAM4J,WAAW4wD,GAAc,CACpC,IAAIt3D,EAAO1C,KAAKk4D,gBAAgBP,SAC5BsC,EAAWj6D,KAAKg5D,eAAekB,UAAUC,QAAQ,CACjDz3D,KAAMA,IAEV,GAAIu3D,EAASG,IAAI71D,OAEb,YADAvE,KAAKg5D,eAAeqB,YAAYJ,GAIxCj6D,KAAK45D,6BAETJ,uBAAwB,WACpB,OAAOx5D,KAAK42D,kBAAoB52D,KAAK42D,iBAAiBryD,QAE1Dw0D,kBAAmB,WACf,IAAI/tD,EAAShL,KACT0kD,EAAQ1kD,KAAKi4D,kBAAkBqC,WAC/BC,GAAkB,EAAInF,EAAWx2D,SAAS8lD,GAgC9C,OA/BoB,EAAIzlD,EAAQc,QAAQ,GAAI,CACxCuuC,OAAO,EACPknB,QAASx1D,KAAKw6D,yBAAyB,WACvC/E,UAAWz1D,KAAKw6D,yBAAyB,aACzC5nB,SAAU5yC,KAAKw6D,yBAAyB,iBACxC7E,SAAU31D,KAAKw6D,yBAAyB,YACxCC,SAAU,CACNC,OAAQ,SAAS7yD,GACb,OAAOmD,EAAO6tD,uBAAsB,EAAI7D,EAAQ2F,OAAO9yD,KAE3D+yD,UAAW,iBAEfC,SAAU,CACNC,UAAW,SAASjzD,GAChB,OAAOmD,EAAO6tD,uBAAsB,EAAI7D,EAAQ2F,OAAO9yD,MAG/DqyD,UAAW,CACPa,QAAS,SAASlzD,GACd,OAAOmD,EAAO6tD,uBAAsB,EAAI7D,EAAQ2F,OAAO9yD,KAE3DmzD,MAAO,SAASnzD,GACZ,OAAOmD,EAAO6tD,uBAAsB,EAAI7D,EAAQ2F,OAAO9yD,KAE3DozD,SAAU,CACN,CAAC,8BAA+BV,GAChC,CAAC,+BAAgCA,GACjC,CAAC,6BAA8BA,MAGxCv6D,KAAKk7D,sBAGZV,yBAA0B,SAASW,GAC/B,IAAIC,EAAcp7D,KAAKgC,OAAOm5D,GAC1BE,EAAS,GACb,IAAK,EAAI77D,EAAM4J,WAAWgyD,GAQ1B,OALIzzC,MAAMC,QAAQwzC,GACdC,EAAOF,GAAkBC,EAEzBC,EAASD,GAEN,EAAIn8D,EAAQc,QAAQC,KAAKs7D,uBAAwBD,IAE5DC,qBAAsB,WAClB,MAAO,CACHvW,eAAgB/kD,OAGxBk7D,kBAAmB,WACf,IAAIr+C,EAAS7c,KACTk5D,EAAU,GAKd,OAJkBl5D,KAAKi4D,kBAAkBsD,2BAC7BtrC,SAAQ,SAASurC,GACzBtC,EAAQsC,GAAc3+C,EAAOy+C,0BAE1BpC,GAEXI,mBAAoB,SAASW,EAAUwB,EAAUC,GAC7C,IAAIC,EAAa37D,KAAKk4D,gBAAgBP,SAClCiE,EAAiB57D,KAAKw3D,mBAAqBx3D,KAAK67D,mBA3PlC,WA2P0EF,GAAcA,EACtGG,EAAe97D,KAAKgC,OAAO,SAC3B85D,IAAiBF,GAAmB57D,KAAK+7D,sBAAsBD,EAAcF,KAC7E57D,KAAKg8D,mBAAoB,EACzBh8D,KAAKgC,OAAO,QAAS45D,IAEzB57D,KAAK45D,6BAETmC,sBAAuB,SAASD,EAAcF,GAC1C,OAAO,OAASE,GAAgB,KAAOF,GAE3ChC,0BAA2B,WACnB55D,KAAKq4D,2BACLr4D,KAAKi8D,eACLj8D,KAAK+1D,4BAA4BtiD,OACjCzT,KAAKq4D,yBAAyBvxC,UAC9B9mB,KAAKq4D,8BAA2B,IAGxCwD,mBAAoB,SAAStG,EAAW1wD,GACpC,IAAI6hD,EAAY1mD,KAAK03D,mBACrB,IAAK,EAAIl4D,EAAM4J,WAAWs9C,GAA1B,CAGA,IAAIoV,GAAe,EAAIr8D,EAAQy8D,eAAer3D,EAAO7E,KAAKgC,OAAO,UACjE,MApRkB,aAoRXuzD,EAAoC7O,EAAUyV,WAAWL,GAAgBpV,EAAUiR,OAAOmE,KAErGtE,iBAAkB,WACd,MAvRkB,aAuRXx3D,KAAKgC,OAAO,cAEvBo6D,mBAAoB,WAChB,GAAIp8D,KAAKg5D,eAAgB,CACrB,IAAI9zC,IAAcllB,KAAKgC,OAAO,aAAehC,KAAKgC,OAAO,aACzDhC,KAAKg5D,eAAeqD,OAAOn3C,KAGnCszC,kBAAmB,WACf,IAAI8D,GAAc,EAAIr9D,EAAQc,SAAQ,EAAM,CACxC6N,MAAO,OACPC,OAAQ,OACRg0B,qBAAqB,GACtB7hC,KAAKgC,OAAO,sBACfhC,KAAKq1D,YAAc,IAAIA,EAAYz2D,QAAQoB,KAAMs8D,IAErDC,mBAAoB,WAChB,OAAOv8D,KAAKy2D,iBAEhBzwD,eAAgB,SAASC,GACrB,OAAQA,EAAKC,MACT,IAAK,QACD,GAAIlG,KAAKg5D,eACL,GAAIh5D,KAAKg8D,kBACLh8D,KAAKg8D,mBAAoB,MACtB,CACH,IAAIQ,EAAex8D,KAAKw3D,mBAAqBx3D,KAAK67D,mBAAmB,OAAQ51D,EAAKpB,OAASoB,EAAKpB,MAChG7E,KAAKy8D,mBAAmBD,QAG5Bx8D,KAAKy2D,gBAAgB/zD,KAAKuD,EAAKpB,OAEnC7E,KAAKo3D,gBAAgBnxD,EAAKpB,OAC1B7E,KAAKC,SAASgG,GACd,MACJ,IAAK,cACL,IAAK,YACL,IAAK,UACL,IAAK,WACL,IAAK,mBACDjG,KAAKoK,cACL,MACJ,IAAK,YACDpK,KAAK83D,qBACL,IAAI4E,EAAW18D,KAAK67D,mBAAmB51D,EAAKpB,OACxC,SAAWoB,EAAKpB,OAAS7E,KAAKg5D,eAC9Bh5D,KAAKy8D,mBAAmBC,GAExB18D,KAAKgC,OAAO,QAAS06D,GAEzB,MACJ,IAAK,WACL,IAAK,WACD18D,KAAKC,SAASgG,GACdjG,KAAKo8D,qBACL,MACJ,IAAK,oBACDp8D,KAAKw4D,oBACL,MACJ,IAAK,gBACIvyD,EAAK02D,eAAkB12D,EAAKpB,MAG7B7E,KAAKg5D,eAAe4D,UAAU,YAAY56D,OAAOiE,EAAKC,KAAMD,EAAKpB,OAFjE7E,KAAKoK,cAIT,MACJ,IAAK,QACDpK,KAAKC,SAASgG,GACdjG,KAAK68D,kBACL,MACJ,QACI78D,KAAKC,SAASgG,KAG1B42D,gBAAiB,WACb,IAAIrH,EAAUx1D,KAAKg5D,eAAe4D,UAAU,WAC5CpH,GAAWA,EAAQrvD,WAEvBs2D,mBAAoB,SAAS/5D,GACzB,IAAIu3D,EAAWj6D,KAAKg5D,eAAekB,UAAUC,QAAQ,CACjDz3D,KAAMA,IAEV1C,KAAKg5D,eAAeqB,YAAYJ,IAEpC6C,OAAQ,WACA98D,KAAKg5D,iBACL3yD,EAAezH,QAAQ4qB,IAAIxpB,KAAKm2D,cAAe,IAAIx1D,OAAOX,KAAK46C,OAC/D56C,KAAKg5D,eAAexvC,IAAI,cAAexpB,KAAKq5D,+BAC5Cr5D,KAAK81D,eAAeriD,QAExBzT,KAAK+8D,0BACL/8D,KAAK81D,eAAevhD,QACpBvU,KAAK+1D,4BAA4BxhD,QACjCvU,KAAKC,YAET88D,wBAAyB,WACjB/8D,KAAKy5D,qBACLz5D,KAAKy5D,mBAAmBuD,QACxBh9D,KAAKy5D,wBAAqB,IAGlCwD,kBAAmB,SAASjT,EAAY/jD,GACpC,GAAIjG,KAAKg5D,eACL,OAAOh5D,KAAKg5D,eAAehP,GAAYpkD,MAAM5F,KAAKg5D,eAAgB/yD,IAG1Ei3D,yBAA0B,SAASlT,GAC3BhqD,KAAKg5D,gBAAkBh5D,KAAKg5D,eAAemE,SAC3Cn9D,KAAKg5D,eAAemE,QAAQnT,MAGpCoT,iBAAkB,SAASxd,GACvB5/C,KAAK81D,eAAex7C,IAAIslC,IAE5Byd,8BAA+B,SAASzd,GACpC5/C,KAAK+1D,4BAA4Bz7C,IAAIslC,IAEzC0d,SAAU,SAASC,GACfv9D,KAAKi4D,kBAAkBuF,gBAAgBD,GACnCv9D,KAAKg5D,gBACLh5D,KAAKmG,WAGb8B,IAAK,SAASuzD,GACV,OAAOx7D,KAAKi4D,kBAAkBqC,WAAWpW,OAAOsX,IAEpDoB,UAAW,SAASa,GAChB,OAAOz9D,KAAKi9D,kBAAkB,YAAap3D,YAE/C63D,iBAAkB,WACd,OAAO19D,KAAKg5D,gBAEhB2E,aAAc,WACV,OAAO39D,KAAKi9D,kBAAkB,iBAElCW,aAAc,SAASl4D,EAAOnB,GAC1BvE,KAAKi9D,kBAAkB,eAAgBp3D,YAE3CiB,OAAQ,SAAS+2D,EAAYviD,GACzBtb,KAAKi9D,kBAAkB,SAAUp3D,YAErCi4D,WAAY,SAASp4D,EAAOnB,EAAQs5D,EAAYviD,GAC5Ctb,KAAKi9D,kBAAkB,aAAcp3D,YAEzCk4D,WAAY,SAASr4D,EAAOnB,EAAQs5D,EAAYviD,GAC5Ctb,KAAKi9D,kBAAkB,aAAcp3D,YAEzCm4D,UAAW,SAASt4D,EAAOnB,GACvB,OAAOvE,KAAKi9D,kBAAkB,YAAap3D,YAE/Co4D,aAAc,SAASv4D,EAAOnB,GAC1B,OAAOvE,KAAKi9D,kBAAkB,eAAgBp3D,YAElDo2D,aAAc,WACVj8D,KAAKk9D,yBAAyB,UAElCgB,KAAM,WACFl+D,KAAKk9D,yBAAyB,SAElCiB,KAAM,WACFn+D,KAAKk9D,yBAAyB,SAElCkB,UAAW,WACP,OAAOp+D,KAAKi9D,kBAAkB,cAElC,OAAU,SAASv3D,EAAOnB,GACtBvE,KAAKi9D,kBAAkB,aAAcp3D,YAEzCw4D,WAAY,SAAS34D,EAAOxC,EAAMo7D,GAC9Bt+D,KAAKi9D,kBAAkB,aAAcp3D,YAEzC04D,YAAa,SAAS74D,EAAOuT,EAAMoiD,GAC/Br7D,KAAKi9D,kBAAkB,cAAep3D,YAE1C24D,eAAgB,SAASC,GACrB,OAAOz+D,KAAKq1D,YAAYv3C,KAAK2gD,IAEjCC,iBAAkB,SAASl6D,EAAY42D,GACnC,OAAOp7D,KAAKq1D,YAAYsJ,YAAY/4D,MAAM5F,KAAKq1D,YAAaxvD,YAEhE2gC,MAAO,WACHxmC,KAAKC,WACLD,KAAKi9D,kBAAkB,aAG/B,EAAIpI,EAAuBj2D,SAAS,eAAgB02D,GACpD,IAAI11D,EAAW01D,EACf32D,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCClgBzBD,EAAQC,aAAU,EAClB,IAAIggE,EAAkB7/D,EAAQ,MAC1B8/D,EAAQ//D,EAAuBC,EAAQ,OACvC+/D,EAAShgE,EAAuBC,EAAQ,OACxCggE,EAAQjgE,EAAuBC,EAAQ,OACvCigE,EAAQlgE,EAAuBC,EAAQ,OACvCkgE,EAAQngE,EAAuBC,EAAQ,OACvCmgE,EAASpgE,EAAuBC,EAAQ,OACxCogE,EAAWrgE,EAAuBC,EAAQ,OAC1CqgE,EAAatgE,EAAuBC,EAAQ,OAC5CsgE,EAAavgE,EAAuBC,EAAQ,OAC5CugE,EAAYxgE,EAAuBC,EAAQ,OAC3CwgE,EAAYzgE,EAAuBC,EAAQ,OAE/C,SAASD,EAAuBY,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAkDIE,EAlDmB,WACnB,SAAS4/D,IACL,IAAIA,EAAiBC,YAArB,CAGA,IAAI/a,EAAQ1kD,KAAKs6D,WACboF,EAAiBhb,EAAMR,OAAO,+BAClCQ,EAAM4Y,SAAS,CACX,gBAAiB4B,EAAOtgE,QACxB,oBAAqB8gE,EACrB,eAAgBV,EAAMpgE,QACtB,eAAgBqgE,EAAMrgE,QACtB,wBAAyBkgE,EAAOlgE,QAChC,eAAgBmgE,EAAMngE,QACtB,kBAAmBugE,EAASvgE,QAC5B,oBAAqBwgE,EAAWxgE,QAChC,oBAAqBygE,EAAWzgE,QAChC,mBAAoB0gE,EAAU1gE,QAC9B,mBAAoB2gE,EAAU3gE,QAC9B,eAAgBigE,EAAMjgE,UACvB,GACHoB,KAAK2/D,eAAiB,GACtBH,EAAiBI,cAAe,GAEpC,IAAInb,EAAS+a,EAAiBpwC,UAwB9B,OAvBAq1B,EAAOjzB,aAAe,SAASvlB,EAAWovD,GAEtC,OAAO,IADKr7D,KAAKs6D,WACV,CAAUruD,EAAWovD,IAEhC5W,EAAO+Y,gBAAkB,SAAS1E,GAC9B,IAAI+G,EAAWC,OAAO,aAClBpb,EAAQ1kD,KAAKs6D,WACbyF,EAAqB,SAASvE,GAC9B,QAAS9W,EAAMsb,QAAQxE,IAE3B,IAAK,IAAIA,KAAc1C,EACf+G,EAAS5rC,KAAKunC,KAAgBuE,EAAmBvE,IACjDx7D,KAAK2/D,eAAet7D,KAAKm3D,EAAWlzD,MAAM,IAGlDo8C,EAAM4Y,SAASxE,GAAe,IAElCrU,EAAO8W,yBAA2B,WAC9B,OAAOv7D,KAAK2/D,gBAEhBlb,EAAO6V,SAAW,WACd,OAAO,EAAIsE,EAAgBtE,aAExBkF,EAhDY,GAmDvB7gE,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCCvEzBD,EAAQ27D,SAUR,WACI,IAAKpX,EAAiBtkD,QAClB,MAAMS,EAAIT,QAAQ4pB,MAAM,QAAS,SAErC,OAAO06B,EAAiBtkD,SAb5B,IAAIS,EAAMP,EAAuBC,EAAQ,MACrCmkD,EAAmBpkD,EAAuBC,EAAQ,MAEtD,SAASD,EAAuBY,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,K,kCCNnBf,EAAQC,aAAU,EAClB,IAEgCc,EAmB5BugE,EArBA/c,GAE4BxjD,EAFcX,EAAQ,OAGpCW,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAUnB,SAASkkD,EAAgBhwB,EAAGiwB,GAKxB,OAJAD,EAAkB7vB,OAAO+vB,gBAAkB,SAASlwB,EAAGiwB,GAEnD,OADAjwB,EAAEmwB,UAAYF,EACPjwB,IAEYA,EAAGiwB,GAG1BX,EAAiBtkD,QAEjBqhE,EAAY,SAASC,GAhBzB,IAAwB9b,EAAUC,EAmB1B,SAAS4b,EAAUvb,EAAO1jD,GACtB,IAAIuG,EAGJ,OAFAA,EAAQ24D,EAAO33D,KAAKvI,KAAM0kD,EAAO1jD,IAAYhB,MACvC0kD,MAAMyb,KAAKC,UAAU9lD,IAAI,yBACxB/S,EAEX,OAzB0B88C,EAiBA6b,GAjBV9b,EAiBD6b,GAhBV7wC,UAAY2E,OAAOsB,OAAOgvB,EAAWj1B,WAC9Cg1B,EAASh1B,UAAU4E,YAAcowB,EACjCR,EAAgBQ,EAAUC,GAsBf4b,EATC,CADA/c,EAAiBtkD,QAAQslD,OAAO,eAa5C+b,EAAY,GAEhB,IAAIrgE,EAAWqgE,EACfthE,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCCzCzBD,EAAQC,aAAU,EAClB,IAGgCc,EAH5BwjD,GAG4BxjD,EAHcX,EAAQ,OAIpCW,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAJfF,EAAQT,EAAQ,IAcpB,SAAS6kD,EAAgBhwB,EAAGiwB,GAKxB,OAJAD,EAAkB7vB,OAAO+vB,gBAAkB,SAASlwB,EAAGiwB,GAEnD,OADAjwB,EAAEmwB,UAAYF,EACPjwB,IAEYA,EAAGiwB,GAE9B,IAAIwc,EAAW,GACXnd,EAAiBtkD,WAEjByhE,EAAW,SAASC,GAhBxB,IAAwBlc,EAAUC,EAmB1B,SAASgc,IACL,OAAOC,EAAO16D,MAAM5F,KAAM6F,YAAc7F,KApBlBqkD,EAiBDic,GAjBTlc,EAiBDic,GAhBVjxC,UAAY2E,OAAOsB,OAAOgvB,EAAWj1B,WAC9Cg1B,EAASh1B,UAAU4E,YAAcowB,EACjCR,EAAgBQ,EAAUC,GAmBtBgc,EAAShrC,OAAS,SAAShmB,GACvB,IAAIkxD,EAAMlxD,GAAQA,EAAKmxD,KAAOnxD,EAC1BvL,EAAOw8D,EAAOjrC,OAAO9sB,KAAKvI,KAAMugE,GACpC,IAAI,EAAI/gE,EAAMw2C,UAAU3mC,GAAO,CAC3B,IAAIoxD,EAAe,SAAStJ,EAAMtyD,GAC9BwK,EAAK8nD,IAASrzD,EAAK28D,aAAatJ,EAAMtyD,IAE1C47D,EAAa,MAAOpxD,EAAKqxD,KACzBD,EAAa,QAASpxD,EAAKzB,OAC3B6yD,EAAa,SAAUpxD,EAAKxB,QAEhC,OAAO/J,GAEXu8D,EAAS/B,QAAU,SAAiBqC,GAChC,IAAIrC,EAAUgC,EAAOhC,QAAQ/1D,KAAKvI,KAAM2gE,GAExC,OADArC,EAAQsC,SAAWD,EAAQE,aAAa,OACjCvC,GAEX,IAAI7Z,EAAS4b,EAASjxC,UAwBtB,OAvBAq1B,EAAO6Z,QAAU,WACb,IAAIA,EAAUgC,EAAOlxC,UAAUkvC,QAAQ/1D,KAAKvI,MACxC8gE,EAAa9gE,KAAK2gE,QAAQr9B,MAAMy9B,MAIpC,OAHID,IACAxC,EAAQyC,MAAQD,GAEbxC,GAEX7Z,EAAO39C,OAAS,SAASZ,EAAMrB,GACvB,UAAYqB,EACZlG,KAAK2gE,QAAQr9B,MAAMp9B,GAAQrB,EAE3By7D,EAAOlxC,UAAUtoB,OAAOyB,KAAKvI,KAAMkG,EAAMrB,IAGjDw7D,EAASx7D,MAAQ,SAAS87D,GACtB,MAAO,CACHH,IAAKG,EAAQE,aAAa,OAC1BjzD,MAAO+yD,EAAQE,aAAa,SAC5BhzD,OAAQ8yD,EAAQE,aAAa,UAC7BH,IAAKC,EAAQE,aAAa,SAG3BR,EAhDA,CADCnd,EAAiBtkD,QAAQslD,OAAO,mBAmDnC8c,SAAW,iBAExB,IAAIphE,EAAWygE,EACf1hE,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCChFzBD,EAAQC,aAAU,EAClB,IAGgCc,EAH5BwjD,GAG4BxjD,EAHcX,EAAQ,OAIpCW,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAJfF,EAAQT,EAAQ,IAcpB,SAAS6kD,EAAgBhwB,EAAGiwB,GAKxB,OAJAD,EAAkB7vB,OAAO+vB,gBAAkB,SAASlwB,EAAGiwB,GAEnD,OADAjwB,EAAEmwB,UAAYF,EACPjwB,IAEYA,EAAGiwB,GAE9B,IAAIod,EAAU,GACV/d,EAAiBtkD,UAEjBqiE,EAAU,SAASC,GAhBvB,IAAwB9c,EAAUC,EAmB1B,SAAS4c,IACL,OAAOC,EAAMt7D,MAAM5F,KAAM6F,YAAc7F,KApBjBqkD,EAiBF6c,GAjBR9c,EAiBD6c,GAhBV7xC,UAAY2E,OAAOsB,OAAOgvB,EAAWj1B,WAC9Cg1B,EAASh1B,UAAU4E,YAAcowB,EACjCR,EAAgBQ,EAAUC,GAmBtB4c,EAAQ5rC,OAAS,SAAShmB,GACtB,IAAI8xD,EAAO9xD,GAAQA,EAAK+xD,MAAQ/xD,EAC5BvL,EAAOo9D,EAAM7rC,OAAO9sB,KAAKvI,KAAMmhE,GASnC,OARI,EAAI3hE,EAAMw2C,UAAU3mC,KAChBA,EAAKnM,OACLY,EAAKu9D,UAAYhyD,EAAKnM,MAErBmM,EAAKlG,QACNrF,EAAKw9D,gBAAgB,WAGtBx9D,GAEXm9D,EAAQ3C,QAAU,SAASqC,GACvB,MAAO,CACHS,KAAMT,EAAQE,aAAa,QAC3B13D,OAAQw3D,EAAQE,aAAa,YAGrC,IAAIpc,EAASwc,EAAQ7xC,UAgCrB,OA/BAq1B,EAAO6Z,QAAU,WACb,IAAIA,EAAU4C,EAAM9xC,UAAUkvC,QAAQ/1D,KAAKvI,MACvCuhE,EAAmBN,EAAQ3C,QAAQt+D,KAAK2gE,SACxCS,EAAOG,EAAiBH,KACxBj4D,EAASo4D,EAAiBp4D,OAG9B,OAFAm1D,EAAQkD,KAAOJ,EACf9C,EAAQn1D,OAASA,EACVm1D,GAEX7Z,EAAO39C,OAAS,SAASZ,EAAMrB,GACvB,SAAWqB,IAAQ,EAAI1G,EAAMw2C,UAAUnxC,IACnCA,EAAM3B,OACNlD,KAAK2gE,QAAQU,UAAYx8D,EAAM3B,MAE/B2B,EAAMsE,OACNnJ,KAAK2gE,QAAQF,aAAa,SAAU,UAEpCzgE,KAAK2gE,QAAQW,gBAAgB,UAEjCthE,KAAK2gE,QAAQF,aAAa,OAAQ57D,EAAMu8D,OAExCF,EAAM9xC,UAAUtoB,OAAOyB,KAAKvI,KAAMkG,EAAMrB,IAGhDo8D,EAAQp8D,MAAQ,SAAS87D,GACrB,MAAO,CACHS,KAAMT,EAAQE,aAAa,QAC3B39D,KAAMy9D,EAAQU,UACdl4D,SAAUw3D,EAAQE,aAAa,YAGhCI,EAzDD,CADC/d,EAAiBtkD,QAAQslD,OAAO,kBA6D/C,IAAItkD,EAAWqhE,EACftiE,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCCxFzBD,EAAQC,aAAU,EAClB,IAEgCc,EAF5BwjD,GAE4BxjD,EAFcX,EAAQ,OAGpCW,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAAI+hE,EAAY,GACZve,EAAiBtkD,WACjB6iE,EAAYve,EAAiBtkD,QAAQslD,OAAO,2BAClCwd,UAAY,MAE1B,IAAI9hE,EAAW6hE,EACf9iE,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCCfzBD,EAAQC,aAAU,EAClB,IAEgCc,EAF5BwjD,GAE4BxjD,EAFcX,EAAQ,OAGpCW,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAAIiiE,EAAY,GACZze,EAAiBtkD,WACjB+iE,EAAYze,EAAiBtkD,QAAQslD,OAAO,2BAClCwd,UAAY,MAE1B,IAAI9hE,EAAW+hE,EACfhjE,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCCfzBD,EAAQC,aAAU,EAClB,IAEgCc,EAF5BwjD,GAE4BxjD,EAFcX,EAAQ,OAGpCW,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAAIkiE,EAAa,GACb1e,EAAiBtkD,UACjBgjE,EAAa1e,EAAiBtkD,QAAQslD,OAAO,4BAClCwd,UAAUr9D,KAAK,QAE9B,IAAIzE,EAAWgiE,EACfjjE,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCCfzBD,EAAQC,aAAU,EAClB,IAAIskD,EAAmBpkD,EAAuBC,EAAQ,MAClDF,EAAYC,EAAuBC,EAAQ,KAC3CogE,EAAWrgE,EAAuBC,EAAQ,MAC9CA,EAAQ,KACRA,EAAQ,MACRA,EAAQ,KACR,IAAI8iE,EAAoB/iE,EAAuBC,EAAQ,OACnDG,EAAYH,EAAQ,IACpBS,EAAQT,EAAQ,IAChBE,EAAUF,EAAQ,IAClByH,EAAW1H,EAAuBC,EAAQ,KAC1C+iE,EAAa/iE,EAAQ,KACrBsH,EAAiBvH,EAAuBC,EAAQ,KAChD0H,EAAS1H,EAAQ,IAErB,SAASD,EAAuBY,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAInB,SAAS0zB,EAAmBrvB,GACxB,OAgCJ,SAA4BA,GACxB,GAAI4jB,MAAMC,QAAQ7jB,GACd,OAAOsvB,EAAkBtvB,GAlCtBuvB,CAAmBvvB,IA0B9B,SAA0BwvB,GACtB,GAAI,qBAAuBC,QAAU,MAAQD,EAAKC,OAAOC,WAAa,MAAQF,EAAK,cAC/E,OAAO5L,MAAM+L,KAAKH,GA5BYI,CAAiB5vB,IAOvD,SAAqC6vB,EAAGC,GACpC,IAAKD,EACD,OAEJ,GAAI,kBAAoBA,EACpB,OAAOP,EAAkBO,EAAGC,GAEhC,IAAIC,EAAIC,OAAO3E,UAAU5e,SAASjI,KAAKqrB,GAAGtrB,MAAM,GAAI,GAChD,WAAawrB,GAAKF,EAAEI,cACpBF,EAAIF,EAAEI,YAAY9tB,MAEtB,GAAI,QAAU4tB,GAAK,QAAUA,EACzB,OAAOnM,MAAM+L,KAAKE,GAEtB,GAAI,cAAgBE,GAAK,2CAA2CG,KAAKH,GACrE,OAAOT,EAAkBO,EAAGC,GAtB2BK,CAA4BnwB,IAG3F,WACI,MAAM,IAAIowB,UAAU,wIAJ2EC,GAsCnG,SAASf,EAAkBtvB,EAAKswB,IACxB,MAAQA,GAAOA,EAAMtwB,EAAIQ,UACzB8vB,EAAMtwB,EAAIQ,QAEd,IAAK,IAAIoO,EAAI,EAAG2hB,EAAO,IAAI3M,MAAM0M,GAAM1hB,EAAI0hB,EAAK1hB,IAC5C2hB,EAAK3hB,GAAK5O,EAAI4O,GAElB,OAAO2hB,EAGX,SAAS+uB,EAAkBl6C,EAAQm6C,GAC/B,IAAK,IAAI3wC,EAAI,EAAGA,EAAI2wC,EAAM/+C,OAAQoO,IAAK,CACnC,IAAI4wC,EAAaD,EAAM3wC,GACvB4wC,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IACXA,EAAWG,UAAW,GAE1B3vB,OAAO4vB,eAAex6C,EAAQo6C,EAAWr/C,IAAKq/C,IAuBtD,SAASK,EAAgBhwB,EAAGiwB,GAKxB,OAJAD,EAAkB7vB,OAAO+vB,gBAAkB,SAASlwB,EAAGiwB,GAEnD,OADAjwB,EAAEmwB,UAAYF,EACPjwB,IAEYA,EAAGiwB,GAE9B,IAAIke,EAAgB,GACpB,GAAI7e,EAAiBtkD,QAAS,CAC1B,IAAIqlD,EAAaf,EAAiBtkD,QAAQslD,OAAO,eAwB7C8d,EAAmB,CAAC,cAAe,iBAAkB,iBAAkB,mBAAoB,oBAAqB,eAAgB,YAAa,eAG7IC,EAAez7D,EAAS5H,QAAQkI,OAAO,wBACvCo7D,EAAc17D,EAAS5H,QAAQkI,OAAO,2BAC1Ci7D,EAAgB,SAAS5d,GA5C7B,IAAwBC,EAAUC,EA+C1B,SAAS0d,EAAcrd,EAAO1jD,GAC1B,IAAIuG,EAaJ,OAZAA,EAAQ48C,EAAY57C,KAAKvI,KAAM0kD,EAAO1jD,IAAYhB,MAC5CmiE,gBAAkBnhE,EAAQ+jD,eAChCx9C,EAAM66D,gBAAkB,IAAIP,EAAkBjjE,QAC9C2I,EAAM86D,gBAAkB96D,EAAM+6D,sBAC1B,EAAI9iE,EAAM4J,WAAWpI,EAAQe,SAC7BwF,EAAMg7D,gBACNh7D,EAAMi7D,iBACNj7D,EAAMm9C,MAAMh9C,GAAG,iBAAiB,SAAS2sC,GACrC,IAAIouB,EAlCS,qBAkCYpuB,EACzB9sC,EAAMm7D,eAAeD,OAGtBl7D,EA7De88C,EA6CIF,GA7CdC,EA6CD2d,GA5CV3yC,UAAY2E,OAAOsB,OAAOgvB,EAAWj1B,WAC9Cg1B,EAASh1B,UAAU4E,YAAcowB,EACjCR,EAAgBQ,EAAUC,GA4DtB,IA5EcC,EAAaC,EAAYC,EA4EnCC,EAASsd,EAAc3yC,UAmrB3B,OAlrBAq1B,EAAOke,aAAe,SAASC,EAAY76D,GACvC,IAAI86D,EACJ7iE,KAAKmiE,gBAAgBtJ,sBAAsB9wD,IAC1C86D,EAAc7iE,KAAK0kD,OAAO59C,OAAOlB,MAAMi9D,EAAazvC,EAAmBwvC,KAE5Ene,EAAO8d,cAAgB,WACnBviE,KAAKmiE,gBAAgB/E,iBAAiBp9D,KAAK8iE,MAAM7/D,KAAKjD,OACtDA,KAAKmiE,gBAAgB9E,8BAA8Br9D,KAAK+iE,qBAAqB9/D,KAAKjD,QAEtFykD,EAAOie,eAAiB,SAASD,GAC7BziE,KAAKgjE,oBAAoBP,GACzBziE,KAAK+iE,uBACL/iE,KAAKijE,sBAETxe,EAAOye,wBAA0B,SAASrF,GACtC,IAAI7yD,EAAShL,KACb,OAAO,SAAS+2B,GACZ,IAAIhvB,EAAQgvB,EAAKhvB,MACbu2D,EAAUtzD,EAAO05C,MAAMsZ,YACvBn5D,EAAQy5D,EAAQT,GAChBnB,KAAa,EAAIl9D,EAAM2jE,WAAWt+D,GAASA,GAAQ,EAAIrF,EAAM4J,WAAWvE,IAC5EmG,EAAO23D,aAAa,CAAC9E,EAAYnB,EA7C3B,QA6CmD30D,GACzDiD,EAAOo4D,oBAAoBvF,EAAYnB,EAAU4B,KAGzD7Z,EAAO2e,oBAAsB,SAASvF,EAAYwF,EAAW/E,GACzD,IAAIgF,EAAStjE,KAAKoiE,gBAAgBmB,UAAU1F,GACvCyF,IAGDD,EACArjE,KAAKwjE,wBAAwB3F,EAAYyF,EAAQhF,IAEjDt+D,KAAKyjE,mBAAmB5F,EAAYyF,GAChCvvC,OAAO3E,UAAUs0C,eAAen7D,KAAKs1D,WAC9BS,EAAQT,IAGvB79D,KAAK2jE,uBAAuBN,KAAc,EAAI7jE,EAAMk4B,eAAe4mC,MAEvE7Z,EAAO6d,mBAAqB,WACxB,IAAIzlD,EAAS7c,KACb,MAAO,CACH4jE,MAAO,SAAS1oC,GACZ,IAAInzB,EAAQmzB,EAAMnzB,MACd87D,EAAQhnD,EAAO6nC,MAAMiZ,eACrBkG,IACAhnD,EAAOslD,gBAAgBtJ,sBAAsB9wD,GAC7C8U,EAAO6nC,MAAMuZ,aAAa4F,GAC1BhnD,EAAOmmD,wBAGfxB,KAAMxhE,KAAK8jE,sBACXC,MAAO/jE,KAAKgkE,uBACZC,MAAOjkE,KAAKkkE,0BAA0B,SACtCC,WAAYnkE,KAAKkkE,0BAA0B,cAC3CE,YAAapkE,KAAKqkE,wBAAwB,OAAQ,WAClDC,WAAYtkE,KAAKqkE,wBAAwB,OAAQ,UACjDE,UAAWvkE,KAAKqkE,wBAAwB,QAAS,QACjDG,YAAaxkE,KAAKqkE,wBAAwB,QAAS,UACnDI,WAAYzkE,KAAKqkE,wBAAwB,QAAS,SAClDK,aAAc1kE,KAAKqkE,wBAAwB,QAAS,WACpDM,UAAW3kE,KAAKkjE,wBAAwB,cACxChF,KAAM,SAAS5iC,GACX,IAAIvzB,EAAQuzB,EAAMvzB,MAClB8U,EAAOslD,gBAAgBtJ,sBAAsB9wD,GAC7C8U,EAAO6nC,MAAMyY,QAAQe,QAEzBC,KAAM,SAAS5iC,GACX,IAAIxzB,EAAQwzB,EAAMxzB,MAClB8U,EAAOslD,gBAAgBtJ,sBAAsB9wD,GAC7C8U,EAAO6nC,MAAMyY,QAAQgB,QAEzByG,eAAgB,SAASlpC,GACrB,IAAI3zB,EAAQ2zB,EAAM3zB,MAClB8U,EAAO8lD,aAAa,CAAC,SAAU,KAnG7B,QAmGiD56D,IAEvD88D,eAAgB,SAASlpC,GACrB,IAAI5zB,EAAQ4zB,EAAM5zB,MAClB8U,EAAO8lD,aAAa,CAAC,SAAU,KAvG7B,QAuGiD56D,IAEvD+8D,YAAa9kE,KAAKqkE,wBAAwB,SAAU,SACpDU,UAAW/kE,KAAKqkE,wBAAwB,SAAU,OAClDW,YAAahlE,KAAKilE,6BAClBC,eAAgBllE,KAAKmlE,0BAA0B,kBAC/CC,eAAgBplE,KAAKmlE,0BAA0B,kBAC/CE,iBAAkBrlE,KAAKmlE,0BAA0B,oBACjDG,kBAAmBtlE,KAAKmlE,0BAA0B,qBAClDI,aAAcvlE,KAAKmlE,0BAA0B,gBAC7CK,UAAWxlE,KAAKmlE,0BAA0B,aAC1CM,YAAazlE,KAAKmlE,0BAA0B,iBAGpD1gB,EAAO4f,wBAA0B,SAASxG,EAAY6H,GAClD,IAAIlpC,EAASx8B,KACb,OAAO,SAAS67B,GACZ,IAAI9zB,EAAQ8zB,EAAM9zB,MAEdlD,EADU23B,EAAOkoB,MAAMsZ,YACPH,KAAgB6H,GAAwBA,EAC5DlpC,EAAOmmC,aAAa,CAAC9E,EAAYh5D,EA3H3B,QA2HgDkD,GACtDy0B,EAAOwmC,qBAAoB,KAGnCve,EAAOqf,oBAAsB,WACzB,IAAI7lC,EAASj+B,KACb,OAAO,WACHi+B,EAAOymB,MAAMle,QACb,IAAIpf,EAAY6W,EAAOymB,MAAMiZ,eACzBgI,EAAkB1nC,EAAO2nC,iBAAiBx+C,GAC1Ck3C,EAAUl3C,EAAY6W,EAAOymB,MAAMsZ,YAAc,GACjD6H,EAAW,CACXzE,KAAM9C,EAAQkD,MAAQ,GACtBt+D,KAAMkkB,IAAcu+C,EAAkB1nC,EAAOymB,MAAMohB,QAAQ1+C,GAAa,GACxEje,QAAQ4qB,OAAO3E,UAAUs0C,eAAen7D,KAAK+1D,EAAS,aAAcA,EAAQn1D,QAEhF80B,EAAOkkC,gBAAgBzD,iBAAiB,QAASl4D,EAAS5H,QAAQkI,OAzJpD,mCA0Jd,IAAIqgB,EAAU8W,EAAOkkC,gBAAgB3D,eAAe,CAChDqH,SAAUA,EACV9jE,MAAOk8B,EAAO8nC,kBAAkB3+C,KAEpCD,EAAQN,MAAK,SAASg/C,EAAU99D,GAC5B,GAAIqf,IAAcu+C,EAAiB,CAC/B,IAAIziE,EAAO2iE,EAAS3iE,MAAQ2iE,EAASzE,KACjC17D,EAAQ0hB,EAAU1hB,MAClBnB,EAAS6iB,EAAU7iB,OACvBshE,EAAS3iE,UAAO,EAChB+6B,EAAOkkC,gBAAgBtJ,sBAAsB9wD,GAC7CxD,GAAU05B,EAAOymB,MAAMshB,WAAWtgE,EAAOnB,EAtJzC,UAuJA05B,EAAOymB,MAAM2Z,WAAW34D,EAAOxC,EAAM,OAAQ2iE,EAxJ/C,QAyJE5nC,EAAOymB,MAAMkZ,aAAal4D,EAAQxC,EAAKqB,OAAQ,EAzJjD,aA2JEshE,EAAS3iE,KAAQkkB,GAAcy+C,EAAS3iE,KAAuB2iE,EAAS3iE,KAAzB2iE,EAASzE,KACxDnjC,EAAO0kC,aAAa,CAAC,OAAQkD,EA5J/B,QA4JuD99D,MAG7Dof,EAAQJ,MAAK,WACTkX,EAAOymB,MAAMle,aAIzBie,EAAOmhB,iBAAmB,SAASx+C,GAC/B,QAASA,GAAapnB,KAAK0kD,MAAMohB,QAAQ1+C,GAAW6+C,OAAO1hE,OAAS6iB,EAAU7iB,QAElFkgD,EAAOshB,kBAAoB,SAAS3+C,GAChC,MAAO,CAAC,CACJyyB,UAAW,OACXqsB,MAAO,CACHhjE,KAAMsD,EAAS5H,QAAQkI,OAxLX,qCA0LjB,CACC+yC,UAAW,OACXqsB,MAAO,CACHhjE,KAAMsD,EAAS5H,QAAQkI,OA5LV,qCA8LjBsJ,SAAUpQ,KAAK4lE,iBAAiBx+C,IACjC,CACCyyB,UAAW,SACXssB,WAAY,aACZz0C,cAAe,CACXxuB,KAAMsD,EAAS5H,QAAQkI,OAlMR,uCAoMnB8S,SAnMyB,6BAoMzBssD,MAAO,CACH91D,SAAS,MAIrBq0C,EAAOuf,qBAAuB,WAC1B,IAAItlC,EAAS1+B,KACb,OAAO,WACH,IAAI6lE,EAAWnnC,EAAOgmB,MAAMsZ,YACxBoI,EAAiBryC,OAAO3E,UAAUs0C,eAAen7D,KAAKs9D,EAAU,YAChEQ,EAAe3nC,EAAO4nC,mBAC1B,GAAIF,EAAgB,CAChB,IACIxF,EADwBliC,EAAOgmB,MAAMsZ,UAAUqI,EAAe,EAAG,GAChCzF,SACrCiF,EAASrF,IAAMqF,EAASjF,gBACjBiF,EAASjF,SACXA,GAAY,IAAMyF,GACnB3nC,EAAOgmB,MAAMkZ,aAAayI,EAAe,EAAG,EA1M5C,UA6MR,IAAIE,EAAc7nC,EAAO8nC,kBACzB9nC,EAAOyjC,gBAAgBzD,iBAAiB,QAASl4D,EAAS5H,QAAQkI,OAxNnD,oCAyND43B,EAAOyjC,gBAAgB3D,eAAe,CAChDqH,SAAUA,EACV9jE,MAAO28B,EAAO+nC,kBAEV5/C,MAAK,SAASg/C,EAAU99D,GAC5B,IAAIrC,EAAQ2gE,EACZ3nC,EAAOyjC,gBAAgBtJ,sBAAsB9wD,GACzCq+D,IACA1gE,EAAQ6gE,EACR7nC,EAAOgmB,MAAMshB,WAAWtgE,EAAO,EAxN/B,WA0NJg5B,EAAOgmB,MAAM6Z,YAAY74D,EAAO,gBAAiBmgE,EA3N/C,QA4NFnnC,EAAOgmB,MAAMkZ,aAAal4D,EAAQ,EAAG,EA5NnC,WA6NHkhB,QAAO,WACN8X,EAAOgmB,MAAMle,aAIzBie,EAAOwgB,2BAA6B,WAChC,IAAI1lC,EAASv/B,KACb,OAAO,WACH,IAAIs+D,EAAU/+B,EAAOmlB,MAAMsZ,YACNjqC,OAAO3E,UAAUs0C,eAAen7D,KAAK+1D,EAAS,SAM/D/+B,EAAOmlB,MAAMle,SAGjBjH,EAAO4iC,gBAAgBzD,iBAAiB,QAASl4D,EAAS5H,QAAQkI,OAjPnD,0CAkPDy4B,EAAO4iC,gBAAgB3D,eAAe,CAChDqH,SAVW,CACXtuD,KAAM,EACN5F,QAAS,GAST5P,MAAOw9B,EAAOmnC,wBAEV7/C,MAAK,SAASg/C,EAAU99D,GAC5Bw3B,EAAOmlB,MAAMle,QACb,IAAI8H,EAAQ/O,EAAOmlB,MAAMkY,UAAU,SACnC,GAAItuB,EAAO,CACP/O,EAAO4iC,gBAAgBtJ,sBAAsB9wD,GAC7C,IAAI4J,EAAUk0D,EAASl0D,QACnB4F,EAAOsuD,EAAStuD,KACpB+2B,EAAM02B,YAAYrzD,EAAS4F,OAEhCqP,QAAO,WACN2Y,EAAOmlB,MAAMle,cAIzBie,EAAO0gB,0BAA4B,SAASwB,GAExC,IADA,IAAIxmC,EAASngC,KACJ4mE,EAAO/gE,UAAUtB,OAAQsiE,EAAO,IAAIl/C,MAAMi/C,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IAChGD,EAAKC,EAAO,GAAKjhE,UAAUihE,GAE/B,OAAO,WACH,IAAIx4B,EAAQnO,EAAOukB,MAAMkY,UAAU,SACnC,GAAKtuB,EAIL,OADAnO,EAAOukB,MAAMle,QACN8H,EAAMq4B,GAAe/gE,MAAM0oC,EAAOu4B,KAGjDpiB,EAAO+d,eAAiB,WACpB,IAAI9hC,EAAS1gC,KACTiM,EAAYjM,KAAKgB,QAAQiL,WAAajM,KAAK+mE,gBAC/C/mE,KAAKgnE,WAAY,EAAInoE,EAAUD,SAAS,SAAS2G,SA1SrC,yBA0S6DqG,SAASK,GAClFjM,KAAKinE,oBAAqB,EAAIpoE,EAAUD,SAASqN,GAAW1G,SA5SxC,iCA6SpBc,EAAezH,QAAQ8I,GAAG1H,KAAKinE,oBAAoB,EAAIxgE,EAAOkB,cAAc,YAAa3H,KAAKmiE,gBAAgBvnB,OAAO,SAAS/yC,GAC1HA,EAAEgqB,oBAEN7xB,KAAKknE,gBAAkBlnE,KAAKmiE,gBAAgBnuD,iBAAiBhU,KAAKgnE,UAAW7H,EAASvgE,QAASoB,KAAKmnE,eACpGnnE,KAAKmiE,gBAAgBz6D,GAAG,iBAAiB,SAASq0B,GAC9C,IAAI71B,EAAO61B,EAAM71B,KACb,aAAeA,GAAQ,aAAeA,GACtCw6B,EAAOwmC,gBAAgBllE,OAAO,WAAY0+B,EAAO0mC,2BAI7D3iB,EAAO4iB,gBAAkB,WACrB,IAAIC,EACJ,OAAO,QAAUA,EAAwBtnE,KAAKgB,QAAQumE,iBAAc,IAAWD,GAAwBA,GAE3G7iB,EAAOqe,MAAQ,WACX9iE,KAAKoiE,gBAAgBwB,QACjB5jE,KAAKinE,oBACLjnE,KAAKinE,mBAAmB1yD,QAAQyL,YA/ThB,kCAkUxBykC,EAAOt+C,QAAU,WACbnG,KAAKknE,iBAAmBlnE,KAAKknE,gBAAgB/gE,WAEjDs+C,EAAOsiB,cAAgB,WACnB,IAAIvkE,GAAa,EAAI3D,EAAUD,SAAS,SAExC,OADAoB,KAAKmiE,gBAAgBjwD,WAAW5F,QAAQ9J,GACjCA,GAEXiiD,EAAO+iB,qBAAuB,WAC1B,IAAIjmC,EAAUvhC,KACVynE,EAAc,GAelB,OAdA,EAAIvoE,EAAUqE,MAAMvD,KAAKgB,QAAQe,OAAO,SAAS2D,EAAOpD,GACpD,IAAI+vC,EACJ,IAAI,EAAI7yC,EAAMw2C,UAAU1zC,GACpB+vC,EAAU9Q,EAAQmmC,kBAAkBplE,QAEpC,IAAI,EAAI9C,EAAMkd,UAAUpa,GAAO,CAC3B,IAAIqlE,EAAmBpmC,EAAQqmC,yBAAyBtlE,GACxD+vC,EAAU9Q,EAAQsmC,gBAAgBF,GAGtCt1B,GACAo1B,EAAYpjE,KAAKguC,MAGlBo1B,GAEXhjB,EAAOijB,kBAAoB,SAASplE,GAChC,GAAIA,EAAKu7D,YAAcv7D,EAAKwlE,cAAgB9nE,KAAK+nE,kBAAkBzlE,EAAKghE,OAAQ,eAAgB,CAC5F,IAAI0E,EAAmBhoE,KAAKioE,yBAAyB3lE,GACrD,OAAOtC,KAAK6nE,gBAAgBG,GAE5B,GAAI1lE,EAAKu7D,YAAc79D,KAAK+nE,kBAAkBzlE,EAAKghE,OAAQ,YAAa,CACpE,IAAI4E,EAA0BloE,KAAK4nE,yBAAyBtlE,EAAKu7D,YAC7D8J,GAAmB,EAAI1oE,EAAQc,SAAQ,EAAMmoE,EAAyB5lE,GAC1E,OAAOtC,KAAK6nE,gBAAgBF,GAE5B,OAAO3nE,KAAK6nE,gBAAgBvlE,IAIxCmiD,EAAOsjB,kBAAoB,SAASzE,EAAQ6E,GACxC,OAAQ7E,GAAUA,IAAW6E,GAEjC1jB,EAAOmjB,yBAA2B,SAAS/J,GACvC,IAAIuK,EAAW,UAAYvK,EAAa,cAAgBA,EACpDwK,GAAa,EAAIvG,EAAWwG,UAAUzK,GAC1C,MAAO,CACHyF,OAAQ,WACRzF,WAAYA,EACZ78D,QAAS,CACLkhC,KAAMmmC,EACNnlE,KAAMmlE,EACNhlE,KAAM+kE,EAAS5sB,cACfrZ,QAASniC,KAAKqiE,gBAAgBxE,IAAe79D,KAAKkjE,wBAAwBrF,GAC1E0K,YAAa,QAEjBC,SAAU,WAGlB/jB,EAAOwjB,yBAA2B,SAAS3lE,GACvC,IAAI2hC,EAAUjkC,KACd,OAAO,EAAIf,EAAQc,SAAQ,EAAM,CAC7BujE,OAAQ,cACRzF,WAAYv7D,EAAKu7D,WACjB78D,QAAS,CACLunE,YAAa,SACb38C,WAAYtpB,EAAKwlE,aACjB9uB,aAAa,EAAI8oB,EAAWwG,UAAUhmE,EAAKu7D,YAC3C4K,eAAgB,SAAS5gE,GAChBo8B,EAAQykC,WACTzkC,EAAQ0+B,aAAa,CAACrgE,EAAKu7D,WAAYh2D,EAAEhD,MAjX/C,QAiXoEgD,EAAEE,OAChEk8B,EAAQ0kC,gBAAgB9gE,EAAEiJ,UAAWjJ,EAAEhD,WAIpDvC,IAEPmiD,EAAOyf,0BAA4B,SAASrG,GACxC,IAAIp3B,EAAUzmC,KACd,OAAO,WACH,IAAI6lE,EAAWp/B,EAAQie,MAAMsZ,YACzB1uD,EAAU,UAAYuuD,EA5YX,kCACK,uCA4YpBp3B,EAAQ07B,gBAAgBzD,iBAAiB,QAASl4D,EAAS5H,QAAQkI,OAAOwI,IAC1E,IAAI6X,EAAUsf,EAAQ07B,gBAAgB3D,eAAe,CACjDqH,SAAUA,EACV9jE,MAAO,CAAC,CACJ83C,UAAWgkB,EACXsI,WAAY,cACZyC,kCAAkC,EAClCl3C,cAAe,CACXzwB,mBAAmB,GAEvBilE,MAAO,CACH91D,SAAS,OAIrB+W,EAAQN,MAAK,SAASg/C,EAAU99D,GAC5B0+B,EAAQk8B,aAAa,CAAC9E,EAAYgI,EAAShI,GA7YzC,QA6YoE91D,MAE1Eof,EAAQJ,MAAK,WACT0f,EAAQie,MAAMle,aAI1Bie,EAAOojB,gBAAkB,SAASvlE,GAC9B,IAAI2lC,EAAUjoC,KACV6oE,EAAW,CACX7nE,QAAS,CACL45B,cAAe,SAAS/yB,GAChBvF,EAAKu7D,aACLh2D,EAAEiJ,UAAUoB,WAAW3M,SAhbb,gCAibVsC,EAAEiJ,UAAUoB,WAAWpM,YAAY,MAAMnF,OAAO2B,EAAKu7D,WAAWriB,cAAe,aAAcl5C,EAAKu7D,YAClG51B,EAAQm6B,gBAAgB9nD,IAAIhY,EAAKu7D,WAAYh2D,EAAEiJ,eAK3Dg4D,EAAgB9oE,KAAKqnE,kBAAoB,CACzCzwD,SAAU,SACVikC,aAAc,SACd,GACJ,OAAO,EAAI57C,EAAQc,SAAQ,EAAM,CAC7B6W,SAAU,SACVikC,aAAc,QACf76C,KAAK+oE,kBAAkBzmE,EAAKu7D,YAAav7D,EAAMumE,EAAUC,IAEhErkB,EAAOukB,uBAAyB,WAC5B,MAAO,CACHC,OAAQ,CACJjoE,QAAS,CACLb,YAAa,SAASmC,GAElB,OADoB,EAAI9C,EAAM4J,WAAW9G,KAAS,IAAUA,EACrC,GAAG3B,OAAOshE,EAAc,KAAKthE,OAAO2B,GAAQ4/D,KAI/E0B,MAAO,CACH5iE,QAAS,CACLozD,UAAU,IAGlB8J,KAAM,CACFl9D,QAAS,CACLozD,UAAU,IAGlB+J,KAAM,CACFn9D,QAAS,CACLozD,UAAU,IAGlB8Q,eAAgB,CACZlkE,QAAS,CACLozD,UAAU,IAGlBgR,eAAgB,CACZpkE,QAAS,CACLozD,UAAU,IAGlBiR,iBAAkB,CACdrkE,QAAS,CACLozD,UAAU,IAGlBkR,kBAAmB,CACftkE,QAAS,CACLozD,UAAU,IAGlBoR,UAAW,CACPxkE,QAAS,CACLozD,UAAU,IAGlBmR,aAAc,CACVvkE,QAAS,CACLozD,UAAU,IAGlBqR,YAAa,CACTzkE,QAAS,CACLozD,UAAU,IAGlB8U,UAAW,CACP1uB,SAAU,SAASnrC,EAAM3J,EAAOyM,IAC5B,EAAItT,EAAUD,SAASuT,GAAS5M,SA7ftB,oCA+fd4jE,iBAAkB,SAAS95D,EAAM3J,EAAOyM,IACpC,EAAItT,EAAUD,SAASuT,GAAS5M,SA/fjB,4CAogB/Bk/C,EAAOskB,kBAAoB,SAASlL,GAChC,OAAO79D,KAAKgpE,yBAAyBnL,IAEzCpZ,EAAOse,qBAAuB,WAC1B,IAAIqG,EAAgBppE,KAAK0kD,MAAMyY,QAC/B,GAAKiM,EAAL,CAGA,IAAIC,EAAuBD,EAAcE,MACrCC,EAAUF,EAAqBnL,KAC/BsL,EAAUH,EAAqBlL,KACnCn+D,KAAKypE,0BAA0BzpE,KAAKoiE,gBAAgBmB,UAAU,QAAShY,QAAQge,EAAQhlE,SACvFvE,KAAKypE,0BAA0BzpE,KAAKoiE,gBAAgBmB,UAAU,QAAShY,QAAQie,EAAQjlE,WAE3FkgD,EAAOwe,mBAAqB,WACxB,IAAIyG,EAAuBC,EAAU3pE,KAErC,GADYA,KAAK0kD,MAAMkY,UAAU,SACjC,CAGA,IAAIx1C,EAAYpnB,KAAK0kD,MAAMiZ,eACvBiM,EAA2BxiD,GAAamkC,QAAQ,QAAUme,EAAwB1pE,KAAK0kD,MAAMsZ,UAAU52C,UAAe,IAAWsiD,OAAwB,EAASA,EAAsBp7B,OAC5L0zB,EAAiB/xC,SAAQ,SAAS02C,GAC9B,IAAIkD,EAAgB,gBAAkBlD,EAClCrD,EAASqG,EAAQvH,gBAAgBmB,UAAUoD,GAC/CgD,EAAQF,0BAA0BnG,EAAQuG,GAAiBD,EAA2BA,QAG9FnlB,EAAOglB,0BAA4B,SAASnG,EAAQwG,GAC3CxG,GAGLA,EAAOthE,OAAO,YAAa8nE,IAE/BrlB,EAAOue,oBAAsB,SAAS+G,GAClC,IAAI3iD,EAAYpnB,KAAK0kD,MAAMiZ,eAC3B,GAAKv2C,EAAL,CAGA,IAAIk3C,EAAUt+D,KAAK0kD,MAAMsZ,UAAU52C,GAC/B4iD,IAAc,EAAIxqE,EAAMk4B,eAAe4mC,GAI3C,IAAK,IAAIT,KAHJmM,IAAcD,GACf/pE,KAAKiqE,sBAEc3L,EAAS,CAC5B,IAAIrV,EAAajpD,KAAKkqE,qBAAqBrM,EAAYS,GACnD6L,EAAenqE,KAAKoiE,gBAAgBmB,UAAUta,IAAejpD,KAAKoiE,gBAAgBmB,UAAU1F,GAC3FsM,GAGLnqE,KAAKwjE,wBAAwB3F,EAAYsM,EAAc7L,GAE3Dt+D,KAAK2jE,uBAAuBqG,GAAc5iD,EAAU7iB,OAAS,KAEjEkgD,EAAO+e,wBAA0B,SAASt9D,EAAMo9D,EAAQhF,GAChDt+D,KAAKoqE,eAAelkE,IACpBlG,KAAKqqE,mBAAmBnkE,EAAMo4D,EAAQp4D,IAEtC,UAAWo9D,EAAOthE,SAClBhC,KAAK2oE,gBAAgBrF,EAAQhF,EAAQp4D,IAErCo9D,EAAOpxD,WAAW3M,SAhkBJ,qBAmkBtBk/C,EAAOkf,uBAAyB,SAASqG,GACrC,IAAIM,EAActqE,KAAKoiE,gBAAgBmB,UAAU,SAC7C+G,GACAA,EAAYtoE,OAAO,YAAagoE,IAGxCvlB,EAAO2lB,eAAiB,SAASvM,GAC7B,MAAO,UAAYA,GAAc,eAAiBA,GAEtDpZ,EAAO4lB,mBAAqB,SAASxM,EAAYoG,GAC7C,IAAIkG,EAAenqE,KAAKoiE,gBAAgBmB,UAAU1F,GAC7CsM,GAGLA,EAAaj4D,WAAW5G,KAAK,IAAI3K,OAhlBxB,YAglB4C6V,IAAI,oBAAqBytD,GAAS,gBAE3Fxf,EAAOylB,qBAAuB,SAASrM,EAAYS,GAC/C,IAAIrV,EACJ,OAAQ4U,GACJ,IAAK,QACD5U,EAAa4U,GAAa,EAAIiE,EAAWwG,UAAUhK,EAAQT,IAC3D,MACJ,IAAK,OACD5U,EAAaqV,EAAQT,IAAc,EAAIiE,EAAWwG,UAAUzK,GAC5D,MACJ,IAAK,aACD5U,EAAa,YACb,MACJ,IAAK,SACDA,EAAaqV,EAAQT,GAAcA,EACnC,MACJ,IAAK,WACD5U,EAAa,QACb,MACJ,QACIA,EAAa4U,EAErB,OAAO5U,GAEXxE,EAAOkkB,gBAAkB,SAASrF,EAAQz+D,GACtC7E,KAAK0oE,UAAW,EAChBpF,EAAOthE,OAAO,QAAS6C,GACvB7E,KAAK0oE,UAAW,GAEpBjkB,EAAOwlB,oBAAsB,WACzB,IAAIM,EAAUvqE,KACdA,KAAKoiE,gBAAgB7+D,MAAK,SAAS2C,EAAMo9D,GACrCiH,EAAQ9G,mBAAmBv9D,EAAMo9D,OAGzC7e,EAAOgf,mBAAqB,SAASv9D,EAAMo9D,GACvCA,EAAOpxD,WAAW8N,YAtnBA,oBAunBdhgB,KAAKoqE,eAAelkE,IACpBlG,KAAKqqE,mBAAmBnkE,GAExB,UAAYA,GACZo9D,EAAOthE,OAAO,YAAY,GAE1B,gBAAkBshE,EAAO1oB,MACzB56C,KAAK2oE,gBAAgBrF,EAAQ,OAGrC7e,EAAO+lB,gBAAkB,SAAS3M,EAAYvpB,GAC1Ct0C,KAAKqiE,gBAAgBxE,GAAcvpB,EACnC,IAAI61B,EAAenqE,KAAKoiE,gBAAgBmB,UAAU1F,GAC9CsM,GAAgB,aAAeA,EAAavvB,MAC5CuvB,EAAanoE,OAAO,UAAWsyC,IAvqBzBgQ,EA0qBDyd,GA1qBcxd,EA0qBC,CAAC,CACzBrgD,IAAK,wBACL+D,IAAK,WACD,MAAO,CAAC,CACJ4xC,UAAW,UACXssB,WAAY,cACZz0C,cAAe,CACXmlB,IAAK,GAETqvB,MAAO,CACHhjE,KAAMsD,EAAS5H,QAAQkI,OAnoBV,6CAqoBlB,CACC+yC,UAAW,OACXssB,WAAY,cACZz0C,cAAe,CACXmlB,IAAK,GAETqvB,MAAO,CACHhjE,KAAMsD,EAAS5H,QAAQkI,OA3oBb,mDA+oBvB,CACC5C,IAAK,oBACL+D,IAAK,WACD,IAAImf,EAAYpnB,KAAK0kD,MAAMiZ,eAC3B,OAAIv2C,EACIA,EAAU7iB,OACH6iB,EAAU1hB,MAEV0hB,EAAU1hB,MAAQ,EAGtB1F,KAAK0kD,MAAM0Z,cAG3B,CACCl6D,IAAK,qBACL+D,IAAK,WACD,IAAIwiE,EACArjD,EAAYpnB,KAAK0kD,MAAMiZ,eAC3B,OAAO,QAAU8M,EAAmB,OAASrjD,QAAa,IAAWA,OAAY,EAASA,EAAU1hB,aAAU,IAAW+kE,EAAmBA,EAAmBzqE,KAAK0kD,MAAM0Z,cAE/K,CACCl6D,IAAK,kBACL+D,IAAK,WACD,MAAO,CAAC,CACJ4xC,UAAW,MACXqsB,MAAO,CACHhjE,KAAMsD,EAAS5H,QAAQkI,OA/qBd,sCAirBd,CACC+yC,UAAW,QACXqsB,MAAO,CACHhjE,KAAMsD,EAAS5H,QAAQkI,OAlrBZ,wCAorBhB,CACC+yC,UAAW,SACXqsB,MAAO,CACHhjE,KAAMsD,EAAS5H,QAAQkI,OAtrBX,yCAwrBjB,CACC+yC,UAAW,MACXqsB,MAAO,CACHhjE,KAAMsD,EAAS5H,QAAQkI,OA7rBd,yCAisBtB,CACC5C,IAAK,gBACL+D,IAAK,WACD,MAAO,CACH2jB,WAAY5rB,KAAKwnE,uBACjBpT,SAAUp0D,KAAKonE,sBACfsD,cAAe1qE,KAAKinE,mBACpBM,UAAWvnE,KAAKqnE,qBAGzB,CACCnjE,IAAK,wBACL+D,IAAK,WACD,OAAOjI,KAAKmiE,gBAAgBngE,OAAO,aAAehC,KAAKmiE,gBAAgBngE,OAAO,iBA1vBtFqhD,EAAkBiB,EAAYl1B,UAAWm1B,GAEzCC,GACAnB,EAAkBiB,EAAaE,GAEnCzwB,OAAO4vB,eAAeW,EAAa,YAAa,CAC5CZ,UAAU,IAuvBHqe,EAtsBK,CAusBd9d,GAEN,IAAIrkD,EAAWmiE,EACfpjE,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCCv1BzBD,EAAQC,aAAU,EAClB,IAAIM,EAAYH,EAAQ,IACpB4rE,EAAkB,WAClB,SAASA,IACL3qE,KAAK4qE,YAAc,GAEvB,IAAInmB,EAASkmB,EAAgBv7C,UA6B7B,OA5BAq1B,EAAOmf,MAAQ,WACX5jE,KAAK4qE,YAAc,IAEvBnmB,EAAOnqC,IAAM,SAASpU,EAAM6jD,GACxB/pD,KAAK4qE,YAAYvmE,KAAK,CAClB6B,KAAMA,EACN6jD,SAAUA,KAGlBtF,EAAO8e,UAAY,SAASta,GACxB,IAAIqa,EAAS,KASb,OARA,EAAIpkE,EAAUqE,MAAMvD,KAAK4qE,aAAa,SAASllE,EAAOqxB,GAClD,IAAI7wB,EAAO6wB,EAAK7wB,KACZ6jD,EAAWhzB,EAAKgzB,SACpB,GAAI7jD,IAAS+iD,EAET,OADAqa,EAASvZ,GACF,KAGRuZ,GAEX7e,EAAOlhD,KAAO,SAAS+wC,GACnBt0C,KAAK4qE,YAAY36C,SAAQ,SAASiL,GAC9B,IAAIh1B,EAAOg1B,EAAMh1B,KACb6jD,EAAW7uB,EAAM6uB,SACrB,OAAOA,GAAYzV,EAAQpuC,EAAM6jD,OAGlC4gB,EAjCW,GAmCtBhsE,EAAQC,QAAU+rE,EAClBvkE,EAAOzH,QAAUA,EAAQC,S,kCCtCzBD,EAAQC,aAAU,EAClB,IAAIskD,EAAmBpkD,EAAuBC,EAAQ,MAClDsH,EAAiBvH,EAAuBC,EAAQ,KAChD0H,EAAS1H,EAAQ,IACjBG,EAAYH,EAAQ,IACpBoO,EAAWrO,EAAuBC,EAAQ,MAC1C8N,EAAU9N,EAAQ,IAEtB,SAASD,EAAuBY,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAInB,SAASmrE,EAAuBC,GAC5B,QAAI,IAAWA,EACX,MAAM,IAAIC,eAAe,6DAE7B,OAAOD,EASX,SAASlnB,EAAgBhwB,EAAGiwB,GAKxB,OAJAD,EAAkB7vB,OAAO+vB,gBAAkB,SAASlwB,EAAGiwB,GAEnD,OADAjwB,EAAEmwB,UAAYF,EACPjwB,IAEYA,EAAGiwB,GAE9B,IAAImnB,EAAkB,GAClB9nB,EAAiBtkD,UAEjBosE,EAAkB,SAAS7mB,GAhB/B,IAAwBC,EAAUC,EAmB1B,SAAS2mB,EAAgBtmB,EAAO1jD,GAC5B,IAAIuG,GACJA,EAAQ48C,EAAY57C,KAAKvI,KAAM0kD,EAAO1jD,IAAYhB,MAC5C+kD,eAAiB/jD,EAAQ+jD,eAC/B,IAAIkE,EAAa1hD,EAAMw9C,eAAenK,KAItC,OAHAv0C,EAAezH,QAAQ8I,GAAGH,EAAMm9C,MAAMyb,MAAM,EAAI15D,EAAOkB,cAAc,WAAYshD,GAAa1hD,EAAM0jE,iBAAiBhoE,KAAK4nE,EAAuBtjE,KACjJlB,EAAezH,QAAQ8I,GAAGH,EAAMm9C,MAAMyb,MAAM,EAAI15D,EAAOkB,cAAc,OAAQshD,GAAa1hD,EAAM2jE,aAAajoE,KAAK4nE,EAAuBtjE,KACzIlB,EAAezH,QAAQ8I,GAAGH,EAAMm9C,MAAMyb,MAAM,EAAI15D,EAAOkB,cAAc,QAASshD,GAAa1hD,EAAM4jE,cAAcloE,KAAK4nE,EAAuBtjE,KACpIA,EA3Be88C,EAiBMF,GAjBhBC,EAiBD4mB,GAhBV57C,UAAY2E,OAAOsB,OAAOgvB,EAAWj1B,WAC9Cg1B,EAASh1B,UAAU4E,YAAcowB,EACjCR,EAAgBQ,EAAUC,GA0BtB,IAAII,EAASumB,EAAgB57C,UAwE7B,OAvEAq1B,EAAOwmB,iBAAmB,SAASpjE,GAC3BsF,EAASvO,QAAQ2pB,MACjB1gB,EAAEgqB,kBAGV4yB,EAAOymB,aAAe,SAASrjE,GAC3B,IAAIujE,EACAC,EAAexjE,EAAEkpB,cAAcs6C,aAC/BC,EAAW,OAASD,QAAgB,IAAWA,GAAwB,QAAUD,EAAsBC,EAAaE,aAAU,IAAWH,OAA3E,EAA0GA,EAAoB7mE,OAChMvE,KAAK+kD,eAAe8T,sBAAsBhxD,GAC1CA,EAAEgqB,iBACEy5C,GACAtrE,KAAKwrE,UAAUH,EAAaE,MAAOvrE,KAAKyrE,UAAUxoE,KAAKjD,QAG/DykD,EAAO0mB,cAAgB,SAAStjE,GAC5B,IAAI6jE,EAAsB1gE,EAAShL,KAC/B2rE,EAAgB9jE,EAAEkpB,cAAc46C,cAEpC,GADA3rE,KAAK+kD,eAAe8T,sBAAsBhxD,GACrC8jE,EAAL,CAGA,IAAIC,EAAe,QAAUF,EAAuBC,EAAc5pE,aAAU,IAAW2pE,OAAuB,EAASA,EAAqBnnE,QAC3HonE,EAAcrc,QAAQ,cACpBsc,GACf5rE,KAAKwrE,UAAUG,EAAc5pE,OAAO,SAAS8pE,GACrC7gE,EAAO8gE,4BAA4B3+D,EAASvO,WAG5CuO,EAASvO,QAAQ2pB,KACjB9e,YAAW,WACPuB,EAAOygE,UAAUI,MAGrB7gE,EAAOygE,UAAUI,SAKjCpnB,EAAOqnB,4BAA8B,SAAS/0C,GAC1C,IAAItY,EAAUsY,EAAKtY,QACfH,EAASyY,EAAKzY,OACdC,EAAUwY,EAAKxY,QACnB,OAAOE,GAAWH,GAAUC,EAAU,IAE1CkmC,EAAOsnB,SAAW,SAASC,GACvB,QAASA,EAAK/yD,KAAKgzD,MAAM,mEAE7BxnB,EAAO+mB,UAAY,SAASD,EAAO3rB,GAC/B,IAAI/iC,EAAS7c,KACTwzC,GAAS,EAAI3mC,EAAQ6N,cACzB,EAAIxb,EAAUqE,MAAMgoE,GAAO,SAAS7lE,EAAOsmE,GACvC,GAAKnvD,EAAOkvD,SAASC,GAArB,CAGA,IAAIE,EAAS,IAAI14B,EAAO24B,WACxBD,EAAOE,OAAS,SAASlxC,GACrB,IAAI/xB,EAAS+xB,EAAM/xB,OACnBy2C,EAASz2C,EAAO6b,SAEpB,IAAIqnD,EAAeL,EAAKM,UAAYN,EAAKM,YAAcN,EACnDK,aAAwB74B,EAAO+4B,MAC/BL,EAAOM,cAAcH,QAIjC5nB,EAAOgnB,UAAY,SAASp8D,GACxB,IAAI+X,EAAYpnB,KAAK0kD,MAAMiZ,eACvB8O,EAAarlD,EAAYA,EAAU1hB,MAAQ1F,KAAK0kD,MAAM0Z,YAC1Dp+D,KAAK0kD,MAAM6Z,YAAYkO,EAAY,gBAAiBp9D,EAAM,SAEvD27D,EArFO,CADD9nB,EAAiBtkD,QAAQslD,OAAO,iBAyFrD,IAAItkD,EAAWorE,EACfrsE,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCC/HzBD,EAAQC,aAAU,EAClB,IAAIskD,EAAmBpkD,EAAuBC,EAAQ,MAClDF,EAAYC,EAAuBC,EAAQ,KAC3CgO,EAAYhO,EAAQ,KACpBokD,EAASrkD,EAAuBC,EAAQ,OACxC2tE,EAAY5tE,EAAuBC,EAAQ,OAC3CE,EAAUF,EAAQ,IAEtB,SAASD,EAAuBY,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAInB,SAASmrE,EAAuBC,GAC5B,QAAI,IAAWA,EACX,MAAM,IAAIC,eAAe,6DAE7B,OAAOD,EASX,SAASlnB,EAAgBhwB,EAAGiwB,GAKxB,OAJAD,EAAkB7vB,OAAO+vB,gBAAkB,SAASlwB,EAAGiwB,GAEnD,OADAjwB,EAAEmwB,UAAYF,EACPjwB,IAEYA,EAAGiwB,GAE9B,IAAI8oB,EAAiB,GACrB,GAAIzpB,EAAiBtkD,QAAS,CAG1BskD,EAAiBtkD,QAAQ0+D,SAAS,CAC9B,mBAAoBoP,EAAU9tE,UAC/B,GACH+tE,EAAiB,SAASC,GApB9B,IAAwBxoB,EAAUC,IAqBKuoB,GArBfxoB,EAqBDuoB,GApBVv9C,UAAY2E,OAAOsB,OAAOgvB,EAAWj1B,WAC9Cg1B,EAASh1B,UAAU4E,YAAcowB,EACjCR,EAAgBQ,EAAUC,GAmBtB,IAAII,EAASkoB,EAAev9C,UAQ5B,SAASu9C,EAAejoB,EAAO1jD,GAC3B,IAAIuG,EACJA,EAAQqlE,EAAarkE,KAAKvI,KAAM0kD,EAAO1jD,IAAYhB,KACnD,IAAIw1D,EAAU9Q,EAAMkY,UAAU,WAc9B,OAbIpH,GACAA,EAAQgV,gBAAgB,WAAYjjE,EAAM2+C,UAAUjjD,KAAK4nE,EAAuBtjE,KAEpFm9C,EAAMmW,SAASgS,WAAW,CACtB3oE,IAAK,IACL4oE,QAAQ,GACTvlE,EAAM2+C,UAAUjjD,KAAK4nE,EAAuBtjE,KAC/CA,EAAM47C,OAAOz7C,GAAG,SAAS,SAASG,GAC9B,IAAIklE,GAAa,EAAIluE,EAAUD,SAASiJ,EAAEiJ,UAAU9O,OAAO,YAAYqnD,IACnE0jB,EAAW9wD,SA5BC,uBA6BZ8wD,EAAWxnE,SA5BD,uBA+BXgC,EAgDX,OAxEAk9C,EAAO3kD,mBAAqB,WACxB,IAAIktE,EAAaJ,EAAax9C,UAAUtvB,mBAAmByI,KAAKvI,MAChE,OAAO,EAAIf,EAAQc,QAAQitE,EAAY,CACnCC,WAAY,MAuBpBxoB,EAAOyB,UAAY,SAASn+C,GACxB,IAAIqf,EAAYpnB,KAAK0kD,MAAMiZ,cAAa,GACpCt7B,EAAWjb,EAAYA,EAAU1hB,MAAQ1F,KAAK0kD,MAAM0Z,YACxDp+D,KAAKmmD,aAAa9jB,GAClBriC,KAAKktE,oBAAoBnlE,EAAOs6B,GAChCuqC,EAAax9C,UAAU82B,UAAU39C,KAAKvI,OAE1CykD,EAAOyoB,oBAAsB,SAASnlE,EAAOs6B,GACzC,GAAIt6B,GAASA,EAAMoK,QACfnS,KAAKmjD,OAAOnhD,OAAO,WAAY,CAC3BqnD,GAAIthD,EAAMoK,QACV8P,OAAQ,CACJkrD,EAAG,EACHlxC,EAAG,GAEPqG,GAAI,aACJC,GAAI,gBACJC,UAAW,YAEZ,CACH,IAAI4qC,EAAgBptE,KAAK0kD,MAAM2oB,UAAUhrC,GACrCirC,GAAW,EAAIvgE,EAAUmL,iBAAiBlY,KAAK0kD,MAAMyb,MACzDngE,KAAKmjD,OAAOnhD,OAAO,WAAY,CAC3BqnD,GAAIrpD,KAAK0kD,MAAMyb,KACfl+C,OAAQ,CACJkrD,EAAGC,EAAc95D,KACjB2oB,EAAGmxC,EAAc3/B,OAAS6/B,EAASz/D,QAEvCy0B,GAAI,aACJC,GAAI,cACJC,UAAW,eAIvBiiB,EAAOuB,mBAAqB,SAASC,GACjC,IAAIG,EAAgBpmD,KAAKqmD,cACrBknB,EAAetnB,EAAsBn1C,UAAU9O,OAAO,gBACtDwrE,GAAe,EAAIvuE,EAAQc,QAAQ,GAAI,CACvC8E,MAAO0oE,EACPN,WAAYjtE,KAAKgB,QAAQisE,aAE7BxjE,WAAW,WACPzJ,KAAK0kD,MAAM6Z,YAAYnY,EAAe,WAAYonB,GAClDxtE,KAAK0kD,MAAMkZ,aAAaxX,EAAgB,IAC1CnjD,KAAKjD,QAEJ2sE,EA3EM,CA4EfxpB,EAAOvkD,SAEb,IAAIgB,EAAW+sE,EACfhuE,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCCzHzBD,EAAQC,aAAU,EAClB,IAIgCc,EAJ5BwjD,GAI4BxjD,EAJcX,EAAQ,OAKpCW,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GALfD,EAAUV,EAAQ,IAClBE,EAAUF,EAAQ,IActB,SAAS6kD,EAAgBhwB,EAAGiwB,GAKxB,OAJAD,EAAkB7vB,OAAO+vB,gBAAkB,SAASlwB,EAAGiwB,GAEnD,OADAjwB,EAAEmwB,UAAYF,EACPjwB,IAEYA,EAAGiwB,GAE9B,IAAI4pB,EAAW,GACf,GAAIvqB,EAAiBtkD,QAAS,EAG1B6uE,EAAW,SAASC,GAjBxB,IAAwBtpB,EAAUC,EAoB1B,SAASopB,IACL,OAAOC,EAAO9nE,MAAM5F,KAAM6F,YAAc7F,KAyB5C,OA9C0BqkD,EAkBDqpB,GAlBTtpB,EAkBDqpB,GAjBVr+C,UAAY2E,OAAOsB,OAAOgvB,EAAWj1B,WAC9Cg1B,EAASh1B,UAAU4E,YAAcowB,EACjCR,EAAgBQ,EAAUC,GAoBtBopB,EAASp4C,OAAS,SAAShmB,GACvB,IACIs+D,EACAC,EAFA9pE,EAAO4pE,EAAOr4C,OAAO9sB,KAAKvI,MAG1BkD,EAAOmM,EAAKxK,MAWhB,OAVI8iB,MAAMC,QAAQvY,EAAK49D,aACnBU,GAAkB,EAAIluE,EAAQy8D,eAAe7sD,EAAK49D,WAAW,GAAI,IACjEW,GAAgB,EAAInuE,EAAQy8D,eAAe7sD,EAAK49D,WAAW,GAAI,KAE/DU,EAAkBC,EAAgBv+D,EAAK49D,WAE3CnpE,EAAKu9D,UAAYsM,EAAkBzqE,EAAO0qE,EAC1C9pE,EAAK+pE,QAAQC,gBAAkBH,EAC/B7pE,EAAK+pE,QAAQE,cAAgBH,EAC7B9pE,EAAK+pE,QAAQG,SAAW3+D,EAAKxK,MACtBf,GAEX2pE,EAAS5oE,MAAQ,SAASf,GACtB,OAAO,EAAI7E,EAAQc,QAAQ,GAAI,CAC3B8E,MAAOf,EAAK+pE,QAAQG,SACpBf,WAAY,CAACnpE,EAAK+pE,QAAQC,iBAAmB,GAAIhqE,EAAK+pE,QAAQE,eAAiB,OAGhFN,EA7BA,CAFCvqB,EAAiBtkD,QAAQslD,OAAO,iBAiCnC8c,SAAW,WACpByM,EAASQ,QAAU,OACnBR,EAASt3D,UAlCY,cAoCzB,IAAIvW,EAAW6tE,EACf9uE,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCCjEzBD,EAAQC,aAAU,EAClB,IAAIC,EAAYC,EAAuBC,EAAQ,KAC3CsH,EAAiBvH,EAAuBC,EAAQ,KAChDuH,EAASvH,EAAQ,KACjB0H,EAAS1H,EAAQ,IACjBopC,EAAcppC,EAAQ,KACtBI,EAAWL,EAAuBC,EAAQ,KAC1CmvE,EAAapvE,EAAuBC,EAAQ,MAC5CgO,EAAYhO,EAAQ,KACpBmkD,EAAmBpkD,EAAuBC,EAAQ,MAEtD,SAASD,EAAuBY,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAGIyuE,GAAgB,EAAI1nE,EAAOkB,cAAc,UADtB,wBAEnBymE,GAAe,EAAI3nE,EAAOkB,cAAc,SAFrB,wBAGnB0mE,GAAkB,EAAI5nE,EAAOkB,cAAc,YAHxB,wBAKnB2mE,EAAiB,WACjB,SAASA,EAAe5pB,EAAO1jD,GAC3BhB,KAAK0kD,MAAQA,EACb1kD,KAAK+kD,eAAiB/jD,EAAQ+jD,eAC9B/kD,KAAKuuE,eAAiBvtE,EAAQutE,gBAAkB,CAAC,SACjDvuE,KAAK2N,UAAY3M,EAAQ2M,QACzB3N,KAAKwuE,sBAAwBxuE,KAAKyuE,UAAUxrE,KAAKjD,MACjDA,KAAK0uE,6BAA+B1uE,KAAK2uE,sCACrC3uE,KAAK2N,UACL3N,KAAK4uE,gBACL5uE,KAAK6uE,sBAGb,IAAIpqB,EAAS6pB,EAAel/C,UA4I5B,OA3IAq1B,EAAOmqB,cAAgB,WACnBvoE,EAAezH,QAAQ8I,GAAG1H,KAAK0kD,MAAMyb,MAAM,EAAI15D,EAAOkB,cAAcrB,EAAOJ,KApB5D,wBAoBqFlG,KAAK8uE,cAAc7rE,KAAKjD,OAC5HqG,EAAezH,QAAQ8I,GAAG1H,KAAK0kD,MAAMyb,KAAMiO,EAAcpuE,KAAK0uE,8BAC9D1uE,KAAK+kD,eAAer9C,GAAG,WAAY1H,KAAKwuE,uBACxCxuE,KAAK0kD,MAAMh9C,GAAG,cAAe1H,KAAK0uE,+BAEtCjqB,EAAOsqB,cAAgB,WACnB1oE,EAAezH,QAAQ4qB,IAAIxpB,KAAK0kD,MAAMyb,KA1BvB,wBA2BfngE,KAAK+kD,eAAev7B,IAAI,WAAYxpB,KAAKwuE,uBACzCxuE,KAAK0kD,MAAMl7B,IAAI,cAAexpB,KAAK0uE,+BAEvCjqB,EAAOqqB,cAAgB,SAASjnE,GAC5B,GAAI7H,KAAKgvE,iBAAiBnnE,EAAEsB,QAAS,CACjC,GAAInJ,KAAKivE,WAAapnE,EAAEsB,OACpB,OAEJnJ,KAAKivE,SAAWpnE,EAAEsB,OAClBnJ,KAAKkvE,sBACLlvE,KAAKmvE,YACLnvE,KAAKovE,wBAEDpvE,KAAKivE,UACLjvE,KAAKyuE,aAIjBhqB,EAAOkqB,oCAAsC,SAAS9mE,GAClD,IAAIN,EAAQvH,KACZ,OAAO,WACCuH,EAAM0nE,UACN1nE,EAAM2nE,wBAIlBzqB,EAAO2qB,iBAAmB,WACjBpvE,KAAK0kD,MAAMiZ,gBACZ39D,KAAK0kD,MAAMkZ,aAAa,EAAG,IAGnCnZ,EAAOuqB,iBAAmB,SAASK,GAC/B,OAAOrvE,KAAK+rE,SAASsD,IAEzB5qB,EAAOsnB,SAAW,SAASsD,GACvB,OAAiD,IAA1CrvE,KAAKuuE,eAAe32C,QAAQ,UAAmB,QAAUy3C,EAAcpB,QAAQqB,eAE1F7qB,EAAO0qB,UAAY,WACfnvE,KAAKuvE,cAAczxD,OACnBzX,EAAezH,QAAQ8I,GAAG1H,KAAK0kD,MAAMyb,KAAMgO,EAAenuE,KAAKwvE,oBAAoBvsE,KAAKjD,QAE5FykD,EAAO+qB,oBAAsB,SAAS3nE,GAClC,IAAIK,GAAU,EAAIzB,EAAOgpE,kBAAkB5nE,GACvC,QAAUK,GAAW,cAAgBA,GACrClI,KAAK0vE,eAET1vE,KAAKyuE,aAEThqB,EAAOgqB,UAAY,WACfzuE,KAAKivE,SAAW,KAChBjvE,KAAKuvE,cAAcl/D,OACnBhK,EAAezH,QAAQ4qB,IAAIxpB,KAAK0kD,MAAMyb,KAAMgO,IAEhD1pB,EAAOyqB,oBAAsB,WACzB,IAAIS,GAAmB,EAAI5iE,EAAUmL,iBAAiBlY,KAAKivE,UACvDphE,EAAS8hE,EAAiB9hE,OAC1BD,EAAQ+hE,EAAiB/hE,MACzBgiE,EAAYD,EAAiBv8D,IAC7By8D,EAAaF,EAAiBr8D,KAC9Bw8D,GAAoB,EAAI/iE,EAAUmL,iBAAiBlY,KAAK0kD,MAAMyb,MAC9D4P,EAAeD,EAAkB18D,IACjC48D,EAAgBF,EAAkBx8D,KAClC28D,EAAcjwE,KAAKkwE,kBACvBlwE,KAAKuvE,cAAc/4D,IAAI,CACnB3I,OAAQA,EACRD,MAAOA,EACPuiE,QAzFQ,EA0FR/8D,IAAKw8D,EAAYG,EAAeE,EA1FxB,EA2FR38D,KAAMu8D,EAAaG,EAAgBC,EA3F3B,KA6FZ,EAAI9nC,EAAY+F,MAAMluC,KAAKuvE,cAAe,CACtCj8D,KAAM,EACNF,IAAK,KAGbqxC,EAAOyrB,gBAAkB,WACrB,OAAO94B,SAASp3C,KAAKuvE,cAAc/4D,IAAI,oBAE3CiuC,EAAOoqB,mBAAqB,WACxB,IAAI7jE,EAAShL,KACb,IAAIA,KAAKuvE,cAAT,CAGA,IACIzuE,EADmB3B,EAASP,QAAQwxE,UACNtvE,WAClCd,KAAKuvE,eAAgB,EAAI1wE,EAAUD,SAAS,SAAS2G,SAlHjC,mBAkHiEO,YAjHjE,kBAiHoG,YAAchF,GAAY8K,SAAS5L,KAAK+kD,eAAewX,sBAAsBlsD,OACrMhK,EAAezH,QAAQ8I,GAAG1H,KAAKuvE,cAAelB,GAAiB,SAASxmE,GACpEA,EAAEgqB,oBAEN7xB,KAAK+kD,eAAe/wC,iBAAiBhU,KAAKuvE,cAAerB,EAAWtvE,QAAS,CACzEyxE,SAAU,SAASxoE,GACf,GAAKmD,EAAOikE,SAAZ,CAGA,IAAIqB,EAAa,GArHb,EAqHkCtlE,EAAOklE,oBAC7C,EAAIrxE,EAAUD,SAASoM,EAAOikE,UAAU9X,KAAK,CACzCtpD,OAAQhG,EAAEgG,OAASyiE,EACnB1iE,MAAO/F,EAAE+F,MAAQ0iE,IAErBtlE,EAAOkkE,4BAInBzqB,EAAOirB,aAAe,WAEd,IAAIa,EADJvwE,KAAKgvE,iBAAiBhvE,KAAKivE,YAE3B,QAAUsB,EAAcrtB,EAAiBtkD,QAAQ0M,KAAKtL,KAAKivE,iBAAc,IAAWsB,GAAuBA,EAAYC,SAAS,KAGxI/rB,EAAOziD,OAAS,SAASyuE,EAAS5rE,GAC9B,IAAIgY,EAAS7c,KACT,kBAAoBywE,EAMpB,YAAcA,GACdzwE,KAAK2N,QAAU9I,EACfA,EAAQ7E,KAAK4uE,gBAAkB5uE,KAAK+uE,iBAEhC,mBAAqB0B,GAAW9oD,MAAMC,QAAQ/iB,KAC9C7E,KAAKuuE,eAAiB1pE,GAV1BkvB,OAAO/E,KAAKnqB,GAAOorB,SAAQ,SAASzrB,GAChC,OAAOqY,EAAO7a,OAAOwC,EAAYK,EAAML,QAanDigD,EAAOqe,MAAQ,WACX9iE,KAAK+uE,gBACL/uE,KAAKuvE,cAAchkE,SACnBvL,KAAKuvE,mBAAgB,GAElBjB,EAzJU,GA2JrB3vE,EAAQC,QAAU0vE,EAClBloE,EAAOzH,QAAUA,EAAQC,S,kCCnLzBD,EAAQC,aAAU,EAClB,IAAIC,EAAYC,EAAuBC,EAAQ,KAC3CmkD,EAAmBpkD,EAAuBC,EAAQ,MAClDC,EAAQD,EAAQ,KAChBS,EAAQT,EAAQ,IAChBE,EAAUF,EAAQ,IAClB61D,EAAW71D,EAAQ,KACnBsH,EAAiBvH,EAAuBC,EAAQ,KAChDokD,EAASrkD,EAAuBC,EAAQ,OACxC2xE,EAAW5xE,EAAuBC,EAAQ,OAE9C,SAASD,EAAuBY,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAInB,SAAS2jD,EAAkBl6C,EAAQm6C,GAC/B,IAAK,IAAI3wC,EAAI,EAAGA,EAAI2wC,EAAM/+C,OAAQoO,IAAK,CACnC,IAAI4wC,EAAaD,EAAM3wC,GACvB4wC,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IACXA,EAAWG,UAAW,GAE1B3vB,OAAO4vB,eAAex6C,EAAQo6C,EAAWr/C,IAAKq/C,IAiBtD,SAASsnB,EAAuBC,GAC5B,QAAI,IAAWA,EACX,MAAM,IAAIC,eAAe,6DAE7B,OAAOD,EASX,SAASlnB,EAAgBhwB,EAAGiwB,GAKxB,OAJAD,EAAkB7vB,OAAO+vB,gBAAkB,SAASlwB,EAAGiwB,GAEnD,OADAjwB,EAAEmwB,UAAYF,EACPjwB,IAEYA,EAAGiwB,GAE9B,IAAI8sB,EAAgB,GACpB,GAAIztB,EAAiBtkD,QAAS,CAC1B,IAEIgyE,EAAO,CACPC,SAAU,UACVC,WAAY,YACZC,WAAY,YACZC,YAAa,aACbC,MAAO,QACPC,OAAQ,SACRC,MAAO,QACPC,QAAS,SACTC,UAAW,WACXC,IAAK,MACLC,KAAM,QAENC,EAAkB,CAACZ,EAAKG,WAAYH,EAAKI,YAAaJ,EAAKQ,QAASR,EAAKS,UAAWT,EAAKU,IAAKV,EAAKW,MACnGE,EAAuB,CAAC,IAAK,MAEjCvuB,EAAiBtkD,QAAQ0+D,SAAS,CAC9B,kBAAmBoT,EAAS9xE,UAC7B,GACH+xE,EAAgB,SAAS/D,GApC7B,IAAwBxoB,EAAUC,IAqCIuoB,GArCdxoB,EAqCDusB,GApCVvhD,UAAY2E,OAAOsB,OAAOgvB,EAAWj1B,WAC9Cg1B,EAASh1B,UAAU4E,YAAcowB,EACjCR,EAAgBQ,EAAUC,GAmCtB,IA1DcC,EAAaC,EAAYC,EA0DnCC,EAASksB,EAAcvhD,UAc3B,SAASuhD,EAAcjsB,EAAO1jD,GAC1B,IAAIuG,EAmBJ,OAlBAA,EAAQqlE,EAAarkE,KAAKvI,KAAM0kD,EAAO1jD,IAAYhB,MAC7Cu/D,UAAY,GAClBh4D,EAAMw9C,eAAiB/jD,EAAQ+jD,eAC/B/jD,EAAQ20D,SAAS1lC,SAAQ,SAAS3tB,GAC9B,IAAIovE,EAASpvE,EAAKovE,OACbA,IACDpvE,EAAKovE,OAASA,EA5CT,KA8CT,IAAIl3B,EAAWl4C,EAAKk4C,SACpB,GAAIA,EAAU,CACV,IAAIm3B,EAAmBpqE,EAAMw9C,eAAe4R,aAAanc,GACzDm3B,GAAoBjB,EAAS9xE,QAAQgzE,YAAYF,EAAQC,GAE7DpqE,EAAMg4D,UAAUmS,IAAU,EAAIzyE,EAAQc,QAAQ,GAAIwH,EAAMzH,qBAAsBwC,MAElFiF,EAAMsqE,0BACNtqE,EAAMw9C,eAAeqY,iBAAiB71D,EAAMu7D,MAAM7/D,KAAK4nE,EAAuBtjE,KAC9EA,EAAMm9C,MAAMh9C,GAAG,cAAeH,EAAMuqE,aAAa7uE,KAAK4nE,EAAuBtjE,KACtEA,EAqSX,OAtUAk9C,EAAO3kD,mBAAqB,WACxB,IAAIktE,EAAaJ,EAAax9C,UAAUtvB,mBAAmByI,KAAKvI,MAChE,OAAO,EAAIf,EAAQc,QAAQitE,EAAY,CACnC+E,aAAc,OACdt4B,UAAW,OACXt5C,YAAa,OACbq6C,SAAU,KACVuY,WAAY,KACZif,cAAe,IACfC,gBAAiB,KA0BzBxtB,EAAOotB,wBAA0B,WAC7B7xE,KAAK0kD,MAAMmW,SAASgS,WAAW,CAC3B3oE,IAAK0sE,EAAKC,UACX7wE,KAAKkyE,YAAYjvE,KAAKjD,KAAM,SAC/BA,KAAK0kD,MAAMmW,SAASgS,WAAW,CAC3B3oE,IAAK0sE,EAAKE,YACX9wE,KAAKkyE,YAAYjvE,KAAKjD,KAAM,SAC/BA,KAAK0kD,MAAMmW,SAASgS,WAAW,CAC3B3oE,IAAK,CAAC0sE,EAAKK,MAAOL,EAAKO,QACxBnxE,KAAKmyE,mBAAmBlvE,KAAKjD,OAChC,IAAIoyE,EAAgBpyE,KAAK0kD,MAAMmW,SAASwX,SAASzB,EAAKK,OACtDmB,EAAc9/B,QAAQ8/B,EAAc55B,OACpCx4C,KAAK0kD,MAAMmW,SAASgS,WAAW,CAC3B3oE,IAAK0sE,EAAKM,QACXlxE,KAAKsyE,kBAAkBrvE,KAAKjD,OAC/BA,KAAK0kD,MAAMmW,SAASgS,WAAW,CAC3B3oE,IAAK,CAAC0sE,EAAKG,WAAYH,EAAKI,aAC5BznE,UAAU,GACXvJ,KAAKuyE,kBAAkBtvE,KAAKjD,OAC/BA,KAAK0kD,MAAMmW,SAASgS,WAAW,CAC3B3oE,IAAKstE,GACNxxE,KAAKuyE,kBAAkBtvE,KAAKjD,QAEnCykD,EAAOytB,YAAc,SAASM,GAC1B,IAAI5mD,EAAa5rB,KAAKojD,MAAMx+B,gBAC5B,GAAI5kB,KAAKyyE,mBAAqB7mD,EAAW3M,YAAa,CAClD,IACIyzD,EAAsB,SAAWF,EAAY,QAAU,OACvDG,GAFe,EAAI9zE,EAAUD,SAASoB,KAAKojD,MAAMphD,OAAO,mBAE/BwwE,KAC7BG,EAAYA,EAAUpuE,OAASouE,EAAY3yE,KAAK4yE,iBAAiBF,KACjE1yE,KAAKojD,MAAMphD,OAAO,kBAAkB,EAAI4yD,EAASiC,kBAAkB8b,IACnE3yE,KAAKojD,MAAMyvB,aAAaF,GAE5B,OAAQ3yE,KAAKyyE,kBAEjBhuB,EAAO8tB,kBAAoB,WACvB,OAAQvyE,KAAKyyE,kBAEjBhuB,EAAOquB,cAAgB,SAASjuE,EAAOkuE,EAAOr8B,GAC1C,OAAI7xC,EAAQ6xC,EACDq8B,EAEPluE,EAAQkuE,EACDr8B,EAEJ7xC,GAEX4/C,EAAO0tB,mBAAqB,WAIxB,OAHInyE,KAAKyyE,kBACLzyE,KAAKojD,MAAM4vB,WAAWhzE,KAAKojD,MAAMphD,OAAO,oBAEpChC,KAAKyyE,kBAEjBhuB,EAAO6tB,kBAAoB,WAIvB,OAHItyE,KAAKyyE,kBACLzyE,KAAKmjD,OAAO9yC,QAERrQ,KAAKyyE,kBAEjBhuB,EAAOI,WAAa,SAASriD,EAAYxB,GACrChB,KAAKizE,eAAejzE,KAAKgB,SACzB4rE,EAAax9C,UAAUy1B,WAAWt8C,KAAKvI,KAAMwC,EAAYxB,IAE7DyjD,EAAOwuB,eAAiB,SAASl8C,GAC7B,IAAI52B,EAAc42B,EAAK52B,YACnBs5C,EAAY1iB,EAAK0iB,UACrBz5C,KAAKkzE,cAAe,EAAIl0E,EAAM8F,eAAe3E,GAC7CH,KAAKmzE,WAAY,EAAIn0E,EAAM8F,eAAe20C,IAE9CgL,EAAOW,eAAiB,SAASpkD,GAC7B,IAAIgK,EAAShL,KACTgtE,EAAaJ,EAAax9C,UAAUg2B,eAAe78C,KAAKvI,KAAMgB,GAClE,OAAO,EAAI/B,EAAQc,QAAQitE,EAAY,CACnC+E,aAAc/xE,KAAKgB,QAAQ+wE,aAC3BqB,eAAgB,WACRpoE,EAAOqoE,aACProE,EAAOm4C,OAAOh9C,UACd6E,EAAOsoE,qBACPtoE,EAAOqoE,YAAa,OAKpC5uB,EAAOuB,mBAAqB,WACxB,IAAIutB,EAAevzE,KAAKwzE,qBAAqB9B,OAAOntE,OAChDkvE,EAAaF,EAAevzE,KAAK0zE,aAAanvE,OAC9C6hD,EAAgBpmD,KAAKqmD,cACrBknB,EAAevtE,KAAKojD,MAAMphD,OAAO,gBACjC6C,EAAQ,CACRA,MAAO7E,KAAKkzE,aAAa3F,GACzBx0C,GAAI/4B,KAAKmzE,UAAU5F,GACnBmE,OAAQ1xE,KAAKwzE,qBAAqB9B,QAElCiC,EAAQzwB,EAAiBtkD,QAAQslD,OAAO,SACxC1F,EAAa/gC,KAAKk5B,IAAI,EAAGyP,EAAgBmtB,GAE7C/0B,GADuB,OAASx+C,KAAK4zE,gBAAgBp1B,GAAc,EAAI,EAEvE,IAAIyb,GAAY,IAAI0Z,GAAOE,OAAOr1B,GAAYs1B,OAAOL,GAAYM,OAAO,CACpEC,QAASnvE,IACVkvE,OAAO,KACV/zE,KAAK0kD,MAAMuvB,eAAeha,GAC1Bj6D,KAAK0kD,MAAMkZ,aAAapf,EAAa,IAEzCiG,EAAOyvB,wBAA0B,SAAS9Z,GACtC,IAAI+Z,EAAgB/Z,EAAIA,EAAI71D,OAAS,GAErC,GAD4B,WAAY4vE,EAEpC,OAAOA,EAEX,IAAIC,EAAwB,WAAYD,EACxC,GAAIC,GAAyBha,EAAI71D,QAAU,EAAG,CAC1C,IAAI8vE,EAAkBja,EAAIA,EAAI71D,OAAS,GAGvC,GAD2B6vE,GADG,WAAYC,EAGtC,OAAOA,EAGf,OAAO,MAEX5vB,EAAOqtB,aAAe,SAAS7X,EAAUwB,EAAUC,GAC/C,GApLU,SAoLNA,EAAwB,CACxB,IAAIyY,EAAgBla,EAASG,IAAIH,EAASG,IAAI71D,OAAS,GACvD,GAAIvE,KAAKyyE,kBAAoBzyE,KAAKs0E,gBAC9Bt0E,KAAKu0E,oBAAoBJ,IAAkBn0E,KAAKw0E,YAAYx0E,KAAK0zE,kBAC9D,CACH,IAAItZ,EAAMH,EAASG,IACfqa,EAAsBz0E,KAAKk0E,wBAAwB9Z,GACnDqa,GACAz0E,KAAK00E,oBAAoBD,EAAqBra,MAK9D3V,EAAO8vB,oBAAsB,SAASjrB,GAElC,GADwB,WAAYA,EAEhCtpD,KAAK0zE,cAAgBpqB,EAAUyqB,WAC5B,CACH,IAAK/zE,KAAK0zE,aAAanvE,QAAU+kD,EAAUwqB,OAAS,EAEhD,OADA9zE,KAAKmjD,OAAO9yC,QACL,EAEPrQ,KAAK0zE,aAAe1zE,KAAK0zE,aAAaprE,MAAM,GAAI,GAGxD,OAAO,GAEXm8C,EAAOiwB,oBAAsB,SAASx5C,EAAOk/B,GACzC,IAAI2Z,EAAS74C,EAAM64C,OACfY,EAAQ30E,KAAK0kD,MAAMiZ,eAClBoW,IAAW,EAAIv0E,EAAMkd,UAAUq3D,IAAYY,IAAS30E,KAAK40E,oBAAoBxa,EAAI,GAAGyZ,UAGzF7zE,KAAKwzE,qBAAuBxzE,KAAKu/D,UAAUwU,GACvC/zE,KAAKwzE,uBACLxzE,KAAK60E,YAAY70E,KAAKwzE,sBACtBxzE,KAAKmmD,aAAawuB,EAAMjvE,OACxB1F,KAAKmjD,OAAOnhD,OAAO,WAAYhC,KAAK80E,gBACpC90E,KAAK0zE,aAAe,GACpB1zE,KAAKmjD,OAAOrlC,UAGpB2mC,EAAOmwB,oBAAsB,SAASf,GAClC,SAAKA,IAA8E,IAApEpC,EAAqB75C,QAAQ53B,KAAK4zE,gBAAgBC,EAAS,MAK9EpvB,EAAOmvB,gBAAkB,SAASluE,GAC9B,OAAO1F,KAAK0kD,MAAMqwB,YAAYrvE,EAAO,GAAG00D,IAAI,GAAG2Z,QAEnDtvB,EAAOowB,YAAc,SAASv5C,GAC1B,IAAI1P,EAAa0P,EAAM1P,WACnBzrB,EAAcm7B,EAAMn7B,YACpBs5C,EAAYne,EAAMme,UAClBs4B,EAAez2C,EAAMy2C,aACrBhf,EAAaz3B,EAAMy3B,WACvB/yD,KAAKizE,eAAe,CAChB9yE,YAAaA,EACbs5C,UAAWA,IAEfz5C,KAAKojD,MAAMoC,cACXxlD,KAAKojD,MAAMphD,OAAO,CACd4pB,WAAYA,EACZzrB,YAAaA,EACb4xE,aAAcA,EACdhf,WAAYA,KAGpBtO,EAAO+vB,YAAc,SAASnmB,GAC1B,IAAIxxC,EAAS7c,KACb,GAAKA,KAAKg1E,2BAA2B3mB,GAArC,CAIA,IAAI2jB,EAAgBhyE,KAAKwzE,qBAAqBxB,cAC1CA,GACA9wD,aAAalhB,KAAKi1E,cAClBj1E,KAAKi1E,aAAexrE,YAAW,WAC3BoT,EAAOq4D,QAAQ7mB,KAChB2jB,IAEHhyE,KAAKk1E,QAAQ7mB,QAVbruD,KAAKm1E,gBAab1wB,EAAOuwB,2BAA6B,SAAS3mB,GACzC,OAAOA,EAAY9pD,QAAUvE,KAAKwzE,qBAAqBvB,iBAE3DxtB,EAAO0wB,aAAe,WAClBj0D,aAAalhB,KAAKi1E,cAClBj1E,KAAKk1E,QAAQ,OAEjBzwB,EAAOywB,QAAU,SAAS7mB,GACtBruD,KAAKqzE,YAAa,EAClBrzE,KAAKojD,MAAMphD,OAAO,cAAeqsD,IAErC5J,EAAO6uB,mBAAqB,WACxB,GAAKtzE,KAAKojD,MAAV,CAGA,IAAIgyB,EAAap1E,KAAK4yE,iBAAiB57D,QACvChX,KAAKojD,MAAMphD,OAAO,kBAAkB,EAAI4yD,EAASiC,kBAAkBue,IACnEp1E,KAAKojD,MAAMyvB,aAAauC,KAE5B3wB,EAAOQ,gBAAkB,WACrB,IAAIzoB,EAASx8B,KACb,OAAO,EAAIf,EAAQc,QAAQ6sE,EAAax9C,UAAU61B,gBAAgB18C,KAAKvI,MAAO,CAC1E8hC,qBAAqB,EACrBwjB,QAAS,WACL9oB,EAAOi2C,kBAAmB,EAC1Bj2C,EAAO62C,YAAa,EACpB72C,EAAO82C,sBAEX/tB,SAAU,WACN/oB,EAAO4mB,MAAMoC,cACbhpB,EAAO4mB,MAAMphD,OAAO,iBAAkB,MACtCw6B,EAAOi2C,kBAAmB,EAC1Bj2C,EAAO04C,QAAQ,OAEnBj0E,mBAAmB,KAG3BwjD,EAAOqe,MAAQ,WACX,IAAI7kC,EAASj+B,KACb+zB,OAAO/E,KAAKhvB,KAAKu/D,WAAWtvC,SAAQ,SAASyhD,GACrCzzC,EAAOshC,UAAUmS,GAAQl3B,UACzBk2B,EAAS9xE,QAAQy2E,eAAe3D,OArV9BptB,EAyVDqsB,GAzVcpsB,EAyVC,CAAC,CACzBrgD,IAAK,kBACL+D,IAAK,WACD,IAAIqtE,EACJ,OAAO,QAAUA,EAAet1E,KAAKmjD,cAAW,IAAWmyB,OAAe,EAASA,EAAatzE,OAAO,aAE5G,CACCkC,IAAK,iBACL+D,IAAK,WACD,IAAIo6B,EAAWriC,KAAKqmD,cAChBkvB,EAAwBv1E,KAAK0kD,MAAM2oB,UAAUhrC,EAAWA,EAAW,EAAIA,GACvEmzC,EAAcD,EAAsBjiE,KACpCmiE,EAAaF,EAAsBniE,IACnCsiE,EAAgBH,EAAsB1nE,OACtC8nE,GAAY,EAAI92E,EAAUD,SAASoB,KAAK0kD,MAAMyb,MAAMl+C,SACpD2zD,EAAaD,EAAUriE,KACvBuhC,EAAY8gC,EAAUviE,IAK1B,MAAO,CACHi2C,GALgBhjD,EAAezH,QAAQ+7D,MAAM,gBAAiB,CAC9Dkb,MAAOD,EAAaJ,EACpBM,MAAOjhC,EAAY4gC,IAInBxzD,OAAQ,CACJga,EAAGy5C,GAEPpzC,GAAI,WACJC,GAAI,WACJC,UAAW,CACPgC,EAAG,OACH/jB,EAAG,cAIhB,CACCvc,IAAK,mBACL+D,IAAK,WACD,OAAOjI,KAAKojD,MAAM2yB,eAAev0D,OAAO,SAAS7gB,OA1UlC,oBA0U+D,WA5XtF0iD,EAAkBiB,EAAYl1B,UAAWm1B,GAEzCC,GACAnB,EAAkBiB,EAAaE,GAEnCzwB,OAAO4vB,eAAeW,EAAa,YAAa,CAC5CZ,UAAU,IAyXHitB,EAzUK,CA0UdxtB,EAAOvkD,SAEb,IAAIgB,EAAW+wE,EACfhyE,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCCnazBD,EAAQC,aAAU,EAClB,IAAIskD,EAAmBpkD,EAAuBC,EAAQ,MAClDF,EAAYC,EAAuBC,EAAQ,KAE/C,SAASD,EAAuBY,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAUnB,SAASkkD,EAAgBhwB,EAAGiwB,GAKxB,OAJAD,EAAkB7vB,OAAO+vB,gBAAkB,SAASlwB,EAAGiwB,GAEnD,OADAjwB,EAAEmwB,UAAYF,EACPjwB,IAEYA,EAAGiwB,GAE9B,IAAImyB,EAAU,GACd,GAAI9yB,EAAiBtkD,QAAS,EAG1Bo3E,EAAU,SAAStI,GAjBvB,IAAwBtpB,EAAUC,EAoB1B,SAAS2xB,IACL,OAAOtI,EAAO9nE,MAAM5F,KAAM6F,YAAc7F,KAuC5C,OA5D0BqkD,EAkBFqpB,GAlBRtpB,EAkBD4xB,GAjBV5mD,UAAY2E,OAAOsB,OAAOgvB,EAAWj1B,WAC9Cg1B,EAASh1B,UAAU4E,YAAcowB,EACjCR,EAAgBQ,EAAUC,GAoBtB2xB,EAAQ3gD,OAAS,SAAShmB,GACtB,IAAIvL,EAAO4pE,EAAOr4C,OAAO9sB,KAAKvI,MAM9B,OALA8D,EAAK28D,aAAa,cAAc,GAChC38D,EAAK+pE,QAAQ6D,OAASriE,EAAKqiE,OAC3B5tE,EAAK+pE,QAAQoI,aAAe5mE,EAAKxK,MACjCf,EAAK+pE,QAAQ90C,GAAK1pB,EAAK0pB,GACvB/4B,KAAKk2E,cAAcpyE,EAAMuL,GAClBvL,GAEXkyE,EAAQnxE,MAAQ,SAASf,GACrB,MAAO,CACH4tE,OAAQ5tE,EAAK+pE,QAAQ6D,OACrB34C,GAAIj1B,EAAK+pE,QAAQ90C,GACjBl0B,MAAOf,EAAK+pE,QAAQoI,eAG5BD,EAAQE,cAAgB,SAASpyE,EAAMuL,GACnC,IAAImrC,EAAWx6C,KAAKm2E,WAAWluE,IAAIoH,EAAKqiE,QACpCl3B,EACAA,EAASxqC,OAAO,CACZomE,MAAO/mE,EACPpD,UAAWnI,IAGf9D,KAAKq2E,kBAAkBvyE,EAAMuL,IAGrC2mE,EAAQK,kBAAoB,SAASvyE,EAAMuL,GACvC,IAAIinE,GAAU,EAAIz3E,EAAUD,SAAS,UAAUsE,KAAKmM,EAAKqiE,SACzD,EAAI7yE,EAAUD,SAASkF,GAAMnB,OAAO2zE,GAAS3zE,OAAO0M,EAAKxK,QAE7DmxE,EAAQpE,YAAc,SAASF,EAAQl3B,GACnCx6C,KAAKm2E,WAAWI,IAAI7E,EAAQl3B,IAEhCw7B,EAAQX,eAAiB,SAAS3D,GAC9B1xE,KAAKm2E,WAAWrC,OAAOpC,IAEpBsE,EA3CD,CAFE9yB,EAAiBtkD,QAAQslD,OAAO,iBA+CpC8c,SAAW,UACnBgV,EAAQ/H,QAAU,OAClB+H,EAAQ7/D,UAhDY,aAiDpB6/D,EAAQG,WAAa,IAAIK,IAE7B,IAAI52E,EAAWo2E,EACfr3E,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCC/EzBD,EAAQC,aAAU,EAClB,IAEgCc,EAF5By1D,GAE4Bz1D,EAFkBX,EAAQ,QAGxCW,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAAIy4D,EAAiB,WACjB,SAASA,KACT,IAAI1T,EAAS0T,EAAe/oC,UAoB5B,OAnBAq1B,EAAO2U,iBAAmB,SAASqd,GAC/Bz2E,KAAKy2E,cAAgBA,GAEzBhyB,EAAOkT,OAAS,WACZ,GAAK33D,KAAKy2E,cAGV,OAAOz2E,KAAK02E,gBAAkB,GAAK12E,KAAKy2E,cAAcE,gBAAgB,EAAG32E,KAAKy2E,cAAcrY,YAAc,IAE9G3Z,EAAOiyB,cAAgB,WACnB,IAAIxkC,EAAQlyC,KAAKy2E,cAAc1B,cAC/B,OAAO,IAAM7iC,EAAM3tC,UAAYvE,KAAK42E,cAAc1kC,IAEtDuS,EAAOmyB,cAAgB,SAAS1kC,GAC5B,OAAOA,EAAMl6B,QAAO,SAAS6+D,EAAI9/C,GAE7B,OAAiC,IADpBA,EAAKg9C,OACJn8C,QAAQ,UAGvBugC,EAtBU,GAwBrBhD,EAAqBv2D,QAAQ6nD,aAAa,QAAS0R,GACnD,IAAIv4D,EAAWu4D,EACfx5D,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCCnCzBD,EAAQC,aAAU,EAqBlB,IAuBIgB,EAvBa,SAAS8kD,GACtB,IAAIivB,EAAQjvB,EAAMR,OAAO,SACzB,OAAO,SAASpgD,EAAMouC,GAClB,IAAIkoB,EAAMloB,EAAMkoB,IAAI9xD,QAChBwuE,EAAkB1c,EAAI,GAC1B0c,EAAgB/C,OAAS+C,EAAgB/C,OAAOgD,QAAQ,OAAQ,IAChE,IAzBa7jB,EAyBT8jB,EAAuBF,EAAgB/C,OAAO9H,MAAM,aACpDgL,EAASD,GArBrB,SAAmBlzE,GACf,IAAIw/B,EAAQx/B,EAAK+8D,aAAa,SAC9B,GAAIv9B,EAAO,CACP,IAAI4zC,EAAQ5zC,EAAMyzC,QAAQ,OAAQ,IAAI9K,MAAM,cAC5C,OAAOiL,EAAQA,EAAM,GAAK,EAAI,EAE9B,OAAO,EAe8BC,CAAUrzE,GAC/C,OAAKkzE,IAAwB,IAAUC,GAGvCH,EAAgB/C,OAAS+C,EAAgB/C,OAAOqD,UAAUJ,EAAqB,GAAGzyE,OAAQuyE,EAAgB/C,OAAOxvE,QAfzH,SAA2B8yE,GACvB,IAAIC,EAAmBD,EAAWA,EAAW9yE,OAAS,GACtD+yE,EAAiBvD,OAASuD,EAAiBvD,OAAO9N,OAc9CsR,CAAkBnd,GAClBA,EAAI/1D,KAAK,CACL0vE,OAAQ,KACRyD,WAAY,CACRC,MAnCKvkB,EAmCa8jB,EAlCjB9jB,EAAQ,GACP+Y,MAAM,SAAW,UAAY,UAkC/BgL,OAAQA,KAGT,IAAItD,EAAMvZ,IAXNloB,IAenBvzC,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC,S,kCC9CzBD,EAAQC,aAAU,EAClB,IAAIC,EAAYC,EAAuBC,EAAQ,KAC3CE,EAAUF,EAAQ,IAClBokD,EAASrkD,EAAuBC,EAAQ,MACxC24E,EAAQ54E,EAAuBC,EAAQ,MACvC25C,EAAe55C,EAAuBC,EAAQ,KAC9C44E,EAAO54E,EAAQ,KACf2jB,EAAY3jB,EAAQ,IACpByH,EAAW1H,EAAuBC,EAAQ,KAC1C8N,EAAU9N,EAAQ,IAClBoO,EAAWrO,EAAuBC,EAAQ,MAC1CI,EAAWL,EAAuBC,EAAQ,KAE9C,SAASD,EAAuBY,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAAIk4E,EAAmBl/B,EAAa95C,QAAQg5E,iBAuHxCh4E,EApHa,WACb,SAASi4E,EAAW9yB,EAAgBC,GAChChlD,KAAKmiE,gBAAkBpd,EACvB/kD,KAAK83E,iBAAmB9yB,EACxBhlD,KAAK+3E,eAET,IAAItzB,EAASozB,EAAWzoD,UA4GxB,OA3GAq1B,EAAOszB,aAAe,WAClB,IAAIhzB,EAAiB/kD,KAAKmiE,gBACtB3/D,GAAa,EAAI3D,EAAUD,SAAS,SAAS2G,SAXtC,iBAW6DqG,SAASm5C,EAAe7yC,YAC5F8yC,EAAchlD,KAAKilD,kBACvB,OAAOF,EAAe/wC,iBAAiBxR,EAAY2gD,EAAOvkD,QAASomD,IAEvEP,EAAOuzB,eAAiB,WACpBh4E,KAAKmjD,OAAO9yC,QAEhBo0C,EAAOwzB,kBAAoB,SAASpwE,GAChCA,EAAEiJ,UAAUonE,mBAAmB,SAAUl4E,KAAKg4E,eAAe/0E,KAAKjD,QAEtEykD,EAAO0zB,eAAiB,WACpB,IAAIC,GAAe,EAAIvrE,EAAQkU,cAAe,EAAIlU,EAAQwrE,0BAA4B,KACtF,MAAO,UAAYl5E,EAASP,QAAQiC,OAAOC,YAAc,OAASs3E,GAEtE3zB,EAAOQ,gBAAkB,WACrB,IAAI19C,EAAQvH,KACZ,OAAO,EAAIf,EAAQc,QAAQ,CACvB66B,cAAe,SAAS/yB,GACpBN,EAAM47C,OAASt7C,EAAEiJ,UACjBvJ,EAAM47C,OAAOz7C,GAAG,UAAU,WACtBH,EAAMkf,SAASS,YAEnB3f,EAAM47C,OAAOz7C,GAAG,SAAS,WACrBH,EAAMmwE,MAAMlxC,YAGpB6e,gBAAgB,EAChBpkD,mBAAmB,EACnBq3E,iBAAiB,EACjB1yB,WAAY5lD,KAAKm4E,iBACjBp2C,gBAAiB,SAASmjB,GACtB,IAAIqzB,GAAiB,EAAI15E,EAAUD,SAAS,SAASgN,SAASs5C,GAC9D39C,EAAMixE,YAAYD,EAAgB,CAC9BE,iBAAkB,SAAS1hD,GACvB,IAAIjmB,EAAYimB,EAAKjmB,UACjB+oC,EAAY9iB,EAAK8iB,UACjB9xC,EAAQgvB,EAAKhvB,MACjBR,EAAMmxE,mBAAmB5nE,EAAW+oC,GACpCtyC,EAAM8I,KAAKS,EAAU9O,OAAO,YAAa+F,IAE7C4wE,cAAe,SAASr2E,GAChB,WAAaA,EAAKs2E,WAClBt2E,EAAKovB,eAAgB,EAAIzyB,EAAQc,SAAQ,EAAM,GAAIuC,EAAKovB,cAAe,CACnEkJ,cAAerzB,EAAM0wE,kBAAkBh1E,KAAKsE,UAMhEsxE,aAAc,CAAC,CACXrjB,QAAS,SACT5+C,SAAU,QACV0sD,OAAQ,WACRtiE,QAAS,CACL45B,cAAe56B,KAAKi4E,kBAAkBh1E,KAAKjD,MAC3CkD,KAAMsD,EAAS5H,QAAQkI,OAAO,MAC9Bq7B,QAAS,SAASjH,GACd,IAAInzB,EAAQmzB,EAAMnzB,MAClBR,EAAM8I,KAAK9I,EAAMmwE,MAAM11E,OAAO,YAAa+F,MAGpD,CACCytD,QAAS,SACT5+C,SAAU,QACV0sD,OAAQ,WACRtiE,QAAS,CACL45B,cAAe56B,KAAKi4E,kBAAkBh1E,KAAKjD,MAC3CkD,KAAMsD,EAAS5H,QAAQkI,OAAO,UAC9Bq7B,QAAS,WACL56B,EAAM47C,OAAO9yC,YAI1BrQ,KAAK83E,mBAEZrzB,EAAOi0B,mBAAqB,SAAS5nE,EAAW+oC,GAC5C,GAAI1sC,EAASvO,QAAQ2pB,MAAQ6uB,SAASjqC,EAASvO,QAAQ2f,UAAY,GAAI,CACnE,IAAI6a,EAAStoB,EAAUgoE,UAAUj/B,GAC7Bk/B,EAAgBnB,IAChBx+C,EAAOlnB,WAAW5G,KAAKytE,GAAex0E,SACtC,EAAIozE,EAAKqB,wBAIrBv0B,EAAO+zB,YAAc,SAASh2E,EAAYxB,GACtCwB,EAAW+C,SA/FF,sBAgGTvF,KAAK03E,MAAQ13E,KAAKmiE,gBAAgBnuD,iBAAiBxR,EAAYk1E,EAAM94E,QAASoC,IAElFyjD,EAAO3mC,KAAO,SAASm7D,GACnB,IAAIj5E,KAAKmjD,OAAOnhD,OAAO,WAAvB,CAGAhC,KAAKymB,SAAW,IAAI/D,EAAUgE,SAC9B,IAAI+3C,GAAa,EAAIx/D,EAAQc,QAAQ,GAAIk5E,GAGzC,OAFAj5E,KAAK03E,MAAM11E,OAAOy8D,GAClBz+D,KAAKmjD,OAAOrlC,OACL9d,KAAKymB,SAASU,YAEzBs9B,EAAOp0C,KAAO,SAASw1D,EAAU99D,GAC7B/H,KAAKymB,SAASK,QAAQ++C,EAAU99D,GAChC/H,KAAKmjD,OAAO9yC,QAEhBo0C,EAAOka,YAAc,SAASn6D,EAAY42D,GACtC,OAAOp7D,KAAKmjD,OAAOnhD,OAAO4D,MAAM5F,KAAKmjD,OAAQt9C,YAE1CgyE,EAlHM,GAqHjBl5E,EAAQC,QAAUgB,EAClBwG,EAAOzH,QAAUA,EAAQC","file":"static/js/main~86f28af1.40afa985.chunk.js","sourcesContent":["/**\r\n * DevExtreme (ui/hierarchical_collection/ui.hierarchical_collection_widget.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _icon = require(\"../../core/utils/icon\");\r\nvar _ui = _interopRequireDefault(require(\"./ui.data_adapter\"));\r\nvar _uiCollection_widget = _interopRequireDefault(require(\"../collection/ui.collection_widget.edit\"));\r\nvar _bindable_template = require(\"../../core/templates/bindable_template\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _common = require(\"../../core/utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar DISABLED_STATE_CLASS = \"dx-state-disabled\";\r\nvar HierarchicalCollectionWidget = _uiCollection_widget.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n keyExpr: \"id\",\r\n displayExpr: \"text\",\r\n selectedExpr: \"selected\",\r\n disabledExpr: \"disabled\",\r\n itemsExpr: \"items\",\r\n hoverStateEnabled: true,\r\n parentIdExpr: \"parentId\",\r\n expandedExpr: \"expanded\"\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return \"desktop\" === _devices.default.real().deviceType && !_devices.default.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }])\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initAccessors();\r\n this._initDataAdapter();\r\n this._initDynamicTemplates()\r\n },\r\n _initDataSource: function() {\r\n this.callBase();\r\n this._dataSource && this._dataSource.paginate(false)\r\n },\r\n _initDataAdapter: function() {\r\n var accessors = this._createDataAdapterAccessors();\r\n this._dataAdapter = new _ui.default((0, _extend.extend)({\r\n dataAccessors: {\r\n getters: accessors.getters,\r\n setters: accessors.setters\r\n },\r\n items: this.option(\"items\")\r\n }, this._getDataAdapterOptions()))\r\n },\r\n _getDataAdapterOptions: _common.noop,\r\n _initDynamicTemplates: function() {\r\n var that = this;\r\n this._templateManager.addDefaultTemplates({\r\n item: new _bindable_template.BindableTemplate(function($container, itemData) {\r\n $container.html(itemData.html).append(this._getIconContainer(itemData)).append(this._getTextContainer(itemData)).append(this._getPopoutContainer(itemData));\r\n that._addContentClasses(itemData, $container.parent())\r\n }.bind(this), [\"text\", \"html\", \"items\", \"icon\"], this.option(\"integrationOptions.watchMethod\"), {\r\n text: this._displayGetter,\r\n items: this._itemsGetter\r\n })\r\n })\r\n },\r\n _getIconContainer: function(itemData) {\r\n return itemData.icon ? (0, _icon.getImageContainer)(itemData.icon) : void 0\r\n },\r\n _getTextContainer: function(itemData) {\r\n return (0, _renderer.default)(\"\").text(itemData.text)\r\n },\r\n _getPopoutContainer: _common.noop,\r\n _addContentClasses: _common.noop,\r\n _initAccessors: function() {\r\n var that = this;\r\n (0, _iterator.each)(this._getAccessors(), function(_, accessor) {\r\n that._compileAccessor(accessor)\r\n });\r\n this._compileDisplayGetter()\r\n },\r\n _getAccessors: function() {\r\n return [\"key\", \"selected\", \"items\", \"disabled\", \"parentId\", \"expanded\"]\r\n },\r\n _getChildNodes: function(node) {\r\n var that = this;\r\n var arr = [];\r\n (0, _iterator.each)(node.internalFields.childrenKeys, function(_, key) {\r\n var childNode = that._dataAdapter.getNodeByKey(key);\r\n arr.push(childNode)\r\n });\r\n return arr\r\n },\r\n _hasChildren: function(node) {\r\n return node && node.internalFields.childrenKeys.length\r\n },\r\n _compileAccessor: function(optionName) {\r\n var getter = \"_\" + optionName + \"Getter\";\r\n var setter = \"_\" + optionName + \"Setter\";\r\n var optionExpr = this.option(optionName + \"Expr\");\r\n if (!optionExpr) {\r\n this[getter] = _common.noop;\r\n this[setter] = _common.noop;\r\n return\r\n } else {\r\n if ((0, _type.isFunction)(optionExpr)) {\r\n this[setter] = function(obj, value) {\r\n obj[optionExpr()] = value\r\n };\r\n this[getter] = function(obj) {\r\n return obj[optionExpr()]\r\n };\r\n return\r\n }\r\n }\r\n this[getter] = (0, _data.compileGetter)(optionExpr);\r\n this[setter] = (0, _data.compileSetter)(optionExpr)\r\n },\r\n _createDataAdapterAccessors: function() {\r\n var that = this;\r\n var accessors = {\r\n getters: {},\r\n setters: {}\r\n };\r\n (0, _iterator.each)(this._getAccessors(), function(_, accessor) {\r\n var getterName = \"_\" + accessor + \"Getter\";\r\n var setterName = \"_\" + accessor + \"Setter\";\r\n var newAccessor = \"parentId\" === accessor ? \"parentKey\" : accessor;\r\n accessors.getters[newAccessor] = that[getterName];\r\n accessors.setters[newAccessor] = that[setterName]\r\n });\r\n accessors.getters.display = !this._displayGetter ? function(itemData) {\r\n return itemData.text\r\n } : this._displayGetter;\r\n return accessors\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this._addWidgetClass()\r\n },\r\n _addWidgetClass: function() {\r\n this._focusTarget().addClass(this._widgetClass())\r\n },\r\n _widgetClass: _common.noop,\r\n _renderItemFrame: function(index, itemData) {\r\n var $itemFrame = this.callBase.apply(this, arguments);\r\n $itemFrame.toggleClass(DISABLED_STATE_CLASS, !!this._disabledGetter(itemData));\r\n return $itemFrame\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"displayExpr\":\r\n case \"keyExpr\":\r\n this._initAccessors();\r\n this._initDynamicTemplates();\r\n this.repaint();\r\n break;\r\n case \"itemsExpr\":\r\n case \"selectedExpr\":\r\n case \"disabledExpr\":\r\n case \"expandedExpr\":\r\n case \"parentIdExpr\":\r\n this._initAccessors();\r\n this._initDataAdapter();\r\n this.repaint();\r\n break;\r\n case \"items\":\r\n this._initDataAdapter();\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nvar _default = HierarchicalCollectionWidget;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.sorting.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.sorting_mixin\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _index = require(\"../../events/utils/index\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar COLUMN_HEADERS_VIEW_NAMESPACE = \"dxDataGridColumnHeadersView\";\r\nvar ColumnHeadersViewSortingExtender = (0, _extend.extend)({}, _uiGrid_core.default, {\r\n _createRow: function(row) {\r\n var _this = this;\r\n var $row = this.callBase(row);\r\n if (\"header\" === row.rowType) {\r\n _events_engine.default.on($row, (0, _index.addNamespace)(_click.name, COLUMN_HEADERS_VIEW_NAMESPACE), \"td\", this.createAction(function(e) {\r\n _this._processHeaderAction(e.event, $row)\r\n }))\r\n }\r\n return $row\r\n },\r\n _processHeaderAction: function(event, $row) {\r\n if ((0, _renderer.default)(event.currentTarget).parent().get(0) !== $row.get(0)) {\r\n return\r\n }\r\n var that = this;\r\n var keyName = null;\r\n var $cellElementFromEvent = (0, _renderer.default)(event.currentTarget);\r\n var rowIndex = $cellElementFromEvent.parent().index();\r\n var columnIndex = -1;\r\n [].slice.call(that.getCellElements(rowIndex)).some(function($cellElement, index) {\r\n if ($cellElement === $cellElementFromEvent.get(0)) {\r\n columnIndex = index;\r\n return true\r\n }\r\n });\r\n var visibleColumns = that._columnsController.getVisibleColumns(rowIndex);\r\n var column = visibleColumns[columnIndex];\r\n var editingController = that.getController(\"editing\");\r\n var editingMode = that.option(\"editing.mode\");\r\n var isCellEditing = editingController && editingController.isEditing() && (\"batch\" === editingMode || \"cell\" === editingMode);\r\n if (isCellEditing || !that._isSortableElement((0, _renderer.default)(event.target))) {\r\n return\r\n }\r\n if (column && !(0, _type.isDefined)(column.groupIndex) && !column.command) {\r\n if (event.shiftKey) {\r\n keyName = \"shift\"\r\n } else {\r\n if (event.ctrlKey) {\r\n keyName = \"ctrl\"\r\n }\r\n }\r\n setTimeout(function() {\r\n that._columnsController.changeSortOrder(column.index, keyName)\r\n })\r\n }\r\n },\r\n _renderCellContent: function($cell, options) {\r\n var that = this;\r\n var column = options.column;\r\n if (!column.command && \"header\" === options.rowType) {\r\n that._applyColumnState({\r\n name: \"sort\",\r\n rootElement: $cell,\r\n column: column,\r\n showColumnLines: that.option(\"showColumnLines\")\r\n })\r\n }\r\n that.callBase($cell, options)\r\n },\r\n _columnOptionChanged: function(e) {\r\n var changeTypes = e.changeTypes;\r\n if (1 === changeTypes.length && changeTypes.sorting) {\r\n this._updateIndicators(\"sort\");\r\n return\r\n }\r\n this.callBase(e)\r\n },\r\n optionChanged: function(args) {\r\n var that = this;\r\n switch (args.name) {\r\n case \"sorting\":\r\n that._invalidate();\r\n args.handled = true;\r\n break;\r\n default:\r\n that.callBase(args)\r\n }\r\n }\r\n});\r\nvar HeaderPanelSortingExtender = (0, _extend.extend)({}, _uiGrid_core.default, {\r\n _createGroupPanelItem: function($rootElement, groupColumn) {\r\n var that = this;\r\n var $item = that.callBase.apply(that, arguments);\r\n _events_engine.default.on($item, (0, _index.addNamespace)(_click.name, \"dxDataGridHeaderPanel\"), that.createAction(function() {\r\n that._processGroupItemAction(groupColumn.index)\r\n }));\r\n that._applyColumnState({\r\n name: \"sort\",\r\n rootElement: $item,\r\n column: {\r\n alignment: that.option(\"rtlEnabled\") ? \"right\" : \"left\",\r\n allowSorting: groupColumn.allowSorting,\r\n sortOrder: \"desc\" === groupColumn.sortOrder ? \"desc\" : \"asc\"\r\n },\r\n showColumnLines: true\r\n });\r\n return $item\r\n },\r\n _processGroupItemAction: function(groupColumnIndex) {\r\n var _this2 = this;\r\n setTimeout(function() {\r\n return _this2.getController(\"columns\").changeSortOrder(groupColumnIndex)\r\n })\r\n },\r\n optionChanged: function(args) {\r\n var that = this;\r\n switch (args.name) {\r\n case \"sorting\":\r\n that._invalidate();\r\n args.handled = true;\r\n break;\r\n default:\r\n that.callBase(args)\r\n }\r\n }\r\n});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n sorting: {\r\n mode: \"single\",\r\n ascendingText: _message.default.format(\"dxDataGrid-sortingAscendingText\"),\r\n descendingText: _message.default.format(\"dxDataGrid-sortingDescendingText\"),\r\n clearText: _message.default.format(\"dxDataGrid-sortingClearText\"),\r\n showSortIndexes: true\r\n }\r\n }\r\n },\r\n extenders: {\r\n views: {\r\n columnHeadersView: ColumnHeadersViewSortingExtender,\r\n headerPanel: HeaderPanelSortingExtender\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.sorting_mixin.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar SORT_CLASS = \"dx-sort\";\r\nvar SORT_NONE_CLASS = \"dx-sort-none\";\r\nvar SORTUP_CLASS = \"dx-sort-up\";\r\nvar SORTDOWN_CLASS = \"dx-sort-down\";\r\nvar SORT_INDEX_CLASS = \"dx-sort-index\";\r\nvar SORT_INDEX_ICON_CLASS = \"dx-sort-index-icon\";\r\nvar HEADERS_ACTION_CLASS = \"action\";\r\nvar _default = {\r\n _applyColumnState: function(options) {\r\n var that = this;\r\n var ariaSortState;\r\n var $sortIndicator;\r\n var sortingMode = that.option(\"sorting.mode\");\r\n var rootElement = options.rootElement;\r\n var column = options.column;\r\n var $indicatorsContainer = that._getIndicatorContainer(rootElement);\r\n if (\"sort\" === options.name) {\r\n rootElement.find(\".\" + SORT_CLASS).remove();\r\n !$indicatorsContainer.children().length && $indicatorsContainer.remove();\r\n var isSortingAllowed = \"none\" !== sortingMode && column.allowSorting;\r\n if (!(0, _type.isDefined)(column.groupIndex) && (isSortingAllowed || (0, _type.isDefined)(column.sortOrder))) {\r\n ariaSortState = \"asc\" === column.sortOrder ? \"ascending\" : \"descending\";\r\n $sortIndicator = that.callBase(options).toggleClass(SORTUP_CLASS, \"asc\" === column.sortOrder).toggleClass(SORTDOWN_CLASS, \"desc\" === column.sortOrder);\r\n var hasSeveralSortIndexes = that.getController && !!that.getController(\"columns\").columnOption(\"sortIndex:1\");\r\n if (hasSeveralSortIndexes && that.option(\"sorting.showSortIndexes\") && column.sortIndex >= 0) {\r\n (0, _renderer.default)(\"\").addClass(SORT_INDEX_ICON_CLASS).text(column.sortIndex + 1).appendTo($sortIndicator);\r\n $sortIndicator.addClass(SORT_INDEX_CLASS)\r\n }\r\n if (isSortingAllowed) {\r\n options.rootElement.addClass(that.addWidgetPrefix(HEADERS_ACTION_CLASS))\r\n }\r\n }\r\n if (!(0, _type.isDefined)(column.sortOrder)) {\r\n that.setAria(\"sort\", \"none\", rootElement)\r\n } else {\r\n that.setAria(\"sort\", ariaSortState, rootElement)\r\n }\r\n return $sortIndicator\r\n } else {\r\n return that.callBase(options)\r\n }\r\n },\r\n _getIndicatorClassName: function(name) {\r\n if (\"sort\" === name) {\r\n return SORT_CLASS\r\n } else {\r\n if (\"sortIndex\" === name) {\r\n return SORT_INDEX_ICON_CLASS\r\n }\r\n }\r\n return this.callBase(name)\r\n },\r\n _renderIndicator: function(options) {\r\n var column = options.column;\r\n var $container = options.container;\r\n var $indicator = options.indicator;\r\n if (\"sort\" === options.name) {\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n if (!(0, _type.isDefined)(column.sortOrder)) {\r\n $indicator && $indicator.addClass(SORT_NONE_CLASS)\r\n }\r\n if ($container.children().length && (!rtlEnabled && \"left\" === options.columnAlignment || rtlEnabled && \"right\" === options.columnAlignment)) {\r\n $container.prepend($indicator);\r\n return\r\n }\r\n }\r\n this.callBase(options)\r\n },\r\n _updateIndicator: function($cell, column, indicatorName) {\r\n if (\"sort\" === indicatorName && (0, _type.isDefined)(column.groupIndex)) {\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _getIndicatorElements: function($cell, returnAll) {\r\n var $indicatorElements = this.callBase($cell);\r\n return returnAll ? $indicatorElements : $indicatorElements && $indicatorElements.not(\".\" + SORT_NONE_CLASS)\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.rows.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _style = require(\"../../core/utils/style\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _string = require(\"../../core/utils/string\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _uiGrid_core2 = require(\"./ui.grid_core.columns_view\");\r\nvar _ui = _interopRequireDefault(require(\"../scroll_view/ui.scrollable\"));\r\nvar _remove_event = _interopRequireDefault(require(\"../../core/remove_event\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar ROWS_VIEW_CLASS = \"rowsview\";\r\nvar CONTENT_CLASS = \"content\";\r\nvar NOWRAP_CLASS = \"nowrap\";\r\nvar GROUP_ROW_CLASS = \"dx-group-row\";\r\nvar GROUP_CELL_CLASS = \"dx-group-cell\";\r\nvar DATA_ROW_CLASS = \"dx-data-row\";\r\nvar FREE_SPACE_CLASS = \"dx-freespace-row\";\r\nvar ROW_LINES_CLASS = \"dx-row-lines\";\r\nvar COLUMN_LINES_CLASS = \"dx-column-lines\";\r\nvar ROW_ALTERNATION_CLASS = \"dx-row-alt\";\r\nvar LAST_ROW_BORDER = \"dx-last-row-border\";\r\nvar EMPTY_CLASS = \"dx-empty\";\r\nvar ROW_INSERTED_ANIMATION_CLASS = \"row-inserted-animation\";\r\nvar LOADPANEL_HIDE_TIMEOUT = 200;\r\n\r\nfunction getMaxHorizontalScrollOffset(scrollable) {\r\n return scrollable ? scrollable.scrollWidth() - scrollable.clientWidth() : 0\r\n}\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n hoverStateEnabled: false,\r\n scrolling: {\r\n useNative: \"auto\"\r\n },\r\n loadPanel: {\r\n enabled: \"auto\",\r\n text: _message.default.format(\"Loading\"),\r\n width: 200,\r\n height: 90,\r\n showIndicator: true,\r\n indicatorSrc: \"\",\r\n showPane: true\r\n },\r\n rowTemplate: null,\r\n columnAutoWidth: false,\r\n noDataText: _message.default.format(\"dxDataGrid-noDataText\"),\r\n wordWrapEnabled: false,\r\n showColumnLines: true,\r\n showRowLines: false,\r\n rowAlternationEnabled: false,\r\n activeStateEnabled: false,\r\n twoWayBindingEnabled: true\r\n }\r\n },\r\n views: {\r\n rowsView: _uiGrid_core2.ColumnsView.inherit(function() {\r\n var defaultCellTemplate = function($container, options) {\r\n var isDataTextEmpty = (0, _string.isEmpty)(options.text) && \"data\" === options.rowType;\r\n var text = options.text;\r\n var container = $container.get(0);\r\n if (isDataTextEmpty) {\r\n _uiGrid_core.default.setEmptyText($container)\r\n } else {\r\n if (options.column.encodeHtml) {\r\n container.textContent = text\r\n } else {\r\n container.innerHTML = text\r\n }\r\n }\r\n };\r\n var getScrollableBottomPadding = function(that) {\r\n var scrollable = that.getScrollable();\r\n return scrollable ? Math.ceil(parseFloat(scrollable.$content().css(\"paddingBottom\"))) : 0\r\n };\r\n return {\r\n _getDefaultTemplate: function(column) {\r\n switch (column.command) {\r\n case \"empty\":\r\n return function(container) {\r\n container.html(\" \")\r\n };\r\n default:\r\n return defaultCellTemplate\r\n }\r\n },\r\n _getDefaultGroupTemplate: function(column) {\r\n var that = this;\r\n var summaryTexts = that.option(\"summary.texts\");\r\n return function($container, options) {\r\n var data = options.data;\r\n var text = options.column.caption + \": \" + options.text;\r\n var container = $container.get(0);\r\n if (options.summaryItems && options.summaryItems.length) {\r\n text += \" \" + _uiGrid_core.default.getGroupRowSummaryText(options.summaryItems, summaryTexts)\r\n }\r\n if (data) {\r\n if (options.groupContinuedMessage && options.groupContinuesMessage) {\r\n text += \" (\" + options.groupContinuedMessage + \". \" + options.groupContinuesMessage + \")\"\r\n } else {\r\n if (options.groupContinuesMessage) {\r\n text += \" (\" + options.groupContinuesMessage + \")\"\r\n } else {\r\n if (options.groupContinuedMessage) {\r\n text += \" (\" + options.groupContinuedMessage + \")\"\r\n }\r\n }\r\n }\r\n }\r\n $container.addClass(GROUP_CELL_CLASS);\r\n if (column.encodeHtml) {\r\n container.textContent = text\r\n } else {\r\n container.innerHTML = text\r\n }\r\n }\r\n },\r\n _update: function() {},\r\n _getCellTemplate: function(options) {\r\n var that = this;\r\n var column = options.column;\r\n var template;\r\n if (\"group\" === options.rowType && (0, _type.isDefined)(column.groupIndex) && !column.showWhenGrouped && !column.command) {\r\n template = column.groupCellTemplate || {\r\n allowRenderToDetachedContainer: true,\r\n render: that._getDefaultGroupTemplate(column)\r\n }\r\n } else {\r\n if ((\"data\" === options.rowType || column.command) && column.cellTemplate) {\r\n template = column.cellTemplate\r\n } else {\r\n template = {\r\n allowRenderToDetachedContainer: true,\r\n render: that._getDefaultTemplate(column)\r\n }\r\n }\r\n }\r\n return template\r\n },\r\n _createRow: function(row) {\r\n var $row = this.callBase(row);\r\n if (row) {\r\n var isGroup = \"group\" === row.rowType;\r\n var isDataRow = \"data\" === row.rowType;\r\n isDataRow && $row.addClass(DATA_ROW_CLASS);\r\n isDataRow && this.option(\"showRowLines\") && $row.addClass(ROW_LINES_CLASS);\r\n this.option(\"showColumnLines\") && $row.addClass(COLUMN_LINES_CLASS);\r\n if (false === row.visible) {\r\n $row.hide()\r\n }\r\n if (isGroup) {\r\n $row.addClass(GROUP_ROW_CLASS);\r\n var isRowExpanded = row.isExpanded;\r\n this.setAria(\"role\", \"row\", $row);\r\n this.setAria(\"expanded\", (0, _type.isDefined)(isRowExpanded) && isRowExpanded.toString(), $row)\r\n }\r\n }\r\n return $row\r\n },\r\n _rowPrepared: function($row, rowOptions, row) {\r\n var _this = this;\r\n if (\"data\" === rowOptions.rowType) {\r\n if (this.option(\"rowAlternationEnabled\")) {\r\n this._isAltRow(row) && $row.addClass(ROW_ALTERNATION_CLASS);\r\n rowOptions.watch && rowOptions.watch(function() {\r\n return _this._isAltRow(row)\r\n }, function(value) {\r\n $row.toggleClass(ROW_ALTERNATION_CLASS, value)\r\n })\r\n }\r\n this._setAriaRowIndex(rowOptions, $row);\r\n rowOptions.watch && rowOptions.watch(function() {\r\n return rowOptions.rowIndex\r\n }, function() {\r\n return _this._setAriaRowIndex(rowOptions, $row)\r\n })\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _setAriaRowIndex: function(row, $row) {\r\n var component = this.component;\r\n var isPagerMode = \"standard\" === component.option(\"scrolling.mode\") && \"virtual\" !== component.option(\"scrolling.rowRenderingMode\");\r\n var rowIndex = row.rowIndex + 1;\r\n if (isPagerMode) {\r\n rowIndex = component.pageIndex() * component.pageSize() + rowIndex\r\n } else {\r\n rowIndex += this._dataController.getRowIndexOffset()\r\n }\r\n this.setAria(\"rowindex\", rowIndex, $row)\r\n },\r\n _afterRowPrepared: function(e) {\r\n var _this2 = this;\r\n var arg = e.args[0];\r\n var dataController = this._dataController;\r\n var row = dataController.getVisibleRows()[arg.rowIndex];\r\n var watch = this.option(\"integrationOptions.watchMethod\");\r\n if (!arg.data || \"data\" !== arg.rowType || arg.isNewRow || !this.option(\"twoWayBindingEnabled\") || !watch || !row) {\r\n return\r\n }\r\n var dispose = watch(function() {\r\n return dataController.generateDataValues(arg.data, arg.columns)\r\n }, function() {\r\n dataController.repaintRows([row.rowIndex], _this2.option(\"repaintChangesOnly\"))\r\n }, {\r\n deep: true,\r\n skipImmediate: true\r\n });\r\n _events_engine.default.on(arg.rowElement, _remove_event.default, dispose)\r\n },\r\n _renderScrollable: function(force) {\r\n var that = this;\r\n var $element = that.element();\r\n if (!$element.children().length) {\r\n $element.append(\"
\")\r\n }\r\n if (force || !that._loadPanel) {\r\n that._renderLoadPanel($element, $element.parent(), that._dataController.isLocalStore())\r\n }\r\n if ((force || !that.getScrollable()) && that._dataController.isLoaded()) {\r\n var columns = that.getColumns();\r\n var allColumnsHasWidth = true;\r\n for (var i = 0; i < columns.length; i++) {\r\n if (!columns[i].width && !columns[i].minWidth) {\r\n allColumnsHasWidth = false;\r\n break\r\n }\r\n }\r\n if (that.option(\"columnAutoWidth\") || that._hasHeight || allColumnsHasWidth || that._columnsController._isColumnFixing()) {\r\n that._renderScrollableCore($element)\r\n }\r\n }\r\n },\r\n _handleScroll: function(e) {\r\n var that = this;\r\n var rtlEnabled = that.option(\"rtlEnabled\");\r\n that._isScrollByEvent = !!e.event;\r\n that._scrollTop = e.scrollOffset.top;\r\n that._scrollLeft = e.scrollOffset.left;\r\n if (rtlEnabled) {\r\n this._scrollRight = getMaxHorizontalScrollOffset(e.component) - this._scrollLeft\r\n }\r\n that.scrollChanged.fire(e.scrollOffset, that.name)\r\n },\r\n _renderScrollableCore: function($element) {\r\n var that = this;\r\n var dxScrollableOptions = that._createScrollableOptions();\r\n var scrollHandler = that._handleScroll.bind(that);\r\n dxScrollableOptions.onScroll = scrollHandler;\r\n dxScrollableOptions.onStop = scrollHandler;\r\n that._scrollable = that._createComponent($element, _ui.default, dxScrollableOptions);\r\n that._scrollableContainer = that._scrollable && that._scrollable._$container\r\n },\r\n _renderLoadPanel: _uiGrid_core.default.renderLoadPanel,\r\n _renderContent: function(contentElement, tableElement) {\r\n contentElement.empty().append(tableElement);\r\n return this._findContentElement()\r\n },\r\n _updateContent: function(newTableElement, change) {\r\n var that = this;\r\n var tableElement = that.getTableElement();\r\n var contentElement = that._findContentElement();\r\n var changeType = change && change.changeType;\r\n var executors = [];\r\n var highlightChanges = this.option(\"highlightChanges\");\r\n var rowInsertedClass = this.addWidgetPrefix(ROW_INSERTED_ANIMATION_CLASS);\r\n switch (changeType) {\r\n case \"update\":\r\n (0, _iterator.each)(change.rowIndices, function(index, rowIndex) {\r\n var $newRowElement = that._getRowElements(newTableElement).eq(index);\r\n var changeType = change.changeTypes && change.changeTypes[index];\r\n var item = change.items && change.items[index];\r\n executors.push(function() {\r\n var $rowsElement = that._getRowElements();\r\n var $rowElement = $rowsElement.eq(rowIndex);\r\n switch (changeType) {\r\n case \"update\":\r\n if (item) {\r\n var columnIndices = change.columnIndices && change.columnIndices[index];\r\n if ((0, _type.isDefined)(item.visible) && item.visible !== $rowElement.is(\":visible\")) {\r\n $rowElement.toggle(item.visible)\r\n } else {\r\n if (columnIndices) {\r\n that._updateCells($rowElement, $newRowElement, columnIndices)\r\n } else {\r\n $rowElement.replaceWith($newRowElement)\r\n }\r\n }\r\n }\r\n break;\r\n case \"insert\":\r\n if (!$rowsElement.length) {\r\n if (tableElement) {\r\n var target = $newRowElement.is(\"tbody\") ? tableElement : tableElement.children(\"tbody\");\r\n $newRowElement.prependTo(target)\r\n }\r\n } else {\r\n if ($rowElement.length) {\r\n $newRowElement.insertBefore($rowElement)\r\n } else {\r\n $newRowElement.insertAfter($rowsElement.last())\r\n }\r\n }\r\n if (highlightChanges && change.isLiveUpdate) {\r\n $newRowElement.addClass(rowInsertedClass)\r\n }\r\n break;\r\n case \"remove\":\r\n $rowElement.remove()\r\n }\r\n })\r\n });\r\n (0, _iterator.each)(executors, function() {\r\n this()\r\n });\r\n newTableElement.remove();\r\n break;\r\n default:\r\n that.setTableElement(newTableElement);\r\n contentElement.addClass(that.addWidgetPrefix(CONTENT_CLASS));\r\n that._renderContent(contentElement, newTableElement)\r\n }\r\n },\r\n _createEmptyRow: function(className, isFixed, height) {\r\n var that = this;\r\n var $cell;\r\n var $row = that._createRow();\r\n var columns = isFixed ? this.getFixedColumns() : this.getColumns();\r\n $row.addClass(className).toggleClass(COLUMN_LINES_CLASS, that.option(\"showColumnLines\"));\r\n for (var i = 0; i < columns.length; i++) {\r\n $cell = that._createCell({\r\n column: columns[i],\r\n rowType: \"freeSpace\",\r\n columnIndex: i,\r\n columns: columns\r\n });\r\n (0, _type.isNumeric)(height) && $cell.css(\"height\", height);\r\n $row.append($cell)\r\n }\r\n that.setAria(\"role\", \"presentation\", $row);\r\n return $row\r\n },\r\n _appendEmptyRow: function($table, $emptyRow, location) {\r\n var $tBodies = this._getBodies($table);\r\n var isTableContainer = !$tBodies.length || $emptyRow.is(\"tbody\");\r\n var $container = isTableContainer ? $table : $tBodies;\r\n if (\"top\" === location) {\r\n $container.first().prepend($emptyRow);\r\n if (isTableContainer) {\r\n var $colgroup = $container.children(\"colgroup\");\r\n $container.prepend($colgroup)\r\n }\r\n } else {\r\n $container.last().append($emptyRow)\r\n }\r\n },\r\n _renderFreeSpaceRow: function($tableElement) {\r\n var $freeSpaceRowElement = this._createEmptyRow(FREE_SPACE_CLASS);\r\n $freeSpaceRowElement = this._wrapRowIfNeed($tableElement, $freeSpaceRowElement);\r\n this._appendEmptyRow($tableElement, $freeSpaceRowElement)\r\n },\r\n _checkRowKeys: function(options) {\r\n var that = this;\r\n var rows = that._getRows(options);\r\n var keyExpr = that._dataController.store() && that._dataController.store().key();\r\n keyExpr && rows.some(function(row) {\r\n if (\"data\" === row.rowType && void 0 === row.key) {\r\n that._dataController.fireError(\"E1046\", keyExpr);\r\n return true\r\n }\r\n })\r\n },\r\n _needUpdateRowHeight: function(itemsCount) {\r\n return itemsCount > 0 && !this._rowHeight\r\n },\r\n _getRowsHeight: function($tableElement) {\r\n var $rowElements = $tableElement.children(\"tbody\").children().not(\".dx-virtual-row\").not(\".\" + FREE_SPACE_CLASS);\r\n return $rowElements.toArray().reduce(function(sum, row) {\r\n return sum + (0, _position.getBoundingRect)(row).height\r\n }, 0)\r\n },\r\n _updateRowHeight: function() {\r\n var that = this;\r\n var $tableElement = that.getTableElement();\r\n var itemsCount = that._dataController.items().length;\r\n if ($tableElement && that._needUpdateRowHeight(itemsCount)) {\r\n var rowsHeight = that._getRowsHeight($tableElement);\r\n that._rowHeight = rowsHeight / itemsCount\r\n }\r\n },\r\n _findContentElement: function() {\r\n var $content = this.element();\r\n var scrollable = this.getScrollable();\r\n if ($content) {\r\n if (scrollable) {\r\n $content = scrollable.$content()\r\n }\r\n return $content.children().first()\r\n }\r\n },\r\n _getRowElements: function(tableElement) {\r\n var $rows = this.callBase(tableElement);\r\n return $rows && $rows.not(\".\" + FREE_SPACE_CLASS)\r\n },\r\n _getFreeSpaceRowElements: function($table) {\r\n var tableElements = $table || this.getTableElements();\r\n return tableElements && tableElements.children(\"tbody\").children(\".\" + FREE_SPACE_CLASS)\r\n },\r\n _getNoDataText: function() {\r\n return this.option(\"noDataText\")\r\n },\r\n _rowClick: function(e) {\r\n var item = this._dataController.items()[e.rowIndex] || {};\r\n this.executeAction(\"onRowClick\", (0, _extend.extend)({\r\n evaluate: function(expr) {\r\n var getter = (0, _data.compileGetter)(expr);\r\n return getter(item.data)\r\n }\r\n }, e, item))\r\n },\r\n _rowDblClick: function(e) {\r\n var item = this._dataController.items()[e.rowIndex] || {};\r\n this.executeAction(\"onRowDblClick\", (0, _extend.extend)({}, e, item))\r\n },\r\n _getColumnsCountBeforeGroups: function(columns) {\r\n for (var i = 0; i < columns.length; i++) {\r\n if (\"groupExpand\" === columns[i].type) {\r\n return i\r\n }\r\n }\r\n return 0\r\n },\r\n _getGroupCellOptions: function(options) {\r\n var columnsCountBeforeGroups = this._getColumnsCountBeforeGroups(options.columns);\r\n var columnIndex = (options.row.groupIndex || 0) + columnsCountBeforeGroups;\r\n return {\r\n columnIndex: columnIndex,\r\n colspan: options.columns.length - columnIndex - 1\r\n }\r\n },\r\n _renderCells: function($row, options) {\r\n if (\"group\" === options.row.rowType) {\r\n this._renderGroupedCells($row, options)\r\n } else {\r\n if (options.row.values) {\r\n this.callBase($row, options)\r\n }\r\n }\r\n },\r\n _renderGroupedCells: function($row, options) {\r\n var row = options.row;\r\n var expandColumn;\r\n var columns = options.columns;\r\n var rowIndex = row.rowIndex;\r\n var isExpanded;\r\n var groupCellOptions = this._getGroupCellOptions(options);\r\n for (var i = 0; i <= groupCellOptions.columnIndex; i++) {\r\n if (i === groupCellOptions.columnIndex && columns[i].allowCollapsing && \"infinite\" !== options.scrollingMode) {\r\n isExpanded = !!row.isExpanded;\r\n expandColumn = columns[i]\r\n } else {\r\n isExpanded = null;\r\n expandColumn = {\r\n command: \"expand\",\r\n cssClass: columns[i].cssClass\r\n }\r\n }\r\n this._renderCell($row, {\r\n value: isExpanded,\r\n row: row,\r\n rowIndex: rowIndex,\r\n column: expandColumn,\r\n columnIndex: i\r\n })\r\n }\r\n var groupColumnAlignment = (0, _position.getDefaultAlignment)(this.option(\"rtlEnabled\"));\r\n var groupColumn = (0, _extend.extend)({}, columns[groupCellOptions.columnIndex], {\r\n command: null,\r\n cssClass: null,\r\n width: null,\r\n showWhenGrouped: false,\r\n alignment: groupColumnAlignment\r\n });\r\n if (groupCellOptions.colspan > 1) {\r\n groupColumn.colspan = groupCellOptions.colspan\r\n }\r\n this._renderCell($row, {\r\n value: row.values[row.groupIndex],\r\n row: row,\r\n rowIndex: rowIndex,\r\n column: groupColumn,\r\n columnIndex: groupCellOptions.columnIndex\r\n })\r\n },\r\n _renderRows: function($table, options) {\r\n var that = this;\r\n var scrollingMode = that.option(\"scrolling.mode\");\r\n that.callBase($table, (0, _extend.extend)({\r\n scrollingMode: scrollingMode\r\n }, options));\r\n that._checkRowKeys(options.change);\r\n that._renderFreeSpaceRow($table);\r\n if (!that._hasHeight) {\r\n that.updateFreeSpaceRowHeight($table)\r\n }\r\n },\r\n _renderRow: function($table, options) {\r\n var that = this;\r\n var row = options.row;\r\n var rowTemplate = that.option(\"rowTemplate\");\r\n if ((\"data\" === row.rowType || \"group\" === row.rowType) && !(0, _type.isDefined)(row.groupIndex) && rowTemplate) {\r\n that.renderTemplate($table, rowTemplate, (0, _extend.extend)({\r\n columns: options.columns\r\n }, row), true)\r\n } else {\r\n that.callBase($table, options)\r\n }\r\n },\r\n _renderTable: function(options) {\r\n var that = this;\r\n var $table = that.callBase(options);\r\n var resizeCompletedHandler = function resizeCompletedHandler() {\r\n var scrollableInstance = that.getScrollable();\r\n if (scrollableInstance && that.element().closest((0, _window.getWindow)().document).length) {\r\n that.resizeCompleted.remove(resizeCompletedHandler);\r\n scrollableInstance._visibilityChanged(true)\r\n }\r\n };\r\n if (!(0, _type.isDefined)(that.getTableElement())) {\r\n that.setTableElement($table);\r\n that._renderScrollable(true);\r\n that.resizeCompleted.add(resizeCompletedHandler)\r\n } else {\r\n that._renderScrollable()\r\n }\r\n return $table\r\n },\r\n _createTable: function() {\r\n var $table = this.callBase.apply(this, arguments);\r\n if (this.option(\"rowTemplate\")) {\r\n $table.appendTo(this.component.$element())\r\n }\r\n return $table\r\n },\r\n _renderCore: function(change) {\r\n var that = this;\r\n var $element = that.element();\r\n $element.addClass(that.addWidgetPrefix(ROWS_VIEW_CLASS)).toggleClass(that.addWidgetPrefix(NOWRAP_CLASS), !that.option(\"wordWrapEnabled\"));\r\n $element.toggleClass(EMPTY_CLASS, 0 === that._dataController.items().length);\r\n that.setAria(\"role\", \"presentation\", $element);\r\n var $table = that._renderTable({\r\n change: change\r\n });\r\n that._updateContent($table, change);\r\n that.callBase(change);\r\n that._lastColumnWidths = null\r\n },\r\n _getRows: function(change) {\r\n return change && change.items || this._dataController.items()\r\n },\r\n _getCellOptions: function(options) {\r\n var that = this;\r\n var column = options.column;\r\n var row = options.row;\r\n var data = row.data;\r\n var summaryCells = row && row.summaryCells;\r\n var value = options.value;\r\n var displayValue = _uiGrid_core.default.getDisplayValue(column, value, data, row.rowType);\r\n var parameters = this.callBase(options);\r\n parameters.value = value;\r\n parameters.oldValue = options.oldValue;\r\n parameters.displayValue = displayValue;\r\n parameters.row = row;\r\n parameters.key = row.key;\r\n parameters.data = data;\r\n parameters.rowType = row.rowType;\r\n parameters.values = row.values;\r\n parameters.text = !column.command ? _uiGrid_core.default.formatValue(displayValue, column) : \"\";\r\n parameters.rowIndex = row.rowIndex;\r\n parameters.summaryItems = summaryCells && summaryCells[options.columnIndex];\r\n parameters.resized = column.resizedCallbacks;\r\n if ((0, _type.isDefined)(column.groupIndex) && !column.command) {\r\n var groupingTextsOptions = that.option(\"grouping.texts\");\r\n var scrollingMode = that.option(\"scrolling.mode\");\r\n if (\"virtual\" !== scrollingMode && \"infinite\" !== scrollingMode) {\r\n parameters.groupContinuesMessage = data && data.isContinuationOnNextPage && groupingTextsOptions && groupingTextsOptions.groupContinuesMessage;\r\n parameters.groupContinuedMessage = data && data.isContinuation && groupingTextsOptions && groupingTextsOptions.groupContinuedMessage\r\n }\r\n }\r\n return parameters\r\n },\r\n _setRowsOpacityCore: function($rows, visibleColumns, columnIndex, value) {\r\n var columnsController = this._columnsController;\r\n var columns = columnsController.getColumns();\r\n var column = columns && columns[columnIndex];\r\n var columnID = column && column.isBand && column.index;\r\n (0, _iterator.each)($rows, function(rowIndex, row) {\r\n if (!(0, _renderer.default)(row).hasClass(GROUP_ROW_CLASS)) {\r\n for (var i = 0; i < visibleColumns.length; i++) {\r\n if ((0, _type.isNumeric)(columnID) && columnsController.isParentBandColumn(visibleColumns[i].index, columnID) || visibleColumns[i].index === columnIndex) {\r\n $rows.eq(rowIndex).children().eq(i).css({\r\n opacity: value\r\n });\r\n if (!(0, _type.isNumeric)(columnID)) {\r\n break\r\n }\r\n }\r\n }\r\n }\r\n })\r\n },\r\n _getDevicePixelRatio: function() {\r\n return (0, _window.getWindow)().devicePixelRatio\r\n },\r\n renderNoDataText: _uiGrid_core.default.renderNoDataText,\r\n getCellOptions: function(rowIndex, columnIdentifier) {\r\n var rowOptions = this._dataController.items()[rowIndex];\r\n var cellOptions;\r\n var column;\r\n if (rowOptions) {\r\n if ((0, _type.isString)(columnIdentifier)) {\r\n column = this._columnsController.columnOption(columnIdentifier)\r\n } else {\r\n column = this._columnsController.getVisibleColumns()[columnIdentifier]\r\n }\r\n if (column) {\r\n cellOptions = this._getCellOptions({\r\n value: column.calculateCellValue(rowOptions.data),\r\n rowIndex: rowOptions.rowIndex,\r\n row: rowOptions,\r\n column: column\r\n })\r\n }\r\n }\r\n return cellOptions\r\n },\r\n getRow: function(index) {\r\n if (index >= 0) {\r\n var rows = this._getRowElements();\r\n if (rows.length > index) {\r\n return (0, _renderer.default)(rows[index])\r\n }\r\n }\r\n },\r\n updateFreeSpaceRowHeight: function($table) {\r\n var _this3 = this;\r\n var dataController = this._dataController;\r\n var itemCount = dataController.items(true).length;\r\n var contentElement = this._findContentElement();\r\n var freeSpaceRowElements = this._getFreeSpaceRowElements($table);\r\n if (freeSpaceRowElements && contentElement && dataController.totalCount() >= 0) {\r\n var isFreeSpaceRowVisible = false;\r\n if (itemCount > 0) {\r\n if (!this._hasHeight) {\r\n var freeSpaceRowCount = dataController.pageSize() - itemCount;\r\n var scrollingMode = this.option(\"scrolling.mode\");\r\n if (freeSpaceRowCount > 0 && dataController.pageCount() > 1 && \"virtual\" !== scrollingMode && \"infinite\" !== scrollingMode) {\r\n (0, _style.setHeight)(freeSpaceRowElements, freeSpaceRowCount * this._rowHeight);\r\n isFreeSpaceRowVisible = true\r\n }\r\n if (!isFreeSpaceRowVisible && $table) {\r\n (0, _style.setHeight)(freeSpaceRowElements, 0)\r\n } else {\r\n freeSpaceRowElements.toggle(isFreeSpaceRowVisible)\r\n }\r\n this._updateLastRowBorder(isFreeSpaceRowVisible)\r\n } else {\r\n freeSpaceRowElements.hide();\r\n (0, _common.deferUpdate)(function() {\r\n var scrollbarWidth = _this3.getScrollbarWidth(true);\r\n var elementHeightWithoutScrollbar = _this3.element().height() - scrollbarWidth;\r\n var contentHeight = contentElement.outerHeight();\r\n var showFreeSpaceRow = elementHeightWithoutScrollbar - contentHeight > 0;\r\n var rowsHeight = _this3._getRowsHeight(contentElement.children().first());\r\n var $tableElement = $table || _this3.getTableElements();\r\n var borderTopWidth = Math.ceil(parseFloat($tableElement.css(\"borderTopWidth\")));\r\n var heightCorrection = _this3._getHeightCorrection();\r\n var resultHeight = elementHeightWithoutScrollbar - rowsHeight - borderTopWidth - heightCorrection;\r\n if (showFreeSpaceRow) {\r\n (0, _common.deferRender)(function() {\r\n freeSpaceRowElements.css(\"height\", resultHeight);\r\n isFreeSpaceRowVisible = true;\r\n freeSpaceRowElements.show()\r\n })\r\n }(0, _common.deferRender)(function() {\r\n return _this3._updateLastRowBorder(isFreeSpaceRowVisible)\r\n })\r\n })\r\n }\r\n } else {\r\n freeSpaceRowElements.css(\"height\", 0);\r\n freeSpaceRowElements.show();\r\n this._updateLastRowBorder(true)\r\n }\r\n }\r\n },\r\n _getHeightCorrection: function() {\r\n var isZoomedWebkit = _browser.default.webkit && this._getDevicePixelRatio() >= 2;\r\n var isChromeLatest = _browser.default.chrome && _browser.default.version >= 91;\r\n var hasExtraBorderTop = _browser.default.mozilla && _browser.default.version >= 70 && !this.option(\"showRowLines\");\r\n return isZoomedWebkit || hasExtraBorderTop || isChromeLatest ? 1 : 0\r\n },\r\n _columnOptionChanged: function(e) {\r\n var optionNames = e.optionNames;\r\n if (e.changeTypes.grouping) {\r\n return\r\n }\r\n if (optionNames.width || optionNames.visibleWidth) {\r\n this.callBase(e);\r\n this._fireColumnResizedCallbacks()\r\n }\r\n },\r\n getScrollable: function() {\r\n return this._scrollable\r\n },\r\n init: function() {\r\n var that = this;\r\n var dataController = that.getController(\"data\");\r\n that.callBase();\r\n that._editorFactoryController = that.getController(\"editorFactory\");\r\n that._rowHeight = 0;\r\n that._scrollTop = 0;\r\n that._scrollLeft = -1;\r\n that._scrollRight = 0;\r\n that._hasHeight = false;\r\n dataController.loadingChanged.add(function(isLoading, messageText) {\r\n that.setLoading(isLoading, messageText)\r\n });\r\n dataController.dataSourceChanged.add(function() {\r\n if (that._scrollLeft >= 0) {\r\n that._handleScroll({\r\n component: that.getScrollable(),\r\n scrollOffset: {\r\n top: that._scrollTop,\r\n left: that._scrollLeft\r\n }\r\n })\r\n }\r\n })\r\n },\r\n _handleDataChanged: function(change) {\r\n var that = this;\r\n switch (change.changeType) {\r\n case \"refresh\":\r\n case \"prepend\":\r\n case \"append\":\r\n case \"update\":\r\n that.render(null, change);\r\n break;\r\n default:\r\n that._update(change)\r\n }\r\n },\r\n publicMethods: function() {\r\n return [\"isScrollbarVisible\", \"getTopVisibleRowData\", \"getScrollbarWidth\", \"getCellElement\", \"getRowElement\", \"getScrollable\"]\r\n },\r\n contentWidth: function() {\r\n return this.element().width() - this.getScrollbarWidth()\r\n },\r\n getScrollbarWidth: function(isHorizontal) {\r\n var scrollableContainer = this._scrollableContainer && this._scrollableContainer.get(0);\r\n var scrollbarWidth = 0;\r\n if (scrollableContainer) {\r\n if (!isHorizontal) {\r\n scrollbarWidth = scrollableContainer.clientWidth ? scrollableContainer.offsetWidth - scrollableContainer.clientWidth : 0\r\n } else {\r\n scrollbarWidth = scrollableContainer.clientHeight ? scrollableContainer.offsetHeight - scrollableContainer.clientHeight : 0;\r\n scrollbarWidth += getScrollableBottomPadding(this)\r\n }\r\n }\r\n return scrollbarWidth > 0 ? scrollbarWidth : 0\r\n },\r\n _fireColumnResizedCallbacks: function() {\r\n var that = this;\r\n var lastColumnWidths = that._lastColumnWidths || [];\r\n var columnWidths = [];\r\n var columns = that.getColumns();\r\n for (var i = 0; i < columns.length; i++) {\r\n columnWidths[i] = columns[i].visibleWidth;\r\n if (columns[i].resizedCallbacks && !(0, _type.isDefined)(columns[i].groupIndex) && lastColumnWidths[i] !== columnWidths[i]) {\r\n columns[i].resizedCallbacks.fire(columnWidths[i])\r\n }\r\n }\r\n that._lastColumnWidths = columnWidths\r\n },\r\n _updateLastRowBorder: function(isFreeSpaceRowVisible) {\r\n if (this.option(\"showBorders\") && this.option(\"showRowLines\") && !isFreeSpaceRowVisible) {\r\n this.element().addClass(LAST_ROW_BORDER)\r\n } else {\r\n this.element().removeClass(LAST_ROW_BORDER)\r\n }\r\n },\r\n _updateScrollable: function() {\r\n var dxScrollable = _ui.default.getInstance(this.element());\r\n if (dxScrollable) {\r\n dxScrollable.update();\r\n this._updateHorizontalScrollPosition()\r\n }\r\n },\r\n _updateHorizontalScrollPosition: function() {\r\n var scrollable = this.getScrollable();\r\n var scrollLeft = scrollable && scrollable.scrollOffset().left;\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n if (rtlEnabled) {\r\n var maxHorizontalScrollOffset = getMaxHorizontalScrollOffset(scrollable);\r\n var scrollRight = maxHorizontalScrollOffset - scrollLeft;\r\n if (scrollRight !== this._scrollRight) {\r\n this._scrollLeft = maxHorizontalScrollOffset - this._scrollRight\r\n }\r\n }\r\n if (this._scrollLeft >= 0 && scrollLeft !== this._scrollLeft) {\r\n scrollable.scrollTo({\r\n x: this._scrollLeft\r\n })\r\n }\r\n },\r\n _resizeCore: function() {\r\n var that = this;\r\n that._fireColumnResizedCallbacks();\r\n that._updateRowHeight();\r\n (0, _common.deferRender)(function() {\r\n that._renderScrollable();\r\n that.renderNoDataText();\r\n that.updateFreeSpaceRowHeight();\r\n (0, _common.deferUpdate)(function() {\r\n that._updateScrollable()\r\n })\r\n })\r\n },\r\n scrollTo: function(location) {\r\n var $element = this.element();\r\n var dxScrollable = $element && _ui.default.getInstance($element);\r\n if (dxScrollable) {\r\n dxScrollable.scrollTo(location)\r\n }\r\n },\r\n height: function(_height, hasHeight) {\r\n var that = this;\r\n var $element = this.element();\r\n if (0 === arguments.length) {\r\n return $element ? $element.outerHeight(true) : 0\r\n }\r\n that._hasHeight = void 0 === hasHeight ? \"auto\" !== _height : hasHeight;\r\n if ((0, _type.isDefined)(_height) && $element) {\r\n (0, _style.setHeight)($element, _height)\r\n }\r\n },\r\n setLoading: function(isLoading, messageText) {\r\n var that = this;\r\n var loadPanel = that._loadPanel;\r\n var dataController = that._dataController;\r\n var loadPanelOptions = that.option(\"loadPanel\") || {};\r\n var animation = dataController.isLoaded() ? loadPanelOptions.animation : null;\r\n var $element = that.element();\r\n if (!(0, _window.hasWindow)()) {\r\n return\r\n }\r\n if (!loadPanel && void 0 !== messageText && dataController.isLocalStore() && \"auto\" === loadPanelOptions.enabled && $element) {\r\n that._renderLoadPanel($element, $element.parent());\r\n loadPanel = that._loadPanel\r\n }\r\n if (loadPanel) {\r\n var visibilityOptions = {\r\n message: messageText || loadPanelOptions.text,\r\n animation: animation,\r\n visible: isLoading\r\n };\r\n clearTimeout(that._hideLoadingTimeoutID);\r\n if (loadPanel.option(\"visible\") && !isLoading) {\r\n that._hideLoadingTimeoutID = setTimeout(function() {\r\n loadPanel.option(visibilityOptions)\r\n }, LOADPANEL_HIDE_TIMEOUT)\r\n } else {\r\n loadPanel.option(visibilityOptions)\r\n }\r\n }\r\n },\r\n setRowsOpacity: function(columnIndex, value) {\r\n var $rows = this._getRowElements().not(\".\" + GROUP_ROW_CLASS) || [];\r\n this._setRowsOpacityCore($rows, this.getColumns(), columnIndex, value)\r\n },\r\n _getCellElementsCore: function(rowIndex) {\r\n var $cells = this.callBase.apply(this, arguments);\r\n if ($cells) {\r\n var groupCellIndex = $cells.filter(\".\" + GROUP_CELL_CLASS).index();\r\n if (groupCellIndex >= 0 && $cells.length > groupCellIndex + 1) {\r\n return $cells.slice(0, groupCellIndex + 1)\r\n }\r\n }\r\n return $cells\r\n },\r\n getTopVisibleItemIndex: function(isFloor) {\r\n var that = this;\r\n var itemIndex = 0;\r\n var prevOffsetTop = 0;\r\n var offsetTop = 0;\r\n var scrollPosition = that._scrollTop;\r\n var $contentElement = that._findContentElement();\r\n var contentElementOffsetTop = $contentElement && $contentElement.offset().top;\r\n var items = that._dataController.items();\r\n var tableElement = that.getTableElement();\r\n if (items.length && tableElement) {\r\n var rowElements = that._getRowElements(tableElement).filter(\":visible\");\r\n for (itemIndex = 0; itemIndex < items.length; itemIndex++) {\r\n prevOffsetTop = offsetTop;\r\n var rowElement = rowElements.eq(itemIndex);\r\n if (rowElement.length) {\r\n offsetTop = rowElement.offset().top - contentElementOffsetTop;\r\n if (offsetTop > scrollPosition) {\r\n if (itemIndex) {\r\n if (isFloor || 2 * scrollPosition < Math.round(offsetTop + prevOffsetTop)) {\r\n itemIndex--\r\n }\r\n }\r\n break\r\n }\r\n }\r\n }\r\n if (itemIndex && itemIndex === items.length) {\r\n itemIndex--\r\n }\r\n }\r\n return itemIndex\r\n },\r\n getTopVisibleRowData: function() {\r\n var itemIndex = this.getTopVisibleItemIndex();\r\n var items = this._dataController.items();\r\n if (items[itemIndex]) {\r\n return items[itemIndex].data\r\n }\r\n },\r\n _scrollToElement: function($element, offset) {\r\n var scrollable = this.getScrollable();\r\n scrollable && scrollable.scrollToElement($element, offset)\r\n },\r\n optionChanged: function(args) {\r\n var that = this;\r\n that.callBase(args);\r\n switch (args.name) {\r\n case \"wordWrapEnabled\":\r\n case \"showColumnLines\":\r\n case \"showRowLines\":\r\n case \"rowAlternationEnabled\":\r\n case \"rowTemplate\":\r\n case \"twoWayBindingEnabled\":\r\n that._invalidate(true, true);\r\n args.handled = true;\r\n break;\r\n case \"scrolling\":\r\n that._rowHeight = null;\r\n that._tableElement = null;\r\n args.handled = true;\r\n break;\r\n case \"rtlEnabled\":\r\n that._rowHeight = null;\r\n that._tableElement = null;\r\n break;\r\n case \"loadPanel\":\r\n that._tableElement = null;\r\n that._invalidate(true, \"loadPanel.enabled\" !== args.fullName);\r\n args.handled = true;\r\n break;\r\n case \"noDataText\":\r\n that.renderNoDataText();\r\n args.handled = true\r\n }\r\n },\r\n dispose: function() {\r\n clearTimeout(this._hideLoadingTimeoutID);\r\n this._scrollable && this._scrollable.dispose()\r\n },\r\n setScrollerSpacing: function() {}\r\n }\r\n }())\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.state_storing.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiGrid_core = require(\"./ui.grid_core.state_storing_core\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar getDataState = function(that) {\r\n var pagerView = that.getView(\"pagerView\");\r\n var dataController = that.getController(\"data\");\r\n var state = {\r\n allowedPageSizes: pagerView ? pagerView.getPageSizes() : void 0,\r\n filterPanel: {\r\n filterEnabled: that.option(\"filterPanel.filterEnabled\")\r\n },\r\n filterValue: that.option(\"filterValue\"),\r\n focusedRowKey: that.option(\"focusedRowEnabled\") ? that.option(\"focusedRowKey\") : void 0\r\n };\r\n return (0, _extend.extend)(state, dataController.getUserState())\r\n};\r\nvar processLoadState = function(that) {\r\n var columnsController = that.getController(\"columns\");\r\n var selectionController = that.getController(\"selection\");\r\n var exportController = that.getController(\"export\");\r\n var dataController = that.getController(\"data\");\r\n if (columnsController) {\r\n columnsController.columnsChanged.add(function() {\r\n that.updateState({\r\n columns: columnsController.getUserState()\r\n })\r\n })\r\n }\r\n if (selectionController) {\r\n selectionController.selectionChanged.add(function(e) {\r\n that.updateState({\r\n selectedRowKeys: e.selectedRowKeys,\r\n selectionFilter: e.selectionFilter\r\n })\r\n })\r\n }\r\n if (dataController) {\r\n that._initialPageSize = that.option(\"paging.pageSize\");\r\n that._initialFilterValue = that.option(\"filterValue\");\r\n dataController.changed.add(function() {\r\n var state = getDataState(that);\r\n that.updateState(state)\r\n })\r\n }\r\n if (exportController) {\r\n exportController.selectionOnlyChanged.add(function() {\r\n that.updateState({\r\n exportSelectionOnly: exportController.selectionOnly()\r\n })\r\n })\r\n }\r\n};\r\nvar DEFAULT_FILTER_VALUE = null;\r\nvar getFilterValue = function(that, state) {\r\n var filterSyncController = that.getController(\"filterSync\");\r\n var columnsController = that.getController(\"columns\");\r\n var hasFilterState = state.columns || void 0 !== state.filterValue;\r\n if (filterSyncController) {\r\n if (hasFilterState) {\r\n return state.filterValue || filterSyncController.getFilterValueFromColumns(state.columns)\r\n } else {\r\n return that._initialFilterValue || filterSyncController.getFilterValueFromColumns(columnsController.getColumns())\r\n }\r\n }\r\n return DEFAULT_FILTER_VALUE\r\n};\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n stateStoring: {\r\n enabled: false,\r\n storageKey: null,\r\n type: \"localStorage\",\r\n customLoad: null,\r\n customSave: null,\r\n savingTimeout: 2e3\r\n }\r\n }\r\n },\r\n controllers: {\r\n stateStoring: _uiGrid_core.StateStoringController\r\n },\r\n extenders: {\r\n views: {\r\n rowsView: {\r\n init: function() {\r\n var that = this;\r\n var dataController = that.getController(\"data\");\r\n that.callBase();\r\n dataController.stateLoaded.add(function() {\r\n if (dataController.isLoaded() && !dataController.getDataSource()) {\r\n that.setLoading(false);\r\n that.renderNoDataText();\r\n var columnHeadersView = that.component.getView(\"columnHeadersView\");\r\n columnHeadersView && columnHeadersView.render();\r\n that.component._fireContentReadyAction()\r\n }\r\n })\r\n }\r\n }\r\n },\r\n controllers: {\r\n stateStoring: {\r\n init: function() {\r\n this.callBase.apply(this, arguments);\r\n processLoadState(this)\r\n },\r\n isLoading: function() {\r\n return this.callBase() || this.getController(\"data\").isStateLoading()\r\n },\r\n state: function(_state) {\r\n var result = this.callBase.apply(this, arguments);\r\n if (void 0 !== _state) {\r\n this.applyState((0, _extend.extend)({}, _state))\r\n }\r\n return result\r\n },\r\n updateState: function(state) {\r\n if (this.isEnabled()) {\r\n var oldState = this.state();\r\n var newState = (0, _extend.extend)({}, oldState, state);\r\n var oldStateHash = (0, _common.getKeyHash)(oldState);\r\n var newStateHash = (0, _common.getKeyHash)(newState);\r\n if (!(0, _common.equalByValue)(oldStateHash, newStateHash)) {\r\n (0, _extend.extend)(this._state, state);\r\n this.save()\r\n }\r\n } else {\r\n (0, _extend.extend)(this._state, state)\r\n }\r\n },\r\n applyState: function(state) {\r\n var that = this;\r\n var allowedPageSizes = state.allowedPageSizes;\r\n var searchText = state.searchText;\r\n var selectedRowKeys = state.selectedRowKeys;\r\n var selectionFilter = state.selectionFilter;\r\n var exportController = that.getController(\"export\");\r\n var columnsController = that.getController(\"columns\");\r\n var dataController = that.getController(\"data\");\r\n var scrollingMode = that.option(\"scrolling.mode\");\r\n var isVirtualScrollingMode = \"virtual\" === scrollingMode || \"infinite\" === scrollingMode;\r\n var showPageSizeSelector = true === that.option(\"pager.visible\") && that.option(\"pager.showPageSizeSelector\");\r\n that.component.beginUpdate();\r\n if (columnsController) {\r\n columnsController.setUserState(state.columns)\r\n }\r\n if (exportController) {\r\n exportController.selectionOnly(state.exportSelectionOnly)\r\n }\r\n if (selectedRowKeys) {\r\n that.option(\"selectedRowKeys\", selectedRowKeys)\r\n }\r\n that.option(\"selectionFilter\", selectionFilter);\r\n if (allowedPageSizes && \"auto\" === that.option(\"pager.allowedPageSizes\")) {\r\n that.option(\"pager\").allowedPageSizes = allowedPageSizes\r\n }\r\n if (that.option(\"focusedRowEnabled\") && void 0 !== state.focusedRowKey) {\r\n that.option(\"focusedRowKey\", state.focusedRowKey)\r\n }\r\n that.component.endUpdate();\r\n searchText && that.option(\"searchPanel.text\", searchText);\r\n that.option(\"filterValue\", getFilterValue(that, state));\r\n that.option(\"filterPanel.filterEnabled\", state.filterPanel ? state.filterPanel.filterEnabled : true);\r\n that.option(\"paging.pageSize\", (!isVirtualScrollingMode || showPageSizeSelector) && (0, _type.isDefined)(state.pageSize) ? state.pageSize : that._initialPageSize);\r\n that.option(\"paging.pageIndex\", state.pageIndex || 0);\r\n dataController && dataController.reset()\r\n }\r\n },\r\n columns: {\r\n getVisibleColumns: function() {\r\n var visibleColumns = this.callBase.apply(this, arguments);\r\n var stateStoringController = this.getController(\"stateStoring\");\r\n return stateStoringController.isEnabled() && !stateStoringController.isLoaded() ? [] : visibleColumns\r\n }\r\n },\r\n data: {\r\n callbackNames: function() {\r\n return this.callBase().concat([\"stateLoaded\"])\r\n },\r\n _refreshDataSource: function() {\r\n var _this = this;\r\n var callBase = this.callBase;\r\n var stateStoringController = this.getController(\"stateStoring\");\r\n if (stateStoringController.isEnabled() && !stateStoringController.isLoaded()) {\r\n clearTimeout(this._restoreStateTimeoutID);\r\n var deferred = new _deferred.Deferred;\r\n this._restoreStateTimeoutID = setTimeout(function() {\r\n stateStoringController.load().always(function() {\r\n _this._restoreStateTimeoutID = null\r\n }).done(function() {\r\n callBase.call(_this);\r\n _this.stateLoaded.fire();\r\n deferred.resolve()\r\n }).fail(function(error) {\r\n _this.stateLoaded.fire();\r\n _this._handleLoadError(error || \"Unknown error\");\r\n deferred.reject()\r\n })\r\n });\r\n return deferred.promise()\r\n } else {\r\n if (!this.isStateLoading()) {\r\n callBase.call(this)\r\n }\r\n }\r\n },\r\n isLoading: function() {\r\n var that = this;\r\n var stateStoringController = that.getController(\"stateStoring\");\r\n return this.callBase() || stateStoringController.isLoading()\r\n },\r\n isStateLoading: function() {\r\n return (0, _type.isDefined)(this._restoreStateTimeoutID)\r\n },\r\n isLoaded: function() {\r\n return this.callBase() && !this.isStateLoading()\r\n },\r\n dispose: function() {\r\n clearTimeout(this._restoreStateTimeoutID);\r\n this.callBase()\r\n }\r\n },\r\n selection: {\r\n _fireSelectionChanged: function(options) {\r\n var stateStoringController = this.getController(\"stateStoring\");\r\n var isDeferredSelection = this.option(\"selection.deferred\");\r\n if (stateStoringController.isLoading() && isDeferredSelection) {\r\n return\r\n }\r\n this.callBase.apply(this, arguments)\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.state_storing_core.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.StateStoringController = void 0;\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _storage = require(\"../../core/utils/storage\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar DATE_REGEX = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d*)?)Z$/;\r\nvar parseDates = function parseDates(state) {\r\n if (!state) {\r\n return\r\n }(0, _iterator.each)(state, function(key, value) {\r\n if ((0, _type.isPlainObject)(value) || Array.isArray(value)) {\r\n parseDates(value)\r\n } else {\r\n if (\"string\" === typeof value) {\r\n var date = DATE_REGEX.exec(value);\r\n if (date) {\r\n state[key] = new Date(Date.UTC(+date[1], +date[2] - 1, +date[3], +date[4], +date[5], +date[6]))\r\n }\r\n }\r\n }\r\n })\r\n};\r\nvar StateStoringController = _uiGrid_core.default.ViewController.inherit(function() {\r\n var getStorage = function(options) {\r\n var storage = \"sessionStorage\" === options.type ? (0, _storage.sessionStorage)() : (0, _window.getWindow)().localStorage;\r\n if (!storage) {\r\n if (\"file:\" === (0, _window.getWindow)().location.protocol && _browser.default.msie) {\r\n throw new Error(\"E1038\")\r\n } else {\r\n throw new Error(\"E1007\")\r\n }\r\n }\r\n return storage\r\n };\r\n var getUniqueStorageKey = function(options) {\r\n return (0, _type.isDefined)(options.storageKey) ? options.storageKey : \"storage\"\r\n };\r\n return {\r\n _loadState: function() {\r\n var options = this.option(\"stateStoring\");\r\n if (\"custom\" === options.type) {\r\n return options.customLoad && options.customLoad()\r\n }\r\n try {\r\n return JSON.parse(getStorage(options).getItem(getUniqueStorageKey(options)))\r\n } catch (e) {\r\n _ui.default.log(e.message)\r\n }\r\n },\r\n _saveState: function(state) {\r\n var options = this.option(\"stateStoring\");\r\n if (\"custom\" === options.type) {\r\n options.customSave && options.customSave(state);\r\n return\r\n }\r\n try {\r\n getStorage(options).setItem(getUniqueStorageKey(options), JSON.stringify(state))\r\n } catch (e) {\r\n _ui.default.log(e.message)\r\n }\r\n },\r\n publicMethods: function() {\r\n return [\"state\"]\r\n },\r\n isEnabled: function() {\r\n return this.option(\"stateStoring.enabled\")\r\n },\r\n init: function() {\r\n var that = this;\r\n that._state = {};\r\n that._isLoaded = false;\r\n that._isLoading = false;\r\n that._windowUnloadHandler = function() {\r\n if (void 0 !== that._savingTimeoutID) {\r\n that._saveState(that.state())\r\n }\r\n };\r\n _events_engine.default.on((0, _window.getWindow)(), \"unload\", that._windowUnloadHandler);\r\n return that\r\n },\r\n isLoaded: function() {\r\n return this._isLoaded\r\n },\r\n isLoading: function() {\r\n return this._isLoading\r\n },\r\n load: function() {\r\n var _this = this;\r\n this._isLoading = true;\r\n var loadResult = (0, _deferred.fromPromise)(this._loadState());\r\n loadResult.always(function() {\r\n _this._isLoaded = true;\r\n _this._isLoading = false\r\n }).done(function(state) {\r\n _this.state(state)\r\n });\r\n return loadResult\r\n },\r\n state: function(_state) {\r\n var that = this;\r\n if (!arguments.length) {\r\n return (0, _extend.extend)(true, {}, that._state)\r\n } else {\r\n that._state = (0, _extend.extend)({}, _state);\r\n parseDates(that._state)\r\n }\r\n },\r\n save: function() {\r\n var that = this;\r\n clearTimeout(that._savingTimeoutID);\r\n that._savingTimeoutID = setTimeout(function() {\r\n that._saveState(that.state());\r\n that._savingTimeoutID = void 0\r\n }, that.option(\"stateStoring.savingTimeout\"))\r\n },\r\n optionChanged: function(args) {\r\n var that = this;\r\n switch (args.name) {\r\n case \"stateStoring\":\r\n if (that.isEnabled() && !that.isLoading()) {\r\n that.load()\r\n }\r\n args.handled = true;\r\n break;\r\n default:\r\n that.callBase(args)\r\n }\r\n },\r\n dispose: function() {\r\n clearTimeout(this._savingTimeoutID);\r\n _events_engine.default.off((0, _window.getWindow)(), \"unload\", this._windowUnloadHandler)\r\n }\r\n }\r\n}());\r\nexports.StateStoringController = StateStoringController;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.selection.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _uiData_grid = _interopRequireDefault(require(\"../data_grid/ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _support = require(\"../../core/utils/support\");\r\nvar _click = require(\"../../events/click\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _hold = _interopRequireDefault(require(\"../../events/hold\"));\r\nvar _selection = _interopRequireDefault(require(\"../selection/selection\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar EDITOR_CELL_CLASS = \"dx-editor-cell\";\r\nvar ROW_CLASS = \"dx-row\";\r\nvar ROW_SELECTION_CLASS = \"dx-selection\";\r\nvar SELECT_CHECKBOX_CLASS = \"dx-select-checkbox\";\r\nvar CHECKBOXES_HIDDEN_CLASS = \"dx-select-checkboxes-hidden\";\r\nvar COMMAND_SELECT_CLASS = \"dx-command-select\";\r\nvar SELECTION_DISABLED_CLASS = \"dx-selection-disabled\";\r\nvar DATA_ROW_CLASS = \"dx-data-row\";\r\nvar SHOW_CHECKBOXES_MODE = \"selection.showCheckBoxesMode\";\r\nvar SELECTION_MODE = \"selection.mode\";\r\nvar processLongTap = function(that, dxEvent) {\r\n var selectionController = that.getController(\"selection\");\r\n var rowsView = that.getView(\"rowsView\");\r\n var $row = (0, _renderer.default)(dxEvent.target).closest(\".\" + DATA_ROW_CLASS);\r\n var rowIndex = rowsView.getRowIndex($row);\r\n if (rowIndex < 0) {\r\n return\r\n }\r\n if (\"onLongTap\" === that.option(SHOW_CHECKBOXES_MODE)) {\r\n if (selectionController.isSelectionWithCheckboxes()) {\r\n selectionController.stopSelectionWithCheckboxes()\r\n } else {\r\n selectionController.startSelectionWithCheckboxes()\r\n }\r\n } else {\r\n if (\"onClick\" === that.option(SHOW_CHECKBOXES_MODE)) {\r\n selectionController.startSelectionWithCheckboxes()\r\n }\r\n if (\"always\" !== that.option(SHOW_CHECKBOXES_MODE)) {\r\n selectionController.changeItemSelection(rowIndex, {\r\n control: true\r\n })\r\n }\r\n }\r\n};\r\nvar SelectionController = _uiData_grid.default.Controller.inherit(function() {\r\n var isSeveralRowsSelected = function(that, selectionFilter) {\r\n var keyIndex = 0;\r\n var store = that._dataController.store();\r\n var key = store && store.key();\r\n var isComplexKey = Array.isArray(key);\r\n if (!selectionFilter.length) {\r\n return false\r\n }\r\n if (isComplexKey && Array.isArray(selectionFilter[0]) && \"and\" === selectionFilter[1]) {\r\n for (var i = 0; i < selectionFilter.length; i++) {\r\n if (Array.isArray(selectionFilter[i])) {\r\n if (selectionFilter[i][0] !== key[keyIndex] || \"=\" !== selectionFilter[i][1]) {\r\n return true\r\n }\r\n keyIndex++\r\n }\r\n }\r\n return false\r\n }\r\n return key !== selectionFilter[0]\r\n };\r\n var selectionCellTemplate = function(container, options) {\r\n var component = options.component;\r\n var rowsView = component.getView(\"rowsView\");\r\n if (component.option(\"renderAsync\") && !component.option(\"selection.deferred\")) {\r\n options.value = component.isRowSelected(options.row.key)\r\n }\r\n rowsView.renderSelectCheckBoxContainer((0, _renderer.default)(container), options)\r\n };\r\n var selectionHeaderTemplate = function(container, options) {\r\n var column = options.column;\r\n var $cellElement = (0, _renderer.default)(container);\r\n var columnHeadersView = options.component.getView(\"columnHeadersView\");\r\n $cellElement.addClass(EDITOR_CELL_CLASS);\r\n columnHeadersView._renderSelectAllCheckBox($cellElement, column);\r\n columnHeadersView._attachSelectAllCheckBoxClickEvent($cellElement)\r\n };\r\n return {\r\n init: function() {\r\n this._dataController = this.getController(\"data\");\r\n this._selectionMode = this.option(SELECTION_MODE);\r\n this._isSelectionWithCheckboxes = false;\r\n this._selection = this._createSelection();\r\n this._updateSelectColumn();\r\n this.createAction(\"onSelectionChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _getSelectionConfig: function() {\r\n var that = this;\r\n var dataController = that._dataController;\r\n var selectionOptions = that.option(\"selection\") || {};\r\n return {\r\n selectedKeys: that.option(\"selectedRowKeys\"),\r\n mode: that._selectionMode,\r\n deferred: selectionOptions.deferred,\r\n maxFilterLengthInRequest: selectionOptions.maxFilterLengthInRequest,\r\n selectionFilter: that.option(\"selectionFilter\"),\r\n ignoreDisabledItems: true,\r\n key: function() {\r\n return dataController && dataController.key()\r\n },\r\n keyOf: function(item) {\r\n return dataController && dataController.keyOf(item)\r\n },\r\n dataFields: function() {\r\n return dataController.dataSource() && dataController.dataSource().select()\r\n },\r\n load: function(options) {\r\n return dataController.dataSource() && dataController.dataSource().load(options) || (new _deferred.Deferred).resolve([])\r\n },\r\n plainItems: function() {\r\n return dataController.items(true)\r\n },\r\n isItemSelected: function(item) {\r\n return item.selected\r\n },\r\n isSelectableItem: function(item) {\r\n return item && \"data\" === item.rowType && !item.isNewRow\r\n },\r\n getItemData: function(item) {\r\n return item && (item.oldData || item.data || item)\r\n },\r\n filter: function() {\r\n return dataController.getCombinedFilter(true)\r\n },\r\n totalCount: function() {\r\n return dataController.totalCount()\r\n },\r\n onSelectionChanged: that._updateSelectedItems.bind(this)\r\n }\r\n },\r\n _updateSelectColumn: function() {\r\n var columnsController = this.getController(\"columns\");\r\n var isSelectColumnVisible = this.isSelectColumnVisible();\r\n columnsController.addCommandColumn({\r\n type: \"selection\",\r\n command: \"select\",\r\n visible: isSelectColumnVisible,\r\n visibleIndex: -1,\r\n dataType: \"boolean\",\r\n alignment: \"center\",\r\n cssClass: COMMAND_SELECT_CLASS,\r\n width: \"auto\",\r\n cellTemplate: selectionCellTemplate,\r\n headerCellTemplate: selectionHeaderTemplate\r\n });\r\n columnsController.columnOption(\"command:select\", \"visible\", isSelectColumnVisible)\r\n },\r\n _createSelection: function() {\r\n var options = this._getSelectionConfig();\r\n return new _selection.default(options)\r\n },\r\n _fireSelectionChanged: function(options) {\r\n if (options) {\r\n this.executeAction(\"onSelectionChanged\", options)\r\n }\r\n var argument = this.option(\"selection.deferred\") ? {\r\n selectionFilter: this.option(\"selectionFilter\")\r\n } : {\r\n selectedRowKeys: this.option(\"selectedRowKeys\")\r\n };\r\n this.selectionChanged.fire(argument)\r\n },\r\n _updateCheckboxesState: function(options) {\r\n var isDeferredMode = options.isDeferredMode;\r\n var selectionFilter = options.selectionFilter;\r\n var selectedItemKeys = options.selectedItemKeys;\r\n var removedItemKeys = options.removedItemKeys;\r\n if (\"onClick\" === this.option(SHOW_CHECKBOXES_MODE)) {\r\n if (isDeferredMode ? selectionFilter && isSeveralRowsSelected(this, selectionFilter) : selectedItemKeys.length > 1) {\r\n this.startSelectionWithCheckboxes()\r\n } else {\r\n if (isDeferredMode ? selectionFilter && !selectionFilter.length : 0 === selectedItemKeys.length && removedItemKeys.length) {\r\n this.stopSelectionWithCheckboxes()\r\n }\r\n }\r\n }\r\n },\r\n _updateSelectedItems: function(args) {\r\n var that = this;\r\n var selectionChangedOptions;\r\n var isDeferredMode = that.option(\"selection.deferred\");\r\n var selectionFilter = that._selection.selectionFilter();\r\n var dataController = that._dataController;\r\n var items = dataController.items();\r\n if (!items) {\r\n return\r\n }\r\n var isSelectionWithCheckboxes = that.isSelectionWithCheckboxes();\r\n var changedItemIndexes = that.getChangedItemIndexes(items);\r\n that._updateCheckboxesState({\r\n selectedItemKeys: args.selectedItemKeys,\r\n removedItemKeys: args.removedItemKeys,\r\n selectionFilter: selectionFilter,\r\n isDeferredMode: isDeferredMode\r\n });\r\n if (changedItemIndexes.length || isSelectionWithCheckboxes !== that.isSelectionWithCheckboxes()) {\r\n dataController.updateItems({\r\n changeType: \"updateSelection\",\r\n itemIndexes: changedItemIndexes\r\n })\r\n }\r\n if (isDeferredMode) {\r\n that.option(\"selectionFilter\", selectionFilter);\r\n selectionChangedOptions = {}\r\n } else {\r\n if (args.addedItemKeys.length || args.removedItemKeys.length) {\r\n that._selectedItemsInternalChange = true;\r\n that.option(\"selectedRowKeys\", args.selectedItemKeys.slice(0));\r\n that._selectedItemsInternalChange = false;\r\n selectionChangedOptions = {\r\n selectedRowsData: args.selectedItems.slice(0),\r\n selectedRowKeys: args.selectedItemKeys.slice(0),\r\n currentSelectedRowKeys: args.addedItemKeys.slice(0),\r\n currentDeselectedRowKeys: args.removedItemKeys.slice(0)\r\n }\r\n }\r\n }\r\n that._fireSelectionChanged(selectionChangedOptions)\r\n },\r\n getChangedItemIndexes: function(items) {\r\n var that = this;\r\n var itemIndexes = [];\r\n var isDeferredSelection = this.option(\"selection.deferred\");\r\n for (var i = 0, length = items.length; i < length; i++) {\r\n var row = items[i];\r\n var isItemSelected = that.isRowSelected(isDeferredSelection ? row.data : row.key);\r\n if (that._selection.isDataItem(row) && row.isSelected !== isItemSelected) {\r\n itemIndexes.push(i)\r\n }\r\n }\r\n return itemIndexes\r\n },\r\n callbackNames: function() {\r\n return [\"selectionChanged\"]\r\n },\r\n optionChanged: function(args) {\r\n var _this = this;\r\n this.callBase(args);\r\n switch (args.name) {\r\n case \"selection\":\r\n var oldSelectionMode = this._selectionMode;\r\n this.init();\r\n if (\"selection.showCheckBoxesMode\" !== args.fullName) {\r\n var selectionMode = this._selectionMode;\r\n var selectedRowKeys = this.option(\"selectedRowKeys\");\r\n if (oldSelectionMode !== selectionMode) {\r\n if (\"single\" === selectionMode) {\r\n if (selectedRowKeys.length > 1) {\r\n selectedRowKeys = [selectedRowKeys[0]]\r\n }\r\n } else {\r\n if (\"multiple\" !== selectionMode) {\r\n selectedRowKeys = []\r\n }\r\n }\r\n }\r\n this.selectRows(selectedRowKeys).always(function() {\r\n _this._fireSelectionChanged()\r\n })\r\n }\r\n this.getController(\"columns\").updateColumns();\r\n args.handled = true;\r\n break;\r\n case \"selectionFilter\":\r\n this._selection.selectionFilter(args.value);\r\n args.handled = true;\r\n break;\r\n case \"selectedRowKeys\":\r\n var value = args.value || [];\r\n if (Array.isArray(value) && !this._selectedItemsInternalChange && (this.component.getDataSource() || !value.length)) {\r\n this.selectRows(value)\r\n }\r\n args.handled = true\r\n }\r\n },\r\n publicMethods: function() {\r\n return [\"selectRows\", \"deselectRows\", \"selectRowsByIndexes\", \"getSelectedRowKeys\", \"getSelectedRowsData\", \"clearSelection\", \"selectAll\", \"deselectAll\", \"startSelectionWithCheckboxes\", \"stopSelectionWithCheckboxes\", \"isRowSelected\"]\r\n },\r\n isRowSelected: function(arg) {\r\n return this._selection.isItemSelected(arg)\r\n },\r\n isSelectColumnVisible: function() {\r\n return \"multiple\" === this.option(SELECTION_MODE) && (\"always\" === this.option(SHOW_CHECKBOXES_MODE) || \"onClick\" === this.option(SHOW_CHECKBOXES_MODE) || this._isSelectionWithCheckboxes)\r\n },\r\n _isOnePageSelectAll: function() {\r\n return \"page\" === this.option(\"selection.selectAllMode\")\r\n },\r\n isSelectAll: function() {\r\n return this._selection.getSelectAllState(this._isOnePageSelectAll())\r\n },\r\n selectAll: function() {\r\n if (\"onClick\" === this.option(SHOW_CHECKBOXES_MODE)) {\r\n this.startSelectionWithCheckboxes()\r\n }\r\n return this._selection.selectAll(this._isOnePageSelectAll())\r\n },\r\n deselectAll: function() {\r\n return this._selection.deselectAll(this._isOnePageSelectAll())\r\n },\r\n clearSelection: function() {\r\n return this.selectedItemKeys([])\r\n },\r\n refresh: function() {\r\n var selectedRowKeys = this.option(\"selectedRowKeys\") || [];\r\n if (!this.option(\"selection.deferred\") && selectedRowKeys.length) {\r\n return this.selectedItemKeys(selectedRowKeys)\r\n }\r\n return (new _deferred.Deferred).resolve().promise()\r\n },\r\n selectedItemKeys: function(value, preserve, isDeselect, isSelectAll) {\r\n return this._selection.selectedItemKeys(value, preserve, isDeselect, isSelectAll)\r\n },\r\n getSelectedRowKeys: function() {\r\n return this._selection.getSelectedItemKeys()\r\n },\r\n selectRows: function(keys, preserve) {\r\n return this.selectedItemKeys(keys, preserve)\r\n },\r\n deselectRows: function(keys) {\r\n return this.selectedItemKeys(keys, true, true)\r\n },\r\n selectRowsByIndexes: function(indexes) {\r\n var items = this._dataController.items();\r\n var keys = [];\r\n if (!Array.isArray(indexes)) {\r\n indexes = Array.prototype.slice.call(arguments, 0)\r\n }(0, _iterator.each)(indexes, function() {\r\n var item = items[this];\r\n if (item && \"data\" === item.rowType) {\r\n keys.push(item.key)\r\n }\r\n });\r\n return this.selectRows(keys)\r\n },\r\n getSelectedRowsData: function() {\r\n return this._selection.getSelectedItems()\r\n },\r\n changeItemSelection: function(itemIndex, keys) {\r\n keys = keys || {};\r\n if (this.isSelectionWithCheckboxes()) {\r\n keys.control = true\r\n }\r\n return this._selection.changeItemSelection(this._dataController.getRowIndexDelta() + itemIndex, keys)\r\n },\r\n focusedItemIndex: function(itemIndex) {\r\n var that = this;\r\n if ((0, _type.isDefined)(itemIndex)) {\r\n that._selection._focusedItemIndex = itemIndex\r\n } else {\r\n return that._selection._focusedItemIndex\r\n }\r\n },\r\n isSelectionWithCheckboxes: function() {\r\n return \"multiple\" === this.option(SELECTION_MODE) && (\"always\" === this.option(SHOW_CHECKBOXES_MODE) || this._isSelectionWithCheckboxes)\r\n },\r\n startSelectionWithCheckboxes: function() {\r\n var that = this;\r\n if (\"multiple\" === that.option(SELECTION_MODE) && !that.isSelectionWithCheckboxes()) {\r\n that._isSelectionWithCheckboxes = true;\r\n that._updateSelectColumn();\r\n return true\r\n }\r\n return false\r\n },\r\n stopSelectionWithCheckboxes: function() {\r\n var that = this;\r\n if (that._isSelectionWithCheckboxes) {\r\n that._isSelectionWithCheckboxes = false;\r\n that._updateSelectColumn();\r\n return true\r\n }\r\n return false\r\n }\r\n }\r\n}());\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n selection: {\r\n mode: \"none\",\r\n showCheckBoxesMode: \"onClick\",\r\n allowSelectAll: true,\r\n selectAllMode: \"allPages\",\r\n maxFilterLengthInRequest: 1500,\r\n deferred: false\r\n },\r\n selectionFilter: [],\r\n selectedRowKeys: []\r\n }\r\n },\r\n controllers: {\r\n selection: SelectionController\r\n },\r\n extenders: {\r\n controllers: {\r\n data: {\r\n init: function() {\r\n var selectionController = this.getController(\"selection\");\r\n var isDeferredMode = this.option(\"selection.deferred\");\r\n this.callBase.apply(this, arguments);\r\n if (isDeferredMode) {\r\n selectionController._updateCheckboxesState({\r\n isDeferredMode: true,\r\n selectionFilter: this.option(\"selectionFilter\")\r\n })\r\n }\r\n },\r\n _loadDataSource: function() {\r\n var that = this;\r\n return that.callBase().done(function() {\r\n that.getController(\"selection\").refresh()\r\n })\r\n },\r\n _processDataItem: function(item, options) {\r\n var that = this;\r\n var selectionController = that.getController(\"selection\");\r\n var hasSelectColumn = selectionController.isSelectColumnVisible();\r\n var isDeferredSelection = options.isDeferredSelection = void 0 === options.isDeferredSelection ? this.option(\"selection.deferred\") : options.isDeferredSelection;\r\n var dataItem = this.callBase.apply(this, arguments);\r\n dataItem.isSelected = selectionController.isRowSelected(isDeferredSelection ? dataItem.data : dataItem.key);\r\n if (hasSelectColumn && dataItem.values) {\r\n for (var i = 0; i < options.visibleColumns.length; i++) {\r\n if (\"select\" === options.visibleColumns[i].command) {\r\n dataItem.values[i] = dataItem.isSelected;\r\n break\r\n }\r\n }\r\n }\r\n return dataItem\r\n },\r\n refresh: function(options) {\r\n var that = this;\r\n var d = new _deferred.Deferred;\r\n this.callBase.apply(this, arguments).done(function() {\r\n if (!options || options.selection) {\r\n that.getController(\"selection\").refresh().done(d.resolve).fail(d.reject)\r\n } else {\r\n d.resolve()\r\n }\r\n }).fail(d.reject);\r\n return d.promise()\r\n },\r\n _handleDataChanged: function(e) {\r\n this.callBase.apply(this, arguments);\r\n if ((!e || \"refresh\" === e.changeType) && !this._repaintChangesOnly) {\r\n this.getController(\"selection\").focusedItemIndex(-1)\r\n }\r\n },\r\n _applyChange: function(change) {\r\n var _this2 = this;\r\n if (change && \"updateSelection\" === change.changeType) {\r\n change.items.forEach(function(item, index) {\r\n var currentItem = _this2._items[index];\r\n if (currentItem) {\r\n currentItem.isSelected = item.isSelected;\r\n currentItem.values = item.values\r\n }\r\n });\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _endUpdateCore: function() {\r\n var changes = this._changes;\r\n var isUpdateSelection = changes.length > 1 && changes.every(function(change) {\r\n return \"updateSelection\" === change.changeType\r\n });\r\n if (isUpdateSelection) {\r\n var itemIndexes = changes.map(function(change) {\r\n return change.itemIndexes || []\r\n }).reduce(function(a, b) {\r\n return a.concat(b)\r\n });\r\n this._changes = [{\r\n changeType: \"updateSelection\",\r\n itemIndexes: itemIndexes\r\n }]\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n push: function(changes) {\r\n this.callBase.apply(this, arguments);\r\n var removedKeys = changes.filter(function(change) {\r\n return \"remove\" === change.type\r\n }).map(function(change) {\r\n return change.key\r\n });\r\n removedKeys.length && this.getController(\"selection\").deselectRows(removedKeys)\r\n }\r\n },\r\n contextMenu: {\r\n _contextMenuPrepared: function(options) {\r\n var dxEvent = options.event;\r\n if (dxEvent.originalEvent && \"dxhold\" !== dxEvent.originalEvent.type || options.items && options.items.length > 0) {\r\n return\r\n }\r\n processLongTap(this, dxEvent)\r\n }\r\n }\r\n },\r\n views: {\r\n columnHeadersView: {\r\n init: function() {\r\n var that = this;\r\n that.callBase();\r\n that.getController(\"selection\").selectionChanged.add(that._updateSelectAllValue.bind(that))\r\n },\r\n _updateSelectAllValue: function() {\r\n var that = this;\r\n var $element = that.element();\r\n var $editor = $element && $element.find(\".\" + SELECT_CHECKBOX_CLASS);\r\n if ($element && $editor.length && \"multiple\" === that.option(\"selection.mode\")) {\r\n var selectAllValue = that.getController(\"selection\").isSelectAll();\r\n var hasSelection = false !== selectAllValue;\r\n var isVisible = that.option(\"selection.allowSelectAll\") ? !that.getController(\"data\").isEmpty() : hasSelection;\r\n $editor.dxCheckBox(\"instance\").option({\r\n visible: isVisible,\r\n value: selectAllValue\r\n })\r\n }\r\n },\r\n _handleDataChanged: function(e) {\r\n this.callBase(e);\r\n if (!e || \"refresh\" === e.changeType) {\r\n this._updateSelectAllValue()\r\n }\r\n },\r\n _renderSelectAllCheckBox: function($container, column) {\r\n var that = this;\r\n var selectionController = that.getController(\"selection\");\r\n var isEmptyData = that.getController(\"data\").isEmpty();\r\n var groupElement = (0, _renderer.default)(\"
\").appendTo($container).addClass(SELECT_CHECKBOX_CLASS);\r\n that.setAria(\"label\", _message.default.format(\"dxDataGrid-ariaSelectAll\"), $container);\r\n that.getController(\"editorFactory\").createEditor(groupElement, (0, _extend.extend)({}, column, {\r\n parentType: \"headerRow\",\r\n dataType: \"boolean\",\r\n value: selectionController.isSelectAll(),\r\n editorOptions: {\r\n visible: !isEmptyData && (that.option(\"selection.allowSelectAll\") || false !== selectionController.isSelectAll())\r\n },\r\n tabIndex: that.option(\"useLegacyKeyboardNavigation\") ? -1 : that.option(\"tabIndex\") || 0,\r\n setValue: function(value, e) {\r\n var allowSelectAll = that.option(\"selection.allowSelectAll\");\r\n e.component.option(\"visible\", allowSelectAll || false !== e.component.option(\"value\"));\r\n if (!e.event || selectionController.isSelectAll() === value) {\r\n return\r\n }\r\n if (e.value && !allowSelectAll) {\r\n e.component.option(\"value\", false)\r\n } else {\r\n e.value ? selectionController.selectAll() : selectionController.deselectAll()\r\n }\r\n e.event.preventDefault()\r\n }\r\n }));\r\n return groupElement\r\n },\r\n _attachSelectAllCheckBoxClickEvent: function($element) {\r\n _events_engine.default.on($element, _click.name, this.createAction(function(e) {\r\n var event = e.event;\r\n if (!(0, _renderer.default)(event.target).closest(\".\" + SELECT_CHECKBOX_CLASS).length) {\r\n _events_engine.default.trigger((0, _renderer.default)(event.currentTarget).children(\".\" + SELECT_CHECKBOX_CLASS), _click.name)\r\n }\r\n event.preventDefault()\r\n }))\r\n }\r\n },\r\n rowsView: {\r\n renderSelectCheckBoxContainer: function($container, options) {\r\n if (\"data\" === options.rowType && !options.row.isNewRow) {\r\n $container.addClass(EDITOR_CELL_CLASS);\r\n this._attachCheckBoxClickEvent($container);\r\n this.setAria(\"label\", _message.default.format(\"dxDataGrid-ariaSelectRow\"), $container);\r\n this._renderSelectCheckBox($container, options)\r\n } else {\r\n _uiGrid_core.default.setEmptyText($container)\r\n }\r\n },\r\n _renderSelectCheckBox: function(container, options) {\r\n var groupElement = (0, _renderer.default)(\"
\").addClass(SELECT_CHECKBOX_CLASS).appendTo(container);\r\n this.getController(\"editorFactory\").createEditor(groupElement, (0, _extend.extend)({}, options.column, {\r\n parentType: \"dataRow\",\r\n dataType: \"boolean\",\r\n lookup: null,\r\n value: options.value,\r\n setValue: function(value, e) {\r\n var _e$event;\r\n if (\"keydown\" === (null === e || void 0 === e ? void 0 : null === (_e$event = e.event) || void 0 === _e$event ? void 0 : _e$event.type)) {\r\n _events_engine.default.trigger(e.element, _click.name, e)\r\n }\r\n },\r\n row: options.row\r\n }));\r\n return groupElement\r\n },\r\n _attachCheckBoxClickEvent: function($element) {\r\n _events_engine.default.on($element, _click.name, this.createAction(function(e) {\r\n var selectionController = this.getController(\"selection\");\r\n var event = e.event;\r\n var rowIndex = this.getRowIndex((0, _renderer.default)(event.currentTarget).closest(\".\" + ROW_CLASS));\r\n if (rowIndex >= 0) {\r\n selectionController.startSelectionWithCheckboxes();\r\n selectionController.changeItemSelection(rowIndex, {\r\n shift: event.shiftKey\r\n });\r\n if ((0, _renderer.default)(event.target).closest(\".\" + SELECT_CHECKBOX_CLASS).length) {\r\n this.getController(\"data\").updateItems({\r\n changeType: \"updateSelection\",\r\n itemIndexes: [rowIndex]\r\n })\r\n }\r\n }\r\n }))\r\n },\r\n _update: function(change) {\r\n var that = this;\r\n var tableElements = that.getTableElements();\r\n if (\"updateSelection\" === change.changeType) {\r\n if (tableElements.length > 0) {\r\n (0, _iterator.each)(tableElements, function(_, tableElement) {\r\n (0, _iterator.each)(change.itemIndexes || [], function(_, index) {\r\n var $row;\r\n if (change.items[index]) {\r\n $row = that._getRowElements((0, _renderer.default)(tableElement)).eq(index);\r\n if ($row.length) {\r\n var isSelected = change.items[index].isSelected;\r\n $row.toggleClass(ROW_SELECTION_CLASS, void 0 === isSelected ? false : isSelected).find(\".\" + SELECT_CHECKBOX_CLASS).dxCheckBox(\"option\", \"value\", isSelected);\r\n that.setAria(\"selected\", isSelected, $row)\r\n }\r\n }\r\n })\r\n });\r\n that._updateCheckboxesClass()\r\n }\r\n } else {\r\n that.callBase(change)\r\n }\r\n },\r\n _createTable: function() {\r\n var that = this;\r\n var selectionMode = that.option(\"selection.mode\");\r\n var $table = that.callBase.apply(that, arguments);\r\n if (\"none\" !== selectionMode) {\r\n if (\"onLongTap\" === that.option(SHOW_CHECKBOXES_MODE) || !_support.touch) {\r\n _events_engine.default.on($table, (0, _index.addNamespace)(_hold.default.name, \"dxDataGridRowsView\"), \".\" + DATA_ROW_CLASS, that.createAction(function(e) {\r\n processLongTap(that.component, e.event);\r\n e.event.stopPropagation()\r\n }))\r\n }\r\n _events_engine.default.on($table, \"mousedown selectstart\", that.createAction(function(e) {\r\n var event = e.event;\r\n if (event.shiftKey) {\r\n event.preventDefault()\r\n }\r\n }))\r\n }\r\n return $table\r\n },\r\n _createRow: function(row) {\r\n var $row = this.callBase(row);\r\n if (row) {\r\n var isSelected = !!row.isSelected;\r\n if (isSelected) {\r\n $row.addClass(ROW_SELECTION_CLASS)\r\n }\r\n this.setAria(\"selected\", isSelected, $row)\r\n }\r\n return $row\r\n },\r\n _rowClick: function(e) {\r\n var that = this;\r\n var dxEvent = e.event;\r\n var isSelectionDisabled = (0, _renderer.default)(dxEvent.target).closest(\".\" + SELECTION_DISABLED_CLASS).length;\r\n if (!that.isClickableElement((0, _renderer.default)(dxEvent.target))) {\r\n if (!isSelectionDisabled && (\"multiple\" !== that.option(SELECTION_MODE) || \"always\" !== that.option(SHOW_CHECKBOXES_MODE))) {\r\n if (that.getController(\"selection\").changeItemSelection(e.rowIndex, {\r\n control: (0, _index.isCommandKeyPressed)(dxEvent),\r\n shift: dxEvent.shiftKey\r\n })) {\r\n dxEvent.preventDefault();\r\n e.handled = true\r\n }\r\n }\r\n that.callBase(e)\r\n }\r\n },\r\n isClickableElement: function($target) {\r\n var isCommandSelect = $target.closest(\".\" + COMMAND_SELECT_CLASS).length;\r\n return !!isCommandSelect\r\n },\r\n _renderCore: function(change) {\r\n this.callBase(change);\r\n this._updateCheckboxesClass()\r\n },\r\n _updateCheckboxesClass: function() {\r\n var tableElements = this.getTableElements();\r\n var selectionController = this.getController(\"selection\");\r\n var isCheckBoxesHidden = selectionController.isSelectColumnVisible() && !selectionController.isSelectionWithCheckboxes();\r\n (0, _iterator.each)(tableElements, function(_, tableElement) {\r\n (0, _renderer.default)(tableElement).toggleClass(CHECKBOXES_HIDDEN_CLASS, isCheckBoxesHidden)\r\n })\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.validating.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _array_utils = require(\"../../data/array_utils\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _selectors = require(\"../widget/selectors\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _validation_engine = _interopRequireDefault(require(\"../validation_engine\"));\r\nvar _validator = _interopRequireDefault(require(\"../validator\"));\r\nvar _overlay = _interopRequireDefault(require(\"../overlay\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _load_indicator = _interopRequireDefault(require(\"../load_indicator\"));\r\nvar _string = require(\"../../core/utils/string\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _toConsumableArray(arr) {\r\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n if (!o) {\r\n return\r\n }\r\n if (\"string\" === typeof o) {\r\n return _arrayLikeToArray(o, minLen)\r\n }\r\n var n = Object.prototype.toString.call(o).slice(8, -1);\r\n if (\"Object\" === n && o.constructor) {\r\n n = o.constructor.name\r\n }\r\n if (\"Map\" === n || \"Set\" === n) {\r\n return Array.from(o)\r\n }\r\n if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n return _arrayLikeToArray(o, minLen)\r\n }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n if (\"undefined\" !== typeof Symbol && null != iter[Symbol.iterator] || null != iter[\"@@iterator\"]) {\r\n return Array.from(iter)\r\n }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n if (Array.isArray(arr)) {\r\n return _arrayLikeToArray(arr)\r\n }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n if (null == len || len > arr.length) {\r\n len = arr.length\r\n }\r\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n arr2[i] = arr[i]\r\n }\r\n return arr2\r\n}\r\nvar INVALIDATE_CLASS = \"invalid\";\r\nvar REVERT_TOOLTIP_CLASS = \"revert-tooltip\";\r\nvar ROWS_VIEW_CLASS = \"rowsview\";\r\nvar INVALID_MESSAGE_CLASS = \"dx-invalid-message\";\r\nvar WIDGET_INVALID_MESSAGE_CLASS = \"invalid-message\";\r\nvar INVALID_MESSAGE_ALWAYS_CLASS = \"dx-invalid-message-always\";\r\nvar REVERT_BUTTON_CLASS = \"dx-revert-button\";\r\nvar VALIDATOR_CLASS = \"validator\";\r\nvar PENDING_INDICATOR_CLASS = \"dx-pending-indicator\";\r\nvar VALIDATION_PENDING_CLASS = \"dx-validation-pending\";\r\nvar CONTENT_CLASS = \"content\";\r\nvar INSERT_INDEX = \"__DX_INSERT_INDEX__\";\r\nvar PADDING_BETWEEN_TOOLTIPS = 2;\r\nvar EDIT_MODE_ROW = \"row\";\r\nvar EDIT_MODE_FORM = \"form\";\r\nvar EDIT_MODE_BATCH = \"batch\";\r\nvar EDIT_MODE_CELL = \"cell\";\r\nvar EDIT_MODE_POPUP = \"popup\";\r\nvar GROUP_CELL_CLASS = \"dx-group-cell\";\r\nvar FORM_BASED_MODES = [EDIT_MODE_POPUP, EDIT_MODE_FORM];\r\nvar COMMAND_TRANSPARENT = \"transparent\";\r\nvar VALIDATION_STATUS = {\r\n valid: \"valid\",\r\n invalid: \"invalid\",\r\n pending: \"pending\"\r\n};\r\nvar EDIT_DATA_INSERT_TYPE = \"insert\";\r\nvar EDIT_DATA_REMOVE_TYPE = \"remove\";\r\nvar VALIDATION_CANCELLED = \"cancel\";\r\nvar validationResultIsValid = function(result) {\r\n return (0, _type.isDefined)(result) && result !== VALIDATION_CANCELLED\r\n};\r\nvar cellValueShouldBeValidated = function(value, rowOptions) {\r\n return void 0 !== value || void 0 === value && rowOptions && !rowOptions.isNewRow\r\n};\r\nvar ValidatingController = _uiGrid_core.default.Controller.inherit(function() {\r\n return {\r\n init: function() {\r\n this._editingController = this.getController(\"editing\");\r\n this.createAction(\"onRowValidating\");\r\n if (!this._validationState) {\r\n this._validationState = []\r\n }\r\n },\r\n _rowIsValidated: function(change) {\r\n var validationData = this._getValidationData(null === change || void 0 === change ? void 0 : change.key);\r\n return !!validationData && !!validationData.validated\r\n },\r\n _getValidationData: function(key, create) {\r\n var validationData = this._validationState.filter(function(data) {\r\n return (0, _common.equalByValue)(data.key, key)\r\n })[0];\r\n if (!validationData && create) {\r\n validationData = {\r\n key: key,\r\n isValid: true\r\n };\r\n this._validationState.push(validationData)\r\n }\r\n return validationData\r\n },\r\n _getBrokenRules: function(validationData, validationResults) {\r\n var brokenRules;\r\n if (validationResults) {\r\n brokenRules = validationResults.brokenRules || validationResults.brokenRule && [validationResults.brokenRule]\r\n } else {\r\n brokenRules = validationData.brokenRules || []\r\n }\r\n return brokenRules\r\n },\r\n _rowValidating: function(validationData, validationResults) {\r\n var deferred = new _deferred.Deferred;\r\n var change = this._editingController.getChangeByKey(null === validationData || void 0 === validationData ? void 0 : validationData.key);\r\n var brokenRules = this._getBrokenRules(validationData, validationResults);\r\n var isValid = validationResults ? validationResults.isValid : validationData.isValid;\r\n var parameters = {\r\n brokenRules: brokenRules,\r\n isValid: isValid,\r\n key: change.key,\r\n newData: change.data,\r\n oldData: this._editingController._getOldData(change.key),\r\n promise: null,\r\n errorText: this.getHiddenValidatorsErrorText(brokenRules)\r\n };\r\n this.executeAction(\"onRowValidating\", parameters);\r\n (0, _deferred.when)((0, _deferred.fromPromise)(parameters.promise)).always(function() {\r\n validationData.isValid = parameters.isValid;\r\n validationData.errorText = parameters.errorText;\r\n deferred.resolve(parameters)\r\n });\r\n return deferred.promise()\r\n },\r\n getHiddenValidatorsErrorText: function(brokenRules) {\r\n var brokenRulesMessages = [];\r\n (0, _iterator.each)(brokenRules, function(_, brokenRule) {\r\n var column = brokenRule.column;\r\n var isGroupExpandColumn = column && void 0 !== column.groupIndex && !column.showWhenGrouped;\r\n var isVisibleColumn = column && column.visible;\r\n if (!brokenRule.validator.$element().parent().length && (!isVisibleColumn || isGroupExpandColumn)) {\r\n brokenRulesMessages.push(brokenRule.message)\r\n }\r\n });\r\n return brokenRulesMessages.join(\", \")\r\n },\r\n validate: function(isFull) {\r\n var _this = this;\r\n var isValid = true;\r\n var editingController = this._editingController;\r\n var deferred = new _deferred.Deferred;\r\n var completeList = [];\r\n var editMode = editingController.getEditMode();\r\n isFull = isFull || editMode === EDIT_MODE_ROW;\r\n if (this._isValidationInProgress) {\r\n return deferred.resolve(false).promise()\r\n }\r\n this._isValidationInProgress = true;\r\n if (isFull) {\r\n editingController.addDeferred(deferred);\r\n var changes = editingController.getChanges();\r\n (0, _iterator.each)(changes, function(index, _ref) {\r\n var type = _ref.type,\r\n key = _ref.key;\r\n if (\"remove\" !== type) {\r\n var validationData = _this._getValidationData(key, true);\r\n var validationResult = _this.validateGroup(validationData);\r\n completeList.push(validationResult);\r\n validationResult.done(function(validationResult) {\r\n validationData.validated = true;\r\n isValid = isValid && validationResult.isValid\r\n })\r\n }\r\n })\r\n } else {\r\n if (this._currentCellValidator) {\r\n var validationResult = this.validateGroup(this._currentCellValidator._findGroup());\r\n completeList.push(validationResult);\r\n validationResult.done(function(validationResult) {\r\n isValid = validationResult.isValid\r\n })\r\n }\r\n }\r\n _deferred.when.apply(void 0, completeList).done(function() {\r\n _this._isValidationInProgress = false;\r\n deferred.resolve(isValid)\r\n });\r\n return deferred.promise()\r\n },\r\n validateGroup: function validateGroup(validationData) {\r\n var _validationResult, _this2 = this;\r\n var result = new _deferred.Deferred;\r\n var validateGroup = validationData && _validation_engine.default.getGroupConfig(validationData);\r\n var validationResult;\r\n if (null !== validateGroup && void 0 !== validateGroup && validateGroup.validators.length) {\r\n this.resetRowValidationResults(validationData);\r\n validationResult = _validation_engine.default.validateGroup(validationData)\r\n }(0, _deferred.when)((null === (_validationResult = validationResult) || void 0 === _validationResult ? void 0 : _validationResult.complete) || validationResult).done(function(validationResult) {\r\n (0, _deferred.when)(_this2._rowValidating(validationData, validationResult)).done(result.resolve)\r\n });\r\n return result.promise()\r\n },\r\n isRowDataModified: function(change) {\r\n return !(0, _type.isEmptyObject)(change.data)\r\n },\r\n updateValidationState: function(change) {\r\n var editMode = this._editingController.getEditMode();\r\n var key = change.key;\r\n var validationData = this._getValidationData(key, true);\r\n if (FORM_BASED_MODES.indexOf(editMode) === -1) {\r\n if (change.type === EDIT_DATA_INSERT_TYPE && !this.isRowDataModified(change)) {\r\n validationData.isValid = true;\r\n return\r\n }\r\n this.setDisableApplyValidationResults(true);\r\n var groupConfig = _validation_engine.default.getGroupConfig(validationData);\r\n if (groupConfig) {\r\n var validationResult = _validation_engine.default.validateGroup(validationData);\r\n (0, _deferred.when)(validationResult.complete || validationResult).done(function(validationResult) {\r\n validationData.isValid = validationResult.isValid;\r\n validationData.brokenRules = validationResult.brokenRules\r\n })\r\n } else {\r\n if (!validationData.brokenRules || !validationData.brokenRules.length) {\r\n validationData.isValid = true\r\n }\r\n }\r\n this.setDisableApplyValidationResults(false)\r\n } else {\r\n validationData.isValid = true\r\n }\r\n },\r\n setValidator: function(validator) {\r\n this._currentCellValidator = validator\r\n },\r\n renderCellPendingIndicator: function($container) {\r\n var $indicator = $container.find(\".\" + PENDING_INDICATOR_CLASS);\r\n if (!$indicator.length) {\r\n var $indicatorContainer = $container;\r\n $indicator = (0, _renderer.default)(\"
\").appendTo($indicatorContainer).addClass(PENDING_INDICATOR_CLASS);\r\n this._createComponent($indicator, _load_indicator.default);\r\n $container.addClass(VALIDATION_PENDING_CLASS)\r\n }\r\n },\r\n disposeCellPendingIndicator: function($container) {\r\n var $indicator = $container.find(\".\" + PENDING_INDICATOR_CLASS);\r\n if ($indicator.length) {\r\n var indicator = _load_indicator.default.getInstance($indicator);\r\n if (indicator) {\r\n indicator.dispose();\r\n indicator.$element().remove()\r\n }\r\n $container.removeClass(VALIDATION_PENDING_CLASS)\r\n }\r\n },\r\n validationStatusChanged: function(result) {\r\n var validator = result.validator;\r\n var validationGroup = validator.option(\"validationGroup\");\r\n var column = validator.option(\"dataGetter\")().column;\r\n this.updateCellValidationResult({\r\n rowKey: validationGroup.key,\r\n columnIndex: column.index,\r\n validationResult: result\r\n })\r\n },\r\n validatorInitialized: function(arg) {\r\n arg.component.on(\"validating\", this.validationStatusChanged.bind(this));\r\n arg.component.on(\"validated\", this.validationStatusChanged.bind(this))\r\n },\r\n validatorDisposing: function(arg) {\r\n var validator = arg.component;\r\n var validationGroup = validator.option(\"validationGroup\");\r\n var column = validator.option(\"dataGetter\")().column;\r\n var result = this.getCellValidationResult({\r\n rowKey: null === validationGroup || void 0 === validationGroup ? void 0 : validationGroup.key,\r\n columnIndex: column.index\r\n });\r\n if (validationResultIsValid(result) && result.status === VALIDATION_STATUS.pending) {\r\n this.cancelCellValidationResult({\r\n change: validationGroup,\r\n columnIndex: column.index\r\n })\r\n }\r\n },\r\n applyValidationResult: function($container, result) {\r\n var validator = result.validator;\r\n var validationGroup = validator.option(\"validationGroup\");\r\n var column = validator.option(\"dataGetter\")().column;\r\n result.brokenRules && result.brokenRules.forEach(function(rule) {\r\n rule.columnIndex = column.index;\r\n rule.column = column\r\n });\r\n if ($container) {\r\n var validationResult = this.getCellValidationResult({\r\n rowKey: validationGroup.key,\r\n columnIndex: column.index\r\n });\r\n var requestIsDisabled = validationResultIsValid(validationResult) && validationResult.disabledPendingId === result.id;\r\n if (this._disableApplyValidationResults || requestIsDisabled) {\r\n return\r\n }\r\n if (result.status === VALIDATION_STATUS.invalid) {\r\n var $focus = $container.find(\":focus\");\r\n if (!(0, _selectors.focused)($focus)) {\r\n _events_engine.default.trigger($focus, \"focus\");\r\n _events_engine.default.trigger($focus, _pointer.default.down)\r\n }\r\n }\r\n var editor = !column.editCellTemplate && this.getController(\"editorFactory\").getEditorInstance($container);\r\n if (result.status === VALIDATION_STATUS.pending) {\r\n if (editor) {\r\n editor.option(\"validationStatus\", VALIDATION_STATUS.pending)\r\n } else {\r\n this.renderCellPendingIndicator($container)\r\n }\r\n } else {\r\n if (editor) {\r\n editor.option(\"validationStatus\", VALIDATION_STATUS.valid)\r\n } else {\r\n this.disposeCellPendingIndicator($container)\r\n }\r\n }\r\n $container.toggleClass(this.addWidgetPrefix(INVALIDATE_CLASS), result.status === VALIDATION_STATUS.invalid)\r\n }\r\n },\r\n _syncInternalEditingData: function(parameters) {\r\n var _parameters$row;\r\n var editingController = this._editingController;\r\n var change = editingController.getChangeByKey(parameters.key);\r\n var oldDataFromState = editingController._getOldData(parameters.key);\r\n var oldData = null === (_parameters$row = parameters.row) || void 0 === _parameters$row ? void 0 : _parameters$row.oldData;\r\n if (change && oldData && !oldDataFromState) {\r\n editingController._addInternalData({\r\n key: parameters.key,\r\n oldData: oldData\r\n })\r\n }\r\n },\r\n createValidator: function(parameters, $container) {\r\n var _this3 = this;\r\n var editingController = this._editingController;\r\n var column = parameters.column;\r\n var showEditorAlways = column.showEditorAlways;\r\n if ((0, _type.isDefined)(column.command) || !column.validationRules || !Array.isArray(column.validationRules) || !column.validationRules.length) {\r\n return\r\n }\r\n var editIndex = editingController.getIndexByKey(parameters.key, editingController.getChanges());\r\n var needCreateValidator = editIndex > -1;\r\n if (!needCreateValidator) {\r\n if (!showEditorAlways) {\r\n var columnsController = this.getController(\"columns\");\r\n var visibleColumns = (null === columnsController || void 0 === columnsController ? void 0 : columnsController.getVisibleColumns()) || [];\r\n showEditorAlways = visibleColumns.some(function(column) {\r\n return column.showEditorAlways\r\n })\r\n }\r\n var isEditRow = (0, _common.equalByValue)(this.option(\"editing.editRowKey\"), parameters.key);\r\n var isCellOrBatchEditingAllowed = editingController.isCellOrBatchEditMode() && editingController.allowUpdating({\r\n row: parameters.row\r\n });\r\n needCreateValidator = isEditRow || isCellOrBatchEditingAllowed && showEditorAlways;\r\n if (isCellOrBatchEditingAllowed && showEditorAlways) {\r\n var _parameters$row$oldDa, _parameters$row2;\r\n editingController._addInternalData({\r\n key: parameters.key,\r\n oldData: null !== (_parameters$row$oldDa = null === (_parameters$row2 = parameters.row) || void 0 === _parameters$row2 ? void 0 : _parameters$row2.oldData) && void 0 !== _parameters$row$oldDa ? _parameters$row$oldDa : parameters.data\r\n })\r\n }\r\n }\r\n if (needCreateValidator) {\r\n if ($container && !$container.length) {\r\n _ui.default.log(\"E1050\");\r\n return\r\n }\r\n this._syncInternalEditingData(parameters);\r\n var validationData = this._getValidationData(parameters.key, true);\r\n var getValue = function() {\r\n var change = editingController.getChangeByKey(null === validationData || void 0 === validationData ? void 0 : validationData.key);\r\n var value = column.calculateCellValue((null === change || void 0 === change ? void 0 : change.data) || {});\r\n return void 0 !== value ? value : parameters.value\r\n };\r\n var useDefaultValidator = $container && $container.hasClass(\"dx-widget\");\r\n $container && $container.addClass(this.addWidgetPrefix(VALIDATOR_CLASS));\r\n var validator = new _validator.default($container || (0, _renderer.default)(\"
\"), {\r\n name: column.caption,\r\n validationRules: (0, _extend.extend)(true, [], column.validationRules),\r\n validationGroup: validationData,\r\n adapter: useDefaultValidator ? null : {\r\n getValue: getValue,\r\n applyValidationResults: function(result) {\r\n _this3.applyValidationResult($container, result)\r\n }\r\n },\r\n dataGetter: function() {\r\n var key = null === validationData || void 0 === validationData ? void 0 : validationData.key;\r\n var change = editingController.getChangeByKey(key);\r\n var oldData = editingController._getOldData(key);\r\n return {\r\n data: (0, _array_utils.createObjectWithChanges)(oldData, null === change || void 0 === change ? void 0 : change.data),\r\n column: column\r\n }\r\n },\r\n onInitialized: this.validatorInitialized.bind(this),\r\n onDisposing: this.validatorDisposing.bind(this)\r\n });\r\n if (useDefaultValidator) {\r\n var adapter = validator.option(\"adapter\");\r\n if (adapter) {\r\n adapter.getValue = getValue;\r\n adapter.validationRequestsCallbacks = []\r\n }\r\n }\r\n return validator\r\n }\r\n },\r\n setDisableApplyValidationResults: function(flag) {\r\n this._disableApplyValidationResults = flag\r\n },\r\n getDisableApplyValidationResults: function() {\r\n return this._disableApplyValidationResults\r\n },\r\n isCurrentValidatorProcessing: function(_ref2) {\r\n var rowKey = _ref2.rowKey,\r\n columnIndex = _ref2.columnIndex;\r\n return this._currentCellValidator && (0, _common.equalByValue)(this._currentCellValidator.option(\"validationGroup\").key, rowKey) && this._currentCellValidator.option(\"dataGetter\")().column.index === columnIndex\r\n },\r\n validateCell: function(validator) {\r\n var cellParams = {\r\n rowKey: validator.option(\"validationGroup\").key,\r\n columnIndex: validator.option(\"dataGetter\")().column.index\r\n };\r\n var validationResult = this.getCellValidationResult(cellParams);\r\n var stateRestored = validationResultIsValid(validationResult);\r\n if (!stateRestored) {\r\n validationResult = validator.validate()\r\n }\r\n var deferred = new _deferred.Deferred;\r\n var adapter = validator.option(\"adapter\");\r\n if (stateRestored && validationResult.status === VALIDATION_STATUS.pending) {\r\n this.updateCellValidationResult(cellParams);\r\n adapter.applyValidationResults(validationResult)\r\n }(0, _deferred.when)(validationResult.complete || validationResult).done(function(validationResult) {\r\n stateRestored && adapter.applyValidationResults(validationResult);\r\n deferred.resolve(validationResult)\r\n });\r\n return deferred.promise()\r\n },\r\n updateCellValidationResult: function(_ref3) {\r\n var rowKey = _ref3.rowKey,\r\n columnIndex = _ref3.columnIndex,\r\n validationResult = _ref3.validationResult;\r\n var validationData = this._getValidationData(rowKey);\r\n if (!validationData) {\r\n return\r\n }\r\n if (!validationData.validationResults) {\r\n validationData.validationResults = {}\r\n }\r\n var result;\r\n if (validationResult) {\r\n result = (0, _extend.extend)({}, validationResult);\r\n validationData.validationResults[columnIndex] = result;\r\n if (validationResult.status === VALIDATION_STATUS.pending) {\r\n if (this._editingController.getEditMode() === EDIT_MODE_CELL) {\r\n result.deferred = new _deferred.Deferred;\r\n result.complete.always(function() {\r\n result.deferred.resolve()\r\n });\r\n this._editingController.addDeferred(result.deferred)\r\n }\r\n if (this._disableApplyValidationResults) {\r\n result.disabledPendingId = validationResult.id;\r\n return\r\n }\r\n }\r\n } else {\r\n result = validationData.validationResults[columnIndex]\r\n }\r\n if (result && result.disabledPendingId) {\r\n delete result.disabledPendingId\r\n }\r\n },\r\n getCellValidationResult: function(_ref4) {\r\n var _validationData$valid;\r\n var rowKey = _ref4.rowKey,\r\n columnIndex = _ref4.columnIndex;\r\n var validationData = this._getValidationData(rowKey, true);\r\n return null === validationData || void 0 === validationData ? void 0 : null === (_validationData$valid = validationData.validationResults) || void 0 === _validationData$valid ? void 0 : _validationData$valid[columnIndex]\r\n },\r\n removeCellValidationResult: function(_ref5) {\r\n var change = _ref5.change,\r\n columnIndex = _ref5.columnIndex;\r\n var validationData = this._getValidationData(null === change || void 0 === change ? void 0 : change.key);\r\n if (validationData && validationData.validationResults) {\r\n this.cancelCellValidationResult({\r\n change: change,\r\n columnIndex: columnIndex\r\n });\r\n delete validationData.validationResults[columnIndex]\r\n }\r\n },\r\n cancelCellValidationResult: function(_ref6) {\r\n var change = _ref6.change,\r\n columnIndex = _ref6.columnIndex;\r\n var validationData = this._getValidationData(change.key);\r\n if (change && validationData.validationResults) {\r\n var result = validationData.validationResults[columnIndex];\r\n if (result) {\r\n result.deferred && result.deferred.reject(VALIDATION_CANCELLED);\r\n validationData.validationResults[columnIndex] = VALIDATION_CANCELLED\r\n }\r\n }\r\n },\r\n resetRowValidationResults: function(validationData) {\r\n if (validationData) {\r\n validationData.validationResults && delete validationData.validationResults;\r\n delete validationData.validated\r\n }\r\n },\r\n isInvalidCell: function(_ref7) {\r\n var rowKey = _ref7.rowKey,\r\n columnIndex = _ref7.columnIndex;\r\n var result = this.getCellValidationResult({\r\n rowKey: rowKey,\r\n columnIndex: columnIndex\r\n });\r\n return validationResultIsValid(result) && result.status === VALIDATION_STATUS.invalid\r\n },\r\n getCellValidator: function(_ref8) {\r\n var rowKey = _ref8.rowKey,\r\n columnIndex = _ref8.columnIndex;\r\n var validationData = this._getValidationData(rowKey);\r\n var groupConfig = validationData && _validation_engine.default.getGroupConfig(validationData);\r\n var validators = groupConfig && groupConfig.validators;\r\n return validators && validators.filter(function(v) {\r\n var column = v.option(\"dataGetter\")().column;\r\n return column ? column.index === columnIndex : false\r\n })[0]\r\n },\r\n setCellValidationStatus: function(cellOptions) {\r\n var validationResult = this.getCellValidationResult({\r\n rowKey: cellOptions.key,\r\n columnIndex: cellOptions.column.index\r\n });\r\n if ((0, _type.isDefined)(validationResult)) {\r\n cellOptions.validationStatus = validationResult !== VALIDATION_CANCELLED ? validationResult.status : VALIDATION_CANCELLED\r\n } else {\r\n delete cellOptions.validationStatus\r\n }\r\n }\r\n }\r\n}());\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n editing: {\r\n texts: {\r\n validationCancelChanges: _message.default.format(\"dxDataGrid-validationCancelChanges\")\r\n }\r\n }\r\n }\r\n },\r\n controllers: {\r\n validating: ValidatingController\r\n },\r\n extenders: {\r\n controllers: {\r\n editing: {\r\n _addChange: function(options, row) {\r\n var index = this.callBase(options, row);\r\n var validatingController = this.getController(\"validating\");\r\n if (index >= 0 && options.type !== EDIT_DATA_REMOVE_TYPE) {\r\n var change = this.getChanges()[index];\r\n change && validatingController.updateValidationState(change)\r\n }\r\n return index\r\n },\r\n _handleChangesChange: function(args) {\r\n this.callBase.apply(this, arguments);\r\n var validatingController = this.getController(\"validating\");\r\n args.value.forEach(function(change) {\r\n if (void 0 === validatingController._getValidationData(change.key)) {\r\n validatingController.updateValidationState(change)\r\n }\r\n })\r\n },\r\n _updateRowAndPageIndices: function() {\r\n var _this4 = this;\r\n var that = this;\r\n var startInsertIndex = that.getView(\"rowsView\").getTopVisibleItemIndex();\r\n var rowIndex = startInsertIndex;\r\n (0, _iterator.each)(that.getChanges(), function(_, _ref9) {\r\n var key = _ref9.key,\r\n type = _ref9.type;\r\n var validationData = _this4.getController(\"validating\")._getValidationData(key);\r\n if (validationData && !validationData.isValid && validationData.pageIndex !== that._pageIndex) {\r\n validationData.pageIndex = that._pageIndex;\r\n if (type === EDIT_DATA_INSERT_TYPE) {\r\n validationData.rowIndex = startInsertIndex\r\n } else {\r\n validationData.rowIndex = rowIndex\r\n }\r\n rowIndex++\r\n }\r\n })\r\n },\r\n getEditFormOptions: function(detailOptions) {\r\n var editFormOptions = this.callBase.apply(this, arguments);\r\n var validatingController = this.getController(\"validating\");\r\n var validationData = validatingController._getValidationData(detailOptions.key, true);\r\n return (0, _extend.extend)({}, editFormOptions, {\r\n validationGroup: validationData\r\n })\r\n },\r\n _updateEditRowCore: function(row, skipCurrentRow, isCustomSetCellValue) {\r\n this.callBase.apply(this, arguments);\r\n if (isCustomSetCellValue && this._editForm && !row.isNewRow) {\r\n this._editForm.validate()\r\n }\r\n },\r\n _needInsertItem: function(_ref10) {\r\n var key = _ref10.key;\r\n var result = this.callBase.apply(this, arguments);\r\n var validationData = this.getController(\"validating\")._getValidationData(key);\r\n if (result && !(null !== validationData && void 0 !== validationData && validationData.isValid)) {\r\n result = key.pageIndex === this._pageIndex\r\n }\r\n return result\r\n },\r\n _prepareEditCell: function(params) {\r\n var isNotCanceled = this.callBase.apply(this, arguments);\r\n var validatingController = this.getController(\"validating\");\r\n if (isNotCanceled && params.column.showEditorAlways) {\r\n validatingController.updateValidationState({\r\n key: params.key\r\n })\r\n }\r\n return isNotCanceled\r\n },\r\n processItems: function(items, changeType) {\r\n var that = this;\r\n var i;\r\n var changes = that.getChanges();\r\n var dataController = that.getController(\"data\");\r\n var validatingController = this.getController(\"validating\");\r\n var getIndexByChange = function(change, items) {\r\n var index = -1;\r\n var isInsert = change.type === EDIT_DATA_INSERT_TYPE;\r\n var key = change.key;\r\n (0, _iterator.each)(items, function(i, item) {\r\n if ((0, _common.equalByValue)(key, isInsert ? item : dataController.keyOf(item))) {\r\n index = i;\r\n return false\r\n }\r\n });\r\n return index\r\n };\r\n items = that.callBase(items, changeType);\r\n var itemsCount = items.length;\r\n var addInValidItem = function(change, validationData) {\r\n var data = {\r\n key: change.key\r\n };\r\n var index = getIndexByChange(change, items);\r\n if (index >= 0) {\r\n return\r\n }\r\n validationData.rowIndex = validationData.rowIndex > itemsCount ? validationData.rowIndex % itemsCount : validationData.rowIndex;\r\n var rowIndex = validationData.rowIndex;\r\n data[INSERT_INDEX] = 1;\r\n items.splice(rowIndex, 0, data)\r\n };\r\n if (that.getEditMode() === EDIT_MODE_BATCH && \"prepend\" !== changeType && \"append\" !== changeType) {\r\n for (i = 0; i < changes.length; i++) {\r\n var key = changes[i].key;\r\n var validationData = validatingController._getValidationData(key);\r\n if (validationData && changes[i].type && validationData.pageIndex === that._pageIndex && key.pageIndex !== that._pageIndex) {\r\n addInValidItem(changes[i], validationData)\r\n }\r\n }\r\n }\r\n return items\r\n },\r\n processDataItem: function(item) {\r\n var isInserted = item.data[INSERT_INDEX];\r\n var key = isInserted ? item.data.key : item.key;\r\n var editMode = this.getEditMode();\r\n if (editMode === EDIT_MODE_BATCH && isInserted && key) {\r\n var changes = this.getChanges();\r\n var editIndex = _uiGrid_core2.default.getIndexByKey(key, changes);\r\n if (editIndex >= 0) {\r\n var change = changes[editIndex];\r\n if (change.type !== EDIT_DATA_INSERT_TYPE) {\r\n var oldData = this._getOldData(change.key);\r\n item.data = (0, _extend.extend)(true, {}, oldData, change.data);\r\n item.key = key\r\n }\r\n }\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _createInvisibleColumnValidators: function(changes) {\r\n var _this5 = this;\r\n var that = this;\r\n var validatingController = this.getController(\"validating\");\r\n var columnsController = this.getController(\"columns\");\r\n var columns = columnsController.getColumns();\r\n var invisibleColumns = columnsController.getInvisibleColumns().filter(function(column) {\r\n return !column.isBand\r\n });\r\n var groupColumns = columnsController.getGroupColumns().filter(function(column) {\r\n return !column.showWhenGrouped && invisibleColumns.indexOf(column) === -1\r\n });\r\n var invisibleColumnValidators = [];\r\n var isCellVisible = function(column, rowKey) {\r\n return _this5._dataController.getRowIndexByKey(rowKey) >= 0 && invisibleColumns.indexOf(column) < 0\r\n };\r\n invisibleColumns.push.apply(invisibleColumns, _toConsumableArray(groupColumns));\r\n if (FORM_BASED_MODES.indexOf(this.getEditMode()) === -1) {\r\n (0, _iterator.each)(columns, function(_, column) {\r\n changes.forEach(function(change) {\r\n var data;\r\n if (isCellVisible(column, change.key)) {\r\n return\r\n }\r\n if (change.type === EDIT_DATA_INSERT_TYPE) {\r\n data = change.data\r\n } else {\r\n if (\"update\" === change.type) {\r\n var oldData = that._getOldData(change.key);\r\n data = (0, _array_utils.createObjectWithChanges)(oldData, change.data)\r\n }\r\n }\r\n if (data) {\r\n var validator = validatingController.createValidator({\r\n column: column,\r\n key: change.key,\r\n value: column.calculateCellValue(data)\r\n });\r\n if (validator) {\r\n invisibleColumnValidators.push(validator)\r\n }\r\n }\r\n })\r\n })\r\n }\r\n return function() {\r\n invisibleColumnValidators.forEach(function(validator) {\r\n validator.dispose()\r\n })\r\n }\r\n },\r\n _beforeSaveEditData: function(change, editIndex) {\r\n var _this6 = this;\r\n var result = this.callBase.apply(this, arguments);\r\n var validatingController = this.getController(\"validating\");\r\n var validationData = validatingController._getValidationData(null === change || void 0 === change ? void 0 : change.key);\r\n if (change) {\r\n var isValid = \"remove\" === change.type || validationData.isValid;\r\n result = result || !isValid\r\n } else {\r\n var disposeValidators = this._createInvisibleColumnValidators(this.getChanges());\r\n result = new _deferred.Deferred;\r\n this.executeOperation(result, function() {\r\n validatingController.validate(true).done(function(isFullValid) {\r\n disposeValidators();\r\n _this6._updateRowAndPageIndices();\r\n switch (_this6.getEditMode()) {\r\n case EDIT_MODE_CELL:\r\n if (!isFullValid) {\r\n _this6._focusEditingCell()\r\n }\r\n break;\r\n case EDIT_MODE_BATCH:\r\n if (!isFullValid) {\r\n _this6._resetEditRowKey();\r\n _this6._resetEditColumnName();\r\n _this6.getController(\"data\").updateItems()\r\n }\r\n }\r\n result.resolve(!isFullValid)\r\n })\r\n })\r\n }\r\n return result.promise ? result.promise() : result\r\n },\r\n _beforeEditCell: function(rowIndex, columnIndex, item) {\r\n var result = this.callBase(rowIndex, columnIndex, item);\r\n if (this.getEditMode() === EDIT_MODE_CELL) {\r\n var $cell = this._rowsView._getCellElement(rowIndex, columnIndex);\r\n var validator = $cell && $cell.data(\"dxValidator\");\r\n var rowOptions = $cell && $cell.closest(\".dx-row\").data(\"options\");\r\n var value = validator && validator.option(\"adapter\").getValue();\r\n if (validator && cellValueShouldBeValidated(value, rowOptions)) {\r\n var validatingController = this.getController(\"validating\");\r\n var deferred = new _deferred.Deferred;\r\n (0, _deferred.when)(validatingController.validateCell(validator), result).done(function(validationResult, result) {\r\n deferred.resolve(validationResult.status === VALIDATION_STATUS.valid && result)\r\n });\r\n return deferred.promise()\r\n } else {\r\n if (!validator) {\r\n return result\r\n }\r\n }\r\n }\r\n },\r\n _afterSaveEditData: function(cancel) {\r\n var _this7 = this;\r\n var $firstErrorRow;\r\n var isCellEditMode = this.getEditMode() === EDIT_MODE_CELL;\r\n (0, _iterator.each)(this.getChanges(), function(_, change) {\r\n var $errorRow = _this7._showErrorRow(change);\r\n $firstErrorRow = $firstErrorRow || $errorRow\r\n });\r\n if ($firstErrorRow) {\r\n var scrollable = this._rowsView.getScrollable();\r\n if (scrollable) {\r\n scrollable.update();\r\n scrollable.scrollToElement($firstErrorRow)\r\n }\r\n }\r\n if (cancel && isCellEditMode && this._needUpdateRow()) {\r\n var editRowIndex = this.getEditRowIndex();\r\n this._dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: [editRowIndex]\r\n });\r\n this._focusEditingCell()\r\n } else {\r\n if (!cancel) {\r\n var shouldResetValidationState = true;\r\n if (isCellEditMode) {\r\n var columns = this.getController(\"columns\").getColumns();\r\n var columnsWithValidatingEditors = columns.filter(function(col) {\r\n var _col$validationRules;\r\n return col.showEditorAlways && (null === (_col$validationRules = col.validationRules) || void 0 === _col$validationRules ? void 0 : _col$validationRules.length) > 0\r\n }).length > 0;\r\n shouldResetValidationState = !columnsWithValidatingEditors\r\n }\r\n if (shouldResetValidationState) {\r\n this.getController(\"validating\")._validationState = []\r\n }\r\n }\r\n }\r\n },\r\n _handleDataChanged: function(args) {\r\n var validationState = this.getController(\"validating\")._validationState;\r\n if (\"standard\" === this.option(\"scrolling.mode\")) {\r\n this.resetRowAndPageIndices()\r\n }\r\n if (\"prepend\" === args.changeType) {\r\n (0, _iterator.each)(validationState, function(_, validationData) {\r\n validationData.rowIndex += args.items.length\r\n })\r\n }\r\n this.callBase(args)\r\n },\r\n resetRowAndPageIndices: function() {\r\n var _this8 = this;\r\n var validationState = this.getController(\"validating\")._validationState;\r\n (0, _iterator.each)(validationState, function(_, validationData) {\r\n if (validationData.pageIndex !== _this8._pageIndex) {\r\n delete validationData.pageIndex;\r\n delete validationData.rowIndex\r\n }\r\n })\r\n },\r\n _beforeCancelEditData: function() {\r\n var validatingController = this.getController(\"validating\");\r\n validatingController._validationState = [];\r\n this.callBase()\r\n },\r\n _showErrorRow: function(change) {\r\n var $popupContent;\r\n var errorHandling = this.getController(\"errorHandling\");\r\n var items = this.getController(\"data\").items();\r\n var rowIndex = this.getIndexByKey(change.key, items);\r\n var validationData = this.getController(\"validating\")._getValidationData(change.key);\r\n if (!(null !== validationData && void 0 !== validationData && validationData.isValid) && null !== validationData && void 0 !== validationData && validationData.errorText && rowIndex >= 0) {\r\n $popupContent = this.getPopupContent();\r\n return errorHandling && errorHandling.renderErrorRow(null === validationData || void 0 === validationData ? void 0 : validationData.errorText, rowIndex, $popupContent)\r\n }\r\n },\r\n updateFieldValue: function(e) {\r\n var _this9 = this;\r\n var validatingController = this.getController(\"validating\");\r\n var deferred = new _deferred.Deferred;\r\n validatingController.removeCellValidationResult({\r\n change: this.getChangeByKey(e.key),\r\n columnIndex: e.column.index\r\n });\r\n this.callBase.apply(this, arguments).done(function() {\r\n var currentValidator = validatingController.getCellValidator({\r\n rowKey: e.key,\r\n columnIndex: e.column.index\r\n });\r\n (0, _deferred.when)(currentValidator && validatingController.validateCell(currentValidator)).done(function(validationResult) {\r\n _this9.getController(\"editorFactory\").refocus();\r\n deferred.resolve(validationResult)\r\n })\r\n });\r\n return deferred.promise()\r\n },\r\n highlightDataCell: function($cell, parameters) {\r\n this.callBase.apply(this, arguments);\r\n var validatingController = this.getController(\"validating\");\r\n validatingController.setCellValidationStatus(parameters);\r\n var isEditableCell = !!parameters.setValue;\r\n var cellModified = this.isCellModified(parameters);\r\n var isValidated = (0, _type.isDefined)(parameters.validationStatus);\r\n var needValidation = cellModified && parameters.column.setCellValue || isEditableCell && !cellModified && !(parameters.row.isNewRow || !isValidated);\r\n if (needValidation) {\r\n var validator = $cell.data(\"dxValidator\");\r\n if (validator) {\r\n (0, _deferred.when)(this.getController(\"validating\").validateCell(validator)).done(function() {\r\n validatingController.setCellValidationStatus(parameters)\r\n })\r\n }\r\n }\r\n },\r\n getChangeByKey: function(key) {\r\n var changes = this.getChanges();\r\n return changes[_uiGrid_core2.default.getIndexByKey(key, changes)]\r\n },\r\n isCellModified: function(parameters) {\r\n var cellModified = this.callBase(parameters);\r\n var change = this.getChangeByKey(parameters.key);\r\n var isCellInvalid = !!parameters.row && this.getController(\"validating\").isInvalidCell({\r\n rowKey: parameters.key,\r\n columnIndex: parameters.column.index\r\n });\r\n return cellModified || this.getController(\"validating\")._rowIsValidated(change) && isCellInvalid\r\n }\r\n },\r\n editorFactory: function() {\r\n var getWidthOfVisibleCells = function(that, element) {\r\n var rowIndex = (0, _renderer.default)(element).closest(\"tr\").index();\r\n var $cellElements = (0, _renderer.default)(that._rowsView.getRowElement(rowIndex)).first().children().filter(\":not(.dx-hidden-cell)\");\r\n return that._rowsView._getWidths($cellElements).reduce(function(w1, w2) {\r\n return w1 + w2\r\n }, 0)\r\n };\r\n var getBoundaryNonFixedColumnsInfo = function(fixedColumns) {\r\n var firstNonFixedColumnIndex;\r\n var lastNonFixedColumnIndex;\r\n fixedColumns.some(function(column, index) {\r\n if (column.command === COMMAND_TRANSPARENT) {\r\n firstNonFixedColumnIndex = 0 === index ? -1 : index;\r\n lastNonFixedColumnIndex = index === fixedColumns.length - 1 ? -1 : index + column.colspan - 1;\r\n return true\r\n }\r\n });\r\n return {\r\n startColumnIndex: firstNonFixedColumnIndex,\r\n endColumnIndex: lastNonFixedColumnIndex\r\n }\r\n };\r\n return {\r\n _showRevertButton: function($container) {\r\n var _this10 = this;\r\n if (!$container || !$container.length) {\r\n return\r\n }\r\n var $tooltipElement = this._rowsView.element().find(\".\" + this.addWidgetPrefix(REVERT_TOOLTIP_CLASS));\r\n var $overlayContainer = $container.closest(\".\".concat(this.addWidgetPrefix(CONTENT_CLASS)));\r\n $tooltipElement && $tooltipElement.remove();\r\n $tooltipElement = (0, _renderer.default)(\"
\").addClass(this.addWidgetPrefix(REVERT_TOOLTIP_CLASS)).appendTo($container);\r\n var tooltipOptions = {\r\n animation: null,\r\n visible: true,\r\n width: \"auto\",\r\n height: \"auto\",\r\n target: $container,\r\n shading: false,\r\n container: $overlayContainer,\r\n propagateOutsideClick: true,\r\n closeOnOutsideClick: false,\r\n closeOnTargetScroll: false,\r\n contentTemplate: function() {\r\n var $buttonElement = (0, _renderer.default)(\"
\").addClass(REVERT_BUTTON_CLASS);\r\n var buttonOptions = {\r\n icon: \"revert\",\r\n hint: _this10.option(\"editing.texts.validationCancelChanges\"),\r\n onClick: function() {\r\n _this10._editingController.cancelEditData()\r\n }\r\n };\r\n return new _button.default($buttonElement, buttonOptions).$element()\r\n },\r\n position: {\r\n my: \"left top\",\r\n at: \"right top\",\r\n offset: \"1 0\",\r\n collision: \"flip\",\r\n boundaryOffset: \"0 0\",\r\n boundary: this._rowsView.element()\r\n },\r\n onPositioned: this._positionedHandler.bind(this)\r\n };\r\n return new _overlay.default($tooltipElement, tooltipOptions)\r\n },\r\n _hideFixedGroupCell: function($cell, overlayOptions) {\r\n var $nextFixedRowElement;\r\n var $groupCellElement;\r\n var isFixedColumns = this._rowsView.isFixedColumns();\r\n var isFormEditMode = this._editingController.isFormEditMode();\r\n if (isFixedColumns && !isFormEditMode) {\r\n var nextRowOptions = $cell.closest(\".dx-row\").next().data(\"options\");\r\n if (nextRowOptions && \"group\" === nextRowOptions.rowType) {\r\n $nextFixedRowElement = (0, _renderer.default)(this._rowsView.getRowElement(nextRowOptions.rowIndex)).last();\r\n $groupCellElement = $nextFixedRowElement.find(\".\" + GROUP_CELL_CLASS);\r\n if ($groupCellElement.length && \"hidden\" !== $groupCellElement.get(0).style.visibility) {\r\n $groupCellElement.css(\"visibility\", \"hidden\");\r\n overlayOptions.onDisposing = function() {\r\n $groupCellElement.css(\"visibility\", \"\")\r\n }\r\n }\r\n }\r\n }\r\n },\r\n _positionedHandler: function(e, isOverlayVisible) {\r\n if (!e.component.__skipPositionProcessing) {\r\n var isRevertButton = (0, _renderer.default)(e.element).hasClass(this.addWidgetPrefix(REVERT_TOOLTIP_CLASS));\r\n var needRepaint = !isRevertButton && this._rowsView.updateFreeSpaceRowHeight();\r\n var normalizedPosition = this._normalizeValidationMessagePositionAndMaxWidth(e, isRevertButton, isOverlayVisible);\r\n e.component.__skipPositionProcessing = !!(needRepaint || normalizedPosition);\r\n if (normalizedPosition) {\r\n e.component.option(normalizedPosition)\r\n } else {\r\n if (needRepaint) {\r\n e.component.repaint()\r\n }\r\n }\r\n }\r\n },\r\n _showValidationMessage: function($cell, messages, alignment, revertTooltip) {\r\n var _this11 = this;\r\n var editorPopup = $cell.find(\".dx-dropdowneditor-overlay\").data(\"dxPopup\");\r\n var isOverlayVisible = editorPopup && editorPopup.option(\"visible\");\r\n var myPosition = isOverlayVisible ? \"top right\" : \"top \" + alignment;\r\n var atPosition = isOverlayVisible ? \"top left\" : \"bottom \" + alignment;\r\n var $overlayContainer = $cell.closest(\".\".concat(this.addWidgetPrefix(CONTENT_CLASS)));\r\n var errorMessageText = \"\";\r\n messages && messages.forEach(function(message) {\r\n errorMessageText += (errorMessageText.length ? \"
\" : \"\") + (0, _string.encodeHtml)(message)\r\n });\r\n var invalidMessageClass = this.addWidgetPrefix(WIDGET_INVALID_MESSAGE_CLASS);\r\n this._rowsView.element().find(\".\" + invalidMessageClass).remove();\r\n var $overlayElement = (0, _renderer.default)(\"
\").addClass(INVALID_MESSAGE_CLASS).addClass(INVALID_MESSAGE_ALWAYS_CLASS).addClass(invalidMessageClass).html(errorMessageText).appendTo($cell);\r\n var overlayOptions = {\r\n target: $cell,\r\n container: $overlayContainer,\r\n shading: false,\r\n width: \"auto\",\r\n height: \"auto\",\r\n visible: true,\r\n animation: false,\r\n propagateOutsideClick: true,\r\n closeOnOutsideClick: false,\r\n closeOnTargetScroll: false,\r\n position: {\r\n collision: \"flip\",\r\n boundary: this._rowsView.element(),\r\n boundaryOffset: \"0 0\",\r\n offset: {\r\n x: 0,\r\n y: !isOverlayVisible && (_browser.default.mozilla || _browser.default.msie) ? -1 : 0\r\n },\r\n my: myPosition,\r\n at: atPosition\r\n },\r\n onPositioned: function(e) {\r\n _this11._positionedHandler(e, isOverlayVisible);\r\n _this11._shiftValidationMessageIfNeed(e.component.$content(), revertTooltip && revertTooltip.$content(), $cell)\r\n }\r\n };\r\n this._hideFixedGroupCell($cell, overlayOptions);\r\n new _overlay.default($overlayElement, overlayOptions)\r\n },\r\n _normalizeValidationMessagePositionAndMaxWidth: function(options, isRevertButton, isOverlayVisible) {\r\n var fixedColumns = this._columnsController.getFixedColumns();\r\n if (!fixedColumns || !fixedColumns.length) {\r\n return\r\n }\r\n var position;\r\n var visibleTableWidth = !isRevertButton && getWidthOfVisibleCells(this, options.element);\r\n var $overlayContentElement = options.component.$content();\r\n var validationMessageWidth = $overlayContentElement.outerWidth(true);\r\n var needMaxWidth = !isRevertButton && validationMessageWidth > visibleTableWidth;\r\n var columnIndex = this._rowsView.getCellIndex((0, _renderer.default)(options.element).closest(\"td\"));\r\n var boundaryNonFixedColumnsInfo = getBoundaryNonFixedColumnsInfo(fixedColumns);\r\n if (!isRevertButton && (columnIndex === boundaryNonFixedColumnsInfo.startColumnIndex || needMaxWidth)) {\r\n position = {\r\n collision: \"none flip\",\r\n my: \"top left\",\r\n at: isOverlayVisible ? \"top right\" : \"bottom left\"\r\n }\r\n } else {\r\n if (columnIndex === boundaryNonFixedColumnsInfo.endColumnIndex) {\r\n position = {\r\n collision: \"none flip\",\r\n my: \"top right\",\r\n at: isRevertButton || isOverlayVisible ? \"top left\" : \"bottom right\"\r\n };\r\n if (isRevertButton) {\r\n position.offset = \"-1 0\"\r\n }\r\n }\r\n }\r\n return position && {\r\n position: position,\r\n maxWidth: needMaxWidth ? visibleTableWidth - 2 : void 0\r\n }\r\n },\r\n _shiftValidationMessageIfNeed: function($content, $revertContent, $cell) {\r\n if (!$revertContent) {\r\n return\r\n }\r\n var contentOffset = $content.offset();\r\n var revertContentOffset = $revertContent.offset();\r\n if (contentOffset.top === revertContentOffset.top && contentOffset.left + $content.width() > revertContentOffset.left) {\r\n var left = $revertContent.width() + PADDING_BETWEEN_TOOLTIPS;\r\n $content.css(\"left\", revertContentOffset.left < $cell.offset().left ? -left : left)\r\n }\r\n },\r\n _getTooltipsSelector: function() {\r\n var invalidMessageClass = this.addWidgetPrefix(WIDGET_INVALID_MESSAGE_CLASS);\r\n var revertTooltipClass = this.addWidgetPrefix(REVERT_TOOLTIP_CLASS);\r\n return \".dx-editor-cell .\" + revertTooltipClass + \", .dx-editor-cell .\" + invalidMessageClass + \", .dx-cell-modified .\" + invalidMessageClass\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._editingController = this.getController(\"editing\");\r\n this._columnsController = this.getController(\"columns\");\r\n this._rowsView = this.getView(\"rowsView\")\r\n },\r\n loseFocus: function(skipValidator) {\r\n if (!skipValidator) {\r\n this.getController(\"validating\").setValidator(null)\r\n }\r\n this.callBase()\r\n },\r\n updateCellState: function($element, validationResult, hideBorder) {\r\n var _change$data;\r\n var $focus = null === $element || void 0 === $element ? void 0 : $element.closest(this._getFocusCellSelector());\r\n var $cell = null !== $focus && void 0 !== $focus && $focus.is(\"td\") ? $focus : null;\r\n var rowOptions = null === $focus || void 0 === $focus ? void 0 : $focus.closest(\".dx-row\").data(\"options\");\r\n var change = rowOptions ? this.getController(\"editing\").getChangeByKey(rowOptions.key) : null;\r\n var column = $cell && this.getController(\"columns\").getVisibleColumns()[$cell.index()];\r\n var isCellModified = void 0 !== (null === change || void 0 === change ? void 0 : null === (_change$data = change.data) || void 0 === _change$data ? void 0 : _change$data[null === column || void 0 === column ? void 0 : column.name]) && !this._editingController.isSaving();\r\n var revertTooltip;\r\n if ((null === validationResult || void 0 === validationResult ? void 0 : validationResult.status) === VALIDATION_STATUS.invalid || isCellModified) {\r\n if (this._editingController.getEditMode() === EDIT_MODE_CELL) {\r\n revertTooltip = this._showRevertButton($focus)\r\n }\r\n }\r\n var showValidationMessage = validationResult && validationResult.status === VALIDATION_STATUS.invalid;\r\n if (showValidationMessage && $cell && column && validationResult && validationResult.brokenRules) {\r\n var errorMessages = [];\r\n validationResult.brokenRules.forEach(function(rule) {\r\n errorMessages.push(rule.message)\r\n });\r\n this._showValidationMessage($focus, errorMessages, column.alignment || \"left\", revertTooltip)\r\n }!hideBorder && this._rowsView.element() && this._rowsView.updateFreeSpaceRowHeight()\r\n },\r\n focus: function($element, hideBorder) {\r\n var _this12 = this;\r\n if (!arguments.length) {\r\n return this.callBase()\r\n }\r\n var $tooltips = $element && $element.closest(\".\" + this.addWidgetPrefix(ROWS_VIEW_CLASS)).find(this._getTooltipsSelector());\r\n $tooltips && $tooltips.remove();\r\n if (null !== $element && void 0 !== $element && $element.hasClass(\"dx-row\")) {\r\n return this.callBase($element, hideBorder)\r\n }\r\n var $focus = null === $element || void 0 === $element ? void 0 : $element.closest(this._getFocusCellSelector());\r\n var callBase = this.callBase;\r\n var validator = $focus && ($focus.data(\"dxValidator\") || $element.find(\".\" + this.addWidgetPrefix(VALIDATOR_CLASS)).eq(0).data(\"dxValidator\"));\r\n var rowOptions = $focus && $focus.closest(\".dx-row\").data(\"options\");\r\n var editingController = this.getController(\"editing\");\r\n var change = rowOptions ? editingController.getChangeByKey(rowOptions.key) : null;\r\n var validationResult;\r\n var validatingController = this.getController(\"validating\");\r\n if (validator) {\r\n validatingController.setValidator(validator);\r\n var value = validator.option(\"adapter\").getValue();\r\n if (cellValueShouldBeValidated(value, rowOptions) || validatingController._rowIsValidated(change)) {\r\n editingController.waitForDeferredOperations().done(function() {\r\n (0, _deferred.when)(validatingController.validateCell(validator)).done(function(result) {\r\n validationResult = result;\r\n var column = validationResult.validator.option(\"dataGetter\")().column;\r\n if (change && column && !validatingController.isCurrentValidatorProcessing({\r\n rowKey: change.key,\r\n columnIndex: column.index\r\n })) {\r\n return\r\n }\r\n if (validationResult.status === VALIDATION_STATUS.invalid) {\r\n hideBorder = true\r\n }\r\n _this12.updateCellState($element, validationResult, hideBorder);\r\n callBase.call(_this12, $element, hideBorder)\r\n })\r\n });\r\n return this.callBase($element, hideBorder)\r\n }\r\n }\r\n this.updateCellState($element, validationResult, hideBorder);\r\n return this.callBase($element, hideBorder)\r\n },\r\n getEditorInstance: function($container) {\r\n var $editor = $container.find(\".dx-texteditor\").eq(0);\r\n return _uiGrid_core2.default.getWidgetInstance($editor)\r\n }\r\n }\r\n }(),\r\n data: {\r\n _isCellChanged: function(oldRow, newRow, visibleRowIndex, columnIndex, isLiveUpdate) {\r\n var _oldRow$cells, _cell$column$validati;\r\n var cell = null === (_oldRow$cells = oldRow.cells) || void 0 === _oldRow$cells ? void 0 : _oldRow$cells[columnIndex];\r\n var oldValidationStatus = cell && cell.validationStatus;\r\n var validatingController = this.getController(\"validating\");\r\n var validationResult = validatingController.getCellValidationResult({\r\n rowKey: oldRow.key,\r\n columnIndex: columnIndex\r\n });\r\n var validationData = validatingController._getValidationData(oldRow.key);\r\n var newValidationStatus = validationResultIsValid(validationResult) ? validationResult.status : validationResult;\r\n var rowIsModified = JSON.stringify(newRow.modifiedValues) !== JSON.stringify(oldRow.modifiedValues);\r\n var cellIsMarkedAsInvalid = (0, _renderer.default)(null === cell || void 0 === cell ? void 0 : cell.cellElement).hasClass(this.addWidgetPrefix(INVALIDATE_CLASS));\r\n var editingChanged = oldRow.isEditing !== newRow.isEditing;\r\n var hasValidationRules = null === cell || void 0 === cell ? void 0 : null === (_cell$column$validati = cell.column.validationRules) || void 0 === _cell$column$validati ? void 0 : _cell$column$validati.length;\r\n if (editingChanged && hasValidationRules || oldValidationStatus !== newValidationStatus && rowIsModified || validationData.isValid && cellIsMarkedAsInvalid) {\r\n return true\r\n }\r\n return this.callBase.apply(this, arguments)\r\n }\r\n }\r\n },\r\n views: {\r\n rowsView: {\r\n updateFreeSpaceRowHeight: function($table) {\r\n var that = this;\r\n var $rowElements;\r\n var $freeSpaceRowElement;\r\n var $freeSpaceRowElements;\r\n var $element = that.element();\r\n var $tooltipContent = $element && $element.find(\".\" + that.addWidgetPrefix(WIDGET_INVALID_MESSAGE_CLASS) + \" .dx-overlay-content\");\r\n that.callBase($table);\r\n if ($tooltipContent && $tooltipContent.length) {\r\n $rowElements = that._getRowElements();\r\n $freeSpaceRowElements = that._getFreeSpaceRowElements($table);\r\n $freeSpaceRowElement = $freeSpaceRowElements.first();\r\n if ($freeSpaceRowElement && 1 === $rowElements.length && (!$freeSpaceRowElement.is(\":visible\") || $tooltipContent.outerHeight() > $freeSpaceRowElement.outerHeight())) {\r\n $freeSpaceRowElements.show();\r\n $freeSpaceRowElements.height($tooltipContent.outerHeight());\r\n return true\r\n }\r\n }\r\n },\r\n _formItemPrepared: function(cellOptions, $container) {\r\n var _this13 = this;\r\n this.callBase.apply(this, arguments);\r\n (0, _common.deferUpdate)(function() {\r\n var $editor = $container.find(\".dx-widget\").first();\r\n var isEditorDisposed = $editor.length && !$editor.children().length;\r\n if (!isEditorDisposed) {\r\n _this13.getController(\"validating\").createValidator(cellOptions, $editor)\r\n }\r\n })\r\n },\r\n _cellPrepared: function($cell, parameters) {\r\n if (!this.getController(\"editing\").isFormEditMode()) {\r\n this.getController(\"validating\").createValidator(parameters, $cell)\r\n }\r\n this.callBase.apply(this, arguments)\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.virtual_scrolling.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _uiGrid_core = require(\"./ui.grid_core.virtual_scrolling_core\");\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _load_indicator = _interopRequireDefault(require(\"../load_indicator\"));\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _type = require(\"../../core/utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar TABLE_CLASS = \"table\";\r\nvar BOTTOM_LOAD_PANEL_CLASS = \"bottom-load-panel\";\r\nvar TABLE_CONTENT_CLASS = \"table-content\";\r\nvar GROUP_SPACE_CLASS = \"group-space\";\r\nvar CONTENT_CLASS = \"content\";\r\nvar ROW_CLASS = \"dx-row\";\r\nvar FREESPACE_CLASS = \"dx-freespace-row\";\r\nvar COLUMN_LINES_CLASS = \"dx-column-lines\";\r\nvar VIRTUAL_ROW_CLASS = \"dx-virtual-row\";\r\nvar SCROLLING_MODE_INFINITE = \"infinite\";\r\nvar SCROLLING_MODE_VIRTUAL = \"virtual\";\r\nvar SCROLLING_MODE_STANDARD = \"standard\";\r\nvar PIXELS_LIMIT = 25e4;\r\nvar LOAD_TIMEOUT = 300;\r\nvar isVirtualMode = function(that) {\r\n return that.option(\"scrolling.mode\") === SCROLLING_MODE_VIRTUAL\r\n};\r\nvar isAppendMode = function(that) {\r\n return that.option(\"scrolling.mode\") === SCROLLING_MODE_INFINITE\r\n};\r\nvar isVirtualRowRendering = function(that) {\r\n var rowRenderingMode = that.option(\"scrolling.rowRenderingMode\");\r\n if (rowRenderingMode === SCROLLING_MODE_VIRTUAL) {\r\n return true\r\n } else {\r\n if (rowRenderingMode === SCROLLING_MODE_STANDARD) {\r\n return false\r\n }\r\n }\r\n};\r\nvar _correctCount = function(items, count, fromEnd, isItemCountableFunc) {\r\n for (var i = 0; i < count + 1; i++) {\r\n var item = items[fromEnd ? items.length - 1 - i : i];\r\n if (item && !isItemCountableFunc(item, i === count, fromEnd)) {\r\n count++\r\n }\r\n }\r\n return count\r\n};\r\nvar isItemCountableByDataSource = function(item, dataSource) {\r\n return \"data\" === item.rowType && !item.isNewRow || \"group\" === item.rowType && dataSource.isGroupItemCountable(item.data)\r\n};\r\nvar VirtualScrollingDataSourceAdapterExtender = function() {\r\n var _updateLoading = function(that) {\r\n var beginPageIndex = that._virtualScrollController.beginPageIndex(-1);\r\n if (isVirtualMode(that)) {\r\n if (beginPageIndex < 0 || that.viewportSize() >= 0 && that.getViewportItemIndex() >= 0 && (beginPageIndex * that.pageSize() > that.getViewportItemIndex() || beginPageIndex * that.pageSize() + that.itemsCount() < that.getViewportItemIndex() + that.viewportSize()) && that._dataSource.isLoading()) {\r\n if (!that._isLoading) {\r\n that._isLoading = true;\r\n that.loadingChanged.fire(true)\r\n }\r\n } else {\r\n if (that._isLoading) {\r\n that._isLoading = false;\r\n that.loadingChanged.fire(false)\r\n }\r\n }\r\n }\r\n };\r\n var result = {\r\n init: function(dataSource) {\r\n var that = this;\r\n that.callBase.apply(that, arguments);\r\n that._items = [];\r\n that._isLoaded = true;\r\n that._virtualScrollController = new _uiGrid_core.VirtualScrollController(that.component, {\r\n pageSize: function() {\r\n return that.pageSize()\r\n },\r\n totalItemsCount: function() {\r\n return that.totalItemsCount()\r\n },\r\n hasKnownLastPage: function() {\r\n return that.hasKnownLastPage()\r\n },\r\n pageIndex: function(index) {\r\n return dataSource.pageIndex(index)\r\n },\r\n isLoading: function() {\r\n return dataSource.isLoading() && !that.isCustomLoading()\r\n },\r\n pageCount: function() {\r\n return that.pageCount()\r\n },\r\n load: function() {\r\n return dataSource.load()\r\n },\r\n updateLoading: function() {\r\n _updateLoading(that)\r\n },\r\n itemsCount: function() {\r\n return that.itemsCount(true)\r\n },\r\n items: function() {\r\n return dataSource.items()\r\n },\r\n viewportItems: function(items) {\r\n if (items) {\r\n that._items = items\r\n }\r\n return that._items\r\n },\r\n onChanged: function(e) {\r\n that.changed.fire(e)\r\n },\r\n changingDuration: function(e) {\r\n if (that.isLoading()) {\r\n return LOAD_TIMEOUT\r\n }\r\n return that._renderTime || 0\r\n }\r\n })\r\n },\r\n _handleLoadingChanged: function(isLoading) {\r\n if (!isVirtualMode(this) || this._isLoadingAll) {\r\n this._isLoading = isLoading;\r\n this.callBase.apply(this, arguments)\r\n }\r\n if (isLoading) {\r\n this._startLoadTime = new Date\r\n } else {\r\n this._startLoadTime = void 0\r\n }\r\n },\r\n _handleLoadError: function() {\r\n var that = this;\r\n that._isLoading = false;\r\n that.loadingChanged.fire(false);\r\n that.callBase.apply(that, arguments)\r\n },\r\n _handleDataChanged: function(e) {\r\n var callBase = this.callBase.bind(this);\r\n this._virtualScrollController.handleDataChanged(callBase, e)\r\n },\r\n _customizeRemoteOperations: function(options, operationTypes) {\r\n var that = this;\r\n if (!that.option(\"legacyRendering\") && isVirtualMode(that) && !operationTypes.reload && operationTypes.skip && that._renderTime < that.option(\"scrolling.renderingThreshold\")) {\r\n options.delay = void 0\r\n }\r\n that.callBase.apply(that, arguments)\r\n },\r\n items: function() {\r\n return this._items\r\n },\r\n itemsCount: function(isBase) {\r\n if (isBase) {\r\n return this.callBase()\r\n }\r\n return this._virtualScrollController.itemsCount()\r\n },\r\n load: function(loadOptions) {\r\n if (loadOptions) {\r\n return this.callBase(loadOptions)\r\n }\r\n return this._virtualScrollController.load()\r\n },\r\n isLoading: function() {\r\n return this._isLoading\r\n },\r\n isLoaded: function() {\r\n return this._dataSource.isLoaded() && this._isLoaded\r\n },\r\n resetPagesCache: function(isLiveUpdate) {\r\n if (!isLiveUpdate) {\r\n this._virtualScrollController.reset(true)\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _changeRowExpandCore: function() {\r\n var result = this.callBase.apply(this, arguments);\r\n this.resetPagesCache();\r\n _updateLoading(this);\r\n return result\r\n },\r\n reload: function() {\r\n this._dataSource.pageIndex(this.pageIndex());\r\n var virtualScrollController = this._virtualScrollController;\r\n if (virtualScrollController) {\r\n var d = new _deferred.Deferred;\r\n this.callBase.apply(this, arguments).done(function(r) {\r\n var delayDeferred = virtualScrollController._delayDeferred;\r\n if (delayDeferred) {\r\n delayDeferred.done(d.resolve).fail(d.reject)\r\n } else {\r\n d.resolve(r)\r\n }\r\n }).fail(d.reject);\r\n return d\r\n } else {\r\n return this.callBase.apply(this, arguments)\r\n }\r\n },\r\n refresh: function(options, operationTypes) {\r\n var that = this;\r\n var storeLoadOptions = options.storeLoadOptions;\r\n var dataSource = that._dataSource;\r\n if (operationTypes.reload) {\r\n that._virtualScrollController.reset();\r\n dataSource.items().length = 0;\r\n that._isLoaded = false;\r\n _updateLoading(that);\r\n that._isLoaded = true;\r\n if (isAppendMode(that)) {\r\n that.pageIndex(0);\r\n dataSource.pageIndex(0);\r\n storeLoadOptions.pageIndex = 0;\r\n options.pageIndex = 0;\r\n storeLoadOptions.skip = 0\r\n } else {\r\n dataSource.pageIndex(that.pageIndex());\r\n if (dataSource.paginate()) {\r\n options.pageIndex = that.pageIndex();\r\n storeLoadOptions.skip = that.pageIndex() * that.pageSize()\r\n }\r\n }\r\n } else {\r\n if (isAppendMode(that) && storeLoadOptions.skip && that._skipCorrection < 0) {\r\n storeLoadOptions.skip += that._skipCorrection\r\n }\r\n }\r\n return that.callBase.apply(that, arguments)\r\n },\r\n dispose: function() {\r\n this._virtualScrollController.dispose();\r\n this.callBase.apply(this, arguments)\r\n }\r\n };\r\n [\"virtualItemsCount\", \"getContentOffset\", \"getVirtualContentSize\", \"setContentSize\", \"setViewportPosition\", \"getViewportItemIndex\", \"setViewportItemIndex\", \"getItemIndexByPosition\", \"viewportSize\", \"viewportItemSize\", \"getItemSize\", \"getItemSizes\", \"pageIndex\", \"beginPageIndex\", \"endPageIndex\", \"loadIfNeed\"].forEach(function(name) {\r\n result[name] = function() {\r\n var virtualScrollController = this._virtualScrollController;\r\n return virtualScrollController[name].apply(virtualScrollController, arguments)\r\n }\r\n });\r\n return result\r\n}();\r\nvar VirtualScrollingRowsViewExtender = function() {\r\n var removeEmptyRows = function($emptyRows, className) {\r\n var getRowParent = function(row) {\r\n return (0, _renderer.default)(row).parent(\".\" + className).get(0)\r\n };\r\n var tBodies = $emptyRows.toArray().map(getRowParent).filter(function(row) {\r\n return row\r\n });\r\n if (tBodies.length) {\r\n $emptyRows = (0, _renderer.default)(tBodies)\r\n }\r\n var rowCount = className === FREESPACE_CLASS ? $emptyRows.length - 1 : $emptyRows.length;\r\n for (var i = 0; i < rowCount; i++) {\r\n $emptyRows.eq(i).remove()\r\n }\r\n };\r\n return {\r\n init: function() {\r\n var _dataController$state, _this = this;\r\n var dataController = this.getController(\"data\");\r\n this.callBase();\r\n dataController.pageChanged.add(function() {\r\n _this.scrollToPage(dataController.pageIndex())\r\n });\r\n dataController.dataSourceChanged.add(function() {\r\n !_this._scrollTop && _this._scrollToCurrentPageOnResize()\r\n });\r\n null === (_dataController$state = dataController.stateLoaded) || void 0 === _dataController$state ? void 0 : _dataController$state.add(function() {\r\n _this._scrollToCurrentPageOnResize()\r\n });\r\n this._scrollToCurrentPageOnResize()\r\n },\r\n _scrollToCurrentPageOnResize: function() {\r\n var _this2 = this;\r\n var dataController = this.getController(\"data\");\r\n if (!this.option(\"legacyRendering\") && dataController.pageIndex() > 0) {\r\n var resizeHandler = function resizeHandler() {\r\n _this2.resizeCompleted.remove(resizeHandler);\r\n _this2.scrollToPage(dataController.pageIndex())\r\n };\r\n this.resizeCompleted.add(resizeHandler)\r\n }\r\n },\r\n scrollToPage: function(pageIndex) {\r\n var that = this;\r\n var dataController = that._dataController;\r\n var pageSize = dataController ? dataController.pageSize() : 0;\r\n var scrollPosition;\r\n if (isVirtualMode(that) || isAppendMode(that)) {\r\n var itemSize = dataController.getItemSize();\r\n var itemSizes = dataController.getItemSizes();\r\n var itemIndex = pageIndex * pageSize;\r\n scrollPosition = itemIndex * itemSize;\r\n for (var index in itemSizes) {\r\n if (index < itemIndex) {\r\n scrollPosition += itemSizes[index] - itemSize\r\n }\r\n }\r\n } else {\r\n scrollPosition = 0\r\n }\r\n that.scrollTo({\r\n y: scrollPosition,\r\n x: that._scrollLeft\r\n })\r\n },\r\n renderDelayedTemplates: function(e) {\r\n this._updateContentPosition(true);\r\n this.callBase.apply(this, arguments)\r\n },\r\n _renderCore: function(e) {\r\n var that = this;\r\n var startRenderTime = new Date;\r\n that.callBase.apply(that, arguments);\r\n var dataSource = that._dataController._dataSource;\r\n if (dataSource && e) {\r\n var itemCount = e.items ? e.items.length : 20;\r\n var viewportSize = that._dataController.viewportSize() || 20;\r\n if (isVirtualRowRendering(that)) {\r\n dataSource._renderTime = (new Date - startRenderTime) * viewportSize / itemCount\r\n } else {\r\n dataSource._renderTime = new Date - startRenderTime\r\n }\r\n }\r\n },\r\n _getRowElements: function(tableElement) {\r\n var $rows = this.callBase(tableElement);\r\n return $rows && $rows.not(\".\" + VIRTUAL_ROW_CLASS)\r\n },\r\n _renderContent: function(contentElement, tableElement) {\r\n var that = this;\r\n var virtualItemsCount = that._dataController.virtualItemsCount();\r\n if (virtualItemsCount && that.option(\"legacyRendering\")) {\r\n if ((0, _window.hasWindow)()) {\r\n tableElement.addClass(that.addWidgetPrefix(TABLE_CONTENT_CLASS))\r\n }\r\n if (!contentElement.children().length) {\r\n contentElement.append(tableElement)\r\n } else {\r\n contentElement.children().first().replaceWith(tableElement)\r\n }\r\n if (1 === contentElement.children(\"table\").length) {\r\n contentElement.append(that._createTable());\r\n that._contentHeight = 0\r\n }\r\n return contentElement\r\n }\r\n return that.callBase.apply(that, arguments)\r\n },\r\n _removeRowsElements: function(contentTable, removeCount, changeType) {\r\n var rowElements = this._getRowElements(contentTable).toArray();\r\n if (\"append\" === changeType) {\r\n rowElements = rowElements.slice(0, removeCount)\r\n } else {\r\n rowElements = rowElements.slice(-removeCount)\r\n }\r\n var errorHandlingController = this.getController(\"errorHandling\");\r\n rowElements.map(function(rowElement) {\r\n var $rowElement = (0, _renderer.default)(rowElement);\r\n errorHandlingController && errorHandlingController.removeErrorRow($rowElement.next());\r\n $rowElement.remove()\r\n })\r\n },\r\n _restoreErrorRow: function(contentTable) {\r\n var editingController = this.getController(\"editing\");\r\n editingController && editingController.hasChanges() && this._getRowElements(contentTable).each(function(_, item) {\r\n var rowOptions = (0, _renderer.default)(item).data(\"options\");\r\n if (rowOptions) {\r\n var change = editingController.getChangeByKey(rowOptions.key);\r\n change && editingController._showErrorRow(change)\r\n }\r\n })\r\n },\r\n _updateContent: function(tableElement, change) {\r\n var that = this;\r\n var $freeSpaceRowElements;\r\n var contentElement = that._findContentElement();\r\n var changeType = change && change.changeType;\r\n if (\"append\" === changeType || \"prepend\" === changeType) {\r\n var contentTable = contentElement.children().first();\r\n var $tBodies = that._getBodies(tableElement);\r\n if (!that.option(\"legacyRendering\") && 1 === $tBodies.length) {\r\n that._getBodies(contentTable)[\"append\" === changeType ? \"append\" : \"prepend\"]($tBodies.children())\r\n } else {\r\n $tBodies[\"append\" === changeType ? \"appendTo\" : \"prependTo\"](contentTable)\r\n }\r\n tableElement.remove();\r\n $freeSpaceRowElements = that._getFreeSpaceRowElements(contentTable);\r\n removeEmptyRows($freeSpaceRowElements, FREESPACE_CLASS);\r\n if (change.removeCount) {\r\n that._removeRowsElements(contentTable, change.removeCount, changeType)\r\n }\r\n that._restoreErrorRow(contentTable)\r\n } else {\r\n that.callBase.apply(that, arguments)\r\n }\r\n that._updateBottomLoading()\r\n },\r\n _addVirtualRow: function($table, isFixed, location, position) {\r\n if (!position) {\r\n return\r\n }\r\n var $virtualRow = this._createEmptyRow(VIRTUAL_ROW_CLASS, isFixed, position);\r\n $virtualRow = this._wrapRowIfNeed($table, $virtualRow);\r\n this._appendEmptyRow($table, $virtualRow, location)\r\n },\r\n _getRowHeights: function() {\r\n var rowHeights = this._getRowElements(this._tableElement).toArray().map(function(row) {\r\n return (0, _position.getBoundingRect)(row).height\r\n });\r\n return rowHeights\r\n },\r\n _correctRowHeights: function(rowHeights) {\r\n var dataController = this._dataController;\r\n var dataSource = dataController._dataSource;\r\n var correctedRowHeights = [];\r\n var visibleRows = dataController.getVisibleRows();\r\n var itemSize = 0;\r\n var firstCountableItem = true;\r\n for (var i = 0; i < rowHeights.length; i++) {\r\n var currentItem = visibleRows[i];\r\n if (!(0, _type.isDefined)(currentItem)) {\r\n continue\r\n }\r\n if (isItemCountableByDataSource(currentItem, dataSource)) {\r\n if (firstCountableItem) {\r\n firstCountableItem = false\r\n } else {\r\n correctedRowHeights.push(itemSize);\r\n itemSize = 0\r\n }\r\n }\r\n itemSize += rowHeights[i]\r\n }\r\n itemSize > 0 && correctedRowHeights.push(itemSize);\r\n return correctedRowHeights\r\n },\r\n _updateContentPosition: function(isRender) {\r\n var that = this;\r\n var dataController = that._dataController;\r\n var rowHeight = that._rowHeight || 20;\r\n dataController.viewportItemSize(rowHeight);\r\n if (!that.option(\"legacyRendering\") && (isVirtualMode(that) || isVirtualRowRendering(that))) {\r\n if (!isRender) {\r\n var rowHeights = that._getRowHeights();\r\n var correctedRowHeights = that._correctRowHeights(rowHeights);\r\n dataController.setContentSize(correctedRowHeights)\r\n }\r\n var top = dataController.getContentOffset(\"begin\");\r\n var bottom = dataController.getContentOffset(\"end\");\r\n var $tables = that.getTableElements();\r\n var $virtualRows = $tables.children(\"tbody\").children(\".\" + VIRTUAL_ROW_CLASS);\r\n removeEmptyRows($virtualRows, VIRTUAL_ROW_CLASS);\r\n $tables.each(function(index) {\r\n var isFixed = index > 0;\r\n that._isFixedTableRendering = isFixed;\r\n that._addVirtualRow((0, _renderer.default)(this), isFixed, \"top\", top);\r\n that._addVirtualRow((0, _renderer.default)(this), isFixed, \"bottom\", bottom);\r\n that._isFixedTableRendering = false\r\n })\r\n } else {\r\n (0, _common.deferUpdate)(function() {\r\n that._updateContentPositionCore()\r\n })\r\n }\r\n },\r\n _updateContentPositionCore: function() {\r\n var that = this;\r\n var contentHeight;\r\n var $tables;\r\n var $contentTable;\r\n var rowHeight = that._rowHeight || 20;\r\n var virtualItemsCount = that._dataController.virtualItemsCount();\r\n if (virtualItemsCount) {\r\n var contentElement = that._findContentElement();\r\n $tables = contentElement.children();\r\n $contentTable = $tables.eq(0);\r\n var virtualTable = $tables.eq(1);\r\n that._contentTableHeight = $contentTable[0].offsetHeight;\r\n that._dataController.viewportItemSize(rowHeight);\r\n that._dataController.setContentSize(that._contentTableHeight);\r\n contentHeight = that._dataController.getVirtualContentSize();\r\n var top = that._dataController.getContentOffset();\r\n (0, _common.deferRender)(function() {\r\n (0, _translator.move)($contentTable, {\r\n left: 0,\r\n top: top\r\n });\r\n var isRenderVirtualTableContentRequired = that._contentHeight !== contentHeight || 0 === contentHeight || !that._isTableLinesDisplaysCorrect(virtualTable) || !that._isColumnElementsEqual($contentTable.find(\"col\"), virtualTable.find(\"col\"));\r\n if (isRenderVirtualTableContentRequired) {\r\n that._contentHeight = contentHeight;\r\n that._renderVirtualTableContent(virtualTable, contentHeight)\r\n }\r\n })\r\n }\r\n },\r\n _isTableLinesDisplaysCorrect: function(table) {\r\n var hasColumnLines = table.find(\".\" + COLUMN_LINES_CLASS).length > 0;\r\n return hasColumnLines === this.option(\"showColumnLines\")\r\n },\r\n _isColumnElementsEqual: function($columns, $virtualColumns) {\r\n var result = $columns.length === $virtualColumns.length;\r\n if (result) {\r\n (0, _iterator.each)($columns, function(index, element) {\r\n if (element.style.width !== $virtualColumns[index].style.width) {\r\n result = false;\r\n return result\r\n }\r\n })\r\n }\r\n return result\r\n },\r\n _renderVirtualTableContent: function(container, height) {\r\n var that = this;\r\n var columns = that._columnsController.getVisibleColumns();\r\n var html = that._createColGroup(columns).prop(\"outerHTML\");\r\n var freeSpaceCellsHtml = \"\";\r\n var columnLinesClass = that.option(\"showColumnLines\") ? COLUMN_LINES_CLASS : \"\";\r\n var createFreeSpaceRowHtml = function(height) {\r\n return \"\" + freeSpaceCellsHtml + \"\"\r\n };\r\n for (var i = 0; i < columns.length; i++) {\r\n var classes = that._getCellClasses(columns[i]);\r\n var classString = classes.length ? \" class='\" + classes.join(\" \") + \"'\" : \"\";\r\n freeSpaceCellsHtml += \"\"\r\n }\r\n while (height > PIXELS_LIMIT) {\r\n html += createFreeSpaceRowHtml(PIXELS_LIMIT);\r\n height -= PIXELS_LIMIT\r\n }\r\n html += createFreeSpaceRowHtml(height);\r\n container.addClass(that.addWidgetPrefix(TABLE_CLASS));\r\n container.html(html)\r\n },\r\n _getCellClasses: function(column) {\r\n var classes = [];\r\n var cssClass = column.cssClass;\r\n var isExpandColumn = \"expand\" === column.command;\r\n cssClass && classes.push(cssClass);\r\n isExpandColumn && classes.push(this.addWidgetPrefix(GROUP_SPACE_CLASS));\r\n return classes\r\n },\r\n _findBottomLoadPanel: function($contentElement) {\r\n var $element = $contentElement || this.element();\r\n var $bottomLoadPanel = $element && $element.find(\".\" + this.addWidgetPrefix(BOTTOM_LOAD_PANEL_CLASS));\r\n if ($bottomLoadPanel && $bottomLoadPanel.length) {\r\n return $bottomLoadPanel\r\n }\r\n },\r\n _updateBottomLoading: function() {\r\n var that = this;\r\n var scrollingMode = that.option(\"scrolling.mode\");\r\n var virtualMode = scrollingMode === SCROLLING_MODE_VIRTUAL;\r\n var appendMode = scrollingMode === SCROLLING_MODE_INFINITE;\r\n var showBottomLoading = !that._dataController.hasKnownLastPage() && that._dataController.isLoaded() && (virtualMode || appendMode);\r\n var $contentElement = that._findContentElement();\r\n var bottomLoadPanelElement = that._findBottomLoadPanel($contentElement);\r\n if (showBottomLoading) {\r\n if (!bottomLoadPanelElement) {\r\n (0, _renderer.default)(\"
\").addClass(that.addWidgetPrefix(BOTTOM_LOAD_PANEL_CLASS)).append(that._createComponent((0, _renderer.default)(\"
\"), _load_indicator.default).$element()).appendTo($contentElement)\r\n }\r\n } else {\r\n if (bottomLoadPanelElement) {\r\n bottomLoadPanelElement.remove()\r\n }\r\n }\r\n },\r\n _handleScroll: function(e) {\r\n var that = this;\r\n if (that._hasHeight && that._rowHeight) {\r\n that._dataController.setViewportPosition(e.scrollOffset.top)\r\n }\r\n that.callBase.apply(that, arguments)\r\n },\r\n _needUpdateRowHeight: function(itemsCount) {\r\n var that = this;\r\n return that.callBase.apply(that, arguments) || itemsCount > 0 && that.option(\"scrolling.mode\") === SCROLLING_MODE_INFINITE && that.option(\"scrolling.rowRenderingMode\") !== SCROLLING_MODE_VIRTUAL\r\n },\r\n _updateRowHeight: function() {\r\n var that = this;\r\n that.callBase.apply(that, arguments);\r\n if (that._rowHeight) {\r\n that._updateContentPosition();\r\n var viewportHeight = that._hasHeight ? that.element().outerHeight() : (0, _renderer.default)((0, _window.getWindow)()).outerHeight();\r\n var dataController = this._dataController;\r\n var itemsCount = dataController.items().length;\r\n var $tableElement = this.getTableElement();\r\n var rowsHeight = this._getRowsHeight($tableElement);\r\n var rowHeight = itemsCount ? rowsHeight / itemsCount : this._rowHeight;\r\n dataController.viewportSize(Math.ceil(viewportHeight / rowHeight))\r\n }\r\n },\r\n updateFreeSpaceRowHeight: function() {\r\n var result = this.callBase.apply(this, arguments);\r\n if (result) {\r\n this._updateContentPosition()\r\n }\r\n return result\r\n },\r\n setLoading: function(isLoading, messageText) {\r\n var that = this;\r\n var callBase = that.callBase;\r\n var dataController = that._dataController;\r\n var hasBottomLoadPanel = dataController.pageIndex() > 0 && dataController.isLoaded() && !!that._findBottomLoadPanel();\r\n if (hasBottomLoadPanel) {\r\n isLoading = false\r\n }\r\n callBase.call(that, isLoading, messageText)\r\n },\r\n _resizeCore: function() {\r\n var that = this;\r\n var $element = that.element();\r\n that.callBase();\r\n if (that.component.$element() && !that._windowScroll && $element.closest((0, _window.getWindow)().document).length) {\r\n that._windowScroll = (0, _uiGrid_core.subscribeToExternalScrollers)($element, function(scrollPos) {\r\n if (!that._hasHeight && that._rowHeight) {\r\n that._dataController.setViewportPosition(scrollPos)\r\n }\r\n }, that.component.$element());\r\n that.on(\"disposing\", function() {\r\n that._windowScroll.dispose()\r\n })\r\n }\r\n that.loadIfNeed()\r\n },\r\n loadIfNeed: function() {\r\n var dataController = this._dataController;\r\n if (dataController && dataController.loadIfNeed) {\r\n dataController.loadIfNeed()\r\n }\r\n },\r\n setColumnWidths: function(widths) {\r\n var scrollable = this.getScrollable();\r\n var $content;\r\n this.callBase.apply(this, arguments);\r\n if (\"virtual\" === this.option(\"scrolling.mode\")) {\r\n $content = scrollable ? scrollable.$content() : this.element();\r\n this.callBase(widths, $content.children(\".\" + this.addWidgetPrefix(CONTENT_CLASS)).children(\":not(.\" + this.addWidgetPrefix(TABLE_CONTENT_CLASS) + \")\"))\r\n }\r\n },\r\n dispose: function() {\r\n clearTimeout(this._scrollTimeoutID);\r\n this.callBase()\r\n }\r\n }\r\n}();\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n scrolling: {\r\n timeout: 300,\r\n updateTimeout: 300,\r\n minTimeout: 0,\r\n renderingThreshold: 100,\r\n removeInvisiblePages: true,\r\n rowPageSize: 5,\r\n mode: \"standard\",\r\n preloadEnabled: false,\r\n rowRenderingMode: \"standard\",\r\n loadTwoPagesOnStart: false\r\n }\r\n }\r\n },\r\n extenders: {\r\n dataSourceAdapter: VirtualScrollingDataSourceAdapterExtender,\r\n controllers: {\r\n data: function() {\r\n var members = {\r\n _refreshDataSource: function() {\r\n var baseResult = this.callBase.apply(this, arguments) || (new _deferred.Deferred).resolve().promise();\r\n baseResult.done(this.initVirtualRows.bind(this));\r\n return baseResult\r\n },\r\n getRowPageSize: function() {\r\n var rowPageSize = this.option(\"scrolling.rowPageSize\");\r\n var pageSize = this.pageSize();\r\n return pageSize && pageSize < rowPageSize ? pageSize : rowPageSize\r\n },\r\n reload: function() {\r\n var that = this;\r\n var rowsScrollController = that._rowsScrollController || that._dataSource;\r\n var itemIndex = rowsScrollController && rowsScrollController.getItemIndexByPosition();\r\n var result = this.callBase.apply(this, arguments);\r\n return result && result.done(function() {\r\n if (isVirtualMode(that) || isVirtualRowRendering(that)) {\r\n var rowIndexOffset = that.getRowIndexOffset();\r\n var rowIndex = Math.floor(itemIndex) - rowIndexOffset;\r\n var component = that.component;\r\n var scrollable = component.getScrollable && component.getScrollable();\r\n var isSortingOperation = that.dataSource().operationTypes().sorting;\r\n if (scrollable && !that.option(\"legacyRendering\") && !isSortingOperation) {\r\n var rowElement = component.getRowElement(rowIndex);\r\n var $rowElement = rowElement && rowElement[0] && (0, _renderer.default)(rowElement[0]);\r\n var top = $rowElement && $rowElement.position().top;\r\n var isChromeLatest = _browser.default.chrome && _browser.default.version >= 91;\r\n var allowedTopOffset = _browser.default.mozilla || _browser.default.msie || isChromeLatest ? 1 : 0;\r\n if (top > allowedTopOffset) {\r\n top = Math.round(top + $rowElement.outerHeight() * (itemIndex % 1));\r\n scrollable.scrollTo({\r\n y: top\r\n })\r\n }\r\n }\r\n }\r\n })\r\n },\r\n initVirtualRows: function() {\r\n var that = this;\r\n var virtualRowsRendering = isVirtualRowRendering(that);\r\n if (\"virtual\" !== that.option(\"scrolling.mode\") && true !== virtualRowsRendering || false === virtualRowsRendering || that.option(\"legacyRendering\") || !that.option(\"scrolling.rowPageSize\")) {\r\n that._visibleItems = null;\r\n that._rowsScrollController = null;\r\n return\r\n }\r\n var pageIndex = !isVirtualMode(this) && that.pageIndex() >= that.pageCount() ? that.pageCount() - 1 : that.pageIndex();\r\n that._rowPageIndex = Math.ceil(pageIndex * that.pageSize() / that.getRowPageSize());\r\n that._visibleItems = [];\r\n var isItemCountable = function(item) {\r\n return isItemCountableByDataSource(item, that._dataSource)\r\n };\r\n that._rowsScrollController = new _uiGrid_core.VirtualScrollController(that.component, {\r\n pageSize: function() {\r\n return that.getRowPageSize()\r\n },\r\n totalItemsCount: function() {\r\n return isVirtualMode(that) ? that.totalItemsCount() : that._items.filter(isItemCountable).length\r\n },\r\n hasKnownLastPage: function() {\r\n return true\r\n },\r\n pageIndex: function(index) {\r\n if (void 0 !== index) {\r\n that._rowPageIndex = index\r\n }\r\n return that._rowPageIndex\r\n },\r\n isLoading: function() {\r\n return that.isLoading()\r\n },\r\n pageCount: function pageCount() {\r\n var pageCount = Math.ceil(this.totalItemsCount() / this.pageSize());\r\n return pageCount ? pageCount : 1\r\n },\r\n load: function() {\r\n if (that._rowsScrollController.pageIndex() >= this.pageCount()) {\r\n that._rowPageIndex = this.pageCount() - 1;\r\n that._rowsScrollController.pageIndex(that._rowPageIndex)\r\n }\r\n if (!that._rowsScrollController._dataSource.items().length && this.totalItemsCount()) {\r\n return\r\n }\r\n that._rowsScrollController.handleDataChanged(function(change) {\r\n change = change || {};\r\n change.changeType = change.changeType || \"refresh\";\r\n change.items = change.items || that._visibleItems;\r\n that._visibleItems.forEach(function(item, index) {\r\n item.rowIndex = index\r\n });\r\n that._fireChanged(change)\r\n })\r\n },\r\n updateLoading: function() {},\r\n itemsCount: function() {\r\n return that._rowsScrollController._dataSource.items().filter(isItemCountable).length\r\n },\r\n correctCount: function(items, count, fromEnd) {\r\n return _correctCount(items, count, fromEnd, function(item, isNextAfterLast, fromEnd) {\r\n if (item.isNewRow) {\r\n return isNextAfterLast && !fromEnd\r\n }\r\n if (isNextAfterLast && fromEnd) {\r\n return !item.isNewRow\r\n }\r\n return isItemCountable(item)\r\n })\r\n },\r\n items: function(countableOnly) {\r\n var dataSource = that.dataSource();\r\n var virtualItemsCount = dataSource && dataSource.virtualItemsCount();\r\n var begin = virtualItemsCount ? virtualItemsCount.begin : 0;\r\n var rowPageSize = that.getRowPageSize();\r\n var skip = that._rowPageIndex * rowPageSize - begin;\r\n var take = rowPageSize;\r\n var result = that._items;\r\n if (skip < 0) {\r\n return []\r\n }\r\n if (skip) {\r\n skip = this.correctCount(result, skip);\r\n result = result.slice(skip)\r\n }\r\n if (take) {\r\n take = this.correctCount(result, take);\r\n result = result.slice(0, take)\r\n }\r\n return countableOnly ? result.filter(isItemCountable) : result\r\n },\r\n viewportItems: function(items) {\r\n if (items) {\r\n that._visibleItems = items\r\n }\r\n return that._visibleItems\r\n },\r\n onChanged: function() {},\r\n changingDuration: function(e) {\r\n var dataSource = that.dataSource();\r\n if (dataSource.isLoading()) {\r\n return LOAD_TIMEOUT\r\n }\r\n return (null === dataSource || void 0 === dataSource ? void 0 : dataSource._renderTime) || 0\r\n }\r\n }, true);\r\n that._rowsScrollController.positionChanged.add(function() {\r\n var _that$_dataSource;\r\n null === (_that$_dataSource = that._dataSource) || void 0 === _that$_dataSource ? void 0 : _that$_dataSource.setViewportItemIndex(that._rowsScrollController.getViewportItemIndex())\r\n });\r\n if (that.isLoaded()) {\r\n that._rowsScrollController.load()\r\n }\r\n },\r\n _updateItemsCore: function(change) {\r\n var _this3 = this;\r\n var delta = this.getRowIndexDelta();\r\n this.callBase.apply(this, arguments);\r\n var rowsScrollController = this._rowsScrollController;\r\n if (rowsScrollController) {\r\n var visibleItems = this._visibleItems;\r\n var isRefresh = \"refresh\" === change.changeType || change.isLiveUpdate;\r\n if (\"append\" === change.changeType && change.items && !change.items.length) {\r\n return\r\n }\r\n if (isRefresh || \"append\" === change.changeType || \"prepend\" === change.changeType) {\r\n change.cancel = true;\r\n isRefresh && rowsScrollController.reset(true);\r\n rowsScrollController.load()\r\n } else {\r\n if (\"update\" === change.changeType) {\r\n change.rowIndices.forEach(function(rowIndex, index) {\r\n var changeType = change.changeTypes[index];\r\n var newItem = change.items[index];\r\n if (\"update\" === changeType) {\r\n visibleItems[rowIndex] = newItem\r\n } else {\r\n if (\"insert\" === changeType) {\r\n visibleItems.splice(rowIndex, 0, newItem)\r\n } else {\r\n if (\"remove\" === changeType) {\r\n visibleItems.splice(rowIndex, 1)\r\n }\r\n }\r\n }\r\n })\r\n } else {\r\n visibleItems.forEach(function(item, index) {\r\n visibleItems[index] = _this3._items[index + delta] || visibleItems[index]\r\n });\r\n change.items = visibleItems\r\n }\r\n visibleItems.forEach(function(item, index) {\r\n item.rowIndex = index\r\n })\r\n }\r\n }\r\n },\r\n _applyChange: function(change) {\r\n var that = this;\r\n var items = change.items;\r\n var changeType = change.changeType;\r\n var removeCount = change.removeCount;\r\n if (removeCount) {\r\n var fromEnd = \"prepend\" === changeType;\r\n removeCount = _correctCount(that._items, removeCount, fromEnd, function(item, isNextAfterLast) {\r\n return \"data\" === item.rowType && !item.isNewRow || \"group\" === item.rowType && (that._dataSource.isGroupItemCountable(item.data) || isNextAfterLast)\r\n });\r\n change.removeCount = removeCount\r\n }\r\n switch (changeType) {\r\n case \"prepend\":\r\n that._items.unshift.apply(that._items, items);\r\n if (removeCount) {\r\n that._items.splice(-removeCount)\r\n }\r\n break;\r\n case \"append\":\r\n that._items.push.apply(that._items, items);\r\n if (removeCount) {\r\n that._items.splice(0, removeCount)\r\n }\r\n break;\r\n default:\r\n that.callBase(change)\r\n }\r\n },\r\n items: function(allItems) {\r\n return allItems ? this._items : this._visibleItems || this._items\r\n },\r\n getRowIndexDelta: function() {\r\n var visibleItems = this._visibleItems;\r\n var delta = 0;\r\n if (visibleItems && visibleItems[0]) {\r\n delta = this._items.indexOf(visibleItems[0])\r\n }\r\n return delta < 0 ? 0 : delta\r\n },\r\n getRowIndexOffset: function(byLoadedRows) {\r\n var offset = 0;\r\n var dataSource = this.dataSource();\r\n var rowsScrollController = this._rowsScrollController;\r\n if (rowsScrollController && !byLoadedRows) {\r\n offset = rowsScrollController.beginPageIndex() * rowsScrollController._dataSource.pageSize()\r\n } else {\r\n if (\"virtual\" === this.option(\"scrolling.mode\") && dataSource) {\r\n offset = dataSource.beginPageIndex() * dataSource.pageSize()\r\n }\r\n }\r\n return offset\r\n },\r\n viewportSize: function() {\r\n var rowsScrollController = this._rowsScrollController;\r\n rowsScrollController && rowsScrollController.viewportSize.apply(rowsScrollController, arguments);\r\n var dataSource = this._dataSource;\r\n return dataSource && dataSource.viewportSize.apply(dataSource, arguments)\r\n },\r\n viewportItemSize: function() {\r\n var rowsScrollController = this._rowsScrollController;\r\n rowsScrollController && rowsScrollController.viewportItemSize.apply(rowsScrollController, arguments);\r\n var dataSource = this._dataSource;\r\n return dataSource && dataSource.viewportItemSize.apply(dataSource, arguments)\r\n },\r\n setViewportPosition: function() {\r\n var rowsScrollController = this._rowsScrollController;\r\n var dataSource = this._dataSource;\r\n if (rowsScrollController) {\r\n rowsScrollController.setViewportPosition.apply(rowsScrollController, arguments)\r\n } else {\r\n null === dataSource || void 0 === dataSource ? void 0 : dataSource.setViewportPosition.apply(dataSource, arguments)\r\n }\r\n },\r\n setContentSize: function(sizes) {\r\n var rowsScrollController = this._rowsScrollController;\r\n rowsScrollController && rowsScrollController.setContentSize(sizes);\r\n var dataSource = this._dataSource;\r\n return dataSource && dataSource.setContentSize(sizes)\r\n },\r\n loadIfNeed: function() {\r\n var rowsScrollController = this._rowsScrollController;\r\n rowsScrollController && rowsScrollController.loadIfNeed();\r\n var dataSource = this._dataSource;\r\n return dataSource && dataSource.loadIfNeed()\r\n },\r\n getItemSize: function() {\r\n var rowsScrollController = this._rowsScrollController;\r\n if (rowsScrollController) {\r\n return rowsScrollController.getItemSize.apply(rowsScrollController, arguments)\r\n }\r\n var dataSource = this._dataSource;\r\n return dataSource && dataSource.getItemSize.apply(dataSource, arguments)\r\n },\r\n getItemSizes: function() {\r\n var rowsScrollController = this._rowsScrollController;\r\n if (rowsScrollController) {\r\n return rowsScrollController.getItemSizes.apply(rowsScrollController, arguments)\r\n }\r\n var dataSource = this._dataSource;\r\n return dataSource && dataSource.getItemSizes.apply(dataSource, arguments)\r\n },\r\n getContentOffset: function() {\r\n var rowsScrollController = this._rowsScrollController;\r\n if (rowsScrollController) {\r\n return rowsScrollController.getContentOffset.apply(rowsScrollController, arguments)\r\n }\r\n var dataSource = this._dataSource;\r\n return dataSource && dataSource.getContentOffset.apply(dataSource, arguments)\r\n },\r\n refresh: function(options) {\r\n var dataSource = this._dataSource;\r\n if (dataSource && options && options.load && isAppendMode(this)) {\r\n dataSource.resetCurrentTotalCount()\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n dispose: function() {\r\n var rowsScrollController = this._rowsScrollController;\r\n rowsScrollController && rowsScrollController.dispose();\r\n this.callBase.apply(this, arguments)\r\n },\r\n virtualItemsCount: function() {\r\n var rowsScrollController = this._rowsScrollController;\r\n if (rowsScrollController) {\r\n return rowsScrollController.virtualItemsCount.apply(rowsScrollController, arguments)\r\n }\r\n var dataSource = this._dataSource;\r\n return null === dataSource || void 0 === dataSource ? void 0 : dataSource.virtualItemsCount.apply(dataSource, arguments)\r\n }\r\n };\r\n _uiGrid_core2.default.proxyMethod(members, \"getVirtualContentSize\");\r\n _uiGrid_core2.default.proxyMethod(members, \"setViewportItemIndex\");\r\n return members\r\n }(),\r\n resizing: {\r\n resize: function() {\r\n var that = this;\r\n var callBase = that.callBase;\r\n var result;\r\n if (!that.option(\"legacyRendering\") && (isVirtualMode(that) || isVirtualRowRendering(that))) {\r\n clearTimeout(that._resizeTimeout);\r\n var diff = new Date - that._lastTime;\r\n var updateTimeout = that.option(\"scrolling.updateTimeout\");\r\n if (that._lastTime && diff < updateTimeout) {\r\n result = new _deferred.Deferred;\r\n that._resizeTimeout = setTimeout(function() {\r\n callBase.apply(that).done(result.resolve).fail(result.reject);\r\n that._lastTime = new Date\r\n }, updateTimeout);\r\n that._lastTime = new Date\r\n } else {\r\n result = callBase.apply(that);\r\n if (that._dataController.isLoaded()) {\r\n that._lastTime = new Date\r\n }\r\n }\r\n } else {\r\n result = callBase.apply(that)\r\n }\r\n return result\r\n },\r\n dispose: function() {\r\n this.callBase.apply(this, arguments);\r\n clearTimeout(this._resizeTimeout)\r\n }\r\n }\r\n },\r\n views: {\r\n rowsView: VirtualScrollingRowsViewExtender\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.virtual_scrolling_core.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.VirtualScrollController = void 0;\r\nexports.getContentHeightLimit = getContentHeightLimit;\r\nexports.getPixelRatio = void 0;\r\nexports.subscribeToExternalScrollers = subscribeToExternalScrollers;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _position = _interopRequireDefault(require(\"../../animation/position\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar SCROLLING_MODE_INFINITE = \"infinite\";\r\nvar SCROLLING_MODE_VIRTUAL = \"virtual\";\r\nvar isVirtualMode = function(that) {\r\n return that.option(\"scrolling.mode\") === SCROLLING_MODE_VIRTUAL || that._isVirtual\r\n};\r\nvar isAppendMode = function(that) {\r\n return that.option(\"scrolling.mode\") === SCROLLING_MODE_INFINITE && !that._isVirtual\r\n};\r\nvar needTwoPagesLoading = function(that) {\r\n return that.option(\"scrolling.loadTwoPagesOnStart\") || that._isVirtual || that._viewportItemIndex > 0\r\n};\r\nvar getPixelRatio = function(window) {\r\n return window.devicePixelRatio || 1\r\n};\r\nexports.getPixelRatio = getPixelRatio;\r\n\r\nfunction getContentHeightLimit(browser) {\r\n if (browser.msie) {\r\n return 4e6\r\n } else {\r\n if (browser.mozilla) {\r\n return 8e6\r\n }\r\n }\r\n return 15e6 / getPixelRatio((0, _window.getWindow)())\r\n}\r\n\r\nfunction subscribeToExternalScrollers($element, scrollChangedHandler, $targetElement) {\r\n var $scrollElement;\r\n var scrollableArray = [];\r\n var scrollToArray = [];\r\n var disposeArray = [];\r\n $targetElement = $targetElement || $element;\r\n\r\n function getElementOffset(scrollable) {\r\n var $scrollableElement = scrollable.element ? scrollable.$element() : scrollable;\r\n var scrollableOffset = _position.default.offset($scrollableElement);\r\n if (!scrollableOffset) {\r\n return $element.offset().top\r\n }\r\n return scrollable.scrollTop() - (scrollableOffset.top - $element.offset().top)\r\n }\r\n\r\n function createWindowScrollHandler(scrollable) {\r\n return function() {\r\n var scrollTop = scrollable.scrollTop() - getElementOffset(scrollable);\r\n scrollTop = scrollTop > 0 ? scrollTop : 0;\r\n scrollChangedHandler(scrollTop)\r\n }\r\n }\r\n var widgetScrollStrategy = {\r\n on: function(scrollable, eventName, handler) {\r\n scrollable.on(\"scroll\", handler)\r\n },\r\n off: function(scrollable, eventName, handler) {\r\n scrollable.off(\"scroll\", handler)\r\n }\r\n };\r\n\r\n function subscribeToScrollEvents($scrollElement) {\r\n var isDocument = \"#document\" === $scrollElement.get(0).nodeName;\r\n var scrollable = $scrollElement.data(\"dxScrollable\");\r\n var eventsStrategy = widgetScrollStrategy;\r\n if (!scrollable) {\r\n scrollable = isDocument && (0, _renderer.default)((0, _window.getWindow)()) || \"auto\" === $scrollElement.css(\"overflowY\") && $scrollElement;\r\n eventsStrategy = _events_engine.default;\r\n if (!scrollable) {\r\n return\r\n }\r\n }\r\n var handler = createWindowScrollHandler(scrollable);\r\n eventsStrategy.on(scrollable, \"scroll\", handler);\r\n scrollToArray.push(function(pos) {\r\n var topOffset = getElementOffset(scrollable);\r\n var scrollMethod = scrollable.scrollTo ? \"scrollTo\" : \"scrollTop\";\r\n if (pos - topOffset >= 0) {\r\n scrollable[scrollMethod](pos + topOffset)\r\n }\r\n });\r\n scrollableArray.push(scrollable);\r\n disposeArray.push(function() {\r\n eventsStrategy.off(scrollable, \"scroll\", handler)\r\n })\r\n }\r\n for ($scrollElement = $targetElement.parent(); $scrollElement.length; $scrollElement = $scrollElement.parent()) {\r\n subscribeToScrollEvents($scrollElement)\r\n }\r\n return {\r\n scrollTo: function(pos) {\r\n (0, _iterator.each)(scrollToArray, function(_, scrollTo) {\r\n scrollTo(pos)\r\n })\r\n },\r\n dispose: function() {\r\n (0, _iterator.each)(disposeArray, function(_, dispose) {\r\n dispose()\r\n })\r\n }\r\n }\r\n}\r\nvar VirtualScrollController = _class.default.inherit(function() {\r\n var getViewportPageCount = function(that) {\r\n var pageSize = that._dataSource.pageSize();\r\n var preventPreload = that.option(\"scrolling.preventPreload\");\r\n if (preventPreload) {\r\n return 0\r\n }\r\n var realViewportSize = that._viewportSize;\r\n if (isVirtualMode(that) && !that.option(\"legacyRendering\") && that.option(\"scrolling.removeInvisiblePages\")) {\r\n realViewportSize = 0;\r\n var viewportSize = that._viewportSize * that._viewportItemSize;\r\n var offset = that.getContentOffset();\r\n var position = that._position || 0;\r\n var virtualItemsCount = that.virtualItemsCount();\r\n var totalItemsCount = that._dataSource.totalItemsCount();\r\n for (var itemIndex = virtualItemsCount.begin; itemIndex < totalItemsCount; itemIndex++) {\r\n if (offset >= position + viewportSize) {\r\n break\r\n }\r\n var itemSize = that._itemSizes[itemIndex] || that._viewportItemSize;\r\n offset += itemSize;\r\n if (offset >= position) {\r\n realViewportSize++\r\n }\r\n }\r\n }\r\n return pageSize && realViewportSize > 0 ? Math.ceil(realViewportSize / pageSize) : 1\r\n };\r\n var getPreloadPageCount = function(that, previous) {\r\n var preloadEnabled = that.option(\"scrolling.preloadEnabled\");\r\n var pageCount = getViewportPageCount(that);\r\n if (pageCount) {\r\n if (previous) {\r\n pageCount = preloadEnabled ? 1 : 0\r\n } else {\r\n if (preloadEnabled) {\r\n pageCount++\r\n }\r\n if (isAppendMode(that) || !needTwoPagesLoading(that)) {\r\n pageCount--\r\n }\r\n }\r\n }\r\n return pageCount\r\n };\r\n var getPageIndexForLoad = function(that) {\r\n var result = -1;\r\n var beginPageIndex = getBeginPageIndex(that);\r\n var dataSource = that._dataSource;\r\n if (beginPageIndex < 0) {\r\n result = that._pageIndex\r\n } else {\r\n if (!that._cache[that._pageIndex - beginPageIndex]) {\r\n result = that._pageIndex\r\n } else {\r\n if (beginPageIndex >= 0 && that._viewportSize >= 0) {\r\n if (beginPageIndex > 0) {\r\n var needToLoadPageBeforeLast = getEndPageIndex(that) + 1 === dataSource.pageCount() && that._cache.length < getPreloadPageCount(that) + 1;\r\n var needToLoadPrevPage = needToLoadPageBeforeLast || that._pageIndex === beginPageIndex && getPreloadPageCount(that, true);\r\n if (needToLoadPrevPage) {\r\n result = beginPageIndex - 1\r\n }\r\n }\r\n if (result < 0) {\r\n var needToLoadNextPage = beginPageIndex + that._cache.length <= that._pageIndex + getPreloadPageCount(that);\r\n if (needToLoadNextPage) {\r\n result = beginPageIndex + that._cache.length\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (that._loadingPageIndexes[result]) {\r\n result = -1\r\n }\r\n return result\r\n };\r\n\r\n function getBeginPageIndex(that) {\r\n return that._cache.length ? that._cache[0].pageIndex : -1\r\n }\r\n\r\n function getEndPageIndex(that) {\r\n return that._cache.length ? that._cache[that._cache.length - 1].pageIndex : -1\r\n }\r\n var fireChanged = function(that, changed, args) {\r\n that._isChangedFiring = true;\r\n changed(args);\r\n that._isChangedFiring = false\r\n };\r\n var processDelayChanged = function(that, changed, args) {\r\n if (that._isDelayChanged) {\r\n that._isDelayChanged = false;\r\n fireChanged(that, changed, args);\r\n return true\r\n }\r\n };\r\n var processChanged = function(that, changed, changeType, isDelayChanged, removeCacheItem) {\r\n var dataSource = that._dataSource;\r\n var items = dataSource.items().slice();\r\n var change = (0, _type.isObject)(changeType) ? changeType : void 0;\r\n var isPrepend = \"prepend\" === changeType;\r\n var viewportItems = dataSource.viewportItems();\r\n if (changeType && (0, _type.isString)(changeType) && !that._isDelayChanged) {\r\n change = {\r\n changeType: changeType,\r\n items: items\r\n };\r\n if (removeCacheItem) {\r\n change.removeCount = removeCacheItem.itemsCount;\r\n if (change.removeCount && dataSource.correctCount) {\r\n change.removeCount = dataSource.correctCount(viewportItems, change.removeCount, isPrepend)\r\n }\r\n }\r\n }\r\n var removeItemCount = removeCacheItem ? removeCacheItem.itemsLength : 0;\r\n if (removeItemCount && dataSource.correctCount) {\r\n removeItemCount = dataSource.correctCount(viewportItems, removeItemCount, isPrepend)\r\n }\r\n if (\"append\" === changeType) {\r\n viewportItems.push.apply(viewportItems, items);\r\n if (removeCacheItem) {\r\n viewportItems.splice(0, removeItemCount)\r\n }\r\n } else {\r\n if (isPrepend) {\r\n viewportItems.unshift.apply(viewportItems, items);\r\n if (removeCacheItem) {\r\n viewportItems.splice(-removeItemCount)\r\n }\r\n } else {\r\n that._dataSource.viewportItems(items)\r\n }\r\n }\r\n dataSource.updateLoading();\r\n that._lastPageIndex = that.pageIndex();\r\n that._isDelayChanged = isDelayChanged;\r\n if (!isDelayChanged) {\r\n fireChanged(that, changed, change)\r\n }\r\n };\r\n var loadCore = function(that, pageIndex) {\r\n var dataSource = that._dataSource;\r\n if (pageIndex === that.pageIndex() || !dataSource.isLoading() && pageIndex < dataSource.pageCount() || !dataSource.hasKnownLastPage() && pageIndex === dataSource.pageCount()) {\r\n dataSource.pageIndex(pageIndex);\r\n that._loadingPageIndexes[pageIndex] = true;\r\n return (0, _deferred.when)(dataSource.load()).always(function() {\r\n that._loadingPageIndexes[pageIndex] = false\r\n })\r\n }\r\n };\r\n return {\r\n ctor: function(component, dataSource, isVirtual) {\r\n var that = this;\r\n that._dataSource = dataSource;\r\n that.component = component;\r\n that._pageIndex = that._lastPageIndex = dataSource.pageIndex();\r\n that._viewportSize = 0;\r\n that._viewportItemSize = 20;\r\n that._viewportItemIndex = -1;\r\n that._itemSizes = {};\r\n that._sizeRatio = 1;\r\n that._items = [];\r\n that._cache = [];\r\n that._isVirtual = isVirtual;\r\n that._loadingPageIndexes = {};\r\n that.positionChanged = (0, _callbacks.default)()\r\n },\r\n getItemSizes: function() {\r\n return this._itemSizes\r\n },\r\n option: function() {\r\n return this.component.option.apply(this.component, arguments)\r\n },\r\n virtualItemsCount: function() {\r\n var that = this;\r\n var pageIndex;\r\n var itemsCount = 0;\r\n if (isVirtualMode(that)) {\r\n pageIndex = getBeginPageIndex(that);\r\n if (pageIndex < 0) {\r\n pageIndex = that._dataSource.pageIndex()\r\n }\r\n var beginItemsCount = pageIndex * that._dataSource.pageSize();\r\n itemsCount = that._cache.length * that._dataSource.pageSize();\r\n var endItemsCount = Math.max(0, that._dataSource.totalItemsCount() - itemsCount - beginItemsCount);\r\n return {\r\n begin: beginItemsCount,\r\n end: endItemsCount\r\n }\r\n }\r\n },\r\n setViewportPosition: function(position) {\r\n var that = this;\r\n var result = new _deferred.Deferred;\r\n var scrollingTimeout = Math.min(that.option(\"scrolling.timeout\") || 0, that._dataSource.changingDuration());\r\n if (scrollingTimeout < that.option(\"scrolling.renderingThreshold\")) {\r\n scrollingTimeout = that.option(\"scrolling.minTimeout\") || 0\r\n }\r\n clearTimeout(that._scrollTimeoutID);\r\n if (scrollingTimeout > 0) {\r\n that._scrollTimeoutID = setTimeout(function() {\r\n that._setViewportPositionCore(position);\r\n result.resolve()\r\n }, scrollingTimeout)\r\n } else {\r\n that._setViewportPositionCore(position);\r\n result.resolve()\r\n }\r\n return result.promise()\r\n },\r\n getViewportPosition: function() {\r\n return this._position || 0\r\n },\r\n getItemIndexByPosition: function() {\r\n var that = this;\r\n var position = that._position;\r\n var defaultItemSize = that.getItemSize();\r\n var offset = 0;\r\n var itemOffset = 0;\r\n var itemOffsetsWithSize = Object.keys(that._itemSizes).concat(-1);\r\n for (var i = 0; i < itemOffsetsWithSize.length && offset < position; i++) {\r\n var itemOffsetWithSize = parseInt(itemOffsetsWithSize[i]);\r\n var itemOffsetDiff = (position - offset) / defaultItemSize;\r\n if (itemOffsetWithSize < 0 || itemOffset + itemOffsetDiff < itemOffsetWithSize) {\r\n itemOffset += itemOffsetDiff;\r\n break\r\n } else {\r\n itemOffsetDiff = itemOffsetWithSize - itemOffset;\r\n offset += itemOffsetDiff * defaultItemSize;\r\n itemOffset += itemOffsetDiff\r\n }\r\n var itemSize = that._itemSizes[itemOffsetWithSize];\r\n offset += itemSize;\r\n itemOffset += offset < position ? 1 : (position - offset + itemSize) / itemSize\r\n }\r\n return Math.round(50 * itemOffset) / 50\r\n },\r\n _setViewportPositionCore: function(position) {\r\n this._position = position;\r\n var itemIndex = this.getItemIndexByPosition();\r\n var result = this.setViewportItemIndex(itemIndex);\r\n this.positionChanged.fire();\r\n return result\r\n },\r\n setContentSize: function(size) {\r\n var that = this;\r\n var sizes = Array.isArray(size) && size;\r\n var virtualItemsCount = that.virtualItemsCount();\r\n if (sizes) {\r\n size = sizes.reduce(function(a, b) {\r\n return a + b\r\n }, 0)\r\n }\r\n that._contentSize = size;\r\n if (virtualItemsCount) {\r\n if (sizes) {\r\n sizes.forEach(function(size, index) {\r\n that._itemSizes[virtualItemsCount.begin + index] = size\r\n })\r\n }\r\n var virtualContentSize = (virtualItemsCount.begin + virtualItemsCount.end + that.itemsCount()) * that._viewportItemSize;\r\n var contentHeightLimit = getContentHeightLimit(_browser.default);\r\n if (virtualContentSize > contentHeightLimit) {\r\n that._sizeRatio = contentHeightLimit / virtualContentSize\r\n } else {\r\n that._sizeRatio = 1\r\n }\r\n }\r\n },\r\n getItemSize: function() {\r\n return this._viewportItemSize * this._sizeRatio\r\n },\r\n getItemOffset: function(itemIndex, isEnd) {\r\n var that = this;\r\n var virtualItemsCount = that.virtualItemsCount();\r\n var itemCount = itemIndex;\r\n if (!virtualItemsCount) {\r\n return 0\r\n }\r\n var offset = 0;\r\n var totalItemsCount = that._dataSource.totalItemsCount();\r\n Object.keys(that._itemSizes).forEach(function(currentItemIndex) {\r\n if (!itemCount) {\r\n return\r\n }\r\n if (isEnd ? currentItemIndex >= totalItemsCount - itemIndex : currentItemIndex < itemIndex) {\r\n offset += that._itemSizes[currentItemIndex];\r\n itemCount--\r\n }\r\n });\r\n return Math.floor(offset + itemCount * that._viewportItemSize * that._sizeRatio)\r\n },\r\n getContentOffset: function(type) {\r\n var isEnd = \"end\" === type;\r\n var virtualItemsCount = this.virtualItemsCount();\r\n if (!virtualItemsCount) {\r\n return 0\r\n }\r\n return this.getItemOffset(isEnd ? virtualItemsCount.end : virtualItemsCount.begin, isEnd)\r\n },\r\n getVirtualContentSize: function() {\r\n var that = this;\r\n var virtualItemsCount = that.virtualItemsCount();\r\n return virtualItemsCount ? that.getContentOffset(\"begin\") + that.getContentOffset(\"end\") + that._contentSize : 0\r\n },\r\n getViewportItemIndex: function() {\r\n return this._viewportItemIndex\r\n },\r\n setViewportItemIndex: function(itemIndex) {\r\n var that = this;\r\n var pageSize = that._dataSource.pageSize();\r\n var pageCount = that._dataSource.pageCount();\r\n var virtualMode = isVirtualMode(that);\r\n var appendMode = isAppendMode(that);\r\n var totalItemsCount = that._dataSource.totalItemsCount();\r\n var newPageIndex;\r\n that._viewportItemIndex = itemIndex;\r\n if (pageSize && (virtualMode || appendMode) && totalItemsCount >= 0) {\r\n if (that._viewportSize && itemIndex + that._viewportSize >= totalItemsCount && !that._isVirtual) {\r\n if (that._dataSource.hasKnownLastPage()) {\r\n newPageIndex = pageCount - 1;\r\n var lastPageSize = totalItemsCount % pageSize;\r\n if (newPageIndex > 0 && lastPageSize > 0 && lastPageSize < that._viewportSize) {\r\n newPageIndex--\r\n }\r\n } else {\r\n newPageIndex = pageCount\r\n }\r\n } else {\r\n newPageIndex = Math.floor(itemIndex / pageSize);\r\n var maxPageIndex = pageCount - 1;\r\n newPageIndex = Math.max(newPageIndex, 0);\r\n newPageIndex = Math.min(newPageIndex, maxPageIndex)\r\n }\r\n that.pageIndex(newPageIndex);\r\n return that.load()\r\n }\r\n },\r\n viewportItemSize: function(size) {\r\n if (void 0 !== size) {\r\n this._viewportItemSize = size\r\n }\r\n return this._viewportItemSize\r\n },\r\n viewportSize: function(size) {\r\n if (void 0 !== size) {\r\n this._viewportSize = size\r\n }\r\n return this._viewportSize\r\n },\r\n pageIndex: function(_pageIndex) {\r\n if (isVirtualMode(this) || isAppendMode(this)) {\r\n if (void 0 !== _pageIndex) {\r\n this._pageIndex = _pageIndex\r\n }\r\n return this._pageIndex\r\n } else {\r\n return this._dataSource.pageIndex(_pageIndex)\r\n }\r\n },\r\n beginPageIndex: function beginPageIndex(defaultPageIndex) {\r\n var beginPageIndex = getBeginPageIndex(this);\r\n if (beginPageIndex < 0) {\r\n beginPageIndex = void 0 !== defaultPageIndex ? defaultPageIndex : this.pageIndex()\r\n }\r\n return beginPageIndex\r\n },\r\n endPageIndex: function endPageIndex() {\r\n var endPageIndex = getEndPageIndex(this);\r\n return endPageIndex > 0 ? endPageIndex : this._lastPageIndex\r\n },\r\n pageSize: function() {\r\n return this._dataSource.pageSize()\r\n },\r\n load: function() {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var result;\r\n if (isVirtualMode(that) || isAppendMode(that)) {\r\n var pageIndexForLoad = getPageIndexForLoad(that);\r\n if (pageIndexForLoad >= 0) {\r\n var loadResult = loadCore(that, pageIndexForLoad);\r\n if (loadResult) {\r\n result = new _deferred.Deferred;\r\n loadResult.done(function() {\r\n var delayDeferred = that._delayDeferred;\r\n if (delayDeferred) {\r\n delayDeferred.done(result.resolve).fail(result.reject)\r\n } else {\r\n result.resolve()\r\n }\r\n }).fail(result.reject);\r\n dataSource.updateLoading()\r\n }\r\n }\r\n } else {\r\n result = dataSource.load()\r\n }\r\n if (!result && that._lastPageIndex !== that.pageIndex()) {\r\n that._dataSource.onChanged({\r\n changeType: \"pageIndex\"\r\n })\r\n }\r\n return result || (new _deferred.Deferred).resolve()\r\n },\r\n loadIfNeed: function() {\r\n var that = this;\r\n if ((isVirtualMode(that) || isAppendMode(that)) && !that._dataSource.isLoading() && (!that._isChangedFiring || that._isVirtual)) {\r\n var position = that.getViewportPosition();\r\n if (position > 0) {\r\n that._setViewportPositionCore(position)\r\n } else {\r\n that.load()\r\n }\r\n }\r\n },\r\n handleDataChanged: function(callBase, e) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var lastCacheLength = that._cache.length;\r\n var changeType;\r\n var removeInvisiblePages;\r\n if (e && e.changes) {\r\n fireChanged(that, callBase, e)\r\n } else {\r\n if (isVirtualMode(that) || isAppendMode(that)) {\r\n var beginPageIndex = getBeginPageIndex(that);\r\n if (beginPageIndex >= 0) {\r\n if (isVirtualMode(that) && beginPageIndex + that._cache.length !== dataSource.pageIndex() && beginPageIndex - 1 !== dataSource.pageIndex()) {\r\n lastCacheLength = 0;\r\n that._cache = []\r\n }\r\n if (isAppendMode(that)) {\r\n if (0 === dataSource.pageIndex()) {\r\n that._cache = []\r\n } else {\r\n if (dataSource.pageIndex() < getEndPageIndex(that)) {\r\n fireChanged(that, callBase, {\r\n changeType: \"append\",\r\n items: []\r\n });\r\n return\r\n }\r\n }\r\n }\r\n }\r\n var cacheItem = {\r\n pageIndex: dataSource.pageIndex(),\r\n itemsLength: dataSource.items(true).length,\r\n itemsCount: that.itemsCount(true)\r\n };\r\n if (!that.option(\"legacyRendering\") && that.option(\"scrolling.removeInvisiblePages\") && isVirtualMode(that)) {\r\n removeInvisiblePages = that._cache.length > Math.max(getPreloadPageCount(this) + (that.option(\"scrolling.preloadEnabled\") ? 1 : 0), 2)\r\n } else {\r\n processDelayChanged(that, callBase, {\r\n isDelayed: true\r\n })\r\n }\r\n var removeCacheItem;\r\n if (beginPageIndex === dataSource.pageIndex() + 1) {\r\n if (removeInvisiblePages) {\r\n removeCacheItem = that._cache.pop()\r\n }\r\n changeType = \"prepend\";\r\n that._cache.unshift(cacheItem)\r\n } else {\r\n if (removeInvisiblePages) {\r\n removeCacheItem = that._cache.shift()\r\n }\r\n changeType = \"append\";\r\n that._cache.push(cacheItem)\r\n }\r\n var isDelayChanged = isVirtualMode(that) && 0 === lastCacheLength && needTwoPagesLoading(that);\r\n processChanged(that, callBase, that._cache.length > 1 ? changeType : void 0, isDelayChanged, removeCacheItem);\r\n that._delayDeferred = that.load().done(function() {\r\n if (processDelayChanged(that, callBase)) {\r\n that.load()\r\n }\r\n })\r\n } else {\r\n processChanged(that, callBase, e)\r\n }\r\n }\r\n },\r\n itemsCount: function itemsCount(isBase) {\r\n var itemsCount = 0;\r\n if (!isBase && isVirtualMode(this)) {\r\n (0, _iterator.each)(this._cache, function() {\r\n itemsCount += this.itemsCount\r\n })\r\n } else {\r\n itemsCount = this._dataSource.itemsCount()\r\n }\r\n return itemsCount\r\n },\r\n reset: function(isRefresh) {\r\n this._loadingPageIndexes = {};\r\n this._cache = [];\r\n if (!isRefresh) {\r\n this._itemSizes = {}\r\n }\r\n },\r\n subscribeToWindowScrollEvents: function($element) {\r\n var that = this;\r\n that._windowScroll = that._windowScroll || subscribeToExternalScrollers($element, function(scrollTop) {\r\n if (that.viewportItemSize()) {\r\n that.setViewportPosition(scrollTop)\r\n }\r\n })\r\n },\r\n dispose: function() {\r\n clearTimeout(this._scrollTimeoutID);\r\n this._windowScroll && this._windowScroll.dispose();\r\n this._windowScroll = null\r\n },\r\n scrollTo: function(pos) {\r\n this._windowScroll && this._windowScroll.scrollTo(pos)\r\n }\r\n }\r\n}());\r\nexports.VirtualScrollController = VirtualScrollController;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.search.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _query = _interopRequireDefault(require(\"../../data/query\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar SEARCH_PANEL_CLASS = \"search-panel\";\r\nvar SEARCH_TEXT_CLASS = \"search-text\";\r\nvar HEADER_PANEL_CLASS = \"header-panel\";\r\nvar FILTERING_TIMEOUT = 700;\r\n\r\nfunction allowSearch(column) {\r\n return (0, _type.isDefined)(column.allowSearch) ? column.allowSearch : column.allowFiltering\r\n}\r\n\r\nfunction parseValue(column, text) {\r\n var lookup = column.lookup;\r\n if (!column.parseValue) {\r\n return text\r\n }\r\n if (lookup) {\r\n return column.parseValue.call(lookup, text)\r\n }\r\n return column.parseValue(text)\r\n}\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n searchPanel: {\r\n visible: false,\r\n width: 160,\r\n placeholder: _message.default.format(\"dxDataGrid-searchPanelPlaceholder\"),\r\n highlightSearchText: true,\r\n highlightCaseSensitive: false,\r\n text: \"\",\r\n searchVisibleColumnsOnly: false\r\n }\r\n }\r\n },\r\n extenders: {\r\n controllers: {\r\n data: function() {\r\n var calculateSearchFilter = function(that, text) {\r\n var i;\r\n var column;\r\n var columns = that._columnsController.getColumns();\r\n var searchVisibleColumnsOnly = that.option(\"searchPanel.searchVisibleColumnsOnly\");\r\n var lookup;\r\n var filters = [];\r\n if (!text) {\r\n return null\r\n }\r\n\r\n function onQueryDone(items) {\r\n var valueGetter = (0, _data.compileGetter)(lookup.valueExpr);\r\n for (var _i = 0; _i < items.length; _i++) {\r\n var value = valueGetter(items[_i]);\r\n filters.push(column.createFilterExpression(value, null, \"search\"))\r\n }\r\n }\r\n for (i = 0; i < columns.length; i++) {\r\n column = columns[i];\r\n if (searchVisibleColumnsOnly && !column.visible) {\r\n continue\r\n }\r\n if (allowSearch(column) && column.calculateFilterExpression) {\r\n lookup = column.lookup;\r\n var filterValue = parseValue(column, text);\r\n if (lookup && lookup.items) {\r\n (0, _query.default)(lookup.items).filter(column.createFilterExpression.call({\r\n dataField: lookup.displayExpr,\r\n dataType: lookup.dataType,\r\n calculateFilterExpression: column.calculateFilterExpression\r\n }, filterValue, null, \"search\")).enumerate().done(onQueryDone)\r\n } else {\r\n if (void 0 !== filterValue) {\r\n filters.push(column.createFilterExpression(filterValue, null, \"search\"))\r\n }\r\n }\r\n }\r\n }\r\n return _uiGrid_core.default.combineFilters(filters, \"or\")\r\n };\r\n return {\r\n publicMethods: function() {\r\n return this.callBase().concat([\"searchByText\"])\r\n },\r\n _calculateAdditionalFilter: function() {\r\n var that = this;\r\n var filter = that.callBase();\r\n var searchFilter = calculateSearchFilter(that, that.option(\"searchPanel.text\"));\r\n return _uiGrid_core.default.combineFilters([filter, searchFilter])\r\n },\r\n searchByText: function(text) {\r\n this.option(\"searchPanel.text\", text)\r\n },\r\n optionChanged: function(args) {\r\n var that = this;\r\n switch (args.fullName) {\r\n case \"searchPanel.text\":\r\n case \"searchPanel\":\r\n that._applyFilter();\r\n args.handled = true;\r\n break;\r\n default:\r\n that.callBase(args)\r\n }\r\n }\r\n }\r\n }()\r\n },\r\n views: {\r\n headerPanel: function() {\r\n var getSearchPanelOptions = function(that) {\r\n return that.option(\"searchPanel\")\r\n };\r\n return {\r\n _getToolbarItems: function() {\r\n var items = this.callBase();\r\n return this._prepareSearchItem(items)\r\n },\r\n _prepareSearchItem: function(items) {\r\n var that = this;\r\n var dataController = that.getController(\"data\");\r\n var searchPanelOptions = getSearchPanelOptions(that);\r\n if (searchPanelOptions && searchPanelOptions.visible) {\r\n var toolbarItem = {\r\n template: function(data, index, container) {\r\n var $search = (0, _renderer.default)(\"
\").addClass(that.addWidgetPrefix(SEARCH_PANEL_CLASS)).appendTo(container);\r\n that.getController(\"editorFactory\").createEditor($search, {\r\n width: searchPanelOptions.width,\r\n placeholder: searchPanelOptions.placeholder,\r\n parentType: \"searchPanel\",\r\n value: that.option(\"searchPanel.text\"),\r\n updateValueTimeout: FILTERING_TIMEOUT,\r\n setValue: function(value) {\r\n dataController.searchByText(value)\r\n },\r\n editorOptions: {\r\n inputAttr: {\r\n \"aria-label\": _message.default.format(\"\".concat(that.component.NAME, \"-ariaSearchInGrid\"))\r\n }\r\n }\r\n });\r\n that.resize()\r\n },\r\n name: \"searchPanel\",\r\n location: \"after\",\r\n locateInMenu: \"never\",\r\n sortIndex: 40\r\n };\r\n items.push(toolbarItem)\r\n }\r\n return items\r\n },\r\n getSearchTextEditor: function() {\r\n var that = this;\r\n var $element = that.element();\r\n var $searchPanel = $element.find(\".\" + that.addWidgetPrefix(SEARCH_PANEL_CLASS)).filter(function() {\r\n return (0, _renderer.default)(this).closest(\".\" + that.addWidgetPrefix(HEADER_PANEL_CLASS)).is($element)\r\n });\r\n if ($searchPanel.length) {\r\n return $searchPanel.dxTextBox(\"instance\")\r\n }\r\n return null\r\n },\r\n isVisible: function() {\r\n var searchPanelOptions = getSearchPanelOptions(this);\r\n return this.callBase() || searchPanelOptions && searchPanelOptions.visible\r\n },\r\n optionChanged: function(args) {\r\n if (\"searchPanel\" === args.name) {\r\n if (\"searchPanel.text\" === args.fullName) {\r\n var editor = this.getSearchTextEditor();\r\n if (editor) {\r\n editor.option(\"value\", args.value)\r\n }\r\n } else {\r\n this._invalidate()\r\n }\r\n args.handled = true\r\n } else {\r\n this.callBase(args)\r\n }\r\n }\r\n }\r\n }(),\r\n rowsView: {\r\n init: function() {\r\n this.callBase.apply(this, arguments);\r\n this._searchParams = []\r\n },\r\n _getFormattedSearchText: function(column, searchText) {\r\n var value = parseValue(column, searchText);\r\n var formatOptions = _uiGrid_core.default.getFormatOptionsByColumn(column, \"search\");\r\n return _uiGrid_core.default.formatValue(value, formatOptions)\r\n },\r\n _getStringNormalizer: function() {\r\n var isCaseSensitive = this.option(\"searchPanel.highlightCaseSensitive\");\r\n return function(str) {\r\n return isCaseSensitive ? str : str.toLowerCase()\r\n }\r\n },\r\n _findHighlightingTextNodes: function(column, cellElement, searchText) {\r\n var _$items;\r\n var that = this;\r\n var $parent = cellElement.parent();\r\n var $items;\r\n var stringNormalizer = this._getStringNormalizer();\r\n var normalizedSearchText = stringNormalizer(searchText);\r\n var resultTextNodes = [];\r\n if (!$parent.length) {\r\n $parent = (0, _renderer.default)(\"
\").append(cellElement)\r\n } else {\r\n if (column) {\r\n if (column.groupIndex >= 0 && !column.showWhenGrouped) {\r\n $items = cellElement\r\n } else {\r\n var columnIndex = that._columnsController.getVisibleIndex(column.index);\r\n $items = $parent.children(\"td\").eq(columnIndex).find(\"*\")\r\n }\r\n }\r\n }\r\n $items = null !== (_$items = $items) && void 0 !== _$items && _$items.length ? $items : $parent.find(\"*\");\r\n $items.each(function(_, element) {\r\n var $contents = (0, _renderer.default)(element).contents();\r\n for (var i = 0; i < $contents.length; i++) {\r\n var node = $contents.get(i);\r\n if (3 === node.nodeType) {\r\n var normalizedText = stringNormalizer(node.textContent || node.nodeValue);\r\n if (normalizedText.indexOf(normalizedSearchText) > -1) {\r\n resultTextNodes.push(node)\r\n }\r\n }\r\n }\r\n });\r\n return resultTextNodes\r\n },\r\n _highlightSearchTextCore: function($textNode, searchText) {\r\n var that = this;\r\n var $searchTextSpan = (0, _renderer.default)(\"\").addClass(that.addWidgetPrefix(SEARCH_TEXT_CLASS));\r\n var text = $textNode.text();\r\n var firstContentElement = $textNode[0];\r\n var stringNormalizer = this._getStringNormalizer();\r\n var index = stringNormalizer(text).indexOf(stringNormalizer(searchText));\r\n if (index >= 0) {\r\n if (firstContentElement.textContent) {\r\n firstContentElement.textContent = text.substr(0, index)\r\n } else {\r\n firstContentElement.nodeValue = text.substr(0, index)\r\n }\r\n $textNode.after($searchTextSpan.text(text.substr(index, searchText.length)));\r\n $textNode = (0, _renderer.default)(_dom_adapter.default.createTextNode(text.substr(index + searchText.length))).insertAfter($searchTextSpan);\r\n return that._highlightSearchTextCore($textNode, searchText)\r\n }\r\n },\r\n _highlightSearchText: function(cellElement, isEquals, column) {\r\n var that = this;\r\n var stringNormalizer = this._getStringNormalizer();\r\n var searchText = that.option(\"searchPanel.text\");\r\n if (isEquals && column) {\r\n searchText = searchText && that._getFormattedSearchText(column, searchText)\r\n }\r\n if (searchText && that.option(\"searchPanel.highlightSearchText\")) {\r\n var textNodes = that._findHighlightingTextNodes(column, cellElement, searchText);\r\n textNodes.forEach(function(textNode) {\r\n if (isEquals) {\r\n if (stringNormalizer((0, _renderer.default)(textNode).text()) === stringNormalizer(searchText)) {\r\n (0, _renderer.default)(textNode).replaceWith((0, _renderer.default)(\"\").addClass(that.addWidgetPrefix(SEARCH_TEXT_CLASS)).text((0, _renderer.default)(textNode).text()))\r\n }\r\n } else {\r\n that._highlightSearchTextCore((0, _renderer.default)(textNode), searchText)\r\n }\r\n })\r\n }\r\n },\r\n _renderCore: function() {\r\n this.callBase.apply(this, arguments);\r\n if (this.option(\"rowTemplate\")) {\r\n if (this.option(\"templatesRenderAsynchronously\")) {\r\n clearTimeout(this._highlightTimer);\r\n this._highlightTimer = setTimeout(function() {\r\n this._highlightSearchText(this.getTableElement())\r\n }.bind(this))\r\n } else {\r\n this._highlightSearchText(this.getTableElement())\r\n }\r\n }\r\n },\r\n _updateCell: function($cell, parameters) {\r\n var column = parameters.column;\r\n var dataType = column.lookup && column.lookup.dataType || column.dataType;\r\n var isEquals = \"string\" !== dataType;\r\n if (allowSearch(column) && !parameters.isOnForm) {\r\n if (this.option(\"templatesRenderAsynchronously\")) {\r\n if (!this._searchParams.length) {\r\n clearTimeout(this._highlightTimer);\r\n this._highlightTimer = setTimeout(function() {\r\n this._searchParams.forEach(function(params) {\r\n this._highlightSearchText.apply(this, params)\r\n }.bind(this));\r\n this._searchParams = []\r\n }.bind(this))\r\n }\r\n this._searchParams.push([$cell, isEquals, column])\r\n } else {\r\n this._highlightSearchText($cell, isEquals, column)\r\n }\r\n }\r\n this.callBase($cell, parameters)\r\n },\r\n dispose: function() {\r\n clearTimeout(this._highlightTimer);\r\n this.callBase()\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.virtual_columns.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _uiGrid_core = require(\"./ui.grid_core.virtual_columns_core\");\r\nvar DEFAULT_COLUMN_WIDTH = 50;\r\nvar VirtualScrollingRowsViewExtender = {\r\n _resizeCore: function() {\r\n this.callBase.apply(this, arguments);\r\n this._columnsController.resize()\r\n },\r\n _handleScroll: function(e) {\r\n var that = this;\r\n var scrollable = this.getScrollable();\r\n var left = e.scrollOffset.left;\r\n that.callBase.apply(that, arguments);\r\n if (that.option(\"rtlEnabled\") && scrollable) {\r\n left = scrollable.$content().width() - scrollable.$element().width() - left\r\n }\r\n that._columnsController.setScrollPosition(left)\r\n }\r\n};\r\nvar HeaderViewExtender = {\r\n _renderCore: function() {\r\n this.callBase.apply(this, arguments);\r\n if (this._columnsController.isVirtualMode()) {\r\n this._updateScrollLeftPosition()\r\n }\r\n }\r\n};\r\nvar ColumnsControllerExtender = function() {\r\n var getWidths = function(columns) {\r\n return columns.map(function(column) {\r\n return column.visibleWidth || parseFloat(column.width) || DEFAULT_COLUMN_WIDTH\r\n })\r\n };\r\n var members = {\r\n init: function() {\r\n var that = this;\r\n that.callBase();\r\n that._beginPageIndex = 0;\r\n that._endPageIndex = 0;\r\n that._position = 0;\r\n that._virtualVisibleColumns = {}\r\n },\r\n resetColumnsCache: function() {\r\n this.callBase();\r\n this._virtualVisibleColumns = {}\r\n },\r\n getBeginPageIndex: function(position) {\r\n var visibleColumns = this.getVisibleColumns(void 0, true);\r\n var widths = getWidths(visibleColumns);\r\n var currentPosition = 0;\r\n for (var index = 0; index < widths.length; index++) {\r\n if (currentPosition >= position) {\r\n return Math.floor(index / this.getColumnPageSize())\r\n }\r\n currentPosition += widths[index]\r\n }\r\n return 0\r\n },\r\n getTotalWidth: function() {\r\n var width = this.option(\"width\");\r\n if (\"number\" === typeof width) {\r\n return width\r\n }\r\n return this.getController(\"resizing\")._lastWidth || this.component.$element().outerWidth()\r\n },\r\n getEndPageIndex: function(position) {\r\n var visibleColumns = this.getVisibleColumns(void 0, true);\r\n var widths = getWidths(visibleColumns);\r\n var currentPosition = 0;\r\n position += this.getTotalWidth();\r\n for (var index = 0; index < widths.length; index++) {\r\n if (currentPosition >= position) {\r\n return Math.ceil(index / this.getColumnPageSize())\r\n }\r\n currentPosition += widths[index]\r\n }\r\n return Math.ceil(widths.length / this.getColumnPageSize())\r\n },\r\n getColumnPageSize: function() {\r\n return this.option(\"scrolling.columnPageSize\")\r\n },\r\n _fireColumnsChanged: function() {\r\n var date = new Date;\r\n this.columnsChanged.fire({\r\n optionNames: {\r\n all: true,\r\n length: 1\r\n },\r\n changeTypes: {\r\n columns: true,\r\n length: 1\r\n }\r\n });\r\n this._renderTime = new Date - date\r\n },\r\n setScrollPosition: function(position) {\r\n var that = this;\r\n var renderingThreshold = that.option(\"scrolling.columnRenderingThreshold\");\r\n if (that._renderTime > renderingThreshold) {\r\n clearTimeout(that._changedTimeout);\r\n that._changedTimeout = setTimeout(function() {\r\n that._setScrollPositionCore(position)\r\n }, that.option(\"scrolling.timeout\"))\r\n } else {\r\n that._setScrollPositionCore(position)\r\n }\r\n },\r\n isVirtualMode: function() {\r\n return (0, _window.hasWindow)() && \"virtual\" === this.option(\"scrolling.columnRenderingMode\")\r\n },\r\n resize: function() {\r\n this._setScrollPositionCore(this._position)\r\n },\r\n _setScrollPositionCore: function(position) {\r\n var that = this;\r\n if (that.isVirtualMode()) {\r\n var beginPageIndex = that.getBeginPageIndex(position);\r\n var endPageIndex = that.getEndPageIndex(position);\r\n var needColumnsChanged = position < that._position ? that._beginPageIndex > beginPageIndex : that._endPageIndex < endPageIndex;\r\n that._position = position;\r\n if (needColumnsChanged) {\r\n that._beginPageIndex = beginPageIndex;\r\n that._endPageIndex = endPageIndex;\r\n that._fireColumnsChanged()\r\n }\r\n }\r\n },\r\n getFixedColumns: function(rowIndex, isBase) {\r\n var fixedColumns = this.callBase(rowIndex);\r\n if (this.isVirtualMode() && !isBase && fixedColumns.length) {\r\n var transparentColumnIndex = fixedColumns.map(function(c) {\r\n return c.command\r\n }).indexOf(\"transparent\");\r\n fixedColumns[transparentColumnIndex].colspan = this.getVisibleColumns().length - this.callBase().length + 1;\r\n return fixedColumns\r\n }\r\n return fixedColumns\r\n },\r\n getVisibleColumns: function(rowIndex, isBase) {\r\n if (isBase || !this.isVirtualMode()) {\r\n return this.callBase(rowIndex)\r\n }\r\n if (!this._beginPageIndex && !this._endPageIndex) {\r\n this._beginPageIndex = this.getBeginPageIndex(this._position);\r\n this._endPageIndex = this.getEndPageIndex(this._position)\r\n }\r\n var beginPageIndex = this._beginPageIndex;\r\n var endPageIndex = this._endPageIndex;\r\n var visibleColumnsHash = rowIndex + \"-\" + beginPageIndex + \"-\" + endPageIndex;\r\n if (this._virtualVisibleColumns[visibleColumnsHash]) {\r\n return this._virtualVisibleColumns[visibleColumnsHash]\r\n }\r\n var visibleColumns = this.callBase();\r\n var rowCount = this.getRowCount();\r\n var pageSize = this.getColumnPageSize();\r\n var startIndex = beginPageIndex * pageSize;\r\n var endIndex = endPageIndex * pageSize;\r\n var fixedColumns = this.getFixedColumns(void 0, true);\r\n var transparentColumnIndex = fixedColumns.map(function(c) {\r\n return c.command\r\n }).indexOf(\"transparent\");\r\n var beginFixedColumnCount = fixedColumns.length ? transparentColumnIndex : 0;\r\n var beginFixedColumns = visibleColumns.slice(0, beginFixedColumnCount);\r\n var beginColumns = visibleColumns.slice(beginFixedColumnCount, startIndex);\r\n var beginWidth = getWidths(beginColumns).reduce(function(a, b) {\r\n return a + b\r\n }, 0);\r\n if (!beginWidth) {\r\n startIndex = 0\r\n }\r\n var endFixedColumnCount = fixedColumns.length ? fixedColumns.length - transparentColumnIndex - 1 : 0;\r\n var endFixedColumns = visibleColumns.slice(visibleColumns.length - endFixedColumnCount);\r\n var endColumns = visibleColumns.slice(endIndex, visibleColumns.length - endFixedColumnCount);\r\n var endWidth = getWidths(endColumns).reduce(function(a, b) {\r\n return a + b\r\n }, 0);\r\n if (!endWidth) {\r\n endIndex = visibleColumns.length\r\n }\r\n if (rowCount > 1 && \"number\" === typeof rowIndex) {\r\n var columnsInfo = [];\r\n for (var i = 0; i < rowCount; i++) {\r\n columnsInfo.push(this.callBase(i))\r\n }\r\n beginFixedColumns = (0, _uiGrid_core.createColumnsInfo)(columnsInfo, 0, beginFixedColumns.length)[rowIndex] || [];\r\n endFixedColumns = (0, _uiGrid_core.createColumnsInfo)(columnsInfo, visibleColumns.length - endFixedColumns.length, visibleColumns.length)[rowIndex] || [];\r\n visibleColumns = (0, _uiGrid_core.createColumnsInfo)(columnsInfo, startIndex, endIndex)[rowIndex] || []\r\n } else {\r\n visibleColumns = visibleColumns.slice(startIndex, endIndex)\r\n }\r\n if (beginWidth) {\r\n visibleColumns.unshift({\r\n command: \"virtual\",\r\n width: beginWidth\r\n });\r\n visibleColumns = beginFixedColumns.concat(visibleColumns)\r\n }\r\n if (endWidth) {\r\n visibleColumns.push({\r\n command: \"virtual\",\r\n width: endWidth\r\n });\r\n visibleColumns = visibleColumns.concat(endFixedColumns)\r\n }\r\n this._virtualVisibleColumns[visibleColumnsHash] = visibleColumns;\r\n return visibleColumns\r\n },\r\n getColumnIndexOffset: function() {\r\n var offset = 0;\r\n if (this._beginPageIndex > 0) {\r\n var fixedColumns = this.getFixedColumns();\r\n var transparentColumnIndex = fixedColumns.map(function(c) {\r\n return c.command\r\n }).indexOf(\"transparent\");\r\n var leftFixedColumnCount = transparentColumnIndex >= 0 ? transparentColumnIndex : 0;\r\n offset = this._beginPageIndex * this.getColumnPageSize() - leftFixedColumnCount - 1\r\n }\r\n return offset > 0 ? offset : 0\r\n },\r\n dispose: function() {\r\n clearTimeout(this._changedTimeout);\r\n this.callBase.apply(this, arguments)\r\n }\r\n };\r\n return members\r\n}();\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n scrolling: {\r\n columnRenderingMode: \"standard\",\r\n columnPageSize: 5,\r\n columnRenderingThreshold: 300\r\n }\r\n }\r\n },\r\n extenders: {\r\n controllers: {\r\n columns: ColumnsControllerExtender\r\n },\r\n views: {\r\n columnHeadersView: HeaderViewExtender,\r\n rowsView: VirtualScrollingRowsViewExtender\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.virtual_columns_core.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.createColumnsInfo = createColumnsInfo;\r\nexports.foreachColumnInfo = foreachColumnInfo;\r\nvar _extend = require(\"../../core/utils/extend\");\r\n\r\nfunction foreachColumnInfo(info, callback, rowIndex, offsets, columnCount, lastProcessedIndexes) {\r\n rowIndex = rowIndex || 0;\r\n offsets = offsets || [];\r\n lastProcessedIndexes = lastProcessedIndexes || [];\r\n offsets[rowIndex] = offsets[rowIndex] || 0;\r\n var row = info[rowIndex];\r\n var startIndex = lastProcessedIndexes[rowIndex] + 1 || 0;\r\n var processedColumnCount = 0;\r\n var colIndex;\r\n if (!row) {\r\n return\r\n }\r\n for (colIndex = startIndex; colIndex < row.length; colIndex++) {\r\n var cell = row[colIndex];\r\n var visibleIndex = colIndex + offsets[rowIndex];\r\n var colspan = cell.colspan || 1;\r\n foreachColumnInfo(info, callback, rowIndex + (cell.rowspan || 1), offsets, colspan, lastProcessedIndexes);\r\n offsets[rowIndex] += colspan - 1;\r\n processedColumnCount += colspan;\r\n if (cell.rowspan) {\r\n for (var i = rowIndex + 1; i < rowIndex + cell.rowspan; i++) {\r\n offsets[i] = offsets[i] || 0;\r\n offsets[i] += cell.colspan || 1\r\n }\r\n }\r\n if (false === callback(cell, visibleIndex, rowIndex, colIndex)) {\r\n break\r\n }\r\n if (void 0 !== columnCount && processedColumnCount >= columnCount) {\r\n break\r\n }\r\n }\r\n lastProcessedIndexes[rowIndex] = colIndex\r\n}\r\n\r\nfunction createColumnsInfo(info, startIndex, endIndex) {\r\n var newInfo = [];\r\n foreachColumnInfo(info, function(columnInfo, visibleIndex, rowIndex) {\r\n var cell = columnInfo;\r\n var colspan;\r\n var cellColspan = cell.colspan || 1;\r\n var isVisible = visibleIndex + cellColspan - 1 >= startIndex && visibleIndex < endIndex;\r\n newInfo[rowIndex] = newInfo[rowIndex] || [];\r\n if (isVisible) {\r\n if (visibleIndex < startIndex) {\r\n colspan = cellColspan - (startIndex - visibleIndex);\r\n visibleIndex = startIndex\r\n } else {\r\n colspan = cellColspan\r\n }\r\n if (visibleIndex + colspan > endIndex) {\r\n colspan = endIndex - visibleIndex\r\n }\r\n if (colspan !== cellColspan) {\r\n cell = (0, _extend.extend)({}, cell, {\r\n colspan: colspan\r\n })\r\n }\r\n newInfo[rowIndex].push(cell)\r\n } else {\r\n if (visibleIndex > endIndex) {\r\n return false\r\n }\r\n }\r\n });\r\n for (var i = 0; i < newInfo.length; i++) {\r\n newInfo[i] = newInfo[i] || []\r\n }\r\n return newInfo\r\n}\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.row_dragging.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _sortable = _interopRequireDefault(require(\"../sortable\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar COMMAND_HANDLE_CLASS = \"dx-command-drag\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar HANDLE_ICON_CLASS = \"drag-icon\";\r\nvar ROWS_VIEW = \"rowsview\";\r\nvar SORTABLE_WITHOUT_HANDLE_CLASS = \"dx-sortable-without-handle\";\r\nvar RowDraggingExtender = {\r\n init: function() {\r\n this.callBase.apply(this, arguments);\r\n this._updateHandleColumn()\r\n },\r\n _allowReordering: function() {\r\n var rowDragging = this.option(\"rowDragging\");\r\n return !!(rowDragging && (rowDragging.allowReordering || rowDragging.allowDropInsideItem || rowDragging.group))\r\n },\r\n _updateHandleColumn: function() {\r\n var rowDragging = this.option(\"rowDragging\");\r\n var allowReordering = this._allowReordering();\r\n var columnsController = this._columnsController;\r\n var isHandleColumnVisible = allowReordering && rowDragging.showDragIcons;\r\n columnsController && columnsController.addCommandColumn({\r\n type: \"drag\",\r\n command: \"drag\",\r\n visibleIndex: -2,\r\n alignment: \"center\",\r\n cssClass: COMMAND_HANDLE_CLASS,\r\n width: \"auto\",\r\n cellTemplate: this._getHandleTemplate(),\r\n visible: isHandleColumnVisible\r\n });\r\n columnsController.columnOption(\"type:drag\", \"visible\", isHandleColumnVisible)\r\n },\r\n _renderContent: function() {\r\n var _this = this;\r\n var rowDragging = this.option(\"rowDragging\");\r\n var allowReordering = this._allowReordering();\r\n var $content = this.callBase.apply(this, arguments);\r\n var isFixedTableRendering = this._isFixedTableRendering;\r\n var sortableName = \"_sortable\";\r\n var sortableFixedName = \"_sortableFixed\";\r\n var currentSortableName = isFixedTableRendering ? sortableFixedName : sortableName;\r\n var anotherSortableName = isFixedTableRendering ? sortableName : sortableFixedName;\r\n var togglePointerEventsStyle = function(toggle) {\r\n var _this$sortableFixedNa;\r\n null === (_this$sortableFixedNa = _this[sortableFixedName]) || void 0 === _this$sortableFixedNa ? void 0 : _this$sortableFixedNa.$element().css(\"pointerEvents\", toggle ? \"auto\" : \"\")\r\n };\r\n if ((allowReordering || this[currentSortableName]) && $content.length) {\r\n this[currentSortableName] = this._createComponent($content, _sortable.default, (0, _extend.extend)({\r\n component: this.component,\r\n contentTemplate: null,\r\n filter: \"> table > tbody > .dx-row:not(.dx-freespace-row):not(.dx-virtual-row)\",\r\n dragTemplate: this._getDraggableRowTemplate(),\r\n handle: rowDragging.showDragIcons && \".\".concat(COMMAND_HANDLE_CLASS),\r\n dropFeedbackMode: \"indicate\"\r\n }, rowDragging, {\r\n onDragStart: function(e) {\r\n var _rowDragging$onDragSt;\r\n var row = e.component.getVisibleRows()[e.fromIndex];\r\n e.itemData = row && row.data;\r\n var isDataRow = row && \"data\" === row.rowType;\r\n e.cancel = !allowReordering || !isDataRow;\r\n null === (_rowDragging$onDragSt = rowDragging.onDragStart) || void 0 === _rowDragging$onDragSt ? void 0 : _rowDragging$onDragSt.call(rowDragging, e)\r\n },\r\n onDragEnter: function() {\r\n togglePointerEventsStyle(true)\r\n },\r\n onDragLeave: function() {\r\n togglePointerEventsStyle(false)\r\n },\r\n onDragEnd: function(e) {\r\n var _rowDragging$onDragEn;\r\n togglePointerEventsStyle(false);\r\n null === (_rowDragging$onDragEn = rowDragging.onDragEnd) || void 0 === _rowDragging$onDragEn ? void 0 : _rowDragging$onDragEn.call(rowDragging, e)\r\n },\r\n onAdd: function(e) {\r\n var _rowDragging$onAdd;\r\n togglePointerEventsStyle(false);\r\n null === (_rowDragging$onAdd = rowDragging.onAdd) || void 0 === _rowDragging$onAdd ? void 0 : _rowDragging$onAdd.call(rowDragging, e)\r\n },\r\n dropFeedbackMode: _browser.default.msie ? \"indicate\" : rowDragging.dropFeedbackMode,\r\n onOptionChanged: function(e) {\r\n var hasFixedSortable = _this[sortableFixedName];\r\n if (hasFixedSortable) {\r\n if (\"fromIndex\" === e.name || \"toIndex\" === e.name) {\r\n _this[anotherSortableName].option(e.name, e.value)\r\n }\r\n }\r\n }\r\n }));\r\n $content.toggleClass(\"dx-scrollable-container\", isFixedTableRendering);\r\n $content.toggleClass(SORTABLE_WITHOUT_HANDLE_CLASS, allowReordering && !rowDragging.showDragIcons)\r\n }\r\n return $content\r\n },\r\n _resizeCore: function() {\r\n this.callBase.apply(this, arguments);\r\n var offset = this._dataController.getRowIndexOffset();\r\n [this._sortable, this._sortableFixed].forEach(function(sortable) {\r\n null === sortable || void 0 === sortable ? void 0 : sortable.option(\"offset\", offset);\r\n null === sortable || void 0 === sortable ? void 0 : sortable.update()\r\n })\r\n },\r\n _getDraggableGridOptions: function(options) {\r\n var gridOptions = this.option();\r\n var columns = this.getColumns();\r\n var $rowElement = (0, _renderer.default)(this.getRowElement(options.rowIndex));\r\n return {\r\n dataSource: [{\r\n id: 1,\r\n parentId: 0\r\n }],\r\n showBorders: true,\r\n showColumnHeaders: false,\r\n scrolling: {\r\n useNative: false,\r\n showScrollbar: false\r\n },\r\n pager: {\r\n visible: false\r\n },\r\n loadingTimeout: void 0,\r\n columnFixing: gridOptions.columnFixing,\r\n columnAutoWidth: gridOptions.columnAutoWidth,\r\n showColumnLines: gridOptions.showColumnLines,\r\n columns: columns.map(function(column) {\r\n return {\r\n width: column.width || column.visibleWidth,\r\n fixed: column.fixed,\r\n fixedPosition: column.fixedPosition\r\n }\r\n }),\r\n onRowPrepared: function(e) {\r\n var rowsView = e.component.getView(\"rowsView\");\r\n (0, _renderer.default)(e.rowElement).replaceWith($rowElement.eq(rowsView._isFixedTableRendering ? 1 : 0).clone())\r\n }\r\n }\r\n },\r\n _getDraggableRowTemplate: function() {\r\n var _this2 = this;\r\n return function(options) {\r\n var $rootElement = _this2.component.$element();\r\n var $dataGridContainer = (0, _renderer.default)(\"
\").width($rootElement.width());\r\n var items = _this2._dataController.items();\r\n var row = items && items[options.fromIndex];\r\n var gridOptions = _this2._getDraggableGridOptions(row);\r\n _this2._createComponent($dataGridContainer, _this2.component.NAME, gridOptions);\r\n $dataGridContainer.find(\".dx-gridbase-container\").children(\":not(.\".concat(_this2.addWidgetPrefix(ROWS_VIEW), \")\")).hide();\r\n return $dataGridContainer\r\n }\r\n },\r\n _getHandleTemplate: function() {\r\n var _this3 = this;\r\n return function(container, options) {\r\n if (\"data\" === options.rowType) {\r\n (0, _renderer.default)(container).addClass(CELL_FOCUS_DISABLED_CLASS);\r\n return (0, _renderer.default)(\"\").addClass(_this3.addWidgetPrefix(HANDLE_ICON_CLASS))\r\n } else {\r\n _uiGrid_core.default.setEmptyText((0, _renderer.default)(container))\r\n }\r\n }\r\n },\r\n optionChanged: function(args) {\r\n if (\"rowDragging\" === args.name) {\r\n this._updateHandleColumn();\r\n this._invalidate(true, true);\r\n args.handled = true\r\n }\r\n this.callBase.apply(this, arguments)\r\n }\r\n};\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n rowDragging: {\r\n showDragIcons: true,\r\n dropFeedbackMode: \"indicate\",\r\n allowReordering: false,\r\n allowDropInsideItem: false\r\n }\r\n }\r\n },\r\n extenders: {\r\n views: {\r\n rowsView: RowDraggingExtender\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/html_editor/modules/popup.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _devextremeQuill = _interopRequireDefault(require(\"devextreme-quill\"));\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _extend = require(\"../../../core/utils/extend\");\r\nvar _window = require(\"../../../core/utils/window\");\r\nvar _popup = _interopRequireDefault(require(\"../../popup\"));\r\nvar _list = _interopRequireDefault(require(\"../../list\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor) {\r\n descriptor.writable = true\r\n }\r\n Object.defineProperty(target, descriptor.key, descriptor)\r\n }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n if (protoProps) {\r\n _defineProperties(Constructor.prototype, protoProps)\r\n }\r\n if (staticProps) {\r\n _defineProperties(Constructor, staticProps)\r\n }\r\n Object.defineProperty(Constructor, \"prototype\", {\r\n writable: false\r\n });\r\n return Constructor\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar ListPopupModule = {};\r\nif (_devextremeQuill.default) {\r\n var SUGGESTION_LIST_CLASS = \"dx-suggestion-list\";\r\n var SUGGESTION_LIST_WRAPPER_CLASS = \"dx-suggestion-list-wrapper\";\r\n var BaseModule = _devextremeQuill.default.import(\"core/module\");\r\n var MIN_HEIGHT = 100;\r\n ListPopupModule = function(_BaseModule) {\r\n _inheritsLoose(ListPopupModule, _BaseModule);\r\n var _proto = ListPopupModule.prototype;\r\n _proto._getDefaultOptions = function() {\r\n return {\r\n dataSource: null\r\n }\r\n };\r\n\r\n function ListPopupModule(quill, options) {\r\n var _this;\r\n _this = _BaseModule.call(this, quill, options) || this;\r\n _this.options = (0, _extend.extend)({}, _this._getDefaultOptions(), options);\r\n _this._popup = _this.renderPopup();\r\n _this._popup.$wrapper().addClass(SUGGESTION_LIST_WRAPPER_CLASS);\r\n return _this\r\n }\r\n _proto.renderList = function($container, options) {\r\n var $list = (0, _renderer.default)(\"
\").addClass(SUGGESTION_LIST_CLASS).appendTo($container);\r\n this._list = this.options.editorInstance._createComponent($list, _list.default, options)\r\n };\r\n _proto.renderPopup = function() {\r\n var editorInstance = this.options.editorInstance;\r\n var $container = (0, _renderer.default)(\"
\").appendTo(editorInstance.$element());\r\n var popupConfig = this._getPopupConfig();\r\n return editorInstance._createComponent($container, _popup.default, popupConfig)\r\n };\r\n _proto._getPopupConfig = function() {\r\n var _this2 = this;\r\n return {\r\n contentTemplate: function(contentElem) {\r\n var listConfig = _this2._getListConfig(_this2.options);\r\n _this2.renderList((0, _renderer.default)(contentElem), listConfig)\r\n },\r\n deferRendering: false,\r\n onShown: function() {\r\n _this2._list.focus()\r\n },\r\n onHidden: function() {\r\n _this2._list.unselectAll();\r\n _this2._list.option(\"focusedElement\", null)\r\n },\r\n showTitle: false,\r\n width: \"auto\",\r\n height: \"auto\",\r\n shading: false,\r\n closeOnTargetScroll: true,\r\n closeOnOutsideClick: true,\r\n animation: {\r\n show: {\r\n type: \"fade\",\r\n duration: 0,\r\n from: 0,\r\n to: 1\r\n },\r\n hide: {\r\n type: \"fade\",\r\n duration: 400,\r\n from: 1,\r\n to: 0\r\n }\r\n },\r\n fullScreen: false,\r\n maxHeight: this.maxHeight\r\n }\r\n };\r\n _proto._getListConfig = function(options) {\r\n return {\r\n dataSource: options.dataSource,\r\n onSelectionChanged: this.selectionChangedHandler.bind(this),\r\n selectionMode: \"single\",\r\n pageLoadMode: \"scrollBottom\"\r\n }\r\n };\r\n _proto.selectionChangedHandler = function(e) {\r\n if (this._popup.option(\"visible\")) {\r\n this._popup.hide();\r\n this.insertEmbedContent(e)\r\n }\r\n };\r\n _proto.insertEmbedContent = function(selectionChangedEvent) {};\r\n _proto.showPopup = function() {\r\n this._popup && this._popup.show()\r\n };\r\n _proto.savePosition = function(position) {\r\n this.caretPosition = position\r\n };\r\n _proto.getPosition = function() {\r\n return this.caretPosition\r\n };\r\n _createClass(ListPopupModule, [{\r\n key: \"maxHeight\",\r\n get: function() {\r\n var window = (0, _window.getWindow)();\r\n var windowHeight = window && (0, _renderer.default)(window).height() || 0;\r\n return Math.max(MIN_HEIGHT, .5 * windowHeight)\r\n }\r\n }]);\r\n return ListPopupModule\r\n }(BaseModule)\r\n}\r\nvar _default = ListPopupModule;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/html_editor/converterController.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar ConverterController = function() {\r\n function ConverterController() {\r\n this._converters = {}\r\n }\r\n var _proto = ConverterController.prototype;\r\n _proto.addConverter = function(name, converter) {\r\n this._converters[name] = converter\r\n };\r\n _proto.getConverter = function(name) {\r\n return this._converters[name]\r\n };\r\n return ConverterController\r\n}();\r\nvar controller = new ConverterController;\r\nvar _default = controller;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.utils.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _filtering = _interopRequireDefault(require(\"../shared/filtering\"));\r\nvar _string = require(\"../../core/utils/string\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _load_panel = _interopRequireDefault(require(\"../load_panel\"));\r\nvar _utils = _interopRequireDefault(require(\"../../data/utils\"));\r\nvar _format_helper = _interopRequireDefault(require(\"../../format_helper\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar DATAGRID_SELECTION_DISABLED_CLASS = \"dx-selection-disabled\";\r\nvar DATAGRID_GROUP_OPENED_CLASS = \"dx-datagrid-group-opened\";\r\nvar DATAGRID_GROUP_CLOSED_CLASS = \"dx-datagrid-group-closed\";\r\nvar DATAGRID_EXPAND_CLASS = \"dx-datagrid-expand\";\r\nvar NO_DATA_CLASS = \"nodata\";\r\nvar DATE_INTERVAL_SELECTORS = {\r\n year: function(value) {\r\n return value && value.getFullYear()\r\n },\r\n month: function(value) {\r\n return value && value.getMonth() + 1\r\n },\r\n day: function(value) {\r\n return value && value.getDate()\r\n },\r\n quarter: function(value) {\r\n return value && Math.floor(value.getMonth() / 3) + 1\r\n },\r\n hour: function(value) {\r\n return value && value.getHours()\r\n },\r\n minute: function(value) {\r\n return value && value.getMinutes()\r\n },\r\n second: function(value) {\r\n return value && value.getSeconds()\r\n }\r\n};\r\nvar getIntervalSelector = function() {\r\n var data = arguments[1];\r\n var value = this.calculateCellValue(data);\r\n if (!(0, _type.isDefined)(value)) {\r\n return null\r\n } else {\r\n if (isDateType(this.dataType)) {\r\n var nameIntervalSelector = arguments[0];\r\n return DATE_INTERVAL_SELECTORS[nameIntervalSelector](value)\r\n } else {\r\n if (\"number\" === this.dataType) {\r\n var groupInterval = arguments[0];\r\n return Math.floor(Number(value) / groupInterval) * groupInterval\r\n }\r\n }\r\n }\r\n};\r\nvar equalSelectors = function(selector1, selector2) {\r\n if ((0, _type.isFunction)(selector1) && (0, _type.isFunction)(selector2)) {\r\n if (selector1.originalCallback && selector2.originalCallback) {\r\n return selector1.originalCallback === selector2.originalCallback && selector1.columnIndex === selector2.columnIndex\r\n }\r\n }\r\n return selector1 === selector2\r\n};\r\n\r\nfunction isDateType(dataType) {\r\n return \"date\" === dataType || \"datetime\" === dataType\r\n}\r\nvar setEmptyText = function($container) {\r\n $container.get(0).textContent = \"\\xa0\"\r\n};\r\nvar normalizeSortingInfo = function(sort) {\r\n sort = sort || [];\r\n var result = _utils.default.normalizeSortingInfo(sort);\r\n for (var i = 0; i < sort.length; i++) {\r\n if (sort && sort[i] && void 0 !== sort[i].isExpanded) {\r\n result[i].isExpanded = sort[i].isExpanded\r\n }\r\n if (sort && sort[i] && void 0 !== sort[i].groupInterval) {\r\n result[i].groupInterval = sort[i].groupInterval\r\n }\r\n }\r\n return result\r\n};\r\nvar formatValue = function(value, options) {\r\n var valueText = _format_helper.default.format(value, options.format) || value && value.toString() || \"\";\r\n var formatObject = {\r\n value: value,\r\n valueText: options.getDisplayFormat ? options.getDisplayFormat(valueText) : valueText,\r\n target: options.target || \"row\",\r\n groupInterval: options.groupInterval\r\n };\r\n return options.customizeText ? options.customizeText.call(options, formatObject) : formatObject.valueText\r\n};\r\nvar getSummaryText = function(summaryItem, summaryTexts) {\r\n var displayFormat = summaryItem.displayFormat || summaryItem.columnCaption && summaryTexts[summaryItem.summaryType + \"OtherColumn\"] || summaryTexts[summaryItem.summaryType];\r\n return formatValue(summaryItem.value, {\r\n format: summaryItem.valueFormat,\r\n getDisplayFormat: function(valueText) {\r\n return displayFormat ? (0, _string.format)(displayFormat, valueText, summaryItem.columnCaption) : valueText\r\n },\r\n customizeText: summaryItem.customizeText\r\n })\r\n};\r\nvar getWidgetInstance = function($element) {\r\n var editorData = $element.data && $element.data();\r\n var dxComponents = editorData && editorData.dxComponents;\r\n var widgetName = dxComponents && dxComponents[0];\r\n return widgetName && editorData[widgetName]\r\n};\r\nvar equalFilterParameters = function equalFilterParameters(filter1, filter2) {\r\n if (Array.isArray(filter1) && Array.isArray(filter2)) {\r\n if (filter1.length !== filter2.length) {\r\n return false\r\n } else {\r\n for (var i = 0; i < filter1.length; i++) {\r\n if (!equalFilterParameters(filter1[i], filter2[i])) {\r\n return false\r\n }\r\n }\r\n }\r\n return true\r\n } else {\r\n if ((0, _type.isFunction)(filter1) && filter1.columnIndex >= 0 && (0, _type.isFunction)(filter2) && filter2.columnIndex >= 0) {\r\n return filter1.columnIndex === filter2.columnIndex && (0, _data.toComparable)(filter1.filterValue) === (0, _data.toComparable)(filter2.filterValue)\r\n } else {\r\n return (0, _data.toComparable)(filter1) == (0, _data.toComparable)(filter2)\r\n }\r\n }\r\n};\r\nvar _default = {\r\n renderNoDataText: function($element) {\r\n var that = this;\r\n $element = $element || this.element();\r\n if (!$element) {\r\n return\r\n }\r\n var noDataClass = that.addWidgetPrefix(NO_DATA_CLASS);\r\n var noDataElement = $element.find(\".\" + noDataClass).last();\r\n var isVisible = this._dataController.isEmpty();\r\n var isLoading = this._dataController.isLoading();\r\n if (!noDataElement.length) {\r\n noDataElement = (0, _renderer.default)(\"\").addClass(noDataClass).appendTo($element)\r\n }\r\n if (isVisible && !isLoading) {\r\n noDataElement.removeClass(\"dx-hidden\").text(that._getNoDataText())\r\n } else {\r\n noDataElement.addClass(\"dx-hidden\")\r\n }\r\n },\r\n renderLoadPanel: function($element, $container, isLocalStore) {\r\n var that = this;\r\n var loadPanelOptions;\r\n that._loadPanel && that._loadPanel.$element().remove();\r\n loadPanelOptions = that.option(\"loadPanel\");\r\n if (loadPanelOptions && (\"auto\" === loadPanelOptions.enabled ? !isLocalStore : loadPanelOptions.enabled)) {\r\n loadPanelOptions = (0, _extend.extend)({\r\n shading: false,\r\n message: loadPanelOptions.text,\r\n position: function() {\r\n var $window = (0, _renderer.default)((0, _window.getWindow)());\r\n if ($element.height() > $window.height()) {\r\n return {\r\n of: $window,\r\n boundary: $element,\r\n collision: \"fit\"\r\n }\r\n }\r\n return {\r\n of: $element\r\n }\r\n },\r\n container: $container\r\n }, loadPanelOptions);\r\n that._loadPanel = that._createComponent((0, _renderer.default)(\"
\").appendTo($container), _load_panel.default, loadPanelOptions)\r\n } else {\r\n that._loadPanel = null\r\n }\r\n },\r\n getIndexByKey: function(key, items, keyName) {\r\n var index = -1;\r\n if (void 0 !== key && Array.isArray(items)) {\r\n keyName = arguments.length <= 2 ? \"key\" : keyName;\r\n for (var i = 0; i < items.length; i++) {\r\n var item = (0, _type.isDefined)(keyName) ? items[i][keyName] : items[i];\r\n if ((0, _common.equalByValue)(key, item)) {\r\n index = i;\r\n break\r\n }\r\n }\r\n }\r\n return index\r\n },\r\n combineFilters: function(filters, operation) {\r\n var resultFilter = [];\r\n operation = operation || \"and\";\r\n for (var i = 0; i < filters.length; i++) {\r\n if (!filters[i]) {\r\n continue\r\n }\r\n if (resultFilter.length) {\r\n resultFilter.push(operation)\r\n }\r\n resultFilter.push(filters[i])\r\n }\r\n if (1 === resultFilter.length) {\r\n resultFilter = resultFilter[0]\r\n }\r\n if (resultFilter.length) {\r\n return resultFilter\r\n }\r\n },\r\n checkChanges: function(changes, changeNames) {\r\n var changesWithChangeNamesCount = 0;\r\n for (var i = 0; i < changeNames.length; i++) {\r\n if (changes[changeNames[i]]) {\r\n changesWithChangeNamesCount++\r\n }\r\n }\r\n return changes.length && changes.length === changesWithChangeNamesCount\r\n },\r\n equalFilterParameters: equalFilterParameters,\r\n proxyMethod: function(instance, methodName, defaultResult) {\r\n if (!instance[methodName]) {\r\n instance[methodName] = function() {\r\n var dataSource = this._dataSource;\r\n return dataSource ? dataSource[methodName].apply(dataSource, arguments) : defaultResult\r\n }\r\n }\r\n },\r\n formatValue: formatValue,\r\n getFormatOptionsByColumn: function(column, target) {\r\n return {\r\n format: column.format,\r\n getDisplayFormat: column.getDisplayFormat,\r\n customizeText: column.customizeText,\r\n target: target,\r\n trueText: column.trueText,\r\n falseText: column.falseText\r\n }\r\n },\r\n getDisplayValue: function(column, value, data, rowType) {\r\n if (column.displayValueMap && void 0 !== column.displayValueMap[value]) {\r\n return column.displayValueMap[value]\r\n } else {\r\n if (column.calculateDisplayValue && data && \"group\" !== rowType) {\r\n return column.calculateDisplayValue(data)\r\n } else {\r\n if (column.lookup && !(\"group\" === rowType && (column.calculateGroupValue || column.calculateDisplayValue))) {\r\n return column.lookup.calculateCellValue(value)\r\n }\r\n }\r\n }\r\n return value\r\n },\r\n getGroupRowSummaryText: function(summaryItems, summaryTexts) {\r\n var result = \"(\";\r\n for (var i = 0; i < summaryItems.length; i++) {\r\n var summaryItem = summaryItems[i];\r\n result += (i > 0 ? \", \" : \"\") + getSummaryText(summaryItem, summaryTexts)\r\n }\r\n return result += \")\"\r\n },\r\n getSummaryText: getSummaryText,\r\n normalizeSortingInfo: normalizeSortingInfo,\r\n getFormatByDataType: function(dataType) {\r\n switch (dataType) {\r\n case \"date\":\r\n return \"shortDate\";\r\n case \"datetime\":\r\n return \"shortDateShortTime\"\r\n }\r\n },\r\n getHeaderFilterGroupParameters: function(column, remoteGrouping) {\r\n var result = [];\r\n var dataField = column.dataField || column.name;\r\n var groupInterval = _filtering.default.getGroupInterval(column);\r\n if (groupInterval) {\r\n (0, _iterator.each)(groupInterval, function(index, interval) {\r\n result.push(remoteGrouping ? {\r\n selector: dataField,\r\n groupInterval: interval,\r\n isExpanded: index < groupInterval.length - 1\r\n } : getIntervalSelector.bind(column, interval))\r\n });\r\n return result\r\n }\r\n if (remoteGrouping) {\r\n result = [{\r\n selector: dataField,\r\n isExpanded: false\r\n }]\r\n } else {\r\n result = function result(data) {\r\n var result = column.calculateCellValue(data);\r\n if (void 0 === result || \"\" === result) {\r\n result = null\r\n }\r\n return result\r\n };\r\n if (column.sortingMethod) {\r\n result = [{\r\n selector: result,\r\n compare: column.sortingMethod.bind(column)\r\n }]\r\n }\r\n }\r\n return result\r\n },\r\n equalSortParameters: function(sortParameters1, sortParameters2, ignoreIsExpanded) {\r\n sortParameters1 = normalizeSortingInfo(sortParameters1);\r\n sortParameters2 = normalizeSortingInfo(sortParameters2);\r\n if (Array.isArray(sortParameters1) && Array.isArray(sortParameters2)) {\r\n if (sortParameters1.length !== sortParameters2.length) {\r\n return false\r\n } else {\r\n for (var i = 0; i < sortParameters1.length; i++) {\r\n if (!equalSelectors(sortParameters1[i].selector, sortParameters2[i].selector) || sortParameters1[i].desc !== sortParameters2[i].desc || sortParameters1[i].groupInterval !== sortParameters2[i].groupInterval || !ignoreIsExpanded && Boolean(sortParameters1[i].isExpanded) !== Boolean(sortParameters2[i].isExpanded)) {\r\n return false\r\n }\r\n }\r\n }\r\n return true\r\n } else {\r\n return (!sortParameters1 || !sortParameters1.length) === (!sortParameters2 || !sortParameters2.length)\r\n }\r\n },\r\n getPointsByColumns: function(items, pointCreated, isVertical, startColumnIndex) {\r\n var cellsLength = items.length;\r\n var notCreatePoint = false;\r\n var item;\r\n var offset;\r\n var columnIndex = startColumnIndex || 0;\r\n var result = [];\r\n var rtlEnabled;\r\n for (var i = 0; i <= cellsLength; i++) {\r\n if (i < cellsLength) {\r\n item = items.eq(i);\r\n offset = item.offset();\r\n rtlEnabled = \"rtl\" === item.css(\"direction\")\r\n }\r\n var point = {\r\n index: columnIndex,\r\n x: offset ? offset.left + (!isVertical && rtlEnabled ^ i === cellsLength ? (0, _position.getBoundingRect)(item[0]).width : 0) : 0,\r\n y: offset ? offset.top + (isVertical && i === cellsLength ? (0, _position.getBoundingRect)(item[0]).height : 0) : 0,\r\n columnIndex: columnIndex\r\n };\r\n if (!isVertical && i > 0) {\r\n var prevItemOffset = items.eq(i - 1).offset();\r\n if (prevItemOffset.top < point.y) {\r\n point.y = prevItemOffset.top\r\n }\r\n }\r\n if (pointCreated) {\r\n notCreatePoint = pointCreated(point)\r\n }\r\n if (!notCreatePoint) {\r\n result.push(point)\r\n }\r\n columnIndex++\r\n }\r\n return result\r\n },\r\n getExpandCellTemplate: function() {\r\n return {\r\n allowRenderToDetachedContainer: true,\r\n render: function(container, options) {\r\n var $container = (0, _renderer.default)(container);\r\n if ((0, _type.isDefined)(options.value) && !(options.data && options.data.isContinuation) && !options.row.isNewRow) {\r\n var rowsView = options.component.getView(\"rowsView\");\r\n $container.addClass(DATAGRID_EXPAND_CLASS).addClass(DATAGRID_SELECTION_DISABLED_CLASS);\r\n (0, _renderer.default)(\"
\").addClass(options.value ? DATAGRID_GROUP_OPENED_CLASS : DATAGRID_GROUP_CLOSED_CLASS).appendTo($container);\r\n rowsView.setAria(\"label\", options.value ? rowsView.localize(\"dxDataGrid-ariaCollapse\") : rowsView.localize(\"dxDataGrid-ariaExpand\"), $container)\r\n } else {\r\n setEmptyText($container)\r\n }\r\n }\r\n }\r\n },\r\n setEmptyText: setEmptyText,\r\n isDateType: isDateType,\r\n getSelectionRange: function(focusedElement) {\r\n try {\r\n if (focusedElement) {\r\n return {\r\n selectionStart: focusedElement.selectionStart,\r\n selectionEnd: focusedElement.selectionEnd\r\n }\r\n }\r\n } catch (e) {}\r\n return {}\r\n },\r\n setSelectionRange: function(focusedElement, selectionRange) {\r\n try {\r\n if (focusedElement && focusedElement.setSelectionRange) {\r\n focusedElement.setSelectionRange(selectionRange.selectionStart, selectionRange.selectionEnd)\r\n }\r\n } catch (e) {}\r\n },\r\n focusAndSelectElement: function(component, $element) {\r\n var isFocused = $element.is(\":focus\");\r\n _events_engine.default.trigger($element, \"focus\");\r\n var isSelectTextOnEditingStart = component.option(\"editing.selectTextOnEditStart\");\r\n var element = $element.get(0);\r\n if (!isFocused && isSelectTextOnEditingStart && $element.is(\".dx-texteditor-input\") && !$element.is(\"[readonly]\")) {\r\n var editor = getWidgetInstance($element.closest(\".dx-texteditor\"));\r\n (0, _deferred.when)(editor && editor._loadItemDeferred).done(function() {\r\n element.select()\r\n })\r\n }\r\n },\r\n getWidgetInstance: getWidgetInstance,\r\n getLastResizableColumnIndex: function(columns, resultWidths) {\r\n var hasResizableColumns = columns.some(function(column) {\r\n return column && !column.command && !column.fixed && false !== column.allowResizing\r\n });\r\n var lastColumnIndex;\r\n for (lastColumnIndex = columns.length - 1; columns[lastColumnIndex]; lastColumnIndex--) {\r\n var column = columns[lastColumnIndex];\r\n var width = resultWidths && resultWidths[lastColumnIndex];\r\n var allowResizing = !hasResizableColumns || false !== column.allowResizing;\r\n if (!column.command && !column.fixed && \"adaptiveHidden\" !== width && allowResizing) {\r\n break\r\n }\r\n }\r\n return lastColumnIndex\r\n },\r\n isElementInCurrentGrid: function(controller, $element) {\r\n if ($element && $element.length) {\r\n var $grid = $element.closest(\".\" + controller.getWidgetContainerClass()).parent();\r\n return $grid.is(controller.component.$element())\r\n }\r\n return false\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/hierarchical_collection/ui.data_adapter.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _ui = _interopRequireDefault(require(\"../../ui/widget/ui.errors\"));\r\nvar _ui2 = _interopRequireDefault(require(\"../../ui/widget/ui.search_box_mixin\"));\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _query = _interopRequireDefault(require(\"../../data/query\"));\r\nvar _store_helper = _interopRequireDefault(require(\"../../data/store_helper\"));\r\nvar _ui3 = _interopRequireDefault(require(\"./ui.data_converter\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar EXPANDED = \"expanded\";\r\nvar SELECTED = \"selected\";\r\nvar DISABLED = \"disabled\";\r\nvar DataAdapter = _class.default.inherit({\r\n ctor: function(options) {\r\n this.options = {};\r\n (0, _extend.extend)(this.options, this._defaultOptions(), options);\r\n this.options.dataConverter.setDataAccessors(this.options.dataAccessors);\r\n this._selectedNodesKeys = [];\r\n this._expandedNodesKeys = [];\r\n this._dataStructure = [];\r\n this._createInternalDataStructure();\r\n this.getTreeNodes()\r\n },\r\n setOption: function(name, value) {\r\n this.options[name] = value;\r\n if (\"recursiveSelection\" === name) {\r\n this._updateSelection()\r\n }\r\n },\r\n _defaultOptions: function() {\r\n return {\r\n dataAccessors: void 0,\r\n items: [],\r\n multipleSelection: true,\r\n recursiveSelection: false,\r\n recursiveExpansion: false,\r\n rootValue: 0,\r\n searchValue: \"\",\r\n dataType: \"tree\",\r\n searchMode: \"contains\",\r\n dataConverter: new _ui3.default,\r\n onNodeChanged: _common.noop,\r\n sort: null\r\n }\r\n },\r\n _createInternalDataStructure: function() {\r\n this._initialDataStructure = this.options.dataConverter.createPlainStructure(this.options.items, this.options.rootValue, this.options.dataType);\r\n this._dataStructure = this.options.searchValue.length ? this.search(this.options.searchValue) : this._initialDataStructure;\r\n this.options.dataConverter._dataStructure = this._dataStructure;\r\n this._updateSelection();\r\n this._updateExpansion()\r\n },\r\n _updateSelection: function() {\r\n if (this.options.recursiveSelection) {\r\n this._setChildrenSelection();\r\n this._setParentSelection()\r\n }\r\n this._selectedNodesKeys = this._updateNodesKeysArray(SELECTED)\r\n },\r\n _updateExpansion: function(key) {\r\n if (this.options.recursiveExpansion) {\r\n key ? this._updateOneBranch(key) : this._setParentExpansion()\r\n }\r\n this._expandedNodesKeys = this._updateNodesKeysArray(EXPANDED)\r\n },\r\n _updateNodesKeysArray: function(property) {\r\n var that = this;\r\n var array = [];\r\n (0, _iterator.each)(that._getDataBySelectionMode(), function(_, node) {\r\n if (!that._isNodeVisible(node)) {\r\n return\r\n }\r\n if (node.internalFields[property]) {\r\n if (property === EXPANDED || that.options.multipleSelection) {\r\n array.push(node.internalFields.key)\r\n } else {\r\n array.length && that.toggleSelection(array[0], false, true);\r\n array = [node.internalFields.key]\r\n }\r\n }\r\n });\r\n return array\r\n },\r\n _getDataBySelectionMode: function() {\r\n return this.options.multipleSelection ? this.getData() : this.getFullData()\r\n },\r\n _isNodeVisible: function(node) {\r\n return false !== node.internalFields.item.visible\r\n },\r\n _getByKey: function(data, key) {\r\n return data === this._dataStructure ? this.options.dataConverter._getByKey(key) : this.options.dataConverter.getByKey(data, key)\r\n },\r\n _setChildrenSelection: function() {\r\n var that = this;\r\n (0, _iterator.each)(this._dataStructure, function(_, node) {\r\n if (!node.internalFields.childrenKeys.length) {\r\n return\r\n }\r\n var isSelected = node.internalFields.selected;\r\n true === isSelected && that._toggleChildrenSelection(node, isSelected)\r\n })\r\n },\r\n _setParentSelection: function() {\r\n var that = this;\r\n (0, _iterator.each)(this._dataStructure, function(_, node) {\r\n var parent = that.options.dataConverter.getParentNode(node);\r\n if (parent && node.internalFields.parentKey !== that.options.rootValue) {\r\n that._iterateParents(node, function(parent) {\r\n var newParentState = that._calculateSelectedState(parent);\r\n that._setFieldState(parent, SELECTED, newParentState)\r\n })\r\n }\r\n })\r\n },\r\n _setParentExpansion: function() {\r\n var that = this;\r\n (0, _iterator.each)(this._dataStructure, function(_, node) {\r\n if (!node.internalFields.expanded) {\r\n return\r\n }\r\n that._updateOneBranch(node.internalFields.key)\r\n })\r\n },\r\n _updateOneBranch: function(key) {\r\n var that = this;\r\n var node = this.getNodeByKey(key);\r\n that._iterateParents(node, function(parent) {\r\n that._setFieldState(parent, EXPANDED, true)\r\n })\r\n },\r\n _iterateChildren: function(node, recursive, callback, processedKeys) {\r\n if (!(0, _type.isFunction)(callback)) {\r\n return\r\n }\r\n var that = this;\r\n var nodeKey = node.internalFields.key;\r\n processedKeys = processedKeys || [];\r\n if (processedKeys.indexOf(nodeKey) === -1) {\r\n processedKeys.push(nodeKey);\r\n (0, _iterator.each)(node.internalFields.childrenKeys, function(_, key) {\r\n var child = that.getNodeByKey(key);\r\n callback(child);\r\n if (child.internalFields.childrenKeys.length && recursive) {\r\n that._iterateChildren(child, recursive, callback, processedKeys)\r\n }\r\n })\r\n }\r\n },\r\n _iterateParents: function(node, callback, processedKeys) {\r\n if (node.internalFields.parentKey === this.options.rootValue || !(0, _type.isFunction)(callback)) {\r\n return\r\n }\r\n processedKeys = processedKeys || [];\r\n var key = node.internalFields.key;\r\n if (processedKeys.indexOf(key) === -1) {\r\n processedKeys.push(key);\r\n var parent = this.options.dataConverter.getParentNode(node);\r\n if (parent) {\r\n callback(parent);\r\n if (parent.internalFields.parentKey !== this.options.rootValue) {\r\n this._iterateParents(parent, callback, processedKeys)\r\n }\r\n }\r\n }\r\n },\r\n _calculateSelectedState: function(node) {\r\n var itemsCount = node.internalFields.childrenKeys.length;\r\n var selectedItemsCount = 0;\r\n var invisibleItemsCount = 0;\r\n var result = false;\r\n for (var i = 0; i <= itemsCount - 1; i++) {\r\n var childNode = this.getNodeByKey(node.internalFields.childrenKeys[i]);\r\n var isChildInvisible = false === childNode.internalFields.item.visible;\r\n var childState = childNode.internalFields.selected;\r\n if (isChildInvisible) {\r\n invisibleItemsCount++;\r\n continue\r\n }\r\n if (childState) {\r\n selectedItemsCount++\r\n } else {\r\n if (void 0 === childState) {\r\n selectedItemsCount += .5\r\n }\r\n }\r\n }\r\n if (selectedItemsCount) {\r\n result = selectedItemsCount === itemsCount - invisibleItemsCount ? true : void 0\r\n }\r\n return result\r\n },\r\n _toggleChildrenSelection: function(node, state) {\r\n var that = this;\r\n this._iterateChildren(node, true, function(child) {\r\n if (that._isNodeVisible(child)) {\r\n that._setFieldState(child, SELECTED, state)\r\n }\r\n })\r\n },\r\n _setFieldState: function(node, field, state) {\r\n if (node.internalFields[field] === state) {\r\n return\r\n }\r\n node.internalFields[field] = state;\r\n if (node.internalFields.publicNode) {\r\n node.internalFields.publicNode[field] = state\r\n }\r\n this.options.dataAccessors.setters[field](node.internalFields.item, state);\r\n this.options.onNodeChanged(node)\r\n },\r\n _markChildren: function(keys) {\r\n var that = this;\r\n (0, _iterator.each)(keys, function(_, key) {\r\n var index = that.getIndexByKey(key);\r\n var node = that.getNodeByKey(key);\r\n that._dataStructure[index] = 0;\r\n node.internalFields.childrenKeys.length && that._markChildren(node.internalFields.childrenKeys)\r\n })\r\n },\r\n _removeNode: function(key) {\r\n var node = this.getNodeByKey(key);\r\n this._dataStructure[this.getIndexByKey(key)] = 0;\r\n this._markChildren(node.internalFields.childrenKeys);\r\n var that = this;\r\n var counter = 0;\r\n var items = (0, _extend.extend)([], this._dataStructure);\r\n (0, _iterator.each)(items, function(index, item) {\r\n if (!item) {\r\n that._dataStructure.splice(index - counter, 1);\r\n counter++\r\n }\r\n })\r\n },\r\n _addNode: function(item) {\r\n var dataConverter = this.options.dataConverter;\r\n var node = dataConverter._convertItemToNode(item, this.options.dataAccessors.getters.parentKey(item));\r\n this._dataStructure = this._dataStructure.concat(node);\r\n this._initialDataStructure = this._initialDataStructure.concat(node);\r\n dataConverter._dataStructure = dataConverter._dataStructure.concat(node)\r\n },\r\n _updateFields: function() {\r\n this.options.dataConverter.updateChildrenKeys();\r\n this._updateSelection();\r\n this._updateExpansion()\r\n },\r\n getSelectedNodesKeys: function() {\r\n return this._selectedNodesKeys\r\n },\r\n getExpandedNodesKeys: function() {\r\n return this._expandedNodesKeys\r\n },\r\n getData: function() {\r\n return this._dataStructure\r\n },\r\n getFullData: function() {\r\n return this._initialDataStructure\r\n },\r\n getNodeByItem: function(item) {\r\n var result = null;\r\n (0, _iterator.each)(this._dataStructure, function(_, node) {\r\n if (node.internalFields.item === item) {\r\n result = node;\r\n return false\r\n }\r\n });\r\n return result\r\n },\r\n getNodesByItems: function(items) {\r\n var that = this;\r\n var nodes = [];\r\n (0, _iterator.each)(items, function(_, item) {\r\n var node = that.getNodeByItem(item);\r\n node && nodes.push(node)\r\n });\r\n return nodes\r\n },\r\n getNodeByKey: function(key, data) {\r\n return this._getByKey(data || this._getDataBySelectionMode(), key)\r\n },\r\n getTreeNodes: function() {\r\n return this.options.dataConverter.convertToPublicNodes(this.getRootNodes())\r\n },\r\n getItemsCount: function() {\r\n return this.options.dataConverter.getItemsCount()\r\n },\r\n getVisibleItemsCount: function() {\r\n return this.options.dataConverter.getVisibleItemsCount()\r\n },\r\n getPublicNode: function(node) {\r\n return node.internalFields.publicNode\r\n },\r\n getRootNodes: function() {\r\n return this.getChildrenNodes(this.options.rootValue)\r\n },\r\n getChildrenNodes: function(parentKey) {\r\n return (0, _query.default)(this._dataStructure).filter([\"internalFields.parentKey\", parentKey]).toArray()\r\n },\r\n getIndexByKey: function(key) {\r\n return this.options.dataConverter.getIndexByKey(key)\r\n },\r\n addItem: function(item) {\r\n this._addNode(item);\r\n this._updateFields()\r\n },\r\n removeItem: function(key) {\r\n this._removeNode(key);\r\n this._updateFields()\r\n },\r\n toggleSelection: function(key, state, selectRecursive) {\r\n var isSingleModeUnselect = this._isSingleModeUnselect(state);\r\n var node = this._getByKey(selectRecursive || isSingleModeUnselect ? this._initialDataStructure : this._dataStructure, key);\r\n this._setFieldState(node, SELECTED, state);\r\n if (this.options.recursiveSelection && !selectRecursive) {\r\n state ? this._setChildrenSelection() : this._toggleChildrenSelection(node, state);\r\n this._setParentSelection()\r\n }\r\n this._selectedNodesKeys = this._updateNodesKeysArray(SELECTED)\r\n },\r\n _isSingleModeUnselect: function(selectionState) {\r\n return !this.options.multipleSelection && !selectionState\r\n },\r\n toggleNodeDisabledState: function(key, state) {\r\n var node = this.getNodeByKey(key);\r\n this._setFieldState(node, DISABLED, state)\r\n },\r\n toggleSelectAll: function(state) {\r\n if (!(0, _type.isDefined)(state)) {\r\n return\r\n }\r\n var that = this;\r\n var lastSelectedKey = that._selectedNodesKeys[that._selectedNodesKeys.length - 1];\r\n var dataStructure = that._isSingleModeUnselect(state) ? this._initialDataStructure : this._dataStructure;\r\n (0, _iterator.each)(dataStructure, function(index, node) {\r\n if (!that._isNodeVisible(node)) {\r\n return\r\n }\r\n that._setFieldState(node, SELECTED, state)\r\n });\r\n that._selectedNodesKeys = that._updateNodesKeysArray(SELECTED);\r\n if (!state && that.options.selectionRequired) {\r\n that.toggleSelection(lastSelectedKey, true)\r\n }\r\n },\r\n isAllSelected: function() {\r\n if (this.getSelectedNodesKeys().length) {\r\n return this.getSelectedNodesKeys().length === this.getVisibleItemsCount() ? true : void 0\r\n } else {\r\n return false\r\n }\r\n },\r\n toggleExpansion: function(key, state) {\r\n var node = this.getNodeByKey(key);\r\n this._setFieldState(node, EXPANDED, state);\r\n if (state) {\r\n this._updateExpansion(key)\r\n }\r\n this._expandedNodesKeys = this._updateNodesKeysArray(EXPANDED)\r\n },\r\n isFiltered: function(item) {\r\n return !this.options.searchValue.length || !!this._filterDataStructure(this.options.searchValue, [item]).length\r\n },\r\n _createCriteria: function(selector, value, operation) {\r\n var searchFilter = [];\r\n if (!Array.isArray(selector)) {\r\n return [selector, operation, value]\r\n }(0, _iterator.each)(selector, function(i, item) {\r\n searchFilter.push([item, operation, value], \"or\")\r\n });\r\n searchFilter.pop();\r\n return searchFilter\r\n },\r\n _filterDataStructure: function(filterValue, dataStructure) {\r\n var selector = this.options.searchExpr || this.options.dataAccessors.getters.display;\r\n var operation = _ui2.default.getOperationBySearchMode(this.options.searchMode);\r\n var criteria = this._createCriteria(selector, filterValue, operation);\r\n dataStructure = dataStructure || this._initialDataStructure;\r\n return (0, _query.default)(dataStructure).filter(criteria).toArray()\r\n },\r\n search: function(searchValue) {\r\n var that = this;\r\n var matches = this._filterDataStructure(searchValue);\r\n var dataConverter = this.options.dataConverter;\r\n\r\n function lookForParents(matches, index) {\r\n var length = matches.length;\r\n while (index < length) {\r\n var node = matches[index];\r\n if (node.internalFields.parentKey === that.options.rootValue) {\r\n index++;\r\n continue\r\n }\r\n var parent = dataConverter.getParentNode(node);\r\n if (!parent) {\r\n _ui.default.log(\"W1007\", node.internalFields.parentKey, node.internalFields.key);\r\n index++;\r\n continue\r\n }\r\n if (!parent.internalFields.expanded) {\r\n that._setFieldState(parent, EXPANDED, true)\r\n }\r\n if ((0, _array.inArray)(parent, matches) > -1) {\r\n index++;\r\n continue\r\n }\r\n matches.splice(index, 0, parent);\r\n lookForParents(matches, index)\r\n }\r\n }\r\n lookForParents(matches, 0);\r\n if (this.options.sort) {\r\n matches = _store_helper.default.queryByOptions((0, _query.default)(matches), {\r\n sort: this.options.sort\r\n }).toArray()\r\n }\r\n dataConverter._indexByKey = {};\r\n (0, _iterator.each)(matches, function(index, node) {\r\n node.internalFields.childrenKeys = [];\r\n dataConverter._indexByKey[node.internalFields.key] = index\r\n });\r\n dataConverter._dataStructure = matches;\r\n dataConverter.setChildrenKeys();\r\n return dataConverter._dataStructure\r\n }\r\n});\r\nvar _default = DataAdapter;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/hierarchical_collection/ui.data_converter.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _ui = _interopRequireDefault(require(\"../../ui/widget/ui.errors\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar DataConverter = _class.default.inherit({\r\n ctor: function() {\r\n this._dataStructure = [];\r\n this._itemsCount = 0;\r\n this._visibleItemsCount = 0\r\n },\r\n _indexByKey: {},\r\n _convertItemsToNodes: function(items, parentKey) {\r\n var that = this;\r\n (0, _iterator.each)(items, function(_, item) {\r\n var parentId = (0, _type.isDefined)(parentKey) ? parentKey : that._getParentId(item);\r\n var node = that._convertItemToNode(item, parentId);\r\n that._dataStructure.push(node);\r\n that._checkForDuplicateId(node.internalFields.key);\r\n that._indexByKey[node.internalFields.key] = that._dataStructure.length - 1;\r\n if (that._itemHasChildren(item)) {\r\n that._convertItemsToNodes(that._dataAccessors.getters.items(item), node.internalFields.key)\r\n }\r\n })\r\n },\r\n _checkForDuplicateId: function(key) {\r\n if ((0, _type.isDefined)(this._indexByKey[key])) {\r\n throw _ui.default.Error(\"E1040\", key)\r\n }\r\n },\r\n _getParentId: function(item) {\r\n return \"plain\" === this._dataType ? this._dataAccessors.getters.parentKey(item) : void 0\r\n },\r\n _itemHasChildren: function(item) {\r\n if (\"plain\" === this._dataType) {\r\n return\r\n }\r\n var items = this._dataAccessors.getters.items(item);\r\n return items && items.length\r\n },\r\n _getUniqueKey: function(item) {\r\n var keyGetter = this._dataAccessors.getters.key;\r\n var itemKey = keyGetter(item);\r\n var isCorrectKey = keyGetter && (itemKey || 0 === itemKey) && (0, _type.isPrimitive)(itemKey);\r\n return isCorrectKey ? itemKey : this.getItemsCount()\r\n },\r\n _convertItemToNode: function(item, parentKey) {\r\n this._itemsCount++;\r\n false !== item.visible && this._visibleItemsCount++;\r\n var that = this;\r\n var node = {\r\n internalFields: {\r\n disabled: that._dataAccessors.getters.disabled(item, {\r\n defaultValue: false\r\n }),\r\n expanded: that._dataAccessors.getters.expanded(item, {\r\n defaultValue: false\r\n }),\r\n selected: that._dataAccessors.getters.selected(item, {\r\n defaultValue: false\r\n }),\r\n key: that._getUniqueKey(item),\r\n parentKey: (0, _type.isDefined)(parentKey) ? parentKey : that._rootValue,\r\n item: that._makeObjectFromPrimitive(item),\r\n childrenKeys: []\r\n }\r\n };\r\n (0, _extend.extend)(node, item);\r\n delete node.items;\r\n return node\r\n },\r\n setChildrenKeys: function() {\r\n var that = this;\r\n (0, _iterator.each)(this._dataStructure, function(_, node) {\r\n if (node.internalFields.parentKey === that._rootValue) {\r\n return\r\n }\r\n var parent = that.getParentNode(node);\r\n parent && parent.internalFields.childrenKeys.push(node.internalFields.key)\r\n })\r\n },\r\n _makeObjectFromPrimitive: function(item) {\r\n if ((0, _type.isPrimitive)(item)) {\r\n var key = item;\r\n item = {};\r\n this._dataAccessors.setters.key(item, key)\r\n }\r\n return item\r\n },\r\n _convertToPublicNode: function(node, parent) {\r\n if (!node) {\r\n return null\r\n }\r\n var publicNode = {\r\n text: this._dataAccessors.getters.display(node),\r\n key: node.internalFields.key,\r\n selected: node.internalFields.selected,\r\n expanded: node.internalFields.expanded,\r\n disabled: node.internalFields.disabled,\r\n parent: parent || null,\r\n itemData: node.internalFields.item,\r\n children: [],\r\n items: []\r\n };\r\n if (publicNode.parent) {\r\n publicNode.parent.children.push(publicNode);\r\n publicNode.parent.items.push(publicNode)\r\n }\r\n return publicNode\r\n },\r\n convertToPublicNodes: function(data, parent) {\r\n if (!data.length) {\r\n return []\r\n }\r\n var that = this;\r\n var publicNodes = [];\r\n (0, _iterator.each)(data, function(_, node) {\r\n node = (0, _type.isPrimitive)(node) ? that._getByKey(node) : node;\r\n var publicNode = that._convertToPublicNode(node, parent);\r\n publicNode.children = that.convertToPublicNodes(node.internalFields.childrenKeys, publicNode);\r\n publicNodes.push(publicNode);\r\n node.internalFields.publicNode = publicNode\r\n });\r\n return publicNodes\r\n },\r\n setDataAccessors: function(accessors) {\r\n this._dataAccessors = accessors\r\n },\r\n _getByKey: function(key) {\r\n return this._dataStructure[this.getIndexByKey(key)] || null\r\n },\r\n getParentNode: function(node) {\r\n return this._getByKey(node.internalFields.parentKey)\r\n },\r\n getByKey: function getByKey(data, key) {\r\n if (null === key || void 0 === key) {\r\n return null\r\n }\r\n var result = null;\r\n var that = this;\r\n var getByKey = function(data, key) {\r\n (0, _iterator.each)(data, function(_, element) {\r\n var currentElementKey = element.internalFields && element.internalFields.key || that._dataAccessors.getters.key(element);\r\n if (currentElementKey.toString() === key.toString()) {\r\n result = element;\r\n return false\r\n }\r\n });\r\n return result\r\n };\r\n return getByKey(data, key)\r\n },\r\n getItemsCount: function() {\r\n return this._itemsCount\r\n },\r\n getVisibleItemsCount: function() {\r\n return this._visibleItemsCount\r\n },\r\n updateIndexByKey: function() {\r\n var that = this;\r\n this._indexByKey = {};\r\n (0, _iterator.each)(this._dataStructure, function(index, node) {\r\n that._checkForDuplicateId(node.internalFields.key);\r\n that._indexByKey[node.internalFields.key] = index\r\n })\r\n },\r\n updateChildrenKeys: function() {\r\n this._indexByKey = {};\r\n this.removeChildrenKeys();\r\n this.updateIndexByKey();\r\n this.setChildrenKeys()\r\n },\r\n removeChildrenKeys: function() {\r\n this._indexByKey = {};\r\n (0, _iterator.each)(this._dataStructure, function(index, node) {\r\n node.internalFields.childrenKeys = []\r\n })\r\n },\r\n getIndexByKey: function(key) {\r\n return this._indexByKey[key]\r\n },\r\n createPlainStructure: function(items, rootValue, dataType) {\r\n this._itemsCount = 0;\r\n this._visibleItemsCount = 0;\r\n this._rootValue = rootValue;\r\n this._dataType = dataType;\r\n this._indexByKey = {};\r\n this._convertItemsToNodes(items);\r\n this.setChildrenKeys();\r\n return this._dataStructure\r\n }\r\n});\r\nvar _default = DataConverter;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/html_editor.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _ui = _interopRequireDefault(require(\"./html_editor/ui.html_editor\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _ui.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/html_editor/ui.html_editor.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _element = require(\"../../core/element\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _empty_template = require(\"../../core/templates/empty_template\");\r\nvar _editor = _interopRequireDefault(require(\"../editor/editor\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _index2 = require(\"../../events/index\");\r\nvar _uiEventsEmitterGesture = _interopRequireDefault(require(\"../scroll_view/ui.events.emitter.gesture.scroll\"));\r\nvar _utils = require(\"../text_box/utils.scroll\");\r\nvar _quill_registrator = _interopRequireDefault(require(\"./quill_registrator\"));\r\nrequire(\"./converters/delta\");\r\nvar _converterController = _interopRequireDefault(require(\"./converterController\"));\r\nvar _wordLists = _interopRequireDefault(require(\"./matchers/wordLists\"));\r\nvar _formDialog = _interopRequireDefault(require(\"./ui/formDialog\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\nvar HTML_EDITOR_CLASS = \"dx-htmleditor\";\r\nvar QUILL_CONTAINER_CLASS = \"dx-quill-container\";\r\nvar QUILL_CLIPBOARD_CLASS = \"ql-clipboard\";\r\nvar HTML_EDITOR_SUBMIT_ELEMENT_CLASS = \"dx-htmleditor-submit-element\";\r\nvar HTML_EDITOR_CONTENT_CLASS = \"dx-htmleditor-content\";\r\nvar MARKDOWN_VALUE_TYPE = \"markdown\";\r\nvar ANONYMOUS_TEMPLATE_NAME = \"htmlContent\";\r\nvar HtmlEditor = _editor.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n focusStateEnabled: true,\r\n valueType: \"html\",\r\n placeholder: \"\",\r\n toolbar: null,\r\n variables: null,\r\n mediaResizing: null,\r\n mentions: null,\r\n customizeModules: null,\r\n formDialogOptions: null\r\n })\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._cleanCallback = (0, _callbacks.default)();\r\n this._contentInitializedCallback = (0, _callbacks.default)()\r\n },\r\n _getAnonymousTemplateName: function() {\r\n return ANONYMOUS_TEMPLATE_NAME\r\n },\r\n _initTemplates: function() {\r\n this._templateManager.addDefaultTemplates(_defineProperty({}, ANONYMOUS_TEMPLATE_NAME, new _empty_template.EmptyTemplate));\r\n this.callBase()\r\n },\r\n _focusTarget: function() {\r\n return this._getContent()\r\n },\r\n _getContent: function() {\r\n return this.$element().find(\".\".concat(HTML_EDITOR_CONTENT_CLASS))\r\n },\r\n _focusInHandler: function(_ref) {\r\n var relatedTarget = _ref.relatedTarget;\r\n if (this._shouldSkipFocusEvent(relatedTarget)) {\r\n return\r\n }\r\n this._toggleFocusClass(true, this.$element());\r\n this.callBase.apply(this, arguments)\r\n },\r\n _focusOutHandler: function(_ref2) {\r\n var relatedTarget = _ref2.relatedTarget;\r\n if (this._shouldSkipFocusEvent(relatedTarget)) {\r\n return\r\n }\r\n this._toggleFocusClass(false, this.$element());\r\n this.callBase.apply(this, arguments)\r\n },\r\n _shouldSkipFocusEvent: function(relatedTarget) {\r\n return (0, _renderer.default)(relatedTarget).hasClass(QUILL_CLIPBOARD_CLASS)\r\n },\r\n _initMarkup: function() {\r\n this._$htmlContainer = (0, _renderer.default)(\"
\").addClass(QUILL_CONTAINER_CLASS);\r\n this.$element().addClass(HTML_EDITOR_CLASS).wrapInner(this._$htmlContainer);\r\n var template = this._getTemplate(ANONYMOUS_TEMPLATE_NAME);\r\n var transclude = true;\r\n this._$templateResult = template && template.render({\r\n container: (0, _element.getPublicElement)(this._$htmlContainer),\r\n noModel: true,\r\n transclude: transclude\r\n });\r\n this._renderSubmitElement();\r\n this.callBase();\r\n this._updateContainerMarkup()\r\n },\r\n _renderSubmitElement: function() {\r\n this._$submitElement = (0, _renderer.default)(\"