{"version":3,"sources":["webpack:///./node_modules/devextreme/ui/map/provider.js","webpack:///./node_modules/devextreme/ui/map/provider.dynamic.js","webpack:///./node_modules/devextreme/ui/multi_view/ui.multi_view.animation.js","webpack:///./node_modules/devextreme/ui/number_box/number_box.js","webpack:///./node_modules/devextreme/ui/number_box/number_box.mask.js","webpack:///./node_modules/devextreme/ui/number_box/number_box.caret.js","webpack:///./node_modules/devextreme/ui/number_box/number_box.base.js","webpack:///./node_modules/devextreme/ui/number_box/number_box.spins.js","webpack:///./node_modules/devextreme/ui/number_box/number_box.spin.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.search.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.strategy.grouped.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.provider.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.decorator.static.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.decorator.switchable.button.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.decorator.switchable.slide.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.decorator.swipe.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.decorator.context.js","webpack:///./node_modules/devextreme/ui/list/item.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.decorator.selection.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.decorator.reorder.js","webpack:///./node_modules/devextreme/ui/menu/ui.submenu.js","webpack:///./node_modules/devextreme/ui/load_indicator.js","webpack:///./node_modules/devextreme/ui/lookup.js","webpack:///./node_modules/devextreme/ui/map.js","webpack:///./node_modules/devextreme/ui/map/provider.google_static.js","webpack:///./node_modules/devextreme/ui/map/provider.dynamic.google.js","webpack:///./node_modules/devextreme/ui/map/provider.dynamic.bing.js","webpack:///./node_modules/devextreme/ui/nav_bar.js","webpack:///./node_modules/devextreme/ui/nav_bar/item.js","webpack:///./node_modules/devextreme/ui/notify.js","webpack:///./node_modules/devextreme/ui/list.js","webpack:///./node_modules/devextreme/ui/number_box.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.decorator_registry.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.decorator.js","webpack:///./node_modules/devextreme/ui/load_panel.js","webpack:///./node_modules/devextreme/ui/list/ui.list.base.js","webpack:///./node_modules/devextreme/ui/multi_view.js","webpack:///./node_modules/devextreme/ui/number_box/utils.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.decorator.switchable.js","webpack:///./node_modules/devextreme/ui/list/ui.list.edit.decorator_menu_helper.js","webpack:///./node_modules/devextreme/ui/menu.js","webpack:///./node_modules/devextreme/ui/menu/ui.menu.js"],"names":["exports","default","_promise","_interopRequireDefault","_class","_iterator","_type","_index","obj","__esModule","abstract","_default","inherit","_defaultRouteWeight","_defaultRouteOpacity","_defaultRouteColor","ctor","map","$container","this","_mapWidget","_$container","render","markerOptions","routeOptions","_renderImpl","then","all","_applyFunctionIfNeeded","bind","updateDimensions","updateMapType","updateBounds","updateCenter","updateZoom","updateControls","updateMarkers","markerOptionsToRemove","markerOptionsToAdd","resolve","removeValue","addValue","addMarkers","removeMarkers","adjustViewport","updateRoutes","routeOptionsToRemove","routeOptionsToAdd","addRoutes","removeRoutes","clean","_map","isEventsCanceled","_option","name","value","option","setOptionSilent","_keyOption","providerName","key","_parseTooltipOptions","text","visible","isShown","_getLatLng","location","coords","split","item","trim","numericRegex","length","match","lat","parseFloat","lng","Array","isArray","isPlainObject","isNumeric","_areBoundsSet","_addEventNamespace","addNamespace","NAME","fnName","array","_fireAction","actionArguments","_createActionByOption","_fireClickAction","_fireMarkerAddedAction","_fireMarkerRemovedAction","_fireRouteAddedAction","_fireRouteRemovedAction","module","_extend","_provider","_geocodeLocation","cache","_geocodedLocations","cachedLocation","_geocodeLocationImpl","geocodedLocation","_load","_init","_attachHandlers","timeout","setTimeout","clearTimeout","_mapsLoader","_loadImpl","_markers","_routes","options","_addMarker","markerObjects","_fitBounds","markerObject","marker","_renderMarker","push","extend","originalMarker","markersOptionsToRemove","that","each","_","markerOptionToRemove","_removeMarker","markersOptionToRemove","markerIndex","_destroyMarker","splice","_clearMarkers","_addRoute","routeObjects","routeObject","instance","_renderRoute","originalRoute","routeIndex","_removeRoute","_destroyRoute","_clearRoutes","_updateBounds","_clearBounds","_extendBounds","northEast","southWest","_bounds","animation","_translator","_fx","_translator2","move","$element","position","left","moveTo","duration","completeAction","animate","type","to","complete","stop","_component_registrator","_number_box","_events_engine","_browser","_devices","_math","_number","_number2","_number_box2","_common","_utils","CARET_TIMEOUT_DURATION","msie","_getDefaultOptions","callBase","useMaskBehavior","format","_isDeleteKey","_supportedKeys","_useMaskBehavior","minus","_revertSign","del","_removeHandler","backspace","leftArrow","_arrowHandler","rightArrow","home","_moveCaretToBoundaryEventHandler","enter","_updateFormattedValue","end","_getTextSeparatorIndex","decimalSeparator","getDecimalSeparator","realSeparatorOccurrenceIndex","getRealSeparatorIndex","occurrence","getNthOccurrence","_focusInHandler","e","_preventNestedFocusEvent","clearCaretTimeout","_caretTimeout","caret","_caret","start","_getInputVal","decimalSeparatorIndex","_focusOutHandler","shouldHandleEvent","_focusOutOccurs","_hasValueBeenChanged","inputValue","_getFormatPattern","_format","_updateParsedValue","_adjustParsedValue","_setTextByParsedValue","_parsedValue","trigger","_input","step","nextCaret","getCaretWithOffset","isCaretInBoundaries","preventDefault","getCaretInBoundaries","_moveCaretToBoundary","direction","boundaries","getCaretBoundaries","newCaret","shiftKey","_shouldMoveCaret","isDecimalSeparatorNext","charAt","isZeroNext","moveToFloat","_lastKey","zeroToZeroReplace","convertDigits","val","_keyboardHandler","getChar","_lastKeyName","normalizeKeyName","_shouldHandleKey","originalEvent","normalizedText","enteredChar","newValue","_tryParse","_moveCaret","_keyPressHandler","isDeleteKey","isBackspaceKey","char","slice","_isStub","_replaceSelectedText","search","_isValueInRange","valueAfterRemoving","indexOf","_isNonStubAfter","_isPercentFormat","replace","_parse","formatOption","isCustomParser","isFunction","parser","parse","integerPartStartIndex","formatPointIndex","index","textPointIndex","formatIntegerPartLength","textIntegerPartLength","_removeStubs","substr","formatter","_currentFormat","_updateFormat","_this","isLDMLPattern","isString","getFormat","_getFormatForSign","signParts","sign","getSign","excludeComma","thousandsSeparator","getThousandsSeparator","stubs","_getStubs","result","prefixStubs","postfixRegex","RegExp","escapeRegExp","decoratorsRegex","regExpResult","exec","pattern","stub","_truncateToPrecision","maxPrecision","isDefined","strValue","toString","parsedValue","isNaN","selection","editedText","isTextSelected","_getParsedValue","_getPrecisionLimits","max","isValueChanged","isDecimalPointRestricted","isUselessCharRestricted","_isValueIncomplete","Math","abs","parsedValueSign","point","pointIndex","isCaretOnFloat","textParts","floatLength","precision","isPrecisionInRange","inRange","min","endsWithZero","ensureDefined","_setInputText","getCaretAfterFormat","_toggleEmptinessEventHandler","_formattedValue","_renderInputType","isNumberType","isDesktop","real","deviceType","_setInputType","_isSupportInputMode","_isChar","str","offset","adjustedCaret","keyName","isSpecialChar","ctrlKey","altKey","isMinusKey","_renderInput","_renderFormatter","_clearCache","_detachFormatterEvents","_attachFormatterEvents","off","_isInputFromPaste","inputType","_isValuePasted","$input","on","_formatValue","version","_forceRefreshInputValue","escapedDecimalSeparator","test","_parseValue","currentFormat","realSeparatorIndex","floatPart","splitByIndex","_applyRevertedSign","preserveSelectedText","previousText","currentText","getCaretOffset","caretInBoundaries","_removeMinusFromText","parsed","formatted","textWithoutMinus","wasMinusRemoved","_renderDisplayText","apply","arguments","_renderValue","fitIntoRange","_valueChangeEventHandler","_saveValueChangeEvent","_optionChanged","args","_refreshValueChangeEvent","_refreshEvents","_clean","join","prefixStubLength","postfixStubLength","_getDigitCountBeforeIndex","regExp","_reverseText","reverse","_getDigitPositionByIndex","digitIndex","counter","isSeparatorBasedText","isSeparatorBasedString","pointPosition","newPointPosition","formattedParts","relativeIndex","digitsBefore","formattedIntPart","_trimNonNumericCharsFromEnd","positionFromEnd","digitsFromEnd","newPositionFromEnd","newText","previousBoundaries","_renderer","_dom_adapter","_array","_ui","_message","_deferred","math","FIREFOX_CONTROL_KEYS","upArrow","isCommandKeyPressed","stopPropagation","_spinUpChangeHandler","downArrow","_spinDownChangeHandler","showSpinButtons","useLargeSpinButtons","mode","invalidValueMessage","buttons","_useTemplates","_getDefaultButtons","concat","Ctor","chrome","safari","_defaultOptionsRules","device","generic","isSimulator","_initMarkup","_renderSubmitElement","addClass","_getDefaultAttributes","attributes","inputmode","_renderContentImpl","_validateValue","setAria","_$submitElement","attr","appendTo","_setSubmitValue","_getSubmitElement","applyServerDecimalSeparator","inArray","_keyPressed","_onMouseWheel","dxEvent","delta","_spinValueChange","Number","_forceValueRender","valueText","valuenow","valuetext","_updateButtons","Deferred","number","formattedValue","_applyDisplayValueFormatter","_renderProps","prop","valuemin","valuemax","_spinButtonsPointerDownHandler","getActiveElement","event","_normalizeInputValue","_correctRounding","regex","isFloatValue","isFloatStep","valueAccuracy","stepAccuracy","accuracy","_round","multiplier","pow","round","_renderValueChangeEvent","forceValueChangeEvent","element","_normalizeText","valueHasDigits","_isValueValid","_applyValueBoundaries","validationRequest","fire","editor","isValueIncomplete","isValueCorrect","_replaceCommaWithPoint","_inputIsInvalid","isNumberMode","validityState","get","validity","badInput","_isNumber","isValueValid","isValid","isNumber","validationError","editorSpecific","message","_clearValue","reset","_resumeValueChangeAction","_button","_pointer","_setPrototypeOf","o","p","Object","setPrototypeOf","__proto__","SpinButtons","_TextEditorButton","subClass","superClass","prototype","create","constructor","_proto","_attachEvents","$spinContainer","eventName","down","$spinContainerChildren","children","pointerDownAction","_createAction","getInstance","eq","_create","$spinUp","$spinDown","_getOptions","_addToContainer","_createComponent","_legacyRender","_isTouchFriendly","_isVisible","disabled","call","$editor","isTouchFriendly","isVisible","toggleClass","update","$spinButtons","spinUp","spinDown","_emitter","_hold","POINTERUP_EVENT_NAME","up","POINTERCANCEL_EVENT_NAME","cancel","onChange","activeStateEnabled","hoverStateEnabled","SPIN_CLASS","_spinIcon","_render","_spinDownHandler","_spinChangeHandler","_clearTimer","_feedBackDeferred","lock","_holdTimer","setInterval","document","getDocument","_dispose","clearInterval","_invalidate","_uiList","_addWidgetPrefix","className","_getCombinedFilter","filter","storeLoadOptions","dataSource","_dataSource","_addSearchFilter","_initDataSource","expr","searchValue","searchOperation","getOperationBySearchMode","searchExpr","_store_helper","_query","_uiCollection_widgetEditStrategy","combineIndex","indices","group","splitIndex","combinedIndex","_groupElements","_collectionWidget","_itemContainer","find","_groupItemElements","$group","getIndexByItemData","itemData","groups","items","groupIndex","itemIndex","getItemDataByIndex","itemsGetter","resultItems","i","deleteItemAtIndex","getKeysByItems","plainItems","keyOf","getIndexByKey","keys","keyIndex","itemKey","_equalKeys","_getGroups","getDataSource","queryByOptions","toArray","getItemsByKeys","itemMeta","groupKey","getItemMeta","selectedGroup","moveItemAtIndexToIndex","movingIndex","destinationIndex","movingIndices","destinationIndices","movingItemGroup","destinationItemGroup","movedItemData","_isItemIndex","_getNormalizedItemIndex","itemElement","$item","closest","_normalizeItemIndex","_denormalizeItemIndex","_getItemByNormalizedIndex","_itemsFromSameParent","firstIndex","secondIndex","_uiListEdit","editOptionsRegistry","registerOption","enabledFunc","decoratorTypeFunc","decoratorSubTypeFunc","enabled","decoratorType","decoratorSubType","list","_list","_fetchRequiredDecorators","dispose","_decorators","decorator","_createDecorator","subType","_findDecorator","foundDecorator","registry","Error","modifyItemElement","$itemElement","config","_prependBeforeBags","_appendAfterBags","_applyDecorators","afterItemsRendered","$beforeBags","_collectDecoratorsMarkup","prepend","$afterBags","append","method","containerClass","$collector","_handlerExists","decorators","noop","_eventHandler","response","handleClick","handleKeyboardEvents","currentFocusedIndex","moveFocusUp","handleEnterPressing","contextMenuHandlerExists","handleContextMenu","getExcludedItemSelectors","excludedSelectors","_uiListEdit2","register","afterBag","$button","icon","onClick","_deleteItem","integrationOptions","is","deleteItem","_uiListEditDecorator","SwitchableButtonEditDecorator","$buttonContainer","$buttonWrapper","$buttonInnerWrapper","_$buttonContainer","_enablePositioning","_disablePositioning","detach","_animatePrepareDeleteReady","rtl","_isRtlEnabled","listWidth","width","buttonWidth","_buttonWidth","fromValue","toValue","from","right","_animateForgetDeleteReady","_buttonContainerWidth","outerWidth","remove","beforeBag","$toggle","_toggleDeleteReady","_shouldHandleSwipe","_swipeEndHandler","targetOffset","_click","_themes","_action_sheet","CLICK_EVENT_NAME","ACTIVE_EVENT_NAME","active","_$buttonsContainer","_$buttons","_renderMenu","_renderDeleteButton","_menuEnabled","menuItems","_menuItems","menuItem","_renderMenuButton","$menu","_menu","showTitle","onItemClick","$menuButton","show","action","_deleteEnabled","$deleteButton","isMaterial","_fireMenuAction","_cachedNode","_cancelDeleteReadyItem","modifyElement","$slideMenuContent","wrapInner","_getDeleteButtonContainer","target","_swipeStartHandler","_cacheItemData","_setPositions","_getPositions","_swipeUpdateHandler","signCorrection","isItemReadyToDelete","_isReadyToDelete","_getCurrentPositions","content","_getStartPositions","_cachedItemWidth","startOffset","_cachedButtonWidth","percent","buttonsContainer","startPositions","locate","_$cachedContent","positions","_minButtonContainerLeftOffset","endedAtReadyToDelete","readyToDelete","_animateToPositions","currentPosition","durationTimePart","easing","strategy","draw","include","_renderItemPosition","deferred","itemOffset","_itemElementWidth","promise","done","fail","_uiListEdit3","_overlay","_renderOverlay","shading","deferRendering","closeOnTargetScroll","closeOnOutsideClick","height","opacity","_$menuList","outerHeight","hide","onContentReady","_renderMenuContent","$overlayContent","component","$content","ListBase","_menuItemClickHandler","_$itemWithMenu","my","at","of","collision","_item","_renderWatchers","_startWatcher","_renderBadge","_renderShowChevron","badge","_$element","$badge","$chevron","first","insertBefore","showChevron","$chevronContainer","_check_box","_radio_button","selectionMode","_singleStrategy","_containerClass","_controlClass","_controlWidget","$control","_commonOptions","_isSelected","focusStateEnabled","onValueChanged","_saveSelectionChangeEvent","_processCheckedState","control","state","_updateSelectAllState","_$selectAll","_selectAllCheckBox","isSelectAll","afterRender","_renderSelectAll","moveFocusDown","$selectAll","lastItemIndex","_getLastItemIndex","scrollToItem","hasClass","downArrowHandler","registerKeyHandler","itemsContainer","_attachSelectAllHandler","_selectAllHandler","_selectAllClickHandler","isSelectedAll","_selectAllItems","_unselectAllItems","_checkSelectAllCapability","log","_selection","selectAll","deselectAll","isItemSelected","checked","selectItem","unselectItem","_disposeSelectAll","removeClass","_sortable","_groupedEnabled","_lockedDrag","_scrollView","contentTemplate","allowReordering","container","dragDirection","handle","dragTemplate","_dragTemplate","onDragStart","_dragStartHandler","onDragChange","_dragChangeHandler","onReorder","_reorderHandler","clone","_sameParent","fromIndex","toIndex","$dragging","getItemElementByFlatIndex","parent","$targetElement","reorderItem","$handle","isMouseEvent","_element","_position","_context_menu","_ContextMenu","Submenu","orientation","tabIndex","onHoverStart","_initDataAdapter","_dataAdapter","_renderContextMenuOverlay","node","getNodeByKey","_renderItems","_getChildNodes","_renderDelimiter","$contentDelimiter","_getOverlayOptions","onPositioned","_overlayPositionedActionHandler","arg","_showDelimiter","_hoverEndHandler","_toggleFocusClass","currentTarget","_isMenuHorizontal","_hoverStartHandler","hoverStartAction","_drawSubmenu","$rootItem","_actions","onShowing","rootItem","getPublicElement","submenu","onShown","_hideSubmenu","onHiding","onHidden","$submenu","containerOffset","vLocation","v","hLocation","h","rootOffset","offsetLeft","offsetTop","top","rootWidth","rootHeight","submenuWidth","submenuHeight","css","setup","_getContextMenuPosition","isOverlayVisible","getOverlayContent","_window","_support","navigator","getNavigator","LoadIndicator","indicatorSrc","_animatingSegmentCount","_animatingSegmentInner","themeName","current","platform","userAgent","viaImage","isGeneric","_renderWrapper","_renderIndicatorContent","_renderMarkup","_$wrapper","_$content","_renderMarkupForImage","_renderMarkupForAnimation","animatingSegmentInner","_$indicator","$segment","_renderDimensions","_updateContentSizeForAnimation","minDimension","fontSize","_removeMarkupForAnimation","_removeMarkupForImage","_popover","_text_box","_child_default_template","_utils2","window","getWindow","Lookup","space","_validatedOpening","placeholder","searchPlaceholder","searchEnabled","cleanSearchOnOpening","showCancelButton","showClearButton","clearButtonText","applyButtonText","pullRefreshEnabled","useNativeScrolling","pullingDownText","pulledDownText","refreshingText","pageLoadingText","onScroll","onPullRefresh","onPageLoading","pageLoadMode","nextButtonText","grouped","groupTemplate","usePopover","showDropDownButton","dropDownOptions","title","titleTemplate","onTitleRendered","fullScreen","dropDownCentered","_scrollToSelectedItemEnabled","useHiddenSubmitElement","nativeScrolling","_device","phone","tablet","useInkRipple","getElementWidth","_getPopupHeight","_initActions","_initScrollAction","_initPageLoadingAction","_initPullRefreshAction","_pageLoadingAction","_pullRefreshAction","_scrollAction","_scrollHandler","_pullRefreshHandler","_pageLoadingHandler","_initTemplates","_templateManager","addDefaultTemplates","ChildDefaultTemplate","_inputWrapper","_dataSourceOptions","paginate","_fireContentReadyAction","_popupWrapperClass","_this2","fieldClickAction","_toggleOpenState","_$field","$arrow","_$fieldWrapper","_renderInkRipple","_getInputContainer","_inkRipple","_setPopupPosition","_toggleActiveState","showWave","hideWave","_renderField","fieldTemplate","_getTemplateByOption","_renderFieldTemplate","displayValue","_updateField","String","template","empty","data","_fieldRenderData","model","_popupShowingHandler","_searchBox","_searchCanceled","_popup","_scrollToSelectedItem","selectedIndex","listItems","itemsCount","_getDifferenceOffsets","selectedListItem","_isCenteringEnabled","count","_getPopupOffset","listItemsCount","_listItemElements","differenceOfHeights","lookupOffset","dropDownHeightOption","popupHeight","windowHeight","scrollOffsetTop","scrollTo","scrollTop","MATERIAL_LOOKUP_LIST_PADDING","offsetBottom","popupContentParent","popupOffset","_listItemGroupedElements","_calculateListHeight","listHeight","itemElements","_$searchWrapper","_$bottom","_$title","_renderPopup","_renderPopover","_$popup","_wrapper","_popupConfig","_options","showEvent","hideEvent","_fixedPosition","_isInitialOptionValue","showing","shown","_popupShownHandler","hiding","_popupHidingHandler","hidden","_popupHiddenHandler","contentReady","_contentReadyHandler","_$arrow","_setPopupContentId","focus","resetPosition","_preventFocusOnPopup","_this3","toolbarItems","_getPopupToolbarItems","maxHeight","optionName","popupOptionValue","buttonsConfig","_popupToolbarItemsConfig","cancelButton","_getCancelButtonConfig","clearButton","_getClearButtonConfig","_applyButtonsLocation","shortcut","_applyButtonHandler","_this4","_cancelButtonHandler","onInitialized","close","_resetValue","_valueGetter","_currentSelectedItem","_refreshSelected","_refreshPopupVisibility","_updatePopupDimensions","_dimensionChanged","_$searchBox","_renderPopupContent","_renderSearch","_this5","isSearchEnabled","_toggleSearchClass","$searchWrapper","$searchBox","currentDevice","searchMode","android","isKeyboardListeningEnabled","onDisposing","onFocusIn","onFocusOut","onKeyboardHandled","opts","valueChangeEvent","_searchHandler","_registerSearchKeyHandlers","_$list","_setSearchPlaceholder","_removeSearch","_selectListItemHandler","_selectListItem","minSearchLength","getFormatter","_setAriaTargetForList","_renderList","_this6","_listConfig","indicateLoading","onSelectionChanged","_getSelectionChangedHandler","_selectionChangeHandler","_listContentReadyHandler","_setFocusPolicy","_focusTarget","_keyboardEventBindingTarget","_listItemClickHandler","_searchValue","_renderInputValue","_this7","always","_renderPlaceholder","_setDeprecatedOptions","_deprecatedOptions","since","alias","popupWidth","_setPopupOption","initialOption","_setListOption","field","_ui2","_inflector","_providerDynamic","_providerDynamic2","PROVIDERS","googleStatic","google","bing","Map","bounds","center","zoom","provider","autoAdjust","markers","markerIconSrc","onMarkerAdded","onMarkerRemoved","routes","onRouteAdded","onRouteRemoved","apiKey","controls","onReady","onUpdated","_lastAsyncAction","_checkOption","_initContainer","_grabEvents","_rendered","_cancelEvent","_saveRendered","_renderShield","_queueAsyncAction","$shield","_cleanFocusState","_suppressAsyncAction","changeBag","_optionChangeBag","prevValue","titleize","removed","added","_visibilityChanged","isActionSuppressed","wrapToArray","_disposed","_triggerReadyAction","originalMap","_triggerUpdateAction","_setOptionWithoutOptionChange","addMarker","_addFunction","removeMarker","_removeFunction","addRoute","route","removeRoute","addingValue","optionValue","addingValues","_partialArrayOptionChange","removingValue","removingValues","removingIndex","substring","removing","fromPromise","_color","_locationToString","latLng","_updateMap","mapRendered","requestOptions","_markersSubstring","_routeSubstrings","request","_attachClickEvent","markerIcon","color","toHex","weight","locations","routePoint","_ajax","CustomMarker","googleMapsLoader","googleMapsLoaded","maps","_mapType","mapTypes","hybrid","MapTypeId","HYBRID","roadmap","ROADMAP","satellite","SATELLITE","_movementMode","movementTypes","driving","TravelMode","DRIVING","walking","WALKING","_resolveLocation","LatLng","Geocoder","geocode","address","results","status","GeocoderStatus","OK","geometry","_normalizeLocation","_normalizeLocationRect","locationRect","getNorthEast","getSouthWest","_loadMapScript","_offset","_$overlayContainer","display","cursor","html","setMap","OverlayView","onAdd","getPanes","overlayMouseTarget","_clickListener","addDomListener","onRemove","removeListener","getProjection","fromLatLngToDivPixel","x","y","sendRequest","url","dataType","showDefaultUI","disableDefaultUI","listener","addListener","_boundsChangeListener","_boundsChangeHandler","_clickActionHandler","getBounds","getCenter","_preventZoomChangeEvent","getZoom","setMapTypeId","LatLngBounds","fitBounds","setCenter","setZoom","setOptions","gestureHandling","htmlOffset","Marker","iconSrc","infoWindow","_renderTooltip","tooltip","markerClickAction","markerNormalizedLocation","open","InfoWindow","origin","shift","destination","pop","waypoints","stopover","optimizeWaypoints","travelMode","DirectionsService","DirectionsStatus","directionOptions","directions","suppressMarkers","preserveViewport","polylineOptions","strokeWeight","strokeOpacity","strokeColor","DirectionsRenderer","zoomBeforeFitting","zoomAfterFitting","msMapsLoader","msMapsLoaded","Microsoft","Maps","road","aerial","Directions","RouteMode","Location","searchManager","Search","SearchManager","searchRequest","where","callback","searchResponse","boundsBox","latitude","longitude","northWest","getNorthwest","southEast","getSoutheast","loadModule","_createMap","credentials","showDashboard","showMapTypeSelector","showScalebar","_providerViewChangeHandler","Events","addHandler","_viewChangeHandler","_providerClickHandler","targetType","labelOverlay","LabelOverlay","setView","mapTypeId","LocationRect","fromLocations","pushpinOptions","htmlContent","anchor","Point","pushpin","Pushpin","entities","handler","infobox","Infobox","description","removeHandler","DirectionsManager","routeColor","Color","fromHex","a","setRenderOptions","autoUpdateMapView","displayRouteSelector","waypointPushpinOptions","drivingPolylineOptions","strokeThickness","walkingPolylineOptions","setRequestOptions","routeMode","routeDraggable","waypoint","Waypoint","addWaypoint","directionHandlers","routeSummary","responseCode","calculateDirections","_tabs","NavBar","_logDeprecatedComponentWarning","scrollingEnabled","_postprocessRenderItem","ItemClass","_action","_view_port","_toast","$notify","displayTime","userHiddenAction","context","execute","decoratorClass","decoratorsRegistry","decoratorConfig","_swipe","SWIPE_START_EVENT_NAME","SWIPE_UPDATE_EVENT_NAME","swipe","SWIPE_END_EVENT_NAME","_attachSwipeEvent","swipeConfig","itemSizeFunc","_clearSwipeCache","_itemWidthCache","_itemSwipeStartHandler","_itemSwipeUpdateHandler","_itemSwipeEndHandler","_inkRippleTimer","visibilityChange","getExcludedSelectors","_load_indicator","LoadPanel","escape","showIndicator","showPane","delay","templatesRenderAsynchronously","hideTopOverlayHandler","resizeEnabled","shadingColor","maxWidth","_$contentWrapper","_togglePaneVisible","_cleanPreviousContent","_renderLoadIndicator","_renderMessage","_show","_clearShowTimeout","_showTimeout","_hide","$message","setScrollView","_icon","_data","_scroll_view","_uiScrollable","_uiCollection_widget","_bindable_template","_grouped_data_converter_mixin","LIST_ITEM_SELECTOR","groupItemsGetter","compileGetter","_activeStateUnit","moveFocusPerPage","getEdgeVisibleItem","resultPosition","scrollListTo","containerHeight","isItemVisible","$nextItem","nextItemLocation","pageUp","pageDown","showScrollbar","bounceEnabled","scrollByContent","scrollByThumb","onItemSwipe","onGroupRendered","collapsibleGroups","_itemAttributes","role","_listAttributes","wrapItemText","_swipeEnabled","_revertPageOnEmptyLoad","showChevronExpr","badgeExpr","deviceDependentOptions","_updateLoadingState","_itemClass","_itemDataKey","_selectionChangeEventInstance","_getSelectionChangeEvent","_refreshItemElements","_itemElementsCache","_itemSelector","_modifyByChanges","toItemElement","_itemElements","_itemSelectHandler","_allowDynamicItemsAppend","_resetDataSourcePageIndex","currentDataSource","pageIndex","load","_initScrollView","_feedbackShowTimeout","_createGroupRenderAction","_scrollBottomMode","_nextButtonMode","scrollBottom","nextButton","_getGroupedOption","_dataSourceFromUrlLoadMode","autoPagingEnabled","onPullDown","_pullDownHandler","onReachBottom","_scrollBottomHandler","useNative","reachBottomText","useKeyboard","_createScrollViewActions","BindableTemplate","_prepareDefaultItemTemplate","$icon","getImageContainer","$iconContainer","_getBindableFields","tryLoadMore","isDataLoaded","_isLastPage","scrollBottomMode","stopLoading","hideLoadIndicator","_isDataSourceLoading","_scrollViewIsFull","release","_toggleNextButton","_shouldRenderNextButton","_loadIndicationSuppressed","_infiniteDataLoading","isLoaded","_isDataSourceFirstLoadCompleted","_isFirstLoadCompleted","_dataSourceLoadingChangedHandler","isLoading","_showLoadingIndicatorTimer","_this$_scrollView","startLoading","finishLoading","_dataSourceChangedHandler","_shouldAppendItems","hasWindow","_refreshContent","_prepareContent","_hideLoadingIfLoadIndicationOff","_isLoadIndicationSuppressed","isFull","_clearSelectedItems","reload","_loadNextPageTimer","_loadNextPage","_setPreviousPageIfNewIsEmpty","_renderGroup","_attachGroupCollapseEvent","_renderEmptyMessage","attachGroupHeaderInkRippleEvents","_collapseGroupHandler","validatingTargetName","toggle","$groupBody","startHeight","endHeight","_dataSourceLoadErrorHandler","_forgetNextPageLoading","_initialized","LIST_FEEDBACK_SHOW_TIMEOUT","endEventName","_itemDXEventHandler","_nextButtonHandler","source","toggleLoading","_$nextButton","$groupElement","$groupHeaderElement","groupTemplateName","_getTemplate","renderArgs","_createItemByTemplate","prependTo","_renderingGroupIndex","_renderItem","_groupRenderAction","groupElement","groupData","downInkRippleHandler","upInkRippleHandler","_downInkRippleHandler","_upInkRippleHandler","downArguments","upArguments","_toggleDisabledState","$nextButton","_getNextButton","_createNextButton","$result","_moveFocus","_refresh","_extendActionArgs","expandGroup","resolveWith","collapseGroup","repaint","scrollOffset","clientHeight","scrollHeight","scrollBy","distance","_editStrategy","getItemElement","scrollToElement","_uiMulti_view","_visibility_change","_swipeable","toNumber","MultiView","swipeEnabled","animationEnabled","loop","loopItemFocus","selectOnFocus","selectionRequired","selectionByClick","_$itemContainer","_itemWidth","_itemWidthValue","_clearItemWidthCache","_itemsCount","_normalizeIndex","_getRTLSignCorrection","_initSwipeable","_deferredItems","selectedItemIndices","_getSelectedItemIndices","_updateItemsVisibility","_afterItemElementDeleted","deletedActionArgs","_beforeItemElementInserted","change","_executeItemRenderAction","_renderItemContent","renderContentDeferred","$itemContent","deferRender","_updateItems","newIndex","_updateItemsPosition","$itemElements","positionSign","_animationDirection","$selectedItem","isHidden","_renderSpecificItem","hasItemContent","_itemContentClass","triggerResizeEvent","_refreshItem","_setAriaSelected","_updateSelection","addedSelection","removedSelection","prevIndex","animationDirection","_animateItemContainer","completeCallback","containerPosition","indexDifference","_getItemFocusLoopSignCorrection","directionSignVariable","_getSwipeDisabledState","elastic","onStart","onEnd","lastIndex","maxLeftOffset","maxRightOffset","_swipeDirection","swipeDirection","$selectedElement","_itemFocusLooped","_prevItem","$items","last","_nextItem","_updateSwipeDisabledState","quoteBalance","separatorCount","c","n","_uiListEditStrategy","moveFocusedItem","moveUp","editStrategy","focusedElement","focusedItemIndex","getNormalizedIndex","nextItemIndex","_editProvider","not","_isItemStrictEquals","item1","item2","privateKey","__dx_key__","showSelectionControls","selectAllMode","onSelectAllValueChanged","selectAllText","menuMode","allowItemDeleting","itemDeleteMode","itemDragging","_initEditProvider","_isPageSelectAll","requireTotalCount","_disposeEditProvider","_refreshEditProvider","_initEditStrategy","_selectedItemClass","_itemResponseWaitClass","_itemClickHandler","handledByEditProvider","_shouldFireContextMenuEvent","_itemHoldHandler","isTouchEvent","_itemContextMenuHandler","focusListItem","unselectAll","getSelectAllState","getFlatIndexByItemElement","flatIndex","getItemByIndex","POINTER_DOWN_EVENT_NAME","_$topShield","_$bottomShield","_$itemContentShield","_$readyToDeleteItem","_cancelDelete","_toggleShields","_toggleScrolling","_cacheReadyToDeleteItem","_animateToggleDelete","_updateShieldsHeight","_toggleContentShield","$list","listTopOffset","dirtyTopShieldHeight","dirtyBottomShieldHeight","scrollView","dxScrollView","_cancelScrolling","_prepareDeleteReady","_forgetDeleteReady","one","_itemEventHandlerByHandler","excludeValidators","_hover","_tree_view","DEFAULT_DELAY","ACTIONS","Menu","_MenuBase","submenuDirection","showFirstSubmenuMode","hideSubmenuOnMouseLeave","onSubmenuShowing","onSubmenuShown","onSubmenuHiding","onSubmenuHidden","adaptivityEnabled","_setOptionsByReference","_optionsByReference","selectedItem","rootMenuElements","submenuElements","_submenuItemElements","add","elements","itemSelector","DX_MENU_CLASS","currentSubmenu","_submenus","argument","operation","$newTarget","_getAvailableItems","isMenuHorizontal","$activeItem","_getActiveItem","_getItemsNavigationOperation","_getKeyboardNavigationAction","navigationAction","navOperation","_showSubmenu","_resizeEventTimer","_menuItemsWidth","_updateItemsWidthCache","_isAdaptivityEnabled","$menuItems","_getSummaryItemsWidth","containerWidth","_toggleAdaptiveMode","_visibleSubmenu","_initAdaptivity","_renderHamburgerButton","_hamburger","_toggleTreeView","_toggleHamburgerActiveState","$menuItemsContainer","$adaptiveElements","_hideVisibleSubmenu","_treeView","collapseAll","_removeAdaptivity","_$adaptiveContainer","_treeviewItemClickHandler","_getAdaptiveOverlayOptions","getElementMaxHeightByWindow","_getTreeViewOptions","menuOptions","actionName","onItemExpanded","onItemCollapsed","selectNodesRecursive","selectByClick","expandEvent","$hamburger","DX_ADAPTIVE_MODE_CLASS","_getDelay","delayType","isObject","_renderContainer","$wrapper","_renderSubmenuItems","$itemFrame","_createSubmenu","_renderBorderElement","_getKeyboardListeners","$submenuContainer","_getSubmenuOptions","_parentKey","internalFields","_clearTimeouts","getSubmenuPosition","_attachSubmenuHandlers","$submenuTarget","itemTemplate","cssClass","showSubmenuMode","displayExpr","disabledExpr","selectedExpr","itemsExpr","onFocusedItemChanged","_nestedItemOnSelectionChangedHandler","_nestedItemOnItemClickHandler","onItemRendered","_nestedItemOnItemRenderedHandler","onLeftFirstItem","_moveMainMenuFocus","onLeftLastItem","onCloseRootSubmenu","onExpandLastSubmenu","_getShowFirstSubmenuMode","_isDesktopDevice","itemCount","$currentItem","DX_MENU_ITEM_CLASS","$newItem","addedItems","_clearSelectionInSubmenus","_clearRootSelection","targetSubmenu","cleanAllSubmenus","isOtherItem","selectedItemData","_getItemData","selected","$prevSelectedItem","submenus","submenuMouseLeaveName","_submenuOnShowingHandler","_submenuOnShownHandler","_submenuOnHidingHandler","_submenuOnHiddenHandler","_submenuMouseLeaveHandler","$border","DX_CONTEXT_MENU_CLASS","eventArgs","relatedTarget","parents","contextMenu","_getSubmenuByRootElement","_hideSubmenuAfterTimeout","isRootItemHovered","isSubmenuItemHovered","querySelector","isHorizontalMenu","toLowerCase","rtlEnabled","submenuPosition","_itemPointerDownHandler","mouseMoveEventName","_getItemElementByEventArgs","getNodeByItem","isSelectionActive","which","_isItemDisabled","_hasChildren","_getSubmenuByElement","_itemMouseMoveHandler","_showSubmenuTimer","eventArg","_hideSubmenuTimer","_hoveredRootItem","_this8","pointers","_updateSubmenuVisibilityOnClick","actionArgs","_disabledGetter","_updateSelectedItemOnClick","_changeSubmenusOption"],"mappings":"4FASAA,EAAQC,aAAU,EAClB,IAAIC,EAAWC,EAAuB,EAAQ,MAC1CC,EAASD,EAAuB,EAAQ,KACxCE,EAAY,EAAQ,GACpBC,EAAQ,EAAQ,GAChBC,EAAS,EAAQ,IAErB,SAASJ,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAAIE,EAAWN,EAAOH,QAAQS,SAoI1BC,EAnIWP,EAAOH,QAAQW,QAAQ,CAClCC,oBAAqB,WACjB,OAAO,GAEXC,qBAAsB,WAClB,MAAO,IAEXC,mBAAoB,WAChB,MAAO,WAEXC,KAAM,SAASC,EAAKC,GAChBC,KAAKC,WAAaH,EAClBE,KAAKE,YAAcH,GAEvBI,OAAQ,SAASC,EAAeC,GAC5B,OAAOL,KAAKM,cAAcC,KAAK,WAC3B,OAAOxB,EAASD,QAAQ0B,IAAI,CAACR,KAAKS,uBAAuB,aAAcL,GAAgBJ,KAAKS,uBAAuB,YAAaJ,KAAgBE,MAAK,WACjJ,OAAO,MAEbG,KAAKV,QAEXM,YAAaf,EACboB,iBAAkBpB,EAClBqB,cAAerB,EACfsB,aAActB,EACduB,aAAcvB,EACdwB,WAAYxB,EACZyB,eAAgBzB,EAChB0B,cAAe,SAASC,EAAuBC,GAC3C,OAAO,IAAIpC,EAASD,QAAQ,SAASsC,GACjC,OAAOpB,KAAKS,uBAAuB,gBAAiBS,GAAuBX,KAAK,SAASc,GACrFrB,KAAKS,uBAAuB,aAAcU,GAAoBZ,MAAK,SAASe,GACxEF,EAAQE,GAAsBD,OAEpCX,KAAKV,QACTU,KAAKV,QAEXuB,WAAYhC,EACZiC,cAAejC,EACfkC,eAAgBlC,EAChBmC,aAAc,SAASC,EAAsBC,GACzC,OAAO,IAAI7C,EAASD,QAAQ,SAASsC,GACjC,OAAOpB,KAAKS,uBAAuB,eAAgBkB,GAAsBpB,KAAK,SAASc,GACnFrB,KAAKS,uBAAuB,YAAamB,GAAmBrB,MAAK,SAASe,GACtEF,EAAQE,GAAsBD,OAEpCX,KAAKV,QACTU,KAAKV,QAEX6B,UAAWtC,EACXuC,aAAcvC,EACdwC,MAAOxC,EACPO,IAAK,WACD,OAAOE,KAAKgC,MAEhBC,iBAAkB,WACd,OAAO,GAEXC,QAAS,SAASC,EAAMC,GACpB,QAAI,IAAWA,EACX,OAAOpC,KAAKC,WAAWoC,OAAOF,GAElCnC,KAAKC,WAAWqC,gBAAgBH,EAAMC,IAE1CG,WAAY,SAASC,GACjB,IAAIC,EAAMzC,KAAKkC,QAAQ,UACvB,YAAO,IAAWO,EAAID,GAAgBC,EAAMA,EAAID,IAEpDE,qBAAsB,SAASL,GAC3B,MAAO,CACHM,KAAMN,EAAOM,MAAQN,EACrBO,QAASP,EAAOQ,UAAW,IAGnCC,WAAY,SAASC,GACjB,GAAI,iBAAoBA,EAAU,CAC9B,IAAIC,GAAS,EAAI9D,EAAUY,KAAKiD,EAASE,MAAM,MAAM,SAASC,GAC1D,OAAOA,EAAKC,UAEZC,EAAe,yBACnB,GAAI,IAAMJ,EAAOK,QAAUL,EAAO,GAAGM,MAAMF,IAAiBJ,EAAO,GAAGM,MAAMF,GACxE,MAAO,CACHG,IAAKC,WAAWR,EAAO,IACvBS,IAAKD,WAAWR,EAAO,SAG5B,CACH,GAAIU,MAAMC,QAAQZ,IAAa,IAAMA,EAASM,OAC1C,MAAO,CACHE,IAAKR,EAAS,GACdU,IAAKV,EAAS,IAGlB,IAAI,EAAI5D,EAAMyE,eAAeb,KAAa,EAAI5D,EAAM0E,WAAWd,EAASQ,OAAQ,EAAIpE,EAAM0E,WAAWd,EAASU,KAC1G,OAAOV,EAInB,OAAO,MAEXe,cAAe,WACX,OAAO9D,KAAKkC,QAAQ,qBAAuBlC,KAAKkC,QAAQ,qBAE5D6B,mBAAoB,SAAS5B,GACzB,OAAO,EAAI/C,EAAO4E,cAAc7B,EAAMnC,KAAKC,WAAWgE,OAE1DxD,uBAAwB,SAASyD,EAAQC,GACrC,OAAKA,EAAMd,OAGJrD,KAAKkE,GAAQC,GAFTpF,EAASD,QAAQsC,WAIhCgD,YAAa,SAASjC,EAAMkC,GACxBrE,KAAKC,WAAWqE,sBAAsBnC,EAAtCnC,CAA4CqE,IAEhDE,iBAAkB,SAASF,GACvBrE,KAAKoE,YAAY,UAAWC,IAEhCG,uBAAwB,SAASH,GAC7BrE,KAAKoE,YAAY,gBAAiBC,IAEtCI,yBAA0B,SAASJ,GAC/BrE,KAAKoE,YAAY,kBAAmBC,IAExCK,sBAAuB,SAASL,GAC5BrE,KAAKoE,YAAY,eAAgBC,IAErCM,wBAAyB,SAASN,GAC9BrE,KAAKoE,YAAY,iBAAkBC,MAI3CxF,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,S,kCClJzBD,EAAQC,aAAU,EAClB,IAAIC,EAAWC,EAAuB,EAAQ,MAC1C6F,EAAU,EAAQ,GAClB3F,EAAY,EAAQ,GACpB4F,EAAY9F,EAAuB,EAAQ,OAE/C,SAASA,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAAIE,EAAWuF,EAAUhG,QAAQS,SAuK7BC,EAtKkBsF,EAAUhG,QAAQW,QAAQ,CAC5CsF,iBAAkB,SAAShC,GACvB,OAAO,IAAIhE,EAASD,QAAQ,SAASsC,GACjC,IAAI4D,EAAQhF,KAAKiF,mBACbC,EAAiBF,EAAMjC,GACvBmC,EACA9D,EAAQ8D,GAERlF,KAAKmF,qBAAqBpC,GAAUxC,MAAK,SAAS6E,GAC9CJ,EAAMjC,GAAYqC,EAClBhE,EAAQgE,OAGlB1E,KAAKV,QAEXM,YAAa,WACT,OAAON,KAAKqF,QAAQ9E,KAAK,WACrB,OAAOP,KAAKsF,SACd5E,KAAKV,OAAOO,KAAK,WACf,OAAOxB,EAASD,QAAQ0B,IAAI,CAACR,KAAKY,gBAAiBZ,KAAK8D,gBAAkB9D,KAAKa,eAAiBb,KAAKc,kBACvGJ,KAAKV,OAAOO,KAAK,WAEf,OADAP,KAAKuF,kBACE,IAAIxG,EAASD,SAAQ,SAASsC,GACjC,IAAIoE,EAAUC,YAAW,WACrBC,aAAaF,GACbpE,WAGVV,KAAKV,QAEXqF,MAAO,WAMH,OALKrF,KAAK2F,cACN3F,KAAK2F,YAAc3F,KAAK4F,aAE5B5F,KAAK6F,SAAW,GAChB7F,KAAK8F,QAAU,GACR9F,KAAK2F,aAEhBC,UAAWrG,EACX+F,MAAO/F,EACPgG,gBAAiBhG,EACjBgC,WAAY,SAASwE,GACjB,OAAOhH,EAASD,QAAQ0B,KAAI,EAAItB,EAAUY,KAAKiG,EAAS,SAASA,GAC7D,OAAO/F,KAAKgG,WAAWD,IACzBrF,KAAKV,QAAQO,KAAK,SAAS0F,GAEzB,OADAjG,KAAKkG,aACE,EAAC,GAAO,EAAIhH,EAAUY,KAAKmG,GAAe,SAASE,GACtD,OAAOA,EAAaC,YAE1B1F,KAAKV,QAEXgG,WAAY,SAASD,GACjB,OAAO/F,KAAKqG,cAAcN,GAASxF,KAAK,SAAS4F,GAQ7C,OAPAnG,KAAK6F,SAASS,MAAK,EAAIzB,EAAQ0B,QAAQ,CACnCR,QAASA,GACVI,IACHnG,KAAKwE,uBAAuB,CACxBuB,QAASA,EACTS,eAAgBL,EAAaC,SAE1BD,GACTzF,KAAKV,QAEXqG,cAAe9G,EACfiC,cAAe,SAASiF,GACpB,IAAIC,EAAO1G,KAIX,OAHA,EAAId,EAAUyH,MAAMF,GAAwB,SAASG,EAAGC,GACpDH,EAAKI,cAAcD,MAEhB9H,EAASD,QAAQsC,WAE5B0F,cAAe,SAASC,GACpB,IAAIL,EAAO1G,MACX,EAAId,EAAUyH,MAAM3G,KAAK6F,UAAU,SAASmB,EAAab,GACrD,OAAIA,EAAaJ,UAAYgB,IAG7BL,EAAKO,eAAed,GACpBO,EAAKb,SAASqB,OAAOF,EAAa,GAClCN,EAAKjC,yBAAyB,CAC1BsB,QAASI,EAAaJ,WAEnB,OAGfkB,eAAgB1H,EAChB4H,cAAe,WACX,KAAOnH,KAAK6F,SAASxC,OAAS,GAC1BrD,KAAK8G,cAAc9G,KAAK6F,SAAS,GAAGE,UAG5ClE,UAAW,SAASkE,GAChB,OAAOhH,EAASD,QAAQ0B,KAAI,EAAItB,EAAUY,KAAKiG,EAAS,SAASA,GAC7D,OAAO/F,KAAKoH,UAAUrB,IACxBrF,KAAKV,QAAQO,KAAK,SAAS8G,GAEzB,OADArH,KAAKkG,aACE,EAAC,GAAO,EAAIhH,EAAUY,KAAKuH,GAAc,SAASC,GACrD,OAAOA,EAAYC,cAEzB7G,KAAKV,QAEXoH,UAAW,SAASrB,GAChB,OAAO/F,KAAKwH,aAAazB,GAASxF,KAAK,SAAS+G,GAQ5C,OAPAtH,KAAK8F,QAAQQ,MAAK,EAAIzB,EAAQ0B,QAAQ,CAClCR,QAASA,GACVuB,IACHtH,KAAK0E,sBAAsB,CACvBqB,QAASA,EACT0B,cAAeH,EAAYC,WAExBD,GACT5G,KAAKV,QAEXwH,aAAcjI,EACduC,aAAc,SAASiE,GACnB,IAAIW,EAAO1G,KAIX,OAHA,EAAId,EAAUyH,MAAMZ,GAAS,SAAS2B,EAAY3B,GAC9CW,EAAKiB,aAAa5B,MAEfhH,EAASD,QAAQsC,WAE5BuG,aAAc,SAAS5B,GACnB,IAAIW,EAAO1G,MACX,EAAId,EAAUyH,MAAM3G,KAAK8F,SAAS,SAAS4B,EAAYJ,GACnD,OAAIA,EAAYvB,UAAYA,IAG5BW,EAAKkB,cAAcN,GACnBZ,EAAKZ,QAAQoB,OAAOQ,EAAY,GAChChB,EAAK/B,wBAAwB,CACzBoB,QAASA,KAEN,OAGf6B,cAAerI,EACfsI,aAAc,WACV,KAAO7H,KAAK8F,QAAQzC,OAAS,GACzBrD,KAAK2H,aAAa3H,KAAK8F,QAAQ,GAAGC,UAG1CtE,eAAgB,WACZ,OAAOzB,KAAKkG,cAEhBjE,iBAAkB,WACd,OAAO,GAEXiE,WAAY3G,EACZuI,cAAe,WACX,IAAIpB,EAAO1G,KACXA,KAAK+H,eACA/H,KAAKkC,QAAQ,iBAEjB,EAAIhD,EAAUyH,MAAM3G,KAAK6F,UAAU,SAASe,EAAGT,GAC5CO,EAAKsB,cAAc7B,EAAapD,cAEpC,EAAI7D,EAAUyH,MAAM3G,KAAK8F,SAAS,SAASc,EAAGU,GAC1CA,EAAYW,WAAavB,EAAKsB,cAAcV,EAAYW,WACxDX,EAAYY,WAAaxB,EAAKsB,cAAcV,EAAYY,gBAGhEH,aAAc,WACV/H,KAAKmI,QAAU,MAEnBH,cAAezI,IAGnBV,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,S,kCCpLzBD,EAAQuJ,UAAYvJ,EAAQwJ,iBAAc,EAC1C,IAGgChJ,EAH5BiJ,GAG4BjJ,EAHC,EAAQ,MAIvBA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAJfkJ,EAAe,EAAQ,IAO3B,IAAIF,EAAc,CACdG,KAAM,SAASC,EAAUC,IACrB,EAAIH,EAAaC,MAAMC,EAAU,CAC7BE,KAAMD,MAIlB7J,EAAQwJ,YAAcA,EACtB,IAAID,EAAY,CACZQ,OAAQ,SAASH,EAAUC,EAAUG,EAAUC,GAC3CR,EAAIxJ,QAAQiK,QAAQN,EAAU,CAC1BO,KAAM,QACNC,GAAI,CACAN,KAAMD,GAEVG,SAAUA,EACVK,SAAUJ,KAGlBI,SAAU,SAAST,GACfH,EAAIxJ,QAAQqK,KAAKV,GAAU,KAGnC5J,EAAQuJ,UAAYA,G,kCChCpBvJ,EAAQC,aAAU,EAClB,IAAIsK,EAAyBpK,EAAuB,EAAQ,KACxDqK,EAAcrK,EAAuB,EAAQ,OAEjD,SAASA,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,IAElB,EAAI+J,EAAuBtK,SAAS,cAAeuK,EAAYvK,SAChE,IAAIU,EAAW6J,EAAYvK,QAC3BD,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,S,kCCXzBD,EAAQC,aAAU,EAClB,IAAIwK,EAAiBtK,EAAuB,EAAQ,KAChD6F,EAAU,EAAQ,GAClB1F,EAAQ,EAAQ,GAChBoK,EAAWvK,EAAuB,EAAQ,KAC1CwK,EAAWxK,EAAuB,EAAQ,KAC1CyK,EAAQ,EAAQ,IAChBC,EAAU1K,EAAuB,EAAQ,MACzCqK,EAAc,EAAQ,MACtBM,EAAW,EAAQ,KACnBC,EAAe5K,EAAuB,EAAQ,OAC9CI,EAAS,EAAQ,IACjByK,EAAU,EAAQ,GAClBC,EAAS,EAAQ,KAErB,SAAS9K,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAOI0K,EAAyBR,EAASzK,QAAQkL,KAAO,IAAM,EAknBvDxK,EAjnBgBoK,EAAa9K,QAAQW,QAAQ,CAC7CwK,mBAAoB,WAChB,OAAO,EAAIpF,EAAQ0B,QAAQvG,KAAKkK,WAAY,CACxCC,iBAAiB,EACjBC,OAAQ,QAGhBC,aAAc,SAAS5H,GACnB,MAAO,QAAUA,GAErB6H,eAAgB,WACZ,IAAKtK,KAAKuK,mBACN,OAAOvK,KAAKkK,WAGhB,OAAO,EAAIrF,EAAQ0B,QAAQvG,KAAKkK,WAAY,CACxCM,MAFOxK,KAEKyK,YAAY/J,KAFjBV,MAGP0K,IAHO1K,KAGG2K,eAAejK,KAHlBV,MAIP4K,UAJO5K,KAIS2K,eAAejK,KAJxBV,MAKP6K,UALO7K,KAKS8K,cAAcpK,KALvBV,MApBC,GA0BR+K,WANO/K,KAMU8K,cAAcpK,KANxBV,KArBA,GA4BPgL,KAPOhL,KAOIiL,iCAAiCvK,KAPrCV,KArBA,GA6BPkL,MAROlL,KAQKmL,sBAAsBzK,KAR3BV,MASPoL,IATOpL,KASGiL,iCAAiCvK,KATpCV,MApBC,MAgChBqL,uBAAwB,SAAS1I,GAC7B,IAAI2I,EAAmB5B,EAAQ5K,QAAQyM,sBACnCC,GAA+B,EAAI1B,EAAO2B,uBAAuBzL,KAAKqC,OAAO,WAAWqJ,WAC5F,OAAO,EAAI5B,EAAO6B,kBAAkBhJ,EAAM2I,EAAkBE,IAEhEI,gBAAiB,SAASC,GACjB7L,KAAK8L,yBAAyBD,KAC/B7L,KAAK+L,oBACL/L,KAAKgM,cAAgBvG,WAAW,WAC5BzF,KAAKgM,cAAgB,KACrB,IAAIC,EAAQjM,KAAKkM,SACjB,GAAID,EAAME,QAAUF,EAAMb,KAAOpL,KAAKuK,mBAAoB,CACtD,IAAI5H,EAAO3C,KAAKoM,eACZC,EAAwBrM,KAAKqL,uBAAuB1I,GACpD0J,GAAyB,EACzBrM,KAAKkM,OAAO,CACRC,MAAOE,EACPjB,IAAKiB,IAGTrM,KAAKiL,kCApDT,EAoDyDY,KAG/DnL,KAAKV,MAAO+J,IAElB/J,KAAKkK,SAAS2B,IAElBS,iBAAkB,SAAST,GACvB,IAAIU,GAAqBvM,KAAK8L,yBAAyBD,GACnDU,IACAvM,KAAKwM,iBAAkB,EACnBxM,KAAKuK,oBACLvK,KAAKmL,yBAGbnL,KAAKkK,SAAS2B,GACVU,IACAvM,KAAKwM,iBAAkB,IAG/BC,qBAAsB,SAASC,GAC3B,IAAItC,EAASpK,KAAK2M,oBACdvK,EAAQpC,KAAKqC,OAAO,SAExB,OADgBrC,KAAK4M,QAAQxK,EAAOgI,IAAW,MAC1BsC,GAEzBvB,sBAAuB,WACnB,IAAIuB,EAAa1M,KAAKoM,eAClBpM,KAAKyM,qBAAqBC,KAC1B1M,KAAK6M,qBACL7M,KAAK8M,qBACL9M,KAAK+M,wBACD/M,KAAKgN,eAAiBhN,KAAKqC,OAAO,UAClCiH,EAAexK,QAAQmO,QAAQjN,KAAKkN,SAAU,YAI1DpC,cAAe,SAASqC,EAAMtB,GAC1B,GAAK7L,KAAKuK,mBAAV,CAGA,IAAI5H,EAAO3C,KAAKoM,eACZhC,EAASpK,KAAK2M,oBACdS,GAAY,EAAI/D,EAAYgE,oBAAoBrN,KAAKkM,SAAUiB,IAC9D,EAAI9D,EAAYiE,qBAAqBF,EAAWzK,EAAMyH,KACvDgD,EAlGO,IAkGKD,EAAwBC,EAAUhC,IAAMgC,EAAUjB,MAC9DN,EAAE0B,iBACFvN,KAAKkM,QAAO,EAAI7C,EAAYmE,sBAAsBJ,EAAWzK,EAAMyH,OAG3EqD,qBAAsB,SAASC,GAC3B,IAAIC,GAAa,EAAItE,EAAYuE,oBAAoB5N,KAAKoM,eAAgBpM,KAAK2M,qBAC3EkB,GAAW,EAAIxE,EAAYgE,oBAzGpB,IAyGwCK,EAA6BC,EAAWxB,MAAQwB,EAAWvC,IAAK,GACnHpL,KAAKkM,OAAO2B,IAEhB5C,iCAAkC,SAASyC,EAAW7B,IAC7C7L,KAAKuK,oBAAsBsB,GAAKA,EAAEiC,WAGvC9N,KAAKyN,qBAAqBC,GAC1B7B,GAAKA,EAAE0B,mBAEXQ,iBAAkB,SAASpL,EAAMsJ,GAC7B,IAAIX,EAAmB5B,EAAQ5K,QAAQyM,sBACnCyC,EAAyBrL,EAAKsL,OAAOhC,EAAMb,OAASE,EACpD4C,EAAa,MAAQvL,EAAKsL,OAAOhC,EAAMb,KACvC+C,GAAenO,KAAKoO,WAAa9C,GAAoB,MAAQtL,KAAKoO,WAAaJ,EAC/EK,EAAoB,MAAQrO,KAAKoO,UAAYF,EACjD,OAAOC,GAAeE,GAE1BjC,aAAc,WACV,OAAO1C,EAAQ5K,QAAQwP,cAActO,KAAKkN,SAASqB,OAAO,IAE9DC,iBAAkB,SAAS3C,GAIvB,GAHA7L,KAAK+L,oBACL/L,KAAKoO,SAAW1E,EAAQ5K,QAAQwP,eAAc,EAAIlP,EAAOqP,SAAS5C,IAAI,GACtE7L,KAAK0O,cAAe,EAAItP,EAAOuP,kBAAkB9C,IAC5C7L,KAAK4O,iBAAiB/C,EAAEgD,eACzB,OAAO7O,KAAKkK,SAAS2B,GAEzB,IAAIiD,EAAiB9O,KAAKoM,eACtBH,EAAQjM,KAAKkM,SACb6C,EApII,UAoIU/O,KAAK0O,aAA6B,GAAK1O,KAAKoO,SAC1DY,EAAWhP,KAAKiP,UAAUH,EAAgB7C,EAAO8C,GAYrD,OAXI/O,KAAK+N,iBAAiBe,EAAgB7C,KACtCjM,KAAKkP,WAAW,GAChBrD,EAAEgD,cAActB,uBAEhB,IAAWyB,EA1IP,UA2IAhP,KAAK0O,cACL7C,EAAEgD,cAActB,iBAGpBvN,KAAKgN,aAAegC,EAEjBhP,KAAKkK,SAAS2B,IAEzBsD,iBAAkB,SAAStD,GAClB7L,KAAKuK,oBACNvK,KAAKkK,SAAS2B,IAGtBlB,eAAgB,SAASkB,GACrB,IAAII,EAAQjM,KAAKkM,SACbvJ,EAAO3C,KAAKoM,eACZD,EAAQF,EAAME,MACdf,EAAMa,EAAMb,IAChBpL,KAAKoO,UAAW,EAAIhP,EAAOqP,SAAS5C,GACpC7L,KAAK0O,cAAe,EAAItP,EAAOuP,kBAAkB9C,GACjD,IAAIuD,EAAcpP,KAAKqK,aAAarK,KAAK0O,cACrCW,GAAkBD,EACtB,GAAIjD,IAAUf,EAAK,CAGf,KADgBiE,GADIlD,EAC8B,GAAKiD,GADnCjD,EACkExJ,EAAKU,QAMvF,YADAwI,EAAE0B,iBAHF6B,GAAehE,IACfiE,GAAkBlD,IAM1B,IAAImD,EAAO3M,EAAK4M,MAAMpD,EAAOf,GAC7B,GAAIpL,KAAKwP,QAAQF,GAOb,OANAtP,KAAKkP,WAAWE,EAAc,GAAK,IAC/BpP,KAAKgN,aAAe,GAAK,EAAIhN,KAAKgN,eAAkB,OACpDhN,KAAKyK,YAAYoB,GACjB7L,KAAK+M,8BAETlB,EAAE0B,iBAGN,IAAIjC,EAAmB5B,EAAQ5K,QAAQyM,sBACvC,GAAI+D,IAAShE,EAAb,CAQA,GAAIF,EAAMe,EAAQxJ,EAAKU,OAMnB,GALiBrD,KAAKyP,qBAAqB9M,EAAM,CAC7CwJ,MAAOA,EACPf,IAAKA,GACN,IACuBsE,OAAO,SAAW,GAC5B1P,KAAK2P,gBAAgB,GAEjC,YADA3P,KAAKgN,aAAehN,KAAKgN,aAAe,GAAK,EAAIhN,KAAKgN,eAAkB,KAAW,EAAI,GAI/F,IAAI4C,EAAqB5P,KAAKiP,UAAUtM,EAAM,CAC1CwJ,MAAOA,EACPf,IAAKA,GACN,SACC,IAAWwE,EACX/D,EAAE0B,iBAEFvN,KAAKgN,aAAe4C,MA1BxB,CACI,IAAIvD,EAAwB1J,EAAKkN,QAAQvE,GACrCtL,KAAK8P,gBAAgBzD,EAAwB,KAC7CrM,KAAKkP,WAAWE,EAAc,GAAK,GACnCvD,EAAE0B,oBAyBdwC,iBAAkB,WAGd,OAAyC,IAF5B/P,KAAK2M,oBACWqD,QAAQ,WAAY,IAC1BH,QAAQ,MAEnCI,OAAQ,SAAStN,EAAMyH,GACnB,IAAI8F,EAAelQ,KAAKqC,OAAO,UAC3B8N,GAAiB,EAAIhR,EAAMiR,YAAYF,EAAaG,QACpDA,EAASF,EAAiBD,EAAaG,OAAS3G,EAAQ5K,QAAQwR,MAChEC,EAAwB,EAC5B,IAAKJ,EAAgB,CACjB,IAAIK,GAAmB,EAAI1G,EAAO2B,uBAAuBrB,GAAQqG,MAC7DC,EAAiB1Q,KAAKqL,uBAAuB1I,GAC7CgO,GAAgD,IAAtBH,EAA0BA,EAAmBpG,EAAO/G,OAC9EuN,GAA4C,IAApBF,EAAwBA,EAAiB/N,EAAKU,OACtEuN,EAAwBD,IAAoD,IAAzBvG,EAAOyF,QAAQ,OAClEU,EAAwBK,EAAwBD,GAKxD,OAAON,EADP1N,GADAA,EAAO3C,KAAK6Q,aAAalO,GAAM,IACnBmO,OAAOP,GACCnG,IAExBwC,QAAS,SAASxK,EAAOgI,GACrB,IAAI8F,EAAelQ,KAAKqC,OAAO,UAG/B,QAFwB,EAAIlD,EAAMiR,YAAY,MAASF,OAA0C,EAASA,EAAaa,WACnFb,EAAaa,UAAYrH,EAAQ5K,QAAQsL,QAC5DhI,EAAOgI,IAE5BuC,kBAAmB,WAIf,OAHK3M,KAAKgR,gBACNhR,KAAKiR,gBAEFjR,KAAKgR,gBAEhBC,cAAe,WACX,IAAIC,EAAQlR,KACRoK,EAASpK,KAAKqC,OAAO,UACrB8N,GAAiB,EAAIhR,EAAMiR,YAAY,MAAShG,OAA8B,EAASA,EAAOiG,QAC9Fc,GAAgB,EAAIhS,EAAMiS,UAAUhH,KAAYA,EAAOyF,QAAQ,MAAQ,GAAKzF,EAAOyF,QAAQ,MAAQ,GACvG7P,KAAKgR,eAAiBb,GAAkBgB,EAAgB/G,GAAS,EAAIT,EAAS0H,YAAW,SAASjP,GAC9F,IAAIO,EAAOuO,EAAMtE,QAAQxK,EAAOgI,GAChC,OAAOV,EAAQ5K,QAAQwP,cAAc3L,GAAM,OAGnD2O,kBAAmB,SAAS3O,GACxB,IAAIyH,EAASpK,KAAK2M,oBAClB,IAAI,EAAIxN,EAAMiS,UAAUhH,GAAS,CAC7B,IAAImH,EAAYnH,EAAOnH,MAAM,KACzBuO,EAAO9H,EAAQ5K,QAAQ2S,QAAQ9O,EAAMyH,GAEzC,OADAmH,EAAU,GAAKA,EAAU,IAAM,IAAMA,EAAU,GACxCC,EAAO,EAAID,EAAU,GAAKA,EAAU,GAG3C,OADY7H,EAAQ5K,QAAQ2S,QAAQ9O,GACrB,EAAI,IAAM,IAGjCkO,aAAc,SAASlO,EAAM+O,GACzB,IAAItH,EAASpK,KAAKsR,kBAAkB3O,GAChCgP,EAAqBjI,EAAQ5K,QAAQ8S,wBACrCC,EAAQ7R,KAAK8R,UAAU1H,GACvB2H,EAASpP,EACb,GAAIkP,EAAMxO,OAAQ,CACd,IAAI2O,EAAcH,EAAM,GACpBI,EAAe,IAAIC,OAAO,KAAM,EAAIrI,EAAQsI,cAAcN,EAAM,IAAM,IAAM,KAAM,KAClFO,EAAkB,IAAIF,OAAO,MAAO,EAAIrI,EAAQsI,cAAcT,EAAe,GAAKC,GAAsB,IAAK,KACjHI,EAASA,EAAO/B,QAAQgC,EAAa,IAAIhC,QAAQiC,EAAc,IAAIjC,QAAQoC,EAAiB,IAEhG,OAAOL,GAEXD,UAAW,SAAS1H,GAChB,IAAIiI,EAAe,iBAAiBC,KAAKlI,GACrCmI,EAAUF,GAAgBA,EAAa,GAAGlP,OAC9C,OAAOiH,EAAOnH,MAAMsP,GAASzS,KAAI,SAAS0S,GACtC,OAAOA,EAAKxC,QAAQ,KAAM,QAGlCyC,qBAAsB,SAASrQ,EAAOsQ,GAClC,IAAI,EAAIvT,EAAMwT,WAAWvQ,GAAQ,CAC7B,IAAIwQ,EAAWxQ,EAAMyQ,WACjBxG,EAAwBuG,EAAS/C,QAAQ,KAC7C,GAAI+C,GAAYvG,GAAyB,EAAG,CACxC,IAAIyG,EAActP,WAAWoP,EAAS9B,OAAO,EAAGzE,EAAwBqG,EAAe,IACvF,OAAOK,MAAMD,GAAe1Q,EAAQ0Q,GAG5C,OAAO1Q,GAEX6M,UAAW,SAAStM,EAAMqQ,EAAW1D,GACjC,IAAI2D,EAAajT,KAAKyP,qBAAqB9M,EAAMqQ,EAAW1D,GACxDlF,EAASpK,KAAK2M,oBACduG,EAAiBF,EAAU7G,QAAU6G,EAAU5H,IAC/C0H,EAAc9S,KAAKmT,gBAAgBF,EAAY7I,GAC/CsI,GAAgBtI,EAAOiG,QAAUrQ,KAAKoT,oBAAoBH,GAAYI,IACtEC,EAAiBR,IAAgB9S,KAAKgN,aAEtCuG,EAA2BjE,IADR5F,EAAQ5K,QAAQyM,uBACqB,IAAMmH,EAC9Dc,GAA2BN,IAAmBI,GAtT9C,MAsTgEhE,IAAmBtP,KAAKyT,mBAAmBR,IAAejT,KAAKwP,QAAQF,GAC3I,IAAIiE,IAA4BC,IAG5B,KAAOxT,KAAK6Q,aAAaoC,KACzBH,EAAcY,KAAKC,IAAI,EAAI3T,KAAKgN,gBAEhC+F,MAAMD,IAAV,CAGA,IAAI1Q,EAAQ,OAAS0Q,EAAc9S,KAAKgN,aAAe8F,EAEvD,OADAA,EAAcJ,EAAe1S,KAAKyS,qBAAqBrQ,EAAOsQ,GAAgBI,GACtE1I,EAAOiG,QAAUrQ,KAAK+P,mBAAqB+C,GAAeA,EAAc,IAAMA,IAE1FK,gBAAiB,SAASxQ,EAAMyH,GAC5B,IAAIoH,EAAO9H,EAAQ5K,QAAQ2S,QAAQ9O,GAAO,MAASyH,OAA8B,EAASA,EAAO2G,YAAc3G,GAC3G0I,EAAc9S,KAAKiQ,OAAOtN,EAAMyH,GAChCwJ,EAAkBd,EAAc,GAAK,EAAI,EAE7C,OAD0B,EAAI3T,EAAM0E,WAAWiP,IAAgBtB,IAASoC,EAAkBpC,EAAOsB,EAAcA,GAGnHW,mBAAoB,SAAS9Q,GACzB,IAAK3C,KAAKuK,mBACN,OAAOvK,KAAKkK,SAASvH,GAEzB,IAAIsJ,EAAQjM,KAAKkM,SACb2H,EAAQnK,EAAQ5K,QAAQyM,sBACxBuI,EAAa9T,KAAKqL,uBAAuB1I,GACzCoR,EAAiBD,GAAc,GAAKA,EAAa7H,EAAME,MACvD6H,EAAYhU,KAAK6Q,aAAalO,GAAM,GAAMM,MAAM4Q,GACpD,IAAKE,GAAkB,IAAMC,EAAU3Q,OACnC,OAAO,EAEX,IAAI4Q,EAAcD,EAAU,GAAG3Q,OAE3B8M,IADSnQ,KAAK2M,oBACY0D,OAC1B6D,GAAa/D,GAAkBnQ,KAAKoT,oBAAoBpT,KAAK2M,oBAAqBhK,GAClFwR,IAAqBhE,IAAwB,EAAI1G,EAAM2K,SAASH,EAAaC,EAAUG,IAAKH,EAAUb,KACtGiB,EAAe,MAAQN,EAAU,GAAG/F,OAAOgG,EAAc,GAC7D,OAAOE,IAAuBG,IAAiBL,IAEnDtE,gBAAiB,SAASvN,GACtB,IAAIiS,GAAM,EAAIxK,EAAQ0K,eAAevU,KAAKqC,OAAO,QAAS,KACtDgR,GAAM,EAAIxJ,EAAQ0K,eAAevU,KAAKqC,OAAO,OAAQ,KACzD,OAAO,EAAIoH,EAAM2K,SAAShS,EAAOiS,EAAKhB,IAE1CmB,cAAe,SAAS7R,GACpB,IAAImM,EAAiBpF,EAAQ5K,QAAQwP,cAAc3L,GAAM,GACrDkL,GAAW,EAAIxE,EAAYoL,qBAAqBzU,KAAKoM,eAAgB0C,EAAgB9O,KAAKkM,SAAUlM,KAAK2M,qBAC7G3M,KAAKkN,SAASqB,IAAI5L,GAClB3C,KAAK0U,+BACL1U,KAAK2U,gBAAkBhS,EAClB3C,KAAKwM,iBACNxM,KAAKkM,OAAO2B,IAGpBtD,iBAAkB,WACd,QAASvK,KAAKqC,OAAO,WAAarC,KAAKqC,OAAO,oBAElDuS,iBAAkB,WACd,IAAIC,EAAe,WAAa7U,KAAKqC,OAAO,QACxCyS,EAAY,YAActL,EAAS1K,QAAQiW,OAAOC,WAClDhV,KAAKuK,oBAAsBsK,EAC3B7U,KAAKiV,cAAcH,GAAa9U,KAAKkV,sBAAwB,OAAS,OAEtElV,KAAKkK,YAGbiL,QAAS,SAASC,GACd,OAAO,EAAIjW,EAAMiS,UAAUgE,IAAQ,IAAMA,EAAI/R,QAEjD6L,WAAY,SAASmG,GACjB,GAAKA,EAAL,CAGA,IAAIxH,GAAW,EAAIxE,EAAYgE,oBAAoBrN,KAAKkM,SAAUmJ,GAC9DC,GAAgB,EAAIjM,EAAYmE,sBAAsBK,EAAU7N,KAAKoM,eAAgBpM,KAAK2M,qBAC9F3M,KAAKkM,OAAOoJ,KAEhB1G,iBAAkB,SAAS/C,GACvB,IAAI0J,GAAU,EAAInW,EAAOuP,kBAAkB9C,GACvC2J,EAAgB3J,EAAE4J,SAAW5J,EAAEiC,UAAYjC,EAAE6J,SAAW1V,KAAKmV,QAAQI,GACrEI,EAvYI,UAuYSJ,EAEjB,OADsBvV,KAAKuK,qBACAiL,IAAkBG,GAEjDC,aAAc,WACV5V,KAAKkK,WACLlK,KAAK6V,oBAETA,iBAAkB,WACd7V,KAAK8V,cACL9V,KAAK+V,yBACD/V,KAAKuK,oBACLvK,KAAKgW,0BAGbD,uBAAwB,WACpBzM,EAAexK,QAAQmX,IAAIjW,KAAKkN,SAAU,uBAE9CgJ,kBAAmB,SAASrK,GACxB,IAAIsK,EAAYtK,EAAEgD,eAAiBhD,EAAEgD,cAAcsH,UACnD,OAAI,EAAIhX,EAAMwT,WAAWwD,GACd,oBAAsBA,EAEtBnW,KAAKoW,gBAGpBJ,uBAAwB,WACpB,IAAIK,EAASrW,KAAKkN,SAClB5D,EAAexK,QAAQwX,GAAGD,GAAQ,EAAIjX,EAAO4E,cAjanC,QANe,qBAua4E,SAAS6H,GAC1G7L,KAAKuW,aAAa1K,GAClB7L,KAAKoW,gBAAiB,GACxB1V,KAAKV,OACHuJ,EAASzK,QAAQkL,MAAQT,EAASzK,QAAQ0X,QAAU,IACpDlN,EAAexK,QAAQwX,GAAGD,GAAQ,EAAIjX,EAAO4E,cAAc,QA5atC,qBA4a4E,WAC7FhE,KAAKoW,gBAAiB,GACxB1V,KAAKV,OAEXsJ,EAAexK,QAAQwX,GAAGD,GAAQ,EAAIjX,EAAO4E,cAAc,UAhblC,qBAgb0E,WAC1FhE,KAAKgM,gBACNhM,KAAKgM,cAAgBvG,WAAW,WAC5BzF,KAAKkM,QAAO,EAAI7C,EAAYmE,sBAAsBxN,KAAKkM,SAAUlM,KAAKoM,eAAgBpM,KAAK2M,uBAC7FjM,KAAKV,MAAO+J,KAEpBrJ,KAAKV,OACPsJ,EAAexK,QAAQwX,GAAGD,EAAQ,aAAc,WAC5CrW,KAAK+L,qBACPrL,KAAKV,QAEX+L,kBAAmB,WACfrG,aAAa1F,KAAKgM,eAClBhM,KAAKgM,cAAgB,MAEzByK,wBAAyB,WACrB,IAAKzW,KAAKuK,mBACN,OAAOvK,KAAKkK,YAGpB4F,gBAAiB,SAASW,GACtB,IAAI9N,EAAO3C,KAAKoM,eAAemD,MAAMkB,GACrC,OAAO9N,IAAS3C,KAAKwP,QAAQ7M,GAAM,IAEvC6M,QAAS,SAAS4F,EAAKhE,GACnB,IAAIsF,GAA0B,EAAI7M,EAAQsI,cAAczI,EAAQ5K,QAAQyM,uBAGxE,OADiB,IAAI2G,OADF,SAAWwE,EAA0B,MACd,KACxBC,KAAKvB,KAAShE,GAAYpR,KAAKmV,QAAQC,KAE7DwB,YAAa,SAASjU,GAClB,OAAK3C,KAAKuK,mBAGHvK,KAAKgN,aAFDhN,KAAKkK,SAASvH,IAI7ByQ,oBAAqB,SAASzQ,GAC1B,IAAIkU,EAAgB7W,KAAKsR,kBAAkB3O,GACvCmU,GAAqB,EAAIhN,EAAO2B,uBAAuBoL,GAAepG,MACtEsG,IAAa,EAAIjN,EAAOkN,cAAcH,EAAeC,GAAoB,IAAM,IAAI9G,QAAQ,SAAU,IAGzG,MAAO,CACHqE,IAHe0C,EAAU/G,QAAQ,UAAW,MAAM3M,OAIlDgQ,IAHe0D,EAAU1T,SAMjCoH,YAAa,SAASoB,GAClB,GAAK7L,KAAKuK,mBAAV,CAGA,IAAI0B,EAAQjM,KAAKkM,SACjB,GAAID,EAAME,QAAUF,EAAMb,IAAK,CAC3B,GAjeI,WAieA,EAAIhM,EAAOuP,kBAAkB9C,GAE7B,YADA7L,KAAKiX,mBAAmBpL,EAAGI,GAAO,GAGlCjM,KAAKkM,QAAO,EAAI7C,EAAYmE,sBAAsB,EAAGxN,KAAKoM,eAAgBpM,KAAK2M,sBAGvF3M,KAAKiX,mBAAmBpL,EAAGI,KAE/BgL,mBAAoB,SAASpL,EAAGI,EAAOiL,GACnC,IAAIlI,GAAY,GAAI,EAAInF,EAAQ0K,eAAevU,KAAKgN,aAAc,MAClE,GAAIhN,KAAK2P,gBAAgBX,GAAW,CAEhC,GADAhP,KAAKgN,aAAegC,EAChBkI,EAAsB,CACtB,IAAI9M,EAASpK,KAAK2M,oBACdwK,EAAenX,KAAKoM,eACxBpM,KAAK+M,wBACLlB,EAAE0B,iBACF,IAAI6J,EAAcpX,KAAKoM,eACnBiJ,GAAS,EAAIhM,EAAYgO,gBAAgBF,EAAcC,EAAahN,GACxE6B,GAAQ,EAAI5C,EAAYgE,oBAAoBpB,EAAOoJ,GACnD,IAAIiC,GAAoB,EAAIjO,EAAYmE,sBAAsBvB,EAAOmL,EAAahN,GAC9Eb,EAASzK,QAAQkL,MACjBtE,aAAa1F,KAAKgM,eAClBhM,KAAKgM,cAAgBvG,WAAWzF,KAAKkM,OAAOxL,KAAKV,KAAMsX,KAEvDtX,KAAKkM,OAAOoL,GA1fN,aA6fVzL,EAAEpJ,KACF6G,EAAexK,QAAQmO,QAAQjN,KAAKkN,SA7flC,WAigBdqK,qBAAsB,SAAS5U,EAAMsJ,GAEjC,MArgBQ,UAogBajM,KAAK0O,cArgBtB,MAqgBoD/L,EAAKsL,OAAOhC,EAAME,MAAQ,GAC1DnM,KAAKyP,qBAAqB9M,EAAM,CACpDwJ,MAAOF,EAAME,MAAQ,EACrBf,IAAKa,EAAME,OACZ,IAAMxJ,GAEboK,sBAAuB,WACnB,IAAI3C,EAASpK,KAAK2M,oBACd6K,EAASxX,KAAK4W,cACda,EAAYzX,KAAK4M,QAAQ4K,EAAQpN,IAAW,GAChDpK,KAAKwU,cAAciD,IAEvBlB,aAAc,SAAS1K,GACnB,IAAIiD,EAAiB9O,KAAKoM,eACtBH,EAAQjM,KAAKkM,SACbwL,EAAmB1X,KAAKuX,qBAAqBzI,EAAgB7C,GAC7D0L,EAAkBD,IAAqB5I,EAE3C,GADAA,EAAiB4I,GACZ1X,KAAKkW,kBAAkBrK,IAAM7L,KAAKyT,mBAAmBiE,GAKtD,OAJA1X,KAAK2U,gBAAkB7F,OACnB6I,GACA3X,KAAK+M,yBAKb,GADqBrD,EAAQ5K,QAAQwP,cAActO,KAAK2U,iBAAiB,KAAU7F,EAC/D,CAChB,IAAI1M,EAAQpC,KAAKiP,UAAUH,EAAgB7C,EAAO,KAC9C,EAAI9M,EAAMwT,WAAWvQ,KACrBpC,KAAKgN,aAAe5K,GAG5BpC,KAAK+M,yBAET6K,mBAAoB,WACZ5X,KAAKuK,mBACLvK,KAAK0U,+BAEL1U,KAAKkK,SAAS2N,MAAM7X,KAAM8X,YAGlCC,aAAc,WAKV,OAJI/X,KAAKuK,qBACLvK,KAAKgN,aAAehN,KAAKqC,OAAO,SAChCrC,KAAK+M,yBAEF/M,KAAKkK,YAEhB2C,mBAAoB,WAChB,IAAIH,EAAa1M,KAAKoM,eACtBpM,KAAKgN,aAAehN,KAAKiP,UAAUvC,EAAY1M,KAAKkM,WAExDY,mBAAoB,WAChB,GAAK9M,KAAKuK,mBAAV,CAGA,IACIuI,EADc9S,KAAK6Q,aAAa7Q,KAAKoM,gBACTpM,KAAK4W,cAAgB,MAChD,EAAIzX,EAAM0E,WAAWiP,GAI1B9S,KAAKgN,cAAe,EAAIvD,EAAMuO,cAAclF,EAAa9S,KAAKqC,OAAO,OAAQrC,KAAKqC,OAAO,QAHrFrC,KAAKgN,aAAe8F,IAK5BmF,yBAA0B,SAASpM,GAC/B,IAAK7L,KAAKuK,mBACN,OAAOvK,KAAKkK,SAAS2B,GAEzB,IAAII,EAAQjM,KAAKkM,SACjBlM,KAAKkY,sBAAsBrM,GAC3B7L,KAAKoO,SAAW,KAChBpO,KAAK0O,aAAe,KACpB1O,KAAK6M,qBACL7M,KAAK8M,qBACL9M,KAAKqC,OAAO,QAASrC,KAAKgN,cACtBf,GACAjM,KAAKkM,OAAOD,IAGpBkM,eAAgB,SAASC,GACrB,OAAQA,EAAKjW,MACT,IAAK,SACL,IAAK,kBACDnC,KAAK4U,mBACL5U,KAAKiR,gBACLjR,KAAK6V,mBACL7V,KAAK+X,eACL/X,KAAKqY,2BACLrY,KAAKsY,iBACL,MACJ,IAAK,MACL,IAAK,MACDtY,KAAK8M,qBACL9M,KAAKkK,SAASkO,GACd,MACJ,QACIpY,KAAKkK,SAASkO,KAG1BtC,YAAa,kBACF9V,KAAK2U,uBACL3U,KAAKoO,gBACLpO,KAAK0O,oBACL1O,KAAKgN,oBACLhN,KAAKwM,gBACZ9G,aAAa1F,KAAKgM,sBACXhM,KAAKgM,eAEhBuM,OAAQ,WACJvY,KAAK8V,cACL9V,KAAKkK,cAIbrL,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,S,kCC/oBzBD,EAAQ2O,qBAAuBA,EAC/B3O,EAAQwY,eAAiBxY,EAAQyO,oBAAsBzO,EAAQ4V,oBAAsB5V,EAAQwO,mBAAqBxO,EAAQ+O,wBAAqB,EAC/I,IAKgCvO,EAL5BoK,EAAQ,EAAQ,IAChBI,EAAU,EAAQ,GAClBH,GAG4BrK,EAHK,EAAQ,OAI3BA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAJfyK,EAAS,EAAQ,KAOrB,IAAI8D,EAAqB,SAASjL,EAAMyH,GACpC,GAAI,iBAAoBA,EAAQ,CAC5B,IAAImH,EAAYnH,EAAOnH,MAAM,KACzBuO,EAAO9H,EAAQ5K,QAAQ2S,QAAQ9O,EAAMyH,GACzCmH,EAAU,GAAKA,EAAU,IAAM,IAAMA,EAAU,GAC/CnH,EAASmH,EAAUC,EAAO,EAAI,EAAI,GAQlCpH,EAA0BA,EANX4F,QAAQ,cAAc,SAASoF,GACtC,OAAOA,EAAInS,MAAM,IAAInD,KAAI,WACrB,MAAO,OACR0Y,KAAK,IAAI1H,OAAO,MAI3B,IAAI2H,EAAmB,YAAYnG,KAAKlI,GAAQ,GAAG/G,OAC/CqV,EAAoB,YAAYpG,KAAKlI,GAAQ,GAAG/G,OACpD,MAAO,CACH8I,MAAOsM,EACPrN,IAAKzI,EAAKU,OAASqV,GAGvB,MAAO,CACHvM,MAAO,EACPf,IAAKzI,EAAKU,SAItBxE,EAAQ+O,mBAAqBA,EAC7B,IAAI+K,EAA4B,SAASlI,EAAO9N,GAC5C,IAAI2I,EAAmB5B,EAAQ5K,QAAQyM,sBACnCqN,EAAS,IAAI1G,OAAO,SAAU,EAAIrI,EAAQsI,cAAc7G,GAAoB,IAAK,KAErF,OADyB3I,EAAK4M,MAAM,EAAGkB,GACbT,QAAQ4I,EAAQ,IAAIvV,QAE9CwV,EAAe,SAASlW,GACxB,OAAOA,EAAKM,MAAM,IAAI6V,UAAUN,KAAK,KAErCO,EAA2B,SAASC,EAAYrW,GAChD,IAAKqW,EACD,OAAQ,EAMZ,IAJA,IAAIJ,EAAS,SACTK,EAAU,EACVxI,EAAQ,KACRsB,EAAS6G,EAAOtG,KAAK3P,GAClBoP,GAAQ,CAEX,GADAtB,EAAQsB,EAAOtB,OACVuI,GAAcC,GAAWD,EAC1B,OAAOvI,EAEXwI,IACAlH,EAAS6G,EAAOtG,KAAK3P,GAEzB,OAAO,OAAS8N,EAAQ9N,EAAKU,OAASoN,GAKtCpD,EAAqB,SAASpB,EAAOoJ,GAOrC,YANI,IAAWpJ,EAAME,QACjBF,EAAQ,CACJE,MAAOF,EACPb,IAAKa,IAGN,CACHE,MAAOF,EAAME,MAAQkJ,EACrBjK,IAAKa,EAAMb,IAAMiK,IAGzBxW,EAAQwO,mBAAqBA,EAyB7BxO,EAAQ4V,oBAxBkB,SAAS9R,EAAM8U,EAAWxL,EAAO7B,GACvD6B,EAAQoB,EAAmBpB,EAAO,GAClC,IAAI4H,EAAQnK,EAAQ5K,QAAQyM,sBACxB2N,EAuBR,SAAgCvW,GAC5B,OAAO,IAAMA,EAAKU,UAAYV,EAAKW,MAAM,iBAxBd6V,CAAuBxW,GAC9C6I,GAA+B,EAAI1B,EAAO2B,uBAAuBrB,GAAQsB,WACzE0N,EAAgBF,EAAuB,GAAI,EAAIpP,EAAO6B,kBAAkBhJ,EAAMkR,EAAOrI,GACrF6N,GAAmB,EAAIvP,EAAO6B,kBAAkB8L,EAAW5D,EAAOrI,GAClEwI,GAAY,EAAIlK,EAAOkN,cAAcrU,EAAMyW,GAC3CE,GAAiB,EAAIxP,EAAOkN,cAAcS,EAAW4B,GAEzD,IADwC,IAAnBD,GAAwBnN,EAAME,MAAQiN,EACvC,CAChB,IAAIG,EAAgBtN,EAAME,MAAQiN,EAAgB,EAC9CI,EAAeb,EAA0BY,EAAevF,EAAU,IAEtE,OAAOxG,EADW8L,EAAe,GAAKD,EAAmB,EAAIN,EAAyBS,EAAcF,EAAe,IAAM,EAAI7B,EAAUpU,OAC9FoU,EAAWrN,GAEpD,IAAIqP,EAhCsB,SAAS9W,GACvC,OAAOA,EAAKqN,QAAQ,YAAa,IA+BN0J,CAA4BJ,EAAe,IAC9DK,EAAkB3F,EAAU,GAAG3Q,OAAS4I,EAAME,MAC9CyN,EAAgBjB,EAA0BgB,EAAiBd,EAAa7E,EAAU,KAClF6F,EAAqBd,EAAyBa,EAAef,EAAaY,IAE9E,OAAOjM,EADoBiM,EAAiBpW,QAAUwW,EAAqB,GACzBpC,EAAWrN,IAerE,SAASoD,EAAqBvB,EAAOtJ,EAAMyH,GACvC6B,EAAQoB,EAAmBpB,EAAO,GAClC,IAAI0B,EAAaC,EAAmBjL,EAAMyH,GAK1C,MAJoB,CAChB+B,OAAO,EAAI1C,EAAMuO,cAAc/L,EAAME,MAAOwB,EAAWxB,MAAOwB,EAAWvC,KACzEA,KAAK,EAAI3B,EAAMuO,cAAc/L,EAAMb,IAAKuC,EAAWxB,MAAOwB,EAAWvC,MAP7EvM,EAAQyO,oBALkB,SAASrB,EAAOtJ,EAAMyH,GAE5C,IAAIuD,EAAaH,EADjBvB,EAAQoB,EAAmBpB,EAAO,GACWtJ,EAAMyH,GACnD,OAAO6B,EAAME,OAASwB,EAAWxB,OAASF,EAAMb,KAAOuC,EAAWvC,KAkBtEvM,EAAQwY,eALa,SAASF,EAAc2C,EAAS1P,GACjD,IAAI2P,EAAqBnM,EAAmBuJ,EAAc/M,GAE1D,OADoBwD,EAAmBkM,EAAS1P,GAC3B+B,MAAQ4N,EAAmB5N,Q,kCCnIpDtN,EAAQC,aAAU,EAClB,IAAIkb,EAAYhb,EAAuB,EAAQ,IAC3Cib,EAAejb,EAAuB,EAAQ,KAC9CsK,EAAiBtK,EAAuB,EAAQ,KAChD6K,EAAU,EAAQ,GAClB1K,EAAQ,EAAQ,GAChBsK,EAAQ,EAAQ,IAChB5E,EAAU,EAAQ,GAClBqV,EAAS,EAAQ,IACjB1Q,EAAWxK,EAAuB,EAAQ,KAC1CuK,EAAWvK,EAAuB,EAAQ,KAC1Cmb,EAAMnb,EAAuB,EAAQ,MACrCI,EAAS,EAAQ,IACjBiK,EAAcrK,EAAuB,EAAQ,OAC7Cob,EAAWpb,EAAuB,EAAQ,KAC1Cqb,EAAY,EAAQ,IAExB,SAASrb,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAAIib,EAAO5G,KAEP6G,EAAuB,CAAC,MAAO,MAAO,YAAa,YAAa,aAAc,OAAQ,MAAO,SAwV7F/a,EAtVgB2a,EAAIrb,QAAQW,QAAQ,CACpC6K,eAAgB,WACZ,OAAO,EAAIzF,EAAQ0B,QAAQvG,KAAKkK,WAAY,CACxCsQ,QAAS,SAAS3O,IACT,EAAIzM,EAAOqb,qBAAqB5O,KACjCA,EAAE0B,iBACF1B,EAAE6O,kBACF1a,KAAK2a,qBAAqB9O,KAGlC+O,UAAW,SAAS/O,IACX,EAAIzM,EAAOqb,qBAAqB5O,KACjCA,EAAE0B,iBACF1B,EAAE6O,kBACF1a,KAAK6a,uBAAuBhP,KAGpCX,MAAO,gBAGfjB,mBAAoB,WAChB,OAAO,EAAIpF,EAAQ0B,QAAQvG,KAAKkK,WAAY,CACxC9H,MAAO,EACPiS,SAAK,EACLhB,SAAK,EACLlG,KAAM,EACN2N,iBAAiB,EACjBC,qBAAqB,EACrBC,KAAM,OACNC,oBAAqBb,EAAStb,QAAQsL,OAAO,mCAC7C8Q,aAAS,KAGjBC,cAAe,WACX,OAAO,GAEXC,mBAAoB,WAChB,OAAOpb,KAAKkK,WAAWmR,OAAO,CAAC,CAC3BlZ,KAAM,QACNmZ,KAAMjS,EAAYvK,YAG1BoW,oBAAqB,WACjB,IAAIsB,EAAUhT,WAAW+F,EAASzK,QAAQ0X,SAC1C,OAAOjN,EAASzK,QAAQyc,QAAU/E,GAAW,IAAMjN,EAASzK,QAAQ0c,QAAUhF,GAAW,IAAMjN,EAASzK,QAAQkL,MAAQwM,GAAW,IAEvIiF,qBAAsB,WAClB,OAAOzb,KAAKkK,WAAWmR,OAAO,CAAC,CAC3BK,OAAQ,WACJ,OAAOlS,EAAS1K,QAAQiW,OAAO4G,UAAYnS,EAAS1K,QAAQ8c,eAEhE7V,QAAS,CACLgV,qBAAqB,IAE1B,CACCW,OAAQ,WACJ,MAAO,YAAclS,EAAS1K,QAAQiW,OAAOC,aAAehV,KAAKkV,uBACnExU,KAAKV,MACP+F,QAAS,CACLiV,KAAM,cAIlBa,YAAa,WACT7b,KAAK8b,uBACL9b,KAAKyI,WAAWsT,SApEL,gBAqEX/b,KAAKkK,YAET8R,sBAAuB,WACnB,IAAIC,EAAajc,KAAKkK,WAEtB,OADA+R,EAAWC,UAAY,UAChBD,GAEXE,mBAAoB,WAChBnc,KAAKqC,OAAO,YAAcrC,KAAKoc,eAAepc,KAAKqC,OAAO,UAC1DrC,KAAKqc,QAAQ,OAAQ,eAEzBP,qBAAsB,WAClB9b,KAAKsc,iBAAkB,EAAItC,EAAUlb,SAAS,WAAWyd,KAAK,OAAQ,UAAUC,SAASxc,KAAKyI,YAC9FzI,KAAKyc,gBAAgBzc,KAAKqC,OAAO,WAErCoa,gBAAiB,SAASra,GACtBpC,KAAK0c,oBAAoBnO,KAAI,EAAI1E,EAAQ8S,6BAA6Bva,KAE1Esa,kBAAmB,WACf,OAAO1c,KAAKsc,iBAEhBnN,iBAAkB,SAAStD,GACvB7L,KAAKkK,SAAS2B,GACd,IAAIyD,GAAO,EAAIlQ,EAAOqP,SAAS5C,GAG/B,IAFsB,uBACiB8K,KAAKrH,GACrB,CACnB,IAAIiG,GAAU,EAAInW,EAAOuP,kBAAkB9C,GAC3C,IAAI,EAAIzM,EAAOqb,qBAAqB5O,IAAM0J,IAAW,EAAI2E,EAAO0C,SAASrH,EAASgF,IAAyB,EACvG,OAGJ,OADA1O,EAAE0B,kBACK,EAEXvN,KAAK6c,aAAc,GAEvBC,cAAe,SAASC,GACpBA,EAAQC,MAAQ,EAAIhd,KAAKid,iBAAiB,EAAGF,GAAW/c,KAAKid,kBAAkB,EAAGF,IAEtFhF,aAAc,WACV,IAAIrL,EAAa1M,KAAKkN,SAASqB,MAC3BnM,EAAQpC,KAAKqC,OAAO,SACnBqK,EAAWrJ,QAAU6Z,OAAOxQ,KAAgBtK,IAC7CpC,KAAKmd,oBACLnd,KAAK0U,gCAET,IAAI0I,GAAY,EAAIje,EAAMwT,WAAWvQ,GAAS,KAAOgY,EAAStb,QAAQsL,OAAO,0BAO7E,OANApK,KAAKqc,QAAQ,CACTgB,UAAU,EAAIxT,EAAQ0K,eAAenS,EAAO,IAC5Ckb,UAAWF,IAEfpd,KAAKqC,OAAO,OAAQrC,KAAKkN,SAASqB,OAClCvO,KAAKud,kBACE,IAAKlD,EAAUmD,UAAUpc,WAEpC+b,kBAAmB,WACf,IAAI/a,EAAQpC,KAAKqC,OAAO,SACpBob,EAASP,OAAO9a,GAChBsb,EAAiB3K,MAAM0K,GAAU,GAAKzd,KAAK2d,4BAA4Bvb,GAC3EpC,KAAK4X,mBAAmB8F,IAE5BC,4BAA6B,SAASvb,GAClC,OAAOpC,KAAKqC,OAAO,wBAAZrC,CAAqCoC,IAEhDwb,aAAc,WACV5d,KAAKkK,WACLlK,KAAKkN,SAAS2Q,KAAK,CACfxJ,IAAKrU,KAAKqC,OAAO,OACjBgR,IAAKrT,KAAKqC,OAAO,OACjB8K,KAAMnN,KAAKqC,OAAO,UAEtBrC,KAAKqc,QAAQ,CACTyB,UAAU,EAAIjU,EAAQ0K,eAAevU,KAAKqC,OAAO,OAAQ,IACzD0b,UAAU,EAAIlU,EAAQ0K,eAAevU,KAAKqC,OAAO,OAAQ,OAGjE2b,+BAAgC,WAC5B,IAAI3H,EAASrW,KAAKkN,SACblN,KAAKqC,OAAO,wBAA0B4X,EAAanb,QAAQmf,qBAAuB5H,EAAO,IAC1F/M,EAAexK,QAAQmO,QAAQoJ,EAAQ,UAG/CsE,qBAAsB,SAAS9O,GACtB7L,KAAKqC,OAAO,aACbrC,KAAKid,iBAAiB,EAAGpR,EAAEqS,OAASrS,IAG5CgP,uBAAwB,SAAShP,GACxB7L,KAAKqC,OAAO,aACbrC,KAAKid,kBAAkB,EAAGpR,EAAEqS,OAASrS,IAG7CoR,iBAAkB,SAASzL,EAAMuL,GAC7B,IAAI5P,EAAO3J,WAAWxD,KAAKqC,OAAO,SAClC,GAAI,IAAM8K,EAAV,CAGA,IAAI/K,EAAQoB,WAAWxD,KAAKme,yBAA2B,EACvD/b,EAAQpC,KAAKoe,iBAAiBhc,EAAO+K,EAAOqE,GAC5C,IAAI6C,EAAMrU,KAAKqC,OAAO,OAClBgR,EAAMrT,KAAKqC,OAAO,QAClB,EAAIlD,EAAMwT,WAAW0B,KACrBjS,EAAQsR,KAAKL,IAAIgB,EAAKjS,KAEtB,EAAIjD,EAAMwT,WAAWU,KACrBjR,EAAQsR,KAAKW,IAAIhB,EAAKjR,IAE1BpC,KAAKkY,sBAAsB6E,GAC3B/c,KAAKqC,OAAO,QAASD,KAEzBgc,iBAAkB,SAAShc,EAAO+K,GAC9B,IAAIkR,EAAQ,WACRC,EAAeD,EAAM1H,KAAKvU,GAC1Bmc,EAAcF,EAAM1H,KAAKxJ,GAC7B,GAAImR,GAAgBC,EAAa,CAC7B,IAAIC,EAAgBF,EAAeD,EAAM/L,KAAKlQ,GAAO,GAAGiB,OAAS,EAC7Dob,EAAeF,EAAcF,EAAM/L,KAAKnF,GAAM,GAAG9J,OAAS,EAC1Dqb,EAAWpE,EAAKjH,IAAImL,EAAeC,GAEvC,OADArc,EAAQpC,KAAK2e,OAAOvc,EAAQ+K,EAAMuR,GAGtC,OAAOtc,EAAQ+K,GAEnBwR,OAAQ,SAASvc,EAAO8R,GACpBA,EAAYA,GAAa,EACzB,IAAI0K,EAAalL,KAAKmL,IAAI,GAAI3K,GAG9B,OAFA9R,GAASwc,EACTxc,EAAQsR,KAAKoL,MAAM1c,GAASwc,GAGhCG,wBAAyB,WACrB/e,KAAKkK,WACL,IAAI8U,GAAwB,EAAI5f,EAAO4E,cAAc,WAvMrB,6BAwMhCsF,EAAexK,QAAQmX,IAAIjW,KAAKif,UAAWD,GAC3C1V,EAAexK,QAAQwX,GAAGtW,KAAKif,UAAWD,EAAuBhf,KAAKyW,wBAAwB/V,KAAKV,QAEvGyW,wBAAyB,WACrB,GAAI,WAAazW,KAAKqC,OAAO,QAA7B,CAGA,IAAIgU,EAASrW,KAAKkN,SACdwQ,EAAiB1d,KAAK2d,4BAA4B3d,KAAKqC,OAAO,UAClEgU,EAAO9H,IAAI,MACX8H,EAAO9H,IAAImP,KAEfzF,yBAA0B,SAASpM,GAC/B,IAAIwK,EAASrW,KAAKkN,SACdR,EAAa1M,KAAKkf,iBAClB9c,EAAQpC,KAAK4W,YAAYlK,GACzByS,EAAiB,MAAQzS,GAAc,MAAQA,GAC/C1M,KAAKof,iBAAoBpf,KAAKoc,eAAeha,IAI7C+c,GACAnf,KAAKkK,SAAS2B,EAAGkH,MAAM3Q,GAAS,KAAOA,GAE3CpC,KAAKqf,sBAAsB3S,EAAYtK,GACvCpC,KAAKsf,kBAAkBC,KAAK,CACxBnd,MAAOA,EACPod,OAAQxf,QATRqW,EAAO9H,IAAIvO,KAAK2d,4BAA4Bvb,KAYpDid,sBAAuB,SAAS3S,EAAYoG,GACxC,IAAI2M,EAAoBzf,KAAKyT,mBAAmB/G,GAC5CgT,EAAiB1f,KAAK2P,gBAAgBjD,GACrC+S,GAAsBC,GAAkB,OAAS5M,GAC9CoK,OAAOxQ,KAAgBoG,GACvB9S,KAAKkN,SAASqB,IAAIvO,KAAK2d,4BAA4B7K,KAI/D6M,uBAAwB,SAASvd,GAC7B,OAAOA,EAAM4N,QAAQ,IAAK,MAE9B4P,gBAAiB,WACb,IAAIC,EAAe,WAAa7f,KAAKqC,OAAO,QACxCyd,EAAgB9f,KAAKkN,SAAS6S,IAAI,GAAGC,SACzC,OAAOH,GAAgBC,GAAiBA,EAAcG,UAE1DrI,mBAAoB,SAASjV,GACrB3C,KAAK4f,mBAGT5f,KAAKkK,SAASvH,IAElB8Q,mBAAoB,SAASrR,GAEzB,MADsB,+BACCuU,KAAKvU,IAEhCuN,gBAAiB,SAASvN,GACtB,OAAO,EAAIqH,EAAM2K,SAAShS,EAAOpC,KAAKqC,OAAO,OAAQrC,KAAKqC,OAAO,SAErE6d,UAAW,SAAS9d,GAChB,OAAO,OAASpC,KAAK4W,YAAYxU,IAErCga,eAAgB,SAASha,GACrB,IAAIsK,EAAa1M,KAAKkf,iBAClBiB,EAAengB,KAAKof,gBACpBgB,GAAU,EACVC,EAAWrgB,KAAKkgB,UAAUxT,GAkB9B,OAjBIqG,MAAMmK,OAAO9a,MACbge,GAAU,IAEThe,GAAS+d,EACVC,GAAU,EAELC,GAAaF,IACdC,GAAU,GAGlBpgB,KAAKqC,OAAO,CACR+d,QAASA,EACTE,gBAAiBF,EAAU,KAAO,CAC9BG,gBAAgB,EAChBC,QAASxgB,KAAKqC,OAAO,0BAGtB+d,GAEXjC,qBAAsB,WAClB,OAAOne,KAAK4W,YAAY5W,KAAKkf,mBAEjCA,eAAgB,WACZ,IAAI9c,EAAQpC,KAAKkN,SAASqB,MAAMpL,OAChC,OAAOnD,KAAK2f,uBAAuBvd,IAEvCwU,YAAa,SAASxU,GAClB,IAAIqb,EAASja,WAAWpB,GACxB,OAAI2Q,MAAM0K,GACC,MAEJ,EAAIhU,EAAMuO,cAAcyF,EAAQzd,KAAKqC,OAAO,OAAQrC,KAAKqC,OAAO,SAE3Eoe,YAAa,WACLzgB,KAAK4f,oBACL5f,KAAKkN,SAASqB,IAAI,IAClBvO,KAAKoc,kBAETpc,KAAKkK,YAETwW,MAAO,WACC,OAAS1gB,KAAKqC,OAAO,UACrBrC,KAAKqC,OAAO,OAAQ,IACpBrC,KAAK+X,gBAEL/X,KAAKqC,OAAO,QAAS,OAG7B8V,eAAgB,SAASC,GACrB,OAAQA,EAAKjW,MACT,IAAK,QACDnC,KAAKoc,eAAehE,EAAKhW,OACzBpC,KAAKyc,gBAAgBrE,EAAKhW,OAC1BpC,KAAKkK,SAASkO,GACdpY,KAAK2gB,2BACL,MACJ,IAAK,OACD3gB,KAAK4d,eACL,MACJ,IAAK,MACL,IAAK,MACD5d,KAAK4d,eACL5d,KAAKqC,OAAO,QAASrC,KAAK4W,YAAY5W,KAAKqC,OAAO,WAClD,MACJ,IAAK,kBACL,IAAK,sBACDrC,KAAKud,eAAe,CAAC,UACrB,MACJ,IAAK,sBACD,MACJ,QACIvd,KAAKkK,SAASkO,OAK9BvZ,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,S,kCClXzBD,EAAQC,aAAU,EAClB,IAAIkb,EAAYhb,EAAuB,EAAQ,IAC3CsK,EAAiBtK,EAAuB,EAAQ,KAChD4hB,EAAU5hB,EAAuB,EAAQ,MACzCqK,EAAcrK,EAAuB,EAAQ,OAC7CI,EAAS,EAAQ,IACjByhB,EAAW7hB,EAAuB,EAAQ,KAC1C6F,EAAU,EAAQ,GAEtB,SAAS7F,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAUnB,SAASyhB,EAAgBC,EAAGC,GAKxB,OAJAF,EAAkBG,OAAOC,gBAAkB,SAASH,EAAGC,GAEnD,OADAD,EAAEI,UAAYH,EACPD,IAEYA,EAAGC,GAE9B,IAGII,EAAc,SAASC,GAhB3B,IAAwBC,EAAUC,EAmB9B,SAASH,IACL,OAAOC,EAAkBxJ,MAAM7X,KAAM8X,YAAc9X,KApBzBuhB,EAiBFF,GAjBRC,EAiBLF,GAhBNI,UAAYP,OAAOQ,OAAOF,EAAWC,WAC9CF,EAASE,UAAUE,YAAcJ,EACjCR,EAAgBQ,EAAUC,GAmB1B,IAAII,EAASP,EAAYI,UA8EzB,OA7EAG,EAAOC,cAAgB,SAASra,EAAUsa,GACtC,IAAIrC,EAASxf,KAAKwf,OACdsC,GAAY,EAAI1iB,EAAO4E,cAAc6c,EAAS/hB,QAAQijB,KAAMvC,EAAOvb,MACnE+d,EAAyBH,EAAeI,WACxCC,EAAoB1C,EAAO2C,eAAc,SAAStW,GAClD,OAAO2T,EAAOxB,+BAA+BnS,MAEjDvC,EAAexK,QAAQmX,IAAI4L,EAAgBC,GAC3CxY,EAAexK,QAAQwX,GAAGuL,EAAgBC,GAAW,SAASjW,GAC1D,OAAOqW,EAAkB,CACrBhE,MAAOrS,OAGfxC,EAAYvK,QAAQsjB,YAAYJ,EAAuBK,GAAG,IAAIhgB,OAAO,YAAY,SAASwJ,GACtF,OAAO2T,EAAO7E,qBAAqB9O,MAEvCxC,EAAYvK,QAAQsjB,YAAYJ,EAAuBK,GAAG,IAAIhgB,OAAO,YAAY,SAASwJ,GACtF,OAAO2T,EAAO3E,uBAAuBhP,OAG7C8V,EAAOW,QAAU,WACb,IAAI9C,EAASxf,KAAKwf,OACdqC,GAAiB,EAAI7H,EAAUlb,SAAS,SAASid,SA/BlC,+BAgCfwG,GAAU,EAAIvI,EAAUlb,SAAS,SAAS0d,SAASqF,GACnDW,GAAY,EAAIxI,EAAUlb,SAAS,SAAS0d,SAASqF,GACrD9b,EAAU/F,KAAKyiB,cASnB,OARAziB,KAAK0iB,gBAAgBb,GACrBrC,EAAOmD,iBAAiBJ,EAASlZ,EAAYvK,SAAS,EAAI+F,EAAQ0B,QAAQ,CACtEmH,UAAW,MACZ3H,IACHyZ,EAAOmD,iBAAiBH,EAAWnZ,EAAYvK,SAAS,EAAI+F,EAAQ0B,QAAQ,CACxEmH,UAAW,QACZ3H,IACH/F,KAAK4iB,cAAcpD,EAAO/W,WAAYzI,KAAK6iB,mBAAoB9c,EAAQnD,SAChE,CACH2E,SAAUsa,EACVpZ,SAAUoZ,IAGlBF,EAAOc,YAAc,WACjB,IAAIjD,EAASxf,KAAKwf,OAGlB,MAAO,CACH5c,QAHU5C,KAAK8iB,aAIfC,SAHWvD,EAAOnd,OAAO,cAMjCsf,EAAOmB,WAAa,WAChB,IAAItD,EAASxf,KAAKwf,OAClB,OAAO6B,EAAkBG,UAAUsB,WAAWE,KAAKhjB,OAASwf,EAAOnd,OAAO,oBAE9Esf,EAAOkB,iBAAmB,WACtB,IAAIrD,EAASxf,KAAKwf,OAClB,OAAOA,EAAOnd,OAAO,oBAAsBmd,EAAOnd,OAAO,wBAE7Dsf,EAAOiB,cAAgB,SAASK,EAASC,EAAiBC,GACtDF,EAAQG,YAjEgB,mCAiEuBF,GAC/CD,EAAQG,YApEC,oBAoEuBD,IAEpCxB,EAAO0B,OAAS,WAEZ,GADmBhC,EAAkBG,UAAU6B,OAAOL,KAAKhjB,MACzC,CACd,IAAIwf,EAASxf,KAAKwf,OACdjY,EAAWvH,KAAKuH,SAChB0b,EAAUzD,EAAO/W,WACjB0a,EAAYnjB,KAAK8iB,aACjBI,EAAkBljB,KAAK6iB,mBACvBS,EAAe/b,EAAS0a,WACxBsB,EAASla,EAAYvK,QAAQsjB,YAAYkB,EAAajB,GAAG,IACzDmB,EAAWna,EAAYvK,QAAQsjB,YAAYkB,EAAajB,GAAG,IAC3Dtc,EAAU/F,KAAKyiB,cACnBc,EAAOlhB,OAAO0D,GACdyd,EAASnhB,OAAO0D,GAChB/F,KAAK4iB,cAAcK,EAASC,EAAiBC,KAG9C/B,EApFO,CAqFhBR,EAAQ9hB,SACVD,EAAQC,QAAUsiB,EAClBxc,EAAO/F,QAAUA,EAAQC,S,kCCtHzBD,EAAQC,aAAU,EAClB,IAAIkb,EAAYhb,EAAuB,EAAQ,IAC3Cib,EAAejb,EAAuB,EAAQ,KAC9CsK,EAAiBtK,EAAuB,EAAQ,KAChDmb,EAAMnb,EAAuB,EAAQ,KACrC6F,EAAU,EAAQ,GAClBzF,EAAS,EAAQ,IACjByhB,EAAW7hB,EAAuB,EAAQ,KAC1CykB,EAAW,EAAQ,KACnBC,EAAQ1kB,EAAuB,EAAQ,MACvCqb,EAAY,EAAQ,IAExB,SAASrb,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAIIskB,GAAuB,EAAIvkB,EAAO4E,cAAc6c,EAAS/hB,QAAQ8kB,GADpD,eAEbC,GAA2B,EAAIzkB,EAAO4E,cAAc6c,EAAS/hB,QAAQglB,OAFxD,eAyEbtkB,EAtEa2a,EAAIrb,QAAQW,QAAQ,CACjCwK,mBAAoB,WAChB,OAAO,EAAIpF,EAAQ0B,QAAQvG,KAAKkK,WAAY,CACxCwD,UAAW,KACXqW,SAAU,KACVC,oBAAoB,EACpBC,mBAAmB,KAG3BpI,YAAa,WACT7b,KAAKkK,WACL,IAAIwD,EAAYwW,qBAAmBlkB,KAAKqC,OAAO,aAC/CrC,KAAKyI,WAAWsT,SAjBA,4BAiB4BA,SAASrO,GACrD1N,KAAKmkB,WAAY,EAAInK,EAAUlb,SAAS,SAASid,SAASrO,EAAY,SAAS8O,SAASxc,KAAKyI,aAEjG2b,QAAS,WACLpkB,KAAKkK,WACL,IAAI4X,GAAY,EAAI1iB,EAAO4E,cAAc6c,EAAS/hB,QAAQijB,KAAM/hB,KAAKiE,MACjEwE,EAAWzI,KAAKyI,WACpBa,EAAexK,QAAQmX,IAAIxN,EAAUqZ,GACrCxY,EAAexK,QAAQwX,GAAG7N,EAAUqZ,EAAW9hB,KAAKqkB,iBAAiB3jB,KAAKV,OAC1EA,KAAKskB,mBAAqBtkB,KAAKsE,sBAAsB,aAEzD+f,iBAAkB,SAASxY,GACvBA,EAAE0B,iBACFvN,KAAKukB,cACLjb,EAAexK,QAAQwX,GAAGtW,KAAKyI,WAAYib,EAAM5kB,QAAQqD,KAAM,WAC3DnC,KAAKwkB,kBAAoB,IAAInK,EAAUmD,UACvC,EAAIiG,EAASgB,MAAMzkB,KAAKwkB,mBACxBxkB,KAAKskB,mBAAmB,CACpBpG,MAAOrS,IAEX7L,KAAK0kB,WAAaC,YAAY3kB,KAAKskB,mBApCzB,IAoC8D,CACpEpG,MAAOrS,KAEbnL,KAAKV,OACP,IAAI4kB,EAAW3K,EAAanb,QAAQ+lB,cACpCvb,EAAexK,QAAQwX,GAAGsO,EAAUjB,EAAsB3jB,KAAKukB,YAAY7jB,KAAKV,OAChFsJ,EAAexK,QAAQwX,GAAGsO,EAAUf,EAA0B7jB,KAAKukB,YAAY7jB,KAAKV,OACpFA,KAAKskB,mBAAmB,CACpBpG,MAAOrS,KAGfiZ,SAAU,WACN9kB,KAAKukB,cACLvkB,KAAKkK,YAETqa,YAAa,WACTjb,EAAexK,QAAQmX,IAAIjW,KAAKyI,WAAYib,EAAM5kB,QAAQqD,MAC1D,IAAIyiB,EAAW3K,EAAanb,QAAQ+lB,cACpCvb,EAAexK,QAAQmX,IAAI2O,EAAUjB,GACrCra,EAAexK,QAAQmX,IAAI2O,EAAUf,GACjC7jB,KAAKwkB,mBACLxkB,KAAKwkB,kBAAkBpjB,UAEvBpB,KAAK0kB,YACLK,cAAc/kB,KAAK0kB,aAG3BvM,eAAgB,SAASC,GACrB,OAAQA,EAAKjW,MACT,IAAK,WACL,IAAK,YACDnC,KAAKglB,cACL,MACJ,QACIhlB,KAAKkK,SAASkO,OAK9BvZ,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,S,kCC/FzBD,EAAQC,aAAU,EAClB,IAAImmB,EAAUjmB,EAAuB,EAAQ,MACzCmb,EAAMnb,EAAuB,EAAQ,MAEzC,SAASA,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IA6BIG,EA7BaylB,EAAQnmB,QAAQW,QAAQ0a,EAAIrb,SAASW,QAAQ,CAC1DylB,iBAAkB,SAASC,GACvB,MAAO,WAAaA,GAExBC,mBAAoB,WAChB,IAAIC,EACAC,EACAC,EAAavlB,KAAKwlB,YAQtB,OAPID,IACAD,EAAmB,CACfD,OAAQE,EAAWF,UAEvBE,EAAWE,iBAAiBH,GAC5BD,EAASC,EAAiBD,QAEvBA,GAEXK,gBAAiB,WACb,IAAItjB,EAAQpC,KAAKqC,OAAO,eACpBsjB,EAAO3lB,KAAKqC,OAAO,cACnB2Y,EAAOhb,KAAKqC,OAAO,cACvBrC,KAAKkK,WACDlK,KAAKwlB,cACLpjB,GAASA,EAAMiB,QAAUrD,KAAKwlB,YAAYI,YAAYxjB,GACtD4Y,EAAK3X,QAAUrD,KAAKwlB,YAAYK,gBAAgB1L,EAAIrb,QAAQgnB,yBAAyB9K,IACrF2K,GAAQ3lB,KAAKwlB,YAAYO,WAAWJ,OAKhD9mB,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,S,kCCxCzBD,EAAQC,aAAU,EAClB,IAAIkb,EAAYhb,EAAuB,EAAQ,IAC3CG,EAAQ,EAAQ,GAChBD,EAAY,EAAQ,GACpB8mB,EAAgBhnB,EAAuB,EAAQ,MAC/CinB,EAASjnB,EAAuB,EAAQ,MACxCknB,EAAmClnB,EAAuB,EAAQ,MAEtE,SAASA,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAII8mB,EAAe,SAASC,GACxB,OAAQA,EAAQC,OAHE,IAG0BD,EAAQljB,MAEpDojB,EAAa,SAASC,GACtB,MAAO,CACHF,MAAOE,GAPO,GAQdrjB,KAPa,KAOPqjB,IA4LV/mB,EAzLsB0mB,EAAiCpnB,QAAQW,QAAQ,CACvE+mB,eAAgB,WACZ,OAAOxmB,KAAKymB,kBAAkBC,iBAAiBC,KAAK,mBAExDC,mBAAoB,SAASC,GACzB,OAAOA,EAAOF,KAAK,kBAEvBG,mBAAoB,SAASC,GACzB,IAAIC,EAAShnB,KAAKymB,kBAAkBpkB,OAAO,SACvCoO,GAAQ,EACZ,QAAKsW,IAGDA,EAASE,OAASF,EAASE,MAAM5jB,SACjC0jB,EAAWA,EAASE,MAAM,KAC7B,EAAI/nB,EAAUyH,MAAMqgB,GAAQ,SAASE,EAAYb,GAC9C,QAAKA,EAAMY,SAEV,EAAI/nB,EAAUyH,MAAM0f,EAAMY,OAAO,SAASE,EAAWjkB,GAClD,OAAIA,IAAS6jB,IAGbtW,EAAQ,CACJ4V,MAAOa,EACPhkB,KAAMikB,IAEH,OAEP1W,QAAJ,MAIGA,IAEX2W,mBAAoB,SAAS3W,GACzB,IAAIwW,EAAQjnB,KAAKymB,kBAAkBpkB,OAAO,SAC1C,OAAI,EAAIlD,EAAM0E,WAAW4M,GACdzQ,KAAKqnB,cAAc5W,GAEvBA,GAASwW,EAAMxW,EAAM4V,QAAUY,EAAMxW,EAAM4V,OAAOY,MAAMxW,EAAMvN,OAAS,MAElFmkB,YAAa,WAGT,IAFA,IAAIC,EAAc,GACdL,EAAQjnB,KAAKymB,kBAAkBpkB,OAAO,SACjCklB,EAAI,EAAGA,EAAIN,EAAM5jB,OAAQkkB,IAC1BN,EAAMM,IAAMN,EAAMM,GAAGN,MACrBK,EAAcA,EAAYjM,OAAO4L,EAAMM,GAAGN,OAE1CK,EAAYhhB,KAAK2gB,EAAMM,IAG/B,OAAOD,GAEXE,kBAAmB,SAAS/W,GACxB,IAAI2V,EAAUE,EAAW7V,GACTzQ,KAAKymB,kBAAkBpkB,OAAO,SAAS+jB,EAAQC,OAAOY,MAC5D/f,OAAOkf,EAAQljB,KAAM,IAEnCukB,eAAgB,SAASR,GACrB,IACIM,EADAG,EAAa,GAEjB,IAAKH,EAAI,EAAGA,EAAIN,EAAM5jB,OAAQkkB,IACtBN,EAAMM,IAAMN,EAAMM,GAAGN,MACrBS,EAAaA,EAAWrM,OAAO4L,EAAMM,GAAGN,OAExCS,EAAWphB,KAAK2gB,EAAMM,IAG9B,IAAIxV,EAAS,GACb,IAAKwV,EAAI,EAAGA,EAAIG,EAAWrkB,OAAQkkB,IAC/BxV,EAAOzL,KAAKtG,KAAKymB,kBAAkBkB,MAAMD,EAAWH,KAExD,OAAOxV,GAEX6V,cAAe,SAASnlB,EAAKwkB,GACzB,IAAID,EAASC,GAASjnB,KAAKymB,kBAAkBpkB,OAAO,SAChDoO,GAAS,EACT/J,EAAO1G,KAmBX,OAlBA,EAAId,EAAUyH,MAAMqgB,GAAQ,SAASE,EAAYb,GAC7C,GAAKA,EAAMY,MAAX,CAGA,IAAIY,EAAOnhB,EAAK+gB,eAAepB,EAAMY,OAUrC,OATA,EAAI/nB,EAAUyH,MAAMkhB,GAAM,SAASC,EAAUC,GACzC,GAAIrhB,EAAKshB,WAAWD,EAAStlB,GAKzB,OAJAgO,EAAQ,CACJ4V,MAAOa,EACPhkB,KAAM4kB,IAEH,MAGA,IAAXrX,QAAJ,MAIGA,GAEXwX,WAAY,SAAShB,GACjB,IAAI1B,EAAavlB,KAAKymB,kBAAkByB,gBACpC7B,EAAQd,GAAcA,EAAWc,QACrC,OAAIA,EACOL,EAAclnB,QAAQqpB,gBAAe,EAAIlC,EAAOnnB,SAASmoB,GAAQ,CACpEZ,MAAOA,IACR+B,UAEApoB,KAAKymB,kBAAkBpkB,OAAO,UAEzCgmB,eAAgB,SAASR,EAAMZ,GAC3B,IAAIlV,EAAS,GAmCb,OAlCA,EAAI7S,EAAUyH,MAAMkhB,EAAM,SAASjhB,EAAGnE,GAClC,IAWI6lB,EAXc,SAAStB,GACvB,IAAIvW,EAAQzQ,KAAK4nB,cAAcnlB,EAAKukB,GAChCX,EAAQ5V,GAASuW,EAAOvW,EAAM4V,OAClC,GAAKA,EAGL,MAAO,CACHkC,SAAUlC,EAAM5jB,IAChBS,KAAMmjB,EAAMY,MAAMxW,EAAMvN,QAE9BxC,KAAKV,KACQwoB,CAAYxoB,KAAKioB,WAAWhB,IAC3C,GAAKqB,EAAL,CAGA,IAEIG,EAFAF,EAAWD,EAASC,SACpBrlB,EAAOolB,EAASplB,MAEpB,EAAIhE,EAAUyH,MAAMoL,GAAQ,SAASnL,EAAG1D,GACpC,GAAIA,EAAKT,MAAQ8lB,EAEb,OADAE,EAAgBvlB,GACT,KAGVulB,IACDA,EAAgB,CACZhmB,IAAK8lB,EACLtB,MAAO,IAEXlV,EAAOzL,KAAKmiB,IAEhBA,EAAcxB,MAAM3gB,KAAKpD,KAC3BxC,KAAKV,OACA+R,GAEX2W,uBAAwB,SAASC,EAAaC,GAC1C,IAAI3B,EAAQjnB,KAAKymB,kBAAkBpkB,OAAO,SACtCwmB,EAAgBvC,EAAWqC,GAC3BG,EAAqBxC,EAAWsC,GAChCG,EAAkB9B,EAAM4B,EAAcxC,OAAOY,MAC7C+B,EAAuB/B,EAAM6B,EAAmBzC,OAAOY,MACvDgC,EAAgBF,EAAgBF,EAAc3lB,MAClD6lB,EAAgB7hB,OAAO2hB,EAAc3lB,KAAM,GAC3C8lB,EAAqB9hB,OAAO4hB,EAAmB5lB,KAAM,EAAG+lB,IAE5DC,aAAc,SAASzY,GACnB,OAAOA,IAAS,EAAItR,EAAM0E,WAAW4M,EAAM4V,SAAU,EAAIlnB,EAAM0E,WAAW4M,EAAMvN,OAEpFimB,wBAAyB,SAASC,GAC9B,IAAIC,GAAQ,EAAIrP,EAAUlb,SAASsqB,GAC/BvC,EAASwC,EAAMC,QAAQ,kBAC3B,OAAKzC,EAAOxjB,OAGL8iB,EAAa,CAChBE,MAAOrmB,KAAKwmB,iBAAiB/V,MAAMoW,GACnC3jB,KAAMlD,KAAK4mB,mBAAmBC,GAAQpW,MAAM4Y,MAJpC,GAOhBE,oBAAqB,SAAS9Y,GAC1B,OAAO0V,EAAa1V,IAExB+Y,sBAAuB,SAAS/Y,GAC5B,OAAO6V,EAAW7V,IAEtBgZ,0BAA2B,SAAShZ,GAChC,IAAI2V,EAAUE,EAAW7V,GACrBoW,EAAS7mB,KAAKwmB,iBAAiBnE,GAAG+D,EAAQC,OAC9C,OAAOrmB,KAAK4mB,mBAAmBC,GAAQxE,GAAG+D,EAAQljB,OAEtDwmB,qBAAsB,SAASC,EAAYC,GACvC,OAAOtD,EAAWqD,GAAYtD,QAAUC,EAAWsD,GAAavD,SAIxExnB,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,S,kCCrNzBD,EAAQC,aAAU,EAClB,IAAIkb,EAAYhb,EAAuB,EAAQ,IAC3C6K,EAAU,EAAQ,GAClB5K,EAASD,EAAuB,EAAQ,KACxC6F,EAAU,EAAQ,GAClB3F,EAAY,EAAQ,GACpBib,EAAMnb,EAAuB,EAAQ,KACrC6qB,EAAc,EAAQ,KAS1B,SAAS7qB,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAVnB,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MAOR,IAAIyqB,EAAsB,GACtBC,EAAiB,SAASC,EAAaC,EAAmBC,GAC1DJ,EAAoBxjB,KAAK,CACrB6jB,QAASH,EACTI,cAAeH,EACfI,iBAAkBH,KAG1BH,GAAe,WACX,OAAO/pB,KAAKqC,OAAO,aAAagB,UACjC,WACC,MAAO,UACR,WACC,OAAOrD,KAAKqC,OAAO,eAEvB0nB,GAAe,WACX,OAAQ/pB,KAAKqC,OAAO,aAAagB,QAAUrD,KAAKqC,OAAO,wBACxD,WACC,IAAI2Y,EAAOhb,KAAKqC,OAAO,kBACvB,MAAO,WAAa2Y,GAAQ,gBAAkBA,GAAQ,UAAYA,GAAQ,WAAaA,EAAO,SAAW,UAC1G,WACC,IAAIA,EAAOhb,KAAKqC,OAAO,kBAOvB,MANI,cAAgB2Y,IAChBA,EAAO,SAEP,SAAWA,IACXA,EAAO,WAEJA,KAEX+O,GAAe,WACX,MAAO,SAAW/pB,KAAKqC,OAAO,kBAAoBrC,KAAKqC,OAAO,4BAC/D,WACC,MAAO,eACR,WACC,MAAO,aAEX0nB,GAAe,WACX,OAAO/pB,KAAKqC,OAAO,iCAAmCrC,KAAKqC,OAAO,qCAAuCrC,KAAKqC,OAAO,yBACtH,WACC,MAAO,aACR,WACC,MAAO,aAEX,IAiII7C,EA1HeP,EAAOH,QAAQW,QAAQ,CACtCI,KAAM,SAASyqB,GACXtqB,KAAKuqB,MAAQD,EACbtqB,KAAKwqB,4BAETC,QAAS,WACDzqB,KAAK0qB,aAAe1qB,KAAK0qB,YAAYrnB,SACrC,EAAInE,EAAUyH,MAAM3G,KAAK0qB,aAAa,SAAS9jB,EAAG+jB,GAC9CA,EAAUF,cAItBD,yBAA0B,WACtBxqB,KAAK0qB,YAAc,IACnB,EAAIxrB,EAAUyH,MAAMmjB,EAAqB,SAASljB,EAAGvE,GAEjD,GADoBA,EAAO8nB,QAAQnH,KAAKhjB,KAAKuqB,OAC1B,CACf,IAAIH,EAAgB/nB,EAAO+nB,cAAcpH,KAAKhjB,KAAKuqB,OAC/CF,EAAmBhoB,EAAOgoB,iBAAiBrH,KAAKhjB,KAAKuqB,OACrDI,EAAY3qB,KAAK4qB,iBAAiBR,EAAeC,GACrDrqB,KAAK0qB,YAAYpkB,KAAKqkB,KAE5BjqB,KAAKV,QAEX4qB,iBAAkB,SAAS5hB,EAAM6hB,GAE7B,OAAO,IADc7qB,KAAK8qB,eAAe9hB,EAAM6hB,GACxC,CAAmB7qB,KAAKuqB,QAEnCO,eAAgB,SAAS9hB,EAAM6hB,GAC3B,IAAIE,EAAiBlB,EAAYmB,SAAShiB,GAAM6hB,GAChD,IAAKE,EACD,MAAM5Q,EAAIrb,QAAQmsB,MAAM,QAASjiB,EAAM6hB,GAE3C,OAAOE,GAEXG,kBAAmB,SAAS9S,GACxB,IAAI+S,GAAe,EAAInR,EAAUlb,SAASsZ,EAAKgR,aAC3CgC,EAAS,CACTD,aAAcA,GAElBnrB,KAAKqrB,mBAAmBF,EAAcC,GACtCprB,KAAKsrB,iBAAiBH,EAAcC,GACpCprB,KAAKurB,iBA7CyB,gBA6CyBH,IAE3DI,mBAAoB,WAChBxrB,KAAKurB,iBA/CuB,gBAiDhCF,mBAAoB,SAASF,EAAcC,GACvC,IAAIK,EAAczrB,KAAK0rB,yBArDU,YAqDmDN,EAvD3D,2BAwDzBD,EAAaQ,QAAQF,IAEzBH,iBAAkB,SAASH,EAAcC,GACrC,IAAIQ,EAAa5rB,KAAK0rB,yBAxDU,WAwDkDN,EA1D1D,0BA2DxBD,EAAaU,OAAOD,IAExBF,yBAA0B,SAASI,EAAQV,EAAQW,GAC/C,IAAIC,GAAa,EAAIhS,EAAUlb,SAAS,SAUxC,OATA,EAAII,EAAUyH,MAAM3G,KAAK0qB,aAAa,WAClC,IAAI3qB,GAAa,EAAIia,EAAUlb,SAAS,SAASid,SAASgQ,GAC1D/rB,KAAK8rB,IAAQ,EAAIjnB,EAAQ0B,QAAQ,CAC7BxG,WAAYA,GACbqrB,IACCrrB,EAAWkiB,WAAW5e,QACtB2oB,EAAWH,OAAO9rB,MAGnBisB,EAAW/J,YAEtBsJ,iBAAkB,SAASO,EAAQV,IAC/B,EAAIlsB,EAAUyH,MAAM3G,KAAK0qB,aAAa,WAClC1qB,KAAK8rB,GAAQV,OAGrBa,eAAgB,SAAS9pB,GACrB,IAAKnC,KAAK0qB,YACN,OAAO,EAIX,IAFA,IAAIwB,EAAalsB,KAAK0qB,YAClBrnB,EAAS6oB,EAAW7oB,OACfkkB,EAAI,EAAGA,EAAIlkB,EAAQkkB,IACxB,GAAI2E,EAAW3E,GAAGplB,KAAU0H,EAAQsiB,KAChC,OAAO,EAGf,OAAO,GAEXC,cAAe,SAASjqB,EAAMgpB,EAActf,GACxC,IAAK7L,KAAK0qB,YACN,OAAO,EAKX,IAHA,IAAI2B,GAAW,EACXH,EAAalsB,KAAK0qB,YAClBrnB,EAAS6oB,EAAW7oB,OACfkkB,EAAI,EAAGA,EAAIlkB,KAChBgpB,EAAWH,EAAW3E,GAAGplB,GAAMgpB,EAActf,IADrB0b,KAM5B,OAAO8E,GAEXC,YAAa,SAASnB,EAActf,GAChC,OAAO7L,KAAKosB,cAAc,cAAejB,EAActf,IAE3D0gB,qBAAsB,SAASC,EAAqBC,GAChD,OAAOzsB,KAAKosB,cAAc,uBAAwBI,EAAqBC,IAE3EC,oBAAqB,SAAS7gB,GAC1B,OAAO7L,KAAKosB,cAAc,sBAAuBvgB,IAErD8gB,yBAA0B,WACtB,OAAO3sB,KAAKisB,eAAe,sBAE/BW,kBAAmB,SAASzB,EAActf,GACtC,OAAO7L,KAAKosB,cAAc,oBAAqBjB,EAActf,IAEjEghB,yBAA0B,WACtB,IAAIC,EAAoB,GAExB,OADA9sB,KAAKurB,iBAvHiC,uBAuHyBuB,GACxDA,EAAkBtU,KAAK,QAItC3Z,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,S,kCCpMzB,IAAIkb,EAAYhb,EAAuB,EAAQ,IAC3C4hB,EAAU5hB,EAAuB,EAAQ,KACzC6qB,EAAc,EAAQ,KACtBkD,EAAe/tB,EAAuB,EAAQ,MAElD,SAASA,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,IAKnB,EAAIwqB,EAAYmD,UAAU,SAAU,SAAUD,EAAajuB,QAAQW,QAAQ,CACvEwtB,SAAU,SAAS7B,GACf,IAAID,EAAeC,EAAOD,aACtBprB,EAAaqrB,EAAOrrB,WACpBmtB,GAAU,EAAIlT,EAAUlb,SAAS,SAASid,SALrB,gCAMzB/b,KAAKuqB,MAAM5H,iBAAiBuK,EAAStM,EAAQ9hB,QAAS,CAClDquB,KAAM,SACNC,QAAS,SAAShV,GACdA,EAAK8F,MAAMxD,kBACX1a,KAAKqtB,YAAYlC,IACnBzqB,KAAKV,MACPstB,mBAAoB,KAExBvtB,EAAWgc,SAfwB,0CAeuB8P,OAAOqB,IAErEG,YAAa,SAASlC,GACdA,EAAaoC,GAAG,6CAGpBvtB,KAAKuqB,MAAMiD,WAAWrC,Q,kCC/B9BtsB,EAAQC,aAAU,EAClB,IAAIkb,EAAYhb,EAAuB,EAAQ,IAC3CsJ,EAAMtJ,EAAuB,EAAQ,KACrC4hB,EAAU5hB,EAAuB,EAAQ,KACzCob,EAAWpb,EAAuB,EAAQ,KAC1C6qB,EAAc,EAAQ,KACtB4D,EAAuBzuB,EAAuB,EAAQ,MAE1D,SAASA,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAKIquB,EAAgCD,EAAqB3uB,QAAQW,QAAQ,CACrE6F,MAAO,WACHtF,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WAC1B,IAAI6V,GAAmB,EAAI3T,EAAUlb,SAAS,SAASid,SARhB,8CASnC6R,GAAiB,EAAI5T,EAAUlb,SAAS,SAASid,SARhB,4CASjC8R,GAAsB,EAAI7T,EAAUlb,SAAS,SAASid,SARf,kDASvCmR,GAAU,EAAIlT,EAAUlb,SAAS,SAASid,SARjB,oCAS7B/b,KAAKuqB,MAAM5H,iBAAiBuK,EAAStM,EAAQ9hB,QAAS,CAClD6D,KAAMyX,EAAStb,QAAQsL,OAAO,8BAC9BpB,KAAM,SACNokB,QAAS,SAASvhB,GACd7L,KAAKqtB,cACLxhB,EAAEqS,MAAMxD,mBACVha,KAAKV,MACPstB,mBAAoB,KAExBK,EAAiB9B,OAAO+B,GACxBA,EAAe/B,OAAOgC,GACtBA,EAAoBhC,OAAOqB,GAC3BltB,KAAK8tB,kBAAoBH,GAE7BI,mBAAoB,SAAS5C,GACzBnrB,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WAC1BxP,EAAIxJ,QAAQqK,KAAKnJ,KAAK8tB,mBAAmB,GACzC9tB,KAAK8tB,kBAAkBtR,SAAS2O,IAEpC6C,oBAAqB,WACjBhuB,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WAC1B9X,KAAK8tB,kBAAkBG,UAE3BC,2BAA4B,WACxB,IAAIC,EAAMnuB,KAAKouB,gBACXC,EAAYruB,KAAKuqB,MAAM9hB,WAAW6lB,QAClCC,EAAcvuB,KAAKwuB,eACnBC,EAAYN,EAAME,GAAaE,EAC/BG,EAAUP,EAAME,EAAYE,EAAc,EAC9C,OAAOjmB,EAAIxJ,QAAQiK,QAAQ/I,KAAK8tB,kBAAmB,CAC/C9kB,KAAM,SACNH,SAvCsC,IAwCtC8lB,KAAM,CACFC,MAAOH,GAEXxlB,GAAI,CACA2lB,MAAOF,MAInBG,0BAA2B,WACvB,IAAIV,EAAMnuB,KAAKouB,gBACXC,EAAYruB,KAAKuqB,MAAM9hB,WAAW6lB,QAClCC,EAAcvuB,KAAKwuB,eACnBC,EAAYN,EAAME,EAAYE,EAAc,EAC5CG,EAAUP,EAAME,GAAaE,EACjC,OAAOjmB,EAAIxJ,QAAQiK,QAAQ/I,KAAK8tB,kBAAmB,CAC/C9kB,KAAM,SACNH,SAxDsC,IAyDtC8lB,KAAM,CACFC,MAAOH,GAEXxlB,GAAI,CACA2lB,MAAOF,MAInBF,aAAc,WAIV,OAHKxuB,KAAK8uB,wBACN9uB,KAAK8uB,sBAAwB9uB,KAAK8tB,kBAAkBiB,cAEjD/uB,KAAK8uB,uBAEhBrE,QAAS,WACDzqB,KAAK8tB,mBACL9tB,KAAK8tB,kBAAkBkB,SAE3BhvB,KAAKkK,SAAS2N,MAAM7X,KAAM8X,eAKlC,EAAI+R,EAAYmD,UAAU,SAAU,SAAUU,EAA8BjuB,QAAQ,CAChFwvB,UAAW,SAAS7D,GAChB,IAAID,EAAeC,EAAOD,aACtBprB,EAAaqrB,EAAOrrB,WACpBmvB,GAAU,EAAIlV,EAAUlb,SAAS,SAASid,SALrB,gCAMzB/b,KAAKuqB,MAAM5H,iBAAiBuM,EAAStO,EAAQ9hB,QAAS,CAClDquB,KAAM,gBACNC,QAAS,SAASvhB,GACdvD,EAAIxJ,QAAQqK,KAAKnJ,KAAK8tB,mBAAmB,GACzC9tB,KAAKmvB,mBAAmBhE,GACxBtf,EAAEqS,MAAMxD,mBACVha,KAAKV,MACPstB,mBAAoB,KAExBvtB,EAAWgc,SAhBwB,0CAiBnChc,EAAW8rB,OAAOqD,QAG1B,EAAIrF,EAAYmD,UAAU,SAAU,cAAeU,EAA8BjuB,QAAQ,CACrF2vB,oBAAoB,EACpBC,iBAAkB,SAASlE,EAAc/S,GAKrC,OAJI,IAAMA,EAAKkX,eACXhnB,EAAIxJ,QAAQqK,KAAKnJ,KAAK8tB,mBAAmB,GACzC9tB,KAAKmvB,mBAAmBhE,KAErB,MAGf,IAAI3rB,EAAWkuB,EACf7uB,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,S,kCC/HzB,IAAIkb,EAAYhb,EAAuB,EAAQ,IAC3CsK,EAAiBtK,EAAuB,EAAQ,KAChD6K,EAAU,EAAQ,GAClB0lB,EAAS,EAAQ,IACjBnV,EAAWpb,EAAuB,EAAQ,KAC1CqJ,EAAc,EAAQ,IACtBjJ,EAAS,EAAQ,IACjBqkB,EAAW,EAAQ,KACnBoG,EAAc7qB,EAAuB,EAAQ,MAC7C+tB,EAAe,EAAQ,KACvBU,EAAuBzuB,EAAuB,EAAQ,MACtDsJ,EAAMtJ,EAAuB,EAAQ,KACrCwwB,EAAU,EAAQ,IAClBC,EAAgBzwB,EAAuB,EAAQ,MAEnD,SAASA,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IACIqwB,GAAmB,EAAItwB,EAAO4E,cAAcurB,EAAOptB,KAD7B,uBAEtBwtB,GAAoB,EAAIvwB,EAAO4E,cAAcyf,EAASmM,OAFhC,wBAa1B,EAAI7C,EAAaC,UAAU,OAAQ,QAASS,EAAqB3uB,QAAQW,QAAQ,CAC7E2vB,oBAAoB,EACpB9pB,MAAO,WACHtF,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WAC1B9X,KAAK6vB,oBAAqB,EAAI7V,EAAUlb,SAAS,SAASid,SAXzB,wCAYjCzS,EAAexK,QAAQwX,GAAGtW,KAAK6vB,mBAAoBF,EAAmB9lB,EAAQsiB,MAC9EnsB,KAAK8vB,WAAY,EAAI9V,EAAUlb,SAAS,SAASid,SAZ1B,8BAY6DS,SAASxc,KAAK6vB,oBAClG7vB,KAAK+vB,cACL/vB,KAAKgwB,uBAETD,YAAa,WACT,GAAK/vB,KAAKiwB,eAAV,CAGA,IAAIC,EAAYlwB,KAAKmwB,aACrB,GAAI,IAAMD,EAAU7sB,OAAQ,CACxB,IAAI+sB,EAAWF,EAAU,GACzBlwB,KAAKqwB,kBAAkBD,EAASztB,KAAM,SAASkJ,GAC3CA,EAAE6O,kBACF1a,KAAKoE,YAAYgsB,IACnB1vB,KAAKV,WACJ,CACH,IAAIswB,GAAQ,EAAItW,EAAUlb,SAAS,SAASid,SAhCjC,sBAiCX/b,KAAKuwB,MAAQvwB,KAAKuqB,MAAM5H,iBAAiB2N,EAAOb,EAAc3wB,QAAS,CACnE0xB,WAAW,EACXvJ,MAAOiJ,EACPO,YAAa,SAASrY,GAClBpY,KAAKoE,YAAYgU,EAAK2O,WACxBrmB,KAAKV,MACPstB,mBAAoB,KAExBgD,EAAM9T,SAASxc,KAAKuqB,MAAM9hB,YAC1B,IAAIioB,EAAc1wB,KAAKqwB,kBAAkBjW,EAAStb,QAAQsL,OAAO,4BAA6B,SAASyB,GACnGA,EAAE6O,kBACF1a,KAAKuwB,MAAMI,QACbjwB,KAAKV,OACPA,KAAKuwB,MAAMluB,OAAO,SAAUquB,MAGpCL,kBAAmB,SAAS1tB,EAAMiuB,GAC9B,IAAIF,GAAc,EAAI1W,EAAUlb,SAAS,SAASid,SA7C5B,6BA6C8DA,SA5CzD,kCA4CgGpZ,KAAKA,GAGhI,OAFA3C,KAAK8vB,UAAUjE,OAAO6E,GACtBpnB,EAAexK,QAAQwX,GAAGoa,EAAahB,EAAkBkB,GAClDF,GAEXV,oBAAqB,WACjB,GAAKhwB,KAAK6wB,iBAAV,CAGA,IAAIC,GAAgB,EAAI9W,EAAUlb,SAAS,SAASid,SAtD9B,6BAsDgEA,SApDzD,oCAoDkGpZ,MAAK,EAAI6sB,EAAQuB,cAAgB,GAAK3W,EAAStb,QAAQsL,OAAO,+BAC7Ld,EAAexK,QAAQwX,GAAGwa,EAAepB,EAAkB,SAAS7jB,GAChEA,EAAE6O,kBACF1a,KAAKqtB,eACP3sB,KAAKV,OACPA,KAAK8vB,UAAUjE,OAAOiF,KAE1B1sB,YAAa,SAASgsB,GAClBpwB,KAAKgxB,iBAAgB,EAAIhX,EAAUlb,SAASkB,KAAKixB,aAAcb,EAASQ,QACxE5wB,KAAKkxB,0BAETC,cAAe,SAAS/F,GACpBprB,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WAC1B,IAAIqT,EAAeC,EAAOD,aAC1BA,EAAapP,SAxEU,8BAyEvB,IAAIqV,GAAoB,EAAIpX,EAAUlb,SAAS,SAASid,SAxEjC,8BAyEvBoP,EAAakG,UAAUD,IAE3BE,0BAA2B,WACvB,OAAOtxB,KAAK6vB,oBAEhBvD,YAAa,SAAS1lB,EAAGiF,GACrB,SAAI,EAAImO,EAAUlb,SAAS+M,EAAE0lB,QAAQjI,QAAQ,+BAAgCjmB,QAClErD,KAAKkK,SAAS2N,MAAM7X,KAAM8X,YAIzC0Z,mBAAoB,SAASrG,GACzBnrB,KAAK+tB,mBAAmB5C,GACxBnrB,KAAKyxB,eAAetG,GACpBnrB,KAAK0xB,cAAc1xB,KAAK2xB,cAAc,KAE1CC,oBAAqB,SAASzG,EAAc/S,GACxC,IACIyZ,EADM7xB,KAAKouB,iBACa,EAAI,EAC5B0D,EAAsB9xB,KAAK+xB,iBAAiB5G,GAEhD,GADsBnrB,KAAKgyB,uBAAuBC,UAAYjyB,KAAKkyB,qBAAqBD,SAChEH,KAAuB1Z,EAAK/C,OAASwc,EAAiB,GAA9E,CAIA,IAAIxc,EAASrV,KAAKmyB,iBAAmB/Z,EAAK/C,OACtC+c,EAAcN,GAAuB9xB,KAAKqyB,mBAAqBR,EAAiB,EAEhFS,GADmBjd,EAAS+c,GAAeP,EACf,EAAIne,KAAKC,KAAK0B,EAAS+c,GAAepyB,KAAKqyB,oBAAsB,EAEjG,OADAryB,KAAK0xB,cAAc1xB,KAAK2xB,cAAcW,KAC/B,EARHla,EAAK0L,QAAS,GAUtBoO,mBAAoB,WAChB,IAAI/D,EAAMnuB,KAAKouB,gBACXyD,EAAiB1D,GAAO,EAAI,EAChC,MAAO,CACH8D,QAAS,EACTM,iBAAkBpE,GAAOnuB,KAAKqyB,mBAAqBryB,KAAKmyB,iBACxDjX,SAAUlb,KAAKqyB,mBAAqBR,IAG5CF,cAAe,SAASW,GACpB,IACIT,EADM7xB,KAAKouB,iBACa,EAAI,EAC5BoE,EAAiBxyB,KAAKkyB,qBAC1B,MAAO,CACHD,QAASO,EAAeP,QAAUK,EAAUtyB,KAAKqyB,mBAAqBR,EACtEU,iBAAkBC,EAAeD,iBAAmB7e,KAAKW,IAAIie,EAAS,GAAKtyB,KAAKqyB,mBAAqBR,EACrG3W,QAASsX,EAAetX,QAAUxH,KAAKW,IAAIie,EAAS,GAAKtyB,KAAKqyB,mBAAqBR,IAG3FG,qBAAsB,WAClB,MAAO,CACHC,SAAS,EAAI5pB,EAAYoqB,QAAQzyB,KAAK0yB,iBAAiB/pB,KACvD4pB,kBAAkB,EAAIlqB,EAAYoqB,QAAQzyB,KAAK6vB,oBAAoBlnB,KACnEuS,SAAS,EAAI7S,EAAYoqB,QAAQzyB,KAAK8vB,WAAWnnB,OAGzD+oB,cAAe,SAASiB,IACpB,EAAItqB,EAAYG,MAAMxI,KAAK0yB,gBAAiB,CACxC/pB,KAAMgqB,EAAUV,WAEpB,EAAI5pB,EAAYG,MAAMxI,KAAK6vB,mBAAoB,CAC3ClnB,KAAMgqB,EAAUJ,oBAEpB,EAAIlqB,EAAYG,MAAMxI,KAAK8vB,UAAW,CAClCnnB,KAAMgqB,EAAUzX,WAGxBuW,eAAgB,SAAStG,GACjBA,EAAa,KAAOnrB,KAAKixB,cAG7BjxB,KAAK0yB,gBAAkBvH,EAAaxE,KAAK,+BACzC3mB,KAAKmyB,iBAAmBhH,EAAa4D,aACrC/uB,KAAKqyB,mBAAqBryB,KAAKqyB,oBAAsBryB,KAAK8vB,UAAUf,aACpE/uB,KAAK6vB,mBAAmBvB,MAAMtuB,KAAKqyB,oBAC/BryB,KAAK0yB,gBAAgBrvB,SACrBrD,KAAKixB,YAAc9F,EAAa,MAGxCyH,8BAA+B,WAC3B,OAAO5yB,KAAKmyB,iBAAmBnyB,KAAKqyB,oBAExChD,iBAAkB,SAASlE,EAAc/S,GACrCpY,KAAKyxB,eAAetG,GACpB,IAAI0G,EAAiB7xB,KAAKouB,gBAAkB,GAAK,EAC7C/Y,EAASrV,KAAKmyB,iBAAmB/Z,EAAK/C,OACtCwd,GAAwB7yB,KAAK+xB,iBAAiB5G,IAAiB9V,EAASwc,EAAiB,GAAK7xB,KAAKqyB,mBACnGS,EAAgB1a,EAAKkX,eAAiBuC,GAAkBgB,EAE5D,OADA7yB,KAAKmvB,mBAAmBhE,EAAc2H,IAC/B,GAEX/E,mBAAoB,SAAS5C,GACzB7iB,EAAIxJ,QAAQqK,KAAKnJ,KAAK0yB,iBAAiB,GACvC1yB,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WAC1B9X,KAAK6vB,mBAAmBrT,SAAS2O,IAErC6C,oBAAqB,WACjBhuB,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WAC1B9X,KAAK6vB,mBAAmB5B,UAE5BC,2BAA4B,WACxB,OAAOluB,KAAK+yB,oBAAoB/yB,KAAK2xB,cAAc,KAEvD9C,0BAA2B,SAAS1D,GAEhC,OADAnrB,KAAKyxB,eAAetG,GACbnrB,KAAK+yB,oBAAoB/yB,KAAK2xB,cAAc,KAEvDoB,oBAAqB,SAASJ,GAC1B,IAAIjsB,EAAO1G,KACPgzB,EAAkBhzB,KAAKgyB,uBACvBiB,EAAmBvf,KAAKW,IAAIX,KAAKC,IAAIqf,EAAgBf,QAAUU,EAAUV,SAAWjyB,KAAKqyB,mBAAoB,GACjH,OAAO/pB,EAAIxJ,QAAQiK,QAAQ/I,KAAK0yB,gBAAiB,CAC7C/D,KAAMqE,EACN/pB,GAAI0pB,EACJO,OAtLsB,sCAuLtBrqB,SAxLwB,IAwLkBoqB,EAC1CE,SAAU,QACVC,KAAM,SAAST,GACXjsB,EAAKgrB,cAAciB,OAI/BlI,QAAS,WACDzqB,KAAKuwB,OACLvwB,KAAKuwB,MAAM9nB,WAAWumB,SAEtBhvB,KAAK6vB,oBACL7vB,KAAK6vB,mBAAmBb,SAE5BhvB,KAAKkK,SAAS2N,MAAM7X,KAAM8X,cAE/Bub,QAAQxJ,EAAY/qB,W,kCCvOvB,IAAIuJ,EAAc,EAAQ,IACtBC,EAAMtJ,EAAuB,EAAQ,KACrC6qB,EAAc,EAAQ,KACtBkD,EAAe/tB,EAAuB,EAAQ,MAC9Cqb,EAAY,EAAQ,IAExB,SAASrb,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,IAElB,EAAIwqB,EAAYmD,UAAU,SAAU,QAASD,EAAajuB,QAAQW,QAAQ,CACvE2vB,oBAAoB,EACpBkE,oBAAqB,SAASnI,EAAc9V,EAAQtM,GAChD,IAAIwqB,EAAW,IAAIlZ,EAAUmD,SACzBgW,EAAane,EAASrV,KAAKyzB,kBAiB/B,OAhBI1qB,EACAT,EAAIxJ,QAAQiK,QAAQoiB,EAAc,CAC9BliB,GAAI,CACAN,KAAM6qB,GAEVxqB,KAAM,QACNE,SAAU,WACNqqB,EAASnyB,QAAQ+pB,EAAc9V,QAIvC,EAAIhN,EAAYG,MAAM2iB,EAAc,CAChCxiB,KAAM6qB,IAEVD,EAASnyB,WAENmyB,EAASG,WAEpBlC,mBAAoB,SAASrG,GAEzB,OADAnrB,KAAKyzB,kBAAoBtI,EAAamD,SAC/B,GAEXsD,oBAAqB,SAASzG,EAAc/S,GAExC,OADApY,KAAKszB,oBAAoBnI,EAAc/S,EAAK/C,SACrC,GAEXga,iBAAkB,SAASlE,EAAc/S,GACrC,IAAI/C,EAAS+C,EAAKkX,aAQlB,OAPAtvB,KAAKszB,oBAAoBnI,EAAc9V,GAAQ,GAAMse,KAAK,SAASxI,EAAc9V,GACzE3B,KAAKC,IAAI0B,IACTrV,KAAKuqB,MAAMiD,WAAWrC,GAAcyI,KAAK,WACrC5zB,KAAKszB,oBAAoBnI,EAAc,GAAG,IAC5CzqB,KAAKV,QAEbU,KAAKV,QACA,O,kCClDf,IAAIga,EAAYhb,EAAuB,EAAQ,IAC3C6qB,EAAc7qB,EAAuB,EAAQ,MAC7Cob,EAAWpb,EAAuB,EAAQ,KAC1C+tB,EAAe,EAAQ,KACvB8G,EAAe70B,EAAuB,EAAQ,MAC9C80B,EAAW90B,EAAuB,EAAQ,MAC1CimB,EAAU,EAAQ,KAEtB,SAASjmB,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,IAKnB,EAAI0tB,EAAaC,UAAU,OAAQ,UAAW6G,EAAa/0B,QAAQW,QAAQ,CACvE6F,MAAO,WACH,IAAIgrB,GAAQ,EAAItW,EAAUlb,SAAS,SAASid,SAJ5B,wBAKhB/b,KAAKuqB,MAAM9hB,WAAWojB,OAAOyE,GAC7BtwB,KAAKuwB,MAAQvwB,KAAK+zB,eAAezD,IAErCyD,eAAgB,SAAStrB,GACrB,OAAOzI,KAAKuqB,MAAM5H,iBAAiBla,EAAUqrB,EAASh1B,QAAS,CAC3Dk1B,SAAS,EACTC,gBAAgB,EAChBC,qBAAqB,EACrBC,oBAAqB,SAAStoB,GAC1B,QAAQ,EAAImO,EAAUlb,SAAS+M,EAAE0lB,QAAQjI,QAAQ,yBAAyBjmB,QAE9E+E,UAAW,CACPuoB,KAAM,CACF3nB,KAAM,QACNH,SAAU,IACV8lB,KAAM,CACFyF,OAAQ,EACRC,QAAS,GAEbprB,GAAI,CACAmrB,OAAQ,WACJ,OAAOp0B,KAAKs0B,WAAWC,eACzB7zB,KAAKV,MACPq0B,QAAS,IAGjBG,KAAM,CACFxrB,KAAM,QACNH,SAAU,EACV8lB,KAAM,CACF0F,QAAS,GAEbprB,GAAI,CACAorB,QAAS,KAIrBD,OAAQ,WACJ,OAAOp0B,KAAKs0B,WAAat0B,KAAKs0B,WAAWC,cAAgB,GAC3D7zB,KAAKV,MACPsuB,MAAO,WACH,OAAOtuB,KAAKuqB,MAAM9hB,WAAWsmB,cAC/BruB,KAAKV,MACPy0B,eAAgBz0B,KAAK00B,mBAAmBh0B,KAAKV,SAGrD00B,mBAAoB,SAAS7oB,GACzB,IAAI8oB,EAAkB9oB,EAAE+oB,UAAUC,WAC9B5N,EAAQjnB,KAAKmwB,aAAa5gB,QAC1BvP,KAAK6wB,kBACL5J,EAAM3gB,KAAK,CACP3D,KAAMyX,EAAStb,QAAQsL,OAAO,8BAC9BwmB,OAAQ5wB,KAAKqtB,YAAY3sB,KAAKV,QAGtCA,KAAKs0B,YAAa,EAAIta,EAAUlb,SAAS,SACzCkB,KAAKuqB,MAAM5H,iBAAiB3iB,KAAKs0B,WAAYrP,EAAQ6P,SAAU,CAC3D7N,MAAOA,EACPwJ,YAAazwB,KAAK+0B,sBAAsBr0B,KAAKV,MAC7Co0B,OAAQ,OACR9G,mBAAoB,KAExBqH,EAAgB5Y,SAlEY,+BAmE5B4Y,EAAgB9I,OAAO7rB,KAAKs0B,aAEhCS,sBAAuB,SAAS3c,GAC5BpY,KAAKuwB,MAAMiE,OACXx0B,KAAKgxB,gBAAgBhxB,KAAKg1B,eAAgB5c,EAAK2O,SAAS6J,SAE5DvD,YAAa,WACTrtB,KAAKuqB,MAAMiD,WAAWxtB,KAAKg1B,iBAE/BpI,kBAAmB,SAASzB,GAWxB,OAVAnrB,KAAKg1B,eAAiB7J,EACtBnrB,KAAKuwB,MAAMluB,OAAO,CACdqG,SAAU,CACNusB,GAAI,MACJC,GAAI,SACJC,GAAIhK,EACJiK,UAAW,UAGnBp1B,KAAKuwB,MAAMI,QACJ,GAEXlG,QAAS,WACDzqB,KAAKuwB,OACLvwB,KAAKuwB,MAAM9nB,WAAWumB,SAE1BhvB,KAAKkK,SAAS2N,MAAM7X,KAAM8X,cAE/Bub,QAAQxJ,EAAY/qB,W,kCC7GvBD,EAAQC,aAAU,EAClB,IAAIkb,EAAYhb,EAAuB,EAAQ,IAC3Cq2B,EAAQr2B,EAAuB,EAAQ,MAE3C,SAASA,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IA8BIG,EAzBW61B,EAAMv2B,QAAQW,QAAQ,CACjC61B,gBAAiB,WACbt1B,KAAKkK,WACLlK,KAAKu1B,cAAc,QAASv1B,KAAKw1B,aAAa90B,KAAKV,OACnDA,KAAKu1B,cAAc,cAAev1B,KAAKy1B,mBAAmB/0B,KAAKV,QAEnEw1B,aAAc,SAASE,GAEnB,GADA11B,KAAK21B,UAAU1T,SAAS,iCAAuC+M,SAC1D0G,EAAL,CAGA,IAAIE,GAAS,EAAI5b,EAAUlb,SAAS,SAASid,SAhBf,gCAgByD8P,QAAO,EAAI7R,EAAUlb,SAAS,SAASid,SAf1G,sBAe0IA,SAdpJ,YAc0KpZ,KAAK+yB,IACrLG,EAAW71B,KAAK21B,UAAU1T,SAAS,mCAAyC6T,QAChFD,EAASxyB,OAAS,EAAIuyB,EAAOG,aAAaF,GAAYD,EAAOpZ,SAASxc,KAAK21B,aAE/EF,mBAAoB,SAASO,GAEzB,GADAh2B,KAAK21B,UAAU1T,SAAS,mCAAyC+M,SAC5DgH,EAAL,CAGA,IAAIC,GAAoB,EAAIjc,EAAUlb,SAAS,SAASid,SAtBxB,kCAuB5B8Z,GAAW,EAAI7b,EAAUlb,SAAS,SAASid,SAtBzB,wBAuBtBka,EAAkBpK,OAAOgK,GAAUrZ,SAASxc,KAAK21B,eAIzD92B,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,S,kCCzCzB,IAAIkb,EAAYhb,EAAuB,EAAQ,IAC3CsK,EAAiBtK,EAAuB,EAAQ,KAChDuwB,EAAS,EAAQ,IACjB1qB,EAAU,EAAQ,GAClBsV,EAAMnb,EAAuB,EAAQ,KACrCk3B,EAAal3B,EAAuB,EAAQ,MAC5Cm3B,EAAgBn3B,EAAuB,EAAQ,OAC/CI,EAAS,EAAQ,IACjByqB,EAAc,EAAQ,KACtBkD,EAAe/tB,EAAuB,EAAQ,MAElD,SAASA,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IASIqwB,GAAmB,EAAItwB,EAAO4E,cAAcurB,EAAOptB,KAAM,wBAC7D,EAAI0nB,EAAYmD,UAAU,YAAa,UAAWD,EAAajuB,QAAQW,QAAQ,CAC3E6F,MAAO,WACHtF,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WAC1B,IAAIse,EAAgBp2B,KAAKuqB,MAAMloB,OAAO,iBACtCrC,KAAKq2B,gBAAkB,WAAaD,EACpCp2B,KAAKs2B,gBAAkBt2B,KAAKq2B,gBATM,uCAFJ,oCAY9Br2B,KAAKu2B,cAAgBv2B,KAAKq2B,gBATF,6BAFJ,0BAYpBr2B,KAAKw2B,eAAiBx2B,KAAKq2B,gBAAkBF,EAAcr3B,QAAUo3B,EAAWp3B,QAChFkB,KAAKuqB,MAAM9hB,WAAWsT,SAlBO,qCAoBjCkT,UAAW,SAAS7D,GAChB,IAAID,EAAeC,EAAOD,aACtBprB,EAAaqrB,EAAOrrB,WAAWgc,SAAS/b,KAAKs2B,iBAC7CG,GAAW,EAAIzc,EAAUlb,SAAS,SAASid,SAAS/b,KAAKu2B,eAAe/Z,SAASzc,GACrF,IAAIC,KAAKw2B,eAAeC,GAAU,EAAI5xB,EAAQ0B,QAAQvG,KAAK02B,iBAAkB,CACzEt0B,MAAOpC,KAAK22B,YAAYxL,GACxByL,mBAAmB,EACnB3S,mBAAmB,EACnB4S,eAAgB,SAAShrB,GACrBA,EAAEqS,OAASle,KAAKuqB,MAAMuM,0BAA0BjrB,EAAEqS,OAClDle,KAAK+2B,qBAAqB5L,EAActf,EAAEzJ,OAC1CyJ,EAAEqS,OAASrS,EAAEqS,MAAMxD,mBACrBha,KAAKV,UAGfmxB,cAAe,SAAS/F,GACpBprB,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WAC1B,IAAIqT,EAAeC,EAAOD,aACtB6L,EAAUh3B,KAAKw2B,eAAepU,YAAY+I,EAAaxE,KAAK,IAAM3mB,KAAKu2B,gBAC3EjtB,EAAexK,QAAQwX,GAAG6U,EAAc,eAAgB,SAAStf,EAAGorB,GAChED,EAAQ30B,OAAO,QAAS40B,IAC1Bv2B,KAAKV,QAEXk3B,sBAAuB,WACdl3B,KAAKm3B,aAGVn3B,KAAKo3B,mBAAmB/0B,OAAO,QAASrC,KAAKuqB,MAAM8M,gBAEvDC,YAAa,WACL,QAAUt3B,KAAKuqB,MAAMloB,OAAO,mBAG3BrC,KAAKm3B,YAGNn3B,KAAKk3B,wBAFLl3B,KAAKu3B,qBAKbhL,qBAAsB,SAASC,EAAqBC,GAChD,IAAI+K,GAAiB/K,EACjBnC,EAAOtqB,KAAKuqB,MACZkN,EAAaz3B,KAAKm3B,YAClBO,EAAgBpN,EAAKqN,oBAGzB,SADyBF,KADFhL,GAAe,IAAMD,GAAuBgL,GAAiBhL,IAAwBkL,MAGxGpN,EAAKjoB,OAAO,iBAAkBo1B,GAC9BnN,EAAKsN,aAAatN,EAAKjoB,OAAO,oBACvB,IAIfqqB,oBAAqB,SAAS7gB,GAC1B,GAAI7L,KAAKm3B,aAAen3B,KAAKm3B,YAAYU,SAlEvB,oBAsEd,OAHAhsB,EAAE0lB,OAASvxB,KAAKm3B,YAAYpX,IAAI,GAChC/f,KAAKuqB,MAAMuM,0BAA0BjrB,GACrC7L,KAAKo3B,mBAAmB/0B,OAAO,SAAUrC,KAAKo3B,mBAAmB/0B,OAAO,WACjE,GAGfk1B,iBAAkB,WACd,IAAIE,EAAaz3B,KAAKm3B,aAAc,EAAInd,EAAUlb,SAAS,SAASid,SAjFpC,sBAkF5BuO,EAAOtqB,KAAKuqB,MACZuN,EAAmBxN,EAAKhgB,iBAAiBsQ,UAAUla,KAAK4pB,GAC5DtqB,KAAKo3B,mBAAqB9M,EAAK3H,kBAAiB,EAAI3I,EAAUlb,SAAS,SAASid,SAnFvC,+BAmF4FS,SAASib,GAAavB,EAAWp3B,QAAS,CAC3K83B,mBAAmB,EACnB3S,mBAAmB,IAEvBjkB,KAAKo3B,mBAAmBW,mBAAmB,YAAaD,IACxD,EAAI9d,EAAUlb,SAAS,SAASid,SAvFM,4BAuF4CpZ,KAAK3C,KAAKuqB,MAAMloB,OAAO,kBAAkBma,SAASib,GACpIz3B,KAAKuqB,MAAMyN,iBAAiBrM,QAAQ8L,GACpCz3B,KAAKk3B,wBACLl3B,KAAKi4B,2BAETA,wBAAyB,WACrBj4B,KAAKo3B,mBAAmB/0B,OAAO,iBAAkBrC,KAAKk4B,kBAAkBx3B,KAAKV,OAC7EsJ,EAAexK,QAAQmX,IAAIjW,KAAKm3B,YAAazH,GAC7CpmB,EAAexK,QAAQwX,GAAGtW,KAAKm3B,YAAazH,EAAkB1vB,KAAKm4B,uBAAuBz3B,KAAKV,QAEnGk4B,kBAAmB,SAASrsB,GACxBA,EAAEqS,OAASrS,EAAEqS,MAAMxD,kBACnB,IAAI0d,EAAgBp4B,KAAKo3B,mBAAmB/0B,OAAO,UAI/C,IAHSrC,KAAKuqB,MAAMjmB,sBAAsB,0BAAjCtE,CAA4D,CACrEoC,MAAOg2B,MAKXvsB,EAAEqS,OAASle,KAAKuqB,MAAMuM,0BAA0BjrB,EAAEqS,QAC9C,IAASka,EACTp4B,KAAKq4B,mBAED,IAAUD,GACVp4B,KAAKs4B,sBAIjBC,0BAA2B,WACvB,IAAIjO,EAAOtqB,KAAKuqB,MACZhF,EAAa+E,EAAKpC,gBACtB,SAAI,aAAeoC,EAAKjoB,OAAO,mBAAoBioB,EAAKjoB,OAAO,YAAgBkjB,GAAeA,EAAWc,WACrGlM,EAAIrb,QAAQ05B,IAAI,UACT,IAIfH,gBAAiB,WACRr4B,KAAKu4B,6BAGVv4B,KAAKuqB,MAAMkO,WAAWC,UAAU,SAAW14B,KAAKuqB,MAAMloB,OAAO,mBAEjEi2B,kBAAmB,WACVt4B,KAAKu4B,6BAGVv4B,KAAKuqB,MAAMkO,WAAWE,YAAY,SAAW34B,KAAKuqB,MAAMloB,OAAO,mBAEnE81B,uBAAwB,SAAStsB,GAC7B7L,KAAKuqB,MAAMuM,0BAA0BjrB,GACrC7L,KAAKo3B,mBAAmB/0B,OAAO,SAAUrC,KAAKo3B,mBAAmB/0B,OAAO,WAE5Es0B,YAAa,SAASxL,GAClB,OAAOnrB,KAAKuqB,MAAMqO,eAAezN,IAErC4L,qBAAsB,SAAS5L,EAAc0N,GACrCA,EACA74B,KAAKuqB,MAAMuO,WAAW3N,GAEtBnrB,KAAKuqB,MAAMwO,aAAa5N,IAGhCV,QAAS,WACLzqB,KAAKg5B,oBACLh5B,KAAKuqB,MAAM9hB,WAAWwwB,YA3JO,oCA4J7Bj5B,KAAKkK,SAAS2N,MAAM7X,KAAM8X,YAE9BkhB,kBAAmB,WACXh5B,KAAKm3B,cACLn3B,KAAKm3B,YAAYnI,SACjBhvB,KAAKm3B,YAAc,W,kCCjL/B,IAAInd,EAAYhb,EAAuB,EAAQ,IAC3CsK,EAAiBtK,EAAuB,EAAQ,KAChD6F,EAAU,EAAQ,GAClBzF,EAAS,EAAQ,IACjByqB,EAAc,EAAQ,KACtBkD,EAAe/tB,EAAuB,EAAQ,MAC9Ck6B,EAAYl6B,EAAuB,EAAQ,MAE/C,SAASA,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,IAOnB,EAAIwqB,EAAYmD,UAAU,UAAW,UAAWD,EAAajuB,QAAQW,QAAQ,CACzE6F,MAAO,WACH,IAAIglB,EAAOtqB,KAAKuqB,MAChBvqB,KAAKm5B,gBAAkBn5B,KAAKuqB,MAAMloB,OAAO,WACzCrC,KAAKo5B,aAAc,EACnB,IAAI/T,EAASrlB,KAAKm5B,gBAAkB,yDAA2D,kBAC/Fn5B,KAAKk5B,UAAY5O,EAAK3H,iBAAiB2H,EAAK+O,YAAYpH,UAAWiH,EAAUp6B,SAAS,EAAI+F,EAAQ0B,QAAQ,CACtGquB,UAAWtK,EACXgP,gBAAiB,KACjBC,iBAAiB,EACjBlU,OAAQA,EACRmU,UAAWlP,EAAK7hB,WAChBgxB,cAAenP,EAAKjoB,OAAO,sBAAwB,OAAS,WAC5Dq3B,OAAQ,IAAIre,OAhBG,0BAiBfse,aAAc35B,KAAK45B,cACnBC,YAAa75B,KAAK85B,kBAAkBp5B,KAAKV,MACzC+5B,aAAc/5B,KAAKg6B,mBAAmBt5B,KAAKV,MAC3Ci6B,UAAWj6B,KAAKk6B,gBAAgBx5B,KAAKV,OACtCsqB,EAAKjoB,OAAO,mBAEnBi1B,YAAa,WACTt3B,KAAKk5B,UAAU7V,UAEnBuW,cAAe,SAAS/tB,GACpB,OAAO,EAAImO,EAAUlb,SAAS+M,EAAEud,aAAa+Q,QAAQ7L,OAAM,EAAItU,EAAUlb,SAAS+M,EAAEud,aAAakF,SAASvS,SA1BhF,iCA0BsHA,SAzBhI,mBA2BpB+d,kBAAmB,SAASjuB,GACpB7L,KAAKo5B,cACLvtB,EAAEiY,QAAS,IAInBkW,mBAAoB,SAASnuB,IACrB7L,KAAKm5B,iBAAoBn5B,KAAKo6B,YAAYvuB,EAAEwuB,UAAWxuB,EAAEyuB,WACzDzuB,EAAEiY,QAAS,IAInBsW,YAAa,SAASC,EAAWC,GAC7B,IAAIC,EAAYv6B,KAAKuqB,MAAMiQ,0BAA0BH,GAErD,OADYr6B,KAAKuqB,MAAMiQ,0BAA0BF,GACpCG,SAAS1a,IAAI,KAAOwa,EAAUE,SAAS1a,IAAI,IAE5Dma,gBAAiB,SAASruB,GACtB,IAAI6uB,EAAiB16B,KAAKuqB,MAAMiQ,0BAA0B3uB,EAAEyuB,SAC5Dt6B,KAAKuqB,MAAMoQ,aAAY,EAAI3gB,EAAUlb,SAAS+M,EAAEud,aAAcsR,IAElEzN,SAAU,SAAS7B,GACf,IAAIla,EAAQlR,KACR46B,GAAU,EAAI5gB,EAAUlb,SAAS,SAASid,SApD3B,0BAqDnBzS,EAAexK,QAAQwX,GAAGskB,EAAS,iBAAiB,SAAS/uB,GACzDqF,EAAMkoB,cAAe,EAAIh6B,EAAOy7B,cAAchvB,MAElDvC,EAAexK,QAAQwX,GAAGskB,EAAS,SAAU,CACzCp1B,QAAS,KACV,SAASqG,GACRA,EAAEiY,QAAS,EACX5S,EAAMkoB,aAAc,KAExBhO,EAAOrrB,WAAWgc,SA/DW,oCA+D8B8P,OAAO+O,Q,kCC5E1E/7B,EAAQC,aAAU,EAClB,IAAIkb,EAAYhb,EAAuB,EAAQ,IAC3C6K,EAAU,EAAQ,GAClBixB,EAAW,EAAQ,IACnBC,EAAY/7B,EAAuB,EAAQ,MAC3C6F,EAAU,EAAQ,GAClBm2B,EAAgBh8B,EAAuB,EAAQ,MAEnD,SAASA,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAUnB,SAASyhB,EAAgBC,EAAGC,GAKxB,OAJAF,EAAkBG,OAAOC,gBAAkB,SAASH,EAAGC,GAEnD,OADAD,EAAEI,UAAYH,EACPD,IAEYA,EAAGC,GAE9B,IAqJIxhB,EAnJU,SAASy7B,GAfvB,IAAwB3Z,EAAUC,EAkB9B,SAAS2Z,IACL,OAAOD,EAAapjB,MAAM7X,KAAM8X,YAAc9X,KAnBpBuhB,EAgBN0Z,GAhBJ3Z,EAgBL4Z,GAfN1Z,UAAYP,OAAOQ,OAAOF,EAAWC,WAC9CF,EAASE,UAAUE,YAAcJ,EACjCR,EAAgBQ,EAAUC,GAkB1B,IAAII,EAASuZ,EAAQ1Z,UA2IrB,OA1IAG,EAAO1X,mBAAqB,WACxB,OAAO,EAAIpF,EAAQ0B,QAAQ00B,EAAazZ,UAAUvX,mBAAmB+Y,KAAKhjB,MAAO,CAC7Em7B,YAAa,aACbC,SAAU,KACVC,aAAcxxB,EAAQsiB,QAG9BxK,EAAO2Z,iBAAmB,WACtBt7B,KAAKu7B,aAAev7B,KAAKqC,OAAO,gBAC3BrC,KAAKu7B,cACNN,EAAazZ,UAAU8Z,iBAAiBtY,KAAKhjB,OAGrD2hB,EAAOxF,mBAAqB,WACxBnc,KAAKw7B,4BACLP,EAAazZ,UAAUrF,mBAAmB6G,KAAKhjB,MAC/C,IAAIy7B,EAAOz7B,KAAKu7B,aAAaG,aAAa17B,KAAKqC,OAAO,eACtDo5B,GAAQz7B,KAAK27B,aAAa37B,KAAK47B,eAAeH,IAC9Cz7B,KAAK67B,oBAETla,EAAOka,iBAAmB,WACtB77B,KAAK87B,mBAAoB,EAAI9hB,EAAUlb,SAAS,SAAS0d,SAASxc,KAAK0mB,kBAAkB3K,SA9BnD,sCAgC1C4F,EAAOoa,mBAAqB,WACxB,OAAO,EAAIl3B,EAAQ0B,QAAQ00B,EAAazZ,UAAUua,mBAAmB/Y,KAAKhjB,MAAO,CAC7Eg8B,aAAch8B,KAAKi8B,gCAAgCv7B,KAAKV,SAGhE2hB,EAAOsa,gCAAkC,SAASC,GAC9Cl8B,KAAKm8B,eAAeD,IAExBva,EAAOya,iBAAmB,SAASvwB,GAC/BovB,EAAazZ,UAAU4a,iBAAiBpZ,KAAKhjB,KAAM6L,GACnD7L,KAAKq8B,mBAAkB,EAAOxwB,EAAEywB,gBAEpC3a,EAAO4a,kBAAoB,WACvB,MAAO,eAAiBv8B,KAAKqC,OAAO,gBAExCsf,EAAO6a,mBAAqB,SAAS3wB,GACV7L,KAAKqC,OAAO,eACnCo6B,CAAiB5wB,GACjBovB,EAAazZ,UAAUgb,mBAAmBxZ,KAAKhjB,KAAM6L,GACrD7L,KAAKq8B,mBAAkB,EAAMxwB,EAAEywB,gBAEnC3a,EAAO+a,aAAe,SAASC,GAC3B38B,KAAK48B,SAASC,UAAU,CACpBC,UAAU,EAAIhC,EAASiC,kBAAkBJ,GACzCK,QAASh9B,OAEbi7B,EAAazZ,UAAUkb,aAAa1Z,KAAKhjB,KAAM28B,GAC/C38B,KAAK48B,SAASK,QAAQ,CAClBH,UAAU,EAAIhC,EAASiC,kBAAkBJ,GACzCK,QAASh9B,QAGjB2hB,EAAOub,aAAe,SAASP,GAC3B38B,KAAK48B,SAASO,SAAS,CACnBrZ,QAAQ,EACRgZ,UAAU,EAAIhC,EAASiC,kBAAkBJ,GACzCK,QAASh9B,OAEbi7B,EAAazZ,UAAU0b,aAAala,KAAKhjB,KAAM28B,GAC/C38B,KAAK48B,SAASQ,SAAS,CACnBN,UAAU,EAAIhC,EAASiC,kBAAkBJ,GACzCK,QAASh9B,QAGjB2hB,EAAOwa,eAAiB,SAASD,GAC7B,GAAKl8B,KAAK87B,kBAAV,CAGA,IAAIuB,EAAWr9B,KAAK0mB,iBAAiBzE,SAAS,IAAI5G,OA/EnC,eA+E6DgH,GAAG,GAC3Esa,EAAY38B,KAAKqC,OAAO,YAAY8yB,GACpCzsB,EAAW,CACXysB,GAAIkI,GAEJC,EAAkBpB,EAAIxzB,SACtB60B,EAAYD,EAAgBE,EAAEz6B,SAC9B06B,EAAYH,EAAgBI,EAAE36B,SAC9B46B,EAAahB,EAAUtnB,SACvBuoB,EAAalqB,KAAKoL,MAAM6e,EAAWh1B,MACnCk1B,EAAYnqB,KAAKoL,MAAM6e,EAAWG,KAClCC,EAAYpB,EAAUrO,QACtB0P,EAAarB,EAAUvI,SACvB6J,EAAeZ,EAAS/O,QACxB4P,EAAgBb,EAASjJ,SAC7Bp0B,KAAK87B,kBAAkBqC,IAAI,UAAW,SACtCn+B,KAAK87B,kBAAkBxN,MAAMtuB,KAAKu8B,oBAAsBwB,EAAYE,EAAeF,EAAY,EAAIE,EAAe,GAClHj+B,KAAK87B,kBAAkB1H,OAAOp0B,KAAKu8B,oBAAsB,EAAIyB,EAAaE,EAAgBF,EAAa,EAAIE,GACvGl+B,KAAKu8B,oBACDgB,EAAYM,EACRnqB,KAAKoL,MAAM2e,KAAeG,GAC1Bl1B,EAAS2M,OAAS,OAClB3M,EAASwsB,GAAKxsB,EAASusB,GAAK,aAE5BvsB,EAAS2M,OAAS,QAClB3M,EAASwsB,GAAKxsB,EAASusB,GAAK,cAGhCj1B,KAAK87B,kBAAkB1H,OAAO,GAC1B1gB,KAAKoL,MAAM2e,KAAeG,GAC1Bl1B,EAAS2M,OAAS,MAClB3M,EAASwsB,GAAKxsB,EAASusB,GAAK,gBAE5BvsB,EAAS2M,OAAS,OAClB3M,EAASwsB,GAAKxsB,EAASusB,GAAK,iBAIhCwI,EAAYG,EACRlqB,KAAKoL,MAAMye,KAAeM,GAC1Bn1B,EAAS2M,OAAS,OAClB3M,EAASwsB,GAAKxsB,EAASusB,GAAK,aAE5BvsB,EAAS2M,OAAS,QAClB3M,EAASwsB,GAAKxsB,EAASusB,GAAK,eAG5BvhB,KAAKoL,MAAMye,KAAeM,GAC1Bn1B,EAAS2M,OAAS,MAClB3M,EAASwsB,GAAKxsB,EAASusB,GAAK,cAE5BvsB,EAAS2M,OAAS,OAClB3M,EAASwsB,GAAKxsB,EAASusB,GAAK,gBAIxC8F,EAAUj8B,QAAQs/B,MAAMp+B,KAAK87B,kBAAmBpzB,KAEpDiZ,EAAO0c,wBAA0B,WAC7B,OAAOr+B,KAAKqC,OAAO,aAEvBsf,EAAO2c,iBAAmB,WACtB,OAAOt+B,KAAK8zB,SAASzxB,OAAO,YAEhCsf,EAAO4c,kBAAoB,WACvB,OAAOv+B,KAAK8zB,SAASe,YAElBqG,EAjJG,CAkJZF,EAAcl8B,SAEhBD,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,S,iCClLzBD,EAAQC,aAAU,EAClB,IAAIkb,EAAYhb,EAAuB,EAAQ,IAC3Cw/B,EAAU,EAAQ,IAClBC,EAAW,EAAQ,KACnBjP,EAAU,EAAQ,IAClB3qB,EAAU,EAAQ,GAClB2E,EAAWxK,EAAuB,EAAQ,KAC1CoK,EAAyBpK,EAAuB,EAAQ,KACxDmb,EAAMnb,EAAuB,EAAQ,KAEzC,SAASA,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAAIq/B,GAAY,EAAIF,EAAQG,gBAQxBC,EAAgBzkB,EAAIrb,QAAQW,QAAQ,CACpCwK,mBAAoB,WAChB,OAAO,EAAIpF,EAAQ0B,QAAQvG,KAAKkK,WAAY,CACxC20B,aAAc,GACd7a,oBAAoB,EACpBC,mBAAmB,EACnB6a,uBAAwB,EACxBC,wBAAwB,KAGhCtjB,qBAAsB,WAClB,IAAIujB,GAAY,EAAIxP,EAAQyP,WAC5B,OAAOj/B,KAAKkK,WAAWmR,OAAO,CAAC,CAC3BK,OAAQ,WAGJ,MADsB,YADLlS,EAAS1K,QAAQiW,OACamqB,WAAa,UAAUvoB,KAAK+nB,EAAUS,YAGzFp5B,QAAS,CACLq5B,UAAU,IAEf,CACC1jB,OAAQ,WACJ,OAAO,EAAI8T,EAAQuB,YAAYiO,IAEnCj5B,QAAS,CACL+4B,uBAAwB,EACxBC,wBAAwB,IAE7B,CACCrjB,OAAQ,WACJ,OAAO,EAAI8T,EAAQ6P,WAAWL,IAElCj5B,QAAS,CACL+4B,uBAAwB,OAIpC3jB,cAAe,WACX,OAAO,GAEX7V,MAAO,WACHtF,KAAKkK,WACLlK,KAAKyI,WAAWsT,SAlDE,qBAoDtBF,YAAa,WACT7b,KAAKkK,WACLlK,KAAKs/B,iBACLt/B,KAAKu/B,0BACLv/B,KAAKw/B,iBAETF,eAAgB,WACZt/B,KAAKy/B,WAAY,EAAIzlB,EAAUlb,SAAS,SAASid,SA1DvB,4BA2D1B/b,KAAKyI,WAAWojB,OAAO7rB,KAAKy/B,YAEhCF,wBAAyB,WACrBv/B,KAAK0/B,WAAY,EAAI1lB,EAAUlb,SAAS,SAASid,SA7DvB,4BA8D1B/b,KAAKy/B,UAAU5T,OAAO7rB,KAAK0/B,YAE/BF,cAAe,aACP,EAAIf,EAASr2B,cAAiBpI,KAAKqC,OAAO,aAAgBrC,KAAKqC,OAAO,gBAGtErC,KAAK2/B,wBAFL3/B,KAAK4/B,6BAKbA,0BAA2B,WACvB,IAAIC,EAAwB7/B,KAAKqC,OAAO,0BACxCrC,KAAK8/B,aAAc,EAAI9lB,EAAUlb,SAAS,SAASid,SAxE5B,yBAyEvB/b,KAAK0/B,UAAU7T,OAAO7rB,KAAK8/B,aAC3B,IAAK,IAAIvY,EAAIvnB,KAAKqC,OAAO,0BAA2BklB,GAAK,IAAKA,EAAG,CAC7D,IAAIwY,GAAW,EAAI/lB,EAAUlb,SAAS,SAASid,SA1EzB,4BA0E+DA,SA1E/D,2BA0EsGwL,GACxHsY,GACAE,EAASlU,QAAO,EAAI7R,EAAUlb,SAAS,SAASid,SA3ExB,mCA6E5B/b,KAAK8/B,YAAYjU,OAAOkU,KAGhCJ,sBAAuB,WACnB,IAAId,EAAe7+B,KAAKqC,OAAO,gBAC/BrC,KAAKy/B,UAAU1jB,SAjFS,0BAkFpB8iB,GACA7+B,KAAKy/B,UAAUtB,IAAI,kBAAmB,OAASU,EAAe,MAGtEmB,kBAAmB,WACfhgC,KAAKkK,WACLlK,KAAKigC,kCAETA,+BAAgC,WAC5B,GAAKjgC,KAAK8/B,YAAV,CAGA,IAAIxR,EAAQtuB,KAAKqC,OAAO,SACpB+xB,EAASp0B,KAAKqC,OAAO,UACzB,GAAIisB,GAAS8F,EAAQ,CACjB9F,EAAQtuB,KAAKyI,WAAW6lB,QACxB8F,EAASp0B,KAAKyI,WAAW2rB,SACzB,IAAI8L,EAAexsB,KAAKW,IAAI+f,EAAQ9F,GACpCtuB,KAAKy/B,UAAUtB,IAAI,CACf/J,OAAQ8L,EACR5R,MAAO4R,EACPC,SAAUD,OAItB3nB,OAAQ,WACJvY,KAAKkK,WACLlK,KAAKogC,4BACLpgC,KAAKqgC,yBAETD,0BAA2B,WAClBpgC,KAAK8/B,cAGV9/B,KAAK8/B,YAAY9Q,gBACVhvB,KAAK8/B,cAEhBO,sBAAuB,WACnBrgC,KAAKy/B,UAAUtB,IAAI,kBAAmB,SAE1ChmB,eAAgB,SAASC,GACrB,OAAQA,EAAKjW,MACT,IAAK,yBACL,IAAK,yBACL,IAAK,eACDnC,KAAKglB,cACL,MACJ,QACIhlB,KAAKkK,SAASkO,QAI9B,EAAIhP,EAAuBtK,SAAS,kBAAmB8/B,GACvD,IAAIp/B,EAAWo/B,EACf//B,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,QACzB8F,EAAO/F,QAAQC,QAAU8F,EAAO/F,S,kCChKhCA,EAAQC,aAAU,EAClB,IAAIkb,EAAYhb,EAAuB,EAAQ,IAC3CsK,EAAiBtK,EAAuB,EAAQ,KAChDw/B,EAAU,EAAQ,IAClBC,EAAW,EAAQ,KACnB50B,EAAU,EAAQ,GAClBixB,EAAW,EAAQ,IACnB57B,EAAY,EAAQ,GACpB2F,EAAU,EAAQ,GAClBiF,EAAS,EAAQ,KACjBsQ,EAAWpb,EAAuB,EAAQ,KAC1CwK,EAAWxK,EAAuB,EAAQ,KAC1CoK,EAAyBpK,EAAuB,EAAQ,KACxDI,EAAS,EAAQ,IACjB+a,EAAMnb,EAAuB,EAAQ,MACrCwwB,EAAU,EAAQ,IAClBD,EAAS,EAAQ,IACjB+Q,EAAWthC,EAAuB,EAAQ,MAC1CuhC,EAAYvhC,EAAuB,EAAQ,MAC3CwhC,EAA0B,EAAQ,KAClCn4B,EAAc,EAAQ,IACtBlJ,EAAQ,EAAQ,GAChBshC,EAAU,EAAQ,KAEtB,SAASzhC,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAAIqhC,GAAS,EAAIlC,EAAQmC,aAmBrBC,EAASzmB,EAAIrb,QAAQW,QAAQ,CAC7B6K,eAAgB,WACZ,OAAO,EAAIzF,EAAQ0B,QAAQvG,KAAKkK,WAAY,CACxC22B,MAAO,SAASh1B,GACZA,EAAE0B,iBACFvN,KAAK8gC,qBAET51B,MAAO,WACHlL,KAAK8gC,wBAIjB72B,mBAAoB,WAChB,OAAO,EAAIpF,EAAQ0B,QAAQvG,KAAKkK,WAAY,CACxC62B,YAAa3mB,EAAStb,QAAQsL,OAAO,UACrC42B,kBAAmB5mB,EAAStb,QAAQsL,OAAO,UAC3C62B,eAAe,EACfC,sBAAsB,EACtBC,kBAAkB,EAClBC,iBAAiB,EACjBC,gBAAiBjnB,EAAStb,QAAQsL,OAAO,SACzCk3B,gBAAiBlnB,EAAStb,QAAQsL,OAAO,MACzCm3B,oBAAoB,EACpBC,oBAAoB,EACpBC,gBAAiBrnB,EAAStb,QAAQsL,OAAO,0BACzCs3B,eAAgBtnB,EAAStb,QAAQsL,OAAO,yBACxCu3B,eAAgBvnB,EAAStb,QAAQsL,OAAO,yBACxCw3B,gBAAiBxnB,EAAStb,QAAQsL,OAAO,0BACzCy3B,SAAU,KACVC,cAAe,KACfC,cAAe,KACfC,aAAc,eACdC,eAAgB7nB,EAAStb,QAAQsL,OAAO,yBACxC83B,SAAS,EACTC,cAAe,QACfC,YAAY,EACZC,oBAAoB,EACpBzL,mBAAmB,EACnBxuB,UAAW,GACXk6B,gBAAiB,CACb9R,WAAW,EACXlC,MAAO,WACH,MAAO,IAAK,EAAItU,EAAUlb,SAAS4hC,GAAQpS,SAE/C8F,OAAQ,WACJ,MAAO,IAAK,EAAIpa,EAAUlb,SAAS4hC,GAAQtM,UAE/CJ,SAAS,EACTG,qBAAqB,EACrBzrB,cAAU,EACVN,UAAW,GACXm6B,MAAO,GACPC,cAAe,QACfC,gBAAiB,KACjBC,YAAY,GAEhBC,kBAAkB,EAClBC,8BAA8B,EAC9BC,wBAAwB,KAGhCpnB,qBAAsB,WAClB,IAAIvK,EAAQlR,KACRg/B,GAAY,EAAIxP,EAAQyP,WAC5B,OAAOj/B,KAAKkK,WAAWmR,OAAO,CAAC,CAC3BK,OAAQ,WACJ,OAAQ+iB,EAASqE,iBAErB/8B,QAAS,CACLy7B,oBAAoB,IAEzB,CACC9lB,OAAQ,SAASqnB,GACb,OAAQv5B,EAAS1K,QAAQ8c,eAAiB,YAAcpS,EAAS1K,QAAQiW,OAAOC,YAAc,YAAc+tB,EAAQ7D,UAExHn5B,QAAS,CACLq8B,YAAY,EACZE,gBAAiB,CACblO,OAAQ,UAGjB,CACC1Y,OAAQ,CACJwjB,SAAU,MACV8D,OAAO,GAEXj9B,QAAS,CACLu8B,gBAAiB,CACbI,YAAY,KAGrB,CACChnB,OAAQ,CACJwjB,SAAU,MACV+D,QAAQ,GAEZl9B,QAAS,CACLu8B,gBAAiB,CACbhU,MAAO,WACH,MAAO,GAAK5a,KAAKW,KAAI,EAAI2F,EAAUlb,SAAS4hC,GAAQpS,SAAS,EAAItU,EAAUlb,SAAS4hC,GAAQtM,WAEhGA,OAAQ,QAEZgO,YAAY,EACZc,cAAc,IAEnB,CACCxnB,OAAQ,WACJ,MAAO,YAAclS,EAAS1K,QAAQiW,OAAOC,aAAexL,EAAS1K,QAAQ8c,eAEjF7V,QAAS,CACL6wB,mBAAmB,IAExB,CACClb,OAAQ,WACJ,OAAO,EAAI8T,EAAQuB,YAAYiO,IAEnCj5B,QAAS,CACLq8B,YAAY,EACZnB,eAAe,EACfE,kBAAkB,EAClBwB,kBAAkB,EAClBC,8BAA8B,EAC9BN,gBAAiB,CACbnO,qBAAqB,EACrB7F,MAAO,WACH,OAAO,EAAImS,EAAQ0C,iBAAiBjyB,EAAMzI,aAE9C2rB,OAAQ,WACJ,OAAOp0B,KAAKojC,mBACd1iC,KAAKV,MACPwwB,WAAW,EACXwD,SAAS,QAKzB1uB,MAAO,WACHtF,KAAKkK,WACLlK,KAAKqjC,gBAETA,aAAc,WACVrjC,KAAKkK,WACLlK,KAAKsjC,oBACLtjC,KAAKujC,yBACLvjC,KAAKwjC,0BAETD,uBAAwB,WACpBvjC,KAAKyjC,mBAAqBzjC,KAAKsE,sBAAsB,kBAEzDk/B,uBAAwB,WACpBxjC,KAAK0jC,mBAAqB1jC,KAAKsE,sBAAsB,kBAEzDg/B,kBAAmB,WACftjC,KAAK2jC,cAAgB3jC,KAAKsE,sBAAsB,aAEpDs/B,eAAgB,SAAS/3B,GACrB7L,KAAK2jC,cAAc93B,IAEvBg4B,oBAAqB,SAASh4B,GAC1B7L,KAAK0jC,mBAAmB73B,IAE5Bi4B,oBAAqB,SAASj4B,GAC1B7L,KAAKyjC,mBAAmB53B,IAE5Bk4B,eAAgB,WACZ/jC,KAAKkK,WACLlK,KAAKgkC,iBAAiBC,oBAAoB,CACtC5d,MAAO,IAAIma,EAAwB0D,qBAAqB,SACxD3B,MAAO,IAAI/B,EAAwB0D,qBAAqB,YAGhEroB,YAAa,WACT7b,KAAKyI,WAAWsT,SA/LL,aA+L4BqH,YAtLrB,yBAsLsDpjB,KAAKqC,OAAO,eACpFrC,KAAKkK,YAETi6B,cAAe,WACX,OAAOnkC,KAAKyI,WAAWke,KAAK,6BAEhCyd,mBAAoB,WAChB,OAAO,EAAIv/B,EAAQ0B,QAAQvG,KAAKkK,WAAY,CACxCm6B,UAAU,KAGlBC,wBAAyBz6B,EAAQsiB,KACjCoY,mBAAoB,WAChB,MAAO,IAEX3uB,aAAc,WACV,IAAI4uB,EAASxkC,KACTykC,EAAmBzkC,KAAKmiB,eAAc,WACtCqiB,EAAOE,sBAEX1kC,KAAK2kC,SAAU,EAAI3qB,EAAUlb,SAAS,SAASid,SAhN9B,mBAiNjBzS,EAAexK,QAAQwX,GAAGtW,KAAK2kC,SAAS,EAAIvlC,EAAO4E,cAAcurB,EAAOptB,KAAMnC,KAAKiE,OAAO,SAAS4H,GAC/F44B,EAAiB,CACbvmB,MAAOrS,OAGf,IAAI+4B,GAAS,EAAI5qB,EAAUlb,SAAS,SAASid,SArN5B,mBAsNjB/b,KAAK6kC,gBAAiB,EAAI7qB,EAAUlb,SAAS,SAASid,SArN7B,2BAqNkE8P,OAAO7rB,KAAK2kC,SAAS9Y,OAAO+Y,GAAQpoB,SAASxc,KAAKyI,YAC7IzI,KAAKqC,OAAO,iBAAmBrC,KAAK8kC,oBAExCC,mBAAoB,WAChB,OAAO/kC,KAAK6kC,gBAEhBC,iBAAkB,WACd9kC,KAAKglC,YAAa,EAAIl7B,EAAO3J,WAEjCukC,iBAAkB,WACd1kC,KAAKkK,YACAlK,KAAKqC,OAAO,+BAAiCrC,KAAKqC,OAAO,iCAC1DrC,KAAKilC,qBAGbC,mBAAoB,SAASz8B,EAAUrG,EAAOyJ,GAE1C,GADA7L,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WACrB9X,KAAKglC,WAAV,CAGA,IAAI5Z,EAAS,CACTnM,QAASjf,KAAKmkC,gBACdjmB,MAAOrS,GAEPzJ,EACApC,KAAKglC,WAAWG,SAAS/Z,GAEzBprB,KAAKglC,WAAWI,SAASha,KAGjCia,aAAc,WACV,IAAIC,EAAgBtlC,KAAKulC,qBAAqB,iBAC9C,GAAID,GAAiBtlC,KAAKqC,OAAO,iBAC7BrC,KAAKwlC,qBAAqBF,OAD9B,CAIA,IAAIG,EAAezlC,KAAKqC,OAAO,gBAC/BrC,KAAK0lC,cAAa,EAAIvmC,EAAMwT,WAAW8yB,IAAiBE,OAAOF,IAAiBzlC,KAAKqC,OAAO,gBAC5FrC,KAAKyI,WAAW2a,YAtPC,mBAsPgCpjB,KAAKqC,OAAO,mBAEjEuV,mBAAoB,SAASjV,GACrB3C,KAAKkN,SAAS7J,OACdrD,KAAKkK,SAASvH,GAEd3C,KAAK0lC,aAAa/iC,IAG1B+iC,aAAc,SAAS/iC,GACnB3C,KAAK2kC,QAAQhiC,KAAKA,IAEtB6iC,qBAAsB,SAASI,GAC3B5lC,KAAK2kC,QAAQkB,QACb,IAAIC,EAAO9lC,KAAK+lC,mBAChBH,EAASzlC,OAAO,CACZ6lC,MAAOF,EACPtM,WAAW,EAAIsB,EAASiC,kBAAkB/8B,KAAK2kC,YAGvDoB,iBAAkB,WACd,OAAO/lC,KAAKqC,OAAO,iBAEvB4jC,qBAAsB,WAClBjmC,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WACtB9X,KAAKqC,OAAO,0BACRrC,KAAKqC,OAAO,kBAAoBrC,KAAKkmC,WAAW7jC,OAAO,WACvDrC,KAAKkmC,WAAW7jC,OAAO,QAAS,IAChCrC,KAAKmmC,mBAETnmC,KAAKuqB,OAASvqB,KAAKuqB,MAAMloB,OAAO,iBAAkB,OAElDrC,KAAKqC,OAAO,+BAAiCrC,KAAKqC,OAAO,kCACzDrC,KAAKomC,OAAO/jC,OAAO,YAAY8yB,IAAK,EAAInb,EAAUlb,SAAS4hC,KAGnE2F,sBAAuB,WACnB,IAAIC,EAAgBtmC,KAAKuqB,MAAMloB,OAAO,iBAClCkkC,EAAYvmC,KAAKuqB,MAAMloB,OAAO,SAC9BmkC,EAAaD,EAAUljC,OACvB,IAAMmjC,IACFxmC,KAAKuqB,MAAMloB,OAAO,WAClBrC,KAAKuqB,MAAMqN,aAAa,CACpBvR,MAAOmgB,EAAa,EACpBtjC,KAAMqjC,EAAUC,EAAa,GAAGvf,MAAM5jB,OAAS,IAGnDrD,KAAKuqB,MAAMqN,aAAa4O,EAAa,GAEzCxmC,KAAKuqB,MAAMqN,aAAa0O,KAGhCG,sBAAuB,SAASC,GAC5B,OAAOA,EAAiBrxB,SAASyoB,KAAM,EAAI9jB,EAAUlb,SAASkB,KAAKif,WAAW5J,SAASyoB,KAE3F6I,oBAAqB,SAASl2B,EAAOm2B,GACjC,OAAO,EAAIn2B,GAASA,EAAQm2B,EAAQ,GAExCC,gBAAiB,WACb,IAAIC,EAAiB9mC,KAAK+mC,oBAAoB1jC,OAC9C,GAAI,IAAMyjC,EAAV,CAGA,IAAIJ,GAAmB,EAAI1sB,EAAUlb,SAASkB,KAAKuqB,MAAMtL,WAAW0H,KAAK,0BACrE2f,EAAgBtmC,KAAK+mC,oBAAoBt2B,MAAMi2B,GAC/CM,GAAuBN,EAAiBtS,UAAW,EAAIpa,EAAUlb,SAASkB,KAAKif,WAAWmV,UAAY,EACtG6S,GAAe,EAAIjtB,EAAUlb,SAASkB,KAAKuqB,MAAMtL,WAAW5J,SAASyoB,IACrEoJ,EAAuBlnC,KAAKqC,OAAO,0BACnC8kC,EAAc,mBAAsBD,EAAuBA,IAAyBA,EACpFE,GAAe,EAAIptB,EAAUlb,SAAS4hC,GAAQtM,SAC9CyJ,EAAY,EAChB,IAAuB,IAAnByI,EAAsB,CACtB,GAAItmC,KAAK2mC,oBAAoBL,EAAeQ,GAAiB,CACzD9mC,KAAKqmC,wBACL,IAAIgB,GAAmBF,EAAcT,EAAiBtS,UAAY,EAAIp0B,KAAKymC,sBAAsBC,GACjG1mC,KAAKuqB,MAAM+c,SAAStnC,KAAKuqB,MAAMgd,YAAcC,EAAmCH,GAE5EJ,GADJpJ,EAAYmJ,EAAsBhnC,KAAKymC,sBAAsBC,KAC7BJ,IAAkBQ,EAAiB,IAC/D9mC,KAAKuqB,MAAM+c,SAAStnC,KAAKuqB,MAAMgd,YAAcvnC,KAAKymC,sBAAsBC,GAAoB,GAC5F7I,EAAYmJ,EAAsBhnC,KAAKymC,sBAAsBC,SAG7DJ,GAAiB,GACjBtmC,KAAKuqB,MAAM+c,SAAS,GACpBzJ,EAAYmJ,EAAsBhnC,KAAKymC,sBAAsBC,IAEzDJ,GAAiBQ,EAAiB,IAClC9mC,KAAKqmC,wBACLxI,EAAYmJ,EAAsBhnC,KAAKymC,sBAAsBC,IAIrEO,EAAepJ,IACf79B,KAAKqmC,wBACLxI,EAAYmJ,EA7UO,GAgV3B,IAAIS,EAAeN,EAActJ,GAAY,EAAI7jB,EAAUlb,SAASkB,KAAKif,WAAWmV,SAKpF,OAJIgT,EAAeH,EAAeQ,IAC9BznC,KAAKuqB,MAAM+c,SAAStnC,KAAKuqB,MAAMgd,YAAcP,EAAsBS,GACnE5J,EAAYsJ,GAAc,EAAIntB,EAAUlb,SAASkB,KAAKif,WAAWmV,SAnV1C,GAqVpByJ,IAEXoH,kBAAmB,WACf,GAAKjlC,KAAKqC,OAAO,sBAGHrC,KAAKomC,OAAO3G,UAAU5H,SAjWH,+BAkWjC,CAGA,IAAI6P,GAAqB,EAAI1tB,EAAUlb,SAASkB,KAAKomC,OAAOnU,WAAWwI,SACnEkN,EAAc3nC,KAAK6mC,kBACnBn+B,GAAW,EAAIL,EAAYoqB,QAAQiV,IACvC,EAAIr/B,EAAYG,MAAMk/B,EAAoB,CACtC5J,IAAKp1B,EAASo1B,IAAM6J,MAG5BC,yBAA0B,WACtB,IAAI5gB,EAAShnB,KAAKuqB,MAAM7D,iBAAiBzE,WACrCgF,EAAQ,GAQZ,OAPAD,EAAOrgB,MAAK,SAASC,EAAGyf,GACpBY,EAAM3gB,MAAK,EAAI0T,EAAUlb,SAASunB,GAAOM,KAAK,yBAA+B,KAC1D,EAAI3M,EAAUlb,SAASunB,GAAOM,KAAK,iBACzChgB,MAAK,SAASC,EAAG1D,GAC1B+jB,EAAM3gB,KAAKpD,UAGZ,EAAI8W,EAAUlb,SAASmoB,IAElC4gB,qBAAsB,SAAS3F,GAC3B,IAAIqE,EAAYrE,EAAUliC,KAAK4nC,2BAA6B5nC,KAAK+mC,oBAC7DL,GAAmB,EAAI1sB,EAAUlb,SAAS,0BAC1CwnC,EAAgBC,EAAU91B,MAAMi2B,GAChCoB,EAAa,EAwBjB,OAtBI,IAAMvB,EAAUljC,OAChBykC,GAzXuB,EA2XnBvB,EAAUljC,OA5Xa,EA6XvBkjC,EAAU5/B,MAAK,SAASC,EAAG1D,GACvB4kC,IAAc,EAAI9tB,EAAUlb,SAASoE,GAAMqxB,kBAG3C+R,GAAiB,EACEC,EAAUh3B,MAAM,EAlYhB,GAoYfvP,KAAK2mC,oBAAoBL,EAAeC,EAAUljC,QAC/BkjC,EAAUh3B,MAAM+2B,EAAgB,EAAGA,EAAgB,GAEnDC,EAAUh3B,MAAMg3B,EAAUljC,OAvY9B,EAuYyEkjC,EAAUljC,SAGzFsD,MAAK,SAASC,EAAG1D,GAC9B4kC,IAAc,EAAI9tB,EAAUlb,SAASoE,GAAMqxB,iBAIhDuT,GAAc5F,EA9YM,EA8YmC,KAElEkB,gBAAiB,WACb,OAAIpjC,KAAKuqB,OAASvqB,KAAKuqB,MAAMwd,eAClB/nC,KAAK6nC,qBAAqB7nC,KAAKqC,OAAO,aAAerC,KAAKgoC,gBAAkBhoC,KAAKgoC,gBAAgBzT,cAAgB,IAAMv0B,KAAKomC,OAAO6B,SAAWjoC,KAAKomC,OAAO6B,SAAS1T,cAAgB,IAAMv0B,KAAKomC,OAAO8B,QAAUloC,KAAKomC,OAAO8B,QAAQ3T,cAAgB,GAEnP,QAGf4T,aAAc,WACNnoC,KAAKqC,OAAO,gBAAkBrC,KAAKqC,OAAO,8BACtCrC,KAAKqC,OAAO,gCACZrC,KAAKkK,WAELlK,KAAKooC,iBAGTpoC,KAAKkK,WAETlK,KAAKqoC,QAAQtsB,SA5aI,mBA6ajB/b,KAAKomC,OAAOkC,WAAWvsB,SA5aE,4BA8a7BqsB,eAAgB,WACZpoC,KAAKomC,OAASpmC,KAAK2iB,iBAAiB3iB,KAAKqoC,QAAS/H,EAASxhC,SAAS,EAAI+F,EAAQ0B,QAAQvG,KAAKuoC,eAAgBvoC,KAAKwoC,SAASxjC,MAAM,mBAAoB,CACjJyjC,UAAW,KACXC,UAAW,KACXnX,OAAQvxB,KAAKyI,WACbkgC,gBAAgB,EAChBjG,YAAY,EACZ1O,SAAS,EACTE,qBAAqB,EACrB5F,MAAOtuB,KAAK4oC,sBAAsB,yBAA2B,WACzD,OAAO5oC,KAAKyI,WAAWsmB,cACzBruB,KAAKV,MAAQA,KAAKuoC,eAAeja,SAEvCtuB,KAAKomC,OAAO9vB,GAAG,CACXuyB,QAAS7oC,KAAKimC,qBAAqBvlC,KAAKV,MACxC8oC,MAAO9oC,KAAK+oC,mBAAmBroC,KAAKV,MACpCgpC,OAAQhpC,KAAKipC,oBAAoBvoC,KAAKV,MACtCkpC,OAAQlpC,KAAKmpC,oBAAoBzoC,KAAKV,MACtCopC,aAAcppC,KAAKqpC,qBAAqB3oC,KAAKV,QAE7CA,KAAKqC,OAAO,iCACZrC,KAAKomC,OAAOkD,QAAQta,SAExBhvB,KAAKupC,mBAAmBvpC,KAAKomC,OAAOvR,YACpC70B,KAAKqpC,wBAETJ,oBAAqB,WACjBjpC,KAAKkK,WACLlK,KAAKqC,OAAO,sBAAwBrC,KAAKwpC,SAE7CL,oBAAqB,WACjBnpC,KAAKkK,WACDlK,KAAKqC,OAAO,kCACZ,EAAIgG,EAAYohC,gBAAe,EAAIzvB,EAAUlb,SAASkB,KAAKomC,OAAOnU,WAAWwI,WAGrFiP,qBAAsB7/B,EAAQsiB,KAC9Boc,aAAc,WACV,IAAIoB,EAAS3pC,KACT+R,GAAS,EAAIlN,EAAQ0B,QAAQvG,KAAKkK,WAAY,CAC9C0/B,aAAc5pC,KAAK6pC,wBACnB3V,qBAAqB,EACrB8H,aAAc,KACd8N,UAAW,WACP,OAAO,EAAI9vB,EAAUlb,SAAS4hC,GAAQtM,UAE1C5D,UAAWxwB,KAAKqC,OAAO,6BACvBkgC,MAAOviC,KAAKqC,OAAO,yBACnBmgC,cAAexiC,KAAKulC,qBAAqB,iCACzC9C,gBAAiBziC,KAAKqC,OAAO,mCAC7BqgC,WAAY1iC,KAAKqC,OAAO,8BACxB2xB,QAASh0B,KAAKqC,OAAO,2BACrB8xB,oBAAqBn0B,KAAKqC,OAAO,yCAqBrC,cAnBO0P,EAAO3J,iBACP2J,EAAOrJ,SACV1I,KAAKqC,OAAO,kCACZ0P,EAAOrJ,SAAW1I,KAAKqC,OAAO,oBAAsB,CAChD4yB,GAAI,WACJC,GAAI,WACJC,GAAIn1B,KAAKif,WACT,CACAgW,GAAI,WACJC,GAAI,cACJC,GAAIn1B,KAAKif,WAEblN,EAAOmiB,qBAAsB,IAChC,EAAIh1B,EAAUyH,MAAM,CAAC,WAAY,YAAa,QAAS,WAAW,SAASC,EAAGmjC,GAC3E,IAAIC,EAAmBL,EAAOtnC,OAAO,mBAAmBgZ,OAAO0uB,SAC3D,IAAWC,IACXj4B,EAAOg4B,GAAcC,MAGtBj4B,GAEX83B,sBAAuB,WACnB,IAAII,EAAgB,eAAiBjqC,KAAKqC,OAAO,kBAAoBrC,KAAKkqC,2BAA6B,GACnGC,EAAenqC,KAAKoqC,yBACpBD,GACAF,EAAc3jC,KAAK6jC,GAEvB,IAAIE,EAAcrqC,KAAKsqC,wBAIvB,OAHID,GACAJ,EAAc3jC,KAAK+jC,GAEhBrqC,KAAKuqC,sBAAsBN,IAEtCC,yBAA0B,WACtB,MAAO,CAAC,CACJM,SAAU,OACVzkC,QAAS,CACLqnB,QAASptB,KAAKyqC,oBAAoB/pC,KAAKV,MACvC2C,KAAM3C,KAAKqC,OAAO,uBAI9B+nC,uBAAwB,WACpB,IAAIM,EAAS1qC,KACb,OAAOA,KAAKqC,OAAO,oBAAsB,CACrCmoC,SAAU,SACVpd,QAASptB,KAAK2qC,qBAAqBjqC,KAAKV,MACxC+F,QAAS,CACL6kC,cAAe,SAAS/+B,GACpBA,EAAE+oB,UAAUmD,mBAAmB,SAAU2S,EAAOG,MAAMnqC,KAAKgqC,KAE/D/nC,KAAM3C,KAAKqC,OAAO,sBAEtB,MAERioC,sBAAuB,WACnB,OAAOtqC,KAAKqC,OAAO,mBAAqB,CACpCmoC,SAAU,QACVpd,QAASptB,KAAK8qC,YAAYpqC,KAAKV,MAC/B+F,QAAS,CACLpD,KAAM3C,KAAKqC,OAAO,qBAEtB,MAERooC,oBAAqB,SAASryB,GACtBA,GACApY,KAAKkY,sBAAsBE,EAAK8F,OAEpCle,KAAKqC,OAAO,QAASrC,KAAK+qC,aAAa/qC,KAAKgrC,yBAC5ChrC,KAAKkK,YAETygC,qBAAsB,WAClB3qC,KAAKirC,mBACLjrC,KAAKkK,YAETghC,wBAAyB,WACjBlrC,KAAKqC,OAAO,WACZrC,KAAKmrC,0BAGbC,kBAAmB,WACXprC,KAAKqC,OAAO,gBAAkBrC,KAAKqC,OAAO,0BAC1CrC,KAAKqC,OAAO,wBAAyBrC,KAAKyI,WAAW6lB,SAEzDtuB,KAAKomC,QAAUpmC,KAAKmrC,0BAExBj+B,OAAQ,WACJ,OAAOlN,KAAKqrC,aAAerrC,KAAKkK,YAEpCohC,oBAAqB,WACjBtrC,KAAKkK,WACLlK,KAAKurC,iBAETA,cAAe,WACX,IAAIC,EAASxrC,KACTyrC,EAAkBzrC,KAAKqC,OAAO,iBAElC,GADArC,KAAK0rC,mBAAmBD,GACpBA,EAAiB,CACjB,IAAIE,EAAiB3rC,KAAKgoC,iBAAkB,EAAIhuB,EAAUlb,SAAS,SAASid,SA3kBtD,4BA4kBlB6vB,EAAa5rC,KAAKqrC,aAAc,EAAIrxB,EAAUlb,SAAS,SAASid,SA7kBtD,oBA6kBoFS,SAASmvB,GACvGE,EAAgBriC,EAAS1K,QAAQmgC,UACjC6M,EAAaD,EAAcE,SAAWF,EAAcr1B,QAAQ,IAAM,EAAI,OAAS,SAC/Ew1B,GAA6B,EACjChsC,KAAKkmC,WAAalmC,KAAK2iB,iBAAiBipB,EAAYrL,EAAUzhC,QAAS,CACnEmtC,YAAa,WACT,OAAOD,GAA6B,GAExCE,UAAW,WACP,OAAOF,GAA6B,GAExCG,WAAY,WACR,OAAOH,GAA6B,GAExCI,kBAAmB,SAASC,GACxB,OAAOL,GAA8BR,EAAOjhB,MAAM/b,iBAAiB69B,IAEvErxB,KAAM8wB,EACN1K,iBAAiB,EACjBkL,iBAAkBtsC,KAAKqC,OAAO,oBAC9Bw0B,eAAgB72B,KAAKusC,eAAe7rC,KAAKV,QAE7CA,KAAKwsC,6BACLb,EAAe5V,aAAa/1B,KAAKysC,QACjCzsC,KAAK0sC,0BAGbC,cAAe,WACX3sC,KAAKgoC,iBAAmBhoC,KAAKgoC,gBAAgBhZ,gBACtChvB,KAAKgoC,gBACZhoC,KAAKqrC,aAAerrC,KAAKqrC,YAAYrc,gBAC9BhvB,KAAKqrC,mBACLrrC,KAAKkmC,YAEhB0G,uBAAwB,SAAS/gC,GAC7B,IAAIsf,GAAe,EAAInR,EAAUlb,SAASkB,KAAKuqB,MAAMloB,OAAO,mBACvD8oB,EAAa9nB,SAGlBwI,EAAE0B,iBACF1B,EAAE0lB,OAASpG,EAAapL,IAAI,GAC5B/f,KAAKkY,sBAAsBrM,GAC3B7L,KAAK6sC,gBAAgBhhC,EAAEkb,SAAUoE,KAErCqhB,2BAA4B,WACxBxsC,KAAKkmC,WAAWnO,mBAAmB,SAAU/3B,KAAK6qC,MAAMnqC,KAAKV,OAC7DA,KAAKkmC,WAAWnO,mBAAmB,QAAS/3B,KAAK4sC,uBAAuBlsC,KAAKV,OAC7EA,KAAKkmC,WAAWnO,mBAAmB,QAAS/3B,KAAK4sC,uBAAuBlsC,KAAKV,OAC7EA,KAAKkmC,WAAWnO,mBAAmB,MAAOluB,EAAQsiB,MAClDnsB,KAAKkmC,WAAWnO,mBAAmB,OAAQluB,EAAQsiB,OAEvDuf,mBAAoB,SAASD,GACrBzrC,KAAKomC,QACLpmC,KAAKomC,OAAOkC,WAAWllB,YA3nBH,yBA2nB0CqoB,IAGtEiB,sBAAuB,WACnB,GAAK1sC,KAAKqrC,YAAV,CAGA,IAAIyB,EAAkB9sC,KAAKqC,OAAO,mBAC9B0+B,EAAc/gC,KAAKqC,OAAO,qBAC1ByqC,GAAmB/L,IAAgB3mB,EAAStb,QAAQsL,OAAO,YAC3D22B,EAAc3mB,EAAStb,QAAQiuC,aAAa,6BAA9B3yB,CAA4D0yB,IAE9E9sC,KAAKkmC,WAAW7jC,OAAO,cAAe0+B,KAE1CiM,sBAAuBnjC,EAAQsiB,KAC/B8gB,YAAa,WACT,IAAIC,EAASltC,KACbA,KAAKkK,WACLlK,KAAKuqB,MAAMwN,mBAAmB,UAAU,WACpCmV,EAAOrC,YAGfsC,YAAa,WACT,OAAO,EAAItoC,EAAQ0B,QAAQvG,KAAKkK,WAAY,CACxCkxB,SAAU,EACV8G,QAASliC,KAAKqC,OAAO,WACrB8/B,cAAeniC,KAAKulC,qBAAqB,iBACzChE,mBAAoBvhC,KAAKqC,OAAO,sBAChCm/B,mBAAoBxhC,KAAKqC,OAAO,sBAChCo/B,gBAAiBzhC,KAAKqC,OAAO,mBAC7Bq/B,eAAgB1hC,KAAKqC,OAAO,kBAC5Bs/B,eAAgB3hC,KAAKqC,OAAO,kBAC5Bu/B,gBAAiB5hC,KAAKqC,OAAO,mBAC7Bw/B,SAAU7hC,KAAK4jC,eAAeljC,KAAKV,MACnC8hC,cAAe9hC,KAAK6jC,oBAAoBnjC,KAAKV,MAC7C+hC,cAAe/hC,KAAK8jC,oBAAoBpjC,KAAKV,MAC7CgiC,aAAchiC,KAAKqC,OAAO,gBAC1B4/B,eAAgBjiC,KAAKqC,OAAO,kBAC5B+qC,gBAAiBptC,KAAKqC,OAAO,iBAC7BgrC,mBAAoBrtC,KAAKstC,iCAGjCA,4BAA6B,WACzB,OAAOttC,KAAKqC,OAAO,yBAA2BrC,KAAKutC,wBAAwB7sC,KAAKV,MAAQ6J,EAAQsiB,MAEpGqhB,yBAA0B,WACtBxtC,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WAC1B9X,KAAKirC,oBAETwC,gBAAiB,WACRztC,KAAKqC,OAAO,uBAGbrC,KAAKqC,OAAO,iBACZrC,KAAKkmC,WAAWsD,QAEhBlgC,EAAexK,QAAQmO,QAAQjN,KAAKysC,OAAQ,WAGpDiB,aAAc,WACV,OAAO1tC,KAAK2kC,SAEhBgJ,4BAA6B,WACzB,OAAO3tC,KAAK2kC,SAEhBiJ,sBAAuB,SAAS/hC,GAC5B7L,KAAKkY,sBAAsBrM,EAAEqS,OAC7Ble,KAAK6sC,gBAAgBhhC,EAAEkb,SAAUlb,EAAEqS,MAAMoe,gBAE7CuQ,gBAAiB,SAAS9lB,EAAUwK,GAChCvxB,KAAKuqB,MAAMuO,WAAWvH,GAClB,cAAgBvxB,KAAKqC,OAAO,mBAC5BrC,KAAKyqC,uBAGbO,qBAAsB,WAClB,OAAOhrC,KAAKqC,OAAO,WAAarC,KAAKuqB,MAAMloB,OAAO,oBAAoB4kB,MAAM,GAAKjnB,KAAKuqB,MAAMloB,OAAO,qBAEvGyoC,YAAa,SAASj/B,GAClB7L,KAAKkY,sBAAsBrM,EAAEqS,OAC7Ble,KAAKqC,OAAO,QAAS,MACrBrC,KAAKqC,OAAO,UAAU,IAE1BwrC,aAAc,WACV,OAAO7tC,KAAKqC,OAAO,kBAAoBrC,KAAKkmC,WAAalmC,KAAKkmC,WAAW7jC,OAAO,SAAW,IAE/FyrC,kBAAmB,WACf,IAAIC,EAAS/tC,KACb,OAAOA,KAAKkK,WAAW8jC,QAAO,WAC1BD,EAAO9C,uBAGfgD,mBAAoB,WACZ,IAAMjuC,KAAKyI,WAAWke,KAAK,wBAA8BtjB,QAG7DrD,KAAKkK,YAETqO,OAAQ,WACJvY,KAAK6kC,eAAe7V,SACpBhvB,KAAKqrC,YAAc,YACZrrC,KAAKglC,WACZhlC,KAAKkK,YAETgkC,sBAAuB,WACnBluC,KAAKkK,YACL,EAAIrF,EAAQ0B,QAAQvG,KAAKmuC,mBAAoB,CACzC5L,MAAO,CACH6L,MAAO,OACPC,MAAO,yBAEX7L,cAAe,CACX4L,MAAO,OACPC,MAAO,iCAEX5L,gBAAiB,CACb2L,MAAO,OACPC,MAAO,mCAEX3L,WAAY,CACR0L,MAAO,OACPC,MAAO,8BAEXC,WAAY,CACRF,MAAO,OACPC,MAAO,yBAEXlH,YAAa,CACTiH,MAAO,OACPC,MAAO,0BAEXra,QAAS,CACLoa,MAAO,OACPC,MAAO,2BAEXla,oBAAqB,CACjBia,MAAO,OACPC,MAAO,uCAEX3lC,SAAU,CACN0lC,MAAO,OACPC,MAAO,4BAEXjmC,UAAW,CACPgmC,MAAO,OACPC,MAAO,gCAInBl2B,eAAgB,SAASC,GACrB,IAAIjW,EAAOiW,EAAKjW,KACZC,EAAQgW,EAAKhW,MACjB,OAAQD,GACJ,IAAK,aACDnC,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WAC1B9X,KAAKqlC,eACL,MACJ,IAAK,gBACGrlC,KAAKomC,SACLpmC,KAAK2sC,gBACL3sC,KAAKurC,iBAET,MACJ,IAAK,oBACDvrC,KAAK0sC,wBACL,MACJ,IAAK,kBACD1sC,KAAK0sC,wBACL1sC,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WAC1B,MACJ,IAAK,QACL,IAAK,gBACL,IAAK,kBACL,IAAK,UACL,IAAK,YACL,IAAK,WACL,IAAK,sBACL,IAAK,aACD9X,KAAKuuC,gBAAgBpsC,EAAMC,GAC3B,MACJ,IAAK,aACL,IAAK,cACDpC,KAAKglB,cACL,MACJ,IAAK,kBACL,IAAK,kBACL,IAAK,mBACDhlB,KAAKuuC,gBAAgB,eAAgBvuC,KAAK6pC,yBAC1C,MACJ,IAAK,iBACD7pC,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WAC1B,MACJ,IAAK,aACD9X,KAAKuuC,gBAAgB,QAAS,SAAWnsC,EAAQpC,KAAKwuC,cAAc,mBAAmBlgB,MAAQlsB,GAC/F,MACJ,IAAK,cACDpC,KAAKuuC,gBAAgB,SAAU,SAAWnsC,EAAQpC,KAAKwuC,cAAc,mBAAmBpa,OAAShyB,GACjG,MACJ,IAAK,gBACDpC,KAAKujC,yBACL,MACJ,IAAK,gBACDvjC,KAAKwjC,yBACL,MACJ,IAAK,qBACL,IAAK,qBACL,IAAK,kBACL,IAAK,iBACL,IAAK,iBACL,IAAK,kBACL,IAAK,iBACL,IAAK,UACL,IAAK,gBACDxjC,KAAKyuC,eAAetsC,GACpB,MACJ,IAAK,WACDnC,KAAKsjC,oBACL,MACJ,IAAK,eACDtjC,KAAKyuC,eAAe,eAAgBzuC,KAAKqC,OAAO,iBAChD,MACJ,IAAK,uBACL,IAAK,+BACD,MACJ,IAAK,mBACGrC,KAAKqC,OAAO,kCACZrC,KAAKqC,OAAO,gCAA4B,GACxCrC,KAAKmoC,gBAET,MACJ,QACInoC,KAAKkK,SAAS2N,MAAM7X,KAAM8X,aAGtC0xB,MAAO,WACHxpC,KAAKqC,OAAO,UAAYrC,KAAKytC,kBAAoBnkC,EAAexK,QAAQmO,QAAQjN,KAAK0tC,eAAgB,UAEzGgB,MAAO,WACH,OAAO1uC,KAAK2kC,YAGpB,EAAIv7B,EAAuBtK,SAAS,WAAY8hC,GAChD,IAAIphC,EAAWohC,EACf/hC,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,QACzB8F,EAAO/F,QAAQC,QAAU8F,EAAO/F,S,kCCt5BhCA,EAAQC,aAAU,EAClB,IAAIkb,EAAYhb,EAAuB,EAAQ,IAC3CsK,EAAiBtK,EAAuB,EAAQ,KAChDD,EAAWC,EAAuB,EAAQ,MAC1Cqb,EAAY,EAAQ,IACpBjR,EAAyBpK,EAAuB,EAAQ,KACxDmb,EAAMnb,EAAuB,EAAQ,KACrCwK,EAAWxK,EAAuB,EAAQ,KAC1C2vC,EAAO3vC,EAAuB,EAAQ,KACtC4vC,EAAa,EAAQ,IACrB1vC,EAAY,EAAQ,GACpB2F,EAAU,EAAQ,GAClBqV,EAAS,EAAQ,IACjB/a,EAAQ,EAAQ,GAChBC,EAAS,EAAQ,IACjByhB,EAAW7hB,EAAuB,EAAQ,KAC1C8F,EAAY9F,EAAuB,EAAQ,OAC3C6vC,EAAmB7vC,EAAuB,EAAQ,OAClD8vC,EAAoB9vC,EAAuB,EAAQ,OAEvD,SAASA,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAAI0vC,EAAY,CACZC,aAAclqC,EAAUhG,QACxBmwC,OAAQJ,EAAiB/vC,QACzBowC,KAAMJ,EAAkBhwC,SAMxBqwC,EAAMR,EAAK7vC,QAAQW,QAAQ,CAC3BwK,mBAAoB,WAChB,OAAO,EAAIpF,EAAQ0B,QAAQvG,KAAKkK,WAAY,CACxCklC,OAAQ,CACJnnC,UAAW,KACXC,UAAW,MAEfmnC,OAAQ,CACJ9rC,IAAK,EACLE,IAAK,GAET6rC,KAAM,EACNhhB,MAAO,IACP8F,OAAQ,IACRprB,KAAM,UACNumC,SAAU,SACVC,YAAY,EACZC,QAAS,GACTC,cAAe,KACfC,cAAe,KACfC,gBAAiB,KACjBC,OAAQ,GACRC,aAAc,KACdC,eAAgB,KAChBttC,IAAK,CACDysC,KAAM,GACND,OAAQ,GACRD,aAAc,IAElBgB,OAAQ,CACJd,KAAM,GACND,OAAQ,GACRD,aAAc,IAElBiB,UAAU,EACVC,QAAS,KACTC,UAAW,KACX/iB,QAAS,QAGjB3R,qBAAsB,WAClB,OAAOzb,KAAKkK,WAAWmR,OAAO,CAAC,CAC3BK,OAAQ,WACJ,MAAO,YAAclS,EAAS1K,QAAQiW,OAAOC,aAAexL,EAAS1K,QAAQ8c,eAEjF7V,QAAS,CACL6wB,mBAAmB,OAI/BsX,sBAAuB,WACnBluC,KAAKkK,YACL,EAAIrF,EAAQ0B,QAAQvG,KAAKmuC,mBAAoB,CACzC1rC,IAAK,CACD2rC,MAAO,OACPC,MAAO,aAInB/oC,MAAO,WACHtF,KAAKkK,WACLlK,KAAKyI,WAAWsT,SAjER,UAiE4BA,SA9DnB,mBA+DjB/b,KAAKowC,iBAAmBrxC,EAASD,QAAQsC,UACzCpB,KAAKqwC,aAAa,YAClBrwC,KAAKqwC,aAAa,WAClBrwC,KAAKqwC,aAAa,UAClBrwC,KAAKswC,iBACLtwC,KAAKuwC,cACLvwC,KAAKwwC,UAAY,IAErBr1B,cAAe,WACX,OAAO,GAEXk1B,aAAc,SAAShuC,GACnB,IAAID,EAAQpC,KAAKqC,OAAOA,GACxB,GAAI,YAAcA,IAAWqB,MAAMC,QAAQvB,GACvC,MAAM+X,EAAIrb,QAAQmsB,MAAM,SAE5B,GAAI,WAAa5oB,IAAWqB,MAAMC,QAAQvB,GACtC,MAAM+X,EAAIrb,QAAQmsB,MAAM,UAGhCqlB,eAAgB,WACZtwC,KAAKE,aAAc,EAAI8Z,EAAUlb,SAAS,SAASid,SAtFjC,oBAuFlB/b,KAAKyI,WAAWojB,OAAO7rB,KAAKE,cAEhCqwC,YAAa,WACT,IAAIzuB,GAAY,EAAI1iB,EAAO4E,cAAc6c,EAAS/hB,QAAQijB,KAAM/hB,KAAKiE,MACrEqF,EAAexK,QAAQwX,GAAGtW,KAAKyI,WAAYqZ,EAAW9hB,KAAKywC,aAAa/vC,KAAKV,QAEjFywC,aAAc,SAAS5kC,GACI7L,KAAK8E,WAAa9E,KAAK8E,UAAU7C,iBAAiB4J,KAAO7L,KAAKqC,OAAO,aAExFwJ,EAAE6O,mBAGVg2B,cAAe,SAASruC,GACpB,IAAID,EAAQpC,KAAKqC,OAAOA,GACxBrC,KAAKwwC,UAAUnuC,GAAUD,EAAMmN,SAEnC6U,QAAS,WACLpkB,KAAKkK,WACLlK,KAAK2wC,gBACL3wC,KAAK0wC,cAAc,WACnB1wC,KAAK0wC,cAAc,UACnB1wC,KAAK8E,UAAY,IAAIiqC,EAAU/uC,KAAKqC,OAAO,cAAcrC,KAAMA,KAAKE,aACpEF,KAAK4wC,kBAAkB,SAAU5wC,KAAKwwC,UAAUf,QAASzvC,KAAKwwC,UAAUX,SAE5Ec,cAAe,WACX,IAAIE,EACA7wC,KAAKqC,OAAO,aACZwuC,GAAU,EAAI72B,EAAUlb,SAAS,SAASid,SAjH/B,iBAkHX/b,KAAKyI,WAAWojB,OAAOglB,KAEvBA,EAAU7wC,KAAKyI,WAAWke,KAAK,mBACvBqI,UAGhBzW,OAAQ,WACJvY,KAAK8wC,mBACD9wC,KAAK8E,WACL9E,KAAK8E,UAAU/C,QAEnB/B,KAAK8E,UAAY,KACjB9E,KAAKowC,iBAAmBrxC,EAASD,QAAQsC,UACzCpB,KAAKsC,gBAAgB,SAAU,CAC3B2F,UAAW,KACXC,UAAW,cAERlI,KAAK+wC,sBAEhB54B,eAAgB,SAASC,GACrB,IAAIjW,EAAOiW,EAAKjW,KACZ6uC,EAAYhxC,KAAKixC,iBAErB,OADAjxC,KAAKixC,iBAAmB,KAChB9uC,GACJ,IAAK,WACDnC,KAAK2wC,gBACL3wC,KAAKkK,SAASkO,GACd,MACJ,IAAK,QACL,IAAK,SACDpY,KAAKkK,SAASkO,GACdpY,KAAKorC,oBACL,MACJ,IAAK,WACDprC,KAAK+wC,sBAAuB,EAC5B/wC,KAAKglB,cACL,MACJ,IAAK,MACL,IAAK,SACD7K,EAAIrb,QAAQ05B,IAAI,SAChB,MACJ,IAAK,SACDx4B,KAAK4wC,kBAAkB,gBACvB,MACJ,IAAK,SACD5wC,KAAK4wC,kBAAkB,gBACvB,MACJ,IAAK,OACD5wC,KAAK4wC,kBAAkB,cACvB,MACJ,IAAK,OACD5wC,KAAK4wC,kBAAkB,iBACvB,MACJ,IAAK,WACD5wC,KAAK4wC,kBAAkB,iBAAkB5wC,KAAKwwC,UAAUf,QAASzvC,KAAKwwC,UAAUX,QAChF,MACJ,IAAK,aACD7vC,KAAK4wC,kBAAkB,kBACvB,MACJ,IAAK,UACL,IAAK,SACD5wC,KAAKqwC,aAAaluC,GAClB,IAAI+uC,EAAYlxC,KAAKwwC,UAAUruC,GAC/BnC,KAAK0wC,cAAcvuC,GACnBnC,KAAK4wC,kBAAkB,UAAW,EAAIhC,EAAWuC,UAAUhvC,GAAO6uC,EAAYA,EAAUI,QAAUF,EAAWF,EAAYA,EAAUK,MAAQrxC,KAAKwwC,UAAUruC,IAAO5B,MAAK,SAASwR,GACvKi/B,GACAA,EAAU5vC,QAAQ2Q,MAG1B,MACJ,IAAK,gBACD/R,KAAK4wC,kBAAkB,gBAAiB5wC,KAAKwwC,UAAUf,QAASzvC,KAAKwwC,UAAUf,SAC/E,MACJ,IAAK,UACL,IAAK,YACL,IAAK,gBACL,IAAK,kBACL,IAAK,eACL,IAAK,iBACL,IAAK,UACD,MACJ,QACIzvC,KAAKkK,SAAS2N,MAAM7X,KAAM8X,aAGtCw5B,mBAAoB,SAAS1uC,GACrBA,GACA5C,KAAKorC,qBAGbA,kBAAmB,WACfprC,KAAK4wC,kBAAkB,qBAE3BA,kBAAmB,SAASzuC,GACxB,IAAI4D,EAAU,GAAGwJ,MAAMyT,KAAKlL,WAAWvI,MAAM,GACzCgiC,EAAqBvxC,KAAK+wC,qBAc9B,OAbA/wC,KAAKowC,iBAAmBpwC,KAAKowC,iBAAiB7vC,KAAK,WAC/C,OAAKP,KAAK8E,WAAaysC,EACZxyC,EAASD,QAAQsC,UAErBpB,KAAK8E,UAAU3C,GAAM0V,MAAM7X,KAAK8E,UAAWiB,GAASxF,KAAK,SAASwR,GAMrE,OALAA,GAAS,EAAImI,EAAOs3B,aAAaz/B,IACP,KACL/R,KAAKyxC,WACtBzxC,KAAK0xC,sBAEF3/B,EAAO,IAChBrR,KAAKV,QACTU,KAAKV,OACAA,KAAKowC,kBAEhBsB,oBAAqB,WACjB1xC,KAAKsE,sBAAsB,UAA3BtE,CAAsC,CAClC2xC,YAAa3xC,KAAK8E,UAAUhF,SAGpC8xC,qBAAsB,WAClB5xC,KAAKsE,sBAAsB,YAA3BtE,IAEJsC,gBAAiB,SAASH,EAAMC,GAC5BpC,KAAK6xC,8BAA8B1vC,EAAMC,IAE7C0vC,UAAW,SAAS1rC,GAChB,OAAOpG,KAAK+xC,aAAa,UAAW3rC,IAExC4rC,aAAc,SAAS5rC,GACnB,OAAOpG,KAAKiyC,gBAAgB,UAAW7rC,IAE3C8rC,SAAU,SAASC,GACf,OAAOnyC,KAAK+xC,aAAa,SAAUI,IAEvCC,YAAa,SAASD,GAClB,OAAOnyC,KAAKiyC,gBAAgB,SAAUE,IAE1CJ,aAAc,SAAShI,EAAYsI,GAC/B,IAAIC,EAActyC,KAAKqC,OAAO0nC,GAC1BwI,GAAe,EAAIr4B,EAAOs3B,aAAaa,GAE3C,OADAC,EAAYhsC,KAAKuR,MAAMy6B,EAAaC,GAC7BvyC,KAAKwyC,0BAA0BzI,EAAYuI,EAAaC,EAAc,KAEjFN,gBAAiB,SAASlI,EAAY0I,GAClC,IAAIH,EAActyC,KAAKqC,OAAO0nC,GAC1B2I,GAAiB,EAAIx4B,EAAOs3B,aAAaiB,GAU7C,OATA,EAAIvzC,EAAUyH,MAAM+rC,GAAgB,SAASC,EAAeF,GACxD,IAAIhiC,GAAQ,EAAItR,EAAM0E,WAAW4uC,GAAiBA,GAAgB,EAAIv4B,EAAO0C,SAAS61B,EAAeH,GACrG,IAAe,IAAX7hC,EAIA,MAAM0J,EAAIrb,QAAQ05B,IAAI,SAAS,EAAIoW,EAAWuC,UAAUpH,EAAW6I,UAAU,EAAG7I,EAAW1mC,OAAS,IAAKovC,GAHzG,IAAII,EAAWP,EAAYprC,OAAOuJ,EAAO,GAAG,GAC5CiiC,EAAexrC,OAAOyrC,EAAe,EAAGE,MAKzC7yC,KAAKwyC,0BAA0BzI,EAAYuI,EAAa,GAAII,IAEvEF,0BAA2B,SAASzI,EAAYuI,EAAaC,EAAcG,GACvE,OAAO,EAAIr4B,EAAUy4B,aAAa,IAAI/zC,EAASD,QAAQ,SAASsC,GAC5DpB,KAAKixC,iBAAmB,CACpB7vC,QAASA,EACTiwC,MAAOkB,EACPnB,QAASsB,GAEb1yC,KAAKqC,OAAO0nC,EAAYuI,IAC1B5xC,KAAKV,OAAOO,MAAK,SAASwR,GACxB,OAAOA,GAAU,IAAMA,EAAO1O,OAAS0O,EAAO,GAAKA,KACnD/R,UAGZ,EAAIoJ,EAAuBtK,SAAS,QAASqwC,GAC7C,IAAI3vC,EAAW2vC,EACftwC,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,QACzB8F,EAAO/F,QAAQC,QAAU8F,EAAO/F,S,kCC7ThCA,EAAQC,aAAU,EAClB,IAAII,EAAY,EAAQ,GACpBoK,EAAiBtK,EAAuB,EAAQ,KAChDD,EAAWC,EAAuB,EAAQ,MAC1C8F,EAAY9F,EAAuB,EAAQ,OAC3C+zC,EAAS/zC,EAAuB,EAAQ,MACxCuwB,EAAS,EAAQ,IAErB,SAASvwB,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAoIIG,EAnIuBsF,EAAUhG,QAAQW,QAAQ,CACjDuzC,kBAAmB,SAASjwC,GACxB,IAAIkwC,EAASjzC,KAAK8C,WAAWC,GAC7B,OAAOkwC,EAASA,EAAO1vC,IAAM,IAAM0vC,EAAOxvC,IAAMV,EAAS8P,WAAW7C,QAAQ,KAAM,MAEtF1P,YAAa,WACT,OAAON,KAAKkzC,cAEhBvyC,iBAAkB,WACd,OAAOX,KAAKkzC,cAEhBtyC,cAAe,WACX,OAAOZ,KAAKkzC,cAEhBryC,aAAc,WACV,OAAO9B,EAASD,QAAQsC,WAE5BN,aAAc,WACV,OAAOd,KAAKkzC,cAEhBnyC,WAAY,WACR,OAAOf,KAAKkzC,cAEhBlyC,eAAgB,WACZ,OAAOjC,EAASD,QAAQsC,WAE5BG,WAAY,SAASwE,GACjB,IAAIW,EAAO1G,KACX,OAAOA,KAAKkzC,aAAa3yC,MAAK,SAASwR,GAMnC,OALA,EAAI7S,EAAUyH,MAAMZ,GAAS,SAASa,EAAGb,GACrCW,EAAKlC,uBAAuB,CACxBuB,QAASA,OAGVgM,MAGfvQ,cAAe,SAASuE,GACpB,IAAIW,EAAO1G,KACX,OAAOA,KAAKkzC,aAAa3yC,MAAK,SAASwR,GAMnC,OALA,EAAI7S,EAAUyH,MAAMZ,GAAS,SAASa,EAAGb,GACrCW,EAAKjC,yBAAyB,CAC1BsB,QAASA,OAGVgM,MAGftQ,eAAgB,WACZ,OAAO1C,EAASD,QAAQsC,WAE5BS,UAAW,SAASkE,GAChB,IAAIW,EAAO1G,KACX,OAAOA,KAAKkzC,aAAa3yC,MAAK,SAASwR,GAMnC,OALA,EAAI7S,EAAUyH,MAAMZ,GAAS,SAASa,EAAGb,GACrCW,EAAKhC,sBAAsB,CACvBqB,QAASA,OAGVgM,MAGfjQ,aAAc,SAASiE,GACnB,IAAIW,EAAO1G,KACX,OAAOA,KAAKkzC,aAAa3yC,MAAK,SAASwR,GAMnC,OALA,EAAI7S,EAAUyH,MAAMZ,GAAS,SAASa,EAAGb,GACrCW,EAAK/B,wBAAwB,CACzBoB,QAASA,OAGVgM,MAGfhQ,MAAO,WAGH,OAFA/B,KAAKE,YAAYi+B,IAAI,kBAAmB,QACxC70B,EAAexK,QAAQmX,IAAIjW,KAAKE,YAAaF,KAAK+D,mBAAmBwrB,EAAOptB,OACrEpD,EAASD,QAAQsC,WAE5B+xC,YAAa,WACT,OAAO,GAEXD,WAAY,WACR,IAAIzwC,EAAMzC,KAAKuC,WAAW,gBACtBxC,EAAaC,KAAKE,YAClBkzC,EAAiB,CAAC,eAAgB,QAAU1/B,KAAKoL,MAAM/e,EAAWuuB,SAAW,IAAM5a,KAAKoL,MAAM/e,EAAWq0B,UAAW,WAAap0B,KAAKkC,QAAQ,QAAS,UAAYlC,KAAKgzC,kBAAkBhzC,KAAKkC,QAAQ,WAAY,QAAUlC,KAAKkC,QAAQ,QAASlC,KAAKqzC,qBAC5PD,EAAe9sC,KAAKuR,MAAMu7B,EAAgBpzC,KAAKszC,oBAC3C7wC,GACA2wC,EAAe9sC,KAAK,OAAS7D,GAEjC,IAAI8wC,EA1FY,8CA0FkBH,EAAe56B,KAAK,KAGtD,OAFAxY,KAAKE,YAAYi+B,IAAI,aAAc,QAAUoV,EAAU,oBACvDvzC,KAAKwzC,oBACEz0C,EAASD,QAAQsC,SAAQ,IAEpCiyC,kBAAmB,WACf,IAAI3sC,EAAO1G,KACPyvC,EAAU,GACVgE,EAAazzC,KAAKkC,QAAQ,iBAM9B,OALIuxC,GACAhE,EAAQnpC,KAAK,QAAUmtC,IAC1B,EAAIv0C,EAAUyH,MAAM3G,KAAKkC,QAAQ,YAAY,SAAS0E,EAAGR,GACtDqpC,EAAQnpC,KAAKI,EAAKssC,kBAAkB5sC,EAAOrD,cAExC,WAAa0sC,EAAQj3B,KAAK,MAErC86B,iBAAkB,WACd,IAAI5sC,EAAO1G,KACP6vC,EAAS,GAWb,OAVA,EAAI3wC,EAAUyH,MAAM3G,KAAKkC,QAAQ,WAAW,SAAS0E,EAAGurC,GACpD,IAAIuB,EAAQ,IAAIX,EAAOj0C,QAAQqzC,EAAMuB,OAAShtC,EAAK9G,sBAAsB+zC,QAAQ3jC,QAAQ,IAAK,MAC1FqkB,EAAU3gB,KAAKoL,MAAM,KAAOqzB,EAAM9d,SAAW3tB,EAAK/G,yBAAyBkT,SAAS,IACpFyb,EAAQ6jB,EAAMyB,QAAUltC,EAAKhH,sBAC7Bm0C,EAAY,IAChB,EAAI30C,EAAUyH,MAAMwrC,EAAM0B,WAAW,SAASjtC,EAAGktC,GAC7CD,EAAUvtC,KAAKI,EAAKssC,kBAAkBc,OAE1CjE,EAAOvpC,KAAK,cAAgBotC,EAAQrf,EAAU,WAAa/F,EAAQ,IAAMulB,EAAUr7B,KAAK,SAErFq3B,GAEX2D,kBAAmB,WACf,IAAI9sC,EAAO1G,KACP8hB,EAAY9hB,KAAK+D,mBAAmBwrB,EAAOptB,MAC/CmH,EAAexK,QAAQmX,IAAIjW,KAAKE,YAAa4hB,GAC7CxY,EAAexK,QAAQwX,GAAGtW,KAAKE,YAAa4hB,GAAW,SAASjW,GAC5DnF,EAAKnC,iBAAiB,CAClB2Z,MAAOrS,UAMvBhN,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,S,kCCnJzBD,EAAQC,aAAU,EAClB,IAAIkb,EAAYhb,EAAuB,EAAQ,IAC3Cw/B,EAAU,EAAQ,IAClB30B,EAAU,EAAQ,GAClBL,EAAWxK,EAAuB,EAAQ,KAC1CD,EAAWC,EAAuB,EAAQ,MAC1C6F,EAAU,EAAQ,GAClB3F,EAAY,EAAQ,GACpB4F,EAAY9F,EAAuB,EAAQ,OAC3Cmb,EAAMnb,EAAuB,EAAQ,KACrC+zC,EAAS/zC,EAAuB,EAAQ,MACxC+0C,EAAQ/0C,EAAuB,EAAQ,MACvCG,EAAQ,EAAQ,GAEpB,SAASH,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAII20C,EAsCAC,EA1CAvT,GAAS,EAAIlC,EAAQmC,aAuCrBuT,EAAmB,WACnB,OAAOxT,EAAOuO,QAAUvO,EAAOuO,OAAOkF,MAwUtC30C,EArUiBsF,EAAUhG,QAAQW,QAAQ,CAC3C20C,SAAU,SAASprC,GACf,IAAIqrC,EAAW,CACXC,OAAQrF,OAAOkF,KAAKI,UAAUC,OAC9BC,QAASxF,OAAOkF,KAAKI,UAAUG,QAC/BC,UAAW1F,OAAOkF,KAAKI,UAAUK,WAErC,OAAOP,EAASrrC,IAASqrC,EAASC,QAEtCO,cAAe,SAAS7rC,GACpB,IAAI8rC,EAAgB,CAChBC,QAAS9F,OAAOkF,KAAKa,WAAWC,QAChCC,QAASjG,OAAOkF,KAAKa,WAAWG,SAEpC,OAAOL,EAAc9rC,IAAS8rC,EAAcC,SAEhDK,iBAAkB,SAASryC,GACvB,OAAO,IAAIhE,EAASD,QAAQ,SAASsC,GACjC,IAAI6xC,EAASjzC,KAAK8C,WAAWC,GACzBkwC,EACA7xC,EAAQ,IAAI6tC,OAAOkF,KAAKkB,OAAOpC,EAAO1vC,IAAK0vC,EAAOxvC,MAElDzD,KAAK+E,iBAAiBhC,GAAUxC,MAAK,SAAS6E,GAC1ChE,EAAQgE,OAGlB1E,KAAKV,QAEXiF,mBAAoB,GACpBE,qBAAsB,SAASpC,GAC3B,OAAO,IAAIhE,EAASD,SAAQ,SAASsC,IAC5B,EAAIjC,EAAMwT,WAAW5P,IAIX,IAAIksC,OAAOkF,KAAKmB,UACtBC,QAAQ,CACbC,QAASzyC,IACV,SAAS0yC,EAASC,GACbA,IAAWzG,OAAOkF,KAAKwB,eAAeC,GACtCx0C,EAAQq0C,EAAQ,GAAGI,SAAS9yC,WAE5BoX,EAAIrb,QAAQ05B,IAAI,QAASkd,GACzBt0C,EAAQ,IAAI6tC,OAAOkF,KAAKkB,OAAO,EAAG,QAXtCj0C,EAAQ,IAAI6tC,OAAOkF,KAAKkB,OAAO,EAAG,QAgB9CS,mBAAoB,SAAS/yC,GACzB,MAAO,CACHQ,IAAKR,EAASQ,MACdE,IAAKV,EAASU,QAGtBsyC,uBAAwB,SAASC,GAC7B,MAAO,CACH/tC,UAAWjI,KAAK81C,mBAAmBE,EAAaC,gBAChD/tC,UAAWlI,KAAK81C,mBAAmBE,EAAaE,kBAGxDtwC,UAAW,WACP,OAAO,IAAI7G,EAASD,QAAQ,SAASsC,GAC7B8yC,IACA9yC,KAEK6yC,IACDA,EAAmBj0C,KAAKm2C,kBAE5BlC,EAAiB1zC,KAAK,WACd2zC,IACA9yC,IAGJpB,KAAKm2C,iBAAiB51C,KAAKa,IAC7BV,KAAKV,SAEbU,KAAKV,OAAOO,MAAK,YAjHvByzC,EAAe,SAASjuC,GACpB/F,KAAK+6B,UAAYh1B,EAAQ2C,SACzB1I,KAAKo2C,QAAUrwC,EAAQsP,OACvBrV,KAAKq2C,oBAAqB,EAAIr8B,EAAUlb,SAAS,SAASq/B,IAAI,CAC1Dz1B,SAAU,WACV4tC,QAAS,OACTC,OAAQ,YACT1qB,OAAO9lB,EAAQywC,MAClBx2C,KAAKy2C,OAAO1wC,EAAQjG,OAEX0hB,UAAY,IAAIytB,OAAOkF,KAAKuC,YACzC1C,EAAaxyB,UAAUm1B,MAAQ,YACf,EAAI38B,EAAUlb,SAASkB,KAAK42C,WAAWC,oBAC7ChrB,OAAO7rB,KAAKq2C,oBAClBr2C,KAAK82C,eAAiB7H,OAAOkF,KAAKj2B,MAAM64B,eAAe/2C,KAAKq2C,mBAAmBt2B,IAAI,GAAI,QAAS,SAASlU,GACrGojC,OAAOkF,KAAKj2B,MAAMjR,QAAQjN,KAAM,SAChC6L,EAAE0B,kBACJ7M,KAAKV,OACPA,KAAKozB,QAET4gB,EAAaxyB,UAAUw1B,SAAW,WAC9B/H,OAAOkF,KAAKj2B,MAAM+4B,eAAej3C,KAAK82C,gBACtC92C,KAAKq2C,mBAAmBrnB,UAE5BglB,EAAaxyB,UAAU4R,KAAO,WAC1B,IAAI1qB,EAAW1I,KAAKk3C,gBAAgBC,qBAAqBn3C,KAAK+6B,WAC9D/6B,KAAKq2C,mBAAmBlY,IAAI,CACxBx1B,KAAMD,EAAS0uC,EAAIp3C,KAAKo2C,QAAQztC,KAChCm1B,IAAKp1B,EAAS2uC,EAAIr3C,KAAKo2C,QAAQtY,IAC/BwY,QAAS,eAwFjBH,eAAgB,WACZ,OAAO,IAAIp3C,EAASD,QAAQ,SAASsC,GACjC,IAAIqB,EAAMzC,KAAKuC,WAAW,UAC1Bm+B,EAAuB,mBAAIt/B,EAC3B2yC,EAAMj1C,QAAQw4C,YAAY,CACtBC,IA9HC,uEA8HkB90C,EAAM,QAAUA,EAAM,IACzC+0C,SAAU,YAEhB92C,KAAKV,OAAOO,MAAK,WACf,WACWmgC,EAAuB,mBAChC,MAAO70B,GACL60B,EAAuB,wBAAI,OAIvCp7B,MAAO,WACH,OAAO,IAAIvG,EAASD,QAAQ,SAASsC,GACjCpB,KAAKo1C,iBAAiBp1C,KAAKkC,QAAQ,WAAW3B,KAAK,SAAS8uC,GACxD,IAAIoI,EAAgBz3C,KAAKkC,QAAQ,YACjClC,KAAKgC,KAAO,IAAIitC,OAAOkF,KAAKhF,IAAInvC,KAAKE,YAAY,GAAI,CACjDovC,KAAMtvC,KAAKkC,QAAQ,QACnBmtC,OAAQA,EACRqI,kBAAmBD,IAEvB,IAAIE,EAAW1I,OAAOkF,KAAKj2B,MAAM05B,YAAY53C,KAAKgC,KAAM,QAAQ,WAC5DZ,EAAQu2C,OAEdj3C,KAAKV,QACTU,KAAKV,OAAOO,MAAK,SAASo3C,GACxB1I,OAAOkF,KAAKj2B,MAAM+4B,eAAeU,OAGzCpyC,gBAAiB,WACbvF,KAAK63C,sBAAwB5I,OAAOkF,KAAKj2B,MAAM05B,YAAY53C,KAAKgC,KAAM,iBAAkBhC,KAAK83C,qBAAqBp3C,KAAKV,OACvHA,KAAK82C,eAAiB7H,OAAOkF,KAAKj2B,MAAM05B,YAAY53C,KAAKgC,KAAM,QAAShC,KAAK+3C,oBAAoBr3C,KAAKV,QAE1G83C,qBAAsB,WAClB,IAAI1I,EAASpvC,KAAKgC,KAAKg2C,YACvBh4C,KAAKkC,QAAQ,SAAUlC,KAAK+1C,uBAAuB3G,IACnD,IAAIC,EAASrvC,KAAKgC,KAAKi2C,YACvBj4C,KAAKkC,QAAQ,SAAUlC,KAAK81C,mBAAmBzG,IAC1CrvC,KAAKk4C,yBACNl4C,KAAKkC,QAAQ,OAAQlC,KAAKgC,KAAKm2C,YAGvCJ,oBAAqB,SAASlsC,GAC1B7L,KAAKuE,iBAAiB,CAClBxB,SAAU/C,KAAK81C,mBAAmBjqC,EAAEonC,WAG5CtyC,iBAAkB,WACd,IAAI0uC,EAASrvC,KAAKkC,QAAQ,UAG1B,OAFA+sC,OAAOkF,KAAKj2B,MAAMjR,QAAQjN,KAAKgC,KAAM,UACrChC,KAAKkC,QAAQ,SAAUmtC,GAChBrvC,KAAKc,gBAEhBF,cAAe,WAEX,OADAZ,KAAKgC,KAAKo2C,aAAap4C,KAAKo0C,SAASp0C,KAAKkC,QAAQ,UAC3CnD,EAASD,QAAQsC,WAE5BP,aAAc,WACV,OAAO9B,EAASD,QAAQ0B,IAAI,CAACR,KAAKo1C,iBAAiBp1C,KAAKkC,QAAQ,qBAAsBlC,KAAKo1C,iBAAiBp1C,KAAKkC,QAAQ,uBAAuB3B,KAAK,SAASwR,GAC1J,IAAIq9B,EAAS,IAAIH,OAAOkF,KAAKkE,aAC7BjJ,EAAO7oC,OAAOwL,EAAO,IACrBq9B,EAAO7oC,OAAOwL,EAAO,IACrB/R,KAAKgC,KAAKs2C,UAAUlJ,IACtB1uC,KAAKV,QAEXc,aAAc,WACV,OAAOd,KAAKo1C,iBAAiBp1C,KAAKkC,QAAQ,WAAW3B,KAAK,SAAS8uC,GAC/DrvC,KAAKgC,KAAKu2C,UAAUlJ,GACpBrvC,KAAKkC,QAAQ,SAAUlC,KAAK81C,mBAAmBzG,KACjD3uC,KAAKV,QAEXe,WAAY,WAER,OADAf,KAAKgC,KAAKw2C,QAAQx4C,KAAKkC,QAAQ,SACxBnD,EAASD,QAAQsC,WAE5BJ,eAAgB,WACZ,IAAIy2C,EAAgBz3C,KAAKkC,QAAQ,YAIjC,OAHAlC,KAAKgC,KAAKy2C,WAAW,CACjBf,kBAAmBD,IAEhB14C,EAASD,QAAQsC,WAE5Ba,iBAAkB,SAAS4J,GACvB,IAAI6sC,EAAkB14C,KAAKgC,MAAQhC,KAAKgC,KAAK+d,IAAI,mBAEjD,SAD0B,EAAI/F,EAAUlb,SAAS+M,EAAE0lB,QAAQjI,QAAQ,IAAIjO,OAhNvD,gBAgNkFhY,OAAS,GAChF,YAAcmG,EAAS1K,QAAQiW,OAAOC,YAAc,gBAAkB0jC,IAG1F14C,KAAKkK,YAEhB7D,cAAe,SAASN,GACpB,OAAO/F,KAAKo1C,iBAAiBrvC,EAAQhD,UAAUxC,KAAK,SAASwC,GACzD,IAAIqD,EAEAA,EADAL,EAAQywC,KACC,IAAIxC,EAAa,CACtBl0C,IAAKE,KAAKgC,KACV0G,SAAU3F,EACVyzC,KAAMzwC,EAAQywC,KACdnhC,QAAQ,EAAIxQ,EAAQ0B,QAAQ,CACxBu3B,IAAK,EACLn1B,KAAM,GACP5C,EAAQ4yC,cAGN,IAAI1J,OAAOkF,KAAKyE,OAAO,CAC5BlwC,SAAU3F,EACVjD,IAAKE,KAAKgC,KACVmrB,KAAMpnB,EAAQ8yC,SAAW74C,KAAKkC,QAAQ,mBAG9C,IACIy1C,EADAmB,EAAa94C,KAAK+4C,eAAe3yC,EAAQL,EAAQizC,SAErD,GAAIjzC,EAAQqnB,SAAWrnB,EAAQizC,QAAS,CACpC,IAAIC,EAAoBj5C,KAAKC,WAAWkiB,cAAcpc,EAAQqnB,SAAWvjB,EAAQsiB,MAC7E+sB,EAA2Bl5C,KAAK81C,mBAAmB/yC,GACvD40C,EAAW1I,OAAOkF,KAAKj2B,MAAM05B,YAAYxxC,EAAQ,QAAS,WACtD6yC,EAAkB,CACdl2C,SAAUm2C,IAEVJ,GACAA,EAAWK,KAAKn5C,KAAKgC,KAAMoE,IAEjC1F,KAAKV,OAEX,MAAO,CACH+C,SAAUA,EACVqD,OAAQA,EACRuxC,SAAUA,IAEhBj3C,KAAKV,QAEX+4C,eAAgB,SAAS3yC,EAAQL,GAC7B,GAAKA,EAAL,CAGAA,EAAU/F,KAAK0C,qBAAqBqD,GACpC,IAAI+yC,EAAa,IAAI7J,OAAOkF,KAAKiF,WAAW,CACxCnnB,QAASlsB,EAAQpD,OAKrB,OAHIoD,EAAQnD,SACRk2C,EAAWK,KAAKn5C,KAAKgC,KAAMoE,GAExB0yC,IAEX7xC,eAAgB,SAASb,GACrBA,EAAOA,OAAOqwC,OAAO,MACjBrwC,EAAOuxC,UACP1I,OAAOkF,KAAKj2B,MAAM+4B,eAAe7wC,EAAOuxC,WAGhDnwC,aAAc,SAASzB,GACnB,OAAOhH,EAASD,QAAQ0B,KAAI,EAAItB,EAAUY,KAAKiG,EAAQ8tC,UAAW,SAAShgC,GACvE,OAAO7T,KAAKo1C,iBAAiBvhC,IAC/BnT,KAAKV,QAAQO,KAAK,SAASszC,GACzB,OAAO,IAAI90C,EAASD,QAAQ,SAASsC,GACjC,IAQImyC,EAAU,CACV8F,OATSxF,EAAUyF,QAUnBC,YATc1F,EAAU2F,MAUxBC,WATY,EAAIv6C,EAAUY,KAAK+zC,GAAW,SAAS9wC,GACnD,MAAO,CACHA,SAAUA,EACV22C,UAAU,MAOdC,mBAAmB,EACnBC,WAAY55C,KAAK60C,cAAc9uC,EAAQiV,QAE3C,IAAKi0B,OAAOkF,KAAK0F,mBAAmB1H,MAAMoB,EAAS,SAASlnB,EAAUqpB,GAClE,GAAIA,IAAWzG,OAAOkF,KAAK2F,iBAAiBlE,GAAI,CAC5C,IAAIlC,EAAQ,IAAIX,EAAOj0C,QAAQiH,EAAQ2tC,OAAS1zC,KAAKJ,sBAAsB+zC,QACvEoG,EAAmB,CACnBC,WAAY3tB,EACZvsB,IAAKE,KAAKgC,KACVi4C,iBAAiB,EACjBC,kBAAkB,EAClBC,gBAAiB,CACbC,aAAcr0C,EAAQ6tC,QAAU5zC,KAAKN,sBACrC26C,cAAet0C,EAAQsuB,SAAWr0B,KAAKL,uBACvC26C,YAAa5G,IAGjBvB,EAAQ,IAAIlD,OAAOkF,KAAKoG,mBAAmBR,GAC3C3K,EAAS/iB,EAASwjB,OAAO,GAAGT,OAChChuC,EAAQ,CACJmG,SAAU4qC,EACVlqC,UAAWmnC,EAAO6G,eAClB/tC,UAAWknC,EAAO8G,sBAGtB/7B,EAAIrb,QAAQ05B,IAAI,QAASkd,GACzBt0C,EAAQ,CACJmG,SAAU,IAAI0nC,OAAOkF,KAAKoG,mBAAmB,OAGvD75C,KAAKV,QACTU,KAAKV,QACTU,KAAKV,QAEX4H,cAAe,SAASN,GACpBA,EAAYC,SAASkvC,OAAO,OAEhCvwC,WAAY,WAER,GADAlG,KAAK8H,gBACD9H,KAAKmI,SAAWnI,KAAKkC,QAAQ,cAAe,CAC5C,IAAIs4C,EAAoBx6C,KAAKgC,KAAKm2C,UAClCn4C,KAAKk4C,yBAA0B,EAC/Bl4C,KAAKgC,KAAKs2C,UAAUt4C,KAAKmI,SACzBnI,KAAK83C,uBACL,IAAI2C,EAAmBz6C,KAAKgC,KAAKm2C,UAC7BqC,EAAoBC,EACpBz6C,KAAKgC,KAAKw2C,QAAQgC,GAElBx6C,KAAKkC,QAAQ,OAAQu4C,UAElBz6C,KAAKk4C,wBAEhB,OAAOn5C,EAASD,QAAQsC,WAE5B4G,cAAe,SAASjF,GAChB/C,KAAKmI,UAGLnI,KAAKmI,QAAU,IAAI8mC,OAAOkF,KAAKkE,cAF/Br4C,KAAKmI,QAAQ5B,OAAOxD,IAM5BhB,MAAO,WASH,OARI/B,KAAKgC,OACLitC,OAAOkF,KAAKj2B,MAAM+4B,eAAej3C,KAAK63C,uBACtC5I,OAAOkF,KAAKj2B,MAAM+4B,eAAej3C,KAAK82C,gBACtC92C,KAAKmH,gBACLnH,KAAK6H,sBACE7H,KAAKgC,KACZhC,KAAKE,YAAY2lC,SAEd9mC,EAASD,QAAQsC,aAIhCvC,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,S,kCCrYzBD,EAAQC,aAAU,EAClB,IAAI+K,EAAU,EAAQ,GAClB20B,EAAU,EAAQ,IAClBz/B,EAAWC,EAAuB,EAAQ,MAC1C6F,EAAU,EAAQ,GAClBsV,EAAMnb,EAAuB,EAAQ,KACrCE,EAAY,EAAQ,GACpB4F,EAAY9F,EAAuB,EAAQ,OAC3C+zC,EAAS/zC,EAAuB,EAAQ,MACxC+0C,EAAQ/0C,EAAuB,EAAQ,MACvCG,EAAQ,EAAQ,GAEpB,SAASH,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IASIq7C,EATAha,GAAS,EAAIlC,EAAQmC,aAMrBga,EAAe,WACf,OAAOja,EAAOka,WAAala,EAAOka,UAAUC,MAiX5Cr7C,EA9WesF,EAAUhG,QAAQW,QAAQ,CACzC20C,SAAU,SAASprC,GACf,IAAIqrC,EAAW,CACXI,QAASmG,UAAUC,KAAKtG,UAAUuG,KAClCxG,OAAQsG,UAAUC,KAAKtG,UAAUwG,OACjCpG,UAAWiG,UAAUC,KAAKtG,UAAUwG,QAExC,OAAO1G,EAASrrC,IAASqrC,EAASyG,MAEtCjG,cAAe,SAAS7rC,GACpB,IAAI8rC,EAAgB,CAChBC,QAAS6F,UAAUC,KAAKG,WAAWC,UAAUlG,QAC7CG,QAAS0F,UAAUC,KAAKG,WAAWC,UAAU/F,SAEjD,OAAOJ,EAAc9rC,IAAS8rC,EAAcC,SAEhDK,iBAAkB,SAASryC,GACvB,OAAO,IAAIhE,EAASD,QAAQ,SAASsC,GACjC,IAAI6xC,EAASjzC,KAAK8C,WAAWC,GACzBkwC,EACA7xC,EAAQ,IAAIw5C,UAAUC,KAAKK,SAASjI,EAAO1vC,IAAK0vC,EAAOxvC,MAEvDzD,KAAK+E,iBAAiBhC,GAAUxC,MAAK,SAAS6E,GAC1ChE,EAAQgE,OAGlB1E,KAAKV,QAEXiF,mBAAoB,GACpBE,qBAAsB,SAASpC,GAC3B,OAAO,IAAIhE,EAASD,QAAQ,SAASsC,GACjC,IAAK,EAAIjC,EAAMwT,WAAW5P,GAA1B,CAIA,IAAIo4C,EAAgB,IAAIP,UAAUC,KAAKO,OAAOC,cAAcr7C,KAAKgC,MAC7Ds5C,EAAgB,CAChBC,MAAOx4C,EACP6jC,MAAO,EACP4U,SAAU,SAASC,GAEf,GADaA,EAAehG,QAAQ,GACxB,CACR,IAAIiG,EAAYD,EAAehG,QAAQ,GAAG1yC,SAC1C3B,EAAQ,IAAIw5C,UAAUC,KAAKK,SAASQ,EAAUC,SAAUD,EAAUE,iBAElEx6C,EAAQ,IAAIw5C,UAAUC,KAAKK,SAAS,EAAG,MAInDC,EAAc5F,QAAQ+F,QAjBlBl6C,EAAQ,IAAIw5C,UAAUC,KAAKK,SAAS,EAAG,KAkB7Cx6C,KAAKV,QAEX81C,mBAAoB,SAAS/yC,GACzB,MAAO,CACHQ,IAAKR,EAAS44C,SACdl4C,IAAKV,EAAS64C,YAGtB7F,uBAAwB,SAASC,GAC7B,IAAI6F,EAAY77C,KAAK81C,mBAAmBE,EAAa8F,gBACjDC,EAAY/7C,KAAK81C,mBAAmBE,EAAagG,gBACrD,MAAO,CACH/zC,UAAW,CACP1E,IAAKs4C,EAAUt4C,IACfE,IAAKs4C,EAAUt4C,KAEnByE,UAAW,CACP3E,IAAKw4C,EAAUx4C,IACfE,IAAKo4C,EAAUp4C,OAI3BmC,UAAW,WACP,OAAO,IAAI7G,EAASD,QAAQ,SAASsC,GAC7Bu5C,IACAv5C,KAEKs5C,IACDA,EAAe16C,KAAKm2C,kBAExBuE,EAAan6C,KAAK,WACVo6C,IACAv5C,IAGJpB,KAAKm2C,iBAAiB51C,KAAKa,IAC7BV,KAAKV,SAEbU,KAAKV,OAAOO,MAAK,WACf,OAAOxB,EAASD,QAAQ0B,IAAI,CAAC,IAAIzB,EAASD,SAAQ,SAASsC,GACvDw5C,UAAUC,KAAKoB,WAAW,wBAAyB,CAC/CT,SAAUp6C,OAEd,IAAIrC,EAASD,SAAQ,SAASsC,GAC9Bw5C,UAAUC,KAAKoB,WAAW,4BAA6B,CACnDT,SAAUp6C,aAK1B+0C,eAAgB,WACZ,OAAO,IAAIp3C,EAASD,SAAQ,SAASsC,GACjCs/B,EAAqB,iBAAIt/B,EACzB2yC,EAAMj1C,QAAQw4C,YAAY,CACtBC,IAhHE,qEAiHFC,SAAU,cAEfj3C,MAAK,WACJ,WACWmgC,EAAqB,iBAC9B,MAAO70B,GACL60B,EAAqB,sBAAI,OAIrCp7B,MAAO,WAEH,OADAtF,KAAKk8C,aACEn9C,EAASD,QAAQsC,WAE5B86C,WAAY,WACR,IAAIjM,EAAWjwC,KAAKkC,QAAQ,YAC5BlC,KAAKgC,KAAO,IAAI44C,UAAUC,KAAK1L,IAAInvC,KAAKE,YAAY,GAAI,CACpDi8C,YAAan8C,KAAKuC,WAAW,SAhIlB,mEAiIX+sC,KAAMtvC,KAAKkC,QAAQ,QACnBk6C,cAAenM,EACfoM,oBAAqBpM,EACrBqM,aAAcrM,KAGtB1qC,gBAAiB,WACbvF,KAAKu8C,2BAA6B3B,UAAUC,KAAK2B,OAAOC,WAAWz8C,KAAKgC,KAAM,aAAchC,KAAK08C,mBAAmBh8C,KAAKV,OACzHA,KAAK28C,sBAAwB/B,UAAUC,KAAK2B,OAAOC,WAAWz8C,KAAKgC,KAAM,QAAShC,KAAK+3C,oBAAoBr3C,KAAKV,QAEpH08C,mBAAoB,WAChB,IAAItN,EAASpvC,KAAKgC,KAAKg2C,YACvBh4C,KAAKkC,QAAQ,SAAUlC,KAAK+1C,uBAAuB3G,IACnD,IAAIC,EAASrvC,KAAKgC,KAAKi2C,YACvBj4C,KAAKkC,QAAQ,SAAUlC,KAAK81C,mBAAmBzG,IAC1CrvC,KAAKk4C,yBACNl4C,KAAKkC,QAAQ,OAAQlC,KAAKgC,KAAKm2C,YAGvCJ,oBAAqB,SAASlsC,GACtB,QAAUA,EAAE+wC,YACZ58C,KAAKuE,iBAAiB,CAClBxB,SAAU/C,KAAK81C,mBAAmBjqC,EAAE9I,aAIhDpC,iBAAkB,WACd,IAAIZ,EAAaC,KAAKE,YAKtB,OAJAF,KAAKgC,KAAKy2C,WAAW,CACjBnqB,MAAOvuB,EAAWuuB,QAClB8F,OAAQr0B,EAAWq0B,WAEhBr1B,EAASD,QAAQsC,WAE5BR,cAAe,WACX,IAAIoI,EAAOhJ,KAAKkC,QAAQ,QACpB26C,EAAejC,UAAUC,KAAKiC,aAMlC,OALA98C,KAAKgC,KAAK+6C,QAAQ,CACdh0C,SAAS,EACTi0C,UAAWh9C,KAAKo0C,SAASprC,GACzB6zC,aAAc,cAAgB7zC,EAAO6zC,EAAa3T,OAAS2T,EAAaj6C,UAErE7D,EAASD,QAAQsC,WAE5BP,aAAc,WACV,OAAO9B,EAASD,QAAQ0B,IAAI,CAACR,KAAKo1C,iBAAiBp1C,KAAKkC,QAAQ,qBAAsBlC,KAAKo1C,iBAAiBp1C,KAAKkC,QAAQ,uBAAuB3B,KAAK,SAASwR,GAC1J,IAAIq9B,EAAS,IAAIwL,UAAUC,KAAKoC,aAAaC,cAAcnrC,EAAO,GAAIA,EAAO,IAC7E/R,KAAKgC,KAAK+6C,QAAQ,CACdh0C,SAAS,EACTqmC,OAAQA,KAEd1uC,KAAKV,QAEXc,aAAc,WACV,OAAOd,KAAKo1C,iBAAiBp1C,KAAKkC,QAAQ,WAAW3B,KAAK,SAAS8uC,GAC/DrvC,KAAKgC,KAAK+6C,QAAQ,CACdh0C,SAAS,EACTsmC,OAAQA,KAEd3uC,KAAKV,QAEXe,WAAY,WAKR,OAJAf,KAAKgC,KAAK+6C,QAAQ,CACdh0C,SAAS,EACTumC,KAAMtvC,KAAKkC,QAAQ,UAEhBnD,EAASD,QAAQsC,WAE5BJ,eAAgB,WAEZ,OADAhB,KAAK+B,QACE/B,KAAKG,OAAO0X,MAAM7X,KAAM8X,YAEnCzR,cAAe,SAASN,GACpB,OAAO/F,KAAKo1C,iBAAiBrvC,EAAQhD,UAAUxC,KAAK,SAASwC,GACzD,IAAIo6C,EAAiB,CACjBhwB,KAAMpnB,EAAQ8yC,SAAW74C,KAAKkC,QAAQ,kBAE1C,GAAI6D,EAAQywC,KAAM,EACd,EAAI3xC,EAAQ0B,QAAQ42C,EAAgB,CAChCC,YAAar3C,EAAQywC,KACrBloB,MAAO,KACP8F,OAAQ,OAEZ,IAAIukB,EAAa5yC,EAAQ4yC,WACrBA,IACAwE,EAAeE,OAAS,IAAIzC,UAAUC,KAAKyC,OAAQ3E,EAAWhwC,MAASgwC,EAAW7a,MAG1F,IAAIyf,EAAU,IAAI3C,UAAUC,KAAK2C,QAAQz6C,EAAUo6C,GACnDn9C,KAAKgC,KAAKy7C,SAASn3C,KAAKi3C,GACxB,IACIG,EADAC,EAAU39C,KAAK+4C,eAAeh2C,EAAUgD,EAAQizC,SAEpD,GAAIjzC,EAAQqnB,SAAWrnB,EAAQizC,QAAS,CACpC,IAAIC,EAAoBj5C,KAAKC,WAAWkiB,cAAcpc,EAAQqnB,SAAWvjB,EAAQsiB,MAC7E+sB,EAA2Bl5C,KAAK81C,mBAAmB/yC,GACvD26C,EAAU9C,UAAUC,KAAK2B,OAAOC,WAAWc,EAAS,SAAS,WACzDtE,EAAkB,CACdl2C,SAAUm2C,IAEVyE,GACAA,EAAQlF,WAAW,CACf71C,SAAS,OAKzB,MAAO,CACHG,SAAUA,EACVqD,OAAQm3C,EACRI,QAASA,EACTD,QAASA,IAEfh9C,KAAKV,QAEX+4C,eAAgB,SAASh2C,EAAUgD,GAC/B,GAAKA,EAAL,CAGAA,EAAU/F,KAAK0C,qBAAqBqD,GACpC,IAAI43C,EAAU,IAAI/C,UAAUC,KAAK+C,QAAQ76C,EAAU,CAC/C86C,YAAa93C,EAAQpD,KACrB0S,OAAQ,IAAIulC,UAAUC,KAAKyC,MAAM,EA3PnB,IA4Pd16C,QAASmD,EAAQnD,UAGrB,OADA+6C,EAAQlH,OAAOz2C,KAAKgC,MACb27C,IAEX12C,eAAgB,SAASb,GACrBpG,KAAKgC,KAAKy7C,SAASzuB,OAAO5oB,EAAOA,QAC7BA,EAAOu3C,SACPv3C,EAAOu3C,QAAQlH,OAAO,MAEtBrwC,EAAOs3C,SACP9C,UAAUC,KAAK2B,OAAOsB,cAAc13C,EAAOs3C,UAGnDl2C,aAAc,SAASzB,GACnB,OAAOhH,EAASD,QAAQ0B,KAAI,EAAItB,EAAUY,KAAKiG,EAAQ8tC,UAAW,SAAShgC,GACvE,OAAO7T,KAAKo1C,iBAAiBvhC,IAC/BnT,KAAKV,QAAQO,KAAK,SAASszC,GACzB,OAAO,IAAI90C,EAASD,QAAQ,SAASsC,GACjC,IAAIsM,EAAY,IAAIktC,UAAUC,KAAKG,WAAW+C,kBAAkB/9C,KAAKgC,MACjE0xC,EAAQ,IAAIX,EAAOj0C,QAAQiH,EAAQ2tC,OAAS1zC,KAAKJ,sBAAsB+zC,QACvEqK,EAAa,IAAIpD,UAAUC,KAAKoD,MAAMC,QAAQxK,GAClDsK,EAAWG,EAAI,KAAOp4C,EAAQsuB,SAAWr0B,KAAKL,wBAC9C+N,EAAU0wC,iBAAiB,CACvBC,mBAAmB,EACnBC,sBAAsB,EACtBC,uBAAwB,CACpB37C,SAAS,GAEb47C,uBAAwB,CACpBlE,YAAa0D,EACbS,gBAAiB14C,EAAQ6tC,QAAU5zC,KAAKN,uBAE5Cg/C,uBAAwB,CACpBpE,YAAa0D,EACbS,gBAAiB14C,EAAQ6tC,QAAU5zC,KAAKN,yBAGhDgO,EAAUixC,kBAAkB,CACxBC,UAAW5+C,KAAK60C,cAAc9uC,EAAQiV,MACtC6jC,gBAAgB,KAEpB,EAAI3/C,EAAUyH,MAAMktC,GAAW,SAASjtC,EAAG7D,GACvC,IAAI+7C,EAAW,IAAIlE,UAAUC,KAAKG,WAAW+D,SAAS,CAClDh8C,SAAUA,IAEd2K,EAAUsxC,YAAYF,MAE1B,IAAIG,EAAoB,GACxBA,EAAkB34C,KAAKs0C,UAAUC,KAAK2B,OAAOC,WAAW/uC,EAAW,qBAAqB,SAAS0K,GAC7F,KAAO6mC,EAAkB57C,QACrBu3C,UAAUC,KAAK2B,OAAOsB,cAAcmB,EAAkBzF,OAE1D,IAAI0F,EAAe9mC,EAAK8mC,aAAa,GACrC99C,EAAQ,CACJmG,SAAUmG,EACVzF,UAAWi3C,EAAaj3C,UACxBC,UAAWg3C,EAAah3C,gBAGhC+2C,EAAkB34C,KAAKs0C,UAAUC,KAAK2B,OAAOC,WAAW/uC,EAAW,mBAAmB,SAAS0K,GAC3F,KAAO6mC,EAAkB57C,QACrBu3C,UAAUC,KAAK2B,OAAOsB,cAAcmB,EAAkBzF,OAE1D,IAAI9D,EAAS,sBAAwBt9B,EAAK+mC,aAAe,MAAQ/mC,EAAKoI,QACtErG,EAAIrb,QAAQ05B,IAAI,QAASkd,GACzBt0C,EAAQ,CACJmG,SAAUmG,QAGlBA,EAAU0xC,uBACZ1+C,KAAKV,QACTU,KAAKV,QAEX4H,cAAe,SAASN,GACpBA,EAAYC,SAASkjB,WAEzBvkB,WAAY,WAER,GADAlG,KAAK8H,gBACD9H,KAAKmI,SAAWnI,KAAKkC,QAAQ,cAAe,CAC5C,IAAIs4C,EAAoBx6C,KAAKgC,KAAKm2C,UAClCn4C,KAAKk4C,yBAA0B,EAC/B,IAAI9I,EAASpvC,KAAKmI,QAAQgyB,QAC1BiV,EAAOhb,OAAS,IAAMgb,EAAOhb,OAC7Bgb,EAAO9gB,MAAQ,IAAM8gB,EAAO9gB,MAC5BtuB,KAAKgC,KAAK+6C,QAAQ,CACdh0C,SAAS,EACTqmC,OAAQA,EACRE,KAAMkL,IAEV,IAAIC,EAAmBz6C,KAAKgC,KAAKm2C,UAC7BqC,EAAoBC,EACpBz6C,KAAKgC,KAAK+6C,QAAQ,CACdh0C,SAAS,EACTumC,KAAMkL,IAGVx6C,KAAKkC,QAAQ,OAAQu4C,UAElBz6C,KAAKk4C,wBAEhB,OAAOn5C,EAASD,QAAQsC,WAE5B4G,cAAe,SAASjF,GAChB/C,KAAKmI,QACLnI,KAAKmI,QAAU,IAAIyyC,UAAUC,KAAKoC,aAAaC,cAAcl9C,KAAKmI,QAAQ2zC,eAAgB97C,KAAKmI,QAAQ6zC,eAAgBj5C,GAEvH/C,KAAKmI,QAAU,IAAIyyC,UAAUC,KAAKoC,aAAal6C,EArW5B,cAwW3BhB,MAAO,WAQH,OAPI/B,KAAKgC,OACL44C,UAAUC,KAAK2B,OAAOsB,cAAc99C,KAAKu8C,4BACzC3B,UAAUC,KAAK2B,OAAOsB,cAAc99C,KAAK28C,uBACzC38C,KAAKmH,gBACLnH,KAAK6H,eACL7H,KAAKgC,KAAKyoB,WAEP1rB,EAASD,QAAQsC,aAIhCvC,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,S,kCC3YzBD,EAAQC,aAAU,EAClB,IAAIsK,EAAyBpK,EAAuB,EAAQ,KACxD6F,EAAU,EAAQ,GAClBwwB,EAAQr2B,EAAuB,EAAQ,OACvCqgD,EAAQrgD,EAAuB,EAAQ,MAE3C,SAASA,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAIIigD,EAASD,EAAMvgD,QAAQW,QAAQ,CAC/BI,KAAM,SAASof,EAASlZ,GACpB/F,KAAKkK,SAAS+U,EAASlZ,GACvB/F,KAAKu/C,+BAA+B,OAAQ,WAEhDt1C,mBAAoB,WAChB,OAAO,EAAIpF,EAAQ0B,QAAQvG,KAAKkK,WAAY,CACxCs1C,kBAAkB,KAG1Bp7B,QAAS,WACLpkB,KAAKkK,WACLlK,KAAKyI,WAAWsT,SAhBL,cAkBf0jC,uBAAwB,SAASrnC,GAC7BpY,KAAKkK,SAASkO,GACd,IAAI+S,EAAe/S,EAAKgR,YACpBrC,EAAW3O,EAAK2O,SACpBoE,EAAapP,SApBG,eAqBhBoP,EAAaxE,KAAK,oBAAkB5K,SApBZ,uBAqBnBgL,EAASoG,MACVhC,EAAapP,SAAS,0BAIlCujC,EAAOI,UAAYrqB,EAAMv2B,SACzB,EAAIsK,EAAuBtK,SAAS,WAAYwgD,GAChD,IAAI9/C,EAAW8/C,EACfzgD,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,QACzB8F,EAAO/F,QAAQC,QAAU8F,EAAO/F,S,kCC7ChCA,EAAQC,aAAU,EAClB,IAEgCO,EAF5Bg2B,GAE4Bh2B,EAFG,EAAQ,OAGzBA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAQIG,EANa61B,EAAMv2B,QAAQW,QAAQ,CACnC+1B,aAAc,SAASE,GACnB11B,KAAKkK,SAASwrB,GACd11B,KAAK21B,UAAU1T,SAAS,uBAA6BgX,YALjC,sBAKoEld,SAJlE,2BAQ9Bld,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,S,iCClBzBD,EAAQC,aAAU,EAClB,IAAIkb,EAAYhb,EAAuB,EAAQ,IAC3C2gD,EAAU3gD,EAAuB,EAAQ,MACzC4gD,EAAa,EAAQ,KACrB/6C,EAAU,EAAQ,GAClB1F,EAAQ,EAAQ,GAChB0gD,EAAS7gD,EAAuB,EAAQ,MAE5C,SAASA,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAAIygD,EAAU,KAmBVtgD,EAlBS,SAASghB,EAASxX,EAAM+2C,GACjC,IAAIh6C,GAAU,EAAI5G,EAAMyE,eAAe4c,GAAWA,EAAU,CACxDA,QAASA,GAETw/B,EAAmBj6C,EAAQq3B,UAC/B,EAAIv4B,EAAQ0B,QAAQR,EAAS,CACzBiD,KAAMA,EACN+2C,YAAaA,EACb3iB,SAAU,SAAShlB,IACf,EAAI4B,EAAUlb,SAASsZ,EAAK6G,SAAS+P,SACrC,IAAI2wB,EAAQ7gD,QAAQkhD,EAAkB,CAClCC,QAAS7nC,EAAK4tB,QACfka,QAAQpoC,cAGnBgoC,GAAU,EAAI9lC,EAAUlb,SAAS,SAAS0d,UAAS,EAAIojC,EAAWx9C,UAClE,IAAIy9C,EAAO/gD,QAAQghD,EAAS/5C,GAAS4qB,QAGzC9xB,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,QACzB8F,EAAO/F,QAAQC,QAAU8F,EAAO/F,S,iCCnChCA,EAAQC,aAAU,EAClB,IAAI+qB,EAAc7qB,EAAuB,EAAQ,OAGjD,SAASA,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,IAElB,EAN4BL,EAAuB,EAAQ,KAMhCF,SAAS,SAAU+qB,EAAY/qB,SAC3D,IAAIU,EAAWqqB,EAAY/qB,QAC3BD,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,QACzB8F,EAAO/F,QAAQC,QAAU8F,EAAO/F,S,iCCXhC,IAEgCQ,EAHhCR,EAAQC,aAAU,EAQlB,IAAIU,IAL4BH,EAFS,EAAQ,QAG/BA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,IAGQP,QAC3BD,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,QACzB8F,EAAO/F,QAAQC,QAAU8F,EAAO/F,S,iCCXhCA,EAAQmuB,SAMR,SAAkB3qB,EAAQ2G,EAAMm3C,GAC5B,IAAIC,EAAqBp1B,EACrBq1B,EAAkB,GACtBA,EAAgBh+C,GAAU+9C,EAAmB/9C,GAAU+9C,EAAmB/9C,GAAU,GACpFg+C,EAAgBh+C,GAAQ2G,GAAQm3C,EAChCC,GAAqB,EAAIv7C,EAAQ0B,QAAQ65C,EAAoBC,IAVjExhD,EAAQmsB,cAAW,EACnB,IAAInmB,EAAU,EAAQ,GAClBmmB,EAAW,GACfnsB,EAAQmsB,SAAWA,G,iCCJnBnsB,EAAQC,aAAU,EAClB,IAAIkb,EAAYhb,EAAuB,EAAQ,IAC3CsK,EAAiBtK,EAAuB,EAAQ,KAChD6K,EAAU,EAAQ,GAClB5K,EAASD,EAAuB,EAAQ,KACxCshD,EAAS,EAAQ,KACjBlhD,EAAS,EAAQ,IAErB,SAASJ,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IACIkhD,GAAyB,EAAInhD,EAAO4E,cAAcs8C,EAAOn0C,MADnC,uBAEtBq0C,GAA0B,EAAIphD,EAAO4E,cAAcs8C,EAAOG,MAFpC,uBAGtBC,GAAuB,EAAIthD,EAAO4E,cAAcs8C,EAAOl1C,IAHjC,uBAsEtB5L,EAlEgBP,EAAOH,QAAQW,QAAQ,CACvCI,KAAM,SAASyqB,GACXtqB,KAAKuqB,MAAQD,EACbtqB,KAAKsF,SAETA,MAAOuE,EAAQsiB,KACfiD,oBAAoB,EACpBuxB,kBAAmB,SAASv1B,GACxB,IAAIw1B,EAAc,CACdC,aAAc,WAKV,OAJI7gD,KAAK8gD,mBACL9gD,KAAK+gD,gBAAkB/gD,KAAKuqB,MAAM9hB,WAAW6lB,QAC7CtuB,KAAK8gD,kBAAmB,GAErB9gD,KAAK+gD,iBACdrgD,KAAKV,OAEXsJ,EAAexK,QAAQwX,GAAG8U,EAAOD,aAAco1B,EAAwBK,EAAa5gD,KAAKghD,uBAAuBtgD,KAAKV,OACrHsJ,EAAexK,QAAQwX,GAAG8U,EAAOD,aAAcq1B,EAAyBxgD,KAAKihD,wBAAwBvgD,KAAKV,OAC1GsJ,EAAexK,QAAQwX,GAAG8U,EAAOD,aAAcu1B,EAAsB1gD,KAAKkhD,qBAAqBxgD,KAAKV,QAExGghD,uBAAwB,SAASn1C,GAC7B,IAAIsf,GAAe,EAAInR,EAAUlb,SAAS+M,EAAEywB,eACxCnR,EAAaoC,GAAG,4CAChB1hB,EAAEiY,QAAS,GAGfpe,aAAa1F,KAAKuqB,MAAM42B,iBACxBnhD,KAAKwxB,mBAAmBrG,EAActf,KAE1Co1C,wBAAyB,SAASp1C,GAC9B,IAAIsf,GAAe,EAAInR,EAAUlb,SAAS+M,EAAEywB,eAC5Ct8B,KAAK4xB,oBAAoBzG,EAActf,IAE3Cq1C,qBAAsB,SAASr1C,GAC3B,IAAIsf,GAAe,EAAInR,EAAUlb,SAAS+M,EAAEywB,eAC5Ct8B,KAAKqvB,iBAAiBlE,EAActf,GACpC7L,KAAK8gD,kBAAmB,GAE5B7xB,UAAWplB,EAAQsiB,KACnBc,SAAUpjB,EAAQsiB,KAClBuK,eAAgB,WACZ,MAAO,CACH1S,mBAAoBhkB,KAAKuqB,MAAMloB,OAAO,sBACtC4hB,kBAAmBjkB,KAAKuqB,MAAMloB,OAAO,qBACrCu0B,kBAAmB52B,KAAKuqB,MAAMloB,OAAO,uBAG7C8uB,cAAe,SAAS/F,GAChBprB,KAAKovB,qBACLpvB,KAAK2gD,kBAAkBv1B,GACvBprB,KAAK8gD,kBAAmB,IAGhCxpB,YAAaztB,EAAQsiB,KACrBG,YAAaziB,EAAQsiB,KACrBI,qBAAsB1iB,EAAQsiB,KAC9BO,oBAAqB7iB,EAAQsiB,KAC7BS,kBAAmB/iB,EAAQsiB,KAC3BqF,mBAAoB3nB,EAAQsiB,KAC5ByF,oBAAqB/nB,EAAQsiB,KAC7BkD,iBAAkBxlB,EAAQsiB,KAC1Bi1B,iBAAkBv3C,EAAQsiB,KAC1Bk1B,qBAAsBx3C,EAAQsiB,KAC9B1B,QAAS5gB,EAAQsiB,OAGrBttB,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,S,iCCrFzBD,EAAQC,aAAU,EAClB,IAAIkb,EAAYhb,EAAuB,EAAQ,IAC3C6K,EAAU,EAAQ,GAClBuQ,EAAWpb,EAAuB,EAAQ,KAC1CoK,EAAyBpK,EAAuB,EAAQ,KACxD6F,EAAU,EAAQ,GAClBy8C,EAAkBtiD,EAAuB,EAAQ,MACjD80B,EAAW90B,EAAuB,EAAQ,MAC1Cqb,EAAY,EAAQ,IACpBmV,EAAU,EAAQ,IAEtB,SAASxwB,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAOIkiD,EAAYztB,EAASh1B,QAAQW,QAAQ,CACrC6K,eAAgB,WACZ,OAAO,EAAIzF,EAAQ0B,QAAQvG,KAAKkK,WAAY,CACxCs3C,OAAQ33C,EAAQsiB,QAGxBliB,mBAAoB,WAChB,OAAO,EAAIpF,EAAQ0B,QAAQvG,KAAKkK,WAAY,CACxCsW,QAASpG,EAAStb,QAAQsL,OAAO,WACjCkkB,MAAO,IACP8F,OAAQ,GACRhsB,UAAW,KACXq5C,eAAe,EACf5iB,aAAc,GACd6iB,UAAU,EACVC,MAAO,EACPC,+BAA+B,EAC/BC,sBAAuB,KACvBC,eAAe,EACflrB,mBAAmB,KAG3Bnb,qBAAsB,WAClB,OAAOzb,KAAKkK,WAAWmR,OAAO,CAAC,CAC3BK,OAAQ,CACJwjB,SAAU,WAEdn5B,QAAS,CACLg8C,aAAc,gBAEnB,CACCrmC,OAAQ,WACJ,OAAO,EAAI8T,EAAQuB,eAEvBhrB,QAAS,CACLya,QAAS,GACT8N,MAAO,GACP8F,OAAQ,GACR0V,UAAW,GACXkY,SAAU,QAItB18C,MAAO,WACHtF,KAAKkK,SAAS2N,MAAM7X,KAAM8X,YAE9BsM,QAAS,WACLpkB,KAAKkK,WACLlK,KAAKyI,WAAWsT,SAvDF,gBAwDd/b,KAAKsoC,WAAWvsB,SAvDM,yBAyD1BI,mBAAoB,WAChBnc,KAAKkK,WACLlK,KAAK60B,WAAW9Y,SAxDM,wBAyDtB/b,KAAKiiD,kBAAmB,EAAIjoC,EAAUlb,SAAS,SAASid,SAxD1B,gCAyD9B/b,KAAKiiD,iBAAiBzlC,SAASxc,KAAK0/B,WACpC1/B,KAAKkiD,qBACLliD,KAAKmiD,wBACLniD,KAAKoiD,uBACLpiD,KAAKqiD,kBAETC,MAAO,WACH,IAAIX,EAAQ3hD,KAAKqC,OAAO,SACxB,IAAKs/C,EACD,OAAO3hD,KAAKkK,WAEhB,IAAIqpB,EAAW,IAAIlZ,EAAUmD,SACzBtT,EAAWlK,KAAKkK,SAASxJ,KAAKV,MAOlC,OANAA,KAAKuiD,oBACLviD,KAAKwiD,aAAe/8C,YAAW,WAC3ByE,IAAWypB,MAAK,WACZJ,EAASnyB,eAEdugD,GACIpuB,EAASG,WAEpB+uB,MAAO,WAEH,OADAziD,KAAKuiD,oBACEviD,KAAKkK,YAEhBq4C,kBAAmB,WACf78C,aAAa1F,KAAKwiD,eAEtBH,eAAgB,WACZ,GAAKriD,KAAKiiD,iBAAV,CAGA,IAAIzhC,EAAUxgB,KAAKqC,OAAO,WAC1B,GAAKme,EAAL,CAGA,IAAIkiC,GAAW,EAAI1oC,EAAUlb,SAAS,SAASid,SA/FzB,wBA+F2DpZ,KAAK6d,GACtFxgB,KAAKiiD,iBAAiBp2B,OAAO62B,MAEjCN,qBAAsB,WACbpiD,KAAKiiD,kBAAqBjiD,KAAKqC,OAAO,mBAGtCrC,KAAK8/B,cACN9/B,KAAK8/B,aAAc,EAAI9lB,EAAUlb,SAAS,SAASid,SAxG/B,0BAwGmES,SAASxc,KAAKiiD,mBAEzGjiD,KAAK2iB,iBAAiB3iB,KAAK8/B,YAAawhB,EAAgBxiD,QAAS,CAC7D+/B,aAAc7+B,KAAKqC,OAAO,oBAGlC8/C,sBAAuB,WACnBniD,KAAK60B,WAAWlO,KAAK,yBAA+BqI,SACpDhvB,KAAK60B,WAAWlO,KAAK,2BAAiCqI,gBAC/ChvB,KAAK8/B,aAEhBoiB,mBAAoB,WAChBliD,KAAK60B,WAAWzR,YAhHU,4BAgHgCpjB,KAAKqC,OAAO,cAE1E8V,eAAgB,SAASC,GACrB,OAAQA,EAAKjW,MACT,IAAK,QACD,MACJ,IAAK,UACL,IAAK,gBACDnC,KAAKmiD,wBACLniD,KAAKoiD,uBACLpiD,KAAKqiD,iBACL,MACJ,IAAK,WACDriD,KAAKkiD,qBACL,MACJ,IAAK,eACDliD,KAAKoiD,uBACL,MACJ,QACIpiD,KAAKkK,SAASkO,KAG1B0M,SAAU,WACN9kB,KAAKuiD,oBACLviD,KAAKkK,eAGb,EAAId,EAAuBtK,SAAS,cAAeyiD,GACnD,IAAI/hD,EAAW+hD,EACf1iD,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,QACzB8F,EAAO/F,QAAQC,QAAU8F,EAAO/F,S,iCCrKhCA,EAAQ8jD,cAy0BR,SAAuBvgD,GACnBi3B,EAAcj3B,GAz0BlBvD,EAAQi2B,cAAW,EACnB,IAAI9a,EAAYhb,EAAuB,EAAQ,IAC3CsK,EAAiBtK,EAAuB,EAAQ,KAChD6K,EAAU,EAAQ,GAClB1K,EAAQ,EAAQ,GAChByjD,EAAQ,EAAQ,KAChB9nB,EAAW,EAAQ,IACnB57B,EAAY,EAAQ,GACpB2jD,EAAQ,EAAQ,IAChBh+C,EAAU,EAAQ,GAClByD,EAAMtJ,EAAuB,EAAQ,KACrCuwB,EAAS,EAAQ,IACjB+wB,EAAS,EAAQ,KACjB7hB,EAAW,EAAQ,KACnBrkB,EAAWpb,EAAuB,EAAQ,KAC1C8K,EAAS,EAAQ,KACjBN,EAAWxK,EAAuB,EAAQ,KAC1Cq2B,EAAQr2B,EAAuB,EAAQ,OACvC4hB,EAAU5hB,EAAuB,EAAQ,KACzCI,EAAS,EAAQ,IACjBowB,EAAU,EAAQ,IAClBgP,EAAU,EAAQ,IAClBskB,EAAe9jD,EAAuB,EAAQ,MAC9C+jD,EAAgB,EAAQ,KACxBC,EAAuBhkD,EAAuB,EAAQ,MACtDikD,EAAqB,EAAQ,KAC7B5oC,EAAY,EAAQ,IACpB6oC,EAAgClkD,EAAuB,EAAQ,MAEnE,SAASA,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAkBIg6B,EAhBA8pB,EAAqB,gBAerBC,GAAmB,EAAIP,EAAMQ,eAAe,SAE5CvuB,EAAWkuB,EAAqBlkD,QAAQW,QAAQ,CAChD6jD,iBAAkB,CAACH,EANQ,uBAMsC3qC,KAAK,KACtElO,eAAgB,WACZ,IAAI5D,EAAO1G,KACPujD,EAAmB,SAAS71C,GAC5B,IAAI2b,EAAQm6B,EAAmB91C,GACX2b,EAAMkE,GAAG7mB,EAAKrE,OAAO,sBA+B7C,SAAsBgnB,EAAO3b,GACzB,IAAI+1C,EAAiBp6B,EAAM3gB,WAAWo1B,IAClC,SAAWpwB,IACX+1C,EAAiBp6B,EAAM3gB,WAAWo1B,IAAMp3B,EAAK+B,WAAW2rB,SAAW/K,EAAMkL,eAE7E7tB,EAAK4gC,SAASmc,GAlCVC,CAAar6B,EAAO3b,GACpB2b,EAAQm6B,EAAmB91C,IAE/BhH,EAAKrE,OAAO,kBAAkB,EAAIy4B,EAASiC,kBAAkB1T,IAC7D3iB,EAAKkxB,aAAavO,IAGtB,SAASm6B,EAAmB91C,GACxB,IAAI65B,EAAY7gC,EAAK6gC,YACjBoc,EAAkBj9C,EAAK+B,WAAW2rB,SAClC/K,GAAQ,EAAIrP,EAAUlb,SAAS4H,EAAKrE,OAAO,mBAC3CuhD,GAAgB,EACpB,IAAKv6B,EAAMhmB,OACP,OAAO,EAAI2W,EAAUlb,WAEzB,KAAO8kD,GAAe,CAClB,IAAIC,EAAYx6B,EAAM3b,KACtB,IAAKm2C,EAAUxgD,OACX,MAEJ,IAAIygD,EAAmBD,EAAUn7C,WAAWo1B,IAAM+lB,EAAUtvB,cAAgB,GAC5EqvB,EAAgBE,EAAmBH,EAAkBpc,GAAauc,EAAmBvc,KAEjFle,EAAQw6B,GAGhB,OAAOx6B,EAUX,OAAO,EAAIxkB,EAAQ0B,QAAQvG,KAAKkK,WAAY,CACxCW,UAAWhB,EAAQsiB,KACnBphB,WAAYlB,EAAQsiB,KACpB43B,OAAQ,WAEJ,OADAR,EAAiB,SACV,GAEXS,SAAU,WAEN,OADAT,EAAiB,SACV,MAInBt5C,mBAAoB,WAChB,OAAO,EAAIpF,EAAQ0B,QAAQvG,KAAKkK,WAAY,CACxC+Z,mBAAmB,EACnBsd,oBAAoB,EACpBie,kBAAkB,EAClByE,cAAe,WACfziB,oBAAoB,EACpB0iB,eAAe,EACfC,iBAAiB,EACjBC,eAAe,EACf3iB,gBAAiBrnB,EAAStb,QAAQsL,OAAO,0BACzCs3B,eAAgBtnB,EAAStb,QAAQsL,OAAO,yBACxCu3B,eAAgBvnB,EAAStb,QAAQsL,OAAO,yBACxCw3B,gBAAiBxnB,EAAStb,QAAQsL,OAAO,0BACzCy3B,SAAU,KACVC,cAAe,KACfC,cAAe,KACfC,aAAc,eACdC,eAAgB7nB,EAAStb,QAAQsL,OAAO,yBACxCi6C,YAAa,KACbniB,SAAS,EACToiB,gBAAiB,KACjBC,mBAAmB,EACnBpiB,cAAe,QACfiL,iBAAiB,EACjBppB,oBAAoB,EACpBwgC,gBAAiB,CACbC,KAAM,UAEVC,gBAAiB,CACbD,KAAM,WAEVvhB,cAAc,EACdyhB,cAAc,EACdC,eAAe,EACfC,wBAAwB,EACxBC,gBAAiB,SAAShf,GACtB,OAAOA,EAAOA,EAAK9P,iBAAc,GAErC+uB,UAAW,SAASjf,GAChB,OAAOA,EAAOA,EAAKpQ,WAAQ,MAIvCja,qBAAsB,WAClB,IAAIujB,GAAY,EAAIxP,EAAQyP,WAC5B,OAAOj/B,KAAKkK,WAAWmR,QAAO,EAAI0nC,EAAciC,0BAA2B,CAAC,CACxEtpC,OAAQ,WACJ,OAAQ+iB,EAASqE,iBAErB/8B,QAAS,CACLy7B,oBAAoB,IAEzB,CACC9lB,OAAQ,SAASqnB,GACb,OAAQtE,EAASqE,kBAAoBt5B,EAAS1K,QAAQ8c,eAAiB,YAAcpS,EAAS1K,QAAQiW,OAAOC,YAAc,YAAc+tB,EAAQ7D,UAErJn5B,QAAS,CACLk+C,cAAe,UACfjiB,aAAc,eAEnB,CACCtmB,OAAQ,WACJ,MAAO,YAAclS,EAAS1K,QAAQiW,OAAOC,aAAexL,EAAS1K,QAAQ8c,eAEjF7V,QAAS,CACL6wB,mBAAmB,IAExB,CACClb,OAAQ,WACJ,OAAO,EAAI8T,EAAQuB,YAAYiO,IAEnCj5B,QAAS,CACL07B,gBAAiB,GACjBC,eAAgB,GAChBC,eAAgB,GAChBC,gBAAiB,GACjBsB,cAAc,OAI1BoO,mBAAoB,SAAS1uC,GACrBA,GACA5C,KAAKilD,qBAAoB,IAGjCC,WAAY,WACR,MAlKc,gBAoKlBC,aAAc,WACV,MAvJiB,kBAyJrBz+B,eAAgB,WACZ,OAAO1mB,KAAKE,aAEhB42B,0BAA2B,SAASjrB,GAChC7L,KAAKolD,8BAAgCv5C,GAEzCw5C,yBAA0B,WACtB,OAAOrlD,KAAKolD,+BAEhBE,qBAAsB,WACbtlD,KAAKqC,OAAO,WAGbrC,KAAKulD,mBAAqBvlD,KAAK0mB,iBAAiBzE,SAAS,kBAAwBA,SAAS,uBAA6BA,SAASjiB,KAAKwlD,iBAFrIxlD,KAAKulD,mBAAqBvlD,KAAK0mB,iBAAiBzE,SAASjiB,KAAKwlD,kBAKtEC,iBAAkB,WACdzlD,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WAC1B9X,KAAKslD,uBACLtlD,KAAKilD,qBAAoB,IAE7BtqB,YAAa,SAASvR,EAAas8B,GAE/B,OADc1lD,KAAKkK,SAASkf,EAAas8B,GAC1B/xB,MAAK,WAChB3zB,KAAKslD,2BAGb93B,WAAY,SAASpE,GAEjB,OADcppB,KAAKkK,SAASkf,GACbuK,MAAK,WAChB3zB,KAAKslD,2BAGbK,cAAe,WACX,OAAO3lD,KAAKulD,oBAEhBK,mBAAoB,SAAS/5C,GACrB,WAAa7L,KAAKqC,OAAO,kBAAoBrC,KAAK44B,eAAe/sB,EAAEywB,gBAGvEt8B,KAAKkK,SAAS2B,IAElBg6C,yBAA0B,WACtB,OAAO,GAEXC,0BAA2B,WACvB,IAAIC,EAAoB/lD,KAAKkoB,gBACzB69B,GAAqB,IAAMA,EAAkBC,cAC7CD,EAAkBC,UAAU,GAC5BD,EAAkBE,SAG1B3gD,MAAO,WACHtF,KAAKkK,WACLlK,KAAK8lD,4BACL9lD,KAAKE,YAAcF,KAAKyI,WACxBzI,KAAKkmD,kBACLlmD,KAAKmmD,qBAjNoB,GAkNzBnmD,KAAKomD,4BAETC,kBAAmB,WACf,MAAO,iBAAmBrmD,KAAKqC,OAAO,iBAE1CikD,gBAAiB,WACb,MAAO,eAAiBtmD,KAAKqC,OAAO,iBAExC+hC,mBAAoB,WAChB,IAAImiB,EAAevmD,KAAKqmD,oBACpBG,EAAaxmD,KAAKsmD,kBACtB,OAAO,EAAIzhD,EAAQ0B,QAAQvG,KAAKkK,WAAY,CACxCm6B,UAAU,EAAIx6B,EAAQ0K,eAAegyC,GAAgBC,GAAY,MAGzEC,kBAAmB,WACf,OAAOzmD,KAAKqC,OAAO,YAEvBqkD,2BAA4B,WACxB,MAAO,OAEXR,gBAAiB,WACb,IAAI1G,EAAmBx/C,KAAKqC,OAAO,oBAC/Bk/B,EAAqBie,GAAoBx/C,KAAKqC,OAAO,sBACrDskD,EAAoBnH,GAAoBx/C,KAAKqmD,uBAAyBrmD,KAAKwlB,YAC/ExlB,KAAKq5B,YAAcr5B,KAAK2iB,iBAAiB3iB,KAAKyI,WAwiB3C4wB,GAAeypB,EAAahkD,QAxiB4C,CACvEikB,SAAU/iB,KAAKqC,OAAO,cAAgBm9C,EACtC3d,SAAU7hC,KAAK4jC,eAAeljC,KAAKV,MACnC4mD,WAAYrlB,EAAqBvhC,KAAK6mD,iBAAiBnmD,KAAKV,MAAQ,KACpE8mD,cAAeH,EAAoB3mD,KAAK+mD,qBAAqBrmD,KAAKV,MAAQ,KAC1EikD,cAAejkD,KAAKqC,OAAO,iBAC3B2kD,UAAWhnD,KAAKqC,OAAO,sBACvB6hD,cAAelkD,KAAKqC,OAAO,iBAC3B8hD,gBAAiBnkD,KAAKqC,OAAO,mBAC7B+hD,cAAepkD,KAAKqC,OAAO,iBAC3Bo/B,gBAAiBzhC,KAAKqC,OAAO,mBAC7Bq/B,eAAgB1hC,KAAKqC,OAAO,kBAC5Bs/B,eAAgB3hC,KAAKqC,OAAO,kBAC5B4kD,gBAAiBjnD,KAAKqC,OAAO,mBAC7B6kD,aAAa,IAEjBlnD,KAAKE,aAAc,EAAI8Z,EAAUlb,SAASkB,KAAKq5B,YAAYpH,WACvDjyB,KAAKqC,OAAO,iBACZrC,KAAKE,YAAY6b,SAhQF,qBAkQnB/b,KAAKmnD,4BAETA,yBAA0B,WACtBnnD,KAAK2jC,cAAgB3jC,KAAKsE,sBAAsB,YAChDtE,KAAK0jC,mBAAqB1jC,KAAKsE,sBAAsB,iBACrDtE,KAAKyjC,mBAAqBzjC,KAAKsE,sBAAsB,kBAEzDs/B,eAAgB,SAAS/3B,GACrB7L,KAAK2jC,eAAiB3jC,KAAK2jC,cAAc93B,IAE7Ck4B,eAAgB,WACZ/jC,KAAKgkC,iBAAiBC,oBAAoB,CACtC5d,MAAO,IAAI48B,EAAmBmE,kBAAiB,SAASrnD,EAAY+lC,IAC5D,EAAI3mC,EAAMyE,eAAekiC,GACrBA,EAAKrjC,KACL1C,EAAW4C,KAAKmjC,EAAKrjC,KAGzB1C,EAAW4C,KAAKgjC,OAAOG,MAE5B,CAAC,OAAQ9lC,KAAKqC,OAAO,qCAE5BrC,KAAKkK,YAETm9C,4BAA6B,SAASvhB,EAAM/lC,GAExC,GADAC,KAAKkK,SAAS47B,EAAM/lC,GAChB+lC,EAAK3Y,KAAM,CACX,IAAIm6B,GAAQ,EAAI1E,EAAM2E,mBAAmBzhB,EAAK3Y,MAAMpR,SAtSrC,qBAuSXyrC,GAAiB,EAAIxtC,EAAUlb,SAAS,SAASid,SAxS5B,+BAySzByrC,EAAe37B,OAAOy7B,GACtBvnD,EAAW4rB,QAAQ67B,KAG3BC,mBAAoB,WAChB,MAAO,CAAC,OAAQ,OAAQ,SAE5BxC,oBAAqB,SAASyC,GAC1B,IAAIC,GAAgBD,GAAe1nD,KAAK4nD,cACpCC,EAAmB7nD,KAAKqmD,oBACxByB,EAAcH,IAAiBE,EAC/BE,EAAoBD,IAAgB9nD,KAAKgoD,uBACzCF,GAAe9nD,KAAKioD,qBACpBjoD,KAAKq5B,YAAY6uB,QAAQH,GACzB/nD,KAAKmoD,kBAAkBnoD,KAAKooD,4BAA8BpoD,KAAK4nD,eAC/D5nD,KAAKqoD,2BAA0B,IAE/BroD,KAAKsoD,wBAGbF,wBAAyB,WACrB,OAAOpoD,KAAKsmD,mBAAqBtmD,KAAKwlB,aAAexlB,KAAKwlB,YAAY+iC,YAE1EC,gCAAiC,SAASx5C,GAItC,OAHI,EAAI7P,EAAMwT,WAAW3D,KACrBhP,KAAKyoD,sBAAwBz5C,GAE1BhP,KAAKyoD,uBAEhBC,iCAAkC,SAASC,GACnC3oD,KAAKqoD,8BAGLM,GAAa3oD,KAAKqC,OAAO,mBACzBrC,KAAK4oD,2BAA6BnjD,WAAW,WACzC,IAGQojD,GAHO7oD,KAAK2lD,gBAAgBtiD,SACIrD,KAAKwoD,oCAGzC,QAAUK,EAAoB7oD,KAAKq5B,mBAAgB,IAAWwvB,GAA6BA,EAAkBC,iBAEnHpoD,KAAKV,QAEP0F,aAAa1F,KAAK4oD,4BAClB5oD,KAAKq5B,aAAer5B,KAAKq5B,YAAY0vB,iBAEpCJ,GACD3oD,KAAKwoD,iCAAgC,KAG7CQ,0BAA2B,YAClBhpD,KAAKipD,uBAAwB,EAAIzqB,EAAQ0qB,cAC1ClpD,KAAKq5B,aAAer5B,KAAKq5B,YAAYiO,SAAS,GAElDtnC,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WAC1B9X,KAAKwoD,iCAAgC,IAEzCW,gBAAiB,WACbnpD,KAAKopD,kBACLppD,KAAKskC,2BAET+kB,gCAAiC,WACxBrpD,KAAKqC,OAAO,oBACbrC,KAAK0oD,kCAAiC,IAG9CL,0BAA2B,SAASjmD,GAChC,IAAK0V,UAAUzU,OACX,OAAOrD,KAAKspD,4BAEhBtpD,KAAKspD,4BAA8BlnD,GAEvC6lD,kBAAmB,WACf,OAAQjoD,KAAKq5B,aAAer5B,KAAKq5B,YAAYkwB,UAEjD1C,iBAAkB,SAASh7C,GACvB7L,KAAK0jC,mBAAmB73B,GACpB7L,KAAKwlB,cAAgBxlB,KAAKgoD,wBAC1BhoD,KAAKwpD,sBACLxpD,KAAKwlB,YAAYwgC,UAAU,GAC3BhmD,KAAKwlB,YAAYikC,UAEjBzpD,KAAKilD,uBAGbqD,qBAAsB,WAClB,IAAIp3C,EAAQlR,MACWA,KAAKyI,WAAW8kB,GAAG,aACjBvtB,KAAKioD,qBAAwBjoD,KAAKgoD,wBAA2BhoD,KAAK4nD,gBACvFliD,aAAa1F,KAAK0pD,oBAClB1pD,KAAK0pD,mBAAqBjkD,YAAW,WACjCyL,EAAMy4C,gBAAgBh2B,KAAKziB,EAAM04C,6BAA6BlpD,KAAKwQ,SAI/E04C,6BAA8B,SAAS73C,GACnC,GAAI/R,KAAKqC,OAAO,0BAA2B,CACvC,IAAIkjB,EAAavlB,KAAKkoB,gBAClB89B,EAAY,MAASzgC,OAAsC,EAASA,EAAWygC,YAC/E,KAAO,MAASj0C,OAA8B,EAASA,EAAO1O,SAAW2iD,EAAY,IACrFhmD,KAAKskC,0BACL/e,EAAWygC,UAAUA,EAAY,MAI7Ce,qBAAsB,SAASl7C,GAC3B7L,KAAKyjC,mBAAmB53B,GACnB7L,KAAKgoD,wBAA2BhoD,KAAK4nD,cAGtC5nD,KAAKilD,sBAFLjlD,KAAK2pD,iBAKbhuB,aAAc,SAAS1U,GACfjnB,KAAKqC,OAAO,aACZ,EAAInD,EAAUyH,MAAMsgB,EAAOjnB,KAAK6pD,aAAanpD,KAAKV,OAClDA,KAAK8pD,4BACL9pD,KAAK+pD,uBACD,EAAIv6B,EAAQuB,eACZ/wB,KAAKgqD,oCAGThqD,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WAE9B9X,KAAKslD,uBACLtlD,KAAKilD,qBAAoB,IAE7B6E,0BAA2B,WACvB,IAAIhoC,GAAY,EAAI1iB,EAAO4E,cAAcurB,EAAOptB,KAAMnC,KAAKiE,MAEvDwE,EAAWzI,KAAKyI,WAChB87C,EAAoBvkD,KAAKqC,OAAO,qBACpCoG,EAAS2a,YAxamB,6BAwawBmhC,GACpDj7C,EAAexK,QAAQmX,IAAIxN,EAAUqZ,EAJtB,yBAKXyiC,GACAj7C,EAAexK,QAAQwX,GAAG7N,EAAUqZ,EANzB,wBAM8C,SAASjW,GAC9D7L,KAAKmiB,cAAc,SAAStW,GACxB,IAAIgb,GAAS,EAAI7M,EAAUlb,SAAS+M,EAAEqS,MAAMoe,eAAe7B,SAC3Dz6B,KAAKiqD,sBAAsBpjC,GACvB7mB,KAAKqC,OAAO,sBACZrC,KAAKqC,OAAO,kBAAkB,EAAIy4B,EAASiC,kBAAkBlW,EAAOF,KAAK,iBAAuBtE,GAAG,MAEzG3hB,KAAKV,MAAO,CACVkqD,qBAAsB,WAP1BlqD,CAQG,CACCke,MAAOrS,KAEbnL,KAAKV,QAGfiqD,sBAAuB,SAASpjC,EAAQsjC,GACpC,IAAI52B,EAAW,IAAIlZ,EAAUmD,SAC7B,GAAIqJ,EAAOgR,SA3bc,6BA2b2BsyB,EAChD,OAAO52B,EAASnyB,UAEpB,IAAIgpD,EAAavjC,EAAO5E,SAAS,uBAC7BooC,EAAcD,EAAW71B,cACzB+1B,EAAY,IAAMD,EAAcD,EAAWh2B,OAAO,QAAQG,cAAgB,EAiB9E,OAhBA1N,EAAOzD,YAjckB,0BAicsB+mC,GAC/C7hD,EAAIxJ,QAAQiK,QAAQqhD,EAAY,CAC5BphD,KAAM,SACN2lB,KAAM,CACFyF,OAAQi2B,GAEZphD,GAAI,CACAmrB,OAAQk2B,GAEZzhD,SAAU,IACVK,SAAU,WACNlJ,KAAKW,mBACLX,KAAKilD,sBACL1xB,EAASnyB,WACXV,KAAKV,QAEJuzB,EAASG,WAEpB62B,4BAA6B,WACzBvqD,KAAKwqD,yBACDxqD,KAAKyqD,eACLzqD,KAAK+pD,sBACL/pD,KAAKilD,wBAGbppC,YAAa,WACT7b,KAAKulD,oBAAqB,EAAIvrC,EAAUlb,WACxCkB,KAAKyI,WAAWsT,SAreP,WAseT/b,KAAKkK,WACLlK,KAAKqC,OAAO,iBAAmBrC,KAAK8kC,mBACpC9kC,KAAKqc,QAAQ,OAAQrc,KAAKqC,OAAO,mBAAmBoiD,OAExD3f,iBAAkB,WACd9kC,KAAKglC,YAAa,EAAIl7B,EAAO3J,WAEjC+kC,mBAAoB,SAASz8B,EAAUrG,EAAOyJ,GAC1C7L,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WAC1B,IAAIpR,EAAO1G,KACX,GAAKA,KAAKglC,WAAV,CAGA,IAAI5Z,EAAS,CACTnM,QAASxW,EACTyV,MAAOrS,GAEPzJ,GACI,EAAIotB,EAAQuB,cACZ/wB,KAAKmhD,gBAAkB17C,YAAW,WAC9BiB,EAAKs+B,WAAWG,SAAS/Z,KAC1Bs/B,IAEHhkD,EAAKs+B,WAAWG,SAAS/Z,IAG7B1lB,aAAa1F,KAAKmhD,iBAClBnhD,KAAKglC,WAAWI,SAASha,MAGjCq0B,uBAAwB,SAASrnC,GAC7BpY,KAAKslD,uBACLtlD,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WACtB9X,KAAKqC,OAAO,kBACZrC,KAAK2gD,mBAAkB,EAAI3mC,EAAUlb,SAASsZ,EAAKgR,eAG3Du3B,kBAAmB,SAASx1B,GACxB,IAAIw/B,GAAe,EAAIvrD,EAAO4E,cAAcs8C,EAAOl1C,IAAKpL,KAAKiE,MAC7DqF,EAAexK,QAAQwX,GAAG6U,EAAcw/B,EAAc3qD,KAAKkhD,qBAAqBxgD,KAAKV,QAEzFkhD,qBAAsB,SAASr1C,GAC3B7L,KAAK4qD,oBAAoB/+C,EAAG,cAAe,CACvC6B,UAAW7B,EAAEwJ,OAAS,EAAI,OAAS,WAG3Cw1C,mBAAoB,SAASh/C,GACzB7L,KAAKyjC,mBAAmB53B,GACxB,IAAIi/C,EAAS9qD,KAAKwlB,YACdslC,IAAWA,EAAOnC,cAClB3oD,KAAKq5B,YAAY0xB,eAAc,GAC/B/qD,KAAKgrD,aAAa/8B,SAClBjuB,KAAKqoD,2BAA0B,GAC/BroD,KAAK2pD,kBAGbE,aAAc,SAASp5C,EAAO4V,GAC1B,IAAI4kC,GAAgB,EAAIjxC,EAAUlb,SAAS,SAASid,SA1hBrC,iBA0hBgES,SAASxc,KAAK0mB,kBACzFwkC,GAAsB,EAAIlxC,EAAUlb,SAAS,SAASid,SA1hBpC,wBA0hBsES,SAASyuC,GACjGE,EAAoBnrD,KAAKqC,OAAO,iBAChC8/B,EAAgBniC,KAAKorD,aAAa/kC,EAAMuf,UAAYulB,EAAmB9kC,EAAO5V,EAAOy6C,GACrFG,EAAa,CACb56C,MAAOA,EACPsW,SAAUV,EACVmT,WAAW,EAAIsB,EAASiC,kBAAkBmuB,IAE9ClrD,KAAKsrD,sBAAsBnpB,EAAekpB,IACtC,EAAI77B,EAAQuB,gBACZ,EAAI/W,EAAUlb,SAAS,SAASid,SAhiBJ,kCAgiBgDwvC,UAAUL,GAE1FlrD,KAAKwrD,qBAAuB/6C,EAC5B,IAAI25C,GAAa,EAAIpwC,EAAUlb,SAAS,SAASid,SAtiB7B,sBAsiB6DS,SAASyuC,IAC1F,EAAI/rD,EAAUyH,MAAMy8C,EAAiB/8B,IAAU,GAAI,SAAS5V,EAAOvN,GAC/DlD,KAAKyrD,YAAYh7C,EAAOvN,EAAMknD,IAChC1pD,KAAKV,OACPA,KAAK0rD,mBAAmB,CACpBC,cAAc,EAAI7wB,EAASiC,kBAAkBkuB,GAC7C/jC,WAAYzW,EACZm7C,UAAWvlC,KAGnBwlC,qBAAsB,SAAShgD,GAC3B7L,KAAKklC,oBAAmB,EAAIlrB,EAAUlb,SAAS+M,EAAEywB,gBAAgB,EAAMzwB,IAE3EigD,mBAAoB,SAASjgD,GACzB7L,KAAKklC,oBAAmB,EAAIlrB,EAAUlb,SAAS+M,EAAEywB,gBAAgB,IAErE0tB,iCAAkC,WAC9B,IACIvhD,EAAWzI,KAAKyI,WACpBzI,KAAK+rD,sBAAwB/rD,KAAK+rD,uBAAyB/rD,KAAK6rD,qBAAqBnrD,KAAKV,MAC1FA,KAAKgsD,oBAAsBhsD,KAAKgsD,qBAAuBhsD,KAAK8rD,mBAAmBprD,KAAKV,MACpF,IAAIisD,EAAgB,CAACxjD,EAAU,gBAJhB,wBAI2CzI,KAAK+rD,uBAC3DG,EAAc,CAACzjD,EAAU,2BALd,wBAKoDzI,KAAKgsD,qBACxE1iD,EAAexK,QAAQmX,IAAI4B,MAAMvO,EAAexK,QAASmtD,GACzD3iD,EAAexK,QAAQwX,GAAGuB,MAAMvO,EAAexK,QAASmtD,GACxD3iD,EAAexK,QAAQmX,IAAI4B,MAAMvO,EAAexK,QAASotD,GACzD5iD,EAAexK,QAAQwX,GAAGuB,MAAMvO,EAAexK,QAASotD,IAE5D9F,yBAA0B,WACtBpmD,KAAK0rD,mBAAqB1rD,KAAKsE,sBAAsB,oBAEzDiU,OAAQ,WACJ7S,aAAa1F,KAAKmhD,iBACdnhD,KAAKgrD,eACLhrD,KAAKgrD,aAAah8B,SAClBhvB,KAAKgrD,aAAe,aAEjBhrD,KAAKglC,WACZhlC,KAAKkK,SAAS2N,MAAM7X,KAAM8X,YAE9BgN,SAAU,WACN9kB,KAAKwoD,iCAAgC,GACrC9iD,aAAa1F,KAAK0kB,YAClBhf,aAAa1F,KAAK0pD,oBAClBhkD,aAAa1F,KAAK4oD,4BAClB5oD,KAAKkK,YAETiiD,qBAAsB,SAAS/pD,GAC3BpC,KAAKkK,SAAS9H,GACdpC,KAAKq5B,YAAYh3B,OAAO,WAAYD,IAAUpC,KAAKqC,OAAO,sBAE9D8lD,kBAAmB,SAAS/lD,GACxB,IAAImjB,EAAavlB,KAAKwlB,YAClB4mC,EAAcpsD,KAAKqsD,iBACvBrsD,KAAKyI,WAAW2a,YAxlBE,cAwlB+BhhB,GAC7CA,GAASmjB,GAAcA,EAAWgjC,YAClC6D,EAAY5vC,SAASxc,KAAK0mB,kBAEzBtkB,GACDgqD,EAAYn+B,UAGpBo+B,eAAgB,WAIZ,OAHKrsD,KAAKgrD,eACNhrD,KAAKgrD,aAAehrD,KAAKssD,qBAEtBtsD,KAAKgrD,cAEhBsB,kBAAmB,WACf,IAAIC,GAAU,EAAIvyC,EAAUlb,SAAS,SAASid,SAtmBzB,uBAumBjBmR,GAAU,EAAIlT,EAAUlb,SAAS,SAAS0d,SAAS+vC,GAOvD,OANAvsD,KAAK2iB,iBAAiBuK,EAAStM,EAAQ9hB,QAAS,CAC5C6D,KAAM3C,KAAKqC,OAAO,kBAClB+qB,QAASptB,KAAK6qD,mBAAmBnqD,KAAKV,MACtCgJ,MAAM,EAAIwmB,EAAQuB,cAAgB,eAAY,EAC9CzD,mBAAoB,KAEjBi/B,GAEXC,WAAY,WACRxsD,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WAC1B9X,KAAK43B,aAAa53B,KAAKqC,OAAO,oBAElCoqD,SAAU,WACN,IAAK,EAAIjuB,EAAQ0qB,aAEV,CACH,IAAI3hB,EAAYvnC,KAAKq5B,YAAYkO,YACjCvnC,KAAKkK,WACLq9B,GAAavnC,KAAKq5B,YAAYiO,SAASC,QAJvCvnC,KAAKkK,YAObiO,eAAgB,SAASC,GACrB,OAAQA,EAAKjW,MACT,IAAK,eACDnC,KAAKmoD,kBAAkB/vC,EAAKhW,OAC5BpC,KAAKkmD,kBACL,MACJ,IAAK,aACDlmD,KAAKkK,SAASkO,GACdpY,KAAKkmD,kBACLlmD,KAAKwoD,iCAAgC,GACrC,MACJ,IAAK,QACDxoD,KAAKkK,SAASkO,GACdpY,KAAKwoD,iCAAgC,GACrC,MACJ,IAAK,kBACL,IAAK,iBACL,IAAK,iBACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,qBACL,IAAK,mBACL,IAAK,qBACDxoD,KAAKkmD,kBACLlmD,KAAKilD,sBACL,MACJ,IAAK,iBACL,IAAK,cACL,IAAK,eACDjlD,KAAKglB,cACL,MACJ,IAAK,WACL,IAAK,gBACL,IAAK,gBACDhlB,KAAKmnD,2BACL,MACJ,IAAK,UACL,IAAK,oBACL,IAAK,gBACDnnD,KAAKglB,cACL,MACJ,IAAK,eACDhlB,KAAKE,YAAYkjB,YAzqBN,oBAyqBwChL,EAAKhW,OACxD,MACJ,IAAK,kBACDpC,KAAKomD,2BACL,MACJ,IAAK,QACL,IAAK,SACDpmD,KAAKkK,SAASkO,GACdpY,KAAKq5B,YAAYhW,SACjB,MACJ,IAAK,kBACDrjB,KAAKqpD,kCACL,MACJ,IAAK,UACDrpD,KAAKkK,SAASkO,GACdpY,KAAKq5B,YAAYhW,SACjB,MACJ,IAAK,aACDrjB,KAAKkmD,kBACLlmD,KAAKkK,SAASkO,GACd,MACJ,IAAK,kBACL,IAAK,YACDpY,KAAKglB,cACL,MACJ,IAAK,gBACL,IAAK,yBAEL,IAAK,kBACD,MACJ,QACIhlB,KAAKkK,SAASkO,KAG1Bs0C,kBAAmB,SAASvhC,GACxB,IAAKnrB,KAAKqC,OAAO,WACb,OAAOrC,KAAKkK,SAASihB,GAEzB,IAAItE,EAASsE,EAAa7B,QAAQ,kBAC9BD,EAAQxC,EAAOF,KAAK,iBACxB,OAAO,EAAI9hB,EAAQ0B,QAAQvG,KAAKkK,SAASihB,GAAe,CACpDhE,UAAW,CACPd,MAAOQ,EAAOpW,QACdvN,KAAMmmB,EAAM5Y,MAAM0a,OAI9BwhC,YAAa,SAASzlC,GAClB,IAAIqM,EAAW,IAAIlZ,EAAUmD,SACzBqJ,EAAS7mB,KAAK0mB,iBAAiBC,KAAK,kBAAwBtE,GAAG6E,GAInE,OAHAlnB,KAAKiqD,sBAAsBpjC,GAAQ,GAAO8M,KAAK,WAC3CJ,EAASq5B,YAAY5sD,OACvBU,KAAKV,OACAuzB,EAASG,WAEpBm5B,cAAe,SAAS3lC,GACpB,IAAIqM,EAAW,IAAIlZ,EAAUmD,SACzBqJ,EAAS7mB,KAAK0mB,iBAAiBC,KAAK,kBAAwBtE,GAAG6E,GAInE,OAHAlnB,KAAKiqD,sBAAsBpjC,GAAQ,GAAM8M,KAAK,WAC1CJ,EAASq5B,YAAY5sD,OACvBU,KAAKV,OACAuzB,GAEX5yB,iBAAkB,WACd,IAAI+F,EAAO1G,KACPuzB,EAAW,IAAIlZ,EAAUmD,SAS7B,OARI9W,EAAK2yB,YACL3yB,EAAK2yB,YAAYhW,SAASsQ,MAAK,YAC1BjtB,EAAKuhD,qBAAuBvhD,EAAKu+C,qBAAoB,GACtD1xB,EAASq5B,YAAYlmD,MAGzB6sB,EAASq5B,YAAYlmD,GAElB6sB,EAASG,WAEpB+1B,OAAQ,WACJzpD,KAAKkK,WACLlK,KAAKsnC,SAAS,GACdtnC,KAAK6mD,oBAETiG,QAAS,WACL9sD,KAAKsnC,SAAS,GACdtnC,KAAKkK,YAETq9B,UAAW,WACP,OAAOvnC,KAAKq5B,YAAY0zB,eAAejvB,KAE3CkvB,aAAc,WACV,OAAOhtD,KAAKq5B,YAAY2zB,gBAE5BC,aAAc,WACV,OAAOjtD,KAAKq5B,YAAY4zB,gBAE5BC,SAAU,SAASC,GACfntD,KAAKq5B,YAAY6zB,SAASC,IAE9B7lB,SAAU,SAASvkC,GACf/C,KAAKq5B,YAAYiO,SAASvkC,IAE9B60B,aAAc,SAASxO,GACnB,IAAIC,EAAQrpB,KAAKotD,cAAcC,eAAejkC,GAC9CppB,KAAKq5B,YAAYi0B,gBAAgBjkC,MAEtCgK,QAAQ6vB,EAA8BpkD,SACzCD,EAAQi2B,SAAWA,EACnBA,EAAS4qB,UAAYrqB,EAAMv2B,S,iCCn0B3BD,EAAQC,aAAU,EAClB,IAAIkb,EAAYhb,EAAuB,EAAQ,IAC3CuJ,EAAe,EAAQ,IACvBglD,EAAgB,EAAQ,MACxB9jD,EAAQ,EAAQ,IAChB5E,EAAU,EAAQ,GAClBgF,EAAU,EAAQ,GAClB2jD,EAAqB,EAAQ,KAC7B1yB,EAAW,EAAQ,IACnB37B,EAAQ,EAAQ,GAChBqK,EAAWxK,EAAuB,EAAQ,KAC1CoK,EAAyBpK,EAAuB,EAAQ,KACxDgkD,EAAuBhkD,EAAuB,EAAQ,MACtDyuD,EAAazuD,EAAuB,EAAQ,MAC5Cqb,EAAY,EAAQ,IAExB,SAASrb,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAOIquD,EAAW,SAAStrD,GACpB,OAAQA,GAKRurD,EAAY3K,EAAqBlkD,QAAQW,QAAQ,CACjD6jD,iBAAkB,qBAClBh5C,eAAgB,WACZ,OAAO,EAAIzF,EAAQ0B,QAAQvG,KAAKkK,WAAY,CACxC65C,OAAQl6C,EAAQsiB,KAChB63B,SAAUn6C,EAAQsiB,QAG1BliB,mBAAoB,WAChB,OAAO,EAAIpF,EAAQ0B,QAAQvG,KAAKkK,WAAY,CACxCo8B,cAAe,EACfsnB,cAAc,EACdC,kBAAkB,EAClBC,MAAM,EACN75B,gBAAgB,EAChBuwB,gBAAiB,CACbC,KAAM,YAEVsJ,eAAe,EACfC,eAAe,EACf53B,cAAe,SACf63B,mBAAmB,EACnBC,kBAAkB,KAG1BzyC,qBAAsB,WAClB,OAAOzb,KAAKkK,WAAWmR,OAAO,CAAC,CAC3BK,OAAQ,WACJ,MAAO,YAAclS,EAAS1K,QAAQiW,OAAOC,aAAexL,EAAS1K,QAAQ8c,eAEjF7V,QAAS,CACL6wB,mBAAmB,OAI/BsuB,WAAY,WACR,MA9CmB,qBAgDvBC,aAAc,WACV,MA/CsB,uBAiD1Bz+B,eAAgB,WACZ,OAAO1mB,KAAKmuD,iBAEhBxI,cAAe,WACX,OAAO3lD,KAAK0mB,iBAAiBzE,SAASjiB,KAAKwlD,kBAE/C4I,WAAY,WAIR,OAHKpuD,KAAKquD,kBACNruD,KAAKquD,gBAAkBruD,KAAKy/B,UAAUnR,SAEnCtuB,KAAKquD,iBAEhBC,qBAAsB,kBACXtuD,KAAKquD,iBAEhBE,YAAa,WACT,OAAOvuD,KAAKqC,OAAO,SAASgB,QAEhCmrD,gBAAiB,SAAS/9C,GACtB,IAAIm2B,EAAQ5mC,KAAKuuD,cAOjB,OANI99C,EAAQ,IACRA,GAASm2B,GAETn2B,GAASm2B,IACTn2B,GAASm2B,GAENn2B,GAEXg+C,sBAAuB,WACnB,OAAOzuD,KAAKqC,OAAO,eAAiB,EAAI,GAE5CiD,MAAO,WACHtF,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WAC1B,IAAIrP,EAAWzI,KAAKyI,WACpBA,EAASsT,SAxFK,gBAyFd/b,KAAKy/B,WAAY,EAAIzlB,EAAUlb,SAAS,SAASid,SAxF3B,wBAyFtB/b,KAAKy/B,UAAUjjB,SAAS/T,GACxBzI,KAAKmuD,iBAAkB,EAAIn0C,EAAUlb,SAAS,SAASid,SAzF1B,+BA0F7B/b,KAAKmuD,gBAAgB3xC,SAASxc,KAAKy/B,WACnCz/B,KAAKqC,OAAO,gBAAiBrC,KAAKqC,OAAO,SACzCrC,KAAK0uD,kBAET7yC,YAAa,WACT7b,KAAK2uD,eAAiB,GACtB3uD,KAAKkK,WACL,IAAI0kD,EAAsB5uD,KAAK6uD,0BAC/B7uD,KAAK8uD,uBAAuBF,EAAoB,KAEpDG,yBAA0B,SAAS1lC,EAAO2lC,GACtChvD,KAAKkK,SAASmf,EAAO2lC,GACjBhvD,KAAK2uD,gBACL3uD,KAAK2uD,eAAeznD,OAAO8nD,EAAkB7nC,UAAW,IAGhE8nC,2BAA4B,SAASC,GACjClvD,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WACtB9X,KAAK2uD,gBACL3uD,KAAK2uD,eAAeznD,OAAOgoD,EAAOz+C,MAAO,EAAG,OAGpD0+C,yBAA0B,SAAS1+C,EAAOsW,EAAUqC,GAChD3Y,GAASzQ,KAAKqC,OAAO,UAAY,IAAIwN,QAAQkX,GAC7C/mB,KAAKkK,SAASuG,EAAOsW,EAAUqC,IAEnCgmC,mBAAoB,SAASh3C,GACzB,IAAIi3C,EAAwB,IAAIh1C,EAAUmD,SACtC9W,EAAO1G,KACPkK,EAAWlK,KAAKkK,SAChBqpB,EAAW,IAAIlZ,EAAUmD,SAO7B,OANA+V,EAASI,MAAK,WACV,IAAI27B,EAAeplD,EAAS8Y,KAAKtc,EAAM0R,GACvCi3C,EAAsBjuD,QAAQkuD,MAElCtvD,KAAK2uD,eAAev2C,EAAK3H,OAAS8iB,EAClCvzB,KAAKqC,OAAO,mBAAqBkxB,EAASnyB,UACnCiuD,EAAsB37B,WAEjCtP,QAAS,WACL,IAAIlT,EAAQlR,KACZA,KAAKkK,YACL,EAAIL,EAAQ0lD,cAAa,WACrB,IAAIX,EAAsB19C,EAAM29C,0BAChC39C,EAAMs+C,aAAaZ,EAAoB,QAG/CY,aAAc,SAASlpB,EAAempB,GAClCzvD,KAAK0vD,qBAAqBppB,EAAempB,GACzCzvD,KAAK8uD,uBAAuBxoB,EAAempB,IAE/ChK,iBAAkB,WACdzlD,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WAC1B,IAAI82C,EAAsB5uD,KAAK6uD,0BAC/B7uD,KAAK8uD,uBAAuBF,EAAoB,KAEpDc,qBAAsB,SAASppB,EAAempB,GAC1C,IAAIE,EAAgB3vD,KAAK2lD,gBACrBiK,GAAe,EAAIzwD,EAAMwT,WAAW88C,IAAazvD,KAAK6vD,oBAAoBJ,EAAUnpB,QAAiB,EACrGwpB,EAAgBH,EAActtC,GAAGikB,GACrCinB,EAAcllD,YAAYG,KAAKsnD,EAAe,IAC1C,EAAI3wD,EAAMwT,WAAW88C,IACrBlC,EAAcllD,YAAYG,KAAKmnD,EAActtC,GAAGotC,GAAW,IAAMG,EAAe,MAGxFd,uBAAwB,SAASxoB,EAAempB,GACxBzvD,KAAK2lD,gBACXh/C,KAAK,SAASwgB,EAAWjkB,GACnC,IAAImmB,GAAQ,EAAIrP,EAAUlb,SAASoE,GAC/B6sD,EAAW5oC,IAAcmf,GAAiBnf,IAAcsoC,EACvDM,GACD/vD,KAAKgwD,oBAAoB7oC,GAE7BkC,EAAMjG,YAjKgB,2BAiKyB2sC,GAC/C/vD,KAAKqc,QAAQ,SAAU0zC,QAAY,EAAQ1mC,IAC7C3oB,KAAKV,QAEXgwD,oBAAqB,SAASv/C,GAC1B,IAAI4Y,EAAQrpB,KAAK2lD,gBAAgBtjC,GAAG5R,GAChCw/C,EAAiB5mC,EAAM1C,KAAK3mB,KAAKkwD,qBAAqB7sD,OAAS,GAC/D,EAAIlE,EAAMwT,WAAWlC,KAAWw/C,IAChCjwD,KAAK2uD,eAAel+C,GAAOrP,WAC3B,EAAIosD,EAAmB2C,oBAAoB9mC,KAGnD+mC,aAAc,SAAS/mC,EAAOnmB,GAC1BlD,KAAKkK,SAASmf,EAAOnmB,GACrBlD,KAAK8uD,uBAAuB9uD,KAAKqC,OAAO,mBAE5CguD,iBAAkBxmD,EAAQsiB,KAC1BmkC,iBAAkB,SAASC,EAAgBC,GACvC,IAAIf,EAAWc,EAAe,GAC1BE,EAAYD,EAAiB,GACjCjD,EAAcnlD,UAAUc,SAASlJ,KAAKmuD,iBACtCnuD,KAAKwvD,aAAaiB,EAAWhB,GAC7B,IAAIiB,EAAqB1wD,KAAK6vD,oBAAoBJ,EAAUgB,GAC5DzwD,KAAK2wD,sBAAsBD,EAAqB1wD,KAAKouD,aAAc,WAC/Db,EAAcllD,YAAYG,KAAKxI,KAAKmuD,gBAAiB,GACrDnuD,KAAKwvD,aAAaC,GAClBzvD,KAAKmuD,gBAAgB7/B,SACvB5tB,KAAKV,QAEX2wD,sBAAuB,SAASjoD,EAAUkoD,GACtC,IAAI/nD,EAAW7I,KAAKqC,OAAO,oBA7LA,IA6LqD,EAChFkrD,EAAcnlD,UAAUQ,OAAO5I,KAAKmuD,gBAAiBzlD,EAAUG,EAAU+nD,IAE7Ef,oBAAqB,SAASJ,EAAUgB,GACpC,IA7LgBhoD,EA6LZooD,GA7LYpoD,EA6LiBzI,KAAKmuD,iBA5LnC,EAAI5lD,EAAakqB,QAAQhqB,GAAUE,MA6LlCmoD,GAAmBL,EAAYhB,GAAYzvD,KAAKyuD,wBAA0BzuD,KAAK+wD,kCAE/EC,EADiB,IAAMH,EACkBA,EAAoBC,EACjE,OAAO,EAAIrnD,EAAM+H,MAAMw/C,IAE3BC,uBAAwB,WACpB,OAAQjxD,KAAKqC,OAAO,iBAAmBrC,KAAKuuD,eAAiB,GAEjEG,eAAgB,WACZ,IAAIlqB,EAASxkC,KACbA,KAAK2iB,iBAAiB3iB,KAAKyI,WAAYglD,EAAW3uD,QAAS,CACvDikB,SAAU/iB,KAAKixD,yBACfC,SAAS,EACTrQ,aAAc7gD,KAAKouD,WAAW1tD,KAAKV,MACnCmxD,QAAS,SAAS/4C,GACd,OAAOosB,EAAOhT,mBAAmBpZ,EAAK8F,QAE1CiyB,UAAW,SAAS/3B,GAChB,OAAOosB,EAAO5S,oBAAoBxZ,EAAK8F,QAE3CkzC,MAAO,SAASh5C,GACZ,OAAOosB,EAAOnV,iBAAiBjX,EAAK8F,WAIhDsT,mBAAoB,SAAS3lB,GACzB0hD,EAAcnlD,UAAUc,SAASlJ,KAAKmuD,iBACtC,IAAI7nB,EAAgBtmC,KAAKqC,OAAO,iBAC5ByrD,EAAO9tD,KAAKqC,OAAO,QACnBgvD,EAAYrxD,KAAKuuD,cAAgB,EACjCpgC,EAAMnuB,KAAKqC,OAAO,cACtBwJ,EAAEylD,cAAgB5D,EAASI,IAAS3/B,EAAMmY,EAAgB,EAAIA,EAAgB+qB,IAC9ExlD,EAAE0lD,eAAiB7D,EAASI,IAAS3/B,EAAMmY,EAAgB+qB,EAAY/qB,EAAgB,IACvFtmC,KAAKwxD,gBAAkB,MAE3B5/B,oBAAqB,SAAS/lB,GAC1B,IAAIwJ,EAASxJ,EAAEwJ,OACXo8C,GAAiB,EAAIhoD,EAAM+H,MAAM6D,GAAUrV,KAAKyuD,wBAEpD,GADAlB,EAAcllD,YAAYG,KAAKxI,KAAKmuD,gBAAiB94C,EAASrV,KAAKouD,cAC/DqD,IAAmBzxD,KAAKwxD,gBAAiB,CACzCxxD,KAAKwxD,gBAAkBC,EACvB,IAAInrB,EAAgBtmC,KAAKqC,OAAO,iBAC5BotD,EAAWzvD,KAAKwuD,gBAAgBloB,EAAgBmrB,GACpDzxD,KAAKwvD,aAAalpB,EAAempB,KAGzCpgC,iBAAkB,SAASxjB,GACvB,IAAIyjB,EAAezjB,EAAEyjB,aAAetvB,KAAKyuD,wBACzC,GAAIn/B,EAAc,CACdtvB,KAAKqC,OAAO,gBAAiBrC,KAAKwuD,gBAAgBxuD,KAAKqC,OAAO,iBAAmBitB,IACjF,IAAIoiC,EAAmB1xD,KAAK+nC,eAAe1iB,OAAO,qBAClDrlB,KAAKqC,OAAO,sBAAwBrC,KAAKqC,OAAO,kBAAkB,EAAIy4B,EAASiC,kBAAkB20B,SAEjG1xD,KAAK2wD,sBAAsB,EAAG9mD,EAAQsiB,OAG9C4kC,gCAAiC,WAC7B,OAAO/wD,KAAK2xD,kBAAoB,EAAI,GAExCnF,WAAY,WACRxsD,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WAC1B9X,KAAK2xD,kBAAmB,GAE5BC,UAAW,SAASC,GAChB,IAAItF,EAAUvsD,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WAExC,OADA9X,KAAK2xD,iBAAmBpF,EAAQh/B,GAAGskC,EAAOC,QACnCvF,GAEXwF,UAAW,SAASF,GAChB,IAAItF,EAAUvsD,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WAExC,OADA9X,KAAK2xD,iBAAmBpF,EAAQh/B,GAAGskC,EAAO/7B,SACnCy2B,GAEXnhB,kBAAmB,WACfprC,KAAKsuD,wBAEThd,mBAAoB,SAAS1uC,GACrBA,GACA5C,KAAKorC,qBAGb4mB,0BAA2B,WACvB,IAAIjvC,EAAW/iB,KAAKixD,yBACpBxD,EAAW3uD,QAAQsjB,YAAYpiB,KAAKyI,YAAYpG,OAAO,WAAY0gB,IAEvE5K,eAAgB,SAASC,GACrB,IAAIhW,EAAQgW,EAAKhW,MACjB,OAAQgW,EAAKjW,MACT,IAAK,OACDnC,KAAKqC,OAAO,gBAAiBD,GAC7B,MACJ,IAAK,mBACD,MACJ,IAAK,eACDpC,KAAKgyD,4BACL,MACJ,IAAK,iBACDhyD,KAAKglB,cACL,MACJ,IAAK,QACDhlB,KAAKgyD,4BACLhyD,KAAKkK,SAASkO,GACd,MACJ,QACIpY,KAAKkK,SAASkO,QAI9B,EAAIhP,EAAuBtK,SAAS,cAAe6uD,GACnD,IAAInuD,EAAWmuD,EACf9uD,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,QACzB8F,EAAO/F,QAAQC,QAAU8F,EAAO/F,S,iCC7UhCA,EAAQmY,aAAenY,EAAQ8M,iBAAmB9M,EAAQ4M,2BAAwB,EAuBlF5M,EAAQ4M,sBAtBoB,SAAS2J,GAGjC,IAFA,IAAI68C,EAAe,EACfC,EAAiB,EACZ3qC,EAAI,EAAGA,EAAInS,EAAI/R,SAAUkkB,EAI9B,GAHI,MAAQnS,EAAImS,IACZ0qC,IAEA,MAAQ78C,EAAImS,OACV2qC,EACED,EAAe,GAAM,GACrB,MAAO,CACHvmD,WAAYwmD,EACZzhD,MAAO8W,GAKvB,MAAO,CACH7b,WAAY,EACZ+E,OAAQ,IAWhB5R,EAAQ8M,iBAPe,SAASyJ,EAAK+8C,EAAGC,GAEpC,IADA,IAAI7qC,GAAK,EACF6qC,KAAO7qC,IAAMnS,EAAI/R,QACpBkkB,EAAInS,EAAIvF,QAAQsiD,EAAG5qC,GAEvB,OAAOA,GASX1oB,EAAQmY,aANW,SAAS5B,EAAK3E,GAC7B,OAAe,IAAXA,EACO,CAAC2E,GAEL,CAACA,EAAI7F,MAAM,EAAGkB,GAAQ2E,EAAI7F,MAAMkB,EAAQ,M,iCCpCnD5R,EAAQC,aAAU,EAClB,IAAIkb,EAAYhb,EAAuB,EAAQ,IAC3CI,EAAS,EAAQ,IACjByF,EAAU,EAAQ,GAClBwtD,EAAsBrzD,EAAuB,EAAQ,OACrDob,EAAWpb,EAAuB,EAAQ,KAC1C6qB,EAAc7qB,EAAuB,EAAQ,OAC7CimB,EAAU,EAAQ,KAEtB,SAASjmB,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAoQIG,EAlQWylB,EAAQ6P,SAASr1B,QAAQ,CACpC6K,eAAgB,WACZ,IAAI4G,EAAQlR,KACR0G,EAAO1G,KACPy6B,EAASz6B,KAAKkK,WAOdooD,EAAkB,SAASzmD,EAAG0mD,GAC9B,IAAIC,EAAethD,EAAMk8C,cACrBqF,EAAiBvhD,EAAM7O,OAAO,kBAC9BqwD,EAAmBF,EAAaG,mBAAmBF,GAEvD,KADyBC,IAAqBxhD,EAAMymB,uBAC1BzmB,EAAM82C,uBAGhC,GAAIn8C,EAAEiC,UAAYpH,EAAKrE,OAAO,gCAAiC,CAC3D,IAAIuwD,EAAgBF,GAAoBH,GAAU,EAAI,GAClD1O,EAAY2O,EAAanF,eAAeuF,GAC5C1hD,EAAMypB,YAAY83B,EAAgB5O,GAClC3yC,EAAM0mB,aAAa66B,GACnB5mD,EAAE0B,qBACC,CACgB2D,EAAM2hD,cACWtmC,qBAAqBmmC,EAAkBH,KAEvEA,EAAS93B,EAAOjgB,QAAQ3O,GAAK4uB,EAAO7f,UAAU/O,MAc1D,OAAO,EAAIhH,EAAQ0B,QAAQ,GAAIk0B,EAAQ,CACnC/vB,IAvCoB,SAASmB,GACzBnF,EAAKrE,OAAO,uBACZwJ,EAAE0B,iBACF7G,EAAK8mB,WAAW9mB,EAAKrE,OAAO,qBAqChCmY,QAAS,SAAS3O,GACd,OAAOymD,EAAgBzmD,GAAG,IAE9B+O,UAAW,SAAS/O,GAChB,OAAOymD,EAAgBzmD,IAE3BX,MAlBQ,SAASW,GACZ7L,KAAK6yD,cAAcnmC,oBAAoB7gB,IACxC4uB,EAAOvvB,MAAM2M,MAAM7X,KAAM8X,YAiB7B+oB,MAdQ,SAASh1B,GACZ7L,KAAK6yD,cAAcnmC,oBAAoB7gB,IACxC4uB,EAAOoG,MAAMhpB,MAAM7X,KAAM8X,eAerCw4C,iBAAkB,WACdtwD,KAAK6yD,cAAcrnC,qBACnBxrB,KAAKkK,YAETytB,kBAAmB,WACf,OAAO33B,KAAK2lD,gBAAgBtiD,OAAS,GAEzCiiD,qBAAsB,WAClBtlD,KAAKkK,WACL,IAAI4iB,EAAoB9sB,KAAK6yD,cAAchmC,2BACvCC,EAAkBzpB,SAClBrD,KAAKulD,mBAAqBvlD,KAAKulD,mBAAmBuN,IAAIhmC,KAG9DimC,oBAAqB,SAASC,EAAOC,GACjC,IAAIC,EAAaF,GAASA,EAAMG,WAChC,QAAID,IAAelzD,KAAKyC,OAASzC,KAAKy4B,WAAWG,eAAes6B,KAGzDlzD,KAAKkK,SAAS8oD,EAAOC,IAEhChpD,mBAAoB,WAChB,OAAO,EAAIpF,EAAQ0B,QAAQvG,KAAKkK,WAAY,CACxCkpD,uBAAuB,EACvBh9B,cAAe,OACfi9B,cAAe,OACfC,wBAAyB,KACzBC,cAAen5C,EAAStb,QAAQsL,OAAO,oBACvC8lB,UAAW,GACXsjC,SAAU,UACVC,mBAAmB,EACnBC,eAAgB,SAChBC,aAAc,MAGtBl4C,qBAAsB,WAClB,OAAOzb,KAAKkK,WAAWmR,OAAO,CAAC,CAC3BK,OAAQ,SAASqnB,GACb,MAAO,QAAUA,EAAQ7D,UAE7Bn5B,QAAS,CACLytD,SAAU,QACVE,eAAgB,cAErB,CACCh4C,OAAQ,CACJwjB,SAAU,WAEdn5B,QAAS,CACL2tD,eAAgB,aAI5BpuD,MAAO,WACHtF,KAAKkK,WACLlK,KAAK4zD,qBAETluC,gBAAiB,WACb1lB,KAAKkK,WACAlK,KAAK6zD,oBACN7zD,KAAKwlB,aAAexlB,KAAKwlB,YAAYsuC,mBAAkB,IAG/DD,iBAAkB,WACd,MAAO,SAAW7zD,KAAKqC,OAAO,kBAElCuxD,kBAAmB,WACf5zD,KAAK6yD,cAAgB,IAAIhpC,EAAY/qB,QAAQkB,OAEjD+zD,qBAAsB,WACd/zD,KAAK6yD,eACL7yD,KAAK6yD,cAAcpoC,WAG3BupC,qBAAsB,WAClBh0D,KAAK+zD,uBACL/zD,KAAK4zD,qBAETK,kBAAmB,WACXj0D,KAAKqC,OAAO,WACZrC,KAAKotD,cAAgB,IAAIiF,EAAoBvzD,QAAQkB,MAErDA,KAAKkK,YAGb2R,YAAa,WACT7b,KAAKg0D,uBACLh0D,KAAKkK,YAETyxB,aAAc,WACV37B,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WAC1B9X,KAAK6yD,cAAcrnC,sBAEvB0oC,mBAAoB,WAChB,MAvJuB,yBAyJ3BC,uBAAwB,WACpB,MAzJ4B,8BA2JhCC,kBAAmB,SAASvoD,GACxB,IAAIsf,GAAe,EAAInR,EAAUlb,SAAS+M,EAAEywB,eAC5C,IAAInR,EAAaoC,GAAG,4CAApB,CAGA,IAAI8mC,EAAwBr0D,KAAK6yD,cAAcvmC,YAAYnB,EAActf,GACrEwoD,IAGJr0D,KAAK82B,0BAA0BjrB,GAC/B7L,KAAKkK,SAAS2N,MAAM7X,KAAM8X,cAE9Bw8C,4BAA6B,WACzB,OAAOt0D,KAAKkK,SAAS2N,MAAM7X,KAAM8X,YAAc9X,KAAK6yD,cAAclmC,4BAEtE4nC,iBAAkB,SAAS1oD,GACvB,IAAIsf,GAAe,EAAInR,EAAUlb,SAAS+M,EAAEywB,eAC5C,IAAInR,EAAaoC,GAAG,4CAApB,CAGA,IAAI8mC,GAAwB,EAAIj1D,EAAOo1D,cAAc3oD,IAAM7L,KAAK6yD,cAAcjmC,kBAAkBzB,EAActf,GAC1GwoD,EACAxoD,EAAEwoD,uBAAwB,EAG9Br0D,KAAKkK,SAAS2N,MAAM7X,KAAM8X,aAE9B28C,wBAAyB,SAAS5oD,GAC9B,IAAIsf,GAAe,EAAInR,EAAUlb,SAAS+M,EAAEywB,eAC5C,IAAInR,EAAaoC,GAAG,4CAApB,CAGA,IAAI8mC,GAAyBxoD,EAAEwoD,uBAAyBr0D,KAAK6yD,cAAcjmC,kBAAkBzB,EAActf,GACvGwoD,EACAxoD,EAAE0B,iBAGNvN,KAAKkK,SAAS2N,MAAM7X,KAAM8X,aAE9B2nC,uBAAwB,SAASrnC,GAC7BpY,KAAKkK,SAAS2N,MAAM7X,KAAM8X,WAC1B9X,KAAK6yD,cAAc3nC,kBAAkB9S,IAEzCG,OAAQ,WACJvY,KAAK+zD,uBACL/zD,KAAKkK,YAETwqD,cAAe,SAASjkD,GACpB,IAAI4Y,EAAQrpB,KAAKotD,cAAcC,eAAe58C,GAC9CzQ,KAAKqC,OAAO,iBAAkBgnB,GAC9BrpB,KAAKwpC,QACLxpC,KAAK43B,aAAa53B,KAAKqC,OAAO,oBAElC8V,eAAgB,SAASC,GACrB,OAAQA,EAAKjW,MACT,IAAK,gBACDnC,KAAK0lB,kBACL1lB,KAAKwlB,YAAYwgC,UAAU,GAC3BhmD,KAAKwlB,YAAYygC,OACjB,MACJ,IAAK,UACDjmD,KAAKwpD,6BACExpD,KAAKwrD,qBACZxrD,KAAKi0D,oBACLj0D,KAAKkK,SAASkO,GACd,MACJ,IAAK,wBACL,IAAK,YACL,IAAK,WACL,IAAK,oBACL,IAAK,iBACL,IAAK,eACL,IAAK,gBACDpY,KAAKglB,cACL,MACJ,IAAK,0BACD,MACJ,QACIhlB,KAAKkK,SAASkO,KAG1BsgB,UAAW,WACP,OAAO14B,KAAKy4B,WAAWC,UAAU14B,KAAK6zD,qBAE1Cc,YAAa,WACT,OAAO30D,KAAKy4B,WAAWE,YAAY34B,KAAK6zD,qBAE5Cx8B,YAAa,WACT,OAAOr3B,KAAKy4B,WAAWm8B,kBAAkB50D,KAAK6zD,qBAElDgB,0BAA2B,SAASzrC,GAChC,OAAOppB,KAAK2lD,gBAAgBl1C,MAAM2Y,IAEtCoR,0BAA2B,SAASs6B,GAChC,IAAInF,EAAgB3vD,KAAK2lD,gBACzB,OAAImP,EAAY,GAAKA,GAAanF,EAActsD,QACrC,EAAI2W,EAAUlb,WAElB6wD,EAActtC,GAAGyyC,IAE5BC,eAAgB,SAAStkD,GACrB,OAAOzQ,KAAKotD,cAAchmC,mBAAmB3W,MAIrD5R,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,S,iCCpRzBD,EAAQC,aAAU,EAClB,IAAIkb,EAAYhb,EAAuB,EAAQ,IAC3CsK,EAAiBtK,EAAuB,EAAQ,KAChD6K,EAAU,EAAQ,GAClBggB,EAAc7qB,EAAuB,EAAQ,MAC7CI,EAAS,EAAQ,IACjByhB,EAAW7hB,EAAuB,EAAQ,KAC1CykB,EAAW,EAAQ,KAEvB,SAASzkB,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAGnB,IAAIE,EAAWsqB,EAAY/qB,QAAQS,SAE/By1D,GAA0B,EAAI51D,EAAO4E,cAAc6c,EAAS/hB,QAAQijB,KAD9C,uBAEtB4N,GAAoB,EAAIvwB,EAAO4E,cAAcyf,EAASmM,OAFhC,uBA+ItBpwB,EApI0BqqB,EAAY/qB,QAAQW,QAAQ,CACtD6F,MAAO,WACHtF,KAAKi1D,aAAc,EAAIj7C,EAAUlb,SAAS,SAASid,SAPlB,wCAQjC/b,KAAKk1D,gBAAiB,EAAIl7C,EAAUlb,SAAS,SAASid,SAPlB,2CAQpC/b,KAAKm1D,qBAAsB,EAAIn7C,EAAUlb,SAAS,SAASid,SANjB,iDAO1CzS,EAAexK,QAAQwX,GAAGtW,KAAKi1D,YAAaD,EAAyBh1D,KAAKkxB,uBAAuBxwB,KAAKV,OACtGsJ,EAAexK,QAAQwX,GAAGtW,KAAKk1D,eAAgBF,EAAyBh1D,KAAKkxB,uBAAuBxwB,KAAKV,OACzGA,KAAKuqB,MAAM9hB,WAAWojB,OAAO7rB,KAAKi1D,YAAY9K,QAAO,IAAQt+B,OAAO7rB,KAAKk1D,eAAe/K,QAAO,KAEnG79B,YAAa,WACT,OAAOtsB,KAAKkxB,0BAEhBA,uBAAwB,WACpB,QAAKlxB,KAAKo1D,sBAGVp1D,KAAKq1D,cAAcr1D,KAAKo1D,sBACjB,IAEXC,cAAe,SAASlqC,GACpBnrB,KAAKmvB,mBAAmBhE,GAAc,IAE1CgE,mBAAoB,SAAShE,EAAc2H,QACnC,IAAWA,IACXA,GAAiB9yB,KAAK+xB,iBAAiB5G,IAE3CnrB,KAAKs1D,eAAenqC,EAAc2H,GAClC9yB,KAAKu1D,iBAAiBziC,GACtB9yB,KAAKw1D,wBAAwBrqC,EAAc2H,GAC3C9yB,KAAKy1D,qBAAqBtqC,EAAc2H,IAE5Cf,iBAAkB,SAAS5G,GACvB,OAAOA,EAAa0M,SAvCQ,oCAyChCy9B,eAAgB,SAASnqC,EAAchB,GACnCnqB,KAAKuqB,MAAM9hB,WAAW2a,YAzCiB,6CAyCqC+G,GAC5EnqB,KAAKi1D,YAAY9K,OAAOhgC,GACxBnqB,KAAKk1D,eAAe/K,OAAOhgC,GACvBA,GACAnqB,KAAK01D,qBAAqBvqC,GAE9BnrB,KAAK21D,qBAAqBxqC,EAAchB,IAE5CurC,qBAAsB,SAASvqC,GAC3B,IAAIyqC,EAAQ51D,KAAKuqB,MAAM9hB,WACnBotD,EAAgBD,EAAMvgD,SAASyoB,IAC/BgK,EAAa8tB,EAAMrhC,cAGnBuhC,EAFgB3qC,EAAa9V,SAASyoB,IAEC+3B,EACvCE,EAA0BjuB,EAFb3c,EAAaoJ,cAE0BuhC,EACxD91D,KAAKi1D,YAAY7gC,OAAO1gB,KAAKL,IAAIyiD,EAAsB,IACvD91D,KAAKk1D,eAAe9gC,OAAO1gB,KAAKL,IAAI0iD,EAAyB,KAEjEJ,qBAAsB,SAASxqC,EAAchB,GACrCA,EACAgB,EAAaxE,KAAK,yBAA+BmP,QAAQjK,OAAO7rB,KAAKm1D,qBAErEn1D,KAAKm1D,oBAAoBlnC,UAGjCsnC,iBAAkB,SAASziC,GACvB,IAAIkjC,EAAah2D,KAAKuqB,MAAM9hB,WAAWwtD,aAAa,YAChDnjC,EACAkjC,EAAW1/C,GAAG,QAAStW,KAAKk2D,kBAE5BF,EAAW//C,IAAI,QAASjW,KAAKk2D,mBAGrCA,iBAAkB,SAAS99C,GACvBA,EAAK8F,MAAM4F,QAAS,GAExB0xC,wBAAyB,SAASrqC,EAAcnmB,GACxCA,EACAhF,KAAKo1D,oBAAsBjqC,SAEpBnrB,KAAKo1D,qBAGpBK,qBAAsB,SAAStqC,EAAc2H,GACrCA,GACA9yB,KAAK+tB,mBAAmB5C,GACxBnrB,KAAKm2D,oBAAoBhrC,GACzBnrB,KAAKkuB,2BAA2B/C,GAChC7hB,EAAexK,QAAQmX,IAAIkV,EAActK,EAAS/hB,QAAQ8kB,MAE1D5jB,KAAKo2D,mBAAmBjrC,GACxBnrB,KAAK6uB,0BAA0B1D,GAAcwI,KAAK3zB,KAAKguB,oBAAoBttB,KAAKV,KAAMmrB,MAG9F4C,mBAAoB,SAAS5C,GACzBA,EAAapP,SA9F+B,mDA+F5CzS,EAAexK,QAAQwX,GAAG6U,EAAcwE,EAAmB9lB,EAAQsiB,MACnE7iB,EAAexK,QAAQu3D,IAAIlrC,EAActK,EAAS/hB,QAAQ8kB,GAAI5jB,KAAKguB,oBAAoBttB,KAAKV,KAAMmrB,KAEtG6C,oBAAqB,SAAS7C,GAC1BA,EAAa8N,YAnG+B,mDAoG5C3vB,EAAexK,QAAQmX,IAAIkV,EAAcwE,IAE7CwmC,oBAAqB,SAAShrC,GAC1BA,EAAapP,SA3Ge,oCA6GhCq6C,mBAAoB,SAASjrC,GACzBA,EAAa8N,YA9Ge,oCAgHhC/K,2BAA4B3uB,EAC5BsvB,0BAA2BtvB,EAC3B+xB,0BAA2B,SAASnG,GAEhC,OADAA,EAAeA,GAAgBnrB,KAAKo1D,qBAChBnzC,SAAS,gDAEjCoL,YAAa,SAASlC,GAClBA,EAAeA,GAAgBnrB,KAAKo1D,oBACpCp1D,KAAKsxB,0BAA0BnG,GAAc8C,SACzC9C,EAAaoC,GAAG,6CAGpBvtB,KAAKuqB,MAAMiD,WAAWrC,GAAc6iB,OAAOhuC,KAAKq1D,cAAc30D,KAAKV,KAAMmrB,KAE7EiD,cAAe,WACX,OAAOpuB,KAAKuqB,MAAMloB,OAAO,eAE7BooB,QAAS,WACDzqB,KAAKi1D,aACLj1D,KAAKi1D,YAAYjmC,SAEjBhvB,KAAKk1D,gBACLl1D,KAAKk1D,eAAelmC,SAExBhvB,KAAKkK,SAAS2N,MAAM7X,KAAM8X,cAIlCjZ,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,S,iCChKzBD,EAAQC,aAAU,EAClB,IAgBIU,EAhB+B,CAC/BywB,aAAc,WACV,QAASjwB,KAAKmwB,aAAa9sB,QAE/B8sB,WAAY,WACR,OAAOnwB,KAAKuqB,MAAMloB,OAAO,cAE7BwuB,eAAgB,WACZ,OAAO7wB,KAAKuqB,MAAMloB,OAAO,sBAE7B2uB,gBAAiB,SAAS7F,EAAcyF,GACpC5wB,KAAKuqB,MAAM+rC,2BAA2BnrC,EAAcyF,EAAQ,GAAI,CAC5D2lC,kBAAmB,CAAC,WAAY,gBAK5C13D,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,S,iCClBzB,IAEgCO,EAHhCR,EAAQC,aAAU,EAQlB,IAAIU,IAL4BH,EAFC,EAAQ,OAGvBA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,IAGAP,QACnBD,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC,QACzB8F,EAAO/F,QAAQC,QAAU8F,EAAO/F,S,iCCXhCA,EAAQC,aAAU,EAClB,IAAIkb,EAAYhb,EAAuB,EAAQ,IAC3CsK,EAAiBtK,EAAuB,EAAQ,KAChDoK,EAAyBpK,EAAuB,EAAQ,KACxD6K,EAAU,EAAQ,GAClBixB,EAAW,EAAQ,IACnB57B,EAAY,EAAQ,GACpBC,EAAQ,EAAQ,GAChB0F,EAAU,EAAQ,GAClBiF,EAAS,EAAQ,KACjB1K,EAAS,EAAQ,IACjByhB,EAAW7hB,EAAuB,EAAQ,KAC1Cw3D,EAAS,EAAQ,KACjBr8C,EAAMnb,EAAuB,EAAQ,MACrC80B,EAAW90B,EAAuB,EAAQ,MAC1C2vC,EAAO3vC,EAAuB,EAAQ,OACtC4hB,EAAU5hB,EAAuB,EAAQ,KACzCy3D,EAAaz3D,EAAuB,EAAQ,MAEhD,SAASA,EAAuBK,GAC5B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACjC,QAAWA,GAUnB,SAASyhB,EAAgBC,EAAGC,GAKxB,OAJAF,EAAkBG,OAAOC,gBAAkB,SAASH,EAAGC,GAEnD,OADAD,EAAEI,UAAYH,EACPD,IAEYA,EAAGC,GAE9B,IAuBI01C,EAAgB,CAChB/lC,KAAM,GACN6D,KAAM,KAENmiC,EAAU,CAAC,mBAAoB,iBAAkB,kBAAmB,kBAAmB,oBAAqB,cAAe,qBAAsB,kBACjJC,EAAO,SAASC,GAzCpB,IAAwBv1C,EAAUC,EA4C9B,SAASq1C,IACL,OAAOC,EAAUh/C,MAAM7X,KAAM8X,YAAc9X,KA7CjBuhB,EA0CTs1C,GA1CDv1C,EA0CLs1C,GAzCNp1C,UAAYP,OAAOQ,OAAOF,EAAWC,WAC9CF,EAASE,UAAUE,YAAcJ,EACjCR,EAAgBQ,EAAUC,GA4C1B,IAAII,EAASi1C,EAAKp1C,UAqsBlB,OApsBAG,EAAO1X,mBAAqB,WACxB,OAAO,EAAIpF,EAAQ0B,QAAQswD,EAAUr1C,UAAUvX,mBAAmB+Y,KAAKhjB,MAAO,CAC1Em7B,YAAa,aACb27B,iBAAkB,OAClBC,qBAAsB,CAClB50D,KAAM,UACNw/C,MAAO,CACHhxB,KAAM,GACN6D,KAAM,MAGdwiC,yBAAyB,EACzBC,iBAAkB,KAClBC,eAAgB,KAChBC,gBAAiB,KACjBC,gBAAiB,KACjBC,mBAAmB,KAG3B11C,EAAO21C,uBAAyB,WAC5BT,EAAUr1C,UAAU81C,uBAAuBt0C,KAAKhjB,OAChD,EAAI6E,EAAQ0B,QAAQvG,KAAKu3D,oBAAqB,CAC1CnvD,WAAW,EACXovD,cAAc,KAGtB71C,EAAOgkC,cAAgB,WACnB,IAAI8R,EAAmBZ,EAAUr1C,UAAUmkC,cAAc3iC,KAAKhjB,MAC1D03D,EAAkB13D,KAAK23D,uBAC3B,OAAOF,EAAiBG,IAAIF,IAEhC/1C,EAAOg2C,qBAAuB,WAC1B,IAAIE,EAAW,GACXC,EAAe,IAAIz8C,OAjEN08C,gBAkEbC,EAAiBh4D,KAAKi4D,UAAU50D,QAAUrD,KAAKi4D,UAAU,GAI7D,OAHID,GAAkBA,EAAehgC,mBACjC6/B,EAAWG,EAAehgC,iBAAiBrR,KAAKmxC,IAE7CD,GAEXl2C,EAAO+rB,aAAe,WAClB,OAAO1tC,KAAKyI,YAEhBkZ,EAAO4a,kBAAoB,WACvB,MAAO,eAAiBv8B,KAAKqC,OAAO,gBAExCsf,EAAO6qC,WAAa,SAASzpD,GACzB,IAGIm1D,EACAC,EAEAC,EANAvG,EAAS7xD,KAAKq4D,qBACdC,EAAmBt4D,KAAKu8B,oBACxBg8B,EAAcv4D,KAAKw4D,gBAAe,GAKtC,OAAQz1D,GACJ,IA1EG,KA2ECo1D,EAAYG,EAvEC,cAuE2Ct4D,KAAKy4D,6BArEpD,YAsETP,EAAWI,EAAmBC,EAAc1G,EAE5CuG,EADmBp4D,KAAK04D,6BAA6BP,EAAWD,EACnDS,GACb,MACJ,IA/EK,OAgFDR,EAAYG,EA7EC,cA6E2Ct4D,KAAKy4D,6BA5EpD,YA6ETP,EAAWI,EAAmBC,EAAc1G,EAE5CuG,EADmBp4D,KAAK04D,6BAA6BP,EAAWD,EACnDS,GACb,MACJ,IAnFM,QAoFFR,EAAYG,EAAmBt4D,KAAKy4D,6BAlF3B,YADI,cAoFbP,EAAWI,EAAmBzG,EAAS0G,EAEvCH,EADmBp4D,KAAK04D,6BAA6BP,EAAWD,EACnDS,GACb,MACJ,IA1FK,OA2FDR,EAAYG,EAAmBt4D,KAAKy4D,6BAvF3B,YAFI,cA0FbP,EAAWI,EAAmBzG,EAAS0G,EAEvCH,EADmBp4D,KAAK04D,6BAA6BP,EAAWD,EACnDS,GACb,MACJ,QACI,OAAO9B,EAAUr1C,UAAUgrC,WAAWxpC,KAAKhjB,KAAM+C,GAErDq1D,GAAc,IAAMA,EAAW/0D,QAC/BrD,KAAKqC,OAAO,kBAAkB,EAAIy4B,EAASiC,kBAAkBq7B,KAGrEz2C,EAAO82C,6BAA+B,SAASN,GAC3C,IAAIS,EAAeT,EAInB,OAHIn4D,KAAKqC,OAAO,gBACZu2D,EAtGa,aAsGET,EAvGF,WACA,YAwGVS,GAEXj3C,EAAO+2C,6BAA+B,SAASP,EAAWD,GACtD,IAAItnC,EAAS/mB,EAAQsiB,KACrB,OAAQgsC,GACJ,IA/GiB,cAgHRD,EAASrgC,SA1HA,uBA2HVjH,EAAS5wB,KAAK64D,aAAan4D,KAAKV,KAAMk4D,IAE1C,MACJ,IAnHa,WAoHTtnC,EAAS5wB,KAAK+xD,UAAUrxD,KAAKV,KAAMk4D,GACnC,MACJ,IArHa,WAsHTtnC,EAAS5wB,KAAK4xD,UAAUlxD,KAAKV,KAAMk4D,GAE3C,OAAOtnC,GAEXjP,EAAOpJ,OAAS,WACZs+C,EAAUr1C,UAAUjJ,OAAOyK,KAAKhjB,MAChCA,KAAKqC,OAAO,kCAAoCqD,aAAa1F,KAAK84D,oBAEtEn3C,EAAO2vB,mBAAqB,SAAS1uC,GAC7BA,IACK5C,KAAK+4D,iBACN/4D,KAAKg5D,yBAETh5D,KAAKorC,sBAGbzpB,EAAOs3C,qBAAuB,WAC1B,OAAOj5D,KAAKqC,OAAO,sBAAwB,eAAiBrC,KAAKqC,OAAO,gBAE5Esf,EAAOq3C,uBAAyB,WAC5B,IAAIE,EAAal5D,KAAKyI,WAAWke,KAAK,MAAMmP,QAAQ7T,SAAS,MAAMA,SAAS,IAAI5G,OA7J/D08C,iBA8JjB/3D,KAAK+4D,gBAAkB/4D,KAAKm5D,sBAAsBD,GAAY,IAElEv3C,EAAOypB,kBAAoB,WACvB,GAAKprC,KAAKi5D,uBAAV,CAGA,IAAIG,EAAiBp5D,KAAKyI,WAAWsmB,aACrC/uB,KAAKq5D,oBAAoBr5D,KAAK+4D,gBAAkBK,KAEpDz3C,EAAOrc,MAAQ,WACXuxD,EAAUr1C,UAAUlc,MAAM0d,KAAKhjB,MAC/BA,KAAKi4D,UAAY,IAErBt2C,EAAO0hB,aAAe,WAClB,IAAInyB,EAAQlR,KACZA,KAAK48B,SAAW,IAChB,EAAI19B,EAAUyH,MAAMgwD,GAAS,SAASlmD,EAAOmgB,GACzC1f,EAAM0rB,SAAShM,GAAU1f,EAAM5M,sBAAsBssB,OAG7DjP,EAAO9F,YAAc,WACjB7b,KAAKs5D,gBAAkB,KACvBt5D,KAAKyI,WAAWsT,SAvLJ,WAwLZ86C,EAAUr1C,UAAU3F,YAAYmH,KAAKhjB,MACrCA,KAAKqc,QAAQ,OAAQ,YAEzBsF,EAAOyC,QAAU,WACbyyC,EAAUr1C,UAAU4C,QAAQpB,KAAKhjB,MACjCA,KAAKu5D,mBAET53C,EAAO63C,uBAAyB,WAM5B,OALAx5D,KAAKy5D,WAAa,IAAI74C,EAAQ9hB,SAAQ,EAAIkb,EAAUlb,SAAS,SAASid,SAlLrCg8C,4BAkLmF,CAChH5qC,KAAM,OACNnJ,oBAAoB,EACpBoJ,QAASptB,KAAK05D,gBAAgBh5D,KAAKV,QAEhCA,KAAKy5D,WAAWhxD,YAE3BkZ,EAAO+3C,gBAAkB,SAASziC,IAC1B,EAAI93B,EAAMyE,eAAeqzB,KACzBA,GAASj3B,KAAK8zB,SAASzxB,OAAO,YAElCrC,KAAK8zB,SAASzxB,OAAO,UAAW40B,GAChCj3B,KAAK25D,4BAA4B1iC,IAErCtV,EAAOg4C,4BAA8B,SAAS1iC,GAC1Cj3B,KAAKy5D,YAAcz5D,KAAKy5D,WAAWhxD,WAAW2a,YAnM1B,kBAmM6D6T,IAErFtV,EAAO03C,oBAAsB,SAASpiC,GAClC,IAAI2iC,EAAsB55D,KAAKyI,WAAWke,KAAK,IAAItL,OAhN5B08C,uBAiNnB8B,EAAoB75D,KAAKyI,WAAWke,KAAK,IAAItL,OAtM5B08C,0BAuMjB9gC,EACAj3B,KAAK85D,uBAEL95D,KAAK+5D,WAAa/5D,KAAK+5D,UAAUC,cACjCh6D,KAAK8zB,UAAY9zB,KAAK05D,gBAAgBziC,IAE1C2iC,EAAoBzP,QAAQlzB,GAC5B4iC,EAAkB1P,OAAOlzB,IAE7BtV,EAAOs4C,kBAAoB,WAClBj6D,KAAKk6D,sBAGVl6D,KAAKq5D,qBAAoB,GACzBr5D,KAAKk6D,oBAAoBlrC,SACzBhvB,KAAKk6D,oBAAsB,KAC3Bl6D,KAAK+5D,UAAY,KACjB/5D,KAAKy5D,WAAa,KAClBz5D,KAAK8zB,SAAW,OAEpBnS,EAAOw4C,0BAA4B,SAAStuD,GACxC7L,KAAK48B,SAASnM,YAAY5kB,GACrBA,EAAE4vB,KAAKxZ,SAAS5e,QACjBrD,KAAK05D,iBAAgB,IAG7B/3C,EAAOy4C,2BAA6B,WAChC,IAAI51B,EAASxkC,KAET0I,EADM1I,KAAKqC,OAAO,cACD,QAAU,OAC/B,MAAO,CACHynC,UAAW,WACP,OAAO,EAAIhgC,EAAOuwD,6BAA6B71B,EAAO/7B,aAE1DwrB,gBAAgB,EAChBD,SAAS,EACT5rB,WAAW,EACX8rB,qBAAqB,EACrBkJ,SAAU,WACNoH,EAAOm1B,6BAA4B,IAEvCvlC,OAAQ,OACRD,oBAAqB,SAAStoB,GAC1B,QAAQ,EAAImO,EAAUlb,SAAS+M,EAAE0lB,QAAQjI,QAAQ,IAAIjO,OAjP5B08C,6BAiPwE10D,QAErGqF,SAAU,CACN0sB,UAAW,UACXF,GAAI,UAAYxsB,EAChBusB,GAAI,OAASvsB,EACbysB,GAAIn1B,KAAKy5D,WAAWhxD,cAIhCkZ,EAAO24C,oBAAsB,WACzB,IAAI3wB,EAAS3pC,KACTu6D,EAAc,GAWlB,OARA,EAAIr7D,EAAUyH,MAFU,CAAC,aAAc,QAAS,YAAa,qBAAsB,YAAa,aAAc,WAAY,cAAe,cAAe,oBAAqB,OAAQ,oBAAqB,YAAa,QAAS,eAAgB,eAAgB,gBAAiB,WAAY,YAEtP,SAASC,EAAGvE,GAC/Ck4D,EAAYl4D,GAAUsnC,EAAOtnC,OAAOA,OAExC,EAAInD,EAAUyH,MAJU,CAAC,oBAAqB,uBAIP,SAASC,EAAG4zD,GAC/CD,EAAYC,GAAc,SAAS3uD,GAC/B89B,EAAO/M,SAAS49B,GAAY3uD,QAG7B,EAAIhH,EAAQ0B,QAAQg0D,EAAa,CACpCh1C,WAAYvlB,KAAKkoB,gBACjB2lC,mBAAoB7tD,KAAKqC,OAAO,aAChCouB,YAAazwB,KAAKm6D,0BAA0Bz5D,KAAKV,MACjDy6D,eAAgB,SAAS5uD,GACrB89B,EAAO7V,SAASg5B,UAChBnjB,EAAO/M,SAASs6B,eAAerrD,IAEnC6uD,gBAAiB,SAAS7uD,GACtB89B,EAAO7V,SAASg5B,UAChBnjB,EAAO/M,SAASw6B,gBAAgBvrD,IAEpC8uD,sBAAsB,EACtBC,cAAe56D,KAAKqC,OAAO,iBAC3Bw4D,YAAa,WAGrBl5C,EAAO43C,gBAAkB,WACrB,GAAKv5D,KAAKi5D,uBAAV,CAGAj5D,KAAKk6D,qBAAsB,EAAIlgD,EAAUlb,SAAS,SAASid,SA9RtCg8C,yBA+RrB,IAAI+C,EAAa96D,KAAKw5D,yBACtBx5D,KAAK+5D,UAAY/5D,KAAK2iB,kBAAiB,EAAI3I,EAAUlb,SAAS,SAAU23D,EAAW33D,QAASkB,KAAKs6D,uBACjGt6D,KAAK8zB,SAAW9zB,KAAK2iB,kBAAiB,EAAI3I,EAAUlb,SAAS,SAAUg1B,EAASh1B,QAASkB,KAAKo6D,8BAC9Fp6D,KAAK8zB,SAASe,WAAWhJ,OAAO7rB,KAAK+5D,UAAUtxD,YAAYsT,SAlStCg8C,yBAkSuEh8C,SAAS/b,KAAKqC,OAAO,aACjHrC,KAAK8zB,SAASwU,WAAWvsB,SAjSYg/C,yCAkSrC/6D,KAAKk6D,oBAAoBruC,OAAOivC,GAChC96D,KAAKk6D,oBAAoBruC,OAAO7rB,KAAK8zB,SAASrrB,YAC9CzI,KAAKyI,WAAWojB,OAAO7rB,KAAKk6D,qBAC5Bl6D,KAAKg5D,yBACLh5D,KAAKorC,sBAETzpB,EAAOq5C,UAAY,SAASC,GACxB,IAAItZ,EAAQ3hD,KAAKqC,OAAO,wBAAwBs/C,MAChD,OAAK,EAAIxiD,EAAMwT,WAAWgvC,IAGf,EAAIxiD,EAAM+7D,UAAUvZ,GAASA,EAAMsZ,GAAatZ,EAFhD+U,EAAcuE,IAK7Bt5C,EAAOnT,iBAAmB,SAAS3C,GAC/B,OAAOgrD,EAAUr1C,UAAUhT,iBAAiBwU,KAAKhjB,KAAM6L,IAAK7L,KAAKs5D,kBAErE33C,EAAOw5C,iBAAmB,WACtB,IAAIC,GAAW,EAAIphD,EAAUlb,SAAS,SAEtC,OADAs8D,EAAS5+C,SAASxc,KAAKyI,YAAYsT,SAAS/b,KAAKu8B,oBAlU1Bw7B,qBADFA,oBAoUdlB,EAAUr1C,UAAU25C,iBAAiBn4C,KAAKhjB,KAAMo7D,IAE3Dz5C,EAAO05C,oBAAsB,SAAS5/B,EAAM6/B,GACxC,IAAIt+B,EAAUh9B,KAAKu7D,eAAe9/B,EAAM6/B,GAGxC,OAFAt7D,KAAKi4D,UAAU3xD,KAAK02B,GACpBh9B,KAAKw7D,qBAAqBF,GACnBt+B,GAEXrb,EAAO85C,sBAAwB,WAC3B,OAAO5E,EAAUr1C,UAAUi6C,sBAAsBz4C,KAAKhjB,MAAMqb,OAAOrb,KAAKs5D,kBAE5E33C,EAAO45C,eAAiB,SAAS9/B,EAAMkB,GACnC,IAAI++B,GAAoB,EAAI1hD,EAAUlb,SAAS,SAASid,SA3UpC,mBA2UoES,SAASmgB,GAC7F1V,EAAQjnB,KAAK47B,eAAeH,GAC5B1pB,EAAS/R,KAAK2iB,iBAAiB+4C,EAAmB/sB,EAAK7vC,SAAS,EAAI+F,EAAQ0B,QAAQvG,KAAK27D,qBAAsB,CAC/GpgC,aAAcv7B,KAAKu7B,aACnBqgC,WAAYngC,EAAKogC,eAAep5D,IAChCwkB,MAAOA,EACPoU,aAAcr7B,KAAK87D,eAAep7D,KAAKV,MACvC0I,SAAU1I,KAAK+7D,mBAAmBp/B,MAGtC,OADA38B,KAAKg8D,uBAAuBr/B,EAAW5qB,GAChCA,GAEX4P,EAAOg6C,mBAAqB,WACxB,IAAIjxB,EAAS1qC,KACTi8D,GAAiB,EAAIjiD,EAAUlb,SAAS,SACxCw5D,EAAmBt4D,KAAKu8B,oBAC5B,MAAO,CACH2/B,aAAcl8D,KAAKqC,OAAO,gBAC1BkvB,OAAQ0qC,EACR9gC,YAAan7B,KAAKqC,OAAO,eACzB+zB,cAAep2B,KAAKqC,OAAO,iBAC3B85D,SAAUn8D,KAAKqC,OAAO,YACtBu4D,cAAe56D,KAAKqC,OAAO,iBAC3B4hB,kBAAmBjkB,KAAKqC,OAAO,qBAC/B2hB,mBAAoBhkB,KAAKqC,OAAO,sBAChCu0B,kBAAmB52B,KAAKqC,OAAO,qBAC/B+F,UAAWpI,KAAKqC,OAAO,aACvB+5D,gBAAiBp8D,KAAKqC,OAAO,mBAC7Bg6D,YAAar8D,KAAKqC,OAAO,eACzBi6D,aAAct8D,KAAKqC,OAAO,gBAC1Bk6D,aAAcv8D,KAAKqC,OAAO,gBAC1Bm6D,UAAWx8D,KAAKqC,OAAO,aACvBo6D,qBAAsB,SAAS5wD,GACtBA,EAAE+oB,UAAUvyB,OAAO,YAGxBqoC,EAAOroC,OAAO,iBAAkBwJ,EAAE+oB,UAAUvyB,OAAO,oBAEvDgrC,mBAAoBrtC,KAAK08D,qCAAqCh8D,KAAKV,MACnEywB,YAAazwB,KAAK28D,8BAA8Bj8D,KAAKV,MACrD48D,eAAgB58D,KAAK68D,iCAAiCn8D,KAAKV,MAC3D88D,gBAAiBxE,EAAmB,KAAOt4D,KAAK+8D,mBAAmBr8D,KAAKV,KApW3D,YAqWbg9D,eAAgB1E,EAAmB,KAAOt4D,KAAK+8D,mBAAmBr8D,KAAKV,KAtW1D,YAuWbi9D,mBAAoBj9D,KAAK+8D,mBAAmBr8D,KAAKV,KAAMs4D,EAtW1C,WAsWkF,MAC/F4E,oBAAqB5E,EAAmBt4D,KAAK+8D,mBAAmBr8D,KAAKV,KAxWxD,YAwWoF,OAGzG2hB,EAAOw7C,yBAA2B,WAC9B,IAAKn9D,KAAKo9D,mBACN,MAAO,UAEX,IAAI9qB,EAActyC,KAAKqC,OAAO,wBAC9B,OAAO,EAAIlD,EAAM+7D,UAAU5oB,GAAeA,EAAYnwC,KAAOmwC,GAEjE3wB,EAAOo7C,mBAAqB,SAASrvD,GACjC,IAAImkD,EAAS7xD,KAAKq4D,qBACdgF,EAAYxL,EAAOxuD,OACnBi6D,EAAezL,EAAOxsC,OAAO,IAAIhK,OArYXkiD,0BAqYgDl7C,GAAG,GACzE8E,EAAY0qC,EAAOphD,MAAM6sD,GAC7Bt9D,KAAKk9B,aAAal9B,KAAKs5D,kBACvBnyC,GAvXiB,aAuXJzZ,GAAoC,EAAI,IACpC2vD,EACbl2C,EAAY,EAERA,EAAY,IACZA,EAAYk2C,EAAY,GAGhC,IAAIG,EAAW3L,EAAOxvC,GAAG8E,GACzBnnB,KAAKqC,OAAO,kBAAkB,EAAIy4B,EAASiC,kBAAkBygC,KAEjE77C,EAAO+6C,qCAAuC,SAAStkD,GACnD,IAAIo/C,EAAep/C,EAAKqlD,WAAWp6D,QAAU+U,EAAKqlD,WAAW,GACzDzgC,EAAU2R,EAAK7vC,QAAQsjB,YAAYhK,EAAK6G,UAE5CouB,EADyBrtC,KAAK48B,SAASyQ,oBACpBj1B,GACnBo/C,GAAgBx3D,KAAK09D,0BAA0BlG,EAAa,GAAIx6B,GAChEh9B,KAAK29D,sBACL39D,KAAK6xC,8BAA8B,eAAgB2lB,IAEvD71C,EAAO+7C,0BAA4B,SAASx6D,EAAM06D,GAC9C,IAAIpyB,EAASxrC,KACT69D,GAAoB/lD,UAAUzU,QAClC,EAAInE,EAAUyH,MAAM3G,KAAKi4D,WAAW,SAASxnD,EAAOusB,GAChD,IAAIK,EAAWL,EAAQtW,iBACnBo3C,GAAezgC,EAAS9P,GAAGqwC,GAAiBA,EAAcl3C,kBAC1DopC,EAAgBzyB,EAAS1W,KAAK,IAAItL,OAAOmwB,EAAO0oB,uBACpD,GAAI4J,GAAehO,EAAczsD,QAAUw6D,EAAkB,CACzD/N,EAAc72B,YAAYuS,EAAO0oB,sBACjC,IAAI6J,EAAmBvyB,EAAOwyB,aAAalO,GACvCiO,IACAA,EAAiBE,UAAW,GAEhCjhC,EAAQwsB,2BAIpB7nC,EAAOg8C,oBAAsB,WACzB,IAAIO,EAAoBl+D,KAAKyI,WAAWke,KAAK,IAAItL,OA/arB08C,4BA+a4DjiC,QAAQ7T,WAAWA,WAAWoD,OAAO,IAAIhK,OAAOrb,KAAKk0D,uBACzIgK,EAAkB76D,SACSrD,KAAKg+D,aAAaE,GACxBD,UAAW,EAChCC,EAAkBjlC,YAAYj5B,KAAKk0D,wBAG3CvyC,EAAOg7C,8BAAgC,SAAS9wD,GAC5C7L,KAAK48B,SAASnM,YAAY5kB,IAE9B8V,EAAOk7C,iCAAmC,SAAShxD,GAC/C7L,KAAK48B,SAASggC,eAAe/wD,IAEjC8V,EAAOq6C,uBAAyB,SAASr/B,EAAWK,GAChD,IAAIkQ,EAASltC,KAETm+D,EADyBnhC,EAAQuB,oBACC5X,KAAK,IAAItL,OA1bhC,eA2bX+iD,GAAwB,EAAIh/D,EAAO4E,cAAcwyD,EAAOprD,IAAKpL,KAAKiE,KAAO,YAC7E+4B,EAAQ36B,OAAO,CACXw6B,UAAW78B,KAAKq+D,yBAAyB39D,KAAKV,KAAM28B,EAAWK,GAC/DC,QAASj9B,KAAKs+D,uBAAuB59D,KAAKV,KAAM28B,EAAWK,GAC3DG,SAAUn9B,KAAKu+D,wBAAwB79D,KAAKV,KAAM28B,EAAWK,GAC7DI,SAAUp9B,KAAKw+D,wBAAwB99D,KAAKV,KAAM28B,EAAWK,MAEjE,EAAI99B,EAAUyH,MAAMw3D,GAAU,SAAS1tD,EAAOusB,GAC1C1zB,EAAexK,QAAQmX,IAAI+mB,EAASohC,GACpC90D,EAAexK,QAAQwX,GAAG0mB,EAASohC,EAAuB,KAAMlxB,EAAOuxB,0BAA0B/9D,KAAKwsC,EAAQvQ,QAGtHhb,EAAO08C,yBAA2B,SAAS1hC,EAAWK,GAClD,IAAI0hC,EAAU/hC,EAAU1a,SAAS,IAAI5G,OA1cAsjD,qCA2crC3+D,KAAK48B,SAASq6B,iBAAiB,CAC3Bn6B,UAAU,EAAIhC,EAASiC,kBAAkBJ,GACzCK,QAASA,IAEb0hC,EAAQ/tC,OACRgM,EAAU5gB,SAldgBwhD,0BAod9B57C,EAAO28C,uBAAyB,SAAS3hC,EAAWK,GAChDh9B,KAAK48B,SAASs6B,eAAe,CACzBp6B,UAAU,EAAIhC,EAASiC,kBAAkBJ,GACzCK,QAASA,KAGjBrb,EAAO48C,wBAA0B,SAAS5hC,EAAWK,EAAS4hC,GAC1D,IAAIF,EAAU/hC,EAAU1a,SAAS,IAAI5G,OAzdAsjD,qCA0djCvmD,EAAOwmD,EACXxmD,EAAK0kB,UAAW,EAAIhC,EAASiC,kBAAkBJ,GAC/CvkB,EAAK4kB,QAAUA,EACfh9B,KAAK48B,SAASu6B,gBAAgB/+C,IAC9BwmD,EAAYxmD,GACG0L,SACP9jB,KAAKs5D,kBAAoBt8B,IACzBh9B,KAAKs5D,gBAAkB,MAE3BoF,EAAQlqC,OACRmI,EAAU1D,YAteYskC,2BAye9B57C,EAAO68C,wBAA0B,SAAS7hC,EAAWK,GACjDh9B,KAAK48B,SAASw6B,gBAAgB,CAC1Bt6B,UAAU,EAAIhC,EAASiC,kBAAkBJ,GACzCK,QAASA,KAGjBrb,EAAO88C,0BAA4B,SAAS9hC,EAAWiiC,GACnD,IAAIrtC,GAAS,EAAIvX,EAAUlb,SAAS8/D,EAAUC,eAAeC,QAAQ,IAAIzjD,OA/erD,oBA+eoF,GACpG0jD,EAAc/+D,KAAKg/D,yBAAyBriC,GAAW4B,oBAAoB,GAC3Ev+B,KAAKqC,OAAO,4BAA8BkvB,IAAWwtC,IACrD/+D,KAAK87D,iBACLr2D,WAAWzF,KAAKi/D,yBAAyBv+D,KAAKV,MAAOA,KAAKg7D,UAAU,WAG5Er5C,EAAOs9C,yBAA2B,WAC9B,GAAKj/D,KAAKs5D,gBAAV,CAGA,IAAI4F,GAAoB,EAAIllD,EAAUlb,SAASkB,KAAKs5D,gBAAgB7wD,WAAWw3C,SAASpoB,SArfrE,kBAsffsnC,EAAuBn/D,KAAKs5D,gBAAgB/6B,oBAAoB5X,KAAK,IAAItL,OAtf1D,mBAsfwFhY,OAC3ErD,KAAKs5D,gBAAgB/6B,oBAAoBxe,IAAI,GAAGq/C,cAAc,WAC3DD,GAAyBD,GACxDl/D,KAAKs5D,gBAAgB9kC,SAG7B7S,EAAOq9C,yBAA2B,SAASriC,GACvC,IAAKA,EACD,OAAO,EAEX,IAAIU,EAAWV,EAAU1a,SAAS,IAAI5G,OArgBlB,oBAsgBpB,OAAOgiB,EAASh6B,QAAUsrC,EAAK7vC,QAAQsjB,YAAYib,IAEvD1b,EAAOo6C,mBAAqB,SAASp/B,GACjC,IAAI0iC,EAAmBr/D,KAAKu8B,oBACxBu6B,EAAmB92D,KAAKqC,OAAO,oBAAoBi9D,cACnDC,EAAav/D,KAAKqC,OAAO,cACzBm9D,EAAkB,CAClBpqC,UAAW,OACXD,GAAIwH,GAER,OAAQm6B,GACJ,IAAK,YACD0I,EAAgBtqC,GAAK,WACrBsqC,EAAgBvqC,GAAKoqC,EAAmB,cAAgB,YACxD,MACJ,IAAK,gBACDG,EAAgBtqC,GAAKmqC,EAAmB,cAAgB,YACxDG,EAAgBvqC,GAAK,WACrB,MACJ,QACQoqC,GACAG,EAAgBtqC,GAAKqqC,EAAa,eAAiB,cACnDC,EAAgBvqC,GAAKsqC,EAAa,YAAc,aAEhDC,EAAgBtqC,GAAKqqC,EAAa,WAAa,YAC/CC,EAAgBvqC,GAAKsqC,EAAa,YAAc,YAG5D,OAAOC,GAEX79C,EAAO65C,qBAAuB,SAASnyC,IACnC,EAAIrP,EAAUlb,SAAS,SAAS0d,SAAS6M,GAAOtN,SApiBX4iD,oCAoiB4DnqC,QAErG7S,EAAO89C,wBAA0B,SAAS5zD,IACxB,EAAImO,EAAUlb,SAAS+M,EAAE0lB,QACZjI,QAAQtpB,KAAK2lD,iBACvB9tB,SAAS,4BACtB73B,KAAKqC,OAAO,iBAAkB,MAGlCw0D,EAAUr1C,UAAUi+C,wBAAwBz8C,KAAKhjB,KAAM6L,IAE3D8V,EAAO6a,mBAAqB,SAAS3wB,GACjC,IAAI6zD,GAAqB,EAAItgE,EAAO4E,cAAc6c,EAAS/hB,QAAQ0J,KAAMxI,KAAKiE,MAC1EolB,EAAQrpB,KAAK2/D,2BAA2B9zD,GACxC4vB,EAAOz7B,KAAKu7B,aAAaqkC,cAAc5/D,KAAKg+D,aAAa30C,IACzDw2C,GAAoB,EAAI1gE,EAAMwT,WAAW9G,EAAEqP,UAAY,IAAMrP,EAAEqP,WAAY,EAAI/b,EAAMwT,WAAW9G,EAAEqP,UAAY,IAAMrP,EAAEi0D,MAC1H,IAAI9/D,KAAK+/D,gBAAgB12C,GAIzB,GADA/f,EAAexK,QAAQmX,IAAIoT,EAAOq2C,GAC7B1/D,KAAKggE,aAAavkC,IAIvB,GAAI,YAAcz7B,KAAKm9D,6BAA+B0C,EAAmB,CACrE,IAAI7iC,EAAUh9B,KAAKigE,qBAAqB52C,GACxCrpB,KAAK87D,iBACA9+B,EAAQsB,qBACTh1B,EAAexK,QAAQwX,GAAG+S,EAAOq2C,EAAoB1/D,KAAKkgE,sBAAsBx/D,KAAKV,OACrFA,KAAKmgE,kBAAoBngE,KAAKg7D,UAAU,eAR5Ch7D,KAAKmgE,kBAAoB16D,WAAWzF,KAAKi/D,yBAAyBv+D,KAAKV,MAAOA,KAAKg7D,UAAU,UAYrGr5C,EAAOya,iBAAmB,SAASgkC,GAC/B,IAAIryB,EAAS/tC,KACTqpB,EAAQrpB,KAAK2/D,2BAA2BS,GACxCvB,GAAgB,EAAI7kD,EAAUlb,SAASshE,EAASvB,eACpDhI,EAAUr1C,UAAU4a,iBAAiBpZ,KAAKhjB,KAAMogE,GAChDpgE,KAAK87D,iBACD97D,KAAK+/D,gBAAgB12C,IAGrBw1C,EAAchnC,SA7kBoB,sCAglBlC73B,KAAKqC,OAAO,6BAA+Bw8D,EAAchnC,SAplBjCkgC,6BAqlBxB/3D,KAAKqgE,kBAAoB56D,YAAW,WAChCsoC,EAAOkxB,6BACRj/D,KAAKg7D,UAAU,WAG1Br5C,EAAOm4C,oBAAsB,WACzB,QAAK95D,KAAKs5D,kBAGVt5D,KAAKk9B,aAAal9B,KAAKs5D,kBAChB,IAEX33C,EAAOk3C,aAAe,SAAS1tC,GAC3B,IAAI6R,EAAUh9B,KAAKigE,qBAAqB90C,GACpCnrB,KAAKs5D,kBAAoBt8B,GACzBh9B,KAAK85D,sBAEL98B,IACAh9B,KAAK87D,iBACL9+B,EAAQrM,OACR3wB,KAAKqC,OAAO,iBAAkB26B,EAAQ36B,OAAO,oBAEjDrC,KAAKs5D,gBAAkBt8B,EACvBh9B,KAAKsgE,iBAAmBn1C,GAE5BxJ,EAAOub,aAAe,SAASF,GAC3BA,GAAWA,EAAQxI,OACfx0B,KAAKs5D,kBAAoBt8B,IACzBh9B,KAAKs5D,gBAAkB,MAE3Bt5D,KAAKsgE,iBAAmB,MAE5B3+C,EAAOu+C,sBAAwB,SAASr0D,GACpC,IAAI00D,EAASvgE,KACb,IAAI6L,EAAE20D,WAAY30D,EAAE20D,SAASn9D,OAA7B,CAGA,IAAIgmB,GAAQ,EAAIrP,EAAUlb,SAAS+M,EAAEywB,gBAChC,EAAIn9B,EAAMwT,WAAW3S,KAAKmgE,qBAG/BngE,KAAK87D,iBACL97D,KAAKmgE,kBAAoB16D,YAAW,WAChC,IAAIu3B,EAAUujC,EAAON,qBAAqB52C,GACtC2T,IAAYA,EAAQsB,oBACpBiiC,EAAO1H,aAAaxvC,KAEzBrpB,KAAKg7D,UAAU,YAEtBr5C,EAAOm6C,eAAiB,WACpBp2D,aAAa1F,KAAKqgE,mBAClB36D,aAAa1F,KAAKmgE,oBAEtBx+C,EAAOs+C,qBAAuB,SAAS90C,EAAcpE,GACjD,IAAIiW,EAAUh9B,KAAKg/D,yBAAyB7zC,GAC5C,GAAI6R,EACA,OAAOA,EAEPjW,EAAWA,GAAY/mB,KAAKg+D,aAAa7yC,GACzC,IAAIsQ,EAAOz7B,KAAKu7B,aAAaqkC,cAAc74C,GAC3C,OAAO/mB,KAAKggE,aAAavkC,IAASz7B,KAAKq7D,oBAAoB5/B,EAAMtQ,IAGzExJ,EAAO8+C,gCAAkC,SAASC,GAC9C,IAAItoD,EAAOsoD,EAAWtoD,KAAK/U,QAAUq9D,EAAWtoD,KAAK,GACrD,GAAKA,IAAQpY,KAAK2gE,gBAAgBvoD,EAAK2O,UAAvC,CAGA,IAAIoE,GAAe,EAAInR,EAAUlb,SAASsZ,EAAKgR,aAC3C4uC,EAAiBh4D,KAAKigE,qBAAqB90C,EAAc/S,EAAK2O,UAElE,GADA/mB,KAAK4gE,2BAA2BF,GAC5B1gE,KAAKs5D,gBAAiB,CACtB,GAAIt5D,KAAKs5D,kBAAoBtB,EAIzB,YAHI,YAAch4D,KAAKqC,OAAO,yBAC1BrC,KAAKk9B,aAAal9B,KAAKs5D,kBAI3Bt5D,KAAKk9B,aAAal9B,KAAKs5D,iBAG1BtB,IAGAA,EAAe15B,oBAChBt+B,KAAK64D,aAAa1tC,MAI1BxJ,EAAOxJ,eAAiB,SAASC,GAC7B,GAAIu+C,EAAQ9mD,QAAQuI,EAAKjW,OAAS,EAC9BnC,KAAKqjC,oBAGT,OAAQjrB,EAAKjW,MACT,IAAK,cACL,IAAK,mBACDnC,KAAKglB,cACL,MACJ,IAAK,uBACL,IAAK,0BACD,MACJ,IAAK,kBACDhlB,KAAK6gE,sBAAsBzoD,EAAKjW,KAAMiW,EAAKhW,OAC3C,MACJ,IAAK,oBACDgW,EAAKhW,MAAQpC,KAAKu5D,kBAAoBv5D,KAAKi6D,oBAC3C,MACJ,IAAK,QACGj6D,KAAKi5D,yBACLj5D,KAAK+5D,UAAU13D,OAAO+V,EAAKjW,KAAMiW,EAAKhW,OACtCpC,KAAK8zB,SAASzxB,OAAO+V,EAAKjW,KAAMiW,EAAKhW,QAEzCy0D,EAAUr1C,UAAUrJ,eAAe6K,KAAKhjB,KAAMoY,GAC9CpY,KAAKorC,oBACL,MACJ,IAAK,YACGprC,KAAKi5D,wBACLj5D,KAAK+5D,UAAU13D,OAAO,qBAAsB+V,EAAKhW,OAErDy0D,EAAUr1C,UAAUrJ,eAAe6K,KAAKhjB,KAAMoY,GAC9C,MACJ,QACQpY,KAAKi5D,wBACLj5D,KAAK+5D,UAAU13D,OAAO+V,EAAKjW,KAAMiW,EAAKhW,OAE1Cy0D,EAAUr1C,UAAUrJ,eAAe6K,KAAKhjB,KAAMoY,KAG1DuJ,EAAOk/C,sBAAwB,SAAS1+D,EAAMC,IAC1C,EAAIlD,EAAUyH,MAAM3G,KAAKi4D,WAAW,SAASxnD,EAAOusB,GAChDA,EAAQ36B,OAAOF,EAAMC,OAG7Buf,EAAOmX,WAAa,SAAS1P,GACzBppB,KAAKk9B,aAAal9B,KAAKs5D,iBACvBzC,EAAUr1C,UAAUsX,WAAW9V,KAAKhjB,KAAMopB,IAE9CzH,EAAOoX,aAAe,SAAS3P,GAC3BppB,KAAKk9B,aAAal9B,KAAKs5D,iBACvBzC,EAAUr1C,UAAUsX,WAAW9V,KAAKhjB,KAAMopB,IAEvCwtC,EA3sBA,CA4sBTz8C,EAAIrb,UACN,EAAIsK,EAAuBtK,SAAS,SAAU83D,GAC9C,IAAIp3D,EAAWo3D,EACf/3D,EAAQC,QAAUU,EAClBoF,EAAO/F,QAAUA,EAAQC","file":"vendors~fceeb0a2.ce7b42cd91a33b84a4b4.bundle.js","sourcesContent":["/**\r\n * DevExtreme (ui/map/provider.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _promise = _interopRequireDefault(require(\"../../core/polyfills/promise\"));\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\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 abstract = _class.default.abstract;\r\nvar Provider = _class.default.inherit({\r\n _defaultRouteWeight: function() {\r\n return 5\r\n },\r\n _defaultRouteOpacity: function() {\r\n return .5\r\n },\r\n _defaultRouteColor: function() {\r\n return \"#0000FF\"\r\n },\r\n ctor: function(map, $container) {\r\n this._mapWidget = map;\r\n this._$container = $container\r\n },\r\n render: function(markerOptions, routeOptions) {\r\n return this._renderImpl().then(function() {\r\n return _promise.default.all([this._applyFunctionIfNeeded(\"addMarkers\", markerOptions), this._applyFunctionIfNeeded(\"addRoutes\", routeOptions)]).then(function() {\r\n return true\r\n })\r\n }.bind(this))\r\n },\r\n _renderImpl: abstract,\r\n updateDimensions: abstract,\r\n updateMapType: abstract,\r\n updateBounds: abstract,\r\n updateCenter: abstract,\r\n updateZoom: abstract,\r\n updateControls: abstract,\r\n updateMarkers: function(markerOptionsToRemove, markerOptionsToAdd) {\r\n return new _promise.default(function(resolve) {\r\n return this._applyFunctionIfNeeded(\"removeMarkers\", markerOptionsToRemove).then(function(removeValue) {\r\n this._applyFunctionIfNeeded(\"addMarkers\", markerOptionsToAdd).then(function(addValue) {\r\n resolve(addValue ? addValue : removeValue)\r\n })\r\n }.bind(this))\r\n }.bind(this))\r\n },\r\n addMarkers: abstract,\r\n removeMarkers: abstract,\r\n adjustViewport: abstract,\r\n updateRoutes: function(routeOptionsToRemove, routeOptionsToAdd) {\r\n return new _promise.default(function(resolve) {\r\n return this._applyFunctionIfNeeded(\"removeRoutes\", routeOptionsToRemove).then(function(removeValue) {\r\n this._applyFunctionIfNeeded(\"addRoutes\", routeOptionsToAdd).then(function(addValue) {\r\n resolve(addValue ? addValue : removeValue)\r\n })\r\n }.bind(this))\r\n }.bind(this))\r\n },\r\n addRoutes: abstract,\r\n removeRoutes: abstract,\r\n clean: abstract,\r\n map: function() {\r\n return this._map\r\n },\r\n isEventsCanceled: function() {\r\n return false\r\n },\r\n _option: function(name, value) {\r\n if (void 0 === value) {\r\n return this._mapWidget.option(name)\r\n }\r\n this._mapWidget.setOptionSilent(name, value)\r\n },\r\n _keyOption: function(providerName) {\r\n var key = this._option(\"apiKey\");\r\n return void 0 === key[providerName] ? key : key[providerName]\r\n },\r\n _parseTooltipOptions: function(option) {\r\n return {\r\n text: option.text || option,\r\n visible: option.isShown || false\r\n }\r\n },\r\n _getLatLng: function(location) {\r\n if (\"string\" === typeof location) {\r\n var coords = (0, _iterator.map)(location.split(\",\"), function(item) {\r\n return item.trim()\r\n });\r\n var numericRegex = /^[-+]?[0-9]*\\.?[0-9]*$/;\r\n if (2 === coords.length && coords[0].match(numericRegex) && coords[1].match(numericRegex)) {\r\n return {\r\n lat: parseFloat(coords[0]),\r\n lng: parseFloat(coords[1])\r\n }\r\n }\r\n } else {\r\n if (Array.isArray(location) && 2 === location.length) {\r\n return {\r\n lat: location[0],\r\n lng: location[1]\r\n }\r\n } else {\r\n if ((0, _type.isPlainObject)(location) && (0, _type.isNumeric)(location.lat) && (0, _type.isNumeric)(location.lng)) {\r\n return location\r\n }\r\n }\r\n }\r\n return null\r\n },\r\n _areBoundsSet: function() {\r\n return this._option(\"bounds.northEast\") && this._option(\"bounds.southWest\")\r\n },\r\n _addEventNamespace: function(name) {\r\n return (0, _index.addNamespace)(name, this._mapWidget.NAME)\r\n },\r\n _applyFunctionIfNeeded: function(fnName, array) {\r\n if (!array.length) {\r\n return _promise.default.resolve()\r\n }\r\n return this[fnName](array)\r\n },\r\n _fireAction: function(name, actionArguments) {\r\n this._mapWidget._createActionByOption(name)(actionArguments)\r\n },\r\n _fireClickAction: function(actionArguments) {\r\n this._fireAction(\"onClick\", actionArguments)\r\n },\r\n _fireMarkerAddedAction: function(actionArguments) {\r\n this._fireAction(\"onMarkerAdded\", actionArguments)\r\n },\r\n _fireMarkerRemovedAction: function(actionArguments) {\r\n this._fireAction(\"onMarkerRemoved\", actionArguments)\r\n },\r\n _fireRouteAddedAction: function(actionArguments) {\r\n this._fireAction(\"onRouteAdded\", actionArguments)\r\n },\r\n _fireRouteRemovedAction: function(actionArguments) {\r\n this._fireAction(\"onRouteRemoved\", actionArguments)\r\n }\r\n});\r\nvar _default = Provider;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/map/provider.dynamic.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _promise = _interopRequireDefault(require(\"../../core/polyfills/promise\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _provider = _interopRequireDefault(require(\"./provider\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar abstract = _provider.default.abstract;\r\nvar DynamicProvider = _provider.default.inherit({\r\n _geocodeLocation: function(location) {\r\n return new _promise.default(function(resolve) {\r\n var cache = this._geocodedLocations;\r\n var cachedLocation = cache[location];\r\n if (cachedLocation) {\r\n resolve(cachedLocation)\r\n } else {\r\n this._geocodeLocationImpl(location).then(function(geocodedLocation) {\r\n cache[location] = geocodedLocation;\r\n resolve(geocodedLocation)\r\n })\r\n }\r\n }.bind(this))\r\n },\r\n _renderImpl: function() {\r\n return this._load().then(function() {\r\n return this._init()\r\n }.bind(this)).then(function() {\r\n return _promise.default.all([this.updateMapType(), this._areBoundsSet() ? this.updateBounds() : this.updateCenter()])\r\n }.bind(this)).then(function() {\r\n this._attachHandlers();\r\n return new _promise.default(function(resolve) {\r\n var timeout = setTimeout(function() {\r\n clearTimeout(timeout);\r\n resolve()\r\n })\r\n })\r\n }.bind(this))\r\n },\r\n _load: function() {\r\n if (!this._mapsLoader) {\r\n this._mapsLoader = this._loadImpl()\r\n }\r\n this._markers = [];\r\n this._routes = [];\r\n return this._mapsLoader\r\n },\r\n _loadImpl: abstract,\r\n _init: abstract,\r\n _attachHandlers: abstract,\r\n addMarkers: function(options) {\r\n return _promise.default.all((0, _iterator.map)(options, function(options) {\r\n return this._addMarker(options)\r\n }.bind(this))).then(function(markerObjects) {\r\n this._fitBounds();\r\n return [false, (0, _iterator.map)(markerObjects, function(markerObject) {\r\n return markerObject.marker\r\n })]\r\n }.bind(this))\r\n },\r\n _addMarker: function(options) {\r\n return this._renderMarker(options).then(function(markerObject) {\r\n this._markers.push((0, _extend.extend)({\r\n options: options\r\n }, markerObject));\r\n this._fireMarkerAddedAction({\r\n options: options,\r\n originalMarker: markerObject.marker\r\n });\r\n return markerObject\r\n }.bind(this))\r\n },\r\n _renderMarker: abstract,\r\n removeMarkers: function(markersOptionsToRemove) {\r\n var that = this;\r\n (0, _iterator.each)(markersOptionsToRemove, function(_, markerOptionToRemove) {\r\n that._removeMarker(markerOptionToRemove)\r\n });\r\n return _promise.default.resolve()\r\n },\r\n _removeMarker: function(markersOptionToRemove) {\r\n var that = this;\r\n (0, _iterator.each)(this._markers, function(markerIndex, markerObject) {\r\n if (markerObject.options !== markersOptionToRemove) {\r\n return true\r\n }\r\n that._destroyMarker(markerObject);\r\n that._markers.splice(markerIndex, 1);\r\n that._fireMarkerRemovedAction({\r\n options: markerObject.options\r\n });\r\n return false\r\n })\r\n },\r\n _destroyMarker: abstract,\r\n _clearMarkers: function() {\r\n while (this._markers.length > 0) {\r\n this._removeMarker(this._markers[0].options)\r\n }\r\n },\r\n addRoutes: function(options) {\r\n return _promise.default.all((0, _iterator.map)(options, function(options) {\r\n return this._addRoute(options)\r\n }.bind(this))).then(function(routeObjects) {\r\n this._fitBounds();\r\n return [false, (0, _iterator.map)(routeObjects, function(routeObject) {\r\n return routeObject.instance\r\n })]\r\n }.bind(this))\r\n },\r\n _addRoute: function(options) {\r\n return this._renderRoute(options).then(function(routeObject) {\r\n this._routes.push((0, _extend.extend)({\r\n options: options\r\n }, routeObject));\r\n this._fireRouteAddedAction({\r\n options: options,\r\n originalRoute: routeObject.instance\r\n });\r\n return routeObject\r\n }.bind(this))\r\n },\r\n _renderRoute: abstract,\r\n removeRoutes: function(options) {\r\n var that = this;\r\n (0, _iterator.each)(options, function(routeIndex, options) {\r\n that._removeRoute(options)\r\n });\r\n return _promise.default.resolve()\r\n },\r\n _removeRoute: function(options) {\r\n var that = this;\r\n (0, _iterator.each)(this._routes, function(routeIndex, routeObject) {\r\n if (routeObject.options !== options) {\r\n return true\r\n }\r\n that._destroyRoute(routeObject);\r\n that._routes.splice(routeIndex, 1);\r\n that._fireRouteRemovedAction({\r\n options: options\r\n });\r\n return false\r\n })\r\n },\r\n _destroyRoute: abstract,\r\n _clearRoutes: function() {\r\n while (this._routes.length > 0) {\r\n this._removeRoute(this._routes[0].options)\r\n }\r\n },\r\n adjustViewport: function() {\r\n return this._fitBounds()\r\n },\r\n isEventsCanceled: function() {\r\n return true\r\n },\r\n _fitBounds: abstract,\r\n _updateBounds: function() {\r\n var that = this;\r\n this._clearBounds();\r\n if (!this._option(\"autoAdjust\")) {\r\n return\r\n }(0, _iterator.each)(this._markers, function(_, markerObject) {\r\n that._extendBounds(markerObject.location)\r\n });\r\n (0, _iterator.each)(this._routes, function(_, routeObject) {\r\n routeObject.northEast && that._extendBounds(routeObject.northEast);\r\n routeObject.southWest && that._extendBounds(routeObject.southWest)\r\n })\r\n },\r\n _clearBounds: function() {\r\n this._bounds = null\r\n },\r\n _extendBounds: abstract\r\n});\r\nvar _default = DynamicProvider;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/multi_view/ui.multi_view.animation.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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.animation = exports._translator = void 0;\r\nvar _fx = _interopRequireDefault(require(\"../../animation/fx\"));\r\nvar _translator2 = require(\"../../animation/translator\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _translator = {\r\n move: function($element, position) {\r\n (0, _translator2.move)($element, {\r\n left: position\r\n })\r\n }\r\n};\r\nexports._translator = _translator;\r\nvar animation = {\r\n moveTo: function($element, position, duration, completeAction) {\r\n _fx.default.animate($element, {\r\n type: \"slide\",\r\n to: {\r\n left: position\r\n },\r\n duration: duration,\r\n complete: completeAction\r\n })\r\n },\r\n complete: function($element) {\r\n _fx.default.stop($element, true)\r\n }\r\n};\r\nexports.animation = animation;\r\n","/**\r\n * DevExtreme (ui/number_box/number_box.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _number_box = _interopRequireDefault(require(\"./number_box.mask\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}(0, _component_registrator.default)(\"dxNumberBox\", _number_box.default);\r\nvar _default = _number_box.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/number_box/number_box.mask.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _number = _interopRequireDefault(require(\"../../localization/number\"));\r\nvar _number_box = require(\"./number_box.caret\");\r\nvar _number2 = require(\"../../localization/ldml/number\");\r\nvar _number_box2 = _interopRequireDefault(require(\"./number_box.base\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _utils = require(\"./utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar NUMBER_FORMATTER_NAMESPACE = \"dxNumberFormatter\";\r\nvar MOVE_FORWARD = 1;\r\nvar MOVE_BACKWARD = -1;\r\nvar MINUS = \"-\";\r\nvar MINUS_KEY = \"minus\";\r\nvar NUMPUD_MINUS_KEY_IE = \"Subtract\";\r\nvar INPUT_EVENT = \"input\";\r\nvar CARET_TIMEOUT_DURATION = _browser.default.msie ? 300 : 0;\r\nvar NumberBoxMask = _number_box2.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n useMaskBehavior: true,\r\n format: null\r\n })\r\n },\r\n _isDeleteKey: function(key) {\r\n return \"del\" === key\r\n },\r\n _supportedKeys: function() {\r\n if (!this._useMaskBehavior()) {\r\n return this.callBase()\r\n }\r\n var that = this;\r\n return (0, _extend.extend)(this.callBase(), {\r\n minus: that._revertSign.bind(that),\r\n del: that._removeHandler.bind(that),\r\n backspace: that._removeHandler.bind(that),\r\n leftArrow: that._arrowHandler.bind(that, MOVE_BACKWARD),\r\n rightArrow: that._arrowHandler.bind(that, MOVE_FORWARD),\r\n home: that._moveCaretToBoundaryEventHandler.bind(that, MOVE_FORWARD),\r\n enter: that._updateFormattedValue.bind(that),\r\n end: that._moveCaretToBoundaryEventHandler.bind(that, MOVE_BACKWARD)\r\n })\r\n },\r\n _getTextSeparatorIndex: function(text) {\r\n var decimalSeparator = _number.default.getDecimalSeparator();\r\n var realSeparatorOccurrenceIndex = (0, _utils.getRealSeparatorIndex)(this.option(\"format\")).occurrence;\r\n return (0, _utils.getNthOccurrence)(text, decimalSeparator, realSeparatorOccurrenceIndex)\r\n },\r\n _focusInHandler: function(e) {\r\n if (!this._preventNestedFocusEvent(e)) {\r\n this.clearCaretTimeout();\r\n this._caretTimeout = setTimeout(function() {\r\n this._caretTimeout = null;\r\n var caret = this._caret();\r\n if (caret.start === caret.end && this._useMaskBehavior()) {\r\n var text = this._getInputVal();\r\n var decimalSeparatorIndex = this._getTextSeparatorIndex(text);\r\n if (decimalSeparatorIndex >= 0) {\r\n this._caret({\r\n start: decimalSeparatorIndex,\r\n end: decimalSeparatorIndex\r\n })\r\n } else {\r\n this._moveCaretToBoundaryEventHandler(MOVE_BACKWARD, e)\r\n }\r\n }\r\n }.bind(this), CARET_TIMEOUT_DURATION)\r\n }\r\n this.callBase(e)\r\n },\r\n _focusOutHandler: function(e) {\r\n var shouldHandleEvent = !this._preventNestedFocusEvent(e);\r\n if (shouldHandleEvent) {\r\n this._focusOutOccurs = true;\r\n if (this._useMaskBehavior()) {\r\n this._updateFormattedValue()\r\n }\r\n }\r\n this.callBase(e);\r\n if (shouldHandleEvent) {\r\n this._focusOutOccurs = false\r\n }\r\n },\r\n _hasValueBeenChanged: function(inputValue) {\r\n var format = this._getFormatPattern();\r\n var value = this.option(\"value\");\r\n var formatted = this._format(value, format) || \"\";\r\n return formatted !== inputValue\r\n },\r\n _updateFormattedValue: function() {\r\n var inputValue = this._getInputVal();\r\n if (this._hasValueBeenChanged(inputValue)) {\r\n this._updateParsedValue();\r\n this._adjustParsedValue();\r\n this._setTextByParsedValue();\r\n if (this._parsedValue !== this.option(\"value\")) {\r\n _events_engine.default.trigger(this._input(), \"change\")\r\n }\r\n }\r\n },\r\n _arrowHandler: function(step, e) {\r\n if (!this._useMaskBehavior()) {\r\n return\r\n }\r\n var text = this._getInputVal();\r\n var format = this._getFormatPattern();\r\n var nextCaret = (0, _number_box.getCaretWithOffset)(this._caret(), step);\r\n if (!(0, _number_box.isCaretInBoundaries)(nextCaret, text, format)) {\r\n nextCaret = step === MOVE_FORWARD ? nextCaret.end : nextCaret.start;\r\n e.preventDefault();\r\n this._caret((0, _number_box.getCaretInBoundaries)(nextCaret, text, format))\r\n }\r\n },\r\n _moveCaretToBoundary: function(direction) {\r\n var boundaries = (0, _number_box.getCaretBoundaries)(this._getInputVal(), this._getFormatPattern());\r\n var newCaret = (0, _number_box.getCaretWithOffset)(direction === MOVE_FORWARD ? boundaries.start : boundaries.end, 0);\r\n this._caret(newCaret)\r\n },\r\n _moveCaretToBoundaryEventHandler: function(direction, e) {\r\n if (!this._useMaskBehavior() || e && e.shiftKey) {\r\n return\r\n }\r\n this._moveCaretToBoundary(direction);\r\n e && e.preventDefault()\r\n },\r\n _shouldMoveCaret: function(text, caret) {\r\n var decimalSeparator = _number.default.getDecimalSeparator();\r\n var isDecimalSeparatorNext = text.charAt(caret.end) === decimalSeparator;\r\n var isZeroNext = \"0\" === text.charAt(caret.end);\r\n var moveToFloat = (this._lastKey === decimalSeparator || \".\" === this._lastKey) && isDecimalSeparatorNext;\r\n var zeroToZeroReplace = \"0\" === this._lastKey && isZeroNext;\r\n return moveToFloat || zeroToZeroReplace\r\n },\r\n _getInputVal: function() {\r\n return _number.default.convertDigits(this._input().val(), true)\r\n },\r\n _keyboardHandler: function(e) {\r\n this.clearCaretTimeout();\r\n this._lastKey = _number.default.convertDigits((0, _index.getChar)(e), true);\r\n this._lastKeyName = (0, _index.normalizeKeyName)(e);\r\n if (!this._shouldHandleKey(e.originalEvent)) {\r\n return this.callBase(e)\r\n }\r\n var normalizedText = this._getInputVal();\r\n var caret = this._caret();\r\n var enteredChar = this._lastKeyName === MINUS_KEY ? \"\" : this._lastKey;\r\n var newValue = this._tryParse(normalizedText, caret, enteredChar);\r\n if (this._shouldMoveCaret(normalizedText, caret)) {\r\n this._moveCaret(1);\r\n e.originalEvent.preventDefault()\r\n }\r\n if (void 0 === newValue) {\r\n if (this._lastKeyName !== MINUS_KEY) {\r\n e.originalEvent.preventDefault()\r\n }\r\n } else {\r\n this._parsedValue = newValue\r\n }\r\n return this.callBase(e)\r\n },\r\n _keyPressHandler: function(e) {\r\n if (!this._useMaskBehavior()) {\r\n this.callBase(e)\r\n }\r\n },\r\n _removeHandler: function(e) {\r\n var caret = this._caret();\r\n var text = this._getInputVal();\r\n var start = caret.start;\r\n var end = caret.end;\r\n this._lastKey = (0, _index.getChar)(e);\r\n this._lastKeyName = (0, _index.normalizeKeyName)(e);\r\n var isDeleteKey = this._isDeleteKey(this._lastKeyName);\r\n var isBackspaceKey = !isDeleteKey;\r\n if (start === end) {\r\n var caretPosition = start;\r\n var canDelete = isBackspaceKey && caretPosition > 0 || isDeleteKey && caretPosition < text.length;\r\n if (canDelete) {\r\n isDeleteKey && end++;\r\n isBackspaceKey && start--\r\n } else {\r\n e.preventDefault();\r\n return\r\n }\r\n }\r\n var char = text.slice(start, end);\r\n if (this._isStub(char)) {\r\n this._moveCaret(isDeleteKey ? 1 : -1);\r\n if (this._parsedValue < 0 || 1 / this._parsedValue === -(1 / 0)) {\r\n this._revertSign(e);\r\n this._setTextByParsedValue()\r\n }\r\n e.preventDefault();\r\n return\r\n }\r\n var decimalSeparator = _number.default.getDecimalSeparator();\r\n if (char === decimalSeparator) {\r\n var decimalSeparatorIndex = text.indexOf(decimalSeparator);\r\n if (this._isNonStubAfter(decimalSeparatorIndex + 1)) {\r\n this._moveCaret(isDeleteKey ? 1 : -1);\r\n e.preventDefault()\r\n }\r\n return\r\n }\r\n if (end - start < text.length) {\r\n var editedText = this._replaceSelectedText(text, {\r\n start: start,\r\n end: end\r\n }, \"\");\r\n var noDigits = editedText.search(/[0-9]/) < 0;\r\n if (noDigits && this._isValueInRange(0)) {\r\n this._parsedValue = this._parsedValue < 0 || 1 / this._parsedValue === -(1 / 0) ? -0 : 0;\r\n return\r\n }\r\n }\r\n var valueAfterRemoving = this._tryParse(text, {\r\n start: start,\r\n end: end\r\n }, \"\");\r\n if (void 0 === valueAfterRemoving) {\r\n e.preventDefault()\r\n } else {\r\n this._parsedValue = valueAfterRemoving\r\n }\r\n },\r\n _isPercentFormat: function() {\r\n var format = this._getFormatPattern();\r\n var noEscapedFormat = format.replace(/'[^']+'/g, \"\");\r\n return noEscapedFormat.indexOf(\"%\") !== -1\r\n },\r\n _parse: function(text, format) {\r\n var formatOption = this.option(\"format\");\r\n var isCustomParser = (0, _type.isFunction)(formatOption.parser);\r\n var parser = isCustomParser ? formatOption.parser : _number.default.parse;\r\n var integerPartStartIndex = 0;\r\n if (!isCustomParser) {\r\n var formatPointIndex = (0, _utils.getRealSeparatorIndex)(format).index;\r\n var textPointIndex = this._getTextSeparatorIndex(text);\r\n var formatIntegerPartLength = formatPointIndex !== -1 ? formatPointIndex : format.length;\r\n var textIntegerPartLength = textPointIndex !== -1 ? textPointIndex : text.length;\r\n if (textIntegerPartLength > formatIntegerPartLength && format.indexOf(\"#\") === -1) {\r\n integerPartStartIndex = textIntegerPartLength - formatIntegerPartLength\r\n }\r\n }\r\n text = this._removeStubs(text, true);\r\n text = text.substr(integerPartStartIndex);\r\n return parser(text, format)\r\n },\r\n _format: function(value, format) {\r\n var formatOption = this.option(\"format\");\r\n var isCustomFormatter = (0, _type.isFunction)(null === formatOption || void 0 === formatOption ? void 0 : formatOption.formatter);\r\n var formatter = isCustomFormatter ? formatOption.formatter : _number.default.format;\r\n return formatter(value, format)\r\n },\r\n _getFormatPattern: function() {\r\n if (!this._currentFormat) {\r\n this._updateFormat()\r\n }\r\n return this._currentFormat\r\n },\r\n _updateFormat: function() {\r\n var _this = this;\r\n var format = this.option(\"format\");\r\n var isCustomParser = (0, _type.isFunction)(null === format || void 0 === format ? void 0 : format.parser);\r\n var isLDMLPattern = (0, _type.isString)(format) && (format.indexOf(\"0\") >= 0 || format.indexOf(\"#\") >= 0);\r\n this._currentFormat = isCustomParser || isLDMLPattern ? format : (0, _number2.getFormat)(function(value) {\r\n var text = _this._format(value, format);\r\n return _number.default.convertDigits(text, true)\r\n })\r\n },\r\n _getFormatForSign: function(text) {\r\n var format = this._getFormatPattern();\r\n if ((0, _type.isString)(format)) {\r\n var signParts = format.split(\";\");\r\n var sign = _number.default.getSign(text, format);\r\n signParts[1] = signParts[1] || \"-\" + signParts[0];\r\n return sign < 0 ? signParts[1] : signParts[0]\r\n } else {\r\n var _sign = _number.default.getSign(text);\r\n return _sign < 0 ? \"-\" : \"\"\r\n }\r\n },\r\n _removeStubs: function(text, excludeComma) {\r\n var format = this._getFormatForSign(text);\r\n var thousandsSeparator = _number.default.getThousandsSeparator();\r\n var stubs = this._getStubs(format);\r\n var result = text;\r\n if (stubs.length) {\r\n var prefixStubs = stubs[0];\r\n var postfixRegex = new RegExp(\"(\" + (0, _common.escapeRegExp)(stubs[1] || \"\") + \")$\", \"g\");\r\n var decoratorsRegex = new RegExp(\"[-\" + (0, _common.escapeRegExp)(excludeComma ? \"\" : thousandsSeparator) + \"]\", \"g\");\r\n result = result.replace(prefixStubs, \"\").replace(postfixRegex, \"\").replace(decoratorsRegex, \"\")\r\n }\r\n return result\r\n },\r\n _getStubs: function(format) {\r\n var regExpResult = /[^']([#0.,]+)/g.exec(format);\r\n var pattern = regExpResult && regExpResult[0].trim();\r\n return format.split(pattern).map(function(stub) {\r\n return stub.replace(/'/g, \"\")\r\n })\r\n },\r\n _truncateToPrecision: function(value, maxPrecision) {\r\n if ((0, _type.isDefined)(value)) {\r\n var strValue = value.toString();\r\n var decimalSeparatorIndex = strValue.indexOf(\".\");\r\n if (strValue && decimalSeparatorIndex > -1) {\r\n var parsedValue = parseFloat(strValue.substr(0, decimalSeparatorIndex + maxPrecision + 1));\r\n return isNaN(parsedValue) ? value : parsedValue\r\n }\r\n }\r\n return value\r\n },\r\n _tryParse: function(text, selection, char) {\r\n var editedText = this._replaceSelectedText(text, selection, char);\r\n var format = this._getFormatPattern();\r\n var isTextSelected = selection.start !== selection.end;\r\n var parsedValue = this._getParsedValue(editedText, format);\r\n var maxPrecision = !format.parser && this._getPrecisionLimits(editedText).max;\r\n var isValueChanged = parsedValue !== this._parsedValue;\r\n var decimalSeparator = _number.default.getDecimalSeparator();\r\n var isDecimalPointRestricted = char === decimalSeparator && 0 === maxPrecision;\r\n var isUselessCharRestricted = !isTextSelected && !isValueChanged && char !== MINUS && !this._isValueIncomplete(editedText) && this._isStub(char);\r\n if (isDecimalPointRestricted || isUselessCharRestricted) {\r\n return\r\n }\r\n if (\"\" === this._removeStubs(editedText)) {\r\n parsedValue = Math.abs(0 * this._parsedValue)\r\n }\r\n if (isNaN(parsedValue)) {\r\n return\r\n }\r\n var value = null === parsedValue ? this._parsedValue : parsedValue;\r\n parsedValue = maxPrecision ? this._truncateToPrecision(value, maxPrecision) : parsedValue;\r\n return !format.parser && this._isPercentFormat() ? parsedValue && parsedValue / 100 : parsedValue\r\n },\r\n _getParsedValue: function(text, format) {\r\n var sign = _number.default.getSign(text, (null === format || void 0 === format ? void 0 : format.formatter) || format);\r\n var parsedValue = this._parse(text, format);\r\n var parsedValueSign = parsedValue < 0 ? -1 : 1;\r\n var parsedValueWithSign = (0, _type.isNumeric)(parsedValue) && sign !== parsedValueSign ? sign * parsedValue : parsedValue;\r\n return parsedValueWithSign\r\n },\r\n _isValueIncomplete: function(text) {\r\n if (!this._useMaskBehavior()) {\r\n return this.callBase(text)\r\n }\r\n var caret = this._caret();\r\n var point = _number.default.getDecimalSeparator();\r\n var pointIndex = this._getTextSeparatorIndex(text);\r\n var isCaretOnFloat = pointIndex >= 0 && pointIndex < caret.start;\r\n var textParts = this._removeStubs(text, true).split(point);\r\n if (!isCaretOnFloat || 2 !== textParts.length) {\r\n return false\r\n }\r\n var floatLength = textParts[1].length;\r\n var format = this._getFormatPattern();\r\n var isCustomParser = !!format.parser;\r\n var precision = !isCustomParser && this._getPrecisionLimits(this._getFormatPattern(), text);\r\n var isPrecisionInRange = isCustomParser ? true : (0, _math.inRange)(floatLength, precision.min, precision.max);\r\n var endsWithZero = \"0\" === textParts[1].charAt(floatLength - 1);\r\n return isPrecisionInRange && (endsWithZero || !floatLength)\r\n },\r\n _isValueInRange: function(value) {\r\n var min = (0, _common.ensureDefined)(this.option(\"min\"), -(1 / 0));\r\n var max = (0, _common.ensureDefined)(this.option(\"max\"), 1 / 0);\r\n return (0, _math.inRange)(value, min, max)\r\n },\r\n _setInputText: function(text) {\r\n var normalizedText = _number.default.convertDigits(text, true);\r\n var newCaret = (0, _number_box.getCaretAfterFormat)(this._getInputVal(), normalizedText, this._caret(), this._getFormatPattern());\r\n this._input().val(text);\r\n this._toggleEmptinessEventHandler();\r\n this._formattedValue = text;\r\n if (!this._focusOutOccurs) {\r\n this._caret(newCaret)\r\n }\r\n },\r\n _useMaskBehavior: function() {\r\n return !!this.option(\"format\") && this.option(\"useMaskBehavior\")\r\n },\r\n _renderInputType: function() {\r\n var isNumberType = \"number\" === this.option(\"mode\");\r\n var isDesktop = \"desktop\" === _devices.default.real().deviceType;\r\n if (this._useMaskBehavior() && isNumberType) {\r\n this._setInputType(isDesktop || this._isSupportInputMode() ? \"text\" : \"tel\")\r\n } else {\r\n this.callBase()\r\n }\r\n },\r\n _isChar: function(str) {\r\n return (0, _type.isString)(str) && 1 === str.length\r\n },\r\n _moveCaret: function(offset) {\r\n if (!offset) {\r\n return\r\n }\r\n var newCaret = (0, _number_box.getCaretWithOffset)(this._caret(), offset);\r\n var adjustedCaret = (0, _number_box.getCaretInBoundaries)(newCaret, this._getInputVal(), this._getFormatPattern());\r\n this._caret(adjustedCaret)\r\n },\r\n _shouldHandleKey: function(e) {\r\n var keyName = (0, _index.normalizeKeyName)(e);\r\n var isSpecialChar = e.ctrlKey || e.shiftKey || e.altKey || !this._isChar(keyName);\r\n var isMinusKey = keyName === MINUS_KEY;\r\n var useMaskBehavior = this._useMaskBehavior();\r\n return useMaskBehavior && !isSpecialChar && !isMinusKey\r\n },\r\n _renderInput: function() {\r\n this.callBase();\r\n this._renderFormatter()\r\n },\r\n _renderFormatter: function() {\r\n this._clearCache();\r\n this._detachFormatterEvents();\r\n if (this._useMaskBehavior()) {\r\n this._attachFormatterEvents()\r\n }\r\n },\r\n _detachFormatterEvents: function() {\r\n _events_engine.default.off(this._input(), \".\" + NUMBER_FORMATTER_NAMESPACE)\r\n },\r\n _isInputFromPaste: function(e) {\r\n var inputType = e.originalEvent && e.originalEvent.inputType;\r\n if ((0, _type.isDefined)(inputType)) {\r\n return \"insertFromPaste\" === inputType\r\n } else {\r\n return this._isValuePasted\r\n }\r\n },\r\n _attachFormatterEvents: function() {\r\n var $input = this._input();\r\n _events_engine.default.on($input, (0, _index.addNamespace)(INPUT_EVENT, NUMBER_FORMATTER_NAMESPACE), function(e) {\r\n this._formatValue(e);\r\n this._isValuePasted = false\r\n }.bind(this));\r\n if (_browser.default.msie && _browser.default.version < 12) {\r\n _events_engine.default.on($input, (0, _index.addNamespace)(\"paste\", NUMBER_FORMATTER_NAMESPACE), function() {\r\n this._isValuePasted = true\r\n }.bind(this))\r\n }\r\n _events_engine.default.on($input, (0, _index.addNamespace)(\"dxclick\", NUMBER_FORMATTER_NAMESPACE), function() {\r\n if (!this._caretTimeout) {\r\n this._caretTimeout = setTimeout(function() {\r\n this._caret((0, _number_box.getCaretInBoundaries)(this._caret(), this._getInputVal(), this._getFormatPattern()))\r\n }.bind(this), CARET_TIMEOUT_DURATION)\r\n }\r\n }.bind(this));\r\n _events_engine.default.on($input, \"dxdblclick\", function() {\r\n this.clearCaretTimeout()\r\n }.bind(this))\r\n },\r\n clearCaretTimeout: function() {\r\n clearTimeout(this._caretTimeout);\r\n this._caretTimeout = null\r\n },\r\n _forceRefreshInputValue: function() {\r\n if (!this._useMaskBehavior()) {\r\n return this.callBase()\r\n }\r\n },\r\n _isNonStubAfter: function(index) {\r\n var text = this._getInputVal().slice(index);\r\n return text && !this._isStub(text, true)\r\n },\r\n _isStub: function(str, isString) {\r\n var escapedDecimalSeparator = (0, _common.escapeRegExp)(_number.default.getDecimalSeparator());\r\n var regExpString = \"^[^0-9\" + escapedDecimalSeparator + \"]+$\";\r\n var stubRegExp = new RegExp(regExpString, \"g\");\r\n return stubRegExp.test(str) && (isString || this._isChar(str))\r\n },\r\n _parseValue: function(text) {\r\n if (!this._useMaskBehavior()) {\r\n return this.callBase(text)\r\n }\r\n return this._parsedValue\r\n },\r\n _getPrecisionLimits: function(text) {\r\n var currentFormat = this._getFormatForSign(text);\r\n var realSeparatorIndex = (0, _utils.getRealSeparatorIndex)(currentFormat).index;\r\n var floatPart = ((0, _utils.splitByIndex)(currentFormat, realSeparatorIndex)[1] || \"\").replace(/[^#0]/g, \"\");\r\n var minPrecision = floatPart.replace(/^(0*)#*/, \"$1\").length;\r\n var maxPrecision = floatPart.length;\r\n return {\r\n min: minPrecision,\r\n max: maxPrecision\r\n }\r\n },\r\n _revertSign: function(e) {\r\n if (!this._useMaskBehavior()) {\r\n return\r\n }\r\n var caret = this._caret();\r\n if (caret.start !== caret.end) {\r\n if ((0, _index.normalizeKeyName)(e) === MINUS_KEY) {\r\n this._applyRevertedSign(e, caret, true);\r\n return\r\n } else {\r\n this._caret((0, _number_box.getCaretInBoundaries)(0, this._getInputVal(), this._getFormatPattern()))\r\n }\r\n }\r\n this._applyRevertedSign(e, caret)\r\n },\r\n _applyRevertedSign: function(e, caret, preserveSelectedText) {\r\n var newValue = -1 * (0, _common.ensureDefined)(this._parsedValue, null);\r\n if (this._isValueInRange(newValue)) {\r\n this._parsedValue = newValue;\r\n if (preserveSelectedText) {\r\n var format = this._getFormatPattern();\r\n var previousText = this._getInputVal();\r\n this._setTextByParsedValue();\r\n e.preventDefault();\r\n var currentText = this._getInputVal();\r\n var offset = (0, _number_box.getCaretOffset)(previousText, currentText, format);\r\n caret = (0, _number_box.getCaretWithOffset)(caret, offset);\r\n var caretInBoundaries = (0, _number_box.getCaretInBoundaries)(caret, currentText, format);\r\n if (_browser.default.msie) {\r\n clearTimeout(this._caretTimeout);\r\n this._caretTimeout = setTimeout(this._caret.bind(this, caretInBoundaries))\r\n } else {\r\n this._caret(caretInBoundaries)\r\n }\r\n }\r\n if (e.key === NUMPUD_MINUS_KEY_IE) {\r\n _events_engine.default.trigger(this._input(), INPUT_EVENT)\r\n }\r\n }\r\n },\r\n _removeMinusFromText: function(text, caret) {\r\n var isMinusPressed = this._lastKeyName === MINUS_KEY && text.charAt(caret.start - 1) === MINUS;\r\n return isMinusPressed ? this._replaceSelectedText(text, {\r\n start: caret.start - 1,\r\n end: caret.start\r\n }, \"\") : text\r\n },\r\n _setTextByParsedValue: function() {\r\n var format = this._getFormatPattern();\r\n var parsed = this._parseValue();\r\n var formatted = this._format(parsed, format) || \"\";\r\n this._setInputText(formatted)\r\n },\r\n _formatValue: function(e) {\r\n var normalizedText = this._getInputVal();\r\n var caret = this._caret();\r\n var textWithoutMinus = this._removeMinusFromText(normalizedText, caret);\r\n var wasMinusRemoved = textWithoutMinus !== normalizedText;\r\n normalizedText = textWithoutMinus;\r\n if (!this._isInputFromPaste(e) && this._isValueIncomplete(textWithoutMinus)) {\r\n this._formattedValue = normalizedText;\r\n if (wasMinusRemoved) {\r\n this._setTextByParsedValue()\r\n }\r\n return\r\n }\r\n var textWasChanged = _number.default.convertDigits(this._formattedValue, true) !== normalizedText;\r\n if (textWasChanged) {\r\n var value = this._tryParse(normalizedText, caret, \"\");\r\n if ((0, _type.isDefined)(value)) {\r\n this._parsedValue = value\r\n }\r\n }\r\n this._setTextByParsedValue()\r\n },\r\n _renderDisplayText: function() {\r\n if (this._useMaskBehavior()) {\r\n this._toggleEmptinessEventHandler()\r\n } else {\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _renderValue: function() {\r\n if (this._useMaskBehavior()) {\r\n this._parsedValue = this.option(\"value\");\r\n this._setTextByParsedValue()\r\n }\r\n return this.callBase()\r\n },\r\n _updateParsedValue: function() {\r\n var inputValue = this._getInputVal();\r\n this._parsedValue = this._tryParse(inputValue, this._caret())\r\n },\r\n _adjustParsedValue: function() {\r\n if (!this._useMaskBehavior()) {\r\n return\r\n }\r\n var clearedText = this._removeStubs(this._getInputVal());\r\n var parsedValue = clearedText ? this._parseValue() : null;\r\n if (!(0, _type.isNumeric)(parsedValue)) {\r\n this._parsedValue = parsedValue;\r\n return\r\n }\r\n this._parsedValue = (0, _math.fitIntoRange)(parsedValue, this.option(\"min\"), this.option(\"max\"))\r\n },\r\n _valueChangeEventHandler: function(e) {\r\n if (!this._useMaskBehavior()) {\r\n return this.callBase(e)\r\n }\r\n var caret = this._caret();\r\n this._saveValueChangeEvent(e);\r\n this._lastKey = null;\r\n this._lastKeyName = null;\r\n this._updateParsedValue();\r\n this._adjustParsedValue();\r\n this.option(\"value\", this._parsedValue);\r\n if (caret) {\r\n this._caret(caret)\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"format\":\r\n case \"useMaskBehavior\":\r\n this._renderInputType();\r\n this._updateFormat();\r\n this._renderFormatter();\r\n this._renderValue();\r\n this._refreshValueChangeEvent();\r\n this._refreshEvents();\r\n break;\r\n case \"min\":\r\n case \"max\":\r\n this._adjustParsedValue();\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _clearCache: function() {\r\n delete this._formattedValue;\r\n delete this._lastKey;\r\n delete this._lastKeyName;\r\n delete this._parsedValue;\r\n delete this._focusOutOccurs;\r\n clearTimeout(this._caretTimeout);\r\n delete this._caretTimeout\r\n },\r\n _clean: function() {\r\n this._clearCache();\r\n this.callBase()\r\n }\r\n});\r\nvar _default = NumberBoxMask;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/number_box/number_box.caret.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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.getCaretInBoundaries = getCaretInBoundaries;\r\nexports.getCaretOffset = exports.isCaretInBoundaries = exports.getCaretAfterFormat = exports.getCaretWithOffset = exports.getCaretBoundaries = void 0;\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _number = _interopRequireDefault(require(\"../../localization/number\"));\r\nvar _utils = require(\"./utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar getCaretBoundaries = function(text, format) {\r\n if (\"string\" === typeof format) {\r\n var signParts = format.split(\";\");\r\n var sign = _number.default.getSign(text, format);\r\n signParts[1] = signParts[1] || \"-\" + signParts[0];\r\n format = signParts[sign < 0 ? 1 : 0];\r\n var mockEscapedStubs = function(str) {\r\n return str.replace(/'([^']*)'/g, function(str) {\r\n return str.split(\"\").map(function() {\r\n return \" \"\r\n }).join(\"\").substr(2)\r\n })\r\n };\r\n format = mockEscapedStubs(format);\r\n var prefixStubLength = /^[^#0.,]*/.exec(format)[0].length;\r\n var postfixStubLength = /[^#0.,]*$/.exec(format)[0].length;\r\n return {\r\n start: prefixStubLength,\r\n end: text.length - postfixStubLength\r\n }\r\n } else {\r\n return {\r\n start: 0,\r\n end: text.length\r\n }\r\n }\r\n};\r\nexports.getCaretBoundaries = getCaretBoundaries;\r\nvar _getDigitCountBeforeIndex = function(index, text) {\r\n var decimalSeparator = _number.default.getDecimalSeparator();\r\n var regExp = new RegExp(\"[^0-9\" + (0, _common.escapeRegExp)(decimalSeparator) + \"]\", \"g\");\r\n var textBeforePosition = text.slice(0, index);\r\n return textBeforePosition.replace(regExp, \"\").length\r\n};\r\nvar _reverseText = function(text) {\r\n return text.split(\"\").reverse().join(\"\")\r\n};\r\nvar _getDigitPositionByIndex = function(digitIndex, text) {\r\n if (!digitIndex) {\r\n return -1\r\n }\r\n var regExp = /[0-9]/g;\r\n var counter = 1;\r\n var index = null;\r\n var result = regExp.exec(text);\r\n while (result) {\r\n index = result.index;\r\n if (!digitIndex || counter >= digitIndex) {\r\n return index\r\n }\r\n counter++;\r\n result = regExp.exec(text)\r\n }\r\n return null === index ? text.length : index\r\n};\r\nvar _trimNonNumericCharsFromEnd = function(text) {\r\n return text.replace(/[^0-9e]+$/, \"\")\r\n};\r\nvar getCaretWithOffset = function(caret, offset) {\r\n if (void 0 === caret.start) {\r\n caret = {\r\n start: caret,\r\n end: caret\r\n }\r\n }\r\n return {\r\n start: caret.start + offset,\r\n end: caret.end + offset\r\n }\r\n};\r\nexports.getCaretWithOffset = getCaretWithOffset;\r\nvar getCaretAfterFormat = function(text, formatted, caret, format) {\r\n caret = getCaretWithOffset(caret, 0);\r\n var point = _number.default.getDecimalSeparator();\r\n var isSeparatorBasedText = isSeparatorBasedString(text);\r\n var realSeparatorOccurrenceIndex = (0, _utils.getRealSeparatorIndex)(format).occurrence;\r\n var pointPosition = isSeparatorBasedText ? 0 : (0, _utils.getNthOccurrence)(text, point, realSeparatorOccurrenceIndex);\r\n var newPointPosition = (0, _utils.getNthOccurrence)(formatted, point, realSeparatorOccurrenceIndex);\r\n var textParts = (0, _utils.splitByIndex)(text, pointPosition);\r\n var formattedParts = (0, _utils.splitByIndex)(formatted, newPointPosition);\r\n var isCaretOnFloat = pointPosition !== -1 && caret.start > pointPosition;\r\n if (isCaretOnFloat) {\r\n var relativeIndex = caret.start - pointPosition - 1;\r\n var digitsBefore = _getDigitCountBeforeIndex(relativeIndex, textParts[1]);\r\n var newPosition = formattedParts[1] ? newPointPosition + 1 + _getDigitPositionByIndex(digitsBefore, formattedParts[1]) + 1 : formatted.length;\r\n return getCaretInBoundaries(newPosition, formatted, format)\r\n } else {\r\n var formattedIntPart = _trimNonNumericCharsFromEnd(formattedParts[0]);\r\n var positionFromEnd = textParts[0].length - caret.start;\r\n var digitsFromEnd = _getDigitCountBeforeIndex(positionFromEnd, _reverseText(textParts[0]));\r\n var newPositionFromEnd = _getDigitPositionByIndex(digitsFromEnd, _reverseText(formattedIntPart));\r\n var newPositionFromBegin = formattedIntPart.length - (newPositionFromEnd + 1);\r\n return getCaretInBoundaries(newPositionFromBegin, formatted, format)\r\n }\r\n};\r\nexports.getCaretAfterFormat = getCaretAfterFormat;\r\n\r\nfunction isSeparatorBasedString(text) {\r\n return 1 === text.length && !!text.match(/^[,.][0-9]*$/g)\r\n}\r\nvar isCaretInBoundaries = function(caret, text, format) {\r\n caret = getCaretWithOffset(caret, 0);\r\n var boundaries = getCaretInBoundaries(caret, text, format);\r\n return caret.start >= boundaries.start && caret.end <= boundaries.end\r\n};\r\nexports.isCaretInBoundaries = isCaretInBoundaries;\r\n\r\nfunction getCaretInBoundaries(caret, text, format) {\r\n caret = getCaretWithOffset(caret, 0);\r\n var boundaries = getCaretBoundaries(text, format);\r\n var adjustedCaret = {\r\n start: (0, _math.fitIntoRange)(caret.start, boundaries.start, boundaries.end),\r\n end: (0, _math.fitIntoRange)(caret.end, boundaries.start, boundaries.end)\r\n };\r\n return adjustedCaret\r\n}\r\nvar getCaretOffset = function(previousText, newText, format) {\r\n var previousBoundaries = getCaretBoundaries(previousText, format);\r\n var newBoundaries = getCaretBoundaries(newText, format);\r\n return newBoundaries.start - previousBoundaries.start\r\n};\r\nexports.getCaretOffset = getCaretOffset;\r\n","/**\r\n * DevExtreme (ui/number_box/number_box.base.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _ui = _interopRequireDefault(require(\"../text_box/ui.text_editor\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _number_box = _interopRequireDefault(require(\"./number_box.spins\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\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 math = Math;\r\nvar WIDGET_CLASS = \"dx-numberbox\";\r\nvar FIREFOX_CONTROL_KEYS = [\"tab\", \"del\", \"backspace\", \"leftArrow\", \"rightArrow\", \"home\", \"end\", \"enter\"];\r\nvar FORCE_VALUECHANGE_EVENT_NAMESPACE = \"NumberBoxForceValueChange\";\r\nvar NumberBoxBase = _ui.default.inherit({\r\n _supportedKeys: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n upArrow: function(e) {\r\n if (!(0, _index.isCommandKeyPressed)(e)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this._spinUpChangeHandler(e)\r\n }\r\n },\r\n downArrow: function(e) {\r\n if (!(0, _index.isCommandKeyPressed)(e)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this._spinDownChangeHandler(e)\r\n }\r\n },\r\n enter: function() {}\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n value: 0,\r\n min: void 0,\r\n max: void 0,\r\n step: 1,\r\n showSpinButtons: false,\r\n useLargeSpinButtons: true,\r\n mode: \"text\",\r\n invalidValueMessage: _message.default.format(\"dxNumberBox-invalidValueMessage\"),\r\n buttons: void 0\r\n })\r\n },\r\n _useTemplates: function() {\r\n return false\r\n },\r\n _getDefaultButtons: function() {\r\n return this.callBase().concat([{\r\n name: \"spins\",\r\n Ctor: _number_box.default\r\n }])\r\n },\r\n _isSupportInputMode: function() {\r\n var version = parseFloat(_browser.default.version);\r\n return _browser.default.chrome && version >= 66 || _browser.default.safari && version >= 12 || _browser.default.msie && version >= 75\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return _devices.default.real().generic && !_devices.default.isSimulator()\r\n },\r\n options: {\r\n useLargeSpinButtons: false\r\n }\r\n }, {\r\n device: function() {\r\n return \"desktop\" !== _devices.default.real().deviceType && !this._isSupportInputMode()\r\n }.bind(this),\r\n options: {\r\n mode: \"number\"\r\n }\r\n }])\r\n },\r\n _initMarkup: function() {\r\n this._renderSubmitElement();\r\n this.$element().addClass(WIDGET_CLASS);\r\n this.callBase()\r\n },\r\n _getDefaultAttributes: function() {\r\n var attributes = this.callBase();\r\n attributes.inputmode = \"decimal\";\r\n return attributes\r\n },\r\n _renderContentImpl: function() {\r\n this.option(\"isValid\") && this._validateValue(this.option(\"value\"));\r\n this.setAria(\"role\", \"spinbutton\")\r\n },\r\n _renderSubmitElement: function() {\r\n this._$submitElement = (0, _renderer.default)(\"\").attr(\"type\", \"hidden\").appendTo(this.$element());\r\n this._setSubmitValue(this.option(\"value\"))\r\n },\r\n _setSubmitValue: function(value) {\r\n this._getSubmitElement().val((0, _common.applyServerDecimalSeparator)(value))\r\n },\r\n _getSubmitElement: function() {\r\n return this._$submitElement\r\n },\r\n _keyPressHandler: function(e) {\r\n this.callBase(e);\r\n var char = (0, _index.getChar)(e);\r\n var validCharRegExp = /[\\d.,eE\\-+]|Subtract/;\r\n var isInputCharValid = validCharRegExp.test(char);\r\n if (!isInputCharValid) {\r\n var keyName = (0, _index.normalizeKeyName)(e);\r\n if ((0, _index.isCommandKeyPressed)(e) || keyName && (0, _array.inArray)(keyName, FIREFOX_CONTROL_KEYS) >= 0) {\r\n return\r\n }\r\n e.preventDefault();\r\n return false\r\n }\r\n this._keyPressed = true\r\n },\r\n _onMouseWheel: function(dxEvent) {\r\n dxEvent.delta > 0 ? this._spinValueChange(1, dxEvent) : this._spinValueChange(-1, dxEvent)\r\n },\r\n _renderValue: function() {\r\n var inputValue = this._input().val();\r\n var value = this.option(\"value\");\r\n if (!inputValue.length || Number(inputValue) !== value) {\r\n this._forceValueRender();\r\n this._toggleEmptinessEventHandler()\r\n }\r\n var valueText = (0, _type.isDefined)(value) ? null : _message.default.format(\"dxNumberBox-noDataText\");\r\n this.setAria({\r\n valuenow: (0, _common.ensureDefined)(value, \"\"),\r\n valuetext: valueText\r\n });\r\n this.option(\"text\", this._input().val());\r\n this._updateButtons();\r\n return (new _deferred.Deferred).resolve()\r\n },\r\n _forceValueRender: function() {\r\n var value = this.option(\"value\");\r\n var number = Number(value);\r\n var formattedValue = isNaN(number) ? \"\" : this._applyDisplayValueFormatter(value);\r\n this._renderDisplayText(formattedValue)\r\n },\r\n _applyDisplayValueFormatter: function(value) {\r\n return this.option(\"displayValueFormatter\")(value)\r\n },\r\n _renderProps: function() {\r\n this.callBase();\r\n this._input().prop({\r\n min: this.option(\"min\"),\r\n max: this.option(\"max\"),\r\n step: this.option(\"step\")\r\n });\r\n this.setAria({\r\n valuemin: (0, _common.ensureDefined)(this.option(\"min\"), \"\"),\r\n valuemax: (0, _common.ensureDefined)(this.option(\"max\"), \"\")\r\n })\r\n },\r\n _spinButtonsPointerDownHandler: function() {\r\n var $input = this._input();\r\n if (!this.option(\"useLargeSpinButtons\") && _dom_adapter.default.getActiveElement() !== $input[0]) {\r\n _events_engine.default.trigger($input, \"focus\")\r\n }\r\n },\r\n _spinUpChangeHandler: function(e) {\r\n if (!this.option(\"readOnly\")) {\r\n this._spinValueChange(1, e.event || e)\r\n }\r\n },\r\n _spinDownChangeHandler: function(e) {\r\n if (!this.option(\"readOnly\")) {\r\n this._spinValueChange(-1, e.event || e)\r\n }\r\n },\r\n _spinValueChange: function(sign, dxEvent) {\r\n var step = parseFloat(this.option(\"step\"));\r\n if (0 === step) {\r\n return\r\n }\r\n var value = parseFloat(this._normalizeInputValue()) || 0;\r\n value = this._correctRounding(value, step * sign);\r\n var min = this.option(\"min\");\r\n var max = this.option(\"max\");\r\n if ((0, _type.isDefined)(min)) {\r\n value = Math.max(min, value)\r\n }\r\n if ((0, _type.isDefined)(max)) {\r\n value = Math.min(max, value)\r\n }\r\n this._saveValueChangeEvent(dxEvent);\r\n this.option(\"value\", value)\r\n },\r\n _correctRounding: function(value, step) {\r\n var regex = /[,.](.*)/;\r\n var isFloatValue = regex.test(value);\r\n var isFloatStep = regex.test(step);\r\n if (isFloatValue || isFloatStep) {\r\n var valueAccuracy = isFloatValue ? regex.exec(value)[0].length : 0;\r\n var stepAccuracy = isFloatStep ? regex.exec(step)[0].length : 0;\r\n var accuracy = math.max(valueAccuracy, stepAccuracy);\r\n value = this._round(value + step, accuracy);\r\n return value\r\n }\r\n return value + step\r\n },\r\n _round: function(value, precision) {\r\n precision = precision || 0;\r\n var multiplier = Math.pow(10, precision);\r\n value *= multiplier;\r\n value = Math.round(value) / multiplier;\r\n return value\r\n },\r\n _renderValueChangeEvent: function() {\r\n this.callBase();\r\n var forceValueChangeEvent = (0, _index.addNamespace)(\"focusout\", FORCE_VALUECHANGE_EVENT_NAMESPACE);\r\n _events_engine.default.off(this.element(), forceValueChangeEvent);\r\n _events_engine.default.on(this.element(), forceValueChangeEvent, this._forceRefreshInputValue.bind(this))\r\n },\r\n _forceRefreshInputValue: function() {\r\n if (\"number\" === this.option(\"mode\")) {\r\n return\r\n }\r\n var $input = this._input();\r\n var formattedValue = this._applyDisplayValueFormatter(this.option(\"value\"));\r\n $input.val(null);\r\n $input.val(formattedValue)\r\n },\r\n _valueChangeEventHandler: function(e) {\r\n var $input = this._input();\r\n var inputValue = this._normalizeText();\r\n var value = this._parseValue(inputValue);\r\n var valueHasDigits = \".\" !== inputValue && \"-\" !== inputValue;\r\n if (this._isValueValid() && !this._validateValue(value)) {\r\n $input.val(this._applyDisplayValueFormatter(value));\r\n return\r\n }\r\n if (valueHasDigits) {\r\n this.callBase(e, isNaN(value) ? null : value)\r\n }\r\n this._applyValueBoundaries(inputValue, value);\r\n this.validationRequest.fire({\r\n value: value,\r\n editor: this\r\n })\r\n },\r\n _applyValueBoundaries: function(inputValue, parsedValue) {\r\n var isValueIncomplete = this._isValueIncomplete(inputValue);\r\n var isValueCorrect = this._isValueInRange(inputValue);\r\n if (!isValueIncomplete && !isValueCorrect && null !== parsedValue) {\r\n if (Number(inputValue) !== parsedValue) {\r\n this._input().val(this._applyDisplayValueFormatter(parsedValue))\r\n }\r\n }\r\n },\r\n _replaceCommaWithPoint: function(value) {\r\n return value.replace(\",\", \".\")\r\n },\r\n _inputIsInvalid: function() {\r\n var isNumberMode = \"number\" === this.option(\"mode\");\r\n var validityState = this._input().get(0).validity;\r\n return isNumberMode && validityState && validityState.badInput\r\n },\r\n _renderDisplayText: function(text) {\r\n if (this._inputIsInvalid()) {\r\n return\r\n }\r\n this.callBase(text)\r\n },\r\n _isValueIncomplete: function(value) {\r\n var incompleteRegex = /(^-$)|(^-?\\d*\\.$)|(\\d+e-?$)/i;\r\n return incompleteRegex.test(value)\r\n },\r\n _isValueInRange: function(value) {\r\n return (0, _math.inRange)(value, this.option(\"min\"), this.option(\"max\"))\r\n },\r\n _isNumber: function(value) {\r\n return null !== this._parseValue(value)\r\n },\r\n _validateValue: function(value) {\r\n var inputValue = this._normalizeText();\r\n var isValueValid = this._isValueValid();\r\n var isValid = true;\r\n var isNumber = this._isNumber(inputValue);\r\n if (isNaN(Number(value))) {\r\n isValid = false\r\n }\r\n if (!value && isValueValid) {\r\n isValid = true\r\n } else {\r\n if (!isNumber && !isValueValid) {\r\n isValid = false\r\n }\r\n }\r\n this.option({\r\n isValid: isValid,\r\n validationError: isValid ? null : {\r\n editorSpecific: true,\r\n message: this.option(\"invalidValueMessage\")\r\n }\r\n });\r\n return isValid\r\n },\r\n _normalizeInputValue: function() {\r\n return this._parseValue(this._normalizeText())\r\n },\r\n _normalizeText: function() {\r\n var value = this._input().val().trim();\r\n return this._replaceCommaWithPoint(value)\r\n },\r\n _parseValue: function(value) {\r\n var number = parseFloat(value);\r\n if (isNaN(number)) {\r\n return null\r\n }\r\n return (0, _math.fitIntoRange)(number, this.option(\"min\"), this.option(\"max\"))\r\n },\r\n _clearValue: function() {\r\n if (this._inputIsInvalid()) {\r\n this._input().val(\"\");\r\n this._validateValue()\r\n }\r\n this.callBase()\r\n },\r\n reset: function() {\r\n if (null === this.option(\"value\")) {\r\n this.option(\"text\", \"\");\r\n this._renderValue()\r\n } else {\r\n this.option(\"value\", null)\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"value\":\r\n this._validateValue(args.value);\r\n this._setSubmitValue(args.value);\r\n this.callBase(args);\r\n this._resumeValueChangeAction();\r\n break;\r\n case \"step\":\r\n this._renderProps();\r\n break;\r\n case \"min\":\r\n case \"max\":\r\n this._renderProps();\r\n this.option(\"value\", this._parseValue(this.option(\"value\")));\r\n break;\r\n case \"showSpinButtons\":\r\n case \"useLargeSpinButtons\":\r\n this._updateButtons([\"spins\"]);\r\n break;\r\n case \"invalidValueMessage\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nvar _default = NumberBoxBase;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/number_box/number_box.spins.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _button = _interopRequireDefault(require(\"../text_box/texteditor_button_collection/button\"));\r\nvar _number_box = _interopRequireDefault(require(\"./number_box.spin\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _extend = require(\"../../core/utils/extend\");\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 _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 SPIN_CLASS = \"dx-numberbox-spin\";\r\nvar SPIN_CONTAINER_CLASS = \"dx-numberbox-spin-container\";\r\nvar SPIN_TOUCH_FRIENDLY_CLASS = \"dx-numberbox-spin-touch-friendly\";\r\nvar SpinButtons = function(_TextEditorButton) {\r\n _inheritsLoose(SpinButtons, _TextEditorButton);\r\n\r\n function SpinButtons() {\r\n return _TextEditorButton.apply(this, arguments) || this\r\n }\r\n var _proto = SpinButtons.prototype;\r\n _proto._attachEvents = function(instance, $spinContainer) {\r\n var editor = this.editor;\r\n var eventName = (0, _index.addNamespace)(_pointer.default.down, editor.NAME);\r\n var $spinContainerChildren = $spinContainer.children();\r\n var pointerDownAction = editor._createAction(function(e) {\r\n return editor._spinButtonsPointerDownHandler(e)\r\n });\r\n _events_engine.default.off($spinContainer, eventName);\r\n _events_engine.default.on($spinContainer, eventName, function(e) {\r\n return pointerDownAction({\r\n event: e\r\n })\r\n });\r\n _number_box.default.getInstance($spinContainerChildren.eq(0)).option(\"onChange\", function(e) {\r\n return editor._spinUpChangeHandler(e)\r\n });\r\n _number_box.default.getInstance($spinContainerChildren.eq(1)).option(\"onChange\", function(e) {\r\n return editor._spinDownChangeHandler(e)\r\n })\r\n };\r\n _proto._create = function() {\r\n var editor = this.editor;\r\n var $spinContainer = (0, _renderer.default)(\"
\").addClass(SPIN_CONTAINER_CLASS);\r\n var $spinUp = (0, _renderer.default)(\"
\").appendTo($spinContainer);\r\n var $spinDown = (0, _renderer.default)(\"
\").appendTo($spinContainer);\r\n var options = this._getOptions();\r\n this._addToContainer($spinContainer);\r\n editor._createComponent($spinUp, _number_box.default, (0, _extend.extend)({\r\n direction: \"up\"\r\n }, options));\r\n editor._createComponent($spinDown, _number_box.default, (0, _extend.extend)({\r\n direction: \"down\"\r\n }, options));\r\n this._legacyRender(editor.$element(), this._isTouchFriendly(), options.visible);\r\n return {\r\n instance: $spinContainer,\r\n $element: $spinContainer\r\n }\r\n };\r\n _proto._getOptions = function() {\r\n var editor = this.editor;\r\n var visible = this._isVisible();\r\n var disabled = editor.option(\"disabled\");\r\n return {\r\n visible: visible,\r\n disabled: disabled\r\n }\r\n };\r\n _proto._isVisible = function() {\r\n var editor = this.editor;\r\n return _TextEditorButton.prototype._isVisible.call(this) && editor.option(\"showSpinButtons\")\r\n };\r\n _proto._isTouchFriendly = function() {\r\n var editor = this.editor;\r\n return editor.option(\"showSpinButtons\") && editor.option(\"useLargeSpinButtons\")\r\n };\r\n _proto._legacyRender = function($editor, isTouchFriendly, isVisible) {\r\n $editor.toggleClass(SPIN_TOUCH_FRIENDLY_CLASS, isTouchFriendly);\r\n $editor.toggleClass(SPIN_CLASS, isVisible)\r\n };\r\n _proto.update = function() {\r\n var shouldUpdate = _TextEditorButton.prototype.update.call(this);\r\n if (shouldUpdate) {\r\n var editor = this.editor,\r\n instance = this.instance;\r\n var $editor = editor.$element();\r\n var isVisible = this._isVisible();\r\n var isTouchFriendly = this._isTouchFriendly();\r\n var $spinButtons = instance.children();\r\n var spinUp = _number_box.default.getInstance($spinButtons.eq(0));\r\n var spinDown = _number_box.default.getInstance($spinButtons.eq(1));\r\n var options = this._getOptions();\r\n spinUp.option(options);\r\n spinDown.option(options);\r\n this._legacyRender($editor, isTouchFriendly, isVisible)\r\n }\r\n };\r\n return SpinButtons\r\n}(_button.default);\r\nexports.default = SpinButtons;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/number_box/number_box.spin.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _emitter = require(\"../../events/core/emitter.feedback\");\r\nvar _hold = _interopRequireDefault(require(\"../../events/hold\"));\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 SPIN_CLASS = \"dx-numberbox-spin\";\r\nvar SPIN_BUTTON_CLASS = \"dx-numberbox-spin-button\";\r\nvar SPIN_HOLD_DELAY = 100;\r\nvar NUMBER_BOX = \"dxNumberBox\";\r\nvar POINTERUP_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.up, NUMBER_BOX);\r\nvar POINTERCANCEL_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.cancel, NUMBER_BOX);\r\nvar SpinButton = _ui.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n direction: \"up\",\r\n onChange: null,\r\n activeStateEnabled: true,\r\n hoverStateEnabled: true\r\n })\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n var direction = SPIN_CLASS + \"-\" + this.option(\"direction\");\r\n this.$element().addClass(SPIN_BUTTON_CLASS).addClass(direction);\r\n this._spinIcon = (0, _renderer.default)(\"
\").addClass(direction + \"-icon\").appendTo(this.$element())\r\n },\r\n _render: function() {\r\n this.callBase();\r\n var eventName = (0, _index.addNamespace)(_pointer.default.down, this.NAME);\r\n var $element = this.$element();\r\n _events_engine.default.off($element, eventName);\r\n _events_engine.default.on($element, eventName, this._spinDownHandler.bind(this));\r\n this._spinChangeHandler = this._createActionByOption(\"onChange\")\r\n },\r\n _spinDownHandler: function(e) {\r\n e.preventDefault();\r\n this._clearTimer();\r\n _events_engine.default.on(this.$element(), _hold.default.name, function() {\r\n this._feedBackDeferred = new _deferred.Deferred;\r\n (0, _emitter.lock)(this._feedBackDeferred);\r\n this._spinChangeHandler({\r\n event: e\r\n });\r\n this._holdTimer = setInterval(this._spinChangeHandler, SPIN_HOLD_DELAY, {\r\n event: e\r\n })\r\n }.bind(this));\r\n var document = _dom_adapter.default.getDocument();\r\n _events_engine.default.on(document, POINTERUP_EVENT_NAME, this._clearTimer.bind(this));\r\n _events_engine.default.on(document, POINTERCANCEL_EVENT_NAME, this._clearTimer.bind(this));\r\n this._spinChangeHandler({\r\n event: e\r\n })\r\n },\r\n _dispose: function() {\r\n this._clearTimer();\r\n this.callBase()\r\n },\r\n _clearTimer: function() {\r\n _events_engine.default.off(this.$element(), _hold.default.name);\r\n var document = _dom_adapter.default.getDocument();\r\n _events_engine.default.off(document, POINTERUP_EVENT_NAME);\r\n _events_engine.default.off(document, POINTERCANCEL_EVENT_NAME);\r\n if (this._feedBackDeferred) {\r\n this._feedBackDeferred.resolve()\r\n }\r\n if (this._holdTimer) {\r\n clearInterval(this._holdTimer)\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"onChange\":\r\n case \"direction\":\r\n this._invalidate();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nvar _default = SpinButton;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.search.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _uiList = _interopRequireDefault(require(\"./ui.list.edit\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.search_box_mixin\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar ListSearch = _uiList.default.inherit(_ui.default).inherit({\r\n _addWidgetPrefix: function(className) {\r\n return \"dx-list-\" + className\r\n },\r\n _getCombinedFilter: function() {\r\n var filter;\r\n var storeLoadOptions;\r\n var dataSource = this._dataSource;\r\n if (dataSource) {\r\n storeLoadOptions = {\r\n filter: dataSource.filter()\r\n };\r\n dataSource._addSearchFilter(storeLoadOptions);\r\n filter = storeLoadOptions.filter\r\n }\r\n return filter\r\n },\r\n _initDataSource: function() {\r\n var value = this.option(\"searchValue\");\r\n var expr = this.option(\"searchExpr\");\r\n var mode = this.option(\"searchMode\");\r\n this.callBase();\r\n if (this._dataSource) {\r\n value && value.length && this._dataSource.searchValue(value);\r\n mode.length && this._dataSource.searchOperation(_ui.default.getOperationBySearchMode(mode));\r\n expr && this._dataSource.searchExpr(expr)\r\n }\r\n }\r\n});\r\nvar _default = ListSearch;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.strategy.grouped.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _iterator = require(\"../../core/utils/iterator\");\r\nvar _store_helper = _interopRequireDefault(require(\"../../data/store_helper\"));\r\nvar _query = _interopRequireDefault(require(\"../../data/query\"));\r\nvar _uiCollection_widgetEditStrategy = _interopRequireDefault(require(\"../collection/ui.collection_widget.edit.strategy.plain\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar LIST_ITEM_CLASS = \"dx-list-item\";\r\nvar LIST_GROUP_CLASS = \"dx-list-group\";\r\nvar SELECTION_SHIFT = 20;\r\nvar SELECTION_MASK = 2303;\r\nvar combineIndex = function(indices) {\r\n return (indices.group << SELECTION_SHIFT) + indices.item\r\n};\r\nvar splitIndex = function(combinedIndex) {\r\n return {\r\n group: combinedIndex >> SELECTION_SHIFT,\r\n item: combinedIndex & SELECTION_MASK\r\n }\r\n};\r\nvar GroupedEditStrategy = _uiCollection_widgetEditStrategy.default.inherit({\r\n _groupElements: function() {\r\n return this._collectionWidget._itemContainer().find(\".\" + LIST_GROUP_CLASS)\r\n },\r\n _groupItemElements: function($group) {\r\n return $group.find(\".\" + LIST_ITEM_CLASS)\r\n },\r\n getIndexByItemData: function(itemData) {\r\n var groups = this._collectionWidget.option(\"items\");\r\n var index = false;\r\n if (!itemData) {\r\n return false\r\n }\r\n if (itemData.items && itemData.items.length) {\r\n itemData = itemData.items[0]\r\n }(0, _iterator.each)(groups, function(groupIndex, group) {\r\n if (!group.items) {\r\n return false\r\n }(0, _iterator.each)(group.items, function(itemIndex, item) {\r\n if (item !== itemData) {\r\n return true\r\n }\r\n index = {\r\n group: groupIndex,\r\n item: itemIndex\r\n };\r\n return false\r\n });\r\n if (index) {\r\n return false\r\n }\r\n });\r\n return index\r\n },\r\n getItemDataByIndex: function(index) {\r\n var items = this._collectionWidget.option(\"items\");\r\n if ((0, _type.isNumeric)(index)) {\r\n return this.itemsGetter()[index]\r\n }\r\n return index && items[index.group] && items[index.group].items[index.item] || null\r\n },\r\n itemsGetter: function() {\r\n var resultItems = [];\r\n var items = this._collectionWidget.option(\"items\");\r\n for (var i = 0; i < items.length; i++) {\r\n if (items[i] && items[i].items) {\r\n resultItems = resultItems.concat(items[i].items)\r\n } else {\r\n resultItems.push(items[i])\r\n }\r\n }\r\n return resultItems\r\n },\r\n deleteItemAtIndex: function(index) {\r\n var indices = splitIndex(index);\r\n var itemGroup = this._collectionWidget.option(\"items\")[indices.group].items;\r\n itemGroup.splice(indices.item, 1)\r\n },\r\n getKeysByItems: function(items) {\r\n var plainItems = [];\r\n var i;\r\n for (i = 0; i < items.length; i++) {\r\n if (items[i] && items[i].items) {\r\n plainItems = plainItems.concat(items[i].items)\r\n } else {\r\n plainItems.push(items[i])\r\n }\r\n }\r\n var result = [];\r\n for (i = 0; i < plainItems.length; i++) {\r\n result.push(this._collectionWidget.keyOf(plainItems[i]))\r\n }\r\n return result\r\n },\r\n getIndexByKey: function(key, items) {\r\n var groups = items || this._collectionWidget.option(\"items\");\r\n var index = -1;\r\n var that = this;\r\n (0, _iterator.each)(groups, function(groupIndex, group) {\r\n if (!group.items) {\r\n return\r\n }\r\n var keys = that.getKeysByItems(group.items);\r\n (0, _iterator.each)(keys, function(keyIndex, itemKey) {\r\n if (that._equalKeys(itemKey, key)) {\r\n index = {\r\n group: groupIndex,\r\n item: keyIndex\r\n };\r\n return false\r\n }\r\n });\r\n if (index !== -1) {\r\n return false\r\n }\r\n });\r\n return index\r\n },\r\n _getGroups: function(items) {\r\n var dataSource = this._collectionWidget.getDataSource();\r\n var group = dataSource && dataSource.group();\r\n if (group) {\r\n return _store_helper.default.queryByOptions((0, _query.default)(items), {\r\n group: group\r\n }).toArray()\r\n }\r\n return this._collectionWidget.option(\"items\")\r\n },\r\n getItemsByKeys: function(keys, items) {\r\n var result = [];\r\n (0, _iterator.each)(keys, function(_, key) {\r\n var getItemMeta = function(groups) {\r\n var index = this.getIndexByKey(key, groups);\r\n var group = index && groups[index.group];\r\n if (!group) {\r\n return\r\n }\r\n return {\r\n groupKey: group.key,\r\n item: group.items[index.item]\r\n }\r\n }.bind(this);\r\n var itemMeta = getItemMeta(this._getGroups(items));\r\n if (!itemMeta) {\r\n return\r\n }\r\n var groupKey = itemMeta.groupKey;\r\n var item = itemMeta.item;\r\n var selectedGroup;\r\n (0, _iterator.each)(result, function(_, item) {\r\n if (item.key === groupKey) {\r\n selectedGroup = item;\r\n return false\r\n }\r\n });\r\n if (!selectedGroup) {\r\n selectedGroup = {\r\n key: groupKey,\r\n items: []\r\n };\r\n result.push(selectedGroup)\r\n }\r\n selectedGroup.items.push(item)\r\n }.bind(this));\r\n return result\r\n },\r\n moveItemAtIndexToIndex: function(movingIndex, destinationIndex) {\r\n var items = this._collectionWidget.option(\"items\");\r\n var movingIndices = splitIndex(movingIndex);\r\n var destinationIndices = splitIndex(destinationIndex);\r\n var movingItemGroup = items[movingIndices.group].items;\r\n var destinationItemGroup = items[destinationIndices.group].items;\r\n var movedItemData = movingItemGroup[movingIndices.item];\r\n movingItemGroup.splice(movingIndices.item, 1);\r\n destinationItemGroup.splice(destinationIndices.item, 0, movedItemData)\r\n },\r\n _isItemIndex: function(index) {\r\n return index && (0, _type.isNumeric)(index.group) && (0, _type.isNumeric)(index.item)\r\n },\r\n _getNormalizedItemIndex: function(itemElement) {\r\n var $item = (0, _renderer.default)(itemElement);\r\n var $group = $item.closest(\".\" + LIST_GROUP_CLASS);\r\n if (!$group.length) {\r\n return -1\r\n }\r\n return combineIndex({\r\n group: this._groupElements().index($group),\r\n item: this._groupItemElements($group).index($item)\r\n })\r\n },\r\n _normalizeItemIndex: function(index) {\r\n return combineIndex(index)\r\n },\r\n _denormalizeItemIndex: function(index) {\r\n return splitIndex(index)\r\n },\r\n _getItemByNormalizedIndex: function(index) {\r\n var indices = splitIndex(index);\r\n var $group = this._groupElements().eq(indices.group);\r\n return this._groupItemElements($group).eq(indices.item)\r\n },\r\n _itemsFromSameParent: function(firstIndex, secondIndex) {\r\n return splitIndex(firstIndex).group === splitIndex(secondIndex).group\r\n }\r\n});\r\nvar _default = GroupedEditStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.provider.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _common = require(\"../../core/utils/common\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _uiListEdit = require(\"./ui.list.edit.decorator_registry\");\r\nrequire(\"./ui.list.edit.decorator.static\");\r\nrequire(\"./ui.list.edit.decorator.switchable.button\");\r\nrequire(\"./ui.list.edit.decorator.switchable.slide\");\r\nrequire(\"./ui.list.edit.decorator.swipe\");\r\nrequire(\"./ui.list.edit.decorator.context\");\r\nrequire(\"./ui.list.edit.decorator.selection\");\r\nrequire(\"./ui.list.edit.decorator.reorder\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar editOptionsRegistry = [];\r\nvar registerOption = function(enabledFunc, decoratorTypeFunc, decoratorSubTypeFunc) {\r\n editOptionsRegistry.push({\r\n enabled: enabledFunc,\r\n decoratorType: decoratorTypeFunc,\r\n decoratorSubType: decoratorSubTypeFunc\r\n })\r\n};\r\nregisterOption(function() {\r\n return this.option(\"menuItems\").length\r\n}, function() {\r\n return \"menu\"\r\n}, function() {\r\n return this.option(\"menuMode\")\r\n});\r\nregisterOption(function() {\r\n return !this.option(\"menuItems\").length && this.option(\"allowItemDeleting\")\r\n}, function() {\r\n var mode = this.option(\"itemDeleteMode\");\r\n return \"toggle\" === mode || \"slideButton\" === mode || \"swipe\" === mode || \"static\" === mode ? \"delete\" : \"menu\"\r\n}, function() {\r\n var mode = this.option(\"itemDeleteMode\");\r\n if (\"slideItem\" === mode) {\r\n mode = \"slide\"\r\n }\r\n if (\"hold\" === mode) {\r\n mode = \"context\"\r\n }\r\n return mode\r\n});\r\nregisterOption(function() {\r\n return \"none\" !== this.option(\"selectionMode\") && this.option(\"showSelectionControls\")\r\n}, function() {\r\n return \"selection\"\r\n}, function() {\r\n return \"default\"\r\n});\r\nregisterOption(function() {\r\n return this.option(\"itemDragging.allowReordering\") || this.option(\"itemDragging.allowDropInsideItem\") || this.option(\"itemDragging.group\")\r\n}, function() {\r\n return \"reorder\"\r\n}, function() {\r\n return \"default\"\r\n});\r\nvar LIST_ITEM_BEFORE_BAG_CLASS = \"dx-list-item-before-bag\";\r\nvar LIST_ITEM_AFTER_BAG_CLASS = \"dx-list-item-after-bag\";\r\nvar DECORATOR_BEFORE_BAG_CREATE_METHOD = \"beforeBag\";\r\nvar DECORATOR_AFTER_BAG_CREATE_METHOD = \"afterBag\";\r\nvar DECORATOR_MODIFY_ELEMENT_METHOD = \"modifyElement\";\r\nvar DECORATOR_AFTER_RENDER_METHOD = \"afterRender\";\r\nvar DECORATOR_GET_EXCLUDED_SELECTORS_METHOD = \"getExcludedSelectors\";\r\nvar EditProvider = _class.default.inherit({\r\n ctor: function(list) {\r\n this._list = list;\r\n this._fetchRequiredDecorators()\r\n },\r\n dispose: function() {\r\n if (this._decorators && this._decorators.length) {\r\n (0, _iterator.each)(this._decorators, function(_, decorator) {\r\n decorator.dispose()\r\n })\r\n }\r\n },\r\n _fetchRequiredDecorators: function() {\r\n this._decorators = [];\r\n (0, _iterator.each)(editOptionsRegistry, function(_, option) {\r\n var optionEnabled = option.enabled.call(this._list);\r\n if (optionEnabled) {\r\n var decoratorType = option.decoratorType.call(this._list);\r\n var decoratorSubType = option.decoratorSubType.call(this._list);\r\n var decorator = this._createDecorator(decoratorType, decoratorSubType);\r\n this._decorators.push(decorator)\r\n }\r\n }.bind(this))\r\n },\r\n _createDecorator: function(type, subType) {\r\n var decoratorClass = this._findDecorator(type, subType);\r\n return new decoratorClass(this._list)\r\n },\r\n _findDecorator: function(type, subType) {\r\n var foundDecorator = _uiListEdit.registry[type][subType];\r\n if (!foundDecorator) {\r\n throw _ui.default.Error(\"E1012\", type, subType)\r\n }\r\n return foundDecorator\r\n },\r\n modifyItemElement: function(args) {\r\n var $itemElement = (0, _renderer.default)(args.itemElement);\r\n var config = {\r\n $itemElement: $itemElement\r\n };\r\n this._prependBeforeBags($itemElement, config);\r\n this._appendAfterBags($itemElement, config);\r\n this._applyDecorators(DECORATOR_MODIFY_ELEMENT_METHOD, config)\r\n },\r\n afterItemsRendered: function() {\r\n this._applyDecorators(DECORATOR_AFTER_RENDER_METHOD)\r\n },\r\n _prependBeforeBags: function($itemElement, config) {\r\n var $beforeBags = this._collectDecoratorsMarkup(DECORATOR_BEFORE_BAG_CREATE_METHOD, config, LIST_ITEM_BEFORE_BAG_CLASS);\r\n $itemElement.prepend($beforeBags)\r\n },\r\n _appendAfterBags: function($itemElement, config) {\r\n var $afterBags = this._collectDecoratorsMarkup(DECORATOR_AFTER_BAG_CREATE_METHOD, config, LIST_ITEM_AFTER_BAG_CLASS);\r\n $itemElement.append($afterBags)\r\n },\r\n _collectDecoratorsMarkup: function(method, config, containerClass) {\r\n var $collector = (0, _renderer.default)(\"
\");\r\n (0, _iterator.each)(this._decorators, function() {\r\n var $container = (0, _renderer.default)(\"
\").addClass(containerClass);\r\n this[method]((0, _extend.extend)({\r\n $container: $container\r\n }, config));\r\n if ($container.children().length) {\r\n $collector.append($container)\r\n }\r\n });\r\n return $collector.children()\r\n },\r\n _applyDecorators: function(method, config) {\r\n (0, _iterator.each)(this._decorators, function() {\r\n this[method](config)\r\n })\r\n },\r\n _handlerExists: function(name) {\r\n if (!this._decorators) {\r\n return false\r\n }\r\n var decorators = this._decorators;\r\n var length = decorators.length;\r\n for (var i = 0; i < length; i++) {\r\n if (decorators[i][name] !== _common.noop) {\r\n return true\r\n }\r\n }\r\n return false\r\n },\r\n _eventHandler: function(name, $itemElement, e) {\r\n if (!this._decorators) {\r\n return false\r\n }\r\n var response = false;\r\n var decorators = this._decorators;\r\n var length = decorators.length;\r\n for (var i = 0; i < length; i++) {\r\n response = decorators[i][name]($itemElement, e);\r\n if (response) {\r\n break\r\n }\r\n }\r\n return response\r\n },\r\n handleClick: function($itemElement, e) {\r\n return this._eventHandler(\"handleClick\", $itemElement, e)\r\n },\r\n handleKeyboardEvents: function(currentFocusedIndex, moveFocusUp) {\r\n return this._eventHandler(\"handleKeyboardEvents\", currentFocusedIndex, moveFocusUp)\r\n },\r\n handleEnterPressing: function(e) {\r\n return this._eventHandler(\"handleEnterPressing\", e)\r\n },\r\n contextMenuHandlerExists: function() {\r\n return this._handlerExists(\"handleContextMenu\")\r\n },\r\n handleContextMenu: function($itemElement, e) {\r\n return this._eventHandler(\"handleContextMenu\", $itemElement, e)\r\n },\r\n getExcludedItemSelectors: function() {\r\n var excludedSelectors = [];\r\n this._applyDecorators(DECORATOR_GET_EXCLUDED_SELECTORS_METHOD, excludedSelectors);\r\n return excludedSelectors.join(\",\")\r\n }\r\n});\r\nvar _default = EditProvider;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.decorator.static.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\nvar _uiListEdit = require(\"./ui.list.edit.decorator_registry\");\r\nvar _uiListEdit2 = _interopRequireDefault(require(\"./ui.list.edit.decorator\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar STATIC_DELETE_BUTTON_CONTAINER_CLASS = \"dx-list-static-delete-button-container\";\r\nvar STATIC_DELETE_BUTTON_CLASS = \"dx-list-static-delete-button\";\r\n(0, _uiListEdit.register)(\"delete\", \"static\", _uiListEdit2.default.inherit({\r\n afterBag: function(config) {\r\n var $itemElement = config.$itemElement;\r\n var $container = config.$container;\r\n var $button = (0, _renderer.default)(\"
\").addClass(STATIC_DELETE_BUTTON_CLASS);\r\n this._list._createComponent($button, _button.default, {\r\n icon: \"remove\",\r\n onClick: function(args) {\r\n args.event.stopPropagation();\r\n this._deleteItem($itemElement)\r\n }.bind(this),\r\n integrationOptions: {}\r\n });\r\n $container.addClass(STATIC_DELETE_BUTTON_CONTAINER_CLASS).append($button)\r\n },\r\n _deleteItem: function($itemElement) {\r\n if ($itemElement.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n return\r\n }\r\n this._list.deleteItem($itemElement)\r\n }\r\n}));\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.decorator.switchable.button.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _fx = _interopRequireDefault(require(\"../../animation/fx\"));\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _uiListEdit = require(\"./ui.list.edit.decorator_registry\");\r\nvar _uiListEditDecorator = _interopRequireDefault(require(\"./ui.list.edit.decorator.switchable\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar SWITCHABLE_DELETE_BUTTON_CONTAINER_CLASS = \"dx-list-switchable-delete-button-container\";\r\nvar SWITCHABLE_DELETE_BUTTON_WRAPPER_CLASS = \"dx-list-switchable-delete-button-wrapper\";\r\nvar SWITCHABLE_DELETE_BUTTON_INNER_WRAPPER_CLASS = \"dx-list-switchable-delete-button-inner-wrapper\";\r\nvar SWITCHABLE_DELETE_BUTTON_CLASS = \"dx-list-switchable-delete-button\";\r\nvar SWITCHABLE_DELETE_BUTTON_ANIMATION_DURATION = 200;\r\nvar SwitchableButtonEditDecorator = _uiListEditDecorator.default.inherit({\r\n _init: function() {\r\n this.callBase.apply(this, arguments);\r\n var $buttonContainer = (0, _renderer.default)(\"
\").addClass(SWITCHABLE_DELETE_BUTTON_CONTAINER_CLASS);\r\n var $buttonWrapper = (0, _renderer.default)(\"
\").addClass(SWITCHABLE_DELETE_BUTTON_WRAPPER_CLASS);\r\n var $buttonInnerWrapper = (0, _renderer.default)(\"
\").addClass(SWITCHABLE_DELETE_BUTTON_INNER_WRAPPER_CLASS);\r\n var $button = (0, _renderer.default)(\"
\").addClass(SWITCHABLE_DELETE_BUTTON_CLASS);\r\n this._list._createComponent($button, _button.default, {\r\n text: _message.default.format(\"dxListEditDecorator-delete\"),\r\n type: \"danger\",\r\n onClick: function(e) {\r\n this._deleteItem();\r\n e.event.stopPropagation()\r\n }.bind(this),\r\n integrationOptions: {}\r\n });\r\n $buttonContainer.append($buttonWrapper);\r\n $buttonWrapper.append($buttonInnerWrapper);\r\n $buttonInnerWrapper.append($button);\r\n this._$buttonContainer = $buttonContainer\r\n },\r\n _enablePositioning: function($itemElement) {\r\n this.callBase.apply(this, arguments);\r\n _fx.default.stop(this._$buttonContainer, true);\r\n this._$buttonContainer.appendTo($itemElement)\r\n },\r\n _disablePositioning: function() {\r\n this.callBase.apply(this, arguments);\r\n this._$buttonContainer.detach()\r\n },\r\n _animatePrepareDeleteReady: function() {\r\n var rtl = this._isRtlEnabled();\r\n var listWidth = this._list.$element().width();\r\n var buttonWidth = this._buttonWidth();\r\n var fromValue = rtl ? listWidth : -buttonWidth;\r\n var toValue = rtl ? listWidth - buttonWidth : 0;\r\n return _fx.default.animate(this._$buttonContainer, {\r\n type: \"custom\",\r\n duration: SWITCHABLE_DELETE_BUTTON_ANIMATION_DURATION,\r\n from: {\r\n right: fromValue\r\n },\r\n to: {\r\n right: toValue\r\n }\r\n })\r\n },\r\n _animateForgetDeleteReady: function() {\r\n var rtl = this._isRtlEnabled();\r\n var listWidth = this._list.$element().width();\r\n var buttonWidth = this._buttonWidth();\r\n var fromValue = rtl ? listWidth - buttonWidth : 0;\r\n var toValue = rtl ? listWidth : -buttonWidth;\r\n return _fx.default.animate(this._$buttonContainer, {\r\n type: \"custom\",\r\n duration: SWITCHABLE_DELETE_BUTTON_ANIMATION_DURATION,\r\n from: {\r\n right: fromValue\r\n },\r\n to: {\r\n right: toValue\r\n }\r\n })\r\n },\r\n _buttonWidth: function() {\r\n if (!this._buttonContainerWidth) {\r\n this._buttonContainerWidth = this._$buttonContainer.outerWidth()\r\n }\r\n return this._buttonContainerWidth\r\n },\r\n dispose: function() {\r\n if (this._$buttonContainer) {\r\n this._$buttonContainer.remove()\r\n }\r\n this.callBase.apply(this, arguments)\r\n }\r\n});\r\nvar TOGGLE_DELETE_SWITCH_CONTAINER_CLASS = \"dx-list-toggle-delete-switch-container\";\r\nvar TOGGLE_DELETE_SWITCH_CLASS = \"dx-list-toggle-delete-switch\";\r\n(0, _uiListEdit.register)(\"delete\", \"toggle\", SwitchableButtonEditDecorator.inherit({\r\n beforeBag: function(config) {\r\n var $itemElement = config.$itemElement;\r\n var $container = config.$container;\r\n var $toggle = (0, _renderer.default)(\"
\").addClass(TOGGLE_DELETE_SWITCH_CLASS);\r\n this._list._createComponent($toggle, _button.default, {\r\n icon: \"toggle-delete\",\r\n onClick: function(e) {\r\n _fx.default.stop(this._$buttonContainer, false);\r\n this._toggleDeleteReady($itemElement);\r\n e.event.stopPropagation()\r\n }.bind(this),\r\n integrationOptions: {}\r\n });\r\n $container.addClass(TOGGLE_DELETE_SWITCH_CONTAINER_CLASS);\r\n $container.append($toggle)\r\n }\r\n}));\r\n(0, _uiListEdit.register)(\"delete\", \"slideButton\", SwitchableButtonEditDecorator.inherit({\r\n _shouldHandleSwipe: true,\r\n _swipeEndHandler: function($itemElement, args) {\r\n if (0 !== args.targetOffset) {\r\n _fx.default.stop(this._$buttonContainer, false);\r\n this._toggleDeleteReady($itemElement)\r\n }\r\n return true\r\n }\r\n}));\r\nvar _default = SwitchableButtonEditDecorator;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.decorator.switchable.slide.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _click = require(\"../../events/click\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _emitter = require(\"../../events/core/emitter.feedback\");\r\nvar _uiListEdit = _interopRequireDefault(require(\"./ui.list.edit.decorator_menu_helper\"));\r\nvar _uiListEdit2 = require(\"./ui.list.edit.decorator_registry\");\r\nvar _uiListEditDecorator = _interopRequireDefault(require(\"./ui.list.edit.decorator.switchable\"));\r\nvar _fx = _interopRequireDefault(require(\"../../animation/fx\"));\r\nvar _themes = require(\"../themes\");\r\nvar _action_sheet = _interopRequireDefault(require(\"../action_sheet\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar LIST_EDIT_DECORATOR = \"dxListEditDecorator\";\r\nvar CLICK_EVENT_NAME = (0, _index.addNamespace)(_click.name, LIST_EDIT_DECORATOR);\r\nvar ACTIVE_EVENT_NAME = (0, _index.addNamespace)(_emitter.active, LIST_EDIT_DECORATOR);\r\nvar SLIDE_MENU_CLASS = \"dx-list-slide-menu\";\r\nvar SLIDE_MENU_WRAPPER_CLASS = \"dx-list-slide-menu-wrapper\";\r\nvar SLIDE_MENU_CONTENT_CLASS = \"dx-list-slide-menu-content\";\r\nvar SLIDE_MENU_BUTTONS_CONTAINER_CLASS = \"dx-list-slide-menu-buttons-container\";\r\nvar SLIDE_MENU_BUTTONS_CLASS = \"dx-list-slide-menu-buttons\";\r\nvar SLIDE_MENU_BUTTON_CLASS = \"dx-list-slide-menu-button\";\r\nvar SLIDE_MENU_BUTTON_MENU_CLASS = \"dx-list-slide-menu-button-menu\";\r\nvar SLIDE_MENU_BUTTON_DELETE_CLASS = \"dx-list-slide-menu-button-delete\";\r\nvar SLIDE_MENU_ANIMATION_DURATION = 400;\r\nvar SLIDE_MENU_ANIMATION_EASING = \"cubic-bezier(0.075, 0.82, 0.165, 1)\";\r\n(0, _uiListEdit2.register)(\"menu\", \"slide\", _uiListEditDecorator.default.inherit({\r\n _shouldHandleSwipe: true,\r\n _init: function() {\r\n this.callBase.apply(this, arguments);\r\n this._$buttonsContainer = (0, _renderer.default)(\"
\").addClass(SLIDE_MENU_BUTTONS_CONTAINER_CLASS);\r\n _events_engine.default.on(this._$buttonsContainer, ACTIVE_EVENT_NAME, _common.noop);\r\n this._$buttons = (0, _renderer.default)(\"
\").addClass(SLIDE_MENU_BUTTONS_CLASS).appendTo(this._$buttonsContainer);\r\n this._renderMenu();\r\n this._renderDeleteButton()\r\n },\r\n _renderMenu: function() {\r\n if (!this._menuEnabled()) {\r\n return\r\n }\r\n var menuItems = this._menuItems();\r\n if (1 === menuItems.length) {\r\n var menuItem = menuItems[0];\r\n this._renderMenuButton(menuItem.text, function(e) {\r\n e.stopPropagation();\r\n this._fireAction(menuItem)\r\n }.bind(this))\r\n } else {\r\n var $menu = (0, _renderer.default)(\"
\").addClass(SLIDE_MENU_CLASS);\r\n this._menu = this._list._createComponent($menu, _action_sheet.default, {\r\n showTitle: false,\r\n items: menuItems,\r\n onItemClick: function(args) {\r\n this._fireAction(args.itemData)\r\n }.bind(this),\r\n integrationOptions: {}\r\n });\r\n $menu.appendTo(this._list.$element());\r\n var $menuButton = this._renderMenuButton(_message.default.format(\"dxListEditDecorator-more\"), function(e) {\r\n e.stopPropagation();\r\n this._menu.show()\r\n }.bind(this));\r\n this._menu.option(\"target\", $menuButton)\r\n }\r\n },\r\n _renderMenuButton: function(text, action) {\r\n var $menuButton = (0, _renderer.default)(\"
\").addClass(SLIDE_MENU_BUTTON_CLASS).addClass(SLIDE_MENU_BUTTON_MENU_CLASS).text(text);\r\n this._$buttons.append($menuButton);\r\n _events_engine.default.on($menuButton, CLICK_EVENT_NAME, action);\r\n return $menuButton\r\n },\r\n _renderDeleteButton: function() {\r\n if (!this._deleteEnabled()) {\r\n return\r\n }\r\n var $deleteButton = (0, _renderer.default)(\"
\").addClass(SLIDE_MENU_BUTTON_CLASS).addClass(SLIDE_MENU_BUTTON_DELETE_CLASS).text((0, _themes.isMaterial)() ? \"\" : _message.default.format(\"dxListEditDecorator-delete\"));\r\n _events_engine.default.on($deleteButton, CLICK_EVENT_NAME, function(e) {\r\n e.stopPropagation();\r\n this._deleteItem()\r\n }.bind(this));\r\n this._$buttons.append($deleteButton)\r\n },\r\n _fireAction: function(menuItem) {\r\n this._fireMenuAction((0, _renderer.default)(this._cachedNode), menuItem.action);\r\n this._cancelDeleteReadyItem()\r\n },\r\n modifyElement: function(config) {\r\n this.callBase.apply(this, arguments);\r\n var $itemElement = config.$itemElement;\r\n $itemElement.addClass(SLIDE_MENU_WRAPPER_CLASS);\r\n var $slideMenuContent = (0, _renderer.default)(\"
\").addClass(SLIDE_MENU_CONTENT_CLASS);\r\n $itemElement.wrapInner($slideMenuContent)\r\n },\r\n _getDeleteButtonContainer: function() {\r\n return this._$buttonsContainer\r\n },\r\n handleClick: function(_, e) {\r\n if ((0, _renderer.default)(e.target).closest(\".\" + SLIDE_MENU_CONTENT_CLASS).length) {\r\n return this.callBase.apply(this, arguments)\r\n }\r\n return false\r\n },\r\n _swipeStartHandler: function($itemElement) {\r\n this._enablePositioning($itemElement);\r\n this._cacheItemData($itemElement);\r\n this._setPositions(this._getPositions(0))\r\n },\r\n _swipeUpdateHandler: function($itemElement, args) {\r\n var rtl = this._isRtlEnabled();\r\n var signCorrection = rtl ? -1 : 1;\r\n var isItemReadyToDelete = this._isReadyToDelete($itemElement);\r\n var moveJustStarted = this._getCurrentPositions().content === this._getStartPositions().content;\r\n if (moveJustStarted && !isItemReadyToDelete && args.offset * signCorrection > 0) {\r\n args.cancel = true;\r\n return\r\n }\r\n var offset = this._cachedItemWidth * args.offset;\r\n var startOffset = isItemReadyToDelete ? -this._cachedButtonWidth * signCorrection : 0;\r\n var correctedOffset = (offset + startOffset) * signCorrection;\r\n var percent = correctedOffset < 0 ? Math.abs((offset + startOffset) / this._cachedButtonWidth) : 0;\r\n this._setPositions(this._getPositions(percent));\r\n return true\r\n },\r\n _getStartPositions: function() {\r\n var rtl = this._isRtlEnabled();\r\n var signCorrection = rtl ? -1 : 1;\r\n return {\r\n content: 0,\r\n buttonsContainer: rtl ? -this._cachedButtonWidth : this._cachedItemWidth,\r\n buttons: -this._cachedButtonWidth * signCorrection\r\n }\r\n },\r\n _getPositions: function(percent) {\r\n var rtl = this._isRtlEnabled();\r\n var signCorrection = rtl ? -1 : 1;\r\n var startPositions = this._getStartPositions();\r\n return {\r\n content: startPositions.content - percent * this._cachedButtonWidth * signCorrection,\r\n buttonsContainer: startPositions.buttonsContainer - Math.min(percent, 1) * this._cachedButtonWidth * signCorrection,\r\n buttons: startPositions.buttons + Math.min(percent, 1) * this._cachedButtonWidth * signCorrection\r\n }\r\n },\r\n _getCurrentPositions: function() {\r\n return {\r\n content: (0, _translator.locate)(this._$cachedContent).left,\r\n buttonsContainer: (0, _translator.locate)(this._$buttonsContainer).left,\r\n buttons: (0, _translator.locate)(this._$buttons).left\r\n }\r\n },\r\n _setPositions: function(positions) {\r\n (0, _translator.move)(this._$cachedContent, {\r\n left: positions.content\r\n });\r\n (0, _translator.move)(this._$buttonsContainer, {\r\n left: positions.buttonsContainer\r\n });\r\n (0, _translator.move)(this._$buttons, {\r\n left: positions.buttons\r\n })\r\n },\r\n _cacheItemData: function($itemElement) {\r\n if ($itemElement[0] === this._cachedNode) {\r\n return\r\n }\r\n this._$cachedContent = $itemElement.find(\".\" + SLIDE_MENU_CONTENT_CLASS);\r\n this._cachedItemWidth = $itemElement.outerWidth();\r\n this._cachedButtonWidth = this._cachedButtonWidth || this._$buttons.outerWidth();\r\n this._$buttonsContainer.width(this._cachedButtonWidth);\r\n if (this._$cachedContent.length) {\r\n this._cachedNode = $itemElement[0]\r\n }\r\n },\r\n _minButtonContainerLeftOffset: function() {\r\n return this._cachedItemWidth - this._cachedButtonWidth\r\n },\r\n _swipeEndHandler: function($itemElement, args) {\r\n this._cacheItemData($itemElement);\r\n var signCorrection = this._isRtlEnabled() ? 1 : -1;\r\n var offset = this._cachedItemWidth * args.offset;\r\n var endedAtReadyToDelete = !this._isReadyToDelete($itemElement) && offset * signCorrection > .2 * this._cachedButtonWidth;\r\n var readyToDelete = args.targetOffset === signCorrection && endedAtReadyToDelete;\r\n this._toggleDeleteReady($itemElement, readyToDelete);\r\n return true\r\n },\r\n _enablePositioning: function($itemElement) {\r\n _fx.default.stop(this._$cachedContent, true);\r\n this.callBase.apply(this, arguments);\r\n this._$buttonsContainer.appendTo($itemElement)\r\n },\r\n _disablePositioning: function() {\r\n this.callBase.apply(this, arguments);\r\n this._$buttonsContainer.detach()\r\n },\r\n _animatePrepareDeleteReady: function() {\r\n return this._animateToPositions(this._getPositions(1))\r\n },\r\n _animateForgetDeleteReady: function($itemElement) {\r\n this._cacheItemData($itemElement);\r\n return this._animateToPositions(this._getPositions(0))\r\n },\r\n _animateToPositions: function(positions) {\r\n var that = this;\r\n var currentPosition = this._getCurrentPositions();\r\n var durationTimePart = Math.min(Math.abs(currentPosition.content - positions.content) / this._cachedButtonWidth, 1);\r\n return _fx.default.animate(this._$cachedContent, {\r\n from: currentPosition,\r\n to: positions,\r\n easing: SLIDE_MENU_ANIMATION_EASING,\r\n duration: SLIDE_MENU_ANIMATION_DURATION * durationTimePart,\r\n strategy: \"frame\",\r\n draw: function(positions) {\r\n that._setPositions(positions)\r\n }\r\n })\r\n },\r\n dispose: function() {\r\n if (this._menu) {\r\n this._menu.$element().remove()\r\n }\r\n if (this._$buttonsContainer) {\r\n this._$buttonsContainer.remove()\r\n }\r\n this.callBase.apply(this, arguments)\r\n }\r\n}).include(_uiListEdit.default));\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.decorator.swipe.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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\nvar _translator = require(\"../../animation/translator\");\r\nvar _fx = _interopRequireDefault(require(\"../../animation/fx\"));\r\nvar _uiListEdit = require(\"./ui.list.edit.decorator_registry\");\r\nvar _uiListEdit2 = _interopRequireDefault(require(\"./ui.list.edit.decorator\"));\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}(0, _uiListEdit.register)(\"delete\", \"swipe\", _uiListEdit2.default.inherit({\r\n _shouldHandleSwipe: true,\r\n _renderItemPosition: function($itemElement, offset, animate) {\r\n var deferred = new _deferred.Deferred;\r\n var itemOffset = offset * this._itemElementWidth;\r\n if (animate) {\r\n _fx.default.animate($itemElement, {\r\n to: {\r\n left: itemOffset\r\n },\r\n type: \"slide\",\r\n complete: function() {\r\n deferred.resolve($itemElement, offset)\r\n }\r\n })\r\n } else {\r\n (0, _translator.move)($itemElement, {\r\n left: itemOffset\r\n });\r\n deferred.resolve()\r\n }\r\n return deferred.promise()\r\n },\r\n _swipeStartHandler: function($itemElement) {\r\n this._itemElementWidth = $itemElement.width();\r\n return true\r\n },\r\n _swipeUpdateHandler: function($itemElement, args) {\r\n this._renderItemPosition($itemElement, args.offset);\r\n return true\r\n },\r\n _swipeEndHandler: function($itemElement, args) {\r\n var offset = args.targetOffset;\r\n this._renderItemPosition($itemElement, offset, true).done(function($itemElement, offset) {\r\n if (Math.abs(offset)) {\r\n this._list.deleteItem($itemElement).fail(function() {\r\n this._renderItemPosition($itemElement, 0, true)\r\n }.bind(this))\r\n }\r\n }.bind(this));\r\n return true\r\n }\r\n}));\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.decorator.context.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiListEdit = _interopRequireDefault(require(\"./ui.list.edit.decorator_menu_helper\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _uiListEdit2 = require(\"./ui.list.edit.decorator_registry\");\r\nvar _uiListEdit3 = _interopRequireDefault(require(\"./ui.list.edit.decorator\"));\r\nvar _overlay = _interopRequireDefault(require(\"../overlay\"));\r\nvar _uiList = require(\"./ui.list.base\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar CONTEXTMENU_CLASS = \"dx-list-context-menu\";\r\nvar CONTEXTMENU_MENUCONTENT_CLASS = \"dx-list-context-menucontent\";\r\n(0, _uiListEdit2.register)(\"menu\", \"context\", _uiListEdit3.default.inherit({\r\n _init: function() {\r\n var $menu = (0, _renderer.default)(\"
\").addClass(CONTEXTMENU_CLASS);\r\n this._list.$element().append($menu);\r\n this._menu = this._renderOverlay($menu)\r\n },\r\n _renderOverlay: function($element) {\r\n return this._list._createComponent($element, _overlay.default, {\r\n shading: false,\r\n deferRendering: true,\r\n closeOnTargetScroll: true,\r\n closeOnOutsideClick: function(e) {\r\n return !(0, _renderer.default)(e.target).closest(\".\" + CONTEXTMENU_CLASS).length\r\n },\r\n animation: {\r\n show: {\r\n type: \"slide\",\r\n duration: 300,\r\n from: {\r\n height: 0,\r\n opacity: 1\r\n },\r\n to: {\r\n height: function() {\r\n return this._$menuList.outerHeight()\r\n }.bind(this),\r\n opacity: 1\r\n }\r\n },\r\n hide: {\r\n type: \"slide\",\r\n duration: 0,\r\n from: {\r\n opacity: 1\r\n },\r\n to: {\r\n opacity: 0\r\n }\r\n }\r\n },\r\n height: function() {\r\n return this._$menuList ? this._$menuList.outerHeight() : 0\r\n }.bind(this),\r\n width: function() {\r\n return this._list.$element().outerWidth()\r\n }.bind(this),\r\n onContentReady: this._renderMenuContent.bind(this)\r\n })\r\n },\r\n _renderMenuContent: function(e) {\r\n var $overlayContent = e.component.$content();\r\n var items = this._menuItems().slice();\r\n if (this._deleteEnabled()) {\r\n items.push({\r\n text: _message.default.format(\"dxListEditDecorator-delete\"),\r\n action: this._deleteItem.bind(this)\r\n })\r\n }\r\n this._$menuList = (0, _renderer.default)(\"
\");\r\n this._list._createComponent(this._$menuList, _uiList.ListBase, {\r\n items: items,\r\n onItemClick: this._menuItemClickHandler.bind(this),\r\n height: \"auto\",\r\n integrationOptions: {}\r\n });\r\n $overlayContent.addClass(CONTEXTMENU_MENUCONTENT_CLASS);\r\n $overlayContent.append(this._$menuList)\r\n },\r\n _menuItemClickHandler: function(args) {\r\n this._menu.hide();\r\n this._fireMenuAction(this._$itemWithMenu, args.itemData.action)\r\n },\r\n _deleteItem: function() {\r\n this._list.deleteItem(this._$itemWithMenu)\r\n },\r\n handleContextMenu: function($itemElement) {\r\n this._$itemWithMenu = $itemElement;\r\n this._menu.option({\r\n position: {\r\n my: \"top\",\r\n at: \"bottom\",\r\n of: $itemElement,\r\n collision: \"flip\"\r\n }\r\n });\r\n this._menu.show();\r\n return true\r\n },\r\n dispose: function() {\r\n if (this._menu) {\r\n this._menu.$element().remove()\r\n }\r\n this.callBase.apply(this, arguments)\r\n }\r\n}).include(_uiListEdit.default));\r\n","/**\r\n * DevExtreme (ui/list/item.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _item = _interopRequireDefault(require(\"../collection/item\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar LIST_ITEM_BADGE_CONTAINER_CLASS = \"dx-list-item-badge-container\";\r\nvar LIST_ITEM_BADGE_CLASS = \"dx-list-item-badge\";\r\nvar BADGE_CLASS = \"dx-badge\";\r\nvar LIST_ITEM_CHEVRON_CONTAINER_CLASS = \"dx-list-item-chevron-container\";\r\nvar LIST_ITEM_CHEVRON_CLASS = \"dx-list-item-chevron\";\r\nvar ListItem = _item.default.inherit({\r\n _renderWatchers: function() {\r\n this.callBase();\r\n this._startWatcher(\"badge\", this._renderBadge.bind(this));\r\n this._startWatcher(\"showChevron\", this._renderShowChevron.bind(this))\r\n },\r\n _renderBadge: function(badge) {\r\n this._$element.children(\".\" + LIST_ITEM_BADGE_CONTAINER_CLASS).remove();\r\n if (!badge) {\r\n return\r\n }\r\n var $badge = (0, _renderer.default)(\"
\").addClass(LIST_ITEM_BADGE_CONTAINER_CLASS).append((0, _renderer.default)(\"
\").addClass(LIST_ITEM_BADGE_CLASS).addClass(BADGE_CLASS).text(badge));\r\n var $chevron = this._$element.children(\".\" + LIST_ITEM_CHEVRON_CONTAINER_CLASS).first();\r\n $chevron.length > 0 ? $badge.insertBefore($chevron) : $badge.appendTo(this._$element)\r\n },\r\n _renderShowChevron: function(showChevron) {\r\n this._$element.children(\".\" + LIST_ITEM_CHEVRON_CONTAINER_CLASS).remove();\r\n if (!showChevron) {\r\n return\r\n }\r\n var $chevronContainer = (0, _renderer.default)(\"
\").addClass(LIST_ITEM_CHEVRON_CONTAINER_CLASS);\r\n var $chevron = (0, _renderer.default)(\"
\").addClass(LIST_ITEM_CHEVRON_CLASS);\r\n $chevronContainer.append($chevron).appendTo(this._$element)\r\n }\r\n});\r\nvar _default = ListItem;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.decorator.selection.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _check_box = _interopRequireDefault(require(\"../check_box\"));\r\nvar _radio_button = _interopRequireDefault(require(\"../radio_group/radio_button\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _uiListEdit = require(\"./ui.list.edit.decorator_registry\");\r\nvar _uiListEdit2 = _interopRequireDefault(require(\"./ui.list.edit.decorator\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar SELECT_DECORATOR_ENABLED_CLASS = \"dx-list-select-decorator-enabled\";\r\nvar SELECT_DECORATOR_SELECT_ALL_CLASS = \"dx-list-select-all\";\r\nvar SELECT_DECORATOR_SELECT_ALL_CHECKBOX_CLASS = \"dx-list-select-all-checkbox\";\r\nvar SELECT_DECORATOR_SELECT_ALL_LABEL_CLASS = \"dx-list-select-all-label\";\r\nvar SELECT_CHECKBOX_CONTAINER_CLASS = \"dx-list-select-checkbox-container\";\r\nvar SELECT_CHECKBOX_CLASS = \"dx-list-select-checkbox\";\r\nvar SELECT_RADIO_BUTTON_CONTAINER_CLASS = \"dx-list-select-radiobutton-container\";\r\nvar SELECT_RADIO_BUTTON_CLASS = \"dx-list-select-radiobutton\";\r\nvar FOCUSED_STATE_CLASS = \"dx-state-focused\";\r\nvar CLICK_EVENT_NAME = (0, _index.addNamespace)(_click.name, \"dxListEditDecorator\");\r\n(0, _uiListEdit.register)(\"selection\", \"default\", _uiListEdit2.default.inherit({\r\n _init: function() {\r\n this.callBase.apply(this, arguments);\r\n var selectionMode = this._list.option(\"selectionMode\");\r\n this._singleStrategy = \"single\" === selectionMode;\r\n this._containerClass = this._singleStrategy ? SELECT_RADIO_BUTTON_CONTAINER_CLASS : SELECT_CHECKBOX_CONTAINER_CLASS;\r\n this._controlClass = this._singleStrategy ? SELECT_RADIO_BUTTON_CLASS : SELECT_CHECKBOX_CLASS;\r\n this._controlWidget = this._singleStrategy ? _radio_button.default : _check_box.default;\r\n this._list.$element().addClass(SELECT_DECORATOR_ENABLED_CLASS)\r\n },\r\n beforeBag: function(config) {\r\n var $itemElement = config.$itemElement;\r\n var $container = config.$container.addClass(this._containerClass);\r\n var $control = (0, _renderer.default)(\"
\").addClass(this._controlClass).appendTo($container);\r\n new this._controlWidget($control, (0, _extend.extend)(this._commonOptions(), {\r\n value: this._isSelected($itemElement),\r\n focusStateEnabled: false,\r\n hoverStateEnabled: false,\r\n onValueChanged: function(e) {\r\n e.event && this._list._saveSelectionChangeEvent(e.event);\r\n this._processCheckedState($itemElement, e.value);\r\n e.event && e.event.stopPropagation()\r\n }.bind(this)\r\n }))\r\n },\r\n modifyElement: function(config) {\r\n this.callBase.apply(this, arguments);\r\n var $itemElement = config.$itemElement;\r\n var control = this._controlWidget.getInstance($itemElement.find(\".\" + this._controlClass));\r\n _events_engine.default.on($itemElement, \"stateChanged\", function(e, state) {\r\n control.option(\"value\", state)\r\n }.bind(this))\r\n },\r\n _updateSelectAllState: function() {\r\n if (!this._$selectAll) {\r\n return\r\n }\r\n this._selectAllCheckBox.option(\"value\", this._list.isSelectAll())\r\n },\r\n afterRender: function() {\r\n if (\"all\" !== this._list.option(\"selectionMode\")) {\r\n return\r\n }\r\n if (!this._$selectAll) {\r\n this._renderSelectAll()\r\n } else {\r\n this._updateSelectAllState()\r\n }\r\n },\r\n handleKeyboardEvents: function(currentFocusedIndex, moveFocusUp) {\r\n var moveFocusDown = !moveFocusUp;\r\n var list = this._list;\r\n var $selectAll = this._$selectAll;\r\n var lastItemIndex = list._getLastItemIndex();\r\n var isFocusOutOfList = moveFocusUp && 0 === currentFocusedIndex || moveFocusDown && currentFocusedIndex === lastItemIndex;\r\n var hasSelectAllItem = !!$selectAll;\r\n if (hasSelectAllItem && isFocusOutOfList) {\r\n list.option(\"focusedElement\", $selectAll);\r\n list.scrollToItem(list.option(\"focusedElement\"));\r\n return true\r\n }\r\n return false\r\n },\r\n handleEnterPressing: function(e) {\r\n if (this._$selectAll && this._$selectAll.hasClass(FOCUSED_STATE_CLASS)) {\r\n e.target = this._$selectAll.get(0);\r\n this._list._saveSelectionChangeEvent(e);\r\n this._selectAllCheckBox.option(\"value\", !this._selectAllCheckBox.option(\"value\"));\r\n return true\r\n }\r\n },\r\n _renderSelectAll: function() {\r\n var $selectAll = this._$selectAll = (0, _renderer.default)(\"
\").addClass(SELECT_DECORATOR_SELECT_ALL_CLASS);\r\n var list = this._list;\r\n var downArrowHandler = list._supportedKeys().downArrow.bind(list);\r\n this._selectAllCheckBox = list._createComponent((0, _renderer.default)(\"
\").addClass(SELECT_DECORATOR_SELECT_ALL_CHECKBOX_CLASS).appendTo($selectAll), _check_box.default, {\r\n focusStateEnabled: false,\r\n hoverStateEnabled: false\r\n });\r\n this._selectAllCheckBox.registerKeyHandler(\"downArrow\", downArrowHandler);\r\n (0, _renderer.default)(\"
\").addClass(SELECT_DECORATOR_SELECT_ALL_LABEL_CLASS).text(this._list.option(\"selectAllText\")).appendTo($selectAll);\r\n this._list.itemsContainer().prepend($selectAll);\r\n this._updateSelectAllState();\r\n this._attachSelectAllHandler()\r\n },\r\n _attachSelectAllHandler: function() {\r\n this._selectAllCheckBox.option(\"onValueChanged\", this._selectAllHandler.bind(this));\r\n _events_engine.default.off(this._$selectAll, CLICK_EVENT_NAME);\r\n _events_engine.default.on(this._$selectAll, CLICK_EVENT_NAME, this._selectAllClickHandler.bind(this))\r\n },\r\n _selectAllHandler: function(e) {\r\n e.event && e.event.stopPropagation();\r\n var isSelectedAll = this._selectAllCheckBox.option(\"value\");\r\n var result = this._list._createActionByOption(\"onSelectAllValueChanged\")({\r\n value: isSelectedAll\r\n });\r\n if (false === result) {\r\n return\r\n }\r\n e.event && this._list._saveSelectionChangeEvent(e.event);\r\n if (true === isSelectedAll) {\r\n this._selectAllItems()\r\n } else {\r\n if (false === isSelectedAll) {\r\n this._unselectAllItems()\r\n }\r\n }\r\n },\r\n _checkSelectAllCapability: function() {\r\n var list = this._list;\r\n var dataSource = list.getDataSource();\r\n if (\"allPages\" === list.option(\"selectAllMode\") && list.option(\"grouped\") && (!dataSource || !dataSource.group())) {\r\n _ui.default.log(\"W1010\");\r\n return false\r\n }\r\n return true\r\n },\r\n _selectAllItems: function() {\r\n if (!this._checkSelectAllCapability()) {\r\n return\r\n }\r\n this._list._selection.selectAll(\"page\" === this._list.option(\"selectAllMode\"))\r\n },\r\n _unselectAllItems: function() {\r\n if (!this._checkSelectAllCapability()) {\r\n return\r\n }\r\n this._list._selection.deselectAll(\"page\" === this._list.option(\"selectAllMode\"))\r\n },\r\n _selectAllClickHandler: function(e) {\r\n this._list._saveSelectionChangeEvent(e);\r\n this._selectAllCheckBox.option(\"value\", !this._selectAllCheckBox.option(\"value\"))\r\n },\r\n _isSelected: function($itemElement) {\r\n return this._list.isItemSelected($itemElement)\r\n },\r\n _processCheckedState: function($itemElement, checked) {\r\n if (checked) {\r\n this._list.selectItem($itemElement)\r\n } else {\r\n this._list.unselectItem($itemElement)\r\n }\r\n },\r\n dispose: function() {\r\n this._disposeSelectAll();\r\n this._list.$element().removeClass(SELECT_DECORATOR_ENABLED_CLASS);\r\n this.callBase.apply(this, arguments)\r\n },\r\n _disposeSelectAll: function() {\r\n if (this._$selectAll) {\r\n this._$selectAll.remove();\r\n this._$selectAll = null\r\n }\r\n }\r\n}));\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.decorator.reorder.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _uiListEdit = require(\"./ui.list.edit.decorator_registry\");\r\nvar _uiListEdit2 = _interopRequireDefault(require(\"./ui.list.edit.decorator\"));\r\nvar _sortable = _interopRequireDefault(require(\"../sortable\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar REORDER_HANDLE_CONTAINER_CLASS = \"dx-list-reorder-handle-container\";\r\nvar REORDER_HANDLE_CLASS = \"dx-list-reorder-handle\";\r\nvar REORDERING_ITEM_GHOST_CLASS = \"dx-list-item-ghost-reordering\";\r\nvar STATE_HOVER_CLASS = \"dx-state-hover\";\r\n(0, _uiListEdit.register)(\"reorder\", \"default\", _uiListEdit2.default.inherit({\r\n _init: function() {\r\n var list = this._list;\r\n this._groupedEnabled = this._list.option(\"grouped\");\r\n this._lockedDrag = false;\r\n var filter = this._groupedEnabled ? \"> .dx-list-group > .dx-list-group-body > .dx-list-item\" : \"> .dx-list-item\";\r\n this._sortable = list._createComponent(list._scrollView.content(), _sortable.default, (0, _extend.extend)({\r\n component: list,\r\n contentTemplate: null,\r\n allowReordering: false,\r\n filter: filter,\r\n container: list.$element(),\r\n dragDirection: list.option(\"itemDragging.group\") ? \"both\" : \"vertical\",\r\n handle: \".\".concat(REORDER_HANDLE_CLASS),\r\n dragTemplate: this._dragTemplate,\r\n onDragStart: this._dragStartHandler.bind(this),\r\n onDragChange: this._dragChangeHandler.bind(this),\r\n onReorder: this._reorderHandler.bind(this)\r\n }, list.option(\"itemDragging\")))\r\n },\r\n afterRender: function() {\r\n this._sortable.update()\r\n },\r\n _dragTemplate: function(e) {\r\n return (0, _renderer.default)(e.itemElement).clone().width((0, _renderer.default)(e.itemElement).width()).addClass(REORDERING_ITEM_GHOST_CLASS).addClass(STATE_HOVER_CLASS)\r\n },\r\n _dragStartHandler: function(e) {\r\n if (this._lockedDrag) {\r\n e.cancel = true;\r\n return\r\n }\r\n },\r\n _dragChangeHandler: function(e) {\r\n if (this._groupedEnabled && !this._sameParent(e.fromIndex, e.toIndex)) {\r\n e.cancel = true;\r\n return\r\n }\r\n },\r\n _sameParent: function(fromIndex, toIndex) {\r\n var $dragging = this._list.getItemElementByFlatIndex(fromIndex);\r\n var $over = this._list.getItemElementByFlatIndex(toIndex);\r\n return $over.parent().get(0) === $dragging.parent().get(0)\r\n },\r\n _reorderHandler: function(e) {\r\n var $targetElement = this._list.getItemElementByFlatIndex(e.toIndex);\r\n this._list.reorderItem((0, _renderer.default)(e.itemElement), $targetElement)\r\n },\r\n afterBag: function(config) {\r\n var _this = this;\r\n var $handle = (0, _renderer.default)(\"
\").addClass(REORDER_HANDLE_CLASS);\r\n _events_engine.default.on($handle, \"dxpointerdown\", function(e) {\r\n _this._lockedDrag = !(0, _index.isMouseEvent)(e)\r\n });\r\n _events_engine.default.on($handle, \"dxhold\", {\r\n timeout: 30\r\n }, function(e) {\r\n e.cancel = true;\r\n _this._lockedDrag = false\r\n });\r\n config.$container.addClass(REORDER_HANDLE_CONTAINER_CLASS).append($handle)\r\n }\r\n}));\r\n","/**\r\n * DevExtreme (ui/menu/ui.submenu.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _common = require(\"../../core/utils/common\");\r\nvar _element = require(\"../../core/element\");\r\nvar _position = _interopRequireDefault(require(\"../../animation/position\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _context_menu = _interopRequireDefault(require(\"../context_menu\"));\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 _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 DX_CONTEXT_MENU_CONTENT_DELIMITER_CLASS = \"dx-context-menu-content-delimiter\";\r\nvar DX_SUBMENU_CLASS = \"dx-submenu\";\r\nvar Submenu = function(_ContextMenu) {\r\n _inheritsLoose(Submenu, _ContextMenu);\r\n\r\n function Submenu() {\r\n return _ContextMenu.apply(this, arguments) || this\r\n }\r\n var _proto = Submenu.prototype;\r\n _proto._getDefaultOptions = function() {\r\n return (0, _extend.extend)(_ContextMenu.prototype._getDefaultOptions.call(this), {\r\n orientation: \"horizontal\",\r\n tabIndex: null,\r\n onHoverStart: _common.noop\r\n })\r\n };\r\n _proto._initDataAdapter = function() {\r\n this._dataAdapter = this.option(\"_dataAdapter\");\r\n if (!this._dataAdapter) {\r\n _ContextMenu.prototype._initDataAdapter.call(this)\r\n }\r\n };\r\n _proto._renderContentImpl = function() {\r\n this._renderContextMenuOverlay();\r\n _ContextMenu.prototype._renderContentImpl.call(this);\r\n var node = this._dataAdapter.getNodeByKey(this.option(\"_parentKey\"));\r\n node && this._renderItems(this._getChildNodes(node));\r\n this._renderDelimiter()\r\n };\r\n _proto._renderDelimiter = function() {\r\n this.$contentDelimiter = (0, _renderer.default)(\"
\").appendTo(this._itemContainer()).addClass(DX_CONTEXT_MENU_CONTENT_DELIMITER_CLASS)\r\n };\r\n _proto._getOverlayOptions = function() {\r\n return (0, _extend.extend)(_ContextMenu.prototype._getOverlayOptions.call(this), {\r\n onPositioned: this._overlayPositionedActionHandler.bind(this)\r\n })\r\n };\r\n _proto._overlayPositionedActionHandler = function(arg) {\r\n this._showDelimiter(arg)\r\n };\r\n _proto._hoverEndHandler = function(e) {\r\n _ContextMenu.prototype._hoverEndHandler.call(this, e);\r\n this._toggleFocusClass(false, e.currentTarget)\r\n };\r\n _proto._isMenuHorizontal = function() {\r\n return \"horizontal\" === this.option(\"orientation\")\r\n };\r\n _proto._hoverStartHandler = function(e) {\r\n var hoverStartAction = this.option(\"onHoverStart\");\r\n hoverStartAction(e);\r\n _ContextMenu.prototype._hoverStartHandler.call(this, e);\r\n this._toggleFocusClass(true, e.currentTarget)\r\n };\r\n _proto._drawSubmenu = function($rootItem) {\r\n this._actions.onShowing({\r\n rootItem: (0, _element.getPublicElement)($rootItem),\r\n submenu: this\r\n });\r\n _ContextMenu.prototype._drawSubmenu.call(this, $rootItem);\r\n this._actions.onShown({\r\n rootItem: (0, _element.getPublicElement)($rootItem),\r\n submenu: this\r\n })\r\n };\r\n _proto._hideSubmenu = function($rootItem) {\r\n this._actions.onHiding({\r\n cancel: true,\r\n rootItem: (0, _element.getPublicElement)($rootItem),\r\n submenu: this\r\n });\r\n _ContextMenu.prototype._hideSubmenu.call(this, $rootItem);\r\n this._actions.onHidden({\r\n rootItem: (0, _element.getPublicElement)($rootItem),\r\n submenu: this\r\n })\r\n };\r\n _proto._showDelimiter = function(arg) {\r\n if (!this.$contentDelimiter) {\r\n return\r\n }\r\n var $submenu = this._itemContainer().children(\".\".concat(DX_SUBMENU_CLASS)).eq(0);\r\n var $rootItem = this.option(\"position\").of;\r\n var position = {\r\n of: $submenu\r\n };\r\n var containerOffset = arg.position;\r\n var vLocation = containerOffset.v.location;\r\n var hLocation = containerOffset.h.location;\r\n var rootOffset = $rootItem.offset();\r\n var offsetLeft = Math.round(rootOffset.left);\r\n var offsetTop = Math.round(rootOffset.top);\r\n var rootWidth = $rootItem.width();\r\n var rootHeight = $rootItem.height();\r\n var submenuWidth = $submenu.width();\r\n var submenuHeight = $submenu.height();\r\n this.$contentDelimiter.css(\"display\", \"block\");\r\n this.$contentDelimiter.width(this._isMenuHorizontal() ? rootWidth < submenuWidth ? rootWidth - 2 : submenuWidth : 2);\r\n this.$contentDelimiter.height(this._isMenuHorizontal() ? 2 : rootHeight < submenuHeight ? rootHeight - 2 : submenuHeight);\r\n if (this._isMenuHorizontal()) {\r\n if (vLocation > offsetTop) {\r\n if (Math.round(hLocation) === offsetLeft) {\r\n position.offset = \"1 -1\";\r\n position.at = position.my = \"left top\"\r\n } else {\r\n position.offset = \"-1 -1\";\r\n position.at = position.my = \"right top\"\r\n }\r\n } else {\r\n this.$contentDelimiter.height(5);\r\n if (Math.round(hLocation) === offsetLeft) {\r\n position.offset = \"1 4\";\r\n position.at = position.my = \"left bottom\"\r\n } else {\r\n position.offset = \"-1 2\";\r\n position.at = position.my = \"right bottom\"\r\n }\r\n }\r\n } else {\r\n if (hLocation > offsetLeft) {\r\n if (Math.round(vLocation) === offsetTop) {\r\n position.offset = \"-1 1\";\r\n position.at = position.my = \"left top\"\r\n } else {\r\n position.offset = \"-1 -1\";\r\n position.at = position.my = \"left bottom\"\r\n }\r\n } else {\r\n if (Math.round(vLocation) === offsetTop) {\r\n position.offset = \"1 1\";\r\n position.at = position.my = \"right top\"\r\n } else {\r\n position.offset = \"1 -1\";\r\n position.at = position.my = \"right bottom\"\r\n }\r\n }\r\n }\r\n _position.default.setup(this.$contentDelimiter, position)\r\n };\r\n _proto._getContextMenuPosition = function() {\r\n return this.option(\"position\")\r\n };\r\n _proto.isOverlayVisible = function() {\r\n return this._overlay.option(\"visible\")\r\n };\r\n _proto.getOverlayContent = function() {\r\n return this._overlay.$content()\r\n };\r\n return Submenu\r\n}(_context_menu.default);\r\nvar _default = Submenu;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/load_indicator.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _support = require(\"../core/utils/support\");\r\nvar _themes = require(\"./themes\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _ui = _interopRequireDefault(require(\"./widget/ui.widget\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar navigator = (0, _window.getNavigator)();\r\nvar LOADINDICATOR_CLASS = \"dx-loadindicator\";\r\nvar LOADINDICATOR_WRAPPER_CLASS = \"dx-loadindicator-wrapper\";\r\nvar LOADINDICATOR_CONTENT_CLASS = \"dx-loadindicator-content\";\r\nvar LOADINDICATOR_ICON_CLASS = \"dx-loadindicator-icon\";\r\nvar LOADINDICATOR_SEGMENT_CLASS = \"dx-loadindicator-segment\";\r\nvar LOADINDICATOR_SEGMENT_INNER_CLASS = \"dx-loadindicator-segment-inner\";\r\nvar LOADINDICATOR_IMAGE_CLASS = \"dx-loadindicator-image\";\r\nvar LoadIndicator = _ui.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n indicatorSrc: \"\",\r\n activeStateEnabled: false,\r\n hoverStateEnabled: false,\r\n _animatingSegmentCount: 1,\r\n _animatingSegmentInner: false\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n var themeName = (0, _themes.current)();\r\n return this.callBase().concat([{\r\n device: function() {\r\n var realDevice = _devices.default.real();\r\n var obsoleteAndroid = \"android\" === realDevice.platform && !/chrome/i.test(navigator.userAgent);\r\n return obsoleteAndroid\r\n },\r\n options: {\r\n viaImage: true\r\n }\r\n }, {\r\n device: function() {\r\n return (0, _themes.isMaterial)(themeName)\r\n },\r\n options: {\r\n _animatingSegmentCount: 2,\r\n _animatingSegmentInner: true\r\n }\r\n }, {\r\n device: function() {\r\n return (0, _themes.isGeneric)(themeName)\r\n },\r\n options: {\r\n _animatingSegmentCount: 7\r\n }\r\n }])\r\n },\r\n _useTemplates: function() {\r\n return false\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this.$element().addClass(LOADINDICATOR_CLASS)\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this._renderWrapper();\r\n this._renderIndicatorContent();\r\n this._renderMarkup()\r\n },\r\n _renderWrapper: function() {\r\n this._$wrapper = (0, _renderer.default)(\"
\").addClass(LOADINDICATOR_WRAPPER_CLASS);\r\n this.$element().append(this._$wrapper)\r\n },\r\n _renderIndicatorContent: function() {\r\n this._$content = (0, _renderer.default)(\"
\").addClass(LOADINDICATOR_CONTENT_CLASS);\r\n this._$wrapper.append(this._$content)\r\n },\r\n _renderMarkup: function() {\r\n if ((0, _support.animation)() && !this.option(\"viaImage\") && !this.option(\"indicatorSrc\")) {\r\n this._renderMarkupForAnimation()\r\n } else {\r\n this._renderMarkupForImage()\r\n }\r\n },\r\n _renderMarkupForAnimation: function() {\r\n var animatingSegmentInner = this.option(\"_animatingSegmentInner\");\r\n this._$indicator = (0, _renderer.default)(\"
\").addClass(LOADINDICATOR_ICON_CLASS);\r\n this._$content.append(this._$indicator);\r\n for (var i = this.option(\"_animatingSegmentCount\"); i >= 0; --i) {\r\n var $segment = (0, _renderer.default)(\"
\").addClass(LOADINDICATOR_SEGMENT_CLASS).addClass(LOADINDICATOR_SEGMENT_CLASS + i);\r\n if (animatingSegmentInner) {\r\n $segment.append((0, _renderer.default)(\"
\").addClass(LOADINDICATOR_SEGMENT_INNER_CLASS))\r\n }\r\n this._$indicator.append($segment)\r\n }\r\n },\r\n _renderMarkupForImage: function() {\r\n var indicatorSrc = this.option(\"indicatorSrc\");\r\n this._$wrapper.addClass(LOADINDICATOR_IMAGE_CLASS);\r\n if (indicatorSrc) {\r\n this._$wrapper.css(\"backgroundImage\", \"url(\" + indicatorSrc + \")\")\r\n }\r\n },\r\n _renderDimensions: function() {\r\n this.callBase();\r\n this._updateContentSizeForAnimation()\r\n },\r\n _updateContentSizeForAnimation: function() {\r\n if (!this._$indicator) {\r\n return\r\n }\r\n var width = this.option(\"width\");\r\n var height = this.option(\"height\");\r\n if (width || height) {\r\n width = this.$element().width();\r\n height = this.$element().height();\r\n var minDimension = Math.min(height, width);\r\n this._$wrapper.css({\r\n height: minDimension,\r\n width: minDimension,\r\n fontSize: minDimension\r\n })\r\n }\r\n },\r\n _clean: function() {\r\n this.callBase();\r\n this._removeMarkupForAnimation();\r\n this._removeMarkupForImage()\r\n },\r\n _removeMarkupForAnimation: function() {\r\n if (!this._$indicator) {\r\n return\r\n }\r\n this._$indicator.remove();\r\n delete this._$indicator\r\n },\r\n _removeMarkupForImage: function() {\r\n this._$wrapper.css(\"backgroundImage\", \"none\")\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"_animatingSegmentCount\":\r\n case \"_animatingSegmentInner\":\r\n case \"indicatorSrc\":\r\n this._invalidate();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxLoadIndicator\", LoadIndicator);\r\nvar _default = LoadIndicator;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/lookup.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _window = require(\"../core/utils/window\");\r\nvar _support = require(\"../core/utils/support\");\r\nvar _common = require(\"../core/utils/common\");\r\nvar _element = require(\"../core/element\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _utils = require(\"./widget/utils.ink_ripple\");\r\nvar _message = _interopRequireDefault(require(\"../localization/message\"));\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _index = require(\"../events/utils/index\");\r\nvar _ui = _interopRequireDefault(require(\"./drop_down_editor/ui.drop_down_list\"));\r\nvar _themes = require(\"./themes\");\r\nvar _click = require(\"../events/click\");\r\nvar _popover = _interopRequireDefault(require(\"./popover\"));\r\nvar _text_box = _interopRequireDefault(require(\"./text_box\"));\r\nvar _child_default_template = require(\"../core/templates/child_default_template\");\r\nvar _translator = require(\"../animation/translator\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _utils2 = require(\"./drop_down_editor/utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar LOOKUP_CLASS = \"dx-lookup\";\r\nvar LOOKUP_SEARCH_CLASS = \"dx-lookup-search\";\r\nvar LOOKUP_SEARCH_WRAPPER_CLASS = \"dx-lookup-search-wrapper\";\r\nvar LOOKUP_FIELD_CLASS = \"dx-lookup-field\";\r\nvar LOOKUP_ARROW_CLASS = \"dx-lookup-arrow\";\r\nvar LOOKUP_FIELD_WRAPPER_CLASS = \"dx-lookup-field-wrapper\";\r\nvar LOOKUP_POPUP_CLASS = \"dx-lookup-popup\";\r\nvar LOOKUP_POPUP_WRAPPER_CLASS = \"dx-lookup-popup-wrapper\";\r\nvar LOOKUP_POPUP_SEARCH_CLASS = \"dx-lookup-popup-search\";\r\nvar LOOKUP_POPOVER_MODE = \"dx-lookup-popover-mode\";\r\nvar LOOKUP_EMPTY_CLASS = \"dx-lookup-empty\";\r\nvar LOOKUP_POPOVER_FLIP_VERTICAL_CLASS = \"dx-popover-flipped-vertical\";\r\nvar TEXTEDITOR_INPUT_CLASS = \"dx-texteditor-input\";\r\nvar LIST_ITEM_CLASS = \"dx-list-item\";\r\nvar LIST_ITEM_SELECTED_CLASS = \"dx-list-item-selected\";\r\nvar GROUP_LIST_HEADER_CLASS = \"dx-list-group-header\";\r\nvar MATERIAL_LOOKUP_LIST_ITEMS_COUNT = 5;\r\nvar MATERIAL_LOOKUP_LIST_PADDING = 8;\r\nvar Lookup = _ui.default.inherit({\r\n _supportedKeys: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n space: function(e) {\r\n e.preventDefault();\r\n this._validatedOpening()\r\n },\r\n enter: function() {\r\n this._validatedOpening()\r\n }\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n placeholder: _message.default.format(\"Select\"),\r\n searchPlaceholder: _message.default.format(\"Search\"),\r\n searchEnabled: true,\r\n cleanSearchOnOpening: true,\r\n showCancelButton: true,\r\n showClearButton: false,\r\n clearButtonText: _message.default.format(\"Clear\"),\r\n applyButtonText: _message.default.format(\"OK\"),\r\n pullRefreshEnabled: false,\r\n useNativeScrolling: true,\r\n pullingDownText: _message.default.format(\"dxList-pullingDownText\"),\r\n pulledDownText: _message.default.format(\"dxList-pulledDownText\"),\r\n refreshingText: _message.default.format(\"dxList-refreshingText\"),\r\n pageLoadingText: _message.default.format(\"dxList-pageLoadingText\"),\r\n onScroll: null,\r\n onPullRefresh: null,\r\n onPageLoading: null,\r\n pageLoadMode: \"scrollBottom\",\r\n nextButtonText: _message.default.format(\"dxList-nextButtonText\"),\r\n grouped: false,\r\n groupTemplate: \"group\",\r\n usePopover: false,\r\n showDropDownButton: false,\r\n focusStateEnabled: false,\r\n animation: {},\r\n dropDownOptions: {\r\n showTitle: true,\r\n width: function() {\r\n return .8 * (0, _renderer.default)(window).width()\r\n },\r\n height: function() {\r\n return .8 * (0, _renderer.default)(window).height()\r\n },\r\n shading: true,\r\n closeOnOutsideClick: false,\r\n position: void 0,\r\n animation: {},\r\n title: \"\",\r\n titleTemplate: \"title\",\r\n onTitleRendered: null,\r\n fullScreen: false\r\n },\r\n dropDownCentered: false,\r\n _scrollToSelectedItemEnabled: false,\r\n useHiddenSubmitElement: true\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n var _this = this;\r\n var themeName = (0, _themes.current)();\r\n return this.callBase().concat([{\r\n device: function() {\r\n return !_support.nativeScrolling\r\n },\r\n options: {\r\n useNativeScrolling: false\r\n }\r\n }, {\r\n device: function(_device) {\r\n return !_devices.default.isSimulator() && \"desktop\" === _devices.default.real().deviceType && \"generic\" === _device.platform\r\n },\r\n options: {\r\n usePopover: true,\r\n dropDownOptions: {\r\n height: \"auto\"\r\n }\r\n }\r\n }, {\r\n device: {\r\n platform: \"ios\",\r\n phone: true\r\n },\r\n options: {\r\n dropDownOptions: {\r\n fullScreen: true\r\n }\r\n }\r\n }, {\r\n device: {\r\n platform: \"ios\",\r\n tablet: true\r\n },\r\n options: {\r\n dropDownOptions: {\r\n width: function() {\r\n return .4 * Math.min((0, _renderer.default)(window).width(), (0, _renderer.default)(window).height())\r\n },\r\n height: \"auto\"\r\n },\r\n usePopover: true,\r\n useInkRipple: false\r\n }\r\n }, {\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 device: function() {\r\n return (0, _themes.isMaterial)(themeName)\r\n },\r\n options: {\r\n usePopover: false,\r\n searchEnabled: false,\r\n showCancelButton: false,\r\n dropDownCentered: true,\r\n _scrollToSelectedItemEnabled: true,\r\n dropDownOptions: {\r\n closeOnOutsideClick: true,\r\n width: function() {\r\n return (0, _utils2.getElementWidth)(_this.$element())\r\n },\r\n height: function() {\r\n return this._getPopupHeight()\r\n }.bind(this),\r\n showTitle: false,\r\n shading: false\r\n }\r\n }\r\n }])\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initActions()\r\n },\r\n _initActions: function() {\r\n this.callBase();\r\n this._initScrollAction();\r\n this._initPageLoadingAction();\r\n this._initPullRefreshAction()\r\n },\r\n _initPageLoadingAction: function() {\r\n this._pageLoadingAction = this._createActionByOption(\"onPageLoading\")\r\n },\r\n _initPullRefreshAction: function() {\r\n this._pullRefreshAction = this._createActionByOption(\"onPullRefresh\")\r\n },\r\n _initScrollAction: function() {\r\n this._scrollAction = this._createActionByOption(\"onScroll\")\r\n },\r\n _scrollHandler: function(e) {\r\n this._scrollAction(e)\r\n },\r\n _pullRefreshHandler: function(e) {\r\n this._pullRefreshAction(e)\r\n },\r\n _pageLoadingHandler: function(e) {\r\n this._pageLoadingAction(e)\r\n },\r\n _initTemplates: function() {\r\n this.callBase();\r\n this._templateManager.addDefaultTemplates({\r\n group: new _child_default_template.ChildDefaultTemplate(\"group\"),\r\n title: new _child_default_template.ChildDefaultTemplate(\"title\")\r\n })\r\n },\r\n _initMarkup: function() {\r\n this.$element().addClass(LOOKUP_CLASS).toggleClass(LOOKUP_POPOVER_MODE, this.option(\"usePopover\"));\r\n this.callBase()\r\n },\r\n _inputWrapper: function() {\r\n return this.$element().find(\".\" + LOOKUP_FIELD_WRAPPER_CLASS)\r\n },\r\n _dataSourceOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n paginate: true\r\n })\r\n },\r\n _fireContentReadyAction: _common.noop,\r\n _popupWrapperClass: function() {\r\n return \"\"\r\n },\r\n _renderInput: function() {\r\n var _this2 = this;\r\n var fieldClickAction = this._createAction(function() {\r\n _this2._toggleOpenState()\r\n });\r\n this._$field = (0, _renderer.default)(\"
\").addClass(LOOKUP_FIELD_CLASS);\r\n _events_engine.default.on(this._$field, (0, _index.addNamespace)(_click.name, this.NAME), function(e) {\r\n fieldClickAction({\r\n event: e\r\n })\r\n });\r\n var $arrow = (0, _renderer.default)(\"
\").addClass(LOOKUP_ARROW_CLASS);\r\n this._$fieldWrapper = (0, _renderer.default)(\"
\").addClass(LOOKUP_FIELD_WRAPPER_CLASS).append(this._$field).append($arrow).appendTo(this.$element());\r\n this.option(\"useInkRipple\") && this._renderInkRipple()\r\n },\r\n _getInputContainer: function() {\r\n return this._$fieldWrapper\r\n },\r\n _renderInkRipple: function() {\r\n this._inkRipple = (0, _utils.render)()\r\n },\r\n _toggleOpenState: function() {\r\n this.callBase();\r\n if (!this.option(\"dropDownOptions.fullScreen\") && this.option(\"_scrollToSelectedItemEnabled\")) {\r\n this._setPopupPosition()\r\n }\r\n },\r\n _toggleActiveState: function($element, value, e) {\r\n this.callBase.apply(this, arguments);\r\n if (!this._inkRipple) {\r\n return\r\n }\r\n var config = {\r\n element: this._inputWrapper(),\r\n event: e\r\n };\r\n if (value) {\r\n this._inkRipple.showWave(config)\r\n } else {\r\n this._inkRipple.hideWave(config)\r\n }\r\n },\r\n _renderField: function() {\r\n var fieldTemplate = this._getTemplateByOption(\"fieldTemplate\");\r\n if (fieldTemplate && this.option(\"fieldTemplate\")) {\r\n this._renderFieldTemplate(fieldTemplate);\r\n return\r\n }\r\n var displayValue = this.option(\"displayValue\");\r\n this._updateField((0, _type.isDefined)(displayValue) && String(displayValue) || this.option(\"placeholder\"));\r\n this.$element().toggleClass(LOOKUP_EMPTY_CLASS, !this.option(\"selectedItem\"))\r\n },\r\n _renderDisplayText: function(text) {\r\n if (this._input().length) {\r\n this.callBase(text)\r\n } else {\r\n this._updateField(text)\r\n }\r\n },\r\n _updateField: function(text) {\r\n this._$field.text(text)\r\n },\r\n _renderFieldTemplate: function(template) {\r\n this._$field.empty();\r\n var data = this._fieldRenderData();\r\n template.render({\r\n model: data,\r\n container: (0, _element.getPublicElement)(this._$field)\r\n })\r\n },\r\n _fieldRenderData: function() {\r\n return this.option(\"selectedItem\")\r\n },\r\n _popupShowingHandler: function() {\r\n this.callBase.apply(this, arguments);\r\n if (this.option(\"cleanSearchOnOpening\")) {\r\n if (this.option(\"searchEnabled\") && this._searchBox.option(\"value\")) {\r\n this._searchBox.option(\"value\", \"\");\r\n this._searchCanceled()\r\n }\r\n this._list && this._list.option(\"focusedElement\", null)\r\n }\r\n if (this.option(\"dropDownOptions.fullScreen\") && this.option(\"_scrollToSelectedItemEnabled\")) {\r\n this._popup.option(\"position\").of = (0, _renderer.default)(window)\r\n }\r\n },\r\n _scrollToSelectedItem: function() {\r\n var selectedIndex = this._list.option(\"selectedIndex\");\r\n var listItems = this._list.option(\"items\");\r\n var itemsCount = listItems.length;\r\n if (0 !== itemsCount) {\r\n if (this._list.option(\"grouped\")) {\r\n this._list.scrollToItem({\r\n group: itemsCount - 1,\r\n item: listItems[itemsCount - 1].items.length - 1\r\n })\r\n } else {\r\n this._list.scrollToItem(itemsCount - 1)\r\n }\r\n this._list.scrollToItem(selectedIndex)\r\n }\r\n },\r\n _getDifferenceOffsets: function(selectedListItem) {\r\n return selectedListItem.offset().top - (0, _renderer.default)(this.element()).offset().top\r\n },\r\n _isCenteringEnabled: function(index, count) {\r\n return 1 < index && index < count - 2\r\n },\r\n _getPopupOffset: function() {\r\n var listItemsCount = this._listItemElements().length;\r\n if (0 === listItemsCount) {\r\n return\r\n }\r\n var selectedListItem = (0, _renderer.default)(this._list.element()).find(\".\" + LIST_ITEM_SELECTED_CLASS);\r\n var selectedIndex = this._listItemElements().index(selectedListItem);\r\n var differenceOfHeights = (selectedListItem.height() - (0, _renderer.default)(this.element()).height()) / 2;\r\n var lookupOffset = (0, _renderer.default)(this._list.element()).offset().top;\r\n var dropDownHeightOption = this.option(\"dropDownOptions.height\");\r\n var popupHeight = \"function\" === typeof dropDownHeightOption ? dropDownHeightOption() : dropDownHeightOption;\r\n var windowHeight = (0, _renderer.default)(window).height();\r\n var offsetTop = 0;\r\n if (selectedIndex !== -1) {\r\n if (this._isCenteringEnabled(selectedIndex, listItemsCount)) {\r\n this._scrollToSelectedItem();\r\n var scrollOffsetTop = (popupHeight - selectedListItem.height()) / 2 - this._getDifferenceOffsets(selectedListItem);\r\n this._list.scrollTo(this._list.scrollTop() + MATERIAL_LOOKUP_LIST_PADDING / 2 - scrollOffsetTop);\r\n offsetTop = differenceOfHeights + this._getDifferenceOffsets(selectedListItem);\r\n if (lookupOffset < offsetTop && selectedIndex !== listItemsCount - 3) {\r\n this._list.scrollTo(this._list.scrollTop() + this._getDifferenceOffsets(selectedListItem) / 2);\r\n offsetTop = differenceOfHeights + this._getDifferenceOffsets(selectedListItem)\r\n }\r\n } else {\r\n if (selectedIndex <= 1) {\r\n this._list.scrollTo(0);\r\n offsetTop = differenceOfHeights + this._getDifferenceOffsets(selectedListItem)\r\n } else {\r\n if (selectedIndex >= listItemsCount - 2) {\r\n this._scrollToSelectedItem();\r\n offsetTop = differenceOfHeights + this._getDifferenceOffsets(selectedListItem)\r\n }\r\n }\r\n }\r\n if (lookupOffset < offsetTop) {\r\n this._scrollToSelectedItem();\r\n offsetTop = differenceOfHeights + MATERIAL_LOOKUP_LIST_PADDING\r\n }\r\n }\r\n var offsetBottom = popupHeight - offsetTop - (0, _renderer.default)(this.element()).height();\r\n if (windowHeight - lookupOffset < offsetBottom) {\r\n this._list.scrollTo(this._list.scrollTop() + differenceOfHeights - offsetBottom);\r\n offsetTop = popupHeight - (0, _renderer.default)(this.element()).height() - MATERIAL_LOOKUP_LIST_PADDING\r\n }\r\n return offsetTop\r\n },\r\n _setPopupPosition: function() {\r\n if (!this.option(\"dropDownCentered\")) {\r\n return\r\n }\r\n var flipped = this._popup._$wrapper.hasClass(LOOKUP_POPOVER_FLIP_VERTICAL_CLASS);\r\n if (flipped) {\r\n return\r\n }\r\n var popupContentParent = (0, _renderer.default)(this._popup.content()).parent();\r\n var popupOffset = this._getPopupOffset();\r\n var position = (0, _translator.locate)(popupContentParent);\r\n (0, _translator.move)(popupContentParent, {\r\n top: position.top - popupOffset\r\n })\r\n },\r\n _listItemGroupedElements: function() {\r\n var groups = this._list._itemContainer().children();\r\n var items = [];\r\n groups.each(function(_, group) {\r\n items.push((0, _renderer.default)(group).find(\".\" + GROUP_LIST_HEADER_CLASS)[0]);\r\n var groupedItems = (0, _renderer.default)(group).find(\".\" + LIST_ITEM_CLASS);\r\n groupedItems.each(function(_, item) {\r\n items.push(item)\r\n })\r\n });\r\n return (0, _renderer.default)(items)\r\n },\r\n _calculateListHeight: function(grouped) {\r\n var listItems = grouped ? this._listItemGroupedElements() : this._listItemElements();\r\n var selectedListItem = (0, _renderer.default)(\".\" + LIST_ITEM_SELECTED_CLASS);\r\n var selectedIndex = listItems.index(selectedListItem);\r\n var listHeight = 0;\r\n var requireListItems = [];\r\n if (0 === listItems.length) {\r\n listHeight += MATERIAL_LOOKUP_LIST_PADDING\r\n } else {\r\n if (listItems.length < MATERIAL_LOOKUP_LIST_ITEMS_COUNT) {\r\n listItems.each(function(_, item) {\r\n listHeight += (0, _renderer.default)(item).outerHeight()\r\n })\r\n } else {\r\n if (selectedIndex <= 1) {\r\n requireListItems = listItems.slice(0, MATERIAL_LOOKUP_LIST_ITEMS_COUNT)\r\n } else {\r\n if (this._isCenteringEnabled(selectedIndex, listItems.length)) {\r\n requireListItems = listItems.slice(selectedIndex - 2, selectedIndex + 3)\r\n } else {\r\n requireListItems = listItems.slice(listItems.length - MATERIAL_LOOKUP_LIST_ITEMS_COUNT, listItems.length)\r\n }\r\n }\r\n requireListItems.each(function(_, item) {\r\n listHeight += (0, _renderer.default)(item).outerHeight()\r\n })\r\n }\r\n }\r\n return listHeight + (grouped ? MATERIAL_LOOKUP_LIST_PADDING : 2 * MATERIAL_LOOKUP_LIST_PADDING)\r\n },\r\n _getPopupHeight: function() {\r\n if (this._list && this._list.itemElements()) {\r\n return this._calculateListHeight(this.option(\"grouped\")) + (this._$searchWrapper ? this._$searchWrapper.outerHeight() : 0) + (this._popup._$bottom ? this._popup._$bottom.outerHeight() : 0) + (this._popup._$title ? this._popup._$title.outerHeight() : 0)\r\n } else {\r\n return \"auto\"\r\n }\r\n },\r\n _renderPopup: function() {\r\n if (this.option(\"usePopover\") && !this.option(\"dropDownOptions.fullScreen\")) {\r\n if (this.option(\"_scrollToSelectedItemEnabled\")) {\r\n this.callBase()\r\n } else {\r\n this._renderPopover()\r\n }\r\n } else {\r\n this.callBase()\r\n }\r\n this._$popup.addClass(LOOKUP_POPUP_CLASS);\r\n this._popup._wrapper().addClass(LOOKUP_POPUP_WRAPPER_CLASS)\r\n },\r\n _renderPopover: function() {\r\n this._popup = this._createComponent(this._$popup, _popover.default, (0, _extend.extend)(this._popupConfig(), this._options.cache(\"dropDownOptions\"), {\r\n showEvent: null,\r\n hideEvent: null,\r\n target: this.$element(),\r\n _fixedPosition: false,\r\n fullScreen: false,\r\n shading: false,\r\n closeOnTargetScroll: true,\r\n width: this._isInitialOptionValue(\"dropDownOptions.width\") ? function() {\r\n return this.$element().outerWidth()\r\n }.bind(this) : this._popupConfig().width\r\n }));\r\n this._popup.on({\r\n showing: this._popupShowingHandler.bind(this),\r\n shown: this._popupShownHandler.bind(this),\r\n hiding: this._popupHidingHandler.bind(this),\r\n hidden: this._popupHiddenHandler.bind(this),\r\n contentReady: this._contentReadyHandler.bind(this)\r\n });\r\n if (this.option(\"_scrollToSelectedItemEnabled\")) {\r\n this._popup._$arrow.remove()\r\n }\r\n this._setPopupContentId(this._popup.$content());\r\n this._contentReadyHandler()\r\n },\r\n _popupHidingHandler: function() {\r\n this.callBase();\r\n this.option(\"focusStateEnabled\") && this.focus()\r\n },\r\n _popupHiddenHandler: function() {\r\n this.callBase();\r\n if (this.option(\"_scrollToSelectedItemEnabled\")) {\r\n (0, _translator.resetPosition)((0, _renderer.default)(this._popup.content()).parent())\r\n }\r\n },\r\n _preventFocusOnPopup: _common.noop,\r\n _popupConfig: function() {\r\n var _this3 = this;\r\n var result = (0, _extend.extend)(this.callBase(), {\r\n toolbarItems: this._getPopupToolbarItems(),\r\n closeOnTargetScroll: false,\r\n onPositioned: null,\r\n maxHeight: function() {\r\n return (0, _renderer.default)(window).height()\r\n },\r\n showTitle: this.option(\"dropDownOptions.showTitle\"),\r\n title: this.option(\"dropDownOptions.title\"),\r\n titleTemplate: this._getTemplateByOption(\"dropDownOptions.titleTemplate\"),\r\n onTitleRendered: this.option(\"dropDownOptions.onTitleRendered\"),\r\n fullScreen: this.option(\"dropDownOptions.fullScreen\"),\r\n shading: this.option(\"dropDownOptions.shading\"),\r\n closeOnOutsideClick: this.option(\"dropDownOptions.closeOnOutsideClick\")\r\n });\r\n delete result.animation;\r\n delete result.position;\r\n if (this.option(\"_scrollToSelectedItemEnabled\")) {\r\n result.position = this.option(\"dropDownCentered\") ? {\r\n my: \"left top\",\r\n at: \"left top\",\r\n of: this.element()\r\n } : {\r\n my: \"left top\",\r\n at: \"left bottom\",\r\n of: this.element()\r\n };\r\n result.closeOnTargetScroll = true\r\n }(0, _iterator.each)([\"position\", \"animation\", \"width\", \"height\"], function(_, optionName) {\r\n var popupOptionValue = _this3.option(\"dropDownOptions.\".concat(optionName));\r\n if (void 0 !== popupOptionValue) {\r\n result[optionName] = popupOptionValue\r\n }\r\n });\r\n return result\r\n },\r\n _getPopupToolbarItems: function() {\r\n var buttonsConfig = \"useButtons\" === this.option(\"applyValueMode\") ? this._popupToolbarItemsConfig() : [];\r\n var cancelButton = this._getCancelButtonConfig();\r\n if (cancelButton) {\r\n buttonsConfig.push(cancelButton)\r\n }\r\n var clearButton = this._getClearButtonConfig();\r\n if (clearButton) {\r\n buttonsConfig.push(clearButton)\r\n }\r\n return this._applyButtonsLocation(buttonsConfig)\r\n },\r\n _popupToolbarItemsConfig: function() {\r\n return [{\r\n shortcut: \"done\",\r\n options: {\r\n onClick: this._applyButtonHandler.bind(this),\r\n text: this.option(\"applyButtonText\")\r\n }\r\n }]\r\n },\r\n _getCancelButtonConfig: function() {\r\n var _this4 = this;\r\n return this.option(\"showCancelButton\") ? {\r\n shortcut: \"cancel\",\r\n onClick: this._cancelButtonHandler.bind(this),\r\n options: {\r\n onInitialized: function(e) {\r\n e.component.registerKeyHandler(\"escape\", _this4.close.bind(_this4))\r\n },\r\n text: this.option(\"cancelButtonText\")\r\n }\r\n } : null\r\n },\r\n _getClearButtonConfig: function() {\r\n return this.option(\"showClearButton\") ? {\r\n shortcut: \"clear\",\r\n onClick: this._resetValue.bind(this),\r\n options: {\r\n text: this.option(\"clearButtonText\")\r\n }\r\n } : null\r\n },\r\n _applyButtonHandler: function(args) {\r\n if (args) {\r\n this._saveValueChangeEvent(args.event)\r\n }\r\n this.option(\"value\", this._valueGetter(this._currentSelectedItem()));\r\n this.callBase()\r\n },\r\n _cancelButtonHandler: function() {\r\n this._refreshSelected();\r\n this.callBase()\r\n },\r\n _refreshPopupVisibility: function() {\r\n if (this.option(\"opened\")) {\r\n this._updatePopupDimensions()\r\n }\r\n },\r\n _dimensionChanged: function() {\r\n if (this.option(\"usePopover\") && !this.option(\"dropDownOptions.width\")) {\r\n this.option(\"dropDownOptions.width\", this.$element().width())\r\n }\r\n this._popup && this._updatePopupDimensions()\r\n },\r\n _input: function() {\r\n return this._$searchBox || this.callBase()\r\n },\r\n _renderPopupContent: function() {\r\n this.callBase();\r\n this._renderSearch()\r\n },\r\n _renderSearch: function() {\r\n var _this5 = this;\r\n var isSearchEnabled = this.option(\"searchEnabled\");\r\n this._toggleSearchClass(isSearchEnabled);\r\n if (isSearchEnabled) {\r\n var $searchWrapper = this._$searchWrapper = (0, _renderer.default)(\"
\").addClass(LOOKUP_SEARCH_WRAPPER_CLASS);\r\n var $searchBox = this._$searchBox = (0, _renderer.default)(\"
\").addClass(LOOKUP_SEARCH_CLASS).appendTo($searchWrapper);\r\n var currentDevice = _devices.default.current();\r\n var searchMode = currentDevice.android && currentDevice.version[0] >= 5 ? \"text\" : \"search\";\r\n var isKeyboardListeningEnabled = false;\r\n this._searchBox = this._createComponent($searchBox, _text_box.default, {\r\n onDisposing: function() {\r\n return isKeyboardListeningEnabled = false\r\n },\r\n onFocusIn: function() {\r\n return isKeyboardListeningEnabled = true\r\n },\r\n onFocusOut: function() {\r\n return isKeyboardListeningEnabled = false\r\n },\r\n onKeyboardHandled: function(opts) {\r\n return isKeyboardListeningEnabled && _this5._list._keyboardHandler(opts)\r\n },\r\n mode: searchMode,\r\n showClearButton: true,\r\n valueChangeEvent: this.option(\"valueChangeEvent\"),\r\n onValueChanged: this._searchHandler.bind(this)\r\n });\r\n this._registerSearchKeyHandlers();\r\n $searchWrapper.insertBefore(this._$list);\r\n this._setSearchPlaceholder()\r\n }\r\n },\r\n _removeSearch: function() {\r\n this._$searchWrapper && this._$searchWrapper.remove();\r\n delete this._$searchWrapper;\r\n this._$searchBox && this._$searchBox.remove();\r\n delete this._$searchBox;\r\n delete this._searchBox\r\n },\r\n _selectListItemHandler: function(e) {\r\n var $itemElement = (0, _renderer.default)(this._list.option(\"focusedElement\"));\r\n if (!$itemElement.length) {\r\n return\r\n }\r\n e.preventDefault();\r\n e.target = $itemElement.get(0);\r\n this._saveValueChangeEvent(e);\r\n this._selectListItem(e.itemData, $itemElement)\r\n },\r\n _registerSearchKeyHandlers: function() {\r\n this._searchBox.registerKeyHandler(\"escape\", this.close.bind(this));\r\n this._searchBox.registerKeyHandler(\"enter\", this._selectListItemHandler.bind(this));\r\n this._searchBox.registerKeyHandler(\"space\", this._selectListItemHandler.bind(this));\r\n this._searchBox.registerKeyHandler(\"end\", _common.noop);\r\n this._searchBox.registerKeyHandler(\"home\", _common.noop)\r\n },\r\n _toggleSearchClass: function(isSearchEnabled) {\r\n if (this._popup) {\r\n this._popup._wrapper().toggleClass(LOOKUP_POPUP_SEARCH_CLASS, isSearchEnabled)\r\n }\r\n },\r\n _setSearchPlaceholder: function() {\r\n if (!this._$searchBox) {\r\n return\r\n }\r\n var minSearchLength = this.option(\"minSearchLength\");\r\n var placeholder = this.option(\"searchPlaceholder\");\r\n if (minSearchLength && placeholder === _message.default.format(\"Search\")) {\r\n placeholder = _message.default.getFormatter(\"dxLookup-searchPlaceholder\")(minSearchLength)\r\n }\r\n this._searchBox.option(\"placeholder\", placeholder)\r\n },\r\n _setAriaTargetForList: _common.noop,\r\n _renderList: function() {\r\n var _this6 = this;\r\n this.callBase();\r\n this._list.registerKeyHandler(\"escape\", function() {\r\n _this6.close()\r\n })\r\n },\r\n _listConfig: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n tabIndex: 0,\r\n grouped: this.option(\"grouped\"),\r\n groupTemplate: this._getTemplateByOption(\"groupTemplate\"),\r\n pullRefreshEnabled: this.option(\"pullRefreshEnabled\"),\r\n useNativeScrolling: this.option(\"useNativeScrolling\"),\r\n pullingDownText: this.option(\"pullingDownText\"),\r\n pulledDownText: this.option(\"pulledDownText\"),\r\n refreshingText: this.option(\"refreshingText\"),\r\n pageLoadingText: this.option(\"pageLoadingText\"),\r\n onScroll: this._scrollHandler.bind(this),\r\n onPullRefresh: this._pullRefreshHandler.bind(this),\r\n onPageLoading: this._pageLoadingHandler.bind(this),\r\n pageLoadMode: this.option(\"pageLoadMode\"),\r\n nextButtonText: this.option(\"nextButtonText\"),\r\n indicateLoading: this.option(\"searchEnabled\"),\r\n onSelectionChanged: this._getSelectionChangedHandler()\r\n })\r\n },\r\n _getSelectionChangedHandler: function() {\r\n return this.option(\"showSelectionControls\") ? this._selectionChangeHandler.bind(this) : _common.noop\r\n },\r\n _listContentReadyHandler: function() {\r\n this.callBase.apply(this, arguments);\r\n this._refreshSelected()\r\n },\r\n _setFocusPolicy: function() {\r\n if (!this.option(\"focusStateEnabled\")) {\r\n return\r\n }\r\n if (this.option(\"searchEnabled\")) {\r\n this._searchBox.focus()\r\n } else {\r\n _events_engine.default.trigger(this._$list, \"focus\")\r\n }\r\n },\r\n _focusTarget: function() {\r\n return this._$field\r\n },\r\n _keyboardEventBindingTarget: function() {\r\n return this._$field\r\n },\r\n _listItemClickHandler: function(e) {\r\n this._saveValueChangeEvent(e.event);\r\n this._selectListItem(e.itemData, e.event.currentTarget)\r\n },\r\n _selectListItem: function(itemData, target) {\r\n this._list.selectItem(target);\r\n if (\"instantly\" === this.option(\"applyValueMode\")) {\r\n this._applyButtonHandler()\r\n }\r\n },\r\n _currentSelectedItem: function() {\r\n return this.option(\"grouped\") ? this._list.option(\"selectedItems[0]\").items[0] : this._list.option(\"selectedItems[0]\")\r\n },\r\n _resetValue: function(e) {\r\n this._saveValueChangeEvent(e.event);\r\n this.option(\"value\", null);\r\n this.option(\"opened\", false)\r\n },\r\n _searchValue: function() {\r\n return this.option(\"searchEnabled\") && this._searchBox ? this._searchBox.option(\"value\") : \"\"\r\n },\r\n _renderInputValue: function() {\r\n var _this7 = this;\r\n return this.callBase().always(function() {\r\n _this7._refreshSelected()\r\n })\r\n },\r\n _renderPlaceholder: function() {\r\n if (0 === this.$element().find(\".\" + TEXTEDITOR_INPUT_CLASS).length) {\r\n return\r\n }\r\n this.callBase()\r\n },\r\n _clean: function() {\r\n this._$fieldWrapper.remove();\r\n this._$searchBox = null;\r\n delete this._inkRipple;\r\n this.callBase()\r\n },\r\n _setDeprecatedOptions: function() {\r\n this.callBase();\r\n (0, _extend.extend)(this._deprecatedOptions, {\r\n title: {\r\n since: \"20.1\",\r\n alias: \"dropDownOptions.title\"\r\n },\r\n titleTemplate: {\r\n since: \"20.1\",\r\n alias: \"dropDownOptions.titleTemplate\"\r\n },\r\n onTitleRendered: {\r\n since: \"20.1\",\r\n alias: \"dropDownOptions.onTitleRendered\"\r\n },\r\n fullScreen: {\r\n since: \"20.1\",\r\n alias: \"dropDownOptions.fullScreen\"\r\n },\r\n popupWidth: {\r\n since: \"20.1\",\r\n alias: \"dropDownOptions.width\"\r\n },\r\n popupHeight: {\r\n since: \"20.1\",\r\n alias: \"dropDownOptions.height\"\r\n },\r\n shading: {\r\n since: \"20.1\",\r\n alias: \"dropDownOptions.shading\"\r\n },\r\n closeOnOutsideClick: {\r\n since: \"20.1\",\r\n alias: \"dropDownOptions.closeOnOutsideClick\"\r\n },\r\n position: {\r\n since: \"20.1\",\r\n alias: \"dropDownOptions.position\"\r\n },\r\n animation: {\r\n since: \"20.1\",\r\n alias: \"dropDownOptions.animation\"\r\n }\r\n })\r\n },\r\n _optionChanged: function(args) {\r\n var name = args.name;\r\n var value = args.value;\r\n switch (name) {\r\n case \"dataSource\":\r\n this.callBase.apply(this, arguments);\r\n this._renderField();\r\n break;\r\n case \"searchEnabled\":\r\n if (this._popup) {\r\n this._removeSearch();\r\n this._renderSearch()\r\n }\r\n break;\r\n case \"searchPlaceholder\":\r\n this._setSearchPlaceholder();\r\n break;\r\n case \"minSearchLength\":\r\n this._setSearchPlaceholder();\r\n this.callBase.apply(this, arguments);\r\n break;\r\n case \"title\":\r\n case \"titleTemplate\":\r\n case \"onTitleRendered\":\r\n case \"shading\":\r\n case \"animation\":\r\n case \"position\":\r\n case \"closeOnOutsideClick\":\r\n case \"fullScreen\":\r\n this._setPopupOption(name, value);\r\n break;\r\n case \"usePopover\":\r\n case \"placeholder\":\r\n this._invalidate();\r\n break;\r\n case \"clearButtonText\":\r\n case \"showClearButton\":\r\n case \"showCancelButton\":\r\n this._setPopupOption(\"toolbarItems\", this._getPopupToolbarItems());\r\n break;\r\n case \"applyValueMode\":\r\n this.callBase.apply(this, arguments);\r\n break;\r\n case \"popupWidth\":\r\n this._setPopupOption(\"width\", \"auto\" === value ? this.initialOption(\"dropDownOptions\").width : value);\r\n break;\r\n case \"popupHeight\":\r\n this._setPopupOption(\"height\", \"auto\" === value ? this.initialOption(\"dropDownOptions\").height : value);\r\n break;\r\n case \"onPageLoading\":\r\n this._initPageLoadingAction();\r\n break;\r\n case \"onPullRefresh\":\r\n this._initPullRefreshAction();\r\n break;\r\n case \"pullRefreshEnabled\":\r\n case \"useNativeScrolling\":\r\n case \"pullingDownText\":\r\n case \"pulledDownText\":\r\n case \"refreshingText\":\r\n case \"pageLoadingText\":\r\n case \"nextButtonText\":\r\n case \"grouped\":\r\n case \"groupTemplate\":\r\n this._setListOption(name);\r\n break;\r\n case \"onScroll\":\r\n this._initScrollAction();\r\n break;\r\n case \"pageLoadMode\":\r\n this._setListOption(\"pageLoadMode\", this.option(\"pageLoadMode\"));\r\n break;\r\n case \"cleanSearchOnOpening\":\r\n case \"_scrollToSelectedItemEnabled\":\r\n break;\r\n case \"dropDownCentered\":\r\n if (this.option(\"_scrollToSelectedItemEnabled\")) {\r\n this.option(\"dropDownOptions.position\", void 0);\r\n this._renderPopup()\r\n }\r\n break;\r\n default:\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n focus: function() {\r\n this.option(\"opened\") ? this._setFocusPolicy() : _events_engine.default.trigger(this._focusTarget(), \"focus\")\r\n },\r\n field: function() {\r\n return this._$field\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxLookup\", Lookup);\r\nvar _default = Lookup;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/map.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _promise = _interopRequireDefault(require(\"../core/polyfills/promise\"));\r\nvar _deferred = require(\"../core/utils/deferred\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _ui = _interopRequireDefault(require(\"./widget/ui.errors\"));\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _ui2 = _interopRequireDefault(require(\"./widget/ui.widget\"));\r\nvar _inflector = require(\"../core/utils/inflector\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _array = require(\"../core/utils/array\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _index = require(\"../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../events/pointer\"));\r\nvar _provider = _interopRequireDefault(require(\"./map/provider.google_static\"));\r\nvar _providerDynamic = _interopRequireDefault(require(\"./map/provider.dynamic.google\"));\r\nvar _providerDynamic2 = _interopRequireDefault(require(\"./map/provider.dynamic.bing\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar PROVIDERS = {\r\n googleStatic: _provider.default,\r\n google: _providerDynamic.default,\r\n bing: _providerDynamic2.default\r\n};\r\nvar MAP_CLASS = \"dx-map\";\r\nvar MAP_CONTAINER_CLASS = \"dx-map-container\";\r\nvar MAP_SHIELD_CLASS = \"dx-map-shield\";\r\nvar NATIVE_CLICK_CLASS = \"dx-native-click\";\r\nvar Map = _ui2.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n bounds: {\r\n northEast: null,\r\n southWest: null\r\n },\r\n center: {\r\n lat: 0,\r\n lng: 0\r\n },\r\n zoom: 1,\r\n width: 300,\r\n height: 300,\r\n type: \"roadmap\",\r\n provider: \"google\",\r\n autoAdjust: true,\r\n markers: [],\r\n markerIconSrc: null,\r\n onMarkerAdded: null,\r\n onMarkerRemoved: null,\r\n routes: [],\r\n onRouteAdded: null,\r\n onRouteRemoved: null,\r\n key: {\r\n bing: \"\",\r\n google: \"\",\r\n googleStatic: \"\"\r\n },\r\n apiKey: {\r\n bing: \"\",\r\n google: \"\",\r\n googleStatic: \"\"\r\n },\r\n controls: false,\r\n onReady: null,\r\n onUpdated: null,\r\n onClick: null\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 _setDeprecatedOptions: function() {\r\n this.callBase();\r\n (0, _extend.extend)(this._deprecatedOptions, {\r\n key: {\r\n since: \"20.2\",\r\n alias: \"apiKey\"\r\n }\r\n })\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this.$element().addClass(MAP_CLASS).addClass(NATIVE_CLICK_CLASS);\r\n this._lastAsyncAction = _promise.default.resolve();\r\n this._checkOption(\"provider\");\r\n this._checkOption(\"markers\");\r\n this._checkOption(\"routes\");\r\n this._initContainer();\r\n this._grabEvents();\r\n this._rendered = {}\r\n },\r\n _useTemplates: function() {\r\n return false\r\n },\r\n _checkOption: function(option) {\r\n var value = this.option(option);\r\n if (\"markers\" === option && !Array.isArray(value)) {\r\n throw _ui.default.Error(\"E1022\")\r\n }\r\n if (\"routes\" === option && !Array.isArray(value)) {\r\n throw _ui.default.Error(\"E1023\")\r\n }\r\n },\r\n _initContainer: function() {\r\n this._$container = (0, _renderer.default)(\"
\").addClass(MAP_CONTAINER_CLASS);\r\n this.$element().append(this._$container)\r\n },\r\n _grabEvents: function() {\r\n var eventName = (0, _index.addNamespace)(_pointer.default.down, this.NAME);\r\n _events_engine.default.on(this.$element(), eventName, this._cancelEvent.bind(this))\r\n },\r\n _cancelEvent: function(e) {\r\n var cancelByProvider = this._provider && this._provider.isEventsCanceled(e) && !this.option(\"disabled\");\r\n if (cancelByProvider) {\r\n e.stopPropagation()\r\n }\r\n },\r\n _saveRendered: function(option) {\r\n var value = this.option(option);\r\n this._rendered[option] = value.slice()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._renderShield();\r\n this._saveRendered(\"markers\");\r\n this._saveRendered(\"routes\");\r\n this._provider = new(PROVIDERS[this.option(\"provider\")])(this, this._$container);\r\n this._queueAsyncAction(\"render\", this._rendered.markers, this._rendered.routes)\r\n },\r\n _renderShield: function() {\r\n var $shield;\r\n if (this.option(\"disabled\")) {\r\n $shield = (0, _renderer.default)(\"
\").addClass(MAP_SHIELD_CLASS);\r\n this.$element().append($shield)\r\n } else {\r\n $shield = this.$element().find(\".\" + MAP_SHIELD_CLASS);\r\n $shield.remove()\r\n }\r\n },\r\n _clean: function() {\r\n this._cleanFocusState();\r\n if (this._provider) {\r\n this._provider.clean()\r\n }\r\n this._provider = null;\r\n this._lastAsyncAction = _promise.default.resolve();\r\n this.setOptionSilent(\"bounds\", {\r\n northEast: null,\r\n southWest: null\r\n });\r\n delete this._suppressAsyncAction\r\n },\r\n _optionChanged: function(args) {\r\n var name = args.name;\r\n var changeBag = this._optionChangeBag;\r\n this._optionChangeBag = null;\r\n switch (name) {\r\n case \"disabled\":\r\n this._renderShield();\r\n this.callBase(args);\r\n break;\r\n case \"width\":\r\n case \"height\":\r\n this.callBase(args);\r\n this._dimensionChanged();\r\n break;\r\n case \"provider\":\r\n this._suppressAsyncAction = true;\r\n this._invalidate();\r\n break;\r\n case \"key\":\r\n case \"apiKey\":\r\n _ui.default.log(\"W1001\");\r\n break;\r\n case \"bounds\":\r\n this._queueAsyncAction(\"updateBounds\");\r\n break;\r\n case \"center\":\r\n this._queueAsyncAction(\"updateCenter\");\r\n break;\r\n case \"zoom\":\r\n this._queueAsyncAction(\"updateZoom\");\r\n break;\r\n case \"type\":\r\n this._queueAsyncAction(\"updateMapType\");\r\n break;\r\n case \"controls\":\r\n this._queueAsyncAction(\"updateControls\", this._rendered.markers, this._rendered.routes);\r\n break;\r\n case \"autoAdjust\":\r\n this._queueAsyncAction(\"adjustViewport\");\r\n break;\r\n case \"markers\":\r\n case \"routes\":\r\n this._checkOption(name);\r\n var prevValue = this._rendered[name];\r\n this._saveRendered(name);\r\n this._queueAsyncAction(\"update\" + (0, _inflector.titleize)(name), changeBag ? changeBag.removed : prevValue, changeBag ? changeBag.added : this._rendered[name]).then(function(result) {\r\n if (changeBag) {\r\n changeBag.resolve(result)\r\n }\r\n });\r\n break;\r\n case \"markerIconSrc\":\r\n this._queueAsyncAction(\"updateMarkers\", this._rendered.markers, this._rendered.markers);\r\n break;\r\n case \"onReady\":\r\n case \"onUpdated\":\r\n case \"onMarkerAdded\":\r\n case \"onMarkerRemoved\":\r\n case \"onRouteAdded\":\r\n case \"onRouteRemoved\":\r\n case \"onClick\":\r\n break;\r\n default:\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this._dimensionChanged()\r\n }\r\n },\r\n _dimensionChanged: function() {\r\n this._queueAsyncAction(\"updateDimensions\")\r\n },\r\n _queueAsyncAction: function(name) {\r\n var options = [].slice.call(arguments).slice(1);\r\n var isActionSuppressed = this._suppressAsyncAction;\r\n this._lastAsyncAction = this._lastAsyncAction.then(function() {\r\n if (!this._provider || isActionSuppressed) {\r\n return _promise.default.resolve()\r\n }\r\n return this._provider[name].apply(this._provider, options).then(function(result) {\r\n result = (0, _array.wrapToArray)(result);\r\n var mapRefreshed = result[0];\r\n if (mapRefreshed && !this._disposed) {\r\n this._triggerReadyAction()\r\n }\r\n return result[1]\r\n }.bind(this))\r\n }.bind(this));\r\n return this._lastAsyncAction\r\n },\r\n _triggerReadyAction: function() {\r\n this._createActionByOption(\"onReady\")({\r\n originalMap: this._provider.map()\r\n })\r\n },\r\n _triggerUpdateAction: function() {\r\n this._createActionByOption(\"onUpdated\")()\r\n },\r\n setOptionSilent: function(name, value) {\r\n this._setOptionWithoutOptionChange(name, value)\r\n },\r\n addMarker: function(marker) {\r\n return this._addFunction(\"markers\", marker)\r\n },\r\n removeMarker: function(marker) {\r\n return this._removeFunction(\"markers\", marker)\r\n },\r\n addRoute: function(route) {\r\n return this._addFunction(\"routes\", route)\r\n },\r\n removeRoute: function(route) {\r\n return this._removeFunction(\"routes\", route)\r\n },\r\n _addFunction: function(optionName, addingValue) {\r\n var optionValue = this.option(optionName);\r\n var addingValues = (0, _array.wrapToArray)(addingValue);\r\n optionValue.push.apply(optionValue, addingValues);\r\n return this._partialArrayOptionChange(optionName, optionValue, addingValues, [])\r\n },\r\n _removeFunction: function(optionName, removingValue) {\r\n var optionValue = this.option(optionName);\r\n var removingValues = (0, _array.wrapToArray)(removingValue);\r\n (0, _iterator.each)(removingValues, function(removingIndex, removingValue) {\r\n var index = (0, _type.isNumeric)(removingValue) ? removingValue : (0, _array.inArray)(removingValue, optionValue);\r\n if (index !== -1) {\r\n var removing = optionValue.splice(index, 1)[0];\r\n removingValues.splice(removingIndex, 1, removing)\r\n } else {\r\n throw _ui.default.log(\"E1021\", (0, _inflector.titleize)(optionName.substring(0, optionName.length - 1)), removingValue)\r\n }\r\n });\r\n return this._partialArrayOptionChange(optionName, optionValue, [], removingValues)\r\n },\r\n _partialArrayOptionChange: function(optionName, optionValue, addingValues, removingValues) {\r\n return (0, _deferred.fromPromise)(new _promise.default(function(resolve) {\r\n this._optionChangeBag = {\r\n resolve: resolve,\r\n added: addingValues,\r\n removed: removingValues\r\n };\r\n this.option(optionName, optionValue)\r\n }.bind(this)).then(function(result) {\r\n return result && 1 === result.length ? result[0] : result\r\n }), this)\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxMap\", Map);\r\nvar _default = Map;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/map/provider.google_static.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _iterator = require(\"../../core/utils/iterator\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _promise = _interopRequireDefault(require(\"../../core/polyfills/promise\"));\r\nvar _provider = _interopRequireDefault(require(\"./provider\"));\r\nvar _color = _interopRequireDefault(require(\"../../color\"));\r\nvar _click = require(\"../../events/click\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar GOOGLE_STATIC_URL = \"https://maps.google.com/maps/api/staticmap?\";\r\nvar GoogleStaticProvider = _provider.default.inherit({\r\n _locationToString: function(location) {\r\n var latLng = this._getLatLng(location);\r\n return latLng ? latLng.lat + \",\" + latLng.lng : location.toString().replace(/ /g, \"+\")\r\n },\r\n _renderImpl: function() {\r\n return this._updateMap()\r\n },\r\n updateDimensions: function() {\r\n return this._updateMap()\r\n },\r\n updateMapType: function() {\r\n return this._updateMap()\r\n },\r\n updateBounds: function() {\r\n return _promise.default.resolve()\r\n },\r\n updateCenter: function() {\r\n return this._updateMap()\r\n },\r\n updateZoom: function() {\r\n return this._updateMap()\r\n },\r\n updateControls: function() {\r\n return _promise.default.resolve()\r\n },\r\n addMarkers: function(options) {\r\n var that = this;\r\n return this._updateMap().then(function(result) {\r\n (0, _iterator.each)(options, function(_, options) {\r\n that._fireMarkerAddedAction({\r\n options: options\r\n })\r\n });\r\n return result\r\n })\r\n },\r\n removeMarkers: function(options) {\r\n var that = this;\r\n return this._updateMap().then(function(result) {\r\n (0, _iterator.each)(options, function(_, options) {\r\n that._fireMarkerRemovedAction({\r\n options: options\r\n })\r\n });\r\n return result\r\n })\r\n },\r\n adjustViewport: function() {\r\n return _promise.default.resolve()\r\n },\r\n addRoutes: function(options) {\r\n var that = this;\r\n return this._updateMap().then(function(result) {\r\n (0, _iterator.each)(options, function(_, options) {\r\n that._fireRouteAddedAction({\r\n options: options\r\n })\r\n });\r\n return result\r\n })\r\n },\r\n removeRoutes: function(options) {\r\n var that = this;\r\n return this._updateMap().then(function(result) {\r\n (0, _iterator.each)(options, function(_, options) {\r\n that._fireRouteRemovedAction({\r\n options: options\r\n })\r\n });\r\n return result\r\n })\r\n },\r\n clean: function() {\r\n this._$container.css(\"backgroundImage\", \"none\");\r\n _events_engine.default.off(this._$container, this._addEventNamespace(_click.name));\r\n return _promise.default.resolve()\r\n },\r\n mapRendered: function() {\r\n return true\r\n },\r\n _updateMap: function() {\r\n var key = this._keyOption(\"googleStatic\");\r\n var $container = this._$container;\r\n var requestOptions = [\"sensor=false\", \"size=\" + Math.round($container.width()) + \"x\" + Math.round($container.height()), \"maptype=\" + this._option(\"type\"), \"center=\" + this._locationToString(this._option(\"center\")), \"zoom=\" + this._option(\"zoom\"), this._markersSubstring()];\r\n requestOptions.push.apply(requestOptions, this._routeSubstrings());\r\n if (key) {\r\n requestOptions.push(\"key=\" + key)\r\n }\r\n var request = GOOGLE_STATIC_URL + requestOptions.join(\"&\");\r\n this._$container.css(\"background\", 'url(\"' + request + '\") no-repeat 0 0');\r\n this._attachClickEvent();\r\n return _promise.default.resolve(true)\r\n },\r\n _markersSubstring: function() {\r\n var that = this;\r\n var markers = [];\r\n var markerIcon = this._option(\"markerIconSrc\");\r\n if (markerIcon) {\r\n markers.push(\"icon:\" + markerIcon)\r\n }(0, _iterator.each)(this._option(\"markers\"), function(_, marker) {\r\n markers.push(that._locationToString(marker.location))\r\n });\r\n return \"markers=\" + markers.join(\"|\")\r\n },\r\n _routeSubstrings: function() {\r\n var that = this;\r\n var routes = [];\r\n (0, _iterator.each)(this._option(\"routes\"), function(_, route) {\r\n var color = new _color.default(route.color || that._defaultRouteColor()).toHex().replace(\"#\", \"0x\");\r\n var opacity = Math.round(255 * (route.opacity || that._defaultRouteOpacity())).toString(16);\r\n var width = route.weight || that._defaultRouteWeight();\r\n var locations = [];\r\n (0, _iterator.each)(route.locations, function(_, routePoint) {\r\n locations.push(that._locationToString(routePoint))\r\n });\r\n routes.push(\"path=color:\" + color + opacity + \"|weight:\" + width + \"|\" + locations.join(\"|\"))\r\n });\r\n return routes\r\n },\r\n _attachClickEvent: function() {\r\n var that = this;\r\n var eventName = this._addEventNamespace(_click.name);\r\n _events_engine.default.off(this._$container, eventName);\r\n _events_engine.default.on(this._$container, eventName, function(e) {\r\n that._fireClickAction({\r\n event: e\r\n })\r\n })\r\n }\r\n});\r\nvar _default = GoogleStaticProvider;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/map/provider.dynamic.google.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _promise = _interopRequireDefault(require(\"../../core/polyfills/promise\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _provider = _interopRequireDefault(require(\"./provider.dynamic\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _color = _interopRequireDefault(require(\"../../color\"));\r\nvar _ajax = _interopRequireDefault(require(\"../../core/utils/ajax\"));\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 window = (0, _window.getWindow)();\r\nvar GOOGLE_MAP_READY = \"_googleScriptReady\";\r\nvar GOOGLE_URL = \"https://maps.googleapis.com/maps/api/js?callback=\" + GOOGLE_MAP_READY;\r\nvar INFO_WINDOW_CLASS = \"gm-style-iw\";\r\nvar CustomMarker;\r\nvar initCustomMarkerClass = function() {\r\n CustomMarker = function(options) {\r\n this._position = options.position;\r\n this._offset = options.offset;\r\n this._$overlayContainer = (0, _renderer.default)(\"
\").css({\r\n position: \"absolute\",\r\n display: \"none\",\r\n cursor: \"pointer\"\r\n }).append(options.html);\r\n this.setMap(options.map)\r\n };\r\n CustomMarker.prototype = new google.maps.OverlayView;\r\n CustomMarker.prototype.onAdd = function() {\r\n var $pane = (0, _renderer.default)(this.getPanes().overlayMouseTarget);\r\n $pane.append(this._$overlayContainer);\r\n this._clickListener = google.maps.event.addDomListener(this._$overlayContainer.get(0), \"click\", function(e) {\r\n google.maps.event.trigger(this, \"click\");\r\n e.preventDefault()\r\n }.bind(this));\r\n this.draw()\r\n };\r\n CustomMarker.prototype.onRemove = function() {\r\n google.maps.event.removeListener(this._clickListener);\r\n this._$overlayContainer.remove()\r\n };\r\n CustomMarker.prototype.draw = function() {\r\n var position = this.getProjection().fromLatLngToDivPixel(this._position);\r\n this._$overlayContainer.css({\r\n left: position.x + this._offset.left,\r\n top: position.y + this._offset.top,\r\n display: \"block\"\r\n })\r\n }\r\n};\r\nvar googleMapsLoaded = function() {\r\n return window.google && window.google.maps\r\n};\r\nvar googleMapsLoader;\r\nvar GoogleProvider = _provider.default.inherit({\r\n _mapType: function(type) {\r\n var mapTypes = {\r\n hybrid: google.maps.MapTypeId.HYBRID,\r\n roadmap: google.maps.MapTypeId.ROADMAP,\r\n satellite: google.maps.MapTypeId.SATELLITE\r\n };\r\n return mapTypes[type] || mapTypes.hybrid\r\n },\r\n _movementMode: function(type) {\r\n var movementTypes = {\r\n driving: google.maps.TravelMode.DRIVING,\r\n walking: google.maps.TravelMode.WALKING\r\n };\r\n return movementTypes[type] || movementTypes.driving\r\n },\r\n _resolveLocation: function(location) {\r\n return new _promise.default(function(resolve) {\r\n var latLng = this._getLatLng(location);\r\n if (latLng) {\r\n resolve(new google.maps.LatLng(latLng.lat, latLng.lng))\r\n } else {\r\n this._geocodeLocation(location).then(function(geocodedLocation) {\r\n resolve(geocodedLocation)\r\n })\r\n }\r\n }.bind(this))\r\n },\r\n _geocodedLocations: {},\r\n _geocodeLocationImpl: function(location) {\r\n return new _promise.default(function(resolve) {\r\n if (!(0, _type.isDefined)(location)) {\r\n resolve(new google.maps.LatLng(0, 0));\r\n return\r\n }\r\n var geocoder = new google.maps.Geocoder;\r\n geocoder.geocode({\r\n address: location\r\n }, function(results, status) {\r\n if (status === google.maps.GeocoderStatus.OK) {\r\n resolve(results[0].geometry.location)\r\n } else {\r\n _ui.default.log(\"W1006\", status);\r\n resolve(new google.maps.LatLng(0, 0))\r\n }\r\n })\r\n })\r\n },\r\n _normalizeLocation: function(location) {\r\n return {\r\n lat: location.lat(),\r\n lng: location.lng()\r\n }\r\n },\r\n _normalizeLocationRect: function(locationRect) {\r\n return {\r\n northEast: this._normalizeLocation(locationRect.getNorthEast()),\r\n southWest: this._normalizeLocation(locationRect.getSouthWest())\r\n }\r\n },\r\n _loadImpl: function() {\r\n return new _promise.default(function(resolve) {\r\n if (googleMapsLoaded()) {\r\n resolve()\r\n } else {\r\n if (!googleMapsLoader) {\r\n googleMapsLoader = this._loadMapScript()\r\n }\r\n googleMapsLoader.then(function() {\r\n if (googleMapsLoaded()) {\r\n resolve();\r\n return\r\n }\r\n this._loadMapScript().then(resolve)\r\n }.bind(this))\r\n }\r\n }.bind(this)).then(function() {\r\n initCustomMarkerClass()\r\n })\r\n },\r\n _loadMapScript: function() {\r\n return new _promise.default(function(resolve) {\r\n var key = this._keyOption(\"google\");\r\n window[GOOGLE_MAP_READY] = resolve;\r\n _ajax.default.sendRequest({\r\n url: GOOGLE_URL + (key ? \"&key=\" + key : \"\"),\r\n dataType: \"script\"\r\n })\r\n }.bind(this)).then(function() {\r\n try {\r\n delete window[GOOGLE_MAP_READY]\r\n } catch (e) {\r\n window[GOOGLE_MAP_READY] = void 0\r\n }\r\n })\r\n },\r\n _init: function() {\r\n return new _promise.default(function(resolve) {\r\n this._resolveLocation(this._option(\"center\")).then(function(center) {\r\n var showDefaultUI = this._option(\"controls\");\r\n this._map = new google.maps.Map(this._$container[0], {\r\n zoom: this._option(\"zoom\"),\r\n center: center,\r\n disableDefaultUI: !showDefaultUI\r\n });\r\n var listener = google.maps.event.addListener(this._map, \"idle\", function() {\r\n resolve(listener)\r\n })\r\n }.bind(this))\r\n }.bind(this)).then(function(listener) {\r\n google.maps.event.removeListener(listener)\r\n })\r\n },\r\n _attachHandlers: function() {\r\n this._boundsChangeListener = google.maps.event.addListener(this._map, \"bounds_changed\", this._boundsChangeHandler.bind(this));\r\n this._clickListener = google.maps.event.addListener(this._map, \"click\", this._clickActionHandler.bind(this))\r\n },\r\n _boundsChangeHandler: function() {\r\n var bounds = this._map.getBounds();\r\n this._option(\"bounds\", this._normalizeLocationRect(bounds));\r\n var center = this._map.getCenter();\r\n this._option(\"center\", this._normalizeLocation(center));\r\n if (!this._preventZoomChangeEvent) {\r\n this._option(\"zoom\", this._map.getZoom())\r\n }\r\n },\r\n _clickActionHandler: function(e) {\r\n this._fireClickAction({\r\n location: this._normalizeLocation(e.latLng)\r\n })\r\n },\r\n updateDimensions: function() {\r\n var center = this._option(\"center\");\r\n google.maps.event.trigger(this._map, \"resize\");\r\n this._option(\"center\", center);\r\n return this.updateCenter()\r\n },\r\n updateMapType: function() {\r\n this._map.setMapTypeId(this._mapType(this._option(\"type\")));\r\n return _promise.default.resolve()\r\n },\r\n updateBounds: function() {\r\n return _promise.default.all([this._resolveLocation(this._option(\"bounds.northEast\")), this._resolveLocation(this._option(\"bounds.southWest\"))]).then(function(result) {\r\n var bounds = new google.maps.LatLngBounds;\r\n bounds.extend(result[0]);\r\n bounds.extend(result[1]);\r\n this._map.fitBounds(bounds)\r\n }.bind(this))\r\n },\r\n updateCenter: function() {\r\n return this._resolveLocation(this._option(\"center\")).then(function(center) {\r\n this._map.setCenter(center);\r\n this._option(\"center\", this._normalizeLocation(center))\r\n }.bind(this))\r\n },\r\n updateZoom: function() {\r\n this._map.setZoom(this._option(\"zoom\"));\r\n return _promise.default.resolve()\r\n },\r\n updateControls: function() {\r\n var showDefaultUI = this._option(\"controls\");\r\n this._map.setOptions({\r\n disableDefaultUI: !showDefaultUI\r\n });\r\n return _promise.default.resolve()\r\n },\r\n isEventsCanceled: function(e) {\r\n var gestureHandling = this._map && this._map.get(\"gestureHandling\");\r\n var isInfoWindowContent = (0, _renderer.default)(e.target).closest(\".\".concat(INFO_WINDOW_CLASS)).length > 0;\r\n if (isInfoWindowContent || \"desktop\" !== _devices.default.real().deviceType && \"cooperative\" === gestureHandling) {\r\n return false\r\n }\r\n return this.callBase()\r\n },\r\n _renderMarker: function(options) {\r\n return this._resolveLocation(options.location).then(function(location) {\r\n var marker;\r\n if (options.html) {\r\n marker = new CustomMarker({\r\n map: this._map,\r\n position: location,\r\n html: options.html,\r\n offset: (0, _extend.extend)({\r\n top: 0,\r\n left: 0\r\n }, options.htmlOffset)\r\n })\r\n } else {\r\n marker = new google.maps.Marker({\r\n position: location,\r\n map: this._map,\r\n icon: options.iconSrc || this._option(\"markerIconSrc\")\r\n })\r\n }\r\n var infoWindow = this._renderTooltip(marker, options.tooltip);\r\n var listener;\r\n if (options.onClick || options.tooltip) {\r\n var markerClickAction = this._mapWidget._createAction(options.onClick || _common.noop);\r\n var markerNormalizedLocation = this._normalizeLocation(location);\r\n listener = google.maps.event.addListener(marker, \"click\", function() {\r\n markerClickAction({\r\n location: markerNormalizedLocation\r\n });\r\n if (infoWindow) {\r\n infoWindow.open(this._map, marker)\r\n }\r\n }.bind(this))\r\n }\r\n return {\r\n location: location,\r\n marker: marker,\r\n listener: listener\r\n }\r\n }.bind(this))\r\n },\r\n _renderTooltip: function(marker, options) {\r\n if (!options) {\r\n return\r\n }\r\n options = this._parseTooltipOptions(options);\r\n var infoWindow = new google.maps.InfoWindow({\r\n content: options.text\r\n });\r\n if (options.visible) {\r\n infoWindow.open(this._map, marker)\r\n }\r\n return infoWindow\r\n },\r\n _destroyMarker: function(marker) {\r\n marker.marker.setMap(null);\r\n if (marker.listener) {\r\n google.maps.event.removeListener(marker.listener)\r\n }\r\n },\r\n _renderRoute: function(options) {\r\n return _promise.default.all((0, _iterator.map)(options.locations, function(point) {\r\n return this._resolveLocation(point)\r\n }.bind(this))).then(function(locations) {\r\n return new _promise.default(function(resolve) {\r\n var origin = locations.shift();\r\n var destination = locations.pop();\r\n var waypoints = (0, _iterator.map)(locations, function(location) {\r\n return {\r\n location: location,\r\n stopover: true\r\n }\r\n });\r\n var request = {\r\n origin: origin,\r\n destination: destination,\r\n waypoints: waypoints,\r\n optimizeWaypoints: true,\r\n travelMode: this._movementMode(options.mode)\r\n };\r\n (new google.maps.DirectionsService).route(request, function(response, status) {\r\n if (status === google.maps.DirectionsStatus.OK) {\r\n var color = new _color.default(options.color || this._defaultRouteColor()).toHex();\r\n var directionOptions = {\r\n directions: response,\r\n map: this._map,\r\n suppressMarkers: true,\r\n preserveViewport: true,\r\n polylineOptions: {\r\n strokeWeight: options.weight || this._defaultRouteWeight(),\r\n strokeOpacity: options.opacity || this._defaultRouteOpacity(),\r\n strokeColor: color\r\n }\r\n };\r\n var route = new google.maps.DirectionsRenderer(directionOptions);\r\n var bounds = response.routes[0].bounds;\r\n resolve({\r\n instance: route,\r\n northEast: bounds.getNorthEast(),\r\n southWest: bounds.getSouthWest()\r\n })\r\n } else {\r\n _ui.default.log(\"W1006\", status);\r\n resolve({\r\n instance: new google.maps.DirectionsRenderer({})\r\n })\r\n }\r\n }.bind(this))\r\n }.bind(this))\r\n }.bind(this))\r\n },\r\n _destroyRoute: function(routeObject) {\r\n routeObject.instance.setMap(null)\r\n },\r\n _fitBounds: function() {\r\n this._updateBounds();\r\n if (this._bounds && this._option(\"autoAdjust\")) {\r\n var zoomBeforeFitting = this._map.getZoom();\r\n this._preventZoomChangeEvent = true;\r\n this._map.fitBounds(this._bounds);\r\n this._boundsChangeHandler();\r\n var zoomAfterFitting = this._map.getZoom();\r\n if (zoomBeforeFitting < zoomAfterFitting) {\r\n this._map.setZoom(zoomBeforeFitting)\r\n } else {\r\n this._option(\"zoom\", zoomAfterFitting)\r\n }\r\n delete this._preventZoomChangeEvent\r\n }\r\n return _promise.default.resolve()\r\n },\r\n _extendBounds: function(location) {\r\n if (this._bounds) {\r\n this._bounds.extend(location)\r\n } else {\r\n this._bounds = new google.maps.LatLngBounds;\r\n this._bounds.extend(location)\r\n }\r\n },\r\n clean: function() {\r\n if (this._map) {\r\n google.maps.event.removeListener(this._boundsChangeListener);\r\n google.maps.event.removeListener(this._clickListener);\r\n this._clearMarkers();\r\n this._clearRoutes();\r\n delete this._map;\r\n this._$container.empty()\r\n }\r\n return _promise.default.resolve()\r\n }\r\n});\r\nvar _default = GoogleProvider;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/map/provider.dynamic.bing.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _window = require(\"../../core/utils/window\");\r\nvar _promise = _interopRequireDefault(require(\"../../core/polyfills/promise\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _provider = _interopRequireDefault(require(\"./provider.dynamic\"));\r\nvar _color = _interopRequireDefault(require(\"../../color\"));\r\nvar _ajax = _interopRequireDefault(require(\"../../core/utils/ajax\"));\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 window = (0, _window.getWindow)();\r\nvar BING_MAP_READY = \"_bingScriptReady\";\r\nvar BING_URL_V8 = \"https://www.bing.com/api/maps/mapcontrol?callback=\" + BING_MAP_READY;\r\nvar INFOBOX_V_OFFSET_V8 = 13;\r\nvar BING_CREDENTIALS = \"AhuxC0dQ1DBTNo8L-H9ToVMQStmizZzBJdraTSgCzDSWPsA1Qd8uIvFSflzxdaLH\";\r\nvar MIN_LOCATION_RECT_LENGTH = 1e-16;\r\nvar msMapsLoaded = function() {\r\n return window.Microsoft && window.Microsoft.Maps\r\n};\r\nvar msMapsLoader;\r\nvar BingProvider = _provider.default.inherit({\r\n _mapType: function(type) {\r\n var mapTypes = {\r\n roadmap: Microsoft.Maps.MapTypeId.road,\r\n hybrid: Microsoft.Maps.MapTypeId.aerial,\r\n satellite: Microsoft.Maps.MapTypeId.aerial\r\n };\r\n return mapTypes[type] || mapTypes.road\r\n },\r\n _movementMode: function(type) {\r\n var movementTypes = {\r\n driving: Microsoft.Maps.Directions.RouteMode.driving,\r\n walking: Microsoft.Maps.Directions.RouteMode.walking\r\n };\r\n return movementTypes[type] || movementTypes.driving\r\n },\r\n _resolveLocation: function(location) {\r\n return new _promise.default(function(resolve) {\r\n var latLng = this._getLatLng(location);\r\n if (latLng) {\r\n resolve(new Microsoft.Maps.Location(latLng.lat, latLng.lng))\r\n } else {\r\n this._geocodeLocation(location).then(function(geocodedLocation) {\r\n resolve(geocodedLocation)\r\n })\r\n }\r\n }.bind(this))\r\n },\r\n _geocodedLocations: {},\r\n _geocodeLocationImpl: function(location) {\r\n return new _promise.default(function(resolve) {\r\n if (!(0, _type.isDefined)(location)) {\r\n resolve(new Microsoft.Maps.Location(0, 0));\r\n return\r\n }\r\n var searchManager = new Microsoft.Maps.Search.SearchManager(this._map);\r\n var searchRequest = {\r\n where: location,\r\n count: 1,\r\n callback: function(searchResponse) {\r\n var result = searchResponse.results[0];\r\n if (result) {\r\n var boundsBox = searchResponse.results[0].location;\r\n resolve(new Microsoft.Maps.Location(boundsBox.latitude, boundsBox.longitude))\r\n } else {\r\n resolve(new Microsoft.Maps.Location(0, 0))\r\n }\r\n }\r\n };\r\n searchManager.geocode(searchRequest)\r\n }.bind(this))\r\n },\r\n _normalizeLocation: function(location) {\r\n return {\r\n lat: location.latitude,\r\n lng: location.longitude\r\n }\r\n },\r\n _normalizeLocationRect: function(locationRect) {\r\n var northWest = this._normalizeLocation(locationRect.getNorthwest());\r\n var southEast = this._normalizeLocation(locationRect.getSoutheast());\r\n return {\r\n northEast: {\r\n lat: northWest.lat,\r\n lng: southEast.lng\r\n },\r\n southWest: {\r\n lat: southEast.lat,\r\n lng: northWest.lng\r\n }\r\n }\r\n },\r\n _loadImpl: function() {\r\n return new _promise.default(function(resolve) {\r\n if (msMapsLoaded()) {\r\n resolve()\r\n } else {\r\n if (!msMapsLoader) {\r\n msMapsLoader = this._loadMapScript()\r\n }\r\n msMapsLoader.then(function() {\r\n if (msMapsLoaded()) {\r\n resolve();\r\n return\r\n }\r\n this._loadMapScript().then(resolve)\r\n }.bind(this))\r\n }\r\n }.bind(this)).then(function() {\r\n return _promise.default.all([new _promise.default(function(resolve) {\r\n Microsoft.Maps.loadModule(\"Microsoft.Maps.Search\", {\r\n callback: resolve\r\n })\r\n }), new _promise.default(function(resolve) {\r\n Microsoft.Maps.loadModule(\"Microsoft.Maps.Directions\", {\r\n callback: resolve\r\n })\r\n })])\r\n })\r\n },\r\n _loadMapScript: function() {\r\n return new _promise.default(function(resolve) {\r\n window[BING_MAP_READY] = resolve;\r\n _ajax.default.sendRequest({\r\n url: BING_URL_V8,\r\n dataType: \"script\"\r\n })\r\n }).then(function() {\r\n try {\r\n delete window[BING_MAP_READY]\r\n } catch (e) {\r\n window[BING_MAP_READY] = void 0\r\n }\r\n })\r\n },\r\n _init: function() {\r\n this._createMap();\r\n return _promise.default.resolve()\r\n },\r\n _createMap: function() {\r\n var controls = this._option(\"controls\");\r\n this._map = new Microsoft.Maps.Map(this._$container[0], {\r\n credentials: this._keyOption(\"bing\") || BING_CREDENTIALS,\r\n zoom: this._option(\"zoom\"),\r\n showDashboard: controls,\r\n showMapTypeSelector: controls,\r\n showScalebar: controls\r\n })\r\n },\r\n _attachHandlers: function() {\r\n this._providerViewChangeHandler = Microsoft.Maps.Events.addHandler(this._map, \"viewchange\", this._viewChangeHandler.bind(this));\r\n this._providerClickHandler = Microsoft.Maps.Events.addHandler(this._map, \"click\", this._clickActionHandler.bind(this))\r\n },\r\n _viewChangeHandler: function() {\r\n var bounds = this._map.getBounds();\r\n this._option(\"bounds\", this._normalizeLocationRect(bounds));\r\n var center = this._map.getCenter();\r\n this._option(\"center\", this._normalizeLocation(center));\r\n if (!this._preventZoomChangeEvent) {\r\n this._option(\"zoom\", this._map.getZoom())\r\n }\r\n },\r\n _clickActionHandler: function(e) {\r\n if (\"map\" === e.targetType) {\r\n this._fireClickAction({\r\n location: this._normalizeLocation(e.location)\r\n })\r\n }\r\n },\r\n updateDimensions: function() {\r\n var $container = this._$container;\r\n this._map.setOptions({\r\n width: $container.width(),\r\n height: $container.height()\r\n });\r\n return _promise.default.resolve()\r\n },\r\n updateMapType: function() {\r\n var type = this._option(\"type\");\r\n var labelOverlay = Microsoft.Maps.LabelOverlay;\r\n this._map.setView({\r\n animate: false,\r\n mapTypeId: this._mapType(type),\r\n labelOverlay: \"satellite\" === type ? labelOverlay.hidden : labelOverlay.visible\r\n });\r\n return _promise.default.resolve()\r\n },\r\n updateBounds: function() {\r\n return _promise.default.all([this._resolveLocation(this._option(\"bounds.northEast\")), this._resolveLocation(this._option(\"bounds.southWest\"))]).then(function(result) {\r\n var bounds = new Microsoft.Maps.LocationRect.fromLocations(result[0], result[1]);\r\n this._map.setView({\r\n animate: false,\r\n bounds: bounds\r\n })\r\n }.bind(this))\r\n },\r\n updateCenter: function() {\r\n return this._resolveLocation(this._option(\"center\")).then(function(center) {\r\n this._map.setView({\r\n animate: false,\r\n center: center\r\n })\r\n }.bind(this))\r\n },\r\n updateZoom: function() {\r\n this._map.setView({\r\n animate: false,\r\n zoom: this._option(\"zoom\")\r\n });\r\n return _promise.default.resolve()\r\n },\r\n updateControls: function() {\r\n this.clean();\r\n return this.render.apply(this, arguments)\r\n },\r\n _renderMarker: function(options) {\r\n return this._resolveLocation(options.location).then(function(location) {\r\n var pushpinOptions = {\r\n icon: options.iconSrc || this._option(\"markerIconSrc\")\r\n };\r\n if (options.html) {\r\n (0, _extend.extend)(pushpinOptions, {\r\n htmlContent: options.html,\r\n width: null,\r\n height: null\r\n });\r\n var htmlOffset = options.htmlOffset;\r\n if (htmlOffset) {\r\n pushpinOptions.anchor = new Microsoft.Maps.Point((-htmlOffset.left), (-htmlOffset.top))\r\n }\r\n }\r\n var pushpin = new Microsoft.Maps.Pushpin(location, pushpinOptions);\r\n this._map.entities.push(pushpin);\r\n var infobox = this._renderTooltip(location, options.tooltip);\r\n var handler;\r\n if (options.onClick || options.tooltip) {\r\n var markerClickAction = this._mapWidget._createAction(options.onClick || _common.noop);\r\n var markerNormalizedLocation = this._normalizeLocation(location);\r\n handler = Microsoft.Maps.Events.addHandler(pushpin, \"click\", function() {\r\n markerClickAction({\r\n location: markerNormalizedLocation\r\n });\r\n if (infobox) {\r\n infobox.setOptions({\r\n visible: true\r\n })\r\n }\r\n })\r\n }\r\n return {\r\n location: location,\r\n marker: pushpin,\r\n infobox: infobox,\r\n handler: handler\r\n }\r\n }.bind(this))\r\n },\r\n _renderTooltip: function(location, options) {\r\n if (!options) {\r\n return\r\n }\r\n options = this._parseTooltipOptions(options);\r\n var infobox = new Microsoft.Maps.Infobox(location, {\r\n description: options.text,\r\n offset: new Microsoft.Maps.Point(0, INFOBOX_V_OFFSET_V8),\r\n visible: options.visible\r\n });\r\n infobox.setMap(this._map);\r\n return infobox\r\n },\r\n _destroyMarker: function(marker) {\r\n this._map.entities.remove(marker.marker);\r\n if (marker.infobox) {\r\n marker.infobox.setMap(null)\r\n }\r\n if (marker.handler) {\r\n Microsoft.Maps.Events.removeHandler(marker.handler)\r\n }\r\n },\r\n _renderRoute: function(options) {\r\n return _promise.default.all((0, _iterator.map)(options.locations, function(point) {\r\n return this._resolveLocation(point)\r\n }.bind(this))).then(function(locations) {\r\n return new _promise.default(function(resolve) {\r\n var direction = new Microsoft.Maps.Directions.DirectionsManager(this._map);\r\n var color = new _color.default(options.color || this._defaultRouteColor()).toHex();\r\n var routeColor = new Microsoft.Maps.Color.fromHex(color);\r\n routeColor.a = 255 * (options.opacity || this._defaultRouteOpacity());\r\n direction.setRenderOptions({\r\n autoUpdateMapView: false,\r\n displayRouteSelector: false,\r\n waypointPushpinOptions: {\r\n visible: false\r\n },\r\n drivingPolylineOptions: {\r\n strokeColor: routeColor,\r\n strokeThickness: options.weight || this._defaultRouteWeight()\r\n },\r\n walkingPolylineOptions: {\r\n strokeColor: routeColor,\r\n strokeThickness: options.weight || this._defaultRouteWeight()\r\n }\r\n });\r\n direction.setRequestOptions({\r\n routeMode: this._movementMode(options.mode),\r\n routeDraggable: false\r\n });\r\n (0, _iterator.each)(locations, function(_, location) {\r\n var waypoint = new Microsoft.Maps.Directions.Waypoint({\r\n location: location\r\n });\r\n direction.addWaypoint(waypoint)\r\n });\r\n var directionHandlers = [];\r\n directionHandlers.push(Microsoft.Maps.Events.addHandler(direction, \"directionsUpdated\", function(args) {\r\n while (directionHandlers.length) {\r\n Microsoft.Maps.Events.removeHandler(directionHandlers.pop())\r\n }\r\n var routeSummary = args.routeSummary[0];\r\n resolve({\r\n instance: direction,\r\n northEast: routeSummary.northEast,\r\n southWest: routeSummary.southWest\r\n })\r\n }));\r\n directionHandlers.push(Microsoft.Maps.Events.addHandler(direction, \"directionsError\", function(args) {\r\n while (directionHandlers.length) {\r\n Microsoft.Maps.Events.removeHandler(directionHandlers.pop())\r\n }\r\n var status = \"RouteResponseCode: \" + args.responseCode + \" - \" + args.message;\r\n _ui.default.log(\"W1006\", status);\r\n resolve({\r\n instance: direction\r\n })\r\n }));\r\n direction.calculateDirections()\r\n }.bind(this))\r\n }.bind(this))\r\n },\r\n _destroyRoute: function(routeObject) {\r\n routeObject.instance.dispose()\r\n },\r\n _fitBounds: function() {\r\n this._updateBounds();\r\n if (this._bounds && this._option(\"autoAdjust\")) {\r\n var zoomBeforeFitting = this._map.getZoom();\r\n this._preventZoomChangeEvent = true;\r\n var bounds = this._bounds.clone();\r\n bounds.height = 1.1 * bounds.height;\r\n bounds.width = 1.1 * bounds.width;\r\n this._map.setView({\r\n animate: false,\r\n bounds: bounds,\r\n zoom: zoomBeforeFitting\r\n });\r\n var zoomAfterFitting = this._map.getZoom();\r\n if (zoomBeforeFitting < zoomAfterFitting) {\r\n this._map.setView({\r\n animate: false,\r\n zoom: zoomBeforeFitting\r\n })\r\n } else {\r\n this._option(\"zoom\", zoomAfterFitting)\r\n }\r\n delete this._preventZoomChangeEvent\r\n }\r\n return _promise.default.resolve()\r\n },\r\n _extendBounds: function(location) {\r\n if (this._bounds) {\r\n this._bounds = new Microsoft.Maps.LocationRect.fromLocations(this._bounds.getNorthwest(), this._bounds.getSoutheast(), location)\r\n } else {\r\n this._bounds = new Microsoft.Maps.LocationRect(location, MIN_LOCATION_RECT_LENGTH, MIN_LOCATION_RECT_LENGTH)\r\n }\r\n },\r\n clean: function() {\r\n if (this._map) {\r\n Microsoft.Maps.Events.removeHandler(this._providerViewChangeHandler);\r\n Microsoft.Maps.Events.removeHandler(this._providerClickHandler);\r\n this._clearMarkers();\r\n this._clearRoutes();\r\n this._map.dispose()\r\n }\r\n return _promise.default.resolve()\r\n }\r\n});\r\nvar _default = BingProvider;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/nav_bar.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _item = _interopRequireDefault(require(\"./nav_bar/item\"));\r\nvar _tabs = _interopRequireDefault(require(\"./tabs\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar NAVBAR_CLASS = \"dx-navbar\";\r\nvar ITEM_CLASS = \"dx-item-content\";\r\nvar NAVBAR_ITEM_CLASS = \"dx-nav-item\";\r\nvar NAVBAR_ITEM_CONTENT_CLASS = \"dx-nav-item-content\";\r\nvar NavBar = _tabs.default.inherit({\r\n ctor: function(element, options) {\r\n this.callBase(element, options);\r\n this._logDeprecatedComponentWarning(\"20.1\", \"dxTabs\")\r\n },\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n scrollingEnabled: false\r\n })\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this.$element().addClass(NAVBAR_CLASS)\r\n },\r\n _postprocessRenderItem: function(args) {\r\n this.callBase(args);\r\n var $itemElement = args.itemElement;\r\n var itemData = args.itemData;\r\n $itemElement.addClass(NAVBAR_ITEM_CLASS);\r\n $itemElement.find(\".\" + ITEM_CLASS).addClass(NAVBAR_ITEM_CONTENT_CLASS);\r\n if (!itemData.icon) {\r\n $itemElement.addClass(\"dx-navbar-text-item\")\r\n }\r\n }\r\n});\r\nNavBar.ItemClass = _item.default;\r\n(0, _component_registrator.default)(\"dxNavBar\", NavBar);\r\nvar _default = NavBar;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/nav_bar/item.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _item = _interopRequireDefault(require(\"../tabs/item\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar TABS_ITEM_BADGE_CLASS = \"dx-tabs-item-badge\";\r\nvar NAVBAR_ITEM_BADGE_CLASS = \"dx-navbar-item-badge\";\r\nvar NavBarItem = _item.default.inherit({\r\n _renderBadge: function(badge) {\r\n this.callBase(badge);\r\n this._$element.children(\".\" + TABS_ITEM_BADGE_CLASS).removeClass(TABS_ITEM_BADGE_CLASS).addClass(NAVBAR_ITEM_BADGE_CLASS)\r\n }\r\n});\r\nvar _default = NavBarItem;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/notify.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _action = _interopRequireDefault(require(\"../core/action\"));\r\nvar _view_port = require(\"../core/utils/view_port\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _toast = _interopRequireDefault(require(\"./toast\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar $notify = null;\r\nvar notify = function(message, type, displayTime) {\r\n var options = (0, _type.isPlainObject)(message) ? message : {\r\n message: message\r\n };\r\n var userHiddenAction = options.onHidden;\r\n (0, _extend.extend)(options, {\r\n type: type,\r\n displayTime: displayTime,\r\n onHidden: function(args) {\r\n (0, _renderer.default)(args.element).remove();\r\n new _action.default(userHiddenAction, {\r\n context: args.model\r\n }).execute(arguments)\r\n }\r\n });\r\n $notify = (0, _renderer.default)(\"
\").appendTo((0, _view_port.value)());\r\n new _toast.default($notify, options).show()\r\n};\r\nvar _default = notify;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/list.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _uiListEdit = _interopRequireDefault(require(\"./list/ui.list.edit.search\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}(0, _component_registrator.default)(\"dxList\", _uiListEdit.default);\r\nvar _default = _uiListEdit.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/number_box.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _number_box = _interopRequireDefault(require(\"./number_box/number_box\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _number_box.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.decorator_registry.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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.register = register;\r\nexports.registry = void 0;\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar registry = {};\r\nexports.registry = registry;\r\n\r\nfunction register(option, type, decoratorClass) {\r\n var decoratorsRegistry = registry;\r\n var decoratorConfig = {};\r\n decoratorConfig[option] = decoratorsRegistry[option] ? decoratorsRegistry[option] : {};\r\n decoratorConfig[option][type] = decoratorClass;\r\n decoratorsRegistry = (0, _extend.extend)(decoratorsRegistry, decoratorConfig)\r\n}\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.decorator.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _common = require(\"../../core/utils/common\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _swipe = require(\"../../events/swipe\");\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 LIST_EDIT_DECORATOR = \"dxListEditDecorator\";\r\nvar SWIPE_START_EVENT_NAME = (0, _index.addNamespace)(_swipe.start, LIST_EDIT_DECORATOR);\r\nvar SWIPE_UPDATE_EVENT_NAME = (0, _index.addNamespace)(_swipe.swipe, LIST_EDIT_DECORATOR);\r\nvar SWIPE_END_EVENT_NAME = (0, _index.addNamespace)(_swipe.end, LIST_EDIT_DECORATOR);\r\nvar EditDecorator = _class.default.inherit({\r\n ctor: function(list) {\r\n this._list = list;\r\n this._init()\r\n },\r\n _init: _common.noop,\r\n _shouldHandleSwipe: false,\r\n _attachSwipeEvent: function(config) {\r\n var swipeConfig = {\r\n itemSizeFunc: function() {\r\n if (this._clearSwipeCache) {\r\n this._itemWidthCache = this._list.$element().width();\r\n this._clearSwipeCache = false\r\n }\r\n return this._itemWidthCache\r\n }.bind(this)\r\n };\r\n _events_engine.default.on(config.$itemElement, SWIPE_START_EVENT_NAME, swipeConfig, this._itemSwipeStartHandler.bind(this));\r\n _events_engine.default.on(config.$itemElement, SWIPE_UPDATE_EVENT_NAME, this._itemSwipeUpdateHandler.bind(this));\r\n _events_engine.default.on(config.$itemElement, SWIPE_END_EVENT_NAME, this._itemSwipeEndHandler.bind(this))\r\n },\r\n _itemSwipeStartHandler: function(e) {\r\n var $itemElement = (0, _renderer.default)(e.currentTarget);\r\n if ($itemElement.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n e.cancel = true;\r\n return\r\n }\r\n clearTimeout(this._list._inkRippleTimer);\r\n this._swipeStartHandler($itemElement, e)\r\n },\r\n _itemSwipeUpdateHandler: function(e) {\r\n var $itemElement = (0, _renderer.default)(e.currentTarget);\r\n this._swipeUpdateHandler($itemElement, e)\r\n },\r\n _itemSwipeEndHandler: function(e) {\r\n var $itemElement = (0, _renderer.default)(e.currentTarget);\r\n this._swipeEndHandler($itemElement, e);\r\n this._clearSwipeCache = true\r\n },\r\n beforeBag: _common.noop,\r\n afterBag: _common.noop,\r\n _commonOptions: function() {\r\n return {\r\n activeStateEnabled: this._list.option(\"activeStateEnabled\"),\r\n hoverStateEnabled: this._list.option(\"hoverStateEnabled\"),\r\n focusStateEnabled: this._list.option(\"focusStateEnabled\")\r\n }\r\n },\r\n modifyElement: function(config) {\r\n if (this._shouldHandleSwipe) {\r\n this._attachSwipeEvent(config);\r\n this._clearSwipeCache = true\r\n }\r\n },\r\n afterRender: _common.noop,\r\n handleClick: _common.noop,\r\n handleKeyboardEvents: _common.noop,\r\n handleEnterPressing: _common.noop,\r\n handleContextMenu: _common.noop,\r\n _swipeStartHandler: _common.noop,\r\n _swipeUpdateHandler: _common.noop,\r\n _swipeEndHandler: _common.noop,\r\n visibilityChange: _common.noop,\r\n getExcludedSelectors: _common.noop,\r\n dispose: _common.noop\r\n});\r\nvar _default = EditDecorator;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/load_panel.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _common = require(\"../core/utils/common\");\r\nvar _message = _interopRequireDefault(require(\"../localization/message\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _load_indicator = _interopRequireDefault(require(\"./load_indicator\"));\r\nvar _overlay = _interopRequireDefault(require(\"./overlay\"));\r\nvar _deferred = require(\"../core/utils/deferred\");\r\nvar _themes = require(\"./themes\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar LOADPANEL_CLASS = \"dx-loadpanel\";\r\nvar LOADPANEL_WRAPPER_CLASS = \"dx-loadpanel-wrapper\";\r\nvar LOADPANEL_INDICATOR_CLASS = \"dx-loadpanel-indicator\";\r\nvar LOADPANEL_MESSAGE_CLASS = \"dx-loadpanel-message\";\r\nvar LOADPANEL_CONTENT_CLASS = \"dx-loadpanel-content\";\r\nvar LOADPANEL_CONTENT_WRAPPER_CLASS = \"dx-loadpanel-content-wrapper\";\r\nvar LOADPANEL_PANE_HIDDEN_CLASS = \"dx-loadpanel-pane-hidden\";\r\nvar LoadPanel = _overlay.default.inherit({\r\n _supportedKeys: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n escape: _common.noop\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n message: _message.default.format(\"Loading\"),\r\n width: 222,\r\n height: 90,\r\n animation: null,\r\n showIndicator: true,\r\n indicatorSrc: \"\",\r\n showPane: true,\r\n delay: 0,\r\n templatesRenderAsynchronously: false,\r\n hideTopOverlayHandler: null,\r\n resizeEnabled: false,\r\n focusStateEnabled: false\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: {\r\n platform: \"generic\"\r\n },\r\n options: {\r\n shadingColor: \"transparent\"\r\n }\r\n }, {\r\n device: function() {\r\n return (0, _themes.isMaterial)()\r\n },\r\n options: {\r\n message: \"\",\r\n width: 60,\r\n height: 60,\r\n maxHeight: 60,\r\n maxWidth: 60\r\n }\r\n }])\r\n },\r\n _init: function() {\r\n this.callBase.apply(this, arguments)\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this.$element().addClass(LOADPANEL_CLASS);\r\n this._wrapper().addClass(LOADPANEL_WRAPPER_CLASS)\r\n },\r\n _renderContentImpl: function() {\r\n this.callBase();\r\n this.$content().addClass(LOADPANEL_CONTENT_CLASS);\r\n this._$contentWrapper = (0, _renderer.default)(\"
\").addClass(LOADPANEL_CONTENT_WRAPPER_CLASS);\r\n this._$contentWrapper.appendTo(this._$content);\r\n this._togglePaneVisible();\r\n this._cleanPreviousContent();\r\n this._renderLoadIndicator();\r\n this._renderMessage()\r\n },\r\n _show: function() {\r\n var delay = this.option(\"delay\");\r\n if (!delay) {\r\n return this.callBase()\r\n }\r\n var deferred = new _deferred.Deferred;\r\n var callBase = this.callBase.bind(this);\r\n this._clearShowTimeout();\r\n this._showTimeout = setTimeout(function() {\r\n callBase().done(function() {\r\n deferred.resolve()\r\n })\r\n }, delay);\r\n return deferred.promise()\r\n },\r\n _hide: function() {\r\n this._clearShowTimeout();\r\n return this.callBase()\r\n },\r\n _clearShowTimeout: function() {\r\n clearTimeout(this._showTimeout)\r\n },\r\n _renderMessage: function() {\r\n if (!this._$contentWrapper) {\r\n return\r\n }\r\n var message = this.option(\"message\");\r\n if (!message) {\r\n return\r\n }\r\n var $message = (0, _renderer.default)(\"
\").addClass(LOADPANEL_MESSAGE_CLASS).text(message);\r\n this._$contentWrapper.append($message)\r\n },\r\n _renderLoadIndicator: function() {\r\n if (!this._$contentWrapper || !this.option(\"showIndicator\")) {\r\n return\r\n }\r\n if (!this._$indicator) {\r\n this._$indicator = (0, _renderer.default)(\"
\").addClass(LOADPANEL_INDICATOR_CLASS).appendTo(this._$contentWrapper)\r\n }\r\n this._createComponent(this._$indicator, _load_indicator.default, {\r\n indicatorSrc: this.option(\"indicatorSrc\")\r\n })\r\n },\r\n _cleanPreviousContent: function() {\r\n this.$content().find(\".\" + LOADPANEL_MESSAGE_CLASS).remove();\r\n this.$content().find(\".\" + LOADPANEL_INDICATOR_CLASS).remove();\r\n delete this._$indicator\r\n },\r\n _togglePaneVisible: function() {\r\n this.$content().toggleClass(LOADPANEL_PANE_HIDDEN_CLASS, !this.option(\"showPane\"))\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"delay\":\r\n break;\r\n case \"message\":\r\n case \"showIndicator\":\r\n this._cleanPreviousContent();\r\n this._renderLoadIndicator();\r\n this._renderMessage();\r\n break;\r\n case \"showPane\":\r\n this._togglePaneVisible();\r\n break;\r\n case \"indicatorSrc\":\r\n this._renderLoadIndicator();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _dispose: function() {\r\n this._clearShowTimeout();\r\n this.callBase()\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxLoadPanel\", LoadPanel);\r\nvar _default = LoadPanel;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/list/ui.list.base.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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.setScrollView = setScrollView;\r\nexports.ListBase = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _icon = require(\"../../core/utils/icon\");\r\nvar _element = require(\"../../core/element\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _fx = _interopRequireDefault(require(\"../../animation/fx\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _swipe = require(\"../../events/swipe\");\r\nvar _support = require(\"../../core/utils/support\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _utils = require(\"../widget/utils.ink_ripple\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _item = _interopRequireDefault(require(\"./item\"));\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _themes = require(\"../themes\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _scroll_view = _interopRequireDefault(require(\"../scroll_view\"));\r\nvar _uiScrollable = require(\"../scroll_view/ui.scrollable.device\");\r\nvar _uiCollection_widget = _interopRequireDefault(require(\"../collection/ui.collection_widget.live_update\"));\r\nvar _bindable_template = require(\"../../core/templates/bindable_template\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _grouped_data_converter_mixin = _interopRequireDefault(require(\"../shared/grouped_data_converter_mixin\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar LIST_CLASS = \"dx-list\";\r\nvar LIST_ITEM_CLASS = \"dx-list-item\";\r\nvar LIST_ITEM_SELECTOR = \".\" + LIST_ITEM_CLASS;\r\nvar LIST_ITEM_ICON_CONTAINER_CLASS = \"dx-list-item-icon-container\";\r\nvar LIST_ITEM_ICON_CLASS = \"dx-list-item-icon\";\r\nvar LIST_GROUP_CLASS = \"dx-list-group\";\r\nvar LIST_GROUP_HEADER_CLASS = \"dx-list-group-header\";\r\nvar LIST_GROUP_BODY_CLASS = \"dx-list-group-body\";\r\nvar LIST_COLLAPSIBLE_GROUPS_CLASS = \"dx-list-collapsible-groups\";\r\nvar LIST_GROUP_COLLAPSED_CLASS = \"dx-list-group-collapsed\";\r\nvar LIST_GROUP_HEADER_INDICATOR_CLASS = \"dx-list-group-header-indicator\";\r\nvar LIST_HAS_NEXT_CLASS = \"dx-has-next\";\r\nvar LIST_NEXT_BUTTON_CLASS = \"dx-list-next-button\";\r\nvar WRAP_ITEM_TEXT_CLASS = \"dx-wrap-item-text\";\r\nvar SELECT_ALL_ITEM_SELECTOR = \".dx-list-select-all\";\r\nvar LIST_ITEM_DATA_KEY = \"dxListItemData\";\r\nvar LIST_FEEDBACK_SHOW_TIMEOUT = 70;\r\nvar groupItemsGetter = (0, _data.compileGetter)(\"items\");\r\nvar _scrollView;\r\nvar ListBase = _uiCollection_widget.default.inherit({\r\n _activeStateUnit: [LIST_ITEM_SELECTOR, SELECT_ALL_ITEM_SELECTOR].join(\",\"),\r\n _supportedKeys: function() {\r\n var that = this;\r\n var moveFocusPerPage = function(direction) {\r\n var $item = getEdgeVisibleItem(direction);\r\n var isFocusedItem = $item.is(that.option(\"focusedElement\"));\r\n if (isFocusedItem) {\r\n scrollListTo($item, direction);\r\n $item = getEdgeVisibleItem(direction)\r\n }\r\n that.option(\"focusedElement\", (0, _element.getPublicElement)($item));\r\n that.scrollToItem($item)\r\n };\r\n\r\n function getEdgeVisibleItem(direction) {\r\n var scrollTop = that.scrollTop();\r\n var containerHeight = that.$element().height();\r\n var $item = (0, _renderer.default)(that.option(\"focusedElement\"));\r\n var isItemVisible = true;\r\n if (!$item.length) {\r\n return (0, _renderer.default)()\r\n }\r\n while (isItemVisible) {\r\n var $nextItem = $item[direction]();\r\n if (!$nextItem.length) {\r\n break\r\n }\r\n var nextItemLocation = $nextItem.position().top + $nextItem.outerHeight() / 2;\r\n isItemVisible = nextItemLocation < containerHeight + scrollTop && nextItemLocation > scrollTop;\r\n if (isItemVisible) {\r\n $item = $nextItem\r\n }\r\n }\r\n return $item\r\n }\r\n\r\n function scrollListTo($item, direction) {\r\n var resultPosition = $item.position().top;\r\n if (\"prev\" === direction) {\r\n resultPosition = $item.position().top - that.$element().height() + $item.outerHeight()\r\n }\r\n that.scrollTo(resultPosition)\r\n }\r\n return (0, _extend.extend)(this.callBase(), {\r\n leftArrow: _common.noop,\r\n rightArrow: _common.noop,\r\n pageUp: function() {\r\n moveFocusPerPage(\"prev\");\r\n return false\r\n },\r\n pageDown: function() {\r\n moveFocusPerPage(\"next\");\r\n return false\r\n }\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n hoverStateEnabled: true,\r\n pullRefreshEnabled: false,\r\n scrollingEnabled: true,\r\n showScrollbar: \"onScroll\",\r\n useNativeScrolling: true,\r\n bounceEnabled: true,\r\n scrollByContent: true,\r\n scrollByThumb: false,\r\n pullingDownText: _message.default.format(\"dxList-pullingDownText\"),\r\n pulledDownText: _message.default.format(\"dxList-pulledDownText\"),\r\n refreshingText: _message.default.format(\"dxList-refreshingText\"),\r\n pageLoadingText: _message.default.format(\"dxList-pageLoadingText\"),\r\n onScroll: null,\r\n onPullRefresh: null,\r\n onPageLoading: null,\r\n pageLoadMode: \"scrollBottom\",\r\n nextButtonText: _message.default.format(\"dxList-nextButtonText\"),\r\n onItemSwipe: null,\r\n grouped: false,\r\n onGroupRendered: null,\r\n collapsibleGroups: false,\r\n groupTemplate: \"group\",\r\n indicateLoading: true,\r\n activeStateEnabled: true,\r\n _itemAttributes: {\r\n role: \"option\"\r\n },\r\n _listAttributes: {\r\n role: \"listbox\"\r\n },\r\n useInkRipple: false,\r\n wrapItemText: false,\r\n _swipeEnabled: true,\r\n _revertPageOnEmptyLoad: false,\r\n showChevronExpr: function(data) {\r\n return data ? data.showChevron : void 0\r\n },\r\n badgeExpr: function(data) {\r\n return data ? data.badge : void 0\r\n }\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n var themeName = (0, _themes.current)();\r\n return this.callBase().concat((0, _uiScrollable.deviceDependentOptions)(), [{\r\n device: function() {\r\n return !_support.nativeScrolling\r\n },\r\n options: {\r\n useNativeScrolling: false\r\n }\r\n }, {\r\n device: function(_device) {\r\n return !_support.nativeScrolling && !_devices.default.isSimulator() && \"desktop\" === _devices.default.real().deviceType && \"generic\" === _device.platform\r\n },\r\n options: {\r\n showScrollbar: \"onHover\",\r\n pageLoadMode: \"nextButton\"\r\n }\r\n }, {\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 device: function() {\r\n return (0, _themes.isMaterial)(themeName)\r\n },\r\n options: {\r\n pullingDownText: \"\",\r\n pulledDownText: \"\",\r\n refreshingText: \"\",\r\n pageLoadingText: \"\",\r\n useInkRipple: true\r\n }\r\n }])\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this._updateLoadingState(true)\r\n }\r\n },\r\n _itemClass: function() {\r\n return LIST_ITEM_CLASS\r\n },\r\n _itemDataKey: function() {\r\n return LIST_ITEM_DATA_KEY\r\n },\r\n _itemContainer: function() {\r\n return this._$container\r\n },\r\n _saveSelectionChangeEvent: function(e) {\r\n this._selectionChangeEventInstance = e\r\n },\r\n _getSelectionChangeEvent: function() {\r\n return this._selectionChangeEventInstance\r\n },\r\n _refreshItemElements: function() {\r\n if (!this.option(\"grouped\")) {\r\n this._itemElementsCache = this._itemContainer().children(this._itemSelector())\r\n } else {\r\n this._itemElementsCache = this._itemContainer().children(\".\" + LIST_GROUP_CLASS).children(\".\" + LIST_GROUP_BODY_CLASS).children(this._itemSelector())\r\n }\r\n },\r\n _modifyByChanges: function() {\r\n this.callBase.apply(this, arguments);\r\n this._refreshItemElements();\r\n this._updateLoadingState(true)\r\n },\r\n reorderItem: function(itemElement, toItemElement) {\r\n var promise = this.callBase(itemElement, toItemElement);\r\n return promise.done(function() {\r\n this._refreshItemElements()\r\n })\r\n },\r\n deleteItem: function(itemElement) {\r\n var promise = this.callBase(itemElement);\r\n return promise.done(function() {\r\n this._refreshItemElements()\r\n })\r\n },\r\n _itemElements: function() {\r\n return this._itemElementsCache\r\n },\r\n _itemSelectHandler: function(e) {\r\n if (\"single\" === this.option(\"selectionMode\") && this.isItemSelected(e.currentTarget)) {\r\n return\r\n }\r\n this.callBase(e)\r\n },\r\n _allowDynamicItemsAppend: function() {\r\n return true\r\n },\r\n _resetDataSourcePageIndex: function() {\r\n var currentDataSource = this.getDataSource();\r\n if (currentDataSource && 0 !== currentDataSource.pageIndex()) {\r\n currentDataSource.pageIndex(0);\r\n currentDataSource.load()\r\n }\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._resetDataSourcePageIndex();\r\n this._$container = this.$element();\r\n this._initScrollView();\r\n this._feedbackShowTimeout = LIST_FEEDBACK_SHOW_TIMEOUT;\r\n this._createGroupRenderAction()\r\n },\r\n _scrollBottomMode: function() {\r\n return \"scrollBottom\" === this.option(\"pageLoadMode\")\r\n },\r\n _nextButtonMode: function() {\r\n return \"nextButton\" === this.option(\"pageLoadMode\")\r\n },\r\n _dataSourceOptions: function() {\r\n var scrollBottom = this._scrollBottomMode();\r\n var nextButton = this._nextButtonMode();\r\n return (0, _extend.extend)(this.callBase(), {\r\n paginate: (0, _common.ensureDefined)(scrollBottom || nextButton, true)\r\n })\r\n },\r\n _getGroupedOption: function() {\r\n return this.option(\"grouped\")\r\n },\r\n _dataSourceFromUrlLoadMode: function() {\r\n return \"raw\"\r\n },\r\n _initScrollView: function() {\r\n var scrollingEnabled = this.option(\"scrollingEnabled\");\r\n var pullRefreshEnabled = scrollingEnabled && this.option(\"pullRefreshEnabled\");\r\n var autoPagingEnabled = scrollingEnabled && this._scrollBottomMode() && !!this._dataSource;\r\n this._scrollView = this._createComponent(this.$element(), getScrollView(), {\r\n disabled: this.option(\"disabled\") || !scrollingEnabled,\r\n onScroll: this._scrollHandler.bind(this),\r\n onPullDown: pullRefreshEnabled ? this._pullDownHandler.bind(this) : null,\r\n onReachBottom: autoPagingEnabled ? this._scrollBottomHandler.bind(this) : null,\r\n showScrollbar: this.option(\"showScrollbar\"),\r\n useNative: this.option(\"useNativeScrolling\"),\r\n bounceEnabled: this.option(\"bounceEnabled\"),\r\n scrollByContent: this.option(\"scrollByContent\"),\r\n scrollByThumb: this.option(\"scrollByThumb\"),\r\n pullingDownText: this.option(\"pullingDownText\"),\r\n pulledDownText: this.option(\"pulledDownText\"),\r\n refreshingText: this.option(\"refreshingText\"),\r\n reachBottomText: this.option(\"pageLoadingText\"),\r\n useKeyboard: false\r\n });\r\n this._$container = (0, _renderer.default)(this._scrollView.content());\r\n if (this.option(\"wrapItemText\")) {\r\n this._$container.addClass(WRAP_ITEM_TEXT_CLASS)\r\n }\r\n this._createScrollViewActions()\r\n },\r\n _createScrollViewActions: function() {\r\n this._scrollAction = this._createActionByOption(\"onScroll\");\r\n this._pullRefreshAction = this._createActionByOption(\"onPullRefresh\");\r\n this._pageLoadingAction = this._createActionByOption(\"onPageLoading\")\r\n },\r\n _scrollHandler: function(e) {\r\n this._scrollAction && this._scrollAction(e)\r\n },\r\n _initTemplates: function() {\r\n this._templateManager.addDefaultTemplates({\r\n group: new _bindable_template.BindableTemplate(function($container, data) {\r\n if ((0, _type.isPlainObject)(data)) {\r\n if (data.key) {\r\n $container.text(data.key)\r\n }\r\n } else {\r\n $container.text(String(data))\r\n }\r\n }, [\"key\"], this.option(\"integrationOptions.watchMethod\"))\r\n });\r\n this.callBase()\r\n },\r\n _prepareDefaultItemTemplate: function(data, $container) {\r\n this.callBase(data, $container);\r\n if (data.icon) {\r\n var $icon = (0, _icon.getImageContainer)(data.icon).addClass(LIST_ITEM_ICON_CLASS);\r\n var $iconContainer = (0, _renderer.default)(\"
\").addClass(LIST_ITEM_ICON_CONTAINER_CLASS);\r\n $iconContainer.append($icon);\r\n $container.prepend($iconContainer)\r\n }\r\n },\r\n _getBindableFields: function() {\r\n return [\"text\", \"html\", \"icon\"]\r\n },\r\n _updateLoadingState: function(tryLoadMore) {\r\n var isDataLoaded = !tryLoadMore || this._isLastPage();\r\n var scrollBottomMode = this._scrollBottomMode();\r\n var stopLoading = isDataLoaded || !scrollBottomMode;\r\n var hideLoadIndicator = stopLoading && !this._isDataSourceLoading();\r\n if (stopLoading || this._scrollViewIsFull()) {\r\n this._scrollView.release(hideLoadIndicator);\r\n this._toggleNextButton(this._shouldRenderNextButton() && !this._isLastPage());\r\n this._loadIndicationSuppressed(false)\r\n } else {\r\n this._infiniteDataLoading()\r\n }\r\n },\r\n _shouldRenderNextButton: function() {\r\n return this._nextButtonMode() && this._dataSource && this._dataSource.isLoaded()\r\n },\r\n _isDataSourceFirstLoadCompleted: function(newValue) {\r\n if ((0, _type.isDefined)(newValue)) {\r\n this._isFirstLoadCompleted = newValue\r\n }\r\n return this._isFirstLoadCompleted\r\n },\r\n _dataSourceLoadingChangedHandler: function(isLoading) {\r\n if (this._loadIndicationSuppressed()) {\r\n return\r\n }\r\n if (isLoading && this.option(\"indicateLoading\")) {\r\n this._showLoadingIndicatorTimer = setTimeout(function() {\r\n var isEmpty = !this._itemElements().length;\r\n var shouldIndicateLoading = !isEmpty || this._isDataSourceFirstLoadCompleted();\r\n if (shouldIndicateLoading) {\r\n var _this$_scrollView;\r\n null === (_this$_scrollView = this._scrollView) || void 0 === _this$_scrollView ? void 0 : _this$_scrollView.startLoading()\r\n }\r\n }.bind(this))\r\n } else {\r\n clearTimeout(this._showLoadingIndicatorTimer);\r\n this._scrollView && this._scrollView.finishLoading()\r\n }\r\n if (!isLoading) {\r\n this._isDataSourceFirstLoadCompleted(false)\r\n }\r\n },\r\n _dataSourceChangedHandler: function() {\r\n if (!this._shouldAppendItems() && (0, _window.hasWindow)()) {\r\n this._scrollView && this._scrollView.scrollTo(0)\r\n }\r\n this.callBase.apply(this, arguments);\r\n this._isDataSourceFirstLoadCompleted(true)\r\n },\r\n _refreshContent: function() {\r\n this._prepareContent();\r\n this._fireContentReadyAction()\r\n },\r\n _hideLoadingIfLoadIndicationOff: function() {\r\n if (!this.option(\"indicateLoading\")) {\r\n this._dataSourceLoadingChangedHandler(false)\r\n }\r\n },\r\n _loadIndicationSuppressed: function(value) {\r\n if (!arguments.length) {\r\n return this._isLoadIndicationSuppressed\r\n }\r\n this._isLoadIndicationSuppressed = value\r\n },\r\n _scrollViewIsFull: function() {\r\n return !this._scrollView || this._scrollView.isFull()\r\n },\r\n _pullDownHandler: function(e) {\r\n this._pullRefreshAction(e);\r\n if (this._dataSource && !this._isDataSourceLoading()) {\r\n this._clearSelectedItems();\r\n this._dataSource.pageIndex(0);\r\n this._dataSource.reload()\r\n } else {\r\n this._updateLoadingState()\r\n }\r\n },\r\n _infiniteDataLoading: function() {\r\n var _this = this;\r\n var isElementVisible = this.$element().is(\":visible\");\r\n if (isElementVisible && !this._scrollViewIsFull() && !this._isDataSourceLoading() && !this._isLastPage()) {\r\n clearTimeout(this._loadNextPageTimer);\r\n this._loadNextPageTimer = setTimeout(function() {\r\n _this._loadNextPage().done(_this._setPreviousPageIfNewIsEmpty.bind(_this))\r\n })\r\n }\r\n },\r\n _setPreviousPageIfNewIsEmpty: function(result) {\r\n if (this.option(\"_revertPageOnEmptyLoad\")) {\r\n var dataSource = this.getDataSource();\r\n var pageIndex = null === dataSource || void 0 === dataSource ? void 0 : dataSource.pageIndex();\r\n if (0 === (null === result || void 0 === result ? void 0 : result.length) && pageIndex > 0) {\r\n this._fireContentReadyAction();\r\n dataSource.pageIndex(pageIndex - 1)\r\n }\r\n }\r\n },\r\n _scrollBottomHandler: function(e) {\r\n this._pageLoadingAction(e);\r\n if (!this._isDataSourceLoading() && !this._isLastPage()) {\r\n this._loadNextPage()\r\n } else {\r\n this._updateLoadingState()\r\n }\r\n },\r\n _renderItems: function(items) {\r\n if (this.option(\"grouped\")) {\r\n (0, _iterator.each)(items, this._renderGroup.bind(this));\r\n this._attachGroupCollapseEvent();\r\n this._renderEmptyMessage();\r\n if ((0, _themes.isMaterial)()) {\r\n this.attachGroupHeaderInkRippleEvents()\r\n }\r\n } else {\r\n this.callBase.apply(this, arguments)\r\n }\r\n this._refreshItemElements();\r\n this._updateLoadingState(true)\r\n },\r\n _attachGroupCollapseEvent: function() {\r\n var eventName = (0, _index.addNamespace)(_click.name, this.NAME);\r\n var selector = \".\" + LIST_GROUP_HEADER_CLASS;\r\n var $element = this.$element();\r\n var collapsibleGroups = this.option(\"collapsibleGroups\");\r\n $element.toggleClass(LIST_COLLAPSIBLE_GROUPS_CLASS, collapsibleGroups);\r\n _events_engine.default.off($element, eventName, selector);\r\n if (collapsibleGroups) {\r\n _events_engine.default.on($element, eventName, selector, function(e) {\r\n this._createAction(function(e) {\r\n var $group = (0, _renderer.default)(e.event.currentTarget).parent();\r\n this._collapseGroupHandler($group);\r\n if (this.option(\"focusStateEnabled\")) {\r\n this.option(\"focusedElement\", (0, _element.getPublicElement)($group.find(\".\" + LIST_ITEM_CLASS).eq(0)))\r\n }\r\n }.bind(this), {\r\n validatingTargetName: \"element\"\r\n })({\r\n event: e\r\n })\r\n }.bind(this))\r\n }\r\n },\r\n _collapseGroupHandler: function($group, toggle) {\r\n var deferred = new _deferred.Deferred;\r\n if ($group.hasClass(LIST_GROUP_COLLAPSED_CLASS) === toggle) {\r\n return deferred.resolve()\r\n }\r\n var $groupBody = $group.children(\".\" + LIST_GROUP_BODY_CLASS);\r\n var startHeight = $groupBody.outerHeight();\r\n var endHeight = 0 === startHeight ? $groupBody.height(\"auto\").outerHeight() : 0;\r\n $group.toggleClass(LIST_GROUP_COLLAPSED_CLASS, toggle);\r\n _fx.default.animate($groupBody, {\r\n type: \"custom\",\r\n from: {\r\n height: startHeight\r\n },\r\n to: {\r\n height: endHeight\r\n },\r\n duration: 200,\r\n complete: function() {\r\n this.updateDimensions();\r\n this._updateLoadingState();\r\n deferred.resolve()\r\n }.bind(this)\r\n });\r\n return deferred.promise()\r\n },\r\n _dataSourceLoadErrorHandler: function() {\r\n this._forgetNextPageLoading();\r\n if (this._initialized) {\r\n this._renderEmptyMessage();\r\n this._updateLoadingState()\r\n }\r\n },\r\n _initMarkup: function() {\r\n this._itemElementsCache = (0, _renderer.default)();\r\n this.$element().addClass(LIST_CLASS);\r\n this.callBase();\r\n this.option(\"useInkRipple\") && this._renderInkRipple();\r\n this.setAria(\"role\", this.option(\"_listAttributes\").role)\r\n },\r\n _renderInkRipple: function() {\r\n this._inkRipple = (0, _utils.render)()\r\n },\r\n _toggleActiveState: function($element, value, e) {\r\n this.callBase.apply(this, arguments);\r\n var that = this;\r\n if (!this._inkRipple) {\r\n return\r\n }\r\n var config = {\r\n element: $element,\r\n event: e\r\n };\r\n if (value) {\r\n if ((0, _themes.isMaterial)()) {\r\n this._inkRippleTimer = setTimeout(function() {\r\n that._inkRipple.showWave(config)\r\n }, LIST_FEEDBACK_SHOW_TIMEOUT / 2)\r\n } else {\r\n that._inkRipple.showWave(config)\r\n }\r\n } else {\r\n clearTimeout(this._inkRippleTimer);\r\n this._inkRipple.hideWave(config)\r\n }\r\n },\r\n _postprocessRenderItem: function(args) {\r\n this._refreshItemElements();\r\n this.callBase.apply(this, arguments);\r\n if (this.option(\"_swipeEnabled\")) {\r\n this._attachSwipeEvent((0, _renderer.default)(args.itemElement))\r\n }\r\n },\r\n _attachSwipeEvent: function($itemElement) {\r\n var endEventName = (0, _index.addNamespace)(_swipe.end, this.NAME);\r\n _events_engine.default.on($itemElement, endEventName, this._itemSwipeEndHandler.bind(this))\r\n },\r\n _itemSwipeEndHandler: function(e) {\r\n this._itemDXEventHandler(e, \"onItemSwipe\", {\r\n direction: e.offset < 0 ? \"left\" : \"right\"\r\n })\r\n },\r\n _nextButtonHandler: function(e) {\r\n this._pageLoadingAction(e);\r\n var source = this._dataSource;\r\n if (source && !source.isLoading()) {\r\n this._scrollView.toggleLoading(true);\r\n this._$nextButton.detach();\r\n this._loadIndicationSuppressed(true);\r\n this._loadNextPage()\r\n }\r\n },\r\n _renderGroup: function(index, group) {\r\n var $groupElement = (0, _renderer.default)(\"
\").addClass(LIST_GROUP_CLASS).appendTo(this._itemContainer());\r\n var $groupHeaderElement = (0, _renderer.default)(\"
\").addClass(LIST_GROUP_HEADER_CLASS).appendTo($groupElement);\r\n var groupTemplateName = this.option(\"groupTemplate\");\r\n var groupTemplate = this._getTemplate(group.template || groupTemplateName, group, index, $groupHeaderElement);\r\n var renderArgs = {\r\n index: index,\r\n itemData: group,\r\n container: (0, _element.getPublicElement)($groupHeaderElement)\r\n };\r\n this._createItemByTemplate(groupTemplate, renderArgs);\r\n if ((0, _themes.isMaterial)()) {\r\n (0, _renderer.default)(\"
\").addClass(LIST_GROUP_HEADER_INDICATOR_CLASS).prependTo($groupHeaderElement)\r\n }\r\n this._renderingGroupIndex = index;\r\n var $groupBody = (0, _renderer.default)(\"
\").addClass(LIST_GROUP_BODY_CLASS).appendTo($groupElement);\r\n (0, _iterator.each)(groupItemsGetter(group) || [], function(index, item) {\r\n this._renderItem(index, item, $groupBody)\r\n }.bind(this));\r\n this._groupRenderAction({\r\n groupElement: (0, _element.getPublicElement)($groupElement),\r\n groupIndex: index,\r\n groupData: group\r\n })\r\n },\r\n downInkRippleHandler: function(e) {\r\n this._toggleActiveState((0, _renderer.default)(e.currentTarget), true, e)\r\n },\r\n upInkRippleHandler: function(e) {\r\n this._toggleActiveState((0, _renderer.default)(e.currentTarget), false)\r\n },\r\n attachGroupHeaderInkRippleEvents: function() {\r\n var selector = \".\" + LIST_GROUP_HEADER_CLASS;\r\n var $element = this.$element();\r\n this._downInkRippleHandler = this._downInkRippleHandler || this.downInkRippleHandler.bind(this);\r\n this._upInkRippleHandler = this._upInkRippleHandler || this.upInkRippleHandler.bind(this);\r\n var downArguments = [$element, \"dxpointerdown\", selector, this._downInkRippleHandler];\r\n var upArguments = [$element, \"dxpointerup dxpointerout\", selector, this._upInkRippleHandler];\r\n _events_engine.default.off.apply(_events_engine.default, downArguments);\r\n _events_engine.default.on.apply(_events_engine.default, downArguments);\r\n _events_engine.default.off.apply(_events_engine.default, upArguments);\r\n _events_engine.default.on.apply(_events_engine.default, upArguments)\r\n },\r\n _createGroupRenderAction: function() {\r\n this._groupRenderAction = this._createActionByOption(\"onGroupRendered\")\r\n },\r\n _clean: function() {\r\n clearTimeout(this._inkRippleTimer);\r\n if (this._$nextButton) {\r\n this._$nextButton.remove();\r\n this._$nextButton = null\r\n }\r\n delete this._inkRipple;\r\n this.callBase.apply(this, arguments)\r\n },\r\n _dispose: function() {\r\n this._isDataSourceFirstLoadCompleted(false);\r\n clearTimeout(this._holdTimer);\r\n clearTimeout(this._loadNextPageTimer);\r\n clearTimeout(this._showLoadingIndicatorTimer);\r\n this.callBase()\r\n },\r\n _toggleDisabledState: function(value) {\r\n this.callBase(value);\r\n this._scrollView.option(\"disabled\", value || !this.option(\"scrollingEnabled\"))\r\n },\r\n _toggleNextButton: function(value) {\r\n var dataSource = this._dataSource;\r\n var $nextButton = this._getNextButton();\r\n this.$element().toggleClass(LIST_HAS_NEXT_CLASS, value);\r\n if (value && dataSource && dataSource.isLoaded()) {\r\n $nextButton.appendTo(this._itemContainer())\r\n }\r\n if (!value) {\r\n $nextButton.detach()\r\n }\r\n },\r\n _getNextButton: function() {\r\n if (!this._$nextButton) {\r\n this._$nextButton = this._createNextButton()\r\n }\r\n return this._$nextButton\r\n },\r\n _createNextButton: function() {\r\n var $result = (0, _renderer.default)(\"
\").addClass(LIST_NEXT_BUTTON_CLASS);\r\n var $button = (0, _renderer.default)(\"
\").appendTo($result);\r\n this._createComponent($button, _button.default, {\r\n text: this.option(\"nextButtonText\"),\r\n onClick: this._nextButtonHandler.bind(this),\r\n type: (0, _themes.isMaterial)() ? \"default\" : void 0,\r\n integrationOptions: {}\r\n });\r\n return $result\r\n },\r\n _moveFocus: function() {\r\n this.callBase.apply(this, arguments);\r\n this.scrollToItem(this.option(\"focusedElement\"))\r\n },\r\n _refresh: function() {\r\n if (!(0, _window.hasWindow)()) {\r\n this.callBase()\r\n } else {\r\n var scrollTop = this._scrollView.scrollTop();\r\n this.callBase();\r\n scrollTop && this._scrollView.scrollTo(scrollTop)\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"pageLoadMode\":\r\n this._toggleNextButton(args.value);\r\n this._initScrollView();\r\n break;\r\n case \"dataSource\":\r\n this.callBase(args);\r\n this._initScrollView();\r\n this._isDataSourceFirstLoadCompleted(false);\r\n break;\r\n case \"items\":\r\n this.callBase(args);\r\n this._isDataSourceFirstLoadCompleted(false);\r\n break;\r\n case \"pullingDownText\":\r\n case \"pulledDownText\":\r\n case \"refreshingText\":\r\n case \"pageLoadingText\":\r\n case \"showScrollbar\":\r\n case \"bounceEnabled\":\r\n case \"scrollByContent\":\r\n case \"scrollByThumb\":\r\n case \"useNativeScrolling\":\r\n case \"scrollingEnabled\":\r\n case \"pullRefreshEnabled\":\r\n this._initScrollView();\r\n this._updateLoadingState();\r\n break;\r\n case \"nextButtonText\":\r\n case \"onItemSwipe\":\r\n case \"useInkRipple\":\r\n this._invalidate();\r\n break;\r\n case \"onScroll\":\r\n case \"onPullRefresh\":\r\n case \"onPageLoading\":\r\n this._createScrollViewActions();\r\n break;\r\n case \"grouped\":\r\n case \"collapsibleGroups\":\r\n case \"groupTemplate\":\r\n this._invalidate();\r\n break;\r\n case \"wrapItemText\":\r\n this._$container.toggleClass(WRAP_ITEM_TEXT_CLASS, args.value);\r\n break;\r\n case \"onGroupRendered\":\r\n this._createGroupRenderAction();\r\n break;\r\n case \"width\":\r\n case \"height\":\r\n this.callBase(args);\r\n this._scrollView.update();\r\n break;\r\n case \"indicateLoading\":\r\n this._hideLoadingIfLoadIndicationOff();\r\n break;\r\n case \"visible\":\r\n this.callBase(args);\r\n this._scrollView.update();\r\n break;\r\n case \"rtlEnabled\":\r\n this._initScrollView();\r\n this.callBase(args);\r\n break;\r\n case \"showChevronExpr\":\r\n case \"badgeExpr\":\r\n this._invalidate();\r\n break;\r\n case \"_swipeEnabled\":\r\n case \"_revertPageOnEmptyLoad\":\r\n break;\r\n case \"_listAttributes\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _extendActionArgs: function($itemElement) {\r\n if (!this.option(\"grouped\")) {\r\n return this.callBase($itemElement)\r\n }\r\n var $group = $itemElement.closest(\".\" + LIST_GROUP_CLASS);\r\n var $item = $group.find(\".\" + LIST_ITEM_CLASS);\r\n return (0, _extend.extend)(this.callBase($itemElement), {\r\n itemIndex: {\r\n group: $group.index(),\r\n item: $item.index($itemElement)\r\n }\r\n })\r\n },\r\n expandGroup: function(groupIndex) {\r\n var deferred = new _deferred.Deferred;\r\n var $group = this._itemContainer().find(\".\" + LIST_GROUP_CLASS).eq(groupIndex);\r\n this._collapseGroupHandler($group, false).done(function() {\r\n deferred.resolveWith(this)\r\n }.bind(this));\r\n return deferred.promise()\r\n },\r\n collapseGroup: function(groupIndex) {\r\n var deferred = new _deferred.Deferred;\r\n var $group = this._itemContainer().find(\".\" + LIST_GROUP_CLASS).eq(groupIndex);\r\n this._collapseGroupHandler($group, true).done(function() {\r\n deferred.resolveWith(this)\r\n }.bind(this));\r\n return deferred\r\n },\r\n updateDimensions: function() {\r\n var that = this;\r\n var deferred = new _deferred.Deferred;\r\n if (that._scrollView) {\r\n that._scrollView.update().done(function() {\r\n !that._scrollViewIsFull() && that._updateLoadingState(true);\r\n deferred.resolveWith(that)\r\n })\r\n } else {\r\n deferred.resolveWith(that)\r\n }\r\n return deferred.promise()\r\n },\r\n reload: function() {\r\n this.callBase();\r\n this.scrollTo(0);\r\n this._pullDownHandler()\r\n },\r\n repaint: function() {\r\n this.scrollTo(0);\r\n this.callBase()\r\n },\r\n scrollTop: function() {\r\n return this._scrollView.scrollOffset().top\r\n },\r\n clientHeight: function() {\r\n return this._scrollView.clientHeight()\r\n },\r\n scrollHeight: function() {\r\n return this._scrollView.scrollHeight()\r\n },\r\n scrollBy: function(distance) {\r\n this._scrollView.scrollBy(distance)\r\n },\r\n scrollTo: function(location) {\r\n this._scrollView.scrollTo(location)\r\n },\r\n scrollToItem: function(itemElement) {\r\n var $item = this._editStrategy.getItemElement(itemElement);\r\n this._scrollView.scrollToElement($item)\r\n }\r\n}).include(_grouped_data_converter_mixin.default);\r\nexports.ListBase = ListBase;\r\nListBase.ItemClass = _item.default;\r\n\r\nfunction getScrollView() {\r\n return _scrollView || _scroll_view.default\r\n}\r\n\r\nfunction setScrollView(value) {\r\n _scrollView = value\r\n}\r\n","/**\r\n * DevExtreme (ui/multi_view.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _translator2 = require(\"../animation/translator\");\r\nvar _uiMulti_view = require(\"./multi_view/ui.multi_view.animation\");\r\nvar _math = require(\"../core/utils/math\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _common = require(\"../core/utils/common\");\r\nvar _visibility_change = require(\"../events/visibility_change\");\r\nvar _element = require(\"../core/element\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _uiCollection_widget = _interopRequireDefault(require(\"./collection/ui.collection_widget.live_update\"));\r\nvar _swipeable = _interopRequireDefault(require(\"../events/gesture/swipeable\"));\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 MULTIVIEW_CLASS = \"dx-multiview\";\r\nvar MULTIVIEW_WRAPPER_CLASS = \"dx-multiview-wrapper\";\r\nvar MULTIVIEW_ITEM_CONTAINER_CLASS = \"dx-multiview-item-container\";\r\nvar MULTIVIEW_ITEM_CLASS = \"dx-multiview-item\";\r\nvar MULTIVIEW_ITEM_HIDDEN_CLASS = \"dx-multiview-item-hidden\";\r\nvar MULTIVIEW_ITEM_DATA_KEY = \"dxMultiViewItemData\";\r\nvar MULTIVIEW_ANIMATION_DURATION = 200;\r\nvar toNumber = function(value) {\r\n return +value\r\n};\r\nvar position = function($element) {\r\n return (0, _translator2.locate)($element).left\r\n};\r\nvar MultiView = _uiCollection_widget.default.inherit({\r\n _activeStateUnit: \".\" + MULTIVIEW_ITEM_CLASS,\r\n _supportedKeys: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n pageUp: _common.noop,\r\n pageDown: _common.noop\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n selectedIndex: 0,\r\n swipeEnabled: true,\r\n animationEnabled: true,\r\n loop: false,\r\n deferRendering: true,\r\n _itemAttributes: {\r\n role: \"tabpanel\"\r\n },\r\n loopItemFocus: false,\r\n selectOnFocus: true,\r\n selectionMode: \"single\",\r\n selectionRequired: true,\r\n selectionByClick: false\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 _itemClass: function() {\r\n return MULTIVIEW_ITEM_CLASS\r\n },\r\n _itemDataKey: function() {\r\n return MULTIVIEW_ITEM_DATA_KEY\r\n },\r\n _itemContainer: function() {\r\n return this._$itemContainer\r\n },\r\n _itemElements: function() {\r\n return this._itemContainer().children(this._itemSelector())\r\n },\r\n _itemWidth: function() {\r\n if (!this._itemWidthValue) {\r\n this._itemWidthValue = this._$wrapper.width()\r\n }\r\n return this._itemWidthValue\r\n },\r\n _clearItemWidthCache: function() {\r\n delete this._itemWidthValue\r\n },\r\n _itemsCount: function() {\r\n return this.option(\"items\").length\r\n },\r\n _normalizeIndex: function(index) {\r\n var count = this._itemsCount();\r\n if (index < 0) {\r\n index += count\r\n }\r\n if (index >= count) {\r\n index -= count\r\n }\r\n return index\r\n },\r\n _getRTLSignCorrection: function() {\r\n return this.option(\"rtlEnabled\") ? -1 : 1\r\n },\r\n _init: function() {\r\n this.callBase.apply(this, arguments);\r\n var $element = this.$element();\r\n $element.addClass(MULTIVIEW_CLASS);\r\n this._$wrapper = (0, _renderer.default)(\"
\").addClass(MULTIVIEW_WRAPPER_CLASS);\r\n this._$wrapper.appendTo($element);\r\n this._$itemContainer = (0, _renderer.default)(\"
\").addClass(MULTIVIEW_ITEM_CONTAINER_CLASS);\r\n this._$itemContainer.appendTo(this._$wrapper);\r\n this.option(\"loopItemFocus\", this.option(\"loop\"));\r\n this._initSwipeable()\r\n },\r\n _initMarkup: function() {\r\n this._deferredItems = [];\r\n this.callBase();\r\n var selectedItemIndices = this._getSelectedItemIndices();\r\n this._updateItemsVisibility(selectedItemIndices[0])\r\n },\r\n _afterItemElementDeleted: function($item, deletedActionArgs) {\r\n this.callBase($item, deletedActionArgs);\r\n if (this._deferredItems) {\r\n this._deferredItems.splice(deletedActionArgs.itemIndex, 1)\r\n }\r\n },\r\n _beforeItemElementInserted: function(change) {\r\n this.callBase.apply(this, arguments);\r\n if (this._deferredItems) {\r\n this._deferredItems.splice(change.index, 0, null)\r\n }\r\n },\r\n _executeItemRenderAction: function(index, itemData, itemElement) {\r\n index = (this.option(\"items\") || []).indexOf(itemData);\r\n this.callBase(index, itemData, itemElement)\r\n },\r\n _renderItemContent: function(args) {\r\n var renderContentDeferred = new _deferred.Deferred;\r\n var that = this;\r\n var callBase = this.callBase;\r\n var deferred = new _deferred.Deferred;\r\n deferred.done(function() {\r\n var $itemContent = callBase.call(that, args);\r\n renderContentDeferred.resolve($itemContent)\r\n });\r\n this._deferredItems[args.index] = deferred;\r\n this.option(\"deferRendering\") || deferred.resolve();\r\n return renderContentDeferred.promise()\r\n },\r\n _render: function() {\r\n var _this = this;\r\n this.callBase();\r\n (0, _common.deferRender)(function() {\r\n var selectedItemIndices = _this._getSelectedItemIndices();\r\n _this._updateItems(selectedItemIndices[0])\r\n })\r\n },\r\n _updateItems: function(selectedIndex, newIndex) {\r\n this._updateItemsPosition(selectedIndex, newIndex);\r\n this._updateItemsVisibility(selectedIndex, newIndex)\r\n },\r\n _modifyByChanges: function() {\r\n this.callBase.apply(this, arguments);\r\n var selectedItemIndices = this._getSelectedItemIndices();\r\n this._updateItemsVisibility(selectedItemIndices[0])\r\n },\r\n _updateItemsPosition: function(selectedIndex, newIndex) {\r\n var $itemElements = this._itemElements();\r\n var positionSign = (0, _type.isDefined)(newIndex) ? -this._animationDirection(newIndex, selectedIndex) : void 0;\r\n var $selectedItem = $itemElements.eq(selectedIndex);\r\n _uiMulti_view._translator.move($selectedItem, 0);\r\n if ((0, _type.isDefined)(newIndex)) {\r\n _uiMulti_view._translator.move($itemElements.eq(newIndex), 100 * positionSign + \"%\")\r\n }\r\n },\r\n _updateItemsVisibility: function(selectedIndex, newIndex) {\r\n var $itemElements = this._itemElements();\r\n $itemElements.each(function(itemIndex, item) {\r\n var $item = (0, _renderer.default)(item);\r\n var isHidden = itemIndex !== selectedIndex && itemIndex !== newIndex;\r\n if (!isHidden) {\r\n this._renderSpecificItem(itemIndex)\r\n }\r\n $item.toggleClass(MULTIVIEW_ITEM_HIDDEN_CLASS, isHidden);\r\n this.setAria(\"hidden\", isHidden || void 0, $item)\r\n }.bind(this))\r\n },\r\n _renderSpecificItem: function(index) {\r\n var $item = this._itemElements().eq(index);\r\n var hasItemContent = $item.find(this._itemContentClass()).length > 0;\r\n if ((0, _type.isDefined)(index) && !hasItemContent) {\r\n this._deferredItems[index].resolve();\r\n (0, _visibility_change.triggerResizeEvent)($item)\r\n }\r\n },\r\n _refreshItem: function($item, item) {\r\n this.callBase($item, item);\r\n this._updateItemsVisibility(this.option(\"selectedIndex\"))\r\n },\r\n _setAriaSelected: _common.noop,\r\n _updateSelection: function(addedSelection, removedSelection) {\r\n var newIndex = addedSelection[0];\r\n var prevIndex = removedSelection[0];\r\n _uiMulti_view.animation.complete(this._$itemContainer);\r\n this._updateItems(prevIndex, newIndex);\r\n var animationDirection = this._animationDirection(newIndex, prevIndex);\r\n this._animateItemContainer(animationDirection * this._itemWidth(), function() {\r\n _uiMulti_view._translator.move(this._$itemContainer, 0);\r\n this._updateItems(newIndex);\r\n this._$itemContainer.width()\r\n }.bind(this))\r\n },\r\n _animateItemContainer: function(position, completeCallback) {\r\n var duration = this.option(\"animationEnabled\") ? MULTIVIEW_ANIMATION_DURATION : 0;\r\n _uiMulti_view.animation.moveTo(this._$itemContainer, position, duration, completeCallback)\r\n },\r\n _animationDirection: function(newIndex, prevIndex) {\r\n var containerPosition = position(this._$itemContainer);\r\n var indexDifference = (prevIndex - newIndex) * this._getRTLSignCorrection() * this._getItemFocusLoopSignCorrection();\r\n var isSwipePresent = 0 !== containerPosition;\r\n var directionSignVariable = isSwipePresent ? containerPosition : indexDifference;\r\n return (0, _math.sign)(directionSignVariable)\r\n },\r\n _getSwipeDisabledState: function() {\r\n return !this.option(\"swipeEnabled\") || this._itemsCount() <= 1\r\n },\r\n _initSwipeable: function() {\r\n var _this2 = this;\r\n this._createComponent(this.$element(), _swipeable.default, {\r\n disabled: this._getSwipeDisabledState(),\r\n elastic: false,\r\n itemSizeFunc: this._itemWidth.bind(this),\r\n onStart: function(args) {\r\n return _this2._swipeStartHandler(args.event)\r\n },\r\n onUpdated: function(args) {\r\n return _this2._swipeUpdateHandler(args.event)\r\n },\r\n onEnd: function(args) {\r\n return _this2._swipeEndHandler(args.event)\r\n }\r\n })\r\n },\r\n _swipeStartHandler: function(e) {\r\n _uiMulti_view.animation.complete(this._$itemContainer);\r\n var selectedIndex = this.option(\"selectedIndex\");\r\n var loop = this.option(\"loop\");\r\n var lastIndex = this._itemsCount() - 1;\r\n var rtl = this.option(\"rtlEnabled\");\r\n e.maxLeftOffset = toNumber(loop || (rtl ? selectedIndex > 0 : selectedIndex < lastIndex));\r\n e.maxRightOffset = toNumber(loop || (rtl ? selectedIndex < lastIndex : selectedIndex > 0));\r\n this._swipeDirection = null\r\n },\r\n _swipeUpdateHandler: function(e) {\r\n var offset = e.offset;\r\n var swipeDirection = (0, _math.sign)(offset) * this._getRTLSignCorrection();\r\n _uiMulti_view._translator.move(this._$itemContainer, offset * this._itemWidth());\r\n if (swipeDirection !== this._swipeDirection) {\r\n this._swipeDirection = swipeDirection;\r\n var selectedIndex = this.option(\"selectedIndex\");\r\n var newIndex = this._normalizeIndex(selectedIndex - swipeDirection);\r\n this._updateItems(selectedIndex, newIndex)\r\n }\r\n },\r\n _swipeEndHandler: function(e) {\r\n var targetOffset = e.targetOffset * this._getRTLSignCorrection();\r\n if (targetOffset) {\r\n this.option(\"selectedIndex\", this._normalizeIndex(this.option(\"selectedIndex\") - targetOffset));\r\n var $selectedElement = this.itemElements().filter(\".dx-item-selected\");\r\n this.option(\"focusStateEnabled\") && this.option(\"focusedElement\", (0, _element.getPublicElement)($selectedElement))\r\n } else {\r\n this._animateItemContainer(0, _common.noop)\r\n }\r\n },\r\n _getItemFocusLoopSignCorrection: function() {\r\n return this._itemFocusLooped ? -1 : 1\r\n },\r\n _moveFocus: function() {\r\n this.callBase.apply(this, arguments);\r\n this._itemFocusLooped = false\r\n },\r\n _prevItem: function($items) {\r\n var $result = this.callBase.apply(this, arguments);\r\n this._itemFocusLooped = $result.is($items.last());\r\n return $result\r\n },\r\n _nextItem: function($items) {\r\n var $result = this.callBase.apply(this, arguments);\r\n this._itemFocusLooped = $result.is($items.first());\r\n return $result\r\n },\r\n _dimensionChanged: function() {\r\n this._clearItemWidthCache()\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this._dimensionChanged()\r\n }\r\n },\r\n _updateSwipeDisabledState: function() {\r\n var disabled = this._getSwipeDisabledState();\r\n _swipeable.default.getInstance(this.$element()).option(\"disabled\", disabled)\r\n },\r\n _optionChanged: function(args) {\r\n var value = args.value;\r\n switch (args.name) {\r\n case \"loop\":\r\n this.option(\"loopItemFocus\", value);\r\n break;\r\n case \"animationEnabled\":\r\n break;\r\n case \"swipeEnabled\":\r\n this._updateSwipeDisabledState();\r\n break;\r\n case \"deferRendering\":\r\n this._invalidate();\r\n break;\r\n case \"items\":\r\n this._updateSwipeDisabledState();\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxMultiView\", MultiView);\r\nvar _default = MultiView;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/number_box/utils.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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.splitByIndex = exports.getNthOccurrence = exports.getRealSeparatorIndex = void 0;\r\nvar getRealSeparatorIndex = function(str) {\r\n var quoteBalance = 0;\r\n var separatorCount = 0;\r\n for (var i = 0; i < str.length; ++i) {\r\n if (\"'\" === str[i]) {\r\n quoteBalance++\r\n }\r\n if (\".\" === str[i]) {\r\n ++separatorCount;\r\n if (quoteBalance % 2 === 0) {\r\n return {\r\n occurrence: separatorCount,\r\n index: i\r\n }\r\n }\r\n }\r\n }\r\n return {\r\n occurrence: 1,\r\n index: -1\r\n }\r\n};\r\nexports.getRealSeparatorIndex = getRealSeparatorIndex;\r\nvar getNthOccurrence = function(str, c, n) {\r\n var i = -1;\r\n while (n-- && i++ < str.length) {\r\n i = str.indexOf(c, i)\r\n }\r\n return i\r\n};\r\nexports.getNthOccurrence = getNthOccurrence;\r\nvar splitByIndex = function(str, index) {\r\n if (index === -1) {\r\n return [str]\r\n }\r\n return [str.slice(0, index), str.slice(index + 1)]\r\n};\r\nexports.splitByIndex = splitByIndex;\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _index = require(\"../../events/utils/index\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiListEditStrategy = _interopRequireDefault(require(\"./ui.list.edit.strategy.grouped\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _uiListEdit = _interopRequireDefault(require(\"./ui.list.edit.provider\"));\r\nvar _uiList = require(\"./ui.list.base\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar LIST_ITEM_SELECTED_CLASS = \"dx-list-item-selected\";\r\nvar LIST_ITEM_RESPONSE_WAIT_CLASS = \"dx-list-item-response-wait\";\r\nvar ListEdit = _uiList.ListBase.inherit({\r\n _supportedKeys: function() {\r\n var _this = this;\r\n var that = this;\r\n var parent = this.callBase();\r\n var deleteFocusedItem = function(e) {\r\n if (that.option(\"allowItemDeleting\")) {\r\n e.preventDefault();\r\n that.deleteItem(that.option(\"focusedElement\"))\r\n }\r\n };\r\n var moveFocusedItem = function(e, moveUp) {\r\n var editStrategy = _this._editStrategy;\r\n var focusedElement = _this.option(\"focusedElement\");\r\n var focusedItemIndex = editStrategy.getNormalizedIndex(focusedElement);\r\n var isLastIndexFocused = focusedItemIndex === _this._getLastItemIndex();\r\n if (isLastIndexFocused && _this._isDataSourceLoading()) {\r\n return\r\n }\r\n if (e.shiftKey && that.option(\"itemDragging.allowReordering\")) {\r\n var nextItemIndex = focusedItemIndex + (moveUp ? -1 : 1);\r\n var $nextItem = editStrategy.getItemElement(nextItemIndex);\r\n _this.reorderItem(focusedElement, $nextItem);\r\n _this.scrollToItem(focusedElement);\r\n e.preventDefault()\r\n } else {\r\n var editProvider = _this._editProvider;\r\n var isInternalMoving = editProvider.handleKeyboardEvents(focusedItemIndex, moveUp);\r\n if (!isInternalMoving) {\r\n moveUp ? parent.upArrow(e) : parent.downArrow(e)\r\n }\r\n }\r\n };\r\n var enter = function(e) {\r\n if (!this._editProvider.handleEnterPressing(e)) {\r\n parent.enter.apply(this, arguments)\r\n }\r\n };\r\n var space = function(e) {\r\n if (!this._editProvider.handleEnterPressing(e)) {\r\n parent.space.apply(this, arguments)\r\n }\r\n };\r\n return (0, _extend.extend)({}, parent, {\r\n del: deleteFocusedItem,\r\n upArrow: function(e) {\r\n return moveFocusedItem(e, true)\r\n },\r\n downArrow: function(e) {\r\n return moveFocusedItem(e)\r\n },\r\n enter: enter,\r\n space: space\r\n })\r\n },\r\n _updateSelection: function() {\r\n this._editProvider.afterItemsRendered();\r\n this.callBase()\r\n },\r\n _getLastItemIndex: function() {\r\n return this._itemElements().length - 1\r\n },\r\n _refreshItemElements: function() {\r\n this.callBase();\r\n var excludedSelectors = this._editProvider.getExcludedItemSelectors();\r\n if (excludedSelectors.length) {\r\n this._itemElementsCache = this._itemElementsCache.not(excludedSelectors)\r\n }\r\n },\r\n _isItemStrictEquals: function(item1, item2) {\r\n var privateKey = item1 && item1.__dx_key__;\r\n if (privateKey && !this.key() && this._selection.isItemSelected(privateKey)) {\r\n return false\r\n }\r\n return this.callBase(item1, item2)\r\n },\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n showSelectionControls: false,\r\n selectionMode: \"none\",\r\n selectAllMode: \"page\",\r\n onSelectAllValueChanged: null,\r\n selectAllText: _message.default.format(\"dxList-selectAll\"),\r\n menuItems: [],\r\n menuMode: \"context\",\r\n allowItemDeleting: false,\r\n itemDeleteMode: \"static\",\r\n itemDragging: {}\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function(_device) {\r\n return \"ios\" === _device.platform\r\n },\r\n options: {\r\n menuMode: \"slide\",\r\n itemDeleteMode: \"slideItem\"\r\n }\r\n }, {\r\n device: {\r\n platform: \"android\"\r\n },\r\n options: {\r\n itemDeleteMode: \"swipe\"\r\n }\r\n }])\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initEditProvider()\r\n },\r\n _initDataSource: function() {\r\n this.callBase();\r\n if (!this._isPageSelectAll()) {\r\n this._dataSource && this._dataSource.requireTotalCount(true)\r\n }\r\n },\r\n _isPageSelectAll: function() {\r\n return \"page\" === this.option(\"selectAllMode\")\r\n },\r\n _initEditProvider: function() {\r\n this._editProvider = new _uiListEdit.default(this)\r\n },\r\n _disposeEditProvider: function() {\r\n if (this._editProvider) {\r\n this._editProvider.dispose()\r\n }\r\n },\r\n _refreshEditProvider: function() {\r\n this._disposeEditProvider();\r\n this._initEditProvider()\r\n },\r\n _initEditStrategy: function() {\r\n if (this.option(\"grouped\")) {\r\n this._editStrategy = new _uiListEditStrategy.default(this)\r\n } else {\r\n this.callBase()\r\n }\r\n },\r\n _initMarkup: function() {\r\n this._refreshEditProvider();\r\n this.callBase()\r\n },\r\n _renderItems: function() {\r\n this.callBase.apply(this, arguments);\r\n this._editProvider.afterItemsRendered()\r\n },\r\n _selectedItemClass: function() {\r\n return LIST_ITEM_SELECTED_CLASS\r\n },\r\n _itemResponseWaitClass: function() {\r\n return LIST_ITEM_RESPONSE_WAIT_CLASS\r\n },\r\n _itemClickHandler: function(e) {\r\n var $itemElement = (0, _renderer.default)(e.currentTarget);\r\n if ($itemElement.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n return\r\n }\r\n var handledByEditProvider = this._editProvider.handleClick($itemElement, e);\r\n if (handledByEditProvider) {\r\n return\r\n }\r\n this._saveSelectionChangeEvent(e);\r\n this.callBase.apply(this, arguments)\r\n },\r\n _shouldFireContextMenuEvent: function() {\r\n return this.callBase.apply(this, arguments) || this._editProvider.contextMenuHandlerExists()\r\n },\r\n _itemHoldHandler: function(e) {\r\n var $itemElement = (0, _renderer.default)(e.currentTarget);\r\n if ($itemElement.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n return\r\n }\r\n var handledByEditProvider = (0, _index.isTouchEvent)(e) && this._editProvider.handleContextMenu($itemElement, e);\r\n if (handledByEditProvider) {\r\n e.handledByEditProvider = true;\r\n return\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _itemContextMenuHandler: function(e) {\r\n var $itemElement = (0, _renderer.default)(e.currentTarget);\r\n if ($itemElement.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n return\r\n }\r\n var handledByEditProvider = !e.handledByEditProvider && this._editProvider.handleContextMenu($itemElement, e);\r\n if (handledByEditProvider) {\r\n e.preventDefault();\r\n return\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _postprocessRenderItem: function(args) {\r\n this.callBase.apply(this, arguments);\r\n this._editProvider.modifyItemElement(args)\r\n },\r\n _clean: function() {\r\n this._disposeEditProvider();\r\n this.callBase()\r\n },\r\n focusListItem: function(index) {\r\n var $item = this._editStrategy.getItemElement(index);\r\n this.option(\"focusedElement\", $item);\r\n this.focus();\r\n this.scrollToItem(this.option(\"focusedElement\"))\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"selectAllMode\":\r\n this._initDataSource();\r\n this._dataSource.pageIndex(0);\r\n this._dataSource.load();\r\n break;\r\n case \"grouped\":\r\n this._clearSelectedItems();\r\n delete this._renderingGroupIndex;\r\n this._initEditStrategy();\r\n this.callBase(args);\r\n break;\r\n case \"showSelectionControls\":\r\n case \"menuItems\":\r\n case \"menuMode\":\r\n case \"allowItemDeleting\":\r\n case \"itemDeleteMode\":\r\n case \"itemDragging\":\r\n case \"selectAllText\":\r\n this._invalidate();\r\n break;\r\n case \"onSelectAllValueChanged\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n selectAll: function() {\r\n return this._selection.selectAll(this._isPageSelectAll())\r\n },\r\n unselectAll: function() {\r\n return this._selection.deselectAll(this._isPageSelectAll())\r\n },\r\n isSelectAll: function() {\r\n return this._selection.getSelectAllState(this._isPageSelectAll())\r\n },\r\n getFlatIndexByItemElement: function(itemElement) {\r\n return this._itemElements().index(itemElement)\r\n },\r\n getItemElementByFlatIndex: function(flatIndex) {\r\n var $itemElements = this._itemElements();\r\n if (flatIndex < 0 || flatIndex >= $itemElements.length) {\r\n return (0, _renderer.default)()\r\n }\r\n return $itemElements.eq(flatIndex)\r\n },\r\n getItemByIndex: function(index) {\r\n return this._editStrategy.getItemDataByIndex(index)\r\n }\r\n});\r\nvar _default = ListEdit;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.decorator.switchable.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _common = require(\"../../core/utils/common\");\r\nvar _uiListEdit = _interopRequireDefault(require(\"./ui.list.edit.decorator\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _emitter = require(\"../../events/core/emitter.feedback\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar abstract = _uiListEdit.default.abstract;\r\nvar LIST_EDIT_DECORATOR = \"dxListEditDecorator\";\r\nvar POINTER_DOWN_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.down, LIST_EDIT_DECORATOR);\r\nvar ACTIVE_EVENT_NAME = (0, _index.addNamespace)(_emitter.active, LIST_EDIT_DECORATOR);\r\nvar LIST_ITEM_CONTENT_CLASS = \"dx-list-item-content\";\r\nvar SWITCHABLE_DELETE_READY_CLASS = \"dx-list-switchable-delete-ready\";\r\nvar SWITCHABLE_MENU_SHIELD_POSITIONING_CLASS = \"dx-list-switchable-menu-shield-positioning\";\r\nvar SWITCHABLE_DELETE_TOP_SHIELD_CLASS = \"dx-list-switchable-delete-top-shield\";\r\nvar SWITCHABLE_DELETE_BOTTOM_SHIELD_CLASS = \"dx-list-switchable-delete-bottom-shield\";\r\nvar SWITCHABLE_MENU_ITEM_SHIELD_POSITIONING_CLASS = \"dx-list-switchable-menu-item-shield-positioning\";\r\nvar SWITCHABLE_DELETE_ITEM_CONTENT_SHIELD_CLASS = \"dx-list-switchable-delete-item-content-shield\";\r\nvar SWITCHABLE_DELETE_BUTTON_CONTAINER_CLASS = \"dx-list-switchable-delete-button-container\";\r\nvar SwitchableEditDecorator = _uiListEdit.default.inherit({\r\n _init: function() {\r\n this._$topShield = (0, _renderer.default)(\"
\").addClass(SWITCHABLE_DELETE_TOP_SHIELD_CLASS);\r\n this._$bottomShield = (0, _renderer.default)(\"
\").addClass(SWITCHABLE_DELETE_BOTTOM_SHIELD_CLASS);\r\n this._$itemContentShield = (0, _renderer.default)(\"
\").addClass(SWITCHABLE_DELETE_ITEM_CONTENT_SHIELD_CLASS);\r\n _events_engine.default.on(this._$topShield, POINTER_DOWN_EVENT_NAME, this._cancelDeleteReadyItem.bind(this));\r\n _events_engine.default.on(this._$bottomShield, POINTER_DOWN_EVENT_NAME, this._cancelDeleteReadyItem.bind(this));\r\n this._list.$element().append(this._$topShield.toggle(false)).append(this._$bottomShield.toggle(false))\r\n },\r\n handleClick: function() {\r\n return this._cancelDeleteReadyItem()\r\n },\r\n _cancelDeleteReadyItem: function() {\r\n if (!this._$readyToDeleteItem) {\r\n return false\r\n }\r\n this._cancelDelete(this._$readyToDeleteItem);\r\n return true\r\n },\r\n _cancelDelete: function($itemElement) {\r\n this._toggleDeleteReady($itemElement, false)\r\n },\r\n _toggleDeleteReady: function($itemElement, readyToDelete) {\r\n if (void 0 === readyToDelete) {\r\n readyToDelete = !this._isReadyToDelete($itemElement)\r\n }\r\n this._toggleShields($itemElement, readyToDelete);\r\n this._toggleScrolling(readyToDelete);\r\n this._cacheReadyToDeleteItem($itemElement, readyToDelete);\r\n this._animateToggleDelete($itemElement, readyToDelete)\r\n },\r\n _isReadyToDelete: function($itemElement) {\r\n return $itemElement.hasClass(SWITCHABLE_DELETE_READY_CLASS)\r\n },\r\n _toggleShields: function($itemElement, enabled) {\r\n this._list.$element().toggleClass(SWITCHABLE_MENU_SHIELD_POSITIONING_CLASS, enabled);\r\n this._$topShield.toggle(enabled);\r\n this._$bottomShield.toggle(enabled);\r\n if (enabled) {\r\n this._updateShieldsHeight($itemElement)\r\n }\r\n this._toggleContentShield($itemElement, enabled)\r\n },\r\n _updateShieldsHeight: function($itemElement) {\r\n var $list = this._list.$element();\r\n var listTopOffset = $list.offset().top;\r\n var listHeight = $list.outerHeight();\r\n var itemTopOffset = $itemElement.offset().top;\r\n var itemHeight = $itemElement.outerHeight();\r\n var dirtyTopShieldHeight = itemTopOffset - listTopOffset;\r\n var dirtyBottomShieldHeight = listHeight - itemHeight - dirtyTopShieldHeight;\r\n this._$topShield.height(Math.max(dirtyTopShieldHeight, 0));\r\n this._$bottomShield.height(Math.max(dirtyBottomShieldHeight, 0))\r\n },\r\n _toggleContentShield: function($itemElement, enabled) {\r\n if (enabled) {\r\n $itemElement.find(\".\" + LIST_ITEM_CONTENT_CLASS).first().append(this._$itemContentShield)\r\n } else {\r\n this._$itemContentShield.detach()\r\n }\r\n },\r\n _toggleScrolling: function(readyToDelete) {\r\n var scrollView = this._list.$element().dxScrollView(\"instance\");\r\n if (readyToDelete) {\r\n scrollView.on(\"start\", this._cancelScrolling)\r\n } else {\r\n scrollView.off(\"start\", this._cancelScrolling)\r\n }\r\n },\r\n _cancelScrolling: function(args) {\r\n args.event.cancel = true\r\n },\r\n _cacheReadyToDeleteItem: function($itemElement, cache) {\r\n if (cache) {\r\n this._$readyToDeleteItem = $itemElement\r\n } else {\r\n delete this._$readyToDeleteItem\r\n }\r\n },\r\n _animateToggleDelete: function($itemElement, readyToDelete) {\r\n if (readyToDelete) {\r\n this._enablePositioning($itemElement);\r\n this._prepareDeleteReady($itemElement);\r\n this._animatePrepareDeleteReady($itemElement);\r\n _events_engine.default.off($itemElement, _pointer.default.up)\r\n } else {\r\n this._forgetDeleteReady($itemElement);\r\n this._animateForgetDeleteReady($itemElement).done(this._disablePositioning.bind(this, $itemElement))\r\n }\r\n },\r\n _enablePositioning: function($itemElement) {\r\n $itemElement.addClass(SWITCHABLE_MENU_ITEM_SHIELD_POSITIONING_CLASS);\r\n _events_engine.default.on($itemElement, ACTIVE_EVENT_NAME, _common.noop);\r\n _events_engine.default.one($itemElement, _pointer.default.up, this._disablePositioning.bind(this, $itemElement))\r\n },\r\n _disablePositioning: function($itemElement) {\r\n $itemElement.removeClass(SWITCHABLE_MENU_ITEM_SHIELD_POSITIONING_CLASS);\r\n _events_engine.default.off($itemElement, ACTIVE_EVENT_NAME)\r\n },\r\n _prepareDeleteReady: function($itemElement) {\r\n $itemElement.addClass(SWITCHABLE_DELETE_READY_CLASS)\r\n },\r\n _forgetDeleteReady: function($itemElement) {\r\n $itemElement.removeClass(SWITCHABLE_DELETE_READY_CLASS)\r\n },\r\n _animatePrepareDeleteReady: abstract,\r\n _animateForgetDeleteReady: abstract,\r\n _getDeleteButtonContainer: function($itemElement) {\r\n $itemElement = $itemElement || this._$readyToDeleteItem;\r\n return $itemElement.children(\".\" + SWITCHABLE_DELETE_BUTTON_CONTAINER_CLASS)\r\n },\r\n _deleteItem: function($itemElement) {\r\n $itemElement = $itemElement || this._$readyToDeleteItem;\r\n this._getDeleteButtonContainer($itemElement).detach();\r\n if ($itemElement.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n return\r\n }\r\n this._list.deleteItem($itemElement).always(this._cancelDelete.bind(this, $itemElement))\r\n },\r\n _isRtlEnabled: function() {\r\n return this._list.option(\"rtlEnabled\")\r\n },\r\n dispose: function() {\r\n if (this._$topShield) {\r\n this._$topShield.remove()\r\n }\r\n if (this._$bottomShield) {\r\n this._$bottomShield.remove()\r\n }\r\n this.callBase.apply(this, arguments)\r\n }\r\n});\r\nvar _default = SwitchableEditDecorator;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/list/ui.list.edit.decorator_menu_helper.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 EditDecoratorMenuHelperMixin = {\r\n _menuEnabled: function() {\r\n return !!this._menuItems().length\r\n },\r\n _menuItems: function() {\r\n return this._list.option(\"menuItems\")\r\n },\r\n _deleteEnabled: function() {\r\n return this._list.option(\"allowItemDeleting\")\r\n },\r\n _fireMenuAction: function($itemElement, action) {\r\n this._list._itemEventHandlerByHandler($itemElement, action, {}, {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n }\r\n};\r\nvar _default = EditDecoratorMenuHelperMixin;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/menu.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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(\"./menu/ui.menu\"));\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/menu/ui.menu.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 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 _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _element = require(\"../../core/element\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _utils = require(\"../overlay/utils\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _hover = require(\"../../events/hover\");\r\nvar _ui = _interopRequireDefault(require(\"../context_menu/ui.menu_base\"));\r\nvar _overlay = _interopRequireDefault(require(\"../overlay\"));\r\nvar _ui2 = _interopRequireDefault(require(\"./ui.submenu\"));\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\nvar _tree_view = _interopRequireDefault(require(\"../tree_view\"));\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 _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 DX_MENU_CLASS = \"dx-menu\";\r\nvar DX_MENU_VERTICAL_CLASS = DX_MENU_CLASS + \"-vertical\";\r\nvar DX_MENU_HORIZONTAL_CLASS = DX_MENU_CLASS + \"-horizontal\";\r\nvar DX_MENU_ITEM_CLASS = DX_MENU_CLASS + \"-item\";\r\nvar DX_MENU_ITEMS_CONTAINER_CLASS = DX_MENU_CLASS + \"-items-container\";\r\nvar DX_MENU_ITEM_EXPANDED_CLASS = DX_MENU_ITEM_CLASS + \"-expanded\";\r\nvar DX_CONTEXT_MENU_CLASS = \"dx-context-menu\";\r\nvar DX_CONTEXT_MENU_CONTAINER_BORDER_CLASS = DX_CONTEXT_MENU_CLASS + \"-container-border\";\r\nvar DX_CONTEXT_MENU_CONTENT_DELIMITER_CLASS = \"dx-context-menu-content-delimiter\";\r\nvar DX_SUBMENU_CLASS = \"dx-submenu\";\r\nvar DX_STATE_DISABLED_CLASS = \"dx-state-disabled\";\r\nvar DX_STATE_HOVER_CLASS = \"dx-state-hover\";\r\nvar DX_STATE_ACTIVE_CLASS = \"dx-state-active\";\r\nvar DX_ADAPTIVE_MODE_CLASS = DX_MENU_CLASS + \"-adaptive-mode\";\r\nvar DX_ADAPTIVE_HAMBURGER_BUTTON_CLASS = DX_MENU_CLASS + \"-hamburger-button\";\r\nvar DX_ADAPTIVE_MODE_OVERLAY_WRAPPER_CLASS = DX_ADAPTIVE_MODE_CLASS + \"-overlay-wrapper\";\r\nvar FOCUS_UP = \"up\";\r\nvar FOCUS_DOWN = \"down\";\r\nvar FOCUS_LEFT = \"left\";\r\nvar FOCUS_RIGHT = \"right\";\r\nvar SHOW_SUBMENU_OPERATION = \"showSubmenu\";\r\nvar NEXTITEM_OPERATION = \"nextItem\";\r\nvar PREVITEM_OPERATION = \"prevItem\";\r\nvar DEFAULT_DELAY = {\r\n show: 50,\r\n hide: 300\r\n};\r\nvar ACTIONS = [\"onSubmenuShowing\", \"onSubmenuShown\", \"onSubmenuHiding\", \"onSubmenuHidden\", \"onItemContextMenu\", \"onItemClick\", \"onSelectionChanged\", \"onItemRendered\"];\r\nvar Menu = function(_MenuBase) {\r\n _inheritsLoose(Menu, _MenuBase);\r\n\r\n function Menu() {\r\n return _MenuBase.apply(this, arguments) || this\r\n }\r\n var _proto = Menu.prototype;\r\n _proto._getDefaultOptions = function() {\r\n return (0, _extend.extend)(_MenuBase.prototype._getDefaultOptions.call(this), {\r\n orientation: \"horizontal\",\r\n submenuDirection: \"auto\",\r\n showFirstSubmenuMode: {\r\n name: \"onClick\",\r\n delay: {\r\n show: 50,\r\n hide: 300\r\n }\r\n },\r\n hideSubmenuOnMouseLeave: false,\r\n onSubmenuShowing: null,\r\n onSubmenuShown: null,\r\n onSubmenuHiding: null,\r\n onSubmenuHidden: null,\r\n adaptivityEnabled: false\r\n })\r\n };\r\n _proto._setOptionsByReference = function() {\r\n _MenuBase.prototype._setOptionsByReference.call(this);\r\n (0, _extend.extend)(this._optionsByReference, {\r\n animation: true,\r\n selectedItem: true\r\n })\r\n };\r\n _proto._itemElements = function() {\r\n var rootMenuElements = _MenuBase.prototype._itemElements.call(this);\r\n var submenuElements = this._submenuItemElements();\r\n return rootMenuElements.add(submenuElements)\r\n };\r\n _proto._submenuItemElements = function() {\r\n var elements = [];\r\n var itemSelector = \".\".concat(DX_MENU_ITEM_CLASS);\r\n var currentSubmenu = this._submenus.length && this._submenus[0];\r\n if (currentSubmenu && currentSubmenu.itemsContainer()) {\r\n elements = currentSubmenu.itemsContainer().find(itemSelector)\r\n }\r\n return elements\r\n };\r\n _proto._focusTarget = function() {\r\n return this.$element()\r\n };\r\n _proto._isMenuHorizontal = function() {\r\n return \"horizontal\" === this.option(\"orientation\")\r\n };\r\n _proto._moveFocus = function(location) {\r\n var $items = this._getAvailableItems();\r\n var isMenuHorizontal = this._isMenuHorizontal();\r\n var $activeItem = this._getActiveItem(true);\r\n var argument;\r\n var operation;\r\n var navigationAction;\r\n var $newTarget;\r\n switch (location) {\r\n case FOCUS_UP:\r\n operation = isMenuHorizontal ? SHOW_SUBMENU_OPERATION : this._getItemsNavigationOperation(PREVITEM_OPERATION);\r\n argument = isMenuHorizontal ? $activeItem : $items;\r\n navigationAction = this._getKeyboardNavigationAction(operation, argument);\r\n $newTarget = navigationAction();\r\n break;\r\n case FOCUS_DOWN:\r\n operation = isMenuHorizontal ? SHOW_SUBMENU_OPERATION : this._getItemsNavigationOperation(NEXTITEM_OPERATION);\r\n argument = isMenuHorizontal ? $activeItem : $items;\r\n navigationAction = this._getKeyboardNavigationAction(operation, argument);\r\n $newTarget = navigationAction();\r\n break;\r\n case FOCUS_RIGHT:\r\n operation = isMenuHorizontal ? this._getItemsNavigationOperation(NEXTITEM_OPERATION) : SHOW_SUBMENU_OPERATION;\r\n argument = isMenuHorizontal ? $items : $activeItem;\r\n navigationAction = this._getKeyboardNavigationAction(operation, argument);\r\n $newTarget = navigationAction();\r\n break;\r\n case FOCUS_LEFT:\r\n operation = isMenuHorizontal ? this._getItemsNavigationOperation(PREVITEM_OPERATION) : SHOW_SUBMENU_OPERATION;\r\n argument = isMenuHorizontal ? $items : $activeItem;\r\n navigationAction = this._getKeyboardNavigationAction(operation, argument);\r\n $newTarget = navigationAction();\r\n break;\r\n default:\r\n return _MenuBase.prototype._moveFocus.call(this, location)\r\n }\r\n if ($newTarget && 0 !== $newTarget.length) {\r\n this.option(\"focusedElement\", (0, _element.getPublicElement)($newTarget))\r\n }\r\n };\r\n _proto._getItemsNavigationOperation = function(operation) {\r\n var navOperation = operation;\r\n if (this.option(\"rtlEnabled\")) {\r\n navOperation = operation === PREVITEM_OPERATION ? NEXTITEM_OPERATION : PREVITEM_OPERATION\r\n }\r\n return navOperation\r\n };\r\n _proto._getKeyboardNavigationAction = function(operation, argument) {\r\n var action = _common.noop;\r\n switch (operation) {\r\n case SHOW_SUBMENU_OPERATION:\r\n if (!argument.hasClass(DX_STATE_DISABLED_CLASS)) {\r\n action = this._showSubmenu.bind(this, argument)\r\n }\r\n break;\r\n case NEXTITEM_OPERATION:\r\n action = this._nextItem.bind(this, argument);\r\n break;\r\n case PREVITEM_OPERATION:\r\n action = this._prevItem.bind(this, argument)\r\n }\r\n return action\r\n };\r\n _proto._clean = function() {\r\n _MenuBase.prototype._clean.call(this);\r\n this.option(\"templatesRenderAsynchronously\") && clearTimeout(this._resizeEventTimer)\r\n };\r\n _proto._visibilityChanged = function(visible) {\r\n if (visible) {\r\n if (!this._menuItemsWidth) {\r\n this._updateItemsWidthCache()\r\n }\r\n this._dimensionChanged()\r\n }\r\n };\r\n _proto._isAdaptivityEnabled = function() {\r\n return this.option(\"adaptivityEnabled\") && \"horizontal\" === this.option(\"orientation\")\r\n };\r\n _proto._updateItemsWidthCache = function() {\r\n var $menuItems = this.$element().find(\"ul\").first().children(\"li\").children(\".\".concat(DX_MENU_ITEM_CLASS));\r\n this._menuItemsWidth = this._getSummaryItemsWidth($menuItems, true)\r\n };\r\n _proto._dimensionChanged = function() {\r\n if (!this._isAdaptivityEnabled()) {\r\n return\r\n }\r\n var containerWidth = this.$element().outerWidth();\r\n this._toggleAdaptiveMode(this._menuItemsWidth > containerWidth)\r\n };\r\n _proto._init = function() {\r\n _MenuBase.prototype._init.call(this);\r\n this._submenus = []\r\n };\r\n _proto._initActions = function() {\r\n var _this = this;\r\n this._actions = {};\r\n (0, _iterator.each)(ACTIONS, function(index, action) {\r\n _this._actions[action] = _this._createActionByOption(action)\r\n })\r\n };\r\n _proto._initMarkup = function() {\r\n this._visibleSubmenu = null;\r\n this.$element().addClass(DX_MENU_CLASS);\r\n _MenuBase.prototype._initMarkup.call(this);\r\n this.setAria(\"role\", \"menubar\")\r\n };\r\n _proto._render = function() {\r\n _MenuBase.prototype._render.call(this);\r\n this._initAdaptivity()\r\n };\r\n _proto._renderHamburgerButton = function() {\r\n this._hamburger = new _button.default((0, _renderer.default)(\"
\").addClass(DX_ADAPTIVE_HAMBURGER_BUTTON_CLASS), {\r\n icon: \"menu\",\r\n activeStateEnabled: false,\r\n onClick: this._toggleTreeView.bind(this)\r\n });\r\n return this._hamburger.$element()\r\n };\r\n _proto._toggleTreeView = function(state) {\r\n if ((0, _type.isPlainObject)(state)) {\r\n state = !this._overlay.option(\"visible\")\r\n }\r\n this._overlay.option(\"visible\", state);\r\n this._toggleHamburgerActiveState(state)\r\n };\r\n _proto._toggleHamburgerActiveState = function(state) {\r\n this._hamburger && this._hamburger.$element().toggleClass(DX_STATE_ACTIVE_CLASS, state)\r\n };\r\n _proto._toggleAdaptiveMode = function(state) {\r\n var $menuItemsContainer = this.$element().find(\".\".concat(DX_MENU_HORIZONTAL_CLASS));\r\n var $adaptiveElements = this.$element().find(\".\".concat(DX_ADAPTIVE_MODE_CLASS));\r\n if (state) {\r\n this._hideVisibleSubmenu()\r\n } else {\r\n this._treeView && this._treeView.collapseAll();\r\n this._overlay && this._toggleTreeView(state)\r\n }\r\n $menuItemsContainer.toggle(!state);\r\n $adaptiveElements.toggle(state)\r\n };\r\n _proto._removeAdaptivity = function() {\r\n if (!this._$adaptiveContainer) {\r\n return\r\n }\r\n this._toggleAdaptiveMode(false);\r\n this._$adaptiveContainer.remove();\r\n this._$adaptiveContainer = null;\r\n this._treeView = null;\r\n this._hamburger = null;\r\n this._overlay = null\r\n };\r\n _proto._treeviewItemClickHandler = function(e) {\r\n this._actions.onItemClick(e);\r\n if (!e.node.children.length) {\r\n this._toggleTreeView(false)\r\n }\r\n };\r\n _proto._getAdaptiveOverlayOptions = function() {\r\n var _this2 = this;\r\n var rtl = this.option(\"rtlEnabled\");\r\n var position = rtl ? \"right\" : \"left\";\r\n return {\r\n maxHeight: function() {\r\n return (0, _utils.getElementMaxHeightByWindow)(_this2.$element())\r\n },\r\n deferRendering: false,\r\n shading: false,\r\n animation: false,\r\n closeOnTargetScroll: true,\r\n onHidden: function() {\r\n _this2._toggleHamburgerActiveState(false)\r\n },\r\n height: \"auto\",\r\n closeOnOutsideClick: function(e) {\r\n return !(0, _renderer.default)(e.target).closest(\".\".concat(DX_ADAPTIVE_HAMBURGER_BUTTON_CLASS)).length\r\n },\r\n position: {\r\n collision: \"flipfit\",\r\n at: \"bottom \" + position,\r\n my: \"top \" + position,\r\n of: this._hamburger.$element()\r\n }\r\n }\r\n };\r\n _proto._getTreeViewOptions = function() {\r\n var _this3 = this;\r\n var menuOptions = {};\r\n var optionsToTransfer = [\"rtlEnabled\", \"width\", \"accessKey\", \"activeStateEnabled\", \"animation\", \"dataSource\", \"disabled\", \"displayExpr\", \"displayExpr\", \"focusStateEnabled\", \"hint\", \"hoverStateEnabled\", \"itemsExpr\", \"items\", \"itemTemplate\", \"selectedExpr\", \"selectionMode\", \"tabIndex\", \"visible\"];\r\n var actionsToTransfer = [\"onItemContextMenu\", \"onSelectionChanged\"];\r\n (0, _iterator.each)(optionsToTransfer, function(_, option) {\r\n menuOptions[option] = _this3.option(option)\r\n });\r\n (0, _iterator.each)(actionsToTransfer, function(_, actionName) {\r\n menuOptions[actionName] = function(e) {\r\n _this3._actions[actionName](e)\r\n }\r\n });\r\n return (0, _extend.extend)(menuOptions, {\r\n dataSource: this.getDataSource(),\r\n animationEnabled: !!this.option(\"animation\"),\r\n onItemClick: this._treeviewItemClickHandler.bind(this),\r\n onItemExpanded: function(e) {\r\n _this3._overlay.repaint();\r\n _this3._actions.onSubmenuShown(e)\r\n },\r\n onItemCollapsed: function(e) {\r\n _this3._overlay.repaint();\r\n _this3._actions.onSubmenuHidden(e)\r\n },\r\n selectNodesRecursive: false,\r\n selectByClick: this.option(\"selectByClick\"),\r\n expandEvent: \"click\"\r\n })\r\n };\r\n _proto._initAdaptivity = function() {\r\n if (!this._isAdaptivityEnabled()) {\r\n return\r\n }\r\n this._$adaptiveContainer = (0, _renderer.default)(\"
\").addClass(DX_ADAPTIVE_MODE_CLASS);\r\n var $hamburger = this._renderHamburgerButton();\r\n this._treeView = this._createComponent((0, _renderer.default)(\"
\"), _tree_view.default, this._getTreeViewOptions());\r\n this._overlay = this._createComponent((0, _renderer.default)(\"
\"), _overlay.default, this._getAdaptiveOverlayOptions());\r\n this._overlay.$content().append(this._treeView.$element()).addClass(DX_ADAPTIVE_MODE_CLASS).addClass(this.option(\"cssClass\"));\r\n this._overlay._wrapper().addClass(DX_ADAPTIVE_MODE_OVERLAY_WRAPPER_CLASS);\r\n this._$adaptiveContainer.append($hamburger);\r\n this._$adaptiveContainer.append(this._overlay.$element());\r\n this.$element().append(this._$adaptiveContainer);\r\n this._updateItemsWidthCache();\r\n this._dimensionChanged()\r\n };\r\n _proto._getDelay = function(delayType) {\r\n var delay = this.option(\"showFirstSubmenuMode\").delay;\r\n if (!(0, _type.isDefined)(delay)) {\r\n return DEFAULT_DELAY[delayType]\r\n } else {\r\n return (0, _type.isObject)(delay) ? delay[delayType] : delay\r\n }\r\n };\r\n _proto._keyboardHandler = function(e) {\r\n return _MenuBase.prototype._keyboardHandler.call(this, e, !!this._visibleSubmenu)\r\n };\r\n _proto._renderContainer = function() {\r\n var $wrapper = (0, _renderer.default)(\"
\");\r\n $wrapper.appendTo(this.$element()).addClass(this._isMenuHorizontal() ? DX_MENU_HORIZONTAL_CLASS : DX_MENU_VERTICAL_CLASS);\r\n return _MenuBase.prototype._renderContainer.call(this, $wrapper)\r\n };\r\n _proto._renderSubmenuItems = function(node, $itemFrame) {\r\n var submenu = this._createSubmenu(node, $itemFrame);\r\n this._submenus.push(submenu);\r\n this._renderBorderElement($itemFrame);\r\n return submenu\r\n };\r\n _proto._getKeyboardListeners = function() {\r\n return _MenuBase.prototype._getKeyboardListeners.call(this).concat(this._visibleSubmenu)\r\n };\r\n _proto._createSubmenu = function(node, $rootItem) {\r\n var $submenuContainer = (0, _renderer.default)(\"
\").addClass(DX_CONTEXT_MENU_CLASS).appendTo($rootItem);\r\n var items = this._getChildNodes(node);\r\n var result = this._createComponent($submenuContainer, _ui2.default, (0, _extend.extend)(this._getSubmenuOptions(), {\r\n _dataAdapter: this._dataAdapter,\r\n _parentKey: node.internalFields.key,\r\n items: items,\r\n onHoverStart: this._clearTimeouts.bind(this),\r\n position: this.getSubmenuPosition($rootItem)\r\n }));\r\n this._attachSubmenuHandlers($rootItem, result);\r\n return result\r\n };\r\n _proto._getSubmenuOptions = function() {\r\n var _this4 = this;\r\n var $submenuTarget = (0, _renderer.default)(\"
\");\r\n var isMenuHorizontal = this._isMenuHorizontal();\r\n return {\r\n itemTemplate: this.option(\"itemTemplate\"),\r\n target: $submenuTarget,\r\n orientation: this.option(\"orientation\"),\r\n selectionMode: this.option(\"selectionMode\"),\r\n cssClass: this.option(\"cssClass\"),\r\n selectByClick: this.option(\"selectByClick\"),\r\n hoverStateEnabled: this.option(\"hoverStateEnabled\"),\r\n activeStateEnabled: this.option(\"activeStateEnabled\"),\r\n focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n animation: this.option(\"animation\"),\r\n showSubmenuMode: this.option(\"showSubmenuMode\"),\r\n displayExpr: this.option(\"displayExpr\"),\r\n disabledExpr: this.option(\"disabledExpr\"),\r\n selectedExpr: this.option(\"selectedExpr\"),\r\n itemsExpr: this.option(\"itemsExpr\"),\r\n onFocusedItemChanged: function(e) {\r\n if (!e.component.option(\"visible\")) {\r\n return\r\n }\r\n _this4.option(\"focusedElement\", e.component.option(\"focusedElement\"))\r\n },\r\n onSelectionChanged: this._nestedItemOnSelectionChangedHandler.bind(this),\r\n onItemClick: this._nestedItemOnItemClickHandler.bind(this),\r\n onItemRendered: this._nestedItemOnItemRenderedHandler.bind(this),\r\n onLeftFirstItem: isMenuHorizontal ? null : this._moveMainMenuFocus.bind(this, PREVITEM_OPERATION),\r\n onLeftLastItem: isMenuHorizontal ? null : this._moveMainMenuFocus.bind(this, NEXTITEM_OPERATION),\r\n onCloseRootSubmenu: this._moveMainMenuFocus.bind(this, isMenuHorizontal ? PREVITEM_OPERATION : null),\r\n onExpandLastSubmenu: isMenuHorizontal ? this._moveMainMenuFocus.bind(this, NEXTITEM_OPERATION) : null\r\n }\r\n };\r\n _proto._getShowFirstSubmenuMode = function() {\r\n if (!this._isDesktopDevice()) {\r\n return \"onClick\"\r\n }\r\n var optionValue = this.option(\"showFirstSubmenuMode\");\r\n return (0, _type.isObject)(optionValue) ? optionValue.name : optionValue\r\n };\r\n _proto._moveMainMenuFocus = function(direction) {\r\n var $items = this._getAvailableItems();\r\n var itemCount = $items.length;\r\n var $currentItem = $items.filter(\".\".concat(DX_MENU_ITEM_EXPANDED_CLASS)).eq(0);\r\n var itemIndex = $items.index($currentItem);\r\n this._hideSubmenu(this._visibleSubmenu);\r\n itemIndex += direction === PREVITEM_OPERATION ? -1 : 1;\r\n if (itemIndex >= itemCount) {\r\n itemIndex = 0\r\n } else {\r\n if (itemIndex < 0) {\r\n itemIndex = itemCount - 1\r\n }\r\n }\r\n var $newItem = $items.eq(itemIndex);\r\n this.option(\"focusedElement\", (0, _element.getPublicElement)($newItem))\r\n };\r\n _proto._nestedItemOnSelectionChangedHandler = function(args) {\r\n var selectedItem = args.addedItems.length && args.addedItems[0];\r\n var submenu = _ui2.default.getInstance(args.element);\r\n var onSelectionChanged = this._actions.onSelectionChanged;\r\n onSelectionChanged(args);\r\n selectedItem && this._clearSelectionInSubmenus(selectedItem[0], submenu);\r\n this._clearRootSelection();\r\n this._setOptionWithoutOptionChange(\"selectedItem\", selectedItem)\r\n };\r\n _proto._clearSelectionInSubmenus = function(item, targetSubmenu) {\r\n var _this5 = this;\r\n var cleanAllSubmenus = !arguments.length;\r\n (0, _iterator.each)(this._submenus, function(index, submenu) {\r\n var $submenu = submenu._itemContainer();\r\n var isOtherItem = !$submenu.is(targetSubmenu && targetSubmenu._itemContainer());\r\n var $selectedItem = $submenu.find(\".\".concat(_this5._selectedItemClass()));\r\n if (isOtherItem && $selectedItem.length || cleanAllSubmenus) {\r\n $selectedItem.removeClass(_this5._selectedItemClass());\r\n var selectedItemData = _this5._getItemData($selectedItem);\r\n if (selectedItemData) {\r\n selectedItemData.selected = false\r\n }\r\n submenu._clearSelectedItems()\r\n }\r\n })\r\n };\r\n _proto._clearRootSelection = function() {\r\n var $prevSelectedItem = this.$element().find(\".\".concat(DX_MENU_ITEMS_CONTAINER_CLASS)).first().children().children().filter(\".\".concat(this._selectedItemClass()));\r\n if ($prevSelectedItem.length) {\r\n var prevSelectedItemData = this._getItemData($prevSelectedItem);\r\n prevSelectedItemData.selected = false;\r\n $prevSelectedItem.removeClass(this._selectedItemClass())\r\n }\r\n };\r\n _proto._nestedItemOnItemClickHandler = function(e) {\r\n this._actions.onItemClick(e)\r\n };\r\n _proto._nestedItemOnItemRenderedHandler = function(e) {\r\n this._actions.onItemRendered(e)\r\n };\r\n _proto._attachSubmenuHandlers = function($rootItem, submenu) {\r\n var _this6 = this;\r\n var $submenuOverlayContent = submenu.getOverlayContent();\r\n var submenus = $submenuOverlayContent.find(\".\".concat(DX_SUBMENU_CLASS));\r\n var submenuMouseLeaveName = (0, _index.addNamespace)(_hover.end, this.NAME + \"_submenu\");\r\n submenu.option({\r\n onShowing: this._submenuOnShowingHandler.bind(this, $rootItem, submenu),\r\n onShown: this._submenuOnShownHandler.bind(this, $rootItem, submenu),\r\n onHiding: this._submenuOnHidingHandler.bind(this, $rootItem, submenu),\r\n onHidden: this._submenuOnHiddenHandler.bind(this, $rootItem, submenu)\r\n });\r\n (0, _iterator.each)(submenus, function(index, submenu) {\r\n _events_engine.default.off(submenu, submenuMouseLeaveName);\r\n _events_engine.default.on(submenu, submenuMouseLeaveName, null, _this6._submenuMouseLeaveHandler.bind(_this6, $rootItem))\r\n })\r\n };\r\n _proto._submenuOnShowingHandler = function($rootItem, submenu) {\r\n var $border = $rootItem.children(\".\".concat(DX_CONTEXT_MENU_CONTAINER_BORDER_CLASS));\r\n this._actions.onSubmenuShowing({\r\n rootItem: (0, _element.getPublicElement)($rootItem),\r\n submenu: submenu\r\n });\r\n $border.show();\r\n $rootItem.addClass(DX_MENU_ITEM_EXPANDED_CLASS)\r\n };\r\n _proto._submenuOnShownHandler = function($rootItem, submenu) {\r\n this._actions.onSubmenuShown({\r\n rootItem: (0, _element.getPublicElement)($rootItem),\r\n submenu: submenu\r\n })\r\n };\r\n _proto._submenuOnHidingHandler = function($rootItem, submenu, eventArgs) {\r\n var $border = $rootItem.children(\".\".concat(DX_CONTEXT_MENU_CONTAINER_BORDER_CLASS));\r\n var args = eventArgs;\r\n args.rootItem = (0, _element.getPublicElement)($rootItem);\r\n args.submenu = submenu;\r\n this._actions.onSubmenuHiding(args);\r\n eventArgs = args;\r\n if (!eventArgs.cancel) {\r\n if (this._visibleSubmenu === submenu) {\r\n this._visibleSubmenu = null\r\n }\r\n $border.hide();\r\n $rootItem.removeClass(DX_MENU_ITEM_EXPANDED_CLASS)\r\n }\r\n };\r\n _proto._submenuOnHiddenHandler = function($rootItem, submenu) {\r\n this._actions.onSubmenuHidden({\r\n rootItem: (0, _element.getPublicElement)($rootItem),\r\n submenu: submenu\r\n })\r\n };\r\n _proto._submenuMouseLeaveHandler = function($rootItem, eventArgs) {\r\n var target = (0, _renderer.default)(eventArgs.relatedTarget).parents(\".\".concat(DX_CONTEXT_MENU_CLASS))[0];\r\n var contextMenu = this._getSubmenuByRootElement($rootItem).getOverlayContent()[0];\r\n if (this.option(\"hideSubmenuOnMouseLeave\") && target !== contextMenu) {\r\n this._clearTimeouts();\r\n setTimeout(this._hideSubmenuAfterTimeout.bind(this), this._getDelay(\"hide\"))\r\n }\r\n };\r\n _proto._hideSubmenuAfterTimeout = function() {\r\n if (!this._visibleSubmenu) {\r\n return\r\n }\r\n var isRootItemHovered = (0, _renderer.default)(this._visibleSubmenu.$element().context).hasClass(DX_STATE_HOVER_CLASS);\r\n var isSubmenuItemHovered = this._visibleSubmenu.getOverlayContent().find(\".\".concat(DX_STATE_HOVER_CLASS)).length;\r\n var hoveredElementFromSubMenu = this._visibleSubmenu.getOverlayContent().get(0).querySelector(\":hover\");\r\n if (!hoveredElementFromSubMenu && !isSubmenuItemHovered && !isRootItemHovered) {\r\n this._visibleSubmenu.hide()\r\n }\r\n };\r\n _proto._getSubmenuByRootElement = function($rootItem) {\r\n if (!$rootItem) {\r\n return false\r\n }\r\n var $submenu = $rootItem.children(\".\".concat(DX_CONTEXT_MENU_CLASS));\r\n return $submenu.length && _ui2.default.getInstance($submenu)\r\n };\r\n _proto.getSubmenuPosition = function($rootItem) {\r\n var isHorizontalMenu = this._isMenuHorizontal();\r\n var submenuDirection = this.option(\"submenuDirection\").toLowerCase();\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var submenuPosition = {\r\n collision: \"flip\",\r\n of: $rootItem\r\n };\r\n switch (submenuDirection) {\r\n case \"leftortop\":\r\n submenuPosition.at = \"left top\";\r\n submenuPosition.my = isHorizontalMenu ? \"left bottom\" : \"right top\";\r\n break;\r\n case \"rightorbottom\":\r\n submenuPosition.at = isHorizontalMenu ? \"left bottom\" : \"right top\";\r\n submenuPosition.my = \"left top\";\r\n break;\r\n default:\r\n if (isHorizontalMenu) {\r\n submenuPosition.at = rtlEnabled ? \"right bottom\" : \"left bottom\";\r\n submenuPosition.my = rtlEnabled ? \"right top\" : \"left top\"\r\n } else {\r\n submenuPosition.at = rtlEnabled ? \"left top\" : \"right top\";\r\n submenuPosition.my = rtlEnabled ? \"right top\" : \"left top\"\r\n }\r\n }\r\n return submenuPosition\r\n };\r\n _proto._renderBorderElement = function($item) {\r\n (0, _renderer.default)(\"
\").appendTo($item).addClass(DX_CONTEXT_MENU_CONTAINER_BORDER_CLASS).hide()\r\n };\r\n _proto._itemPointerDownHandler = function(e) {\r\n var $target = (0, _renderer.default)(e.target);\r\n var $closestItem = $target.closest(this._itemElements());\r\n if ($closestItem.hasClass(\"dx-menu-item-has-submenu\")) {\r\n this.option(\"focusedElement\", null);\r\n return\r\n }\r\n _MenuBase.prototype._itemPointerDownHandler.call(this, e)\r\n };\r\n _proto._hoverStartHandler = function(e) {\r\n var mouseMoveEventName = (0, _index.addNamespace)(_pointer.default.move, this.NAME);\r\n var $item = this._getItemElementByEventArgs(e);\r\n var node = this._dataAdapter.getNodeByItem(this._getItemData($item));\r\n var isSelectionActive = (0, _type.isDefined)(e.buttons) && 1 === e.buttons || !(0, _type.isDefined)(e.buttons) && 1 === e.which;\r\n if (this._isItemDisabled($item)) {\r\n return\r\n }\r\n _events_engine.default.off($item, mouseMoveEventName);\r\n if (!this._hasChildren(node)) {\r\n this._showSubmenuTimer = setTimeout(this._hideSubmenuAfterTimeout.bind(this), this._getDelay(\"hide\"));\r\n return\r\n }\r\n if (\"onHover\" === this._getShowFirstSubmenuMode() && !isSelectionActive) {\r\n var submenu = this._getSubmenuByElement($item);\r\n this._clearTimeouts();\r\n if (!submenu.isOverlayVisible()) {\r\n _events_engine.default.on($item, mouseMoveEventName, this._itemMouseMoveHandler.bind(this));\r\n this._showSubmenuTimer = this._getDelay(\"hide\")\r\n }\r\n }\r\n };\r\n _proto._hoverEndHandler = function(eventArg) {\r\n var _this7 = this;\r\n var $item = this._getItemElementByEventArgs(eventArg);\r\n var relatedTarget = (0, _renderer.default)(eventArg.relatedTarget);\r\n _MenuBase.prototype._hoverEndHandler.call(this, eventArg);\r\n this._clearTimeouts();\r\n if (this._isItemDisabled($item)) {\r\n return\r\n }\r\n if (relatedTarget.hasClass(DX_CONTEXT_MENU_CONTENT_DELIMITER_CLASS)) {\r\n return\r\n }\r\n if (this.option(\"hideSubmenuOnMouseLeave\") && !relatedTarget.hasClass(DX_MENU_ITEMS_CONTAINER_CLASS)) {\r\n this._hideSubmenuTimer = setTimeout(function() {\r\n _this7._hideSubmenuAfterTimeout()\r\n }, this._getDelay(\"hide\"))\r\n }\r\n };\r\n _proto._hideVisibleSubmenu = function() {\r\n if (!this._visibleSubmenu) {\r\n return false\r\n }\r\n this._hideSubmenu(this._visibleSubmenu);\r\n return true\r\n };\r\n _proto._showSubmenu = function($itemElement) {\r\n var submenu = this._getSubmenuByElement($itemElement);\r\n if (this._visibleSubmenu !== submenu) {\r\n this._hideVisibleSubmenu()\r\n }\r\n if (submenu) {\r\n this._clearTimeouts();\r\n submenu.show();\r\n this.option(\"focusedElement\", submenu.option(\"focusedElement\"))\r\n }\r\n this._visibleSubmenu = submenu;\r\n this._hoveredRootItem = $itemElement\r\n };\r\n _proto._hideSubmenu = function(submenu) {\r\n submenu && submenu.hide();\r\n if (this._visibleSubmenu === submenu) {\r\n this._visibleSubmenu = null\r\n }\r\n this._hoveredRootItem = null\r\n };\r\n _proto._itemMouseMoveHandler = function(e) {\r\n var _this8 = this;\r\n if (e.pointers && e.pointers.length) {\r\n return\r\n }\r\n var $item = (0, _renderer.default)(e.currentTarget);\r\n if (!(0, _type.isDefined)(this._showSubmenuTimer)) {\r\n return\r\n }\r\n this._clearTimeouts();\r\n this._showSubmenuTimer = setTimeout(function() {\r\n var submenu = _this8._getSubmenuByElement($item);\r\n if (submenu && !submenu.isOverlayVisible()) {\r\n _this8._showSubmenu($item)\r\n }\r\n }, this._getDelay(\"show\"))\r\n };\r\n _proto._clearTimeouts = function() {\r\n clearTimeout(this._hideSubmenuTimer);\r\n clearTimeout(this._showSubmenuTimer)\r\n };\r\n _proto._getSubmenuByElement = function($itemElement, itemData) {\r\n var submenu = this._getSubmenuByRootElement($itemElement);\r\n if (submenu) {\r\n return submenu\r\n } else {\r\n itemData = itemData || this._getItemData($itemElement);\r\n var node = this._dataAdapter.getNodeByItem(itemData);\r\n return this._hasChildren(node) && this._renderSubmenuItems(node, $itemElement)\r\n }\r\n };\r\n _proto._updateSubmenuVisibilityOnClick = function(actionArgs) {\r\n var args = actionArgs.args.length && actionArgs.args[0];\r\n if (!args || this._disabledGetter(args.itemData)) {\r\n return\r\n }\r\n var $itemElement = (0, _renderer.default)(args.itemElement);\r\n var currentSubmenu = this._getSubmenuByElement($itemElement, args.itemData);\r\n this._updateSelectedItemOnClick(actionArgs);\r\n if (this._visibleSubmenu) {\r\n if (this._visibleSubmenu === currentSubmenu) {\r\n if (\"onClick\" === this.option(\"showFirstSubmenuMode\")) {\r\n this._hideSubmenu(this._visibleSubmenu)\r\n }\r\n return\r\n } else {\r\n this._hideSubmenu(this._visibleSubmenu)\r\n }\r\n }\r\n if (!currentSubmenu) {\r\n return\r\n }\r\n if (!currentSubmenu.isOverlayVisible()) {\r\n this._showSubmenu($itemElement);\r\n return\r\n }\r\n };\r\n _proto._optionChanged = function(args) {\r\n if (ACTIONS.indexOf(args.name) >= 0) {\r\n this._initActions();\r\n return\r\n }\r\n switch (args.name) {\r\n case \"orientation\":\r\n case \"submenuDirection\":\r\n this._invalidate();\r\n break;\r\n case \"showFirstSubmenuMode\":\r\n case \"hideSubmenuOnMouseLeave\":\r\n break;\r\n case \"showSubmenuMode\":\r\n this._changeSubmenusOption(args.name, args.value);\r\n break;\r\n case \"adaptivityEnabled\":\r\n args.value ? this._initAdaptivity() : this._removeAdaptivity();\r\n break;\r\n case \"width\":\r\n if (this._isAdaptivityEnabled()) {\r\n this._treeView.option(args.name, args.value);\r\n this._overlay.option(args.name, args.value)\r\n }\r\n _MenuBase.prototype._optionChanged.call(this, args);\r\n this._dimensionChanged();\r\n break;\r\n case \"animation\":\r\n if (this._isAdaptivityEnabled()) {\r\n this._treeView.option(\"animationEnabled\", !!args.value)\r\n }\r\n _MenuBase.prototype._optionChanged.call(this, args);\r\n break;\r\n default:\r\n if (this._isAdaptivityEnabled()) {\r\n this._treeView.option(args.name, args.value)\r\n }\r\n _MenuBase.prototype._optionChanged.call(this, args)\r\n }\r\n };\r\n _proto._changeSubmenusOption = function(name, value) {\r\n (0, _iterator.each)(this._submenus, function(index, submenu) {\r\n submenu.option(name, value)\r\n })\r\n };\r\n _proto.selectItem = function(itemElement) {\r\n this._hideSubmenu(this._visibleSubmenu);\r\n _MenuBase.prototype.selectItem.call(this, itemElement)\r\n };\r\n _proto.unselectItem = function(itemElement) {\r\n this._hideSubmenu(this._visibleSubmenu);\r\n _MenuBase.prototype.selectItem.call(this, itemElement)\r\n };\r\n return Menu\r\n}(_ui.default);\r\n(0, _component_registrator.default)(\"dxMenu\", Menu);\r\nvar _default = Menu;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n"],"sourceRoot":""}