{"version":3,"sources":["webpack:///./node_modules/devextreme/esm/ui/popover/ui.popover.js","webpack:///./node_modules/devextreme/esm/ui/popover.js","webpack:///./node_modules/devextreme/esm/ui/action_sheet.js","webpack:///./node_modules/devextreme/esm/ui/list/modules/search.js","webpack:///./node_modules/devextreme/esm/renovation/ui/resizable/utils.js","webpack:///./node_modules/devextreme/esm/ui/popover/popover_position_controller.js","webpack:///./node_modules/devextreme/esm/ui/draggable.js","webpack:///./node_modules/devextreme/esm/ui/sortable.js"],"names":["POPOVER_CLASS","POPOVER_WRAPPER_CLASS","POPOVER_ARROW_CLASS","POPOVER_WITHOUT_TITLE_CLASS","POSITION_FLIP_MAP","left","top","right","bottom","center","getEventNameByOption","optionValue","name","getEventName","that","optionName","option","getEventDelay","delay","attachEvent","target","shading","disabled","hideEvent","isSelector","shouldIgnoreHideEvent","event","concat","log","eventName","NAME","action","_createAction","this","_clearEventsTimeouts","_timeouts","setTimeout","bind","validatingTargetName","handler","e","currentTarget","EVENT_HANDLER_NAME","on","getDocument","targetElement","detachEvent","off","Popover","inherit","_getDefaultOptions","extend","callBase","position","closeOnOutsideClick","animation","show","type","from","to","hide","showTitle","width","height","dragEnabled","resizeEnabled","fullScreen","hideOnParentScroll","arrowPosition","arrowOffset","_fixWrapperPosition","_defaultOptionsRules","device","platform","options","boundaryOffset","h","v","collision","_init","_renderArrow","$element","addClass","$wrapper","_render","apply","arguments","_detachEvents","_attachEvents","_$arrow","prependTo","$overlayContent","_documentDownHandler","_isOutsideClick","closest","length","_animate","_getContainerPosition","_stopAnimation","_renderTitle","toggleClass","_renderPosition","_renderOverlayPosition","_actions","onPositioned","_resetOverlayPosition","_updateContentSize","contentPosition","resultLocation","setup","positionSide","_getSideByLocation","_togglePositionClass","_toggleFlippedClass","flip","isArrowVisible","_isHorizontalSide","_isVerticalSide","_renderArrowPosition","_setContentHeight","_positionController","_positionSide","css","$content","containerLocation","calculate","oversize","fit","newContainerWidth","newOverlayContentHeight","newPopupContentHeight","location","isFlippedByVertical","isFlippedByHorizontal","_isPopoverInside","positionClass","removeClass","isFlippedHorizontal","isFlippedVertical","side","arrowRect","get","arrowFlip","arrowLocation","axis","sizeProperty","$target","_position","of","targetOffset","offset","contentOffset","arrowSize","contentLocation","contentSize","targetLocation","targetSize","preventDefault","min","Math","max","borderWidth","_getContentBorderWidth","finalArrowLocation","fullUpdate","$arrow","_getPositionControllerConfig","_renderWrapperDimensions","_clearEventTimeout","clearTimeout","_clean","_optionChanged","args","_renderGeometry","value","previousValue","substring","window","ACTION_SHEET_CLASS","ACTION_SHEET_CONTAINER_CLASS","ACTION_SHEET_POPUP_WRAPPER_CLASS","ACTION_SHEET_POPOVER_WRAPPER_CLASS","ACTION_SHEET_CANCEL_BUTTON_CLASS","ACTION_SHEET_ITEM_CLASS","ACTION_SHEET_ITEM_DATA_KEY","ACTION_SHEET_WITHOUT_TITLE_CLASS","ACTION_SHEET_BUTTON_DEFAULT_STYLING_MODE","ActionSheet","usePopover","title","showCancelButton","cancelText","format","onCancelClick","visible","noDataText","focusStateEnabled","selectionByClick","tablet","_initTemplates","_templateManager","addDefaultTemplates","item","$container","data","button","onClick","click","stylingMode","append","_itemContainer","_$itemContainer","_itemClass","_itemDataKey","_toggleVisibility","_renderDimensions","_initMarkup","_createItemContainer","_renderPopup","_renderDisabled","_$popup","appendTo","_isPopoverMode","_createPopover","_createPopup","_renderPopupTitle","_mapPopupOption","_popup","remove","_overlayConfig","onInitialized","component","deferRendering","angular","onContentReady","_popupContentReadyAction","onHidden","_createComponent","showCloseButton","my","at","duration","_attachClickEvent","_attachHoldEvent","_prepareContent","_renderContent","_renderCancelButton","_$cancelButton","cancelClickAction","_createActionByOption","text","hidingArgs","cancel","integrationOptions","_attachItemClickEvent","_itemClickHandler","is","_itemHoldHandler","_invalidate","toggle","showing","d","done","resolveWith","promise","setEditorClass","borderWidthStyles","_excluded","WEIGHT_OF_SIDES","POPOVER_POSITION_ALIASES","POPOVER_DEFAULT_BOUNDARY_OFFSET","_ref","super","_props","_$wrapper","hOffset","vOffset","isVerticalSide","isHorizontalSide","isPopoverInside","sign","arrowSizeCorrection","_$content","parseInt","normalizeAlign","weightSign","horizontalWeight","abs","verticalWeight","positionProp","targetProp","resultPosition","defaultPositionConfig","_positionToObject","_getDisplaySide","DRAGGABLE","DRAGSTART_EVENT_NAME","drag","DRAG_EVENT_NAME","DRAGEND_EVENT_NAME","DRAG_ENTER_EVENT_NAME","DRAGEND_LEAVE_EVENT_NAME","POINTERDOWN_EVENT_NAME","pointer","down","CLONE_CLASS","ANONYMOUS_TEMPLATE_NAME","getMousePosition","x","pageX","scrollLeft","y","pageY","scrollTop","GESTURE_COVER_CLASS","OVERLAY_WRAPPER_CLASS","OVERLAY_CONTENT_CLASS","orientation","_preventScroll","_component","_scrollValue","_overFlowAttr","_sizeAttr","_scrollSizeProp","_clientSizeProp","_limitProps","start","end","elements","mousePosition","isScrollableFound","some","element","isTargetOverOverlayWrapper","hasClass","isTargetOverOverlayContent","_trySetScrollable","_$scrollableAtPointer","_scrollSpeed","prop","distanceToBorders","sensitivity","isScrollable","_calculateDistanceToBorders","_calculateScrollSpeed","$area","areaBoundingRect","area","distance","maxSpeed","ceil","pow","$scrollable","scrollableInstance","nextScrollPosition","scrollOffset","scrollTo","_nextScrollPosition","dragMoveArgs","_dragMoveArgs","_dragMoveHandler","scrollableSize","size","ScrollAnimator","ctor","strategy","_strategy","_step","horizontalScrollHelper","_horizontalScrollHelper","verticalScrollHelper","_verticalScrollHelper","scrollByStep","Draggable","reset","dragMove","dragEnter","dragLeave","dragEnd","sourceEvent","sourceDraggable","_getSourceDraggable","_fireRemoveEvent","resolve","onDragStart","onDragMove","onDragEnd","onDragEnter","onDragLeave","onDrop","immediate","dragDirection","boundary","boundOffset","allowMoveByClick","itemData","container","dragTemplate","contentTemplate","handle","filter","clone","autoScroll","scrollSpeed","scrollSensitivity","group","_setOptionsByReference","_optionsByReference","_attachEventHandlers","_scrollAnimator","_normalizeCursorOffset","map","parseFloat","_getNormalizedCursorOffset","call","_calculateElementOffset","elementOffset","dragElementOffset","itemElement","$dragElement","dragElement","isCloned","_dragElementIsCloned","cursorOffset","normalizedCursorOffset","currentLocate","_initialLocate","initialOffset","isFinite","_initPosition","_move","_startPosition","_startAnimator","inProgress","_stopAnimator","stop","_addWidgetPrefix","className","componentName","_getItemsSelector","children","itemsSelector","direction","checkDropTarget","targetGroup","sourceGroup","_getScrollable","isOutsideScrollable","_getArea","_pointerDownHandler","slice","_dragStartHandler","_dragEndHandler","_dragEnterHandler","_dragLeaveHandler","_$dragElement","_getDragTemplateArgs","model","_createDragElement","result","_getContainer","template","_getTemplate","render","_resetDragElement","_toggleDraggingClass","_resetSourceElement","_toggleDragSourceClass","_$sourceElement","_detachEventHandlers","_getDraggableElement","$sourceElement","_getSourceElement","$items","find","draggable","_getAction","_getEventArgs","_isValidElement","originalEvent","dragStartArgs","_getDragStartArgs","_setSourceDraggable","_setGestureCoverCursor","isFixedPosition","areaOffset","_getAreaOffset","_getBoundOffset","areaWidth","areaHeight","elementWidth","elementHeight","startOffset_left","startOffset_top","maxLeftOffset","maxRightOffset","maxTopOffset","maxBottomOffset","scrollBy","startPosition","_updateScrollable","eventArgs","targetDraggable","_getTargetDraggable","allObjects","elementsFromPoint","updateScrollable","parents","toArray","parent","$parent","_defaultActionArgs","fromComponent","toComponent","fromData","toData","$itemElement","_revertItemToInitialPosition","dragEndEventArgs","dropEventArgs","needRevertPosition","always","fail","_resetTargetDraggable","_resetSourceDraggable","_isTargetOverAnotherDraggable","$sourceDraggableElement","$targetDraggableElement","firstWidgetElement","isTargetOverItself","isTargetOverNestedDraggable","_fireDragEnterEvent","_setTargetDraggable","_fireDragLeaveEvent","_getAnonymousTemplateName","content","transclude","anonymousTemplateName","_getTemplateByOption","currentGroup","_dispose","SORTABLE","PLACEHOLDER_CLASS","isElementVisible","animate","config","_config$to","_config$to2","style","transform","transition","fx","easing","stopAnimation","getScrollableBoundary","paddingLeft","paddingRight","paddingTop","clientWidth","Sortable","_sourceScrollHandler","_handleSourceScroll","_sourceScrollableInfo","itemOrientation","dropFeedbackMode","allowDropInsideItem","allowReordering","moveItemOnDrop","onDragChange","onAdd","onRemove","onReorder","onPlaceholderPrepared","fromIndex","toIndex","dropInsideItem","itemPoints","fromIndexOffset","autoUpdate","draggableElementSize","_$placeholderElement","_isIndicateMode","_$modifiedItem","_modifiedItemMargin","_getPrevVisibleItem","items","index","reverse","_updateItemPoints","_subscribeToSourceScroll","_getElementIndex","_unsubscribeFromSourceScroll","sourceScrollableInfo","forEach","scrollProp","_correctItemPoints","_movePlaceholder","lastItemPoint","isVertical","_isVerticalOrientation","sourceElementSize","scrollSize","scrollPosition","lastPointPosition","elementPosition","freeSize","_getItems","$lastItem","marginBottom","$sortable","sortable","update","_allowDrop","$targetDraggable","itemPoint","_sourceEvent$fromComp","_sourceEvent$fromComp2","_sourceEvent$toCompon","_sourceEvent$toCompon2","cancelAdd","cancelRemove","isSourceDraggable","allowDrop","_fireAddEvent","_moveItem","_fireReorderEvent","axisName","cursorPosition","rtlEnabled","i","centerPosition","_updatePlaceholderPosition","isScrolling","_createPlaceholder","$placeholderContainer","insertBefore","not","_allowReordering","_isValidPoint","visibleIndex","draggableVisibleIndex","_getItemPoints","$item","itemWidth","itemElements","visibleItemElements","visibleItemCount","$draggableItem","indexOf","needCorrectLeftPosition","needCorrectTopPosition","push","isValid","points","_i","floor","forceUpdate","positionPropName","_togglePlaceholder","_normalizeToIndex","isAnotherDraggable","placeholderElement","_makeWidthCorrection","_$scrollable","scrollableWidth","offsetLeft","offsetRight","_updatePlaceholderSizes","$placeholderElement","$prevTargetItemElement","$itemElements","$targetItemElement","_moveItemCore","$targetItem","prevItem","insertAfter","isDragSource","$fromElement","_optionChangedDropInsideItem","_optionChangedToIndex","_isPositionVisible","scrollContainer","each","clientRect","isVerticalOrientation","pageOffset","pageYOffset","pageXOffset","showPlaceholder","_moveItems","_updateDragSourceClass","_getActualFromIndex","_makeLeftCorrection","leftMargin","prevVisibleItemElement","_getPositions","elementSize","positions","_getDraggableElementSize","prevToIndex","prevPositions","animationConfig","prevPosition"],"mappings":"kUAkDIA,EAAgB,aAChBC,EAAwB,qBACxBC,EAAsB,mBACtBC,EAA8B,2BAC9BC,EAAoB,CACpBC,KAAM,QACNC,IAAK,SACLC,MAAO,OACPC,OAAQ,MACRC,OAAQ,UAERC,EAAuB,SAASC,GAChC,OAAO,eAASA,GAAeA,EAAYC,KAAOD,GAElDE,EAAe,SAASC,EAAMC,GAC9B,IAAIJ,EAAcG,EAAKE,OAAOD,GAC9B,OAAOL,EAAqBC,IAE5BM,EAAgB,SAASH,EAAMC,GAC/B,IAAIJ,EAAcG,EAAKE,OAAOD,GAC9B,OAAO,eAASJ,IAAgBA,EAAYO,OAE5CC,EAAc,SAASL,EAAMF,GAC7B,IACIQ,OAAQA,EACRC,QAASA,EACTC,SAAUA,EACVC,UAAWA,GACXT,EAAKE,SACLQ,EAAa,eAASJ,GACtBK,EAAwBJ,GAAW,SAAWT,EAC9Cc,EAAQD,EAAwB,KAAOZ,EAAaC,EAAM,GAAGa,OAAOf,EAAM,UAI9E,GAHIa,GAAyBF,GACzB,OAAOK,IAAI,SAEVF,IAASJ,EAAd,CAGA,IAAIO,EAAY,eAAaH,EAAOZ,EAAKgB,MACrCC,EAASjB,EAAKkB,cAAc,WAC5B,IAAId,EAAQD,EAAcH,EAAMF,EAAO,SACvCqB,KAAKC,uBACDhB,EACAe,KAAKE,UAAUvB,GAAQwB,YAAW,WAC9BtB,EAAKF,OACLM,GAEJJ,EAAKF,MAEXyB,KAAKvB,GAAO,CACVwB,qBAAsB,WAEtBC,EAAU,SAASC,GACnBT,EAAO,CACHL,MAAOc,EACPpB,OAAQ,eAAEoB,EAAEC,kBAGhBC,EAAqB,IAAM9B,EAAO,eACtC,GAAIY,EACAV,EAAK4B,GAAsBH,EAC3B,OAAaI,GAAG,aAAWC,cAAef,EAAWT,EAAQmB,OAC1D,CACH,IAAIM,EAAgB,eAAiB,eAAEzB,IACvCN,EAAK4B,QAAsB,EAC3B,OAAaC,GAAGE,EAAehB,EAAWU,MAG9CO,EAAc,SAAShC,EAAMM,EAAQR,EAAMc,GAC3C,IAAIG,EAAYH,GAASb,EAAaC,EAAMF,EAAO,SACnD,GAAKiB,EAAL,CAGAA,EAAY,eAAaA,EAAWf,EAAKgB,MACzC,IAAIY,EAAqB,IAAM9B,EAAO,eAClCE,EAAK4B,GACL,OAAaK,IAAI,aAAWH,cAAef,EAAWT,EAAQN,EAAK4B,IAEnE,OAAaK,IAAI,eAAiB,eAAE3B,IAAUS,KAGlDmB,EAAU,aAAMC,QAAQ,CACxBC,mBAAoB,WAChB,OAAO,OAAAC,EAAA,MAAOlB,KAAKmB,WAAY,CAC3BhC,YAAQ,EACRC,SAAS,EACTgC,SAAU,OAAAF,EAAA,MAAO,GAAI,OAAyB3C,QAC9C8C,qBAAqB,EACrBC,UAAW,CACPC,KAAM,CACFC,KAAM,OACNC,KAAM,EACNC,GAAI,GAERC,KAAM,CACFH,KAAM,OACNE,GAAI,IAGZE,WAAW,EACXC,MAAO,OACPC,OAAQ,OACRC,aAAa,EACbC,eAAe,EACfC,YAAY,EACZC,oBAAoB,EACpBC,cAAe,GACfC,YAAa,EACbC,qBAAqB,KAG7BC,qBAAsB,WAClB,MAAO,CAAC,CACJC,OAAQ,CACJC,SAAU,OAEdC,QAAS,CACLN,cAAe,CACXO,eAAgB,CACZC,EAAG,GACHC,GAAI,IAERC,UAAW,SAGpB,CACCN,OAAQ,WACJ,OAAQ,kBAEZE,QAAS,CACLnB,UAAW,SAIvBwB,MAAO,WACH9C,KAAKmB,WACLnB,KAAK+C,eACL/C,KAAKE,UAAY,GACjBF,KAAKgD,WAAWC,SAASlF,GACzBiC,KAAKkD,WAAWD,SAASjF,IAE7BmF,QAAS,WACLnD,KAAKmB,SAASiC,MAAMpD,KAAMqD,WAC1BrD,KAAKsD,cAActD,KAAKjB,OAAO,WAC/BiB,KAAKuD,iBAETD,cAAe,SAASnE,GACpB0B,EAAYb,KAAMb,EAAQ,QAC1B0B,EAAYb,KAAMb,EAAQ,SAE9BoE,cAAe,WACXrE,EAAYc,KAAM,QAClBd,EAAYc,KAAM,SAEtB+C,aAAc,WACV/C,KAAKwD,QAAU,eAAE,SAASP,SAAShF,GAAqBwF,UAAUzD,KAAK0D,oBAE3EC,qBAAsB,SAASpD,GAC3B,OAAIP,KAAK4D,gBAAgBrD,IACdP,KAAKmB,SAASZ,IAI7BqD,gBAAiB,SAASrD,GACtB,OAAQ,eAAEA,EAAEpB,QAAQ0E,QAAQ7D,KAAKjB,OAAO,WAAW+E,QAEvDC,SAAU,SAASzC,GACXA,GAAaA,EAAUI,IAAM,kBAAoBJ,EAAUI,IAC3D,OAAAR,EAAA,MAAOI,EAAUI,GAAI,CACjBN,SAAUpB,KAAKgE,0BAGvBhE,KAAKmB,SAASiC,MAAMpD,KAAMqD,YAE9BY,eAAgB,WACZjE,KAAKmB,SAASiC,MAAMpD,KAAMqD,YAE9Ba,aAAc,WACVlE,KAAKkD,WAAWiB,YAAYjG,GAA8B8B,KAAKjB,OAAO,cACtEiB,KAAKmB,YAETiD,gBAAiB,WACbpE,KAAKmB,WACLnB,KAAKqE,yBACLrE,KAAKsE,SAASC,gBAElBF,uBAAwB,WACpBrE,KAAKwE,wBACLxE,KAAKyE,qBACL,IAAIC,EAAkB1E,KAAKgE,wBACvBW,EAAiBvD,EAAA,KAAcwD,MAAM5E,KAAK0D,kBAAmBgB,GAC7DG,EAAe7E,KAAK8E,mBAAmBH,GAC3C3E,KAAK+E,qBAAqB,eAAiBF,GAC3C7E,KAAKgF,oBAAoBL,EAAehC,EAAEsC,KAAMN,EAAe/B,EAAEqC,MACjE,IAAIC,EAAiBlF,KAAKmF,qBAAuBnF,KAAKoF,kBAClDF,GACAlF,KAAKqF,qBAAqBR,IAGlCL,sBAAuB,WACnBxE,KAAKsF,mBAAkB,GACvBtF,KAAK+E,qBAAqB,eAAiB/E,KAAKuF,oBAAoBC,eACpE,eAAKxF,KAAK0D,kBAAmB,CACzBtF,KAAM,EACNC,IAAK,IAET2B,KAAKwD,QAAQiC,IAAI,CACbpH,IAAK,OACLC,MAAO,OACPC,OAAQ,OACRH,KAAM,UAGdqG,mBAAoB,WAChB,GAAKzE,KAAK0F,WAAV,CAGA,IAAIC,EAAoBvE,EAAA,KAAcwE,UAAU5F,KAAK0D,kBAAmB1D,KAAKgE,yBAC7E,GAAI2B,EAAkBhD,EAAEkD,SAAW,GAAK7F,KAAKmF,sBAAwBQ,EAAkBhD,EAAEmD,IAAK,CAC1F,IAAIC,EAAoB,eAAS/F,KAAK0D,mBAAqBiC,EAAkBhD,EAAEkD,SAC/E,eAAS7F,KAAK0D,kBAAmBqC,GAErC,GAAIJ,EAAkB/C,EAAEiD,SAAW,GAAK7F,KAAKoF,oBAAsBO,EAAkB/C,EAAEkD,IAAK,CACxF,IAAIE,EAA0B,eAAUhG,KAAK0D,mBAAqBiC,EAAkB/C,EAAEiD,SAClFI,EAAwB,eAAUjG,KAAK0F,YAAcC,EAAkB/C,EAAEiD,SAC7E,eAAU7F,KAAK0D,kBAAmBsC,GAClC,eAAUhG,KAAK0F,WAAYO,MAGnCjC,sBAAuB,WACnB,OAAOhE,KAAKuF,oBAAoBvB,yBAEpCc,mBAAoB,SAASoB,GACzB,IAAIC,EAAsBD,EAAStD,EAAEqC,KACjCmB,EAAwBF,EAASvD,EAAEsC,KACvC,OAAOjF,KAAKoF,mBAAqBe,GAAuBnG,KAAKmF,qBAAuBiB,GAAyBpG,KAAKqG,mBAAqBlI,EAAkB6B,KAAKuF,oBAAoBC,eAAiBxF,KAAKuF,oBAAoBC,eAEhOT,qBAAsB,SAASuB,GAC3BtG,KAAKkD,WAAWqD,YAAY,yEAAyEtD,SAASqD,IAElHtB,oBAAqB,SAASwB,EAAqBC,GAC/CzG,KAAKkD,WAAWiB,YAAY,gCAAiCqC,GAAqBrC,YAAY,8BAA+BsC,IAEjIpB,qBAAsB,SAASqB,GAC3B,IAAIC,EAAY,eAAgB3G,KAAKwD,QAAQoD,IAAI,IAC7CC,IAAc7G,KAAKoF,gBAAgBsB,GAAQC,EAAU7E,OAAS6E,EAAU9E,OAC5E7B,KAAKwD,QAAQiC,IAAItH,EAAkBuI,GAAOG,GAC1C,IAgBIC,EAhBAC,EAAO/G,KAAKoF,gBAAgBsB,GAAQ,OAAS,MAC7CM,EAAehH,KAAKoF,gBAAgBsB,GAAQ,QAAU,SACtDO,EAAU,eAAEjH,KAAKuF,oBAAoB2B,UAAUC,IAC/CC,EAAehG,EAAA,KAAciG,OAAOJ,IAAY,CAChD5I,IAAK,EACLD,KAAM,GAENkJ,EAAgBlG,EAAA,KAAciG,OAAOrH,KAAK0D,mBAC1C6D,EAAYZ,EAAUK,GACtBQ,EAAkBF,EAAcP,GAChCU,EAAc,eAAgBzH,KAAK0D,kBAAkBkD,IAAI,IAAII,GAC7DU,EAAiBN,EAAaL,GAC9BnG,EAAgBqG,EAAQL,IAAI,GAC5Be,EAAa/G,IAAkBA,EAAcgH,eAAiB,eAAgBhH,GAAeoG,GAAgB,EAC7Ga,EAAMC,KAAKC,IAAIP,EAAiBE,GAChCK,EAAMD,KAAKD,IAAIL,EAAkBC,EAAaC,EAAiBC,GAG/Db,EADA,UAAY9G,KAAKjB,OAAO,iBACR8I,EAAML,EACf,QAAUxH,KAAKjB,OAAO,iBACbgJ,EAAMP,EAAkBD,GAEvBM,EAAME,GAAO,EAAIP,EAAkBD,EAAY,EAEpE,IAAIS,EAAchI,KAAKuF,oBAAoB0C,uBAAuBvB,GAC9DwB,EAAqB,eAAapB,EAAgBkB,EAAchI,KAAKjB,OAAO,eAAgBiJ,EAAaP,EAAcF,EAAY,EAAIS,GAC3IhI,KAAKwD,QAAQiC,IAAIsB,EAAMmB,IAE3B7B,iBAAkB,WACd,OAAOrG,KAAKuF,oBAAoBc,oBAEpCf,kBAAmB,SAAS6C,GACpBA,GACAnI,KAAKmB,YAGb,+BACI,IACI/B,QAASA,GACTY,KAAKjB,SACT,OAAO,OAAAmC,EAAA,MAAO,GAAIlB,KAAKmB,WAAY,CAC/B/B,QAASA,EACTgJ,OAAQpI,KAAKwD,WAGrB,0BACIxD,KAAKuF,oBAAsB,IAAI,OAA0BvF,KAAKqI,iCAElEC,yBAA0B,WAClBtI,KAAKjB,OAAO,YACZiB,KAAKkD,WAAWuC,IAAI,CAChB5D,MAAO,OACPC,OAAQ,UAIpBsD,gBAAiB,SAASsB,GACtB,OAAO1G,KAAKuF,oBAAoBH,gBAAgBsB,IAEpDvB,kBAAmB,SAASuB,GACxB,OAAO1G,KAAKuF,oBAAoBJ,kBAAkBuB,IAEtD6B,mBAAoB,SAAS5J,GACzB6J,aAAaxI,KAAKE,UAAUvB,KAEhCsB,qBAAsB,WAClBD,KAAKuI,mBAAmB,QACxBvI,KAAKuI,mBAAmB,SAE5BE,OAAQ,WACJzI,KAAKsD,cAActD,KAAKjB,OAAO,WAC/BiB,KAAKmB,SAASiC,MAAMpD,KAAMqD,YAE9BqF,eAAgB,SAASC,GACrB,OAAQA,EAAKhK,MACT,IAAK,gBACL,IAAK,cACDqB,KAAK4I,kBACL,MACJ,IAAK,aACGD,EAAKE,OACL7I,KAAKjB,OAAO,cAAc,GAE9B,MACJ,IAAK,SACD4J,EAAKG,eAAiB9I,KAAKsD,cAAcqF,EAAKG,eAC9C9I,KAAKmB,SAASwH,GACd,MACJ,IAAK,YACL,IAAK,YACD,IAAIhK,EAAOgK,EAAKhK,KAAKoK,UAAU,EAAG,GAC9BtJ,EAAQhB,EAAqBkK,EAAKG,eACtC9I,KAAK2B,OACLd,EAAYb,KAAMA,KAAKjB,OAAO,UAAWJ,EAAMc,GAC/CP,EAAYc,KAAMrB,GAClB,MACJ,IAAK,UACDqB,KAAKuI,mBAAmBI,EAAKE,MAAQ,OAAS,QAC9C7I,KAAKmB,SAASwH,GACd,MACJ,QACI3I,KAAKmB,SAASwH,KAG1BpH,KAAM,SAASpC,GAIX,OAHIA,GACAa,KAAKjB,OAAO,SAAUI,GAEnBa,KAAKmB,cAGpB,eAAkB,YAAaJ,GAChB,QChZA,U,kCCTf,oJAYIiI,EAAS,iBAmBTC,EAAqB,iBACrBC,EAA+B,2BAC/BC,EAAmC,+BACnCC,EAAqC,iCACrCC,EAAmC,wBACnCC,EAA0B,sBAC1BC,EAA6B,wBAC7BC,EAAmC,+BACnCC,EAA2C,WAC3CC,EAAc,OAAiB1I,QAAQ,CACvCC,mBAAoB,WAChB,OAAO,eAAOjB,KAAKmB,WAAY,CAC3BwI,YAAY,EACZxK,OAAQ,KACRyK,MAAO,GACPhI,WAAW,EACXiI,kBAAkB,EAClBC,WAAY,OAAoBC,OAAO,UACvCC,cAAe,KACfC,SAAS,EACTC,WAAY,GACZC,mBAAmB,EACnBC,kBAAkB,KAG1B9H,qBAAsB,WAClB,OAAOtC,KAAKmB,WAAWzB,OAAO,CAAC,CAC3B6C,OAAQ,CACJC,SAAU,MACV6H,QAAQ,GAEZ5H,QAAS,CACLkH,YAAY,OAIxBW,eAAgB,WACZtK,KAAKmB,WACLnB,KAAKuK,iBAAiBC,oBAAoB,CACtCC,KAAM,IAAI,QAAiB,SAAUC,EAAYC,GAC7C,IAAIC,EAAS,IAAI,aAAO,eAAE,SAAU,eAAO,CACvCC,QAASF,GAAQA,EAAKG,MACtBC,YAAaJ,GAAQA,EAAKI,aAAetB,GAC1CkB,IACHD,EAAWM,OAAOJ,EAAO5H,cACzB,CAAC,WAAY,OAAQ,OAAQ,OAAQ,UAAW,QAAS,eAAgBhD,KAAKjB,OAAO,sCAGjGkM,eAAgB,WACZ,OAAOjL,KAAKkL,iBAEhBC,WAAY,WACR,OAAO7B,GAEX8B,aAAc,WACV,OAAO7B,GAEX8B,kBAAmB,OACnBC,kBAAmB,OACnBC,YAAa,WACTvL,KAAKmB,WACLnB,KAAKgD,WAAWC,SAASgG,GACzBjJ,KAAKwL,wBAETrI,QAAS,WACLnD,KAAKyL,gBAETD,qBAAsB,WAClBxL,KAAKkL,gBAAkB,eAAE,SAASjI,SAASiG,GAC3ClJ,KAAK0L,mBAETA,gBAAiB,WACb1L,KAAKkL,gBAAgB/G,YAAY,oBAAqBnE,KAAKjB,OAAO,cAEtE0M,aAAc,WACVzL,KAAK2L,QAAU,eAAE,SAASC,SAAS5L,KAAKgD,YACxChD,KAAK6L,iBAAmB7L,KAAK8L,iBAAmB9L,KAAK+L,eACrD/L,KAAKgM,oBACLhM,KAAKiM,gBAAgB,YAEzBA,gBAAiB,SAASnN,GACtBkB,KAAKkM,QAAUlM,KAAKkM,OAAOnN,OAAOD,EAAYkB,KAAKjB,OAAOD,KAE9D+M,eAAgB,WACZ,OAAO7L,KAAKjB,OAAO,eAAiBiB,KAAKjB,OAAO,WAEpDiN,kBAAmB,WACfhM,KAAKiM,gBAAgB,aACrBjM,KAAKkM,QAAUlM,KAAKkM,OAAOhJ,WAAWiB,YAAYqF,GAAmCxJ,KAAKjB,OAAO,eAErG0J,OAAQ,WACAzI,KAAK2L,SACL3L,KAAK2L,QAAQQ,SAEjBnM,KAAKmB,YAETiL,eAAgB,WACZ,MAAO,CACHC,cAAe,SAAS1D,GACpB3I,KAAKkM,OAASvD,EAAK2D,WACrBlM,KAAKJ,MACPX,UAAU,EACVuC,WAAW,EACXgI,MAAO5J,KAAKjB,OAAO,SACnBwN,gBAAiBvD,EAAOwD,QACxBC,eAAgBzM,KAAK0M,yBAAyBtM,KAAKJ,MACnD2M,SAAU3M,KAAK2B,KAAKvB,KAAKJ,QAGjC8L,eAAgB,WACZ9L,KAAK4M,iBAAiB5M,KAAK2L,QAAS,OAAS,eAAO3L,KAAKoM,iBAAkB,CACvEvK,MAAO7B,KAAKjB,OAAO,UAAY,IAC/B+C,OAAQ9B,KAAKjB,OAAO,WAAa,OACjCI,OAAQa,KAAKjB,OAAO,aAExBiB,KAAKkM,OAAOhJ,WAAWD,SAASmG,IAEpC2C,aAAc,WACV/L,KAAK4M,iBAAiB5M,KAAK2L,QAAS,aAAO,eAAO3L,KAAKoM,iBAAkB,CACrErK,aAAa,EACbF,MAAO7B,KAAKjB,OAAO,UAAY,OAC/B+C,OAAQ9B,KAAKjB,OAAO,WAAa,OACjC8N,iBAAiB,EACjBzL,SAAU,CACN0L,GAAI,SACJC,GAAI,SACJ5F,GAAI6B,GAER1H,UAAW,CACPC,KAAM,CACFC,KAAM,QACNwL,SAAU,IACVvL,KAAM,CACFL,SAAU,CACN0L,GAAI,MACJC,GAAI,SACJ5F,GAAI6B,IAGZtH,GAAI,CACAN,SAAU,CACN0L,GAAI,SACJC,GAAI,SACJ5F,GAAI6B,KAIhBrH,KAAM,CACFH,KAAM,QACNwL,SAAU,IACVvL,KAAM,CACFL,SAAU,CACN0L,GAAI,SACJC,GAAI,SACJ5F,GAAI6B,IAGZtH,GAAI,CACAN,SAAU,CACN0L,GAAI,MACJC,GAAI,SACJ5F,GAAI6B,SAMxBhJ,KAAKkM,OAAOhJ,WAAWD,SAASkG,IAEpCuD,yBAA0B,WACtB1M,KAAKkM,OAAOxG,WAAWsF,OAAOhL,KAAKkL,iBACnClL,KAAKiN,oBACLjN,KAAKkN,mBACLlN,KAAKmN,kBACLnN,KAAKoN,iBACLpN,KAAKqN,uBAETA,oBAAqB,WACjB,IAAIrN,KAAK6L,mBAGL7L,KAAKsN,gBACLtN,KAAKsN,eAAenB,SAEpBnM,KAAKjB,OAAO,qBAAqB,CACjC,IAAIwO,EAAoBvN,KAAKwN,sBAAsB,kBAAoB,OACnE3O,EAAOmB,KACXA,KAAKsN,eAAiB,eAAE,SAASrK,SAASoG,GAAkCuC,SAAS5L,KAAKkM,QAAUlM,KAAKkM,OAAOxG,YAChH1F,KAAK4M,iBAAiB5M,KAAKsN,eAAgB,aAAQ,CAC/CjO,UAAU,EACV0L,YAAatB,EACbgE,KAAMzN,KAAKjB,OAAO,cAClB8L,QAAS,SAAStK,GACd,IAAImN,EAAa,CACbjO,MAAOc,EACPoN,QAAQ,GAEZJ,EAAkBG,GACbA,EAAWC,QACZ9O,EAAK8C,QAGbiM,mBAAoB,OAIhCC,sBAAuB,OACvBC,kBAAmB,SAASvN,GACxBP,KAAKmB,SAASZ,GACT,eAAEA,EAAEpB,QAAQ4O,GAAG,6CAChB/N,KAAK2B,QAGbqM,iBAAkB,SAASzN,GACvBP,KAAKmB,SAASZ,GACT,eAAEA,EAAEpB,QAAQ4O,GAAG,6CAChB/N,KAAK2B,QAGb+G,eAAgB,SAASC,GACrB,OAAQA,EAAKhK,MACT,IAAK,QACL,IAAK,SACL,IAAK,UACL,IAAK,QACDqB,KAAKiM,gBAAgBtD,EAAKhK,MAC1B,MACJ,IAAK,WACDqB,KAAK0L,kBACL,MACJ,IAAK,YACD1L,KAAKgM,oBACL,MACJ,IAAK,mBACL,IAAK,gBACL,IAAK,aACDhM,KAAKqN,sBACL,MACJ,IAAK,SACL,IAAK,aACL,IAAK,QACDrN,KAAKiO,cACL,MACJ,QACIjO,KAAKmB,SAASwH,KAG1BuF,OAAQ,SAASC,GACb,IAAItP,EAAOmB,KACPoO,EAAI,IAAI,OAKZ,OAJAvP,EAAKqN,OAAOgC,OAAOC,GAASE,MAAK,WAC7BxP,EAAKE,OAAO,UAAWoP,GACvBC,EAAEE,YAAYzP,MAEXuP,EAAEG,WAEbhN,KAAM,WACF,OAAOvB,KAAKkO,QAAO,IAEvBvM,KAAM,WACF,OAAO3B,KAAKkO,QAAO,MAG3B,eAAkB,gBAAiBxE,GACpB,U,kCCvSf,4BAUA,OAAe8E,eAAe,e,8LCWnBC,EAAoB,CAC3BrQ,KAAM,kBACNC,IAAK,iBACLC,MAAO,mBACPC,OAAQ,qBAsFL,I,YCrGHmQ,EAAY,CAAC,UAAW,UAsBxBC,EAAkB,CAClBvQ,MAAO,EACPC,KAAM,EACNG,OAAQ,EACRF,MAAO,EACPC,OAAQ,GAERqQ,EAA2B,CAC3BvQ,IAAK,CACDyO,GAAI,gBACJC,GAAI,aACJlK,UAAW,YAEftE,OAAQ,CACJuO,GAAI,aACJC,GAAI,gBACJlK,UAAW,YAEfvE,MAAO,CACHwO,GAAI,cACJC,GAAI,eACJlK,UAAW,YAEfzE,KAAM,CACF0O,GAAI,eACJC,GAAI,cACJlK,UAAW,aAGfgM,EAAkC,CAClClM,EAAG,GACHC,EAAG,IAEP,MAAM,UAAkC,OACpC,YAAYkM,GACR,IACI1P,QAASA,EACTgJ,OAAQA,GACR0G,EAAMnG,EAAO,eAA8BmG,EAAMJ,GACrDK,MAAMpG,GACN3I,KAAKgP,OAAS,eAAS,GAAIhP,KAAKgP,OAAQ,CACpC5P,QAASA,IAEbY,KAAKwD,QAAU4E,EACfpI,KAAKwF,mBAAgB,EAEzB,kBACQxF,KAAKgP,OAAO5P,SACZY,KAAKiP,UAAUxJ,IAAI,CACfpH,IAAK,EACLD,KAAM,IAIlB,yBACA,wBACI,IAAIiJ,EAAS,eAAarH,KAAKkH,UAAUG,QAAU,KAE/C1E,EAAGuM,EACHtM,EAAGuM,GACH9H,EACA+H,EAAiBpP,KAAKoF,kBACtBiK,EAAmBrP,KAAKmF,oBAC5B,GAAIiK,GAAkBC,EAAkB,CACpC,IAAIC,EAAkBtP,KAAKqG,mBACvBkJ,GAAQD,GAAmB,EAAI,GAAKX,EAAgB3O,KAAKwF,eACzD+B,EAAY6H,EAAiB,eAAUpP,KAAKwD,SAAW,eAASxD,KAAKwD,SACrEgM,EAAsBxP,KAAKiI,uBAAuBjI,KAAKwF,eACvDpD,EAAcmN,GAAQhI,EAAYiI,GACtCJ,EAAiBD,GAAW/M,EAAc8M,GAAW9M,EAEzD,OAAO,OAAAlB,EAAA,MAAO,GAAIlB,KAAKkH,UAAW,CAC9BG,OAAQ6H,EAAU,IAAMC,IAGhC,uBAAuBzI,GACnB,IAAIsB,EAAchI,KAAKyP,UAAUhK,IAAIgJ,EAAkB/H,IACvD,OAAOgJ,SAAS1H,IAAgB,EAEpC,mBACI,IAAI8E,EAAK,OAAclI,MAAM+K,eAAe3P,KAAKkH,UAAU4F,IACvDC,EAAK,OAAcnI,MAAM+K,eAAe3P,KAAKkH,UAAU6F,IAC3D,OAAOD,EAAGnK,IAAMoK,EAAGpK,GAAKmK,EAAGlK,IAAMmK,EAAGnK,EAExC,kBACI,IAAI8D,EAAOrD,UAAUS,OAAS,QAAK,IAAWT,UAAU,GAAKA,UAAU,GAAKrD,KAAKwF,cACjF,MAAO,QAAUkB,GAAQ,WAAaA,EAE1C,oBACI,IAAIA,EAAOrD,UAAUS,OAAS,QAAK,IAAWT,UAAU,GAAKA,UAAU,GAAKrD,KAAKwF,cACjF,MAAO,SAAWkB,GAAQ,UAAYA,EAE1C,gBAAgBtF,GACZ,IAAI0L,EAAK,OAAclI,MAAM+K,eAAevO,EAAS0L,IACjDC,EAAK,OAAcnI,MAAM+K,eAAevO,EAAS2L,IACjD6C,EAAajB,EAAgB7B,EAAGnK,KAAOgM,EAAgB5B,EAAGpK,IAAMgM,EAAgB7B,EAAGlK,KAAO+L,EAAgB5B,EAAGnK,IAAM,EAAI,EACvHiN,EAAmB/H,KAAKgI,IAAInB,EAAgB7B,EAAGnK,GAAKiN,EAAajB,EAAgB5B,EAAGpK,IACpFoN,EAAiBjI,KAAKgI,IAAInB,EAAgB7B,EAAGlK,GAAKgN,EAAajB,EAAgB5B,EAAGnK,IACtF,OAAOiN,EAAmBE,EAAiBhD,EAAGpK,EAAIoK,EAAGnK,EAEzD,mBAAmBoN,EAAcC,GAC7B,IAIIC,EAJAC,EAAwB,CACxBhJ,GAAI8I,EACJvN,eAAgBmM,GASpB,OALIqB,EADA,eAAUF,GACO,OAAA9O,EAAA,OAAO,EAAM,GAAIiP,EAAuBnQ,KAAKoQ,kBAAkBJ,IAE/DG,EAErBnQ,KAAKwF,cAAgBxF,KAAKqQ,gBAAgBH,GACnCA,EAEX,kBAAkBF,GACd,OAAI,eAASA,GACF,OAAA9O,EAAA,MAAO,GAAI0N,EAAyBoB,IAExCA,K,sCCnEX,EACA,E,oRAVA,EAAS,iBACTM,EAAY,cACZC,EAAuB,eAAaC,EAAA,KAAgBF,GACpDG,EAAkB,eAAaD,EAAA,KAAeF,GAC9CI,EAAqB,eAAaF,EAAA,KAAcF,GAChDK,EAAwB,eAAaH,EAAA,KAAgBF,GACrDM,EAA2B,eAAaJ,EAAA,KAAgBF,GACxDO,EAAyB,eAAaC,EAAA,KAAcC,KAAMT,GAC1DU,EAAc,QAGdC,EAA0B,UAC1BC,EAAmBzR,IAAS,CAC5B0R,EAAG1R,EAAM2R,MAAQ,eAAE,GAAQC,aAC3BC,EAAG7R,EAAM8R,MAAQ,eAAE,GAAQC,cAE3BC,EAAsB,mBACtBC,EAAwB,qBACxBC,EAAwB,qBAC5B,MAAM,EACF,YAAYC,EAAatF,GACrBtM,KAAK6R,gBAAiB,EACtB7R,KAAK8R,WAAaxF,EACd,aAAesF,GACf5R,KAAK+R,aAAe,YACpB/R,KAAKgS,cAAgB,YACrBhS,KAAKiS,UAAY,SACjBjS,KAAKkS,gBAAkB,eACvBlS,KAAKmS,gBAAkB,eACvBnS,KAAKoS,YAAc,CACfC,MAAO,MACPC,IAAK,YAGTtS,KAAK+R,aAAe,aACpB/R,KAAKgS,cAAgB,YACrBhS,KAAKiS,UAAY,QACjBjS,KAAKkS,gBAAkB,cACvBlS,KAAKmS,gBAAkB,cACvBnS,KAAKoS,YAAc,CACfC,MAAO,OACPC,IAAK,UAIjB,iBAAiBC,EAAUC,GACvB,IAAIC,GAAoB,EACxBF,EAASG,KAAKC,IACV,IAAI3P,EAAW,eAAE2P,GACbC,EAA6B5P,EAAS6P,SAASnB,GAC/CoB,EAA6B9P,EAAS6P,SAASlB,GACnD,SAAIiB,IAA8BE,KAGlCL,EAAoBzS,KAAK+S,kBAAkBJ,EAASH,GAC7CC,KAENA,IACDzS,KAAKgT,sBAAwB,KAC7BhT,KAAKiT,aAAe,GAG5B,cACI,QAASjT,KAAKiT,aAElB,aAAajQ,GACT,OAAQ,SAAWA,EAASyC,IAAIzF,KAAKgS,gBAAkBhP,EAAS6P,SAAS,6BAA+B7P,EAASkQ,KAAKlT,KAAKkS,kBAAoB,UAAYlS,KAAKiS,UAAY,eAASjP,GAAY,eAAUA,IAE/M,kBAAkB2P,EAASH,GACvB,IACIW,EADAnQ,EAAW,eAAE2P,GAEbS,EAAcpT,KAAK8R,WAAW/S,OAAO,qBACrCsU,EAAerT,KAAKqT,aAAarQ,GAkBrC,OAjBIqQ,IACAF,EAAoBnT,KAAKsT,4BAA4BtQ,EAAUwP,GAC3DY,EAAcD,EAAkBnT,KAAKoS,YAAYC,OAC5CrS,KAAK6R,iBACN7R,KAAKiT,cAAgBjT,KAAKuT,sBAAsBJ,EAAkBnT,KAAKoS,YAAYC,QACnFrS,KAAKgT,sBAAwBhQ,GAE1BoQ,EAAcD,EAAkBnT,KAAKoS,YAAYE,KACnDtS,KAAK6R,iBACN7R,KAAKiT,aAAejT,KAAKuT,sBAAsBJ,EAAkBnT,KAAKoS,YAAYE,MAClFtS,KAAKgT,sBAAwBhQ,IAGjCqQ,GAAe,EACfrT,KAAK6R,gBAAiB,IAGvBwB,EAEX,4BAA4BG,EAAOhB,GAC/B,IACIiB,EADAC,EAAOF,EAAM5M,IAAI,GAErB,OAAI8M,GACAD,EAAmB,eAAgBC,GAC5B,CACHtV,KAAMoU,EAAcrB,EAAIsC,EAAiBrV,KACzCC,IAAKmU,EAAclB,EAAImC,EAAiBpV,IACxCC,MAAOmV,EAAiBnV,MAAQkU,EAAcrB,EAC9C5S,OAAQkV,EAAiBlV,OAASiU,EAAclB,IAG7C,GAGf,sBAAsBqC,GAClB,IAAIrH,EAAYtM,KAAK8R,WACjBsB,EAAc9G,EAAUvN,OAAO,qBAC/B6U,EAAWtH,EAAUvN,OAAO,eAChC,OAAO+I,KAAK+L,KAAK/L,KAAKgM,KAAKV,EAAcO,GAAYP,EAAa,GAAKQ,GAE3E,eACI,GAAI5T,KAAKgT,uBAAyBhT,KAAKiT,aAAc,CACjD,GAAIjT,KAAKgT,sBAAsBH,SAAS,2BAA4B,CAChE,IAAIkB,EAAc/T,KAAKgT,sBAAsBnP,QAAQ,kBACjDmQ,EAAqBD,EAAYpJ,KAAK,iBAAmBoJ,EAAYpJ,KAAK,gBAC9E,GAAIqJ,EAAoB,CACpB,IAAIC,EAAqBD,EAAmBE,eAAelU,KAAKoS,YAAYC,OAASrS,KAAKiT,aAC1Fe,EAAmBG,SAAS,CACxB,CAACnU,KAAKoS,YAAYC,OAAQ4B,SAG/B,CACH,IAAIG,EAAsBpU,KAAKgT,sBAAsBhT,KAAK+R,gBAAkB/R,KAAKiT,aACjFjT,KAAKgT,sBAAsBhT,KAAK+R,cAAcqC,GAElD,IAAIC,EAAerU,KAAK8R,WAAWwC,cAC/BD,GACArU,KAAK8R,WAAWyC,iBAAiBF,IAI7C,QACIrU,KAAKgT,sBAAwB,KAC7BhT,KAAKiT,aAAe,EACpBjT,KAAK6R,gBAAiB,EAE1B,oBAAoBkC,EAAatU,GAC7B,IAAKsU,EACD,OAAO,EAEX,IAAIS,EAAiB,eAAgBT,EAAYnN,IAAI,IACjDyL,EAAQmC,EAAexU,KAAKoS,YAAYC,OACxCoC,EAAOD,EAAexU,KAAKiS,WAC3BO,EAAgBtB,EAAiBzR,GACjCyG,EAAW,UAAYlG,KAAKiS,UAAYO,EAAcrB,EAAIqB,EAAclB,EAC5E,OAAOpL,EAAWmM,GAASnM,EAAWmM,EAAQoC,GAGtD,IAAIC,EAAiB,OAAS1T,QAAQ,CAClC2T,KAAM,SAASC,GACX5U,KAAKmB,WACLnB,KAAK6U,UAAYD,GAErBE,MAAO,WACH,IAAIC,EAAyB/U,KAAK6U,UAAUG,wBACxCC,EAAuBjV,KAAK6U,UAAUK,sBAC1CH,GAA0BA,EAAuBI,eACjDF,GAAwBA,EAAqBE,kBAGjDC,EAAY,OAAapU,QAAQ,CACjCqU,MAAO,OACPC,SAAU,OACVC,UAAW,OACXC,UAAW,OACXC,QAAS,SAASC,GACd,IAAIC,EAAkB3V,KAAK4V,sBAE3B,OADAD,EAAgBE,iBAAiBH,IAC1B,IAAK,QAAUI,WAE1BD,iBAAkB,OAClB5U,mBAAoB,WAChB,OAAO,OAAAC,EAAA,MAAOlB,KAAKmB,WAAY,CAC3B4U,YAAa,KACbC,WAAY,KACZC,UAAW,KACXC,YAAa,KACbC,YAAa,KACbC,OAAQ,KACRC,WAAW,EACXC,cAAe,OACfC,cAAU,EACVC,YAAa,EACbC,kBAAkB,EAClBC,SAAU,KACVC,eAAW,EACXC,kBAAc,EACdC,gBAAiB,UACjBC,OAAQ,GACRC,OAAQ,GACRC,OAAO,EACPC,YAAY,EACZC,YAAa,GACbC,kBAAmB,GACnBC,WAAO,EACPzM,UAAM,KAGd0M,uBAAwB,WACpBrX,KAAKmB,SAASiC,MAAMpD,KAAMqD,WAC1B,OAAAnC,EAAA,MAAOlB,KAAKsX,oBAAqB,CAC7BhL,WAAW,EACX8K,OAAO,EACPV,UAAU,EACV/L,MAAM,KAGd7H,MAAO,WACH9C,KAAKmB,WACLnB,KAAKuX,uBACLvX,KAAKwX,gBAAkB,IAAI9C,EAAe1U,MAC1CA,KAAKgV,wBAA0B,IAAI,EAAa,aAAchV,MAC9DA,KAAKkV,sBAAwB,IAAI,EAAa,WAAYlV,OAE9DyX,uBAAwB,SAASpQ,GAQ7B,OAPI,eAASA,KACTA,EAAS,CACL1E,EAAG0E,EAAO8J,EACVvO,EAAGyE,EAAOiK,IAGlBjK,EAAS,eAAUA,GAAQqQ,IAAI7O,GAAS8O,WAAW9O,IAC5C,CACHzK,KAAMiJ,EAAO,GACbhJ,IAAK,IAAMgJ,EAAOvD,OAASuD,EAAO,GAAKA,EAAO,KAGtDuQ,2BAA4B,SAASvQ,EAAQ5E,GAIzC,OAHI,eAAW4E,KACXA,EAASA,EAAOwQ,KAAK7X,KAAMyC,IAExBzC,KAAKyX,uBAAuBpQ,IAEvCyQ,wBAAyB,SAASrV,GAC9B,IAAIsV,EACAC,EACAvY,EAAQgD,EAAQhD,MAChBuD,EAAW,eAAEP,EAAQwV,aACrBC,EAAe,eAAEzV,EAAQ0V,aACzBC,EAAWpY,KAAKqY,uBAChBC,EAAetY,KAAKjB,OAAO,gBAC3BwZ,EAAyB,CACzBna,KAAM,EACNC,IAAK,GAELma,EAAgBxY,KAAKyY,eAAiB,eAAOP,GAgBjD,OAfIE,GAAY3V,EAAQiW,eAAiBJ,KACrCP,EAAgBtV,EAAQiW,eAAiB1V,EAASqE,SAC9CiR,IACAC,EAAyBvY,KAAK4X,2BAA2BU,EAAc7V,GACnEkW,SAASJ,EAAuBna,QAChC2Z,EAAc3Z,KAAOqB,EAAM2R,OAE3BuH,SAASJ,EAAuBla,OAChC0Z,EAAc1Z,IAAMoB,EAAM8R,QAGlCyG,EAAoBE,EAAa7Q,SACjC0Q,EAAc1Z,KAAO2Z,EAAkB3Z,KAAOka,EAAuBla,KAAO,GAAKma,EAAcna,IAC/F0Z,EAAc3Z,MAAQ4Z,EAAkB5Z,MAAQma,EAAuBna,MAAQ,GAAKoa,EAAcpa,MAE/F2Z,GAEXa,cAAe,SAASnW,GACpB,IAAIyV,EAAe,eAAEzV,EAAQ0V,aACzBJ,EAAgB/X,KAAK8X,wBAAwBrV,GAC7CsV,GACA/X,KAAK6Y,MAAMd,EAAeG,GAE9BlY,KAAK8Y,eAAiB,eAAOZ,IAEjCa,eAAgB,WACP/Y,KAAKwX,gBAAgBwB,cACtBhZ,KAAKwX,gBAAgBnF,SAG7B4G,cAAe,WACXjZ,KAAKwX,gBAAgB0B,QAEzBC,iBAAkB,SAASC,GACvB,IAAIC,EAAgBrZ,KAAKH,KACzB,OAAO,eAAUwZ,IAAkBD,EAAY,IAAMA,EAAY,KAErEE,kBAAmB,WACf,OAAOtZ,KAAKjB,OAAO,WAAa,IAEpC0Q,UAAW,WACP,IAAIzM,EAAWhD,KAAKgD,WAChBE,EAAWF,EAASuW,SAAS,wBACjC,OAAOrW,EAASY,OAASZ,EAAWF,GAExCuU,qBAAsB,WAClB,IAAIvX,KAAKjB,OAAO,YAAhB,CAGA,IAAIiE,EAAWhD,KAAKyP,YAChB+J,EAAgBxZ,KAAKsZ,oBACrB7C,EAAmBzW,KAAKjB,OAAO,oBAC/B4L,EAAO,CACP8O,UAAWzZ,KAAKjB,OAAO,iBACvBsX,UAAWrW,KAAKjB,OAAO,aACvB2a,gBAAiB,CAACzS,EAASxH,KACvB,IAAIka,EAAc3Z,KAAKjB,OAAO,SAC1B6a,EAAc5Z,KAAK4V,sBAAsB7W,OAAO,SAChDgV,EAAc/T,KAAK6Z,eAAe5S,GACtC,OAAIjH,KAAKkV,sBAAsB4E,oBAAoB/F,EAAatU,KAAUO,KAAKgV,wBAAwB8E,oBAAoB/F,EAAatU,KAGjIma,GAAeA,IAAgBD,KAG1ClD,IACAzT,EAAWhD,KAAK+Z,WAChB,OAAarZ,GAAGsC,EAAU6N,EAAwBlG,EAAM3K,KAAKga,oBAAoB5Z,KAAKJ,QAEtF,MAAQwZ,EAAc,KACtBA,EAAgBA,EAAcS,MAAM,IAExC,OAAavZ,GAAGsC,EAAUuN,EAAsBiJ,EAAe7O,EAAM3K,KAAKka,kBAAkB9Z,KAAKJ,OACjG,OAAaU,GAAGsC,EAAUyN,EAAiB9F,EAAM3K,KAAKuU,iBAAiBnU,KAAKJ,OAC5E,OAAaU,GAAGsC,EAAU0N,EAAoB/F,EAAM3K,KAAKma,gBAAgB/Z,KAAKJ,OAC9E,OAAaU,GAAGsC,EAAU2N,EAAuBhG,EAAM3K,KAAKoa,kBAAkBha,KAAKJ,OACnF,OAAaU,GAAGsC,EAAU4N,EAA0BjG,EAAM3K,KAAKqa,kBAAkBja,KAAKJ,SAE1FqY,qBAAsB,WAClB,OAAOrY,KAAKsa,eAAiBta,KAAKsa,cAAczH,SAAS7S,KAAKmZ,iBAAiBnI,KAEnFuJ,qBAAsB,SAASvX,EAAU0H,GACrC,MAAO,CACHiM,UAAW,eAAiBjM,GAC5B8P,MAAO,CACH9D,SAAU1W,KAAKjB,OAAO,YACtBkZ,YAAa,eAAiBjV,MAI1CyX,mBAAoB,SAASzX,GACzB,IAAI0X,EAAS1X,EACTgU,EAAQhX,KAAKjB,OAAO,SACpB2L,EAAa1K,KAAK2a,gBAClBC,EAAW5a,KAAKjB,OAAO,gBAY3B,OAXI6b,GACAA,EAAW5a,KAAK6a,aAAaD,GAC7BF,EAAS,eAAE,SAAS9O,SAASlB,GAC7BkQ,EAASE,OAAO9a,KAAKua,qBAAqBvX,EAAU0X,KAC7C1D,IACP0D,EAAS,eAAE,SAAS9O,SAASlB,GAC7B1H,EAASgU,QAAQvR,IAAI,CACjB5D,MAAOmB,EAASyC,IAAI,SACpB3D,OAAQkB,EAASyC,IAAI,YACtBmG,SAAS8O,IAETA,EAAOvW,YAAYnE,KAAKmZ,iBAAiBnI,GAAc0J,EAAO9T,IAAI,KAAO5D,EAAS4D,IAAI,IAAIzC,YAAY,SAAUnE,KAAKjB,OAAO,gBAEvIgc,kBAAmB,WACX/a,KAAKqY,uBACLrY,KAAKsa,cAAcnO,SAEnBnM,KAAKgb,sBAAqB,GAE9Bhb,KAAKsa,cAAgB,MAEzBW,oBAAqB,WACjBjb,KAAKkb,wBAAuB,GAC5Blb,KAAKmb,gBAAkB,MAE3BC,qBAAsB,WAClB,OAAata,IAAId,KAAKyP,YAAa,IAAMa,GACzC,OAAaxP,IAAId,KAAK+Z,WAAY,IAAMzJ,IAE5CuI,MAAO,SAASzX,EAAU4B,GACtB,eAAKA,GAAYhD,KAAKsa,cAAelZ,IAEzCia,qBAAsB,SAAS9a,GAC3B,IAAI+a,EAAiBtb,KAAKub,oBAC1B,GAAID,EACA,OAAOA,EAEX,IAAI7E,EAAmBzW,KAAKjB,OAAO,oBACnC,GAAI0X,EACA,OAAOzW,KAAKgD,WAEhB,IAAIiE,EAAU,eAAE1G,GAAKA,EAAEpB,QACnBqa,EAAgBxZ,KAAKsZ,oBACzB,GAAI,MAAQE,EAAc,GAAI,CAC1B,IAAIgC,EAASxb,KAAKyP,YAAYgM,KAAKjC,GAC9BgC,EAAOzN,GAAG9G,KACXA,EAAUA,EAAQpD,QAAQ2X,IAGlC,OAAOvU,GAEXsU,kBAAmB,WACf,IAAIG,EAAY1b,KAAK4V,sBACrB,OAAO8F,EAAUP,iBAErBnB,oBAAqB,SAASzZ,GAC1B,IAAI,eAAcA,GAAlB,CAGA,IAAIa,EAAW,GACX4B,EAAWhD,KAAKgD,WAChBsT,EAAgBtW,KAAKjB,OAAO,iBAC5B,eAAiBuX,GAAiB,SAAWA,IAC7ClV,EAAShD,KAAOmC,EAAE6Q,MAAQpO,EAASqE,SAASjJ,KAAO,eAAO4E,GAAU5E,KAAO,eAAS4E,GAAY,GAEhG,aAAesT,GAAiB,SAAWA,IAC3ClV,EAAS/C,IAAMkC,EAAEgR,MAAQvO,EAASqE,SAAShJ,IAAM,eAAO2E,GAAU3E,IAAM,eAAU2E,GAAY,GAElGhD,KAAK6Y,MAAMzX,EAAU4B,GACrBhD,KAAK2b,WAAW,aAAhB3b,CAA8BA,KAAK4b,cAAcrb,MAErDsb,gBAAiB,SAASpc,EAAOuD,GAC7B,IAAI8T,EAAS9W,KAAKjB,OAAO,UACrBkI,EAAU,eAAExH,EAAMqc,eAAiBrc,EAAMqc,cAAc3c,QAC3D,QAAI2X,IAAW7P,EAAQpD,QAAQiT,GAAQhT,YAGlCd,EAASc,SAGNd,EAAS+K,GAAG,8CAExBmM,kBAAmB,SAAS3Z,GACxB,IAAIyC,EAAWhD,KAAKqb,qBAAqB9a,GACzC,GAAKP,KAAK6b,gBAAgBtb,EAAGyC,IAI7B,IAAIhD,KAAKmb,gBAAT,CAGA,IAAIY,EAAgB/b,KAAKgc,kBAAkBzb,EAAGyC,GAE9C,GADAhD,KAAK2b,WAAW,cAAhB3b,CAA+B+b,GAC3BA,EAAcpO,OACdpN,EAAEoN,QAAS,MADf,CAIA3N,KAAKjB,OAAO,WAAYgd,EAAcrF,UACtC1W,KAAKic,sBACLjc,KAAKmb,gBAAkBnY,EACvB,IAAI0V,EAAgB1V,EAASqE,SACzB6Q,EAAelY,KAAKsa,cAAgBta,KAAKya,mBAAmBzX,GAChEhD,KAAKgb,sBAAqB,GAC1Bhb,KAAKkb,wBAAuB,GAC5Blb,KAAKkc,uBAAuBhE,EAAaqB,YACzC,IAAI4C,EAAkB,UAAYjE,EAAazS,IAAI,YACnDzF,KAAK4Y,cAAc,OAAA1X,EAAA,MAAO,GAAI6a,EAAe,CACzC5D,YAAaD,EAAatR,IAAI,GAC9B8R,cAAeyD,GAAmBzD,KAEtC,IAAIlF,EAAQxT,KAAK+Z,WACbqC,EAAapc,KAAKqc,eAAe7I,GACjCgD,EAAcxW,KAAKsc,kBACnBC,EAAY,eAAc/I,GAC1BgJ,EAAa,eAAehJ,GAC5BiJ,EAAe,eAASvE,GACxBwE,EAAgB,eAAUxE,GAC1ByE,EAAmBzE,EAAa7Q,SAASjJ,KAAOge,EAAWhe,KAC3Dwe,EAAkB1E,EAAa7Q,SAAShJ,IAAM+d,EAAW/d,IACzDmV,EAAM1P,SACNvD,EAAEsc,cAAgBF,EAAmBnG,EAAYpY,KACjDmC,EAAEuc,eAAiBP,EAAYI,EAAmBF,EAAejG,EAAYlY,MAC7EiC,EAAEwc,aAAeH,EAAkBpG,EAAYnY,IAC/CkC,EAAEyc,gBAAkBR,EAAaI,EAAkBF,EAAgBlG,EAAYjY,QAE/EyB,KAAKjB,OAAO,eACZiB,KAAK+Y,wBAzCLxY,EAAEoN,QAAS,GA4CnB0O,eAAgB,SAAS7I,GACrB,IAAInM,EAASmM,GAAS,OAAcnM,OAAOmM,GAC3C,OAAOnM,GAAkB,CACrBjJ,KAAM,EACNC,IAAK,IAGb2c,qBAAsB,SAASnS,GAC3B7I,KAAKsa,eAAiBta,KAAKsa,cAAcnW,YAAYnE,KAAKmZ,iBAAiB,YAAatQ,IAE5FqS,uBAAwB,SAASrS,EAAO7F,GACpC,IAAIsY,EAAiBtY,GAAYhD,KAAKmb,gBACtCG,GAAkBA,EAAenX,YAAYnE,KAAKmZ,iBAAiB,UAAWtQ,IAElFqT,uBAAwB,SAASlZ,GAC7B,eAAE,IAAItD,OAAO+R,IAAsBhM,IAAI,SAAUzC,EAASyC,IAAI,YAElE6W,gBAAiB,WACb,IAAI9F,EAAcxW,KAAKjB,OAAO,eAI9B,OAHI,eAAWyX,KACXA,EAAcA,EAAYqB,KAAK7X,OAE5B,eAAawW,IAExBuD,SAAU,WACN,IAAIrG,EAAO1T,KAAKjB,OAAO,YAIvB,OAHI,eAAW2U,KACXA,EAAOA,EAAKmE,KAAK7X,OAEd,eAAE0T,IAEbiH,cAAe,WACX,IAAIhE,EAAY3W,KAAKjB,OAAO,aAI5B,YAHI,IAAW4X,IACXA,EAAY,kBAET,eAAEA,IAEbpC,iBAAkB,SAAShU,EAAG0c,GAE1B,GADAjd,KAAKsU,cAAgB/T,EAChBP,KAAKsa,cAAV,CAIA,IAAIjT,EAAS9G,EAAE8G,OACX6V,EAAgBld,KAAK8Y,eACzB9Y,KAAK6Y,MAAM,CACPza,KAAM8e,EAAc9e,KAAOiJ,EAAO8J,EAClC9S,IAAK6e,EAAc7e,IAAMgJ,EAAOiK,IAE/B2L,GACDjd,KAAKmd,kBAAkB5c,GAE3B,IAAI6c,EAAYpd,KAAK4b,cAAcrb,GAEnC,GADAP,KAAK2b,WAAW,aAAhB3b,CAA8Bod,IAC1B,IAASA,EAAUzP,OAAvB,CAGA,IAAI0P,EAAkBrd,KAAKsd,sBAC3BD,EAAgB/H,SAAS/U,EAAG0c,SAlBxB1c,EAAEoN,QAAS,GAoBnBwP,kBAAmB,SAAS5c,GACxB,GAAIP,KAAKjB,OAAO,cAAe,CAC3B,IAAIyT,EAAgBtB,EAAiB3Q,GACjCgd,EAAa,aAAWC,kBAAkBhL,EAAcrB,EAAGqB,EAAclB,GAC7EtR,KAAKkV,sBAAsBuI,iBAAiBF,EAAY/K,GACxDxS,KAAKgV,wBAAwByI,iBAAiBF,EAAY/K,KAGlEqH,eAAgB,SAAS7W,GACrB,IAAI+Q,EAQJ,OAPA/Q,EAAS0a,UAAUC,UAAUjL,KAAKkL,IAC9B,IAAIC,EAAU,eAAED,GAChB,GAAI5d,KAAKgV,wBAAwB3B,aAAawK,IAAY7d,KAAKkV,sBAAsB7B,aAAawK,GAE9F,OADA9J,EAAc8J,GACP,IAGR9J,GAEX+J,mBAAoB,WAChB,IAAInV,EAAO3I,KAAKmB,SAASiC,MAAMpD,KAAMqD,WACjCiJ,EAAYtM,KAAKjB,OAAO,aAK5B,OAJIuN,IACA3D,EAAK2D,UAAYA,EACjB3D,EAAKgK,QAAUrG,EAAUqG,WAEtBhK,GAEXiT,cAAe,SAASrb,GACpB,IAAIoV,EAAkB3V,KAAK4V,sBACvByH,EAAkBrd,KAAKsd,sBAC3B,MAAO,CACH7d,MAAOc,EACPmW,SAAUf,EAAgB5W,OAAO,YACjCkZ,YAAa,eAAiBtC,EAAgBwF,iBAC9C4C,cAAepI,EAAgB5W,OAAO,cAAgB4W,EACtDqI,YAAaX,EAAgBte,OAAO,cAAgBse,EACpDY,SAAUtI,EAAgB5W,OAAO,QACjCmf,OAAQb,EAAgBte,OAAO,UAGvCid,kBAAmB,SAASzb,EAAG4d,GAC3B,IAAIxV,EAAO3I,KAAK4b,cAAcrb,GAC9B,MAAO,CACHd,MAAOkJ,EAAKlJ,MACZiX,SAAU/N,EAAK+N,SACfuB,YAAakG,EACbF,SAAUtV,EAAKsV,WAGvBG,6BAA8B,YACzBpe,KAAKqY,wBAA0BrY,KAAK6Y,MAAM7Y,KAAKyY,eAAgBzY,KAAKmb,kBAEzEhB,gBAAiB,SAAS5Z,GACtB,IAAI6N,EAAI,IAAI,OACRiQ,EAAmBre,KAAK4b,cAAcrb,GACtC+d,EAAgBte,KAAK4b,cAAcrb,GACnC8c,EAAkBrd,KAAKsd,sBACvBiB,GAAqB,EACzB,IACIve,KAAK2b,WAAW,YAAhB3b,CAA6Bqe,GAC/B,QACE,eAAK,eAAYA,EAAiB1Q,SAASU,KAAKV,IAC5C,IAAKA,IACG0P,IAAoBrd,MACpBqd,EAAgB1B,WAAW,SAA3B0B,CAAqCiB,IAEpCA,EAAc3Q,QAGf,OAFA4Q,GAAqB,OACrB,eAAK,eAAYlB,EAAgB5H,QAAQ4I,KAAoBG,OAAOpQ,EAAE0H,SAI9E1H,EAAE0H,YACH2I,KAAKrQ,EAAE0H,SACV1H,EAAEC,KAAK,KACCkQ,GACAve,KAAKoe,+BAETpe,KAAKqV,QACLgI,EAAgBhI,QAChBrV,KAAKiZ,gBACLjZ,KAAKgV,wBAAwBK,QAC7BrV,KAAKkV,sBAAsBG,QAC3BrV,KAAK+a,oBACL/a,KAAKib,sBACLjb,KAAK0e,wBACL1e,KAAK2e,4BAIjBC,8BAA+B,SAASre,GACpC,IAAIoV,EAAkB3V,KAAK4V,sBAC3B,GAAI5V,OAAS2V,EACT,OAAO,EAEX,IAAIuC,EAAevC,EAAgB2E,cAC/BuE,EAA0BlJ,EAAgB3S,WAC1C8b,EAA0B9e,KAAKgD,WAC/BwP,EAAgBtB,EAAiB3Q,GACjCgS,EAAW,aAAWiL,kBAAkBhL,EAAcrB,EAAGqB,EAAclB,GACvEyN,EAAqBxM,EAASwE,OAAOpE,IACrC,IAAI3P,EAAW,eAAE2P,GACjB,GAAI3P,EAAS6P,SAAS7S,KAAKmZ,oBACvB,OAAQnW,EAASa,QAAQqU,GAAcpU,SAE5C,GACCwX,EAAiBtb,KAAKub,oBACtByD,EAAqBD,IAAuBF,EAAwBjY,IAAI,GACxEqY,EAA8B,eAAEF,GAAoBlb,QAAQyX,GAAgBxX,OAChF,OAAQib,GAAsBA,IAAuBD,EAAwBlY,IAAI,KAAOoY,IAAuBC,GAEnH7E,kBAAmB,SAAS7Z,GACxBP,KAAKkf,oBAAoB3e,GACrBP,KAAK4e,8BAA8Bre,IACnCP,KAAKmf,sBAET,IAAIxJ,EAAkB3V,KAAK4V,sBAC3BD,EAAgBJ,UAAUhV,IAE9B8Z,kBAAmB,SAAS9Z,GACxBP,KAAKof,oBAAoB7e,GACzBP,KAAK0e,wBACD1e,OAASA,KAAK4V,uBACd5V,KAAKqV,QAET,IAAIM,EAAkB3V,KAAK4V,sBAC3BD,EAAgBH,UAAUjV,IAE9Bob,WAAY,SAAShd,GACjB,OAAOqB,KAAK,IAAMrB,EAAO,WAAaqB,KAAKwN,sBAAsB7O,IAErE0gB,0BAA2B,WACvB,OAAOpO,GAEX3G,eAAgB,WACPtK,KAAKjB,OAAO,qBAGjBiB,KAAKuK,iBAAiBC,oBAAoB,CACtC8U,QAAS,IAAI,SAEjBtf,KAAKmB,SAASiC,MAAMpD,KAAMqD,aAE9BF,QAAS,WACLnD,KAAKmB,WACLnB,KAAKgD,WAAWC,SAASjD,KAAKmZ,oBAC9B,IAAIoG,EAAavf,KAAKuK,iBAAiBiV,wBAA0Bxf,KAAKjB,OAAO,mBACzE6b,EAAW5a,KAAKyf,qBAAqB,mBACrC7E,GACA,eAAEA,EAASE,OAAO,CACdnE,UAAW3W,KAAK2S,UAChB4M,WAAYA,MAIxB7W,eAAgB,SAASC,GACrB,IAAIhK,EAAOgK,EAAKhK,KAChB,OAAQA,GACJ,IAAK,cACL,IAAK,aACL,IAAK,YACL,IAAK,SACL,IAAK,cACL,IAAK,cACDqB,KAAK,IAAMrB,EAAO,UAAYqB,KAAKwN,sBAAsB7O,GACzD,MACJ,IAAK,eACL,IAAK,kBACL,IAAK,YACL,IAAK,QACD,MACJ,IAAK,mBACL,IAAK,gBACL,IAAK,WACL,IAAK,WACL,IAAK,SACL,IAAK,YACDqB,KAAK+a,oBACL/a,KAAKob,uBACLpb,KAAKuX,uBACL,MACJ,IAAK,aACDvX,KAAKkV,sBAAsBG,QAC3BrV,KAAKgV,wBAAwBK,QAC7B,MACJ,IAAK,oBACL,IAAK,cACL,IAAK,cACL,IAAK,SACL,IAAK,QACL,IAAK,OACL,IAAK,WACD,MACJ,QACIrV,KAAKmB,SAASwH,KAG1B2U,oBAAqB,WACjB,OAAO,GAAmBtd,MAE9B4V,oBAAqB,WACjB,OAAO,GAAmB5V,MAE9Bmf,oBAAqB,WACjB,IAAIO,EAAe1f,KAAKjB,OAAO,SAC3B4W,EAAkB3V,KAAK4V,sBACvB8J,GAAgBA,IAAiB/J,EAAgB5W,OAAO,WACxD,EAAkBiB,OAG1Bic,oBAAqB,WACjB,EAAkBjc,MAEtB2e,sBAAuB,WACnB,EAAkB,MAEtBD,sBAAuB,WACnB,EAAkB,MAEtBiB,SAAU,WACN3f,KAAKmB,WACLnB,KAAKob,uBACLpb,KAAK+a,oBACL/a,KAAK0e,wBACL1e,KAAK2e,wBACL3e,KAAKmb,gBAAkB,KACvBnb,KAAKiZ,iBAETiG,oBAAqB,SAASxJ,GAC1B,IAAI/M,EAAO3I,KAAK4b,cAAclG,GAC9B1V,KAAK2b,WAAW,cAAhB3b,CAA+B2I,IAEnCyW,oBAAqB,SAAS1J,GAC1B,IAAI/M,EAAO3I,KAAK4b,cAAclG,GAC9B1V,KAAK2b,WAAW,cAAhB3b,CAA+B2I,MAGvC,eAAkB2H,EAAW8E,GACd,Q,YC1yBX,EAAS,iBACTwK,EAAW,aACXC,EAAoB,cACpB,EAAc,QACdC,EAAmB7H,GAAe,eAAEA,GAAalK,GAAG,YACpDgS,EAAU,CAACpN,EAASqN,KACpB,IAAIC,EAAYC,EAChB,GAAKvN,EAAL,CAGA,IAAIvU,GAAQ,QAAU6hB,EAAaD,EAAOte,UAAO,IAAWue,OAAa,EAASA,EAAW7hB,OAAS,EAClGC,GAAO,QAAU6hB,EAAcF,EAAOte,UAAO,IAAWwe,OAAc,EAASA,EAAY7hB,MAAQ,EACvGsU,EAAQwN,MAAMC,UAAY,aAAa1gB,OAAOtB,EAAM,OAAOsB,OAAOrB,EAAK,OACvEsU,EAAQwN,MAAME,WAAaC,EAAA,KAAGxf,IAAM,GAAK,aAAapB,OAAOsgB,EAAOhT,SAAU,OAAOtN,OAAOsgB,EAAOO,UAEnGC,EAAgB7N,IACXA,IAGLA,EAAQwN,MAAMC,UAAY,GAC1BzN,EAAQwN,MAAME,WAAa,KAG/B,SAASI,GAAsB1M,GAC3B,IAAI1M,EAAS0M,EAAY1M,SACrB8Y,EAAQpM,EAAY,GAAGoM,MACvBO,EAAc/I,WAAWwI,EAAMO,cAAgB,EAC/CC,EAAehJ,WAAWwI,EAAMQ,eAAiB,EACjDC,EAAajJ,WAAWwI,EAAMS,aAAe,EAC7C/e,EAAQkS,EAAY,GAAG8M,aAAeH,EAAcC,GACpD7e,EAAS,eAAUiS,GACnB3V,EAAOiJ,EAAOjJ,KAAOsiB,EACrBriB,EAAMgJ,EAAOhJ,IAAMuiB,EACvB,MAAO,CACHxiB,KAAMA,EACNE,MAAOF,EAAOyD,EACdxD,IAAKA,EACLE,OAAQF,EAAMyD,GAGtB,IAAIgf,GAAW,EAAU9f,QAAQ,CAC7B8B,MAAO,WACH9C,KAAKmB,WACLnB,KAAK+gB,qBAAuB/gB,KAAKghB,oBAAoB5gB,KAAKJ,MAC1DA,KAAKihB,sBAAwB,MAEjChgB,mBAAoB,WAChB,OAAO,OAAAC,EAAA,MAAOlB,KAAKmB,WAAY,CAC3B6V,OAAO,EACPD,OAAQ,MACRmK,gBAAiB,WACjBC,iBAAkB,OAClBC,qBAAqB,EACrBC,iBAAiB,EACjBC,gBAAgB,EAChBC,aAAc,KACdC,MAAO,KACPC,SAAU,KACVC,UAAW,KACXC,sBAAuB,KACvBrgB,UAAW,CACPE,KAAM,QACNwL,SAAU,IACVuT,OAAQ,QAEZqB,UAAW,KACXC,QAAS,KACTC,gBAAgB,EAChBC,WAAY,KACZC,gBAAiB,EACjB3a,OAAQ,EACR4a,YAAY,EACZC,qBAAsB,KAG9B7M,MAAO,WACHrV,KAAKjB,OAAO,CACR+iB,gBAAgB,EAChBD,QAAS,KACTD,UAAW,KACXG,WAAY,KACZC,gBAAiB,EACjBE,qBAAsB,IAEtBliB,KAAKmiB,sBACLniB,KAAKmiB,qBAAqBhW,SAE9BnM,KAAKmiB,qBAAuB,MACvBniB,KAAKoiB,mBAAqBpiB,KAAKqiB,iBAChCriB,KAAKqiB,eAAe5c,IAAI,eAAgBzF,KAAKsiB,qBAC7CtiB,KAAKqiB,eAAiB,OAG9BE,oBAAqB,SAASC,EAAOC,GACjC,OAAOD,EAAMvI,MAAM,EAAGwI,GAAOC,UAAU3L,OAAO+I,GAAkB,IAEpE5F,kBAAmB,SAAS3Z,GAExB,GADAP,KAAKmB,SAASiC,MAAMpD,KAAMqD,YACtB,IAAS9C,EAAEoN,OAAf,CAGA,IAAI2N,EAAiBtb,KAAKub,oBAC1Bvb,KAAK2iB,oBACL3iB,KAAK4iB,yBAAyBriB,GAC9BP,KAAKjB,OAAO,YAAaiB,KAAK6iB,iBAAiBvH,IAC/Ctb,KAAKjB,OAAO,kBAAmBiB,KAAKjB,OAAO,aAE/C6jB,yBAA0B,SAASriB,GAC/B,IAAIwT,EAAc/T,KAAK6Z,eAAe,eAAEtZ,EAAEpB,SACtC4U,IACA/T,KAAKihB,sBAAwB,CACzBtO,QAASoB,EACT1C,WAAY0C,EAAY1C,aACxBG,UAAWuC,EAAYvC,aAE3B,OAAa9Q,GAAGqT,EAAa,SAAU/T,KAAK+gB,wBAGpD+B,6BAA8B,WACtB9iB,KAAKihB,wBACL,OAAangB,IAAId,KAAKihB,sBAAsBtO,QAAS,SAAU3S,KAAK+gB,sBACpE/gB,KAAKihB,sBAAwB,OAGrCD,oBAAqB,SAASzgB,GAC1B,IAAIwiB,EAAuB/iB,KAAKihB,sBAC5B8B,GACA,CAAC,aAAc,aAAaC,QAAQC,IAChC,GAAI1iB,EAAEpB,OAAO8jB,KAAgBF,EAAqBE,GAAa,CAC3D,IAAIhG,EAAW1c,EAAEpB,OAAO8jB,GAAcF,EAAqBE,GAC3DjjB,KAAKkjB,mBAAmBjG,GACxBjd,KAAKmjB,mBACLJ,EAAqBE,GAAc1iB,EAAEpB,OAAO8jB,OAK5D7I,kBAAmB,SAAS7Z,GAGxB,GAFAP,KAAKmB,SAASiC,MAAMpD,KAAMqD,WAC1BrD,KAAK4iB,yBAAyBriB,GAC1BP,OAASA,KAAK4V,wBAGlB5V,KAAK2iB,oBACL3iB,KAAKjB,OAAO,aAAc,IACrBiB,KAAKoiB,mBAAmB,CACzB,IAAIL,EAAa/hB,KAAKjB,OAAO,cACzBqkB,EAAgBrB,EAAWA,EAAWje,OAAS,GACnD,GAAIsf,EAAe,CACf,IAAIpgB,EAAWhD,KAAKgD,WAChBsY,EAAiBtb,KAAKub,oBACtB8H,EAAarjB,KAAKsjB,yBAClBC,EAAoBF,EAAa,eAAe/H,GAAgB,GAAQ,eAAcA,GAAgB,GACtGkI,EAAaxgB,EAAS4D,IAAI,GAAGyc,EAAa,eAAiB,eAC3DI,EAAiBzgB,EAAS4D,IAAI,GAAGyc,EAAa,YAAc,cAC5DrT,EAAeqT,EAAa,MAAQ,OACpCK,EAAoBN,EAAcpT,GAClC2T,EAAkB3gB,EAASqE,SAAS2I,GACpC4T,EAAWD,EAAkBH,EAAaC,EAAiBC,EAC/D,GAAIE,EAAWL,GACPF,EAAY,CACZ,IAAIb,EAAQxiB,KAAK6jB,YACbC,EAAY,eAAE9jB,KAAKuiB,oBAAoBC,IAC3CxiB,KAAKqiB,eAAiByB,EACtB9jB,KAAKsiB,oBAAsBwB,EAAUld,IAAI,GAAGuZ,MAAM4D,aAClDD,EAAUre,IAAI,eAAgB8d,EAAoBK,GAClD,IAAII,EAAYF,EAAUjgB,QAAQ,gBAC9BogB,EAAWD,EAAUrZ,KAAK,iBAAmBqZ,EAAUrZ,KAAK,gBAChEsZ,GAAYA,EAASC,aAMzC7J,kBAAmB,WACfra,KAAKmB,SAASiC,MAAMpD,KAAMqD,WAC1BrD,KAAK8iB,gCAETvN,UAAW,WACHvV,OAASA,KAAKsd,uBACdtd,KAAKjB,OAAO,WAAY,IAGhCyW,UAAW,WACHxV,OAASA,KAAKsd,uBACdtd,KAAKjB,OAAO,UAAWiB,KAAKjB,OAAO,eAG3ColB,WAAY,SAAS1kB,GACjB,IAAI4d,EAAkBrd,KAAKsd,sBACvB8G,EAAmB/G,EAAgBra,WACnC+Q,EAAc/T,KAAK6Z,eAAeuK,GACtC,GAAIrQ,EAAa,CACb,IACI3V,KAAMA,EACNE,MAAOA,EACPD,IAAKA,EACLE,OAAQA,GACRkiB,GAAsB1M,GACtB8N,EAAU7hB,KAAKjB,OAAO,WACtBgjB,EAAa/hB,KAAKjB,OAAO,cACzBslB,EAAY,OAAStC,QAAc,IAAWA,OAAa,EAASA,EAAWhL,OAAOtM,GAAQA,EAAKgY,QAAUZ,GAAS,GAC1H,GAAIwC,QAAa,IAAWA,EAAUhmB,IAAK,CACvC,IAAIglB,EAAarjB,KAAKsjB,yBACtB,OAAID,EACOhlB,GAAOgmB,EAAUhmB,KAAOgmB,EAAUhmB,KAAOE,EAEzCH,GAAQimB,EAAUjmB,MAAQimB,EAAUjmB,MAAQE,GAI/D,OAAO,GAEXmX,QAAS,SAASC,GACd,IAAI4O,EAAuBC,EAAwBC,EAAuBC,EAC1E,QAAUH,GAAyBC,EAAyB7O,EAAYqI,eAAe+E,oCAAiC,IAAWwB,GAAiCA,EAAsBzM,KAAK0M,GAC/L,QAAUC,GAAyBC,EAAyB/O,EAAYsI,aAAa8E,oCAAiC,IAAW0B,GAAiCA,EAAsB3M,KAAK4M,GAC7L,IAOQC,EACAC,EARJrJ,EAAiBtb,KAAKub,oBACtB5F,EAAkB3V,KAAK4V,sBACvBgP,EAAoBjP,EAAgB9V,OAASG,KAAKH,KAClDgiB,EAAU7hB,KAAKjB,OAAO,WACtBU,EAAQiW,EAAYjW,MACpBolB,EAAY7kB,KAAKmkB,WAAW1kB,GAChC,GAAI,OAASoiB,GAAWA,GAAW,GAAKgD,IAGhClP,IAAoB3V,OACpB0kB,EAAY1kB,KAAK8kB,cAAcrlB,GAC1BilB,IACDC,EAAe3kB,KAAK6V,iBAAiBpW,KAGzCmlB,GACA,eAActJ,GAEdtb,KAAKjB,OAAO,oBACX2lB,GAAa1kB,KAAK+kB,UAAUzJ,EAAgBuG,EAAS8C,GAEtDhP,IAAoB3V,MACpB,OAAOA,KAAKglB,kBAAkBvlB,GAGtC,OAAO,IAAK,QAAUqW,WAE1BR,SAAU,SAAS/U,GACf,IAAIwhB,EAAa/hB,KAAKjB,OAAO,cAC7B,GAAKgjB,EAAL,CAQA,IALA,IAIIsC,EAJAhB,EAAarjB,KAAKsjB,yBAClB2B,EAAW5B,EAAa,MAAQ,OAChC6B,EAAiB7B,EAAa9iB,EAAEgR,MAAQhR,EAAE6Q,MAC1C+T,EAAanlB,KAAKjB,OAAO,cAEpBqmB,EAAIrD,EAAWje,OAAS,EAAGshB,GAAK,EAAGA,IAAK,CAC7C,IAAIC,EAAiBtD,EAAWqD,EAAI,KAAOrD,EAAWqD,GAAGH,GAAYlD,EAAWqD,EAAI,GAAGH,IAAa,EACpG,MAAM5B,GAAc8B,EAAaD,EAAiBG,EAAiBA,EAAiBH,SAAmB,IAAWG,EAG9G,MAFAhB,EAAYtC,EAAWqD,GAK3Bf,IACArkB,KAAKslB,2BAA2B/kB,EAAG8jB,GAC/BrkB,KAAKkV,sBAAsBqQ,eAAiBvlB,KAAKoiB,mBACjDpiB,KAAKmjB,sBAIjBf,gBAAiB,WACb,MAAO,aAAepiB,KAAKjB,OAAO,qBAAuBiB,KAAKjB,OAAO,wBAEzEymB,mBAAoB,WAChB,IAAIC,EAKJ,OAJIzlB,KAAKoiB,oBACLqD,EAAwB,eAAE,SAASxiB,SAASjD,KAAKmZ,iBAAiB0G,IAAoB6F,aAAa1lB,KAAK4V,sBAAsB0E,gBAElIta,KAAKmiB,qBAAuBsD,EACrBA,GAEX5B,UAAW,WACP,IAAIrK,EAAgBxZ,KAAKsZ,oBACzB,OAAOtZ,KAAKyP,YAAYgM,KAAKjC,GAAemM,IAAI,IAAM3lB,KAAKmZ,iBAAiB0G,IAAoB8F,IAAI,IAAM3lB,KAAKmZ,iBAAiB,IAAcwE,WAElJiI,iBAAkB,WACd,IAAIjQ,EAAkB3V,KAAK4V,sBACvByH,EAAkBrd,KAAKsd,sBAC3B,OAAO3H,IAAoB0H,GAAmBrd,KAAKjB,OAAO,oBAE9D8mB,cAAe,SAASC,EAAcC,EAAuBjE,GACzD,IAAIV,EAAsBphB,KAAKjB,OAAO,uBAClCsiB,EAAkBS,GAAkB9hB,KAAK4lB,mBAC7C,SAAKvE,GAAoB,IAAMyE,GAAiB1E,MAG3CphB,KAAKoiB,qBAGF,IAAM2D,GAAyBD,IAAiBC,IAA0BjE,GAAkBgE,IAAiBC,EAAwB,MAEjJC,eAAgB,WACZ,IACIC,EACA5e,EACA6e,EAHAxL,EAAS,GAITyK,EAAanlB,KAAKjB,OAAO,cACzBskB,EAAarjB,KAAKsjB,yBAClB6C,EAAenmB,KAAK6jB,YACpBuC,EAAsBD,EAAapP,OAAO+I,GAC1CuG,EAAmBD,EAAoBtiB,OACvCwiB,EAAiBtmB,KAAKqb,uBACtB0K,EAAwBK,EAAoBG,QAAQD,EAAe1f,IAAI,IAC3E,GAAIyf,EAAkB,CAClB,IAAK,IAAIjB,EAAI,EAAGA,GAAKiB,EAAkBjB,IAAK,CACxC,IAAIoB,GAA2BnD,GAAc8B,EAAaC,IAAMiB,EAC5DI,EAAyBpD,GAAc+B,IAAMiB,EAC7CjB,EAAIiB,IACJJ,EAAQ,eAAEG,EAAoBhB,IAC9B/d,EAAS4e,EAAM5e,SACf6e,EAAY,eAAcD,IAE9BvL,EAAOgM,KAAK,CACR5E,gBAAgB,EAChB1jB,KAAMiJ,EAAOjJ,MAAQooB,EAA0BN,EAAY,GAC3D7nB,IAAKgJ,EAAOhJ,KAAOooB,EAAyB/L,EAAO0K,EAAI,GAAGtjB,OAAS,GACnE2gB,MAAO2C,IAAMiB,EAAmBF,EAAariB,OAASqiB,EAAaI,QAAQN,EAAMrf,IAAI,IACrFqf,MAAOA,EACPpkB,MAAO,eAAcokB,GACrBnkB,OAAQ,eAAemkB,GACvBU,QAAS3mB,KAAK6lB,cAAcT,EAAGW,KAGvC,GAAI/lB,KAAKjB,OAAO,uBAAwB,CACpC,IAAI6nB,EAASlM,EACbA,EAAS,GACT,IAAK,IAAImM,EAAK,EAAGA,EAAKD,EAAO9iB,OAAQ+iB,IACjCnM,EAAOgM,KAAKE,EAAOC,IACfD,EAAOC,EAAK,IACZnM,EAAOgM,KAAK,OAAAxlB,EAAA,MAAO,GAAI0lB,EAAOC,GAAK,CAC/B/E,gBAAgB,EAChBzjB,IAAKyJ,KAAKgf,OAAOF,EAAOC,GAAIxoB,IAAMuoB,EAAOC,EAAK,GAAGxoB,KAAO,GACxDD,KAAM0J,KAAKgf,OAAOF,EAAOC,GAAIzoB,KAAOwoB,EAAOC,EAAK,GAAGzoB,MAAQ,GAC3DuoB,QAAS3mB,KAAK6lB,cAAcgB,EAAId,GAAuB,YAMvErL,EAAOgM,KAAK,CACR5E,gBAAgB,EAChBW,MAAO,EACPkE,SAAS,IAGjB,OAAOjM,GAEXiI,kBAAmB,SAASoE,IACpBA,GAAe/mB,KAAKjB,OAAO,gBAAkBiB,KAAKjB,OAAO,gBACzDiB,KAAKjB,OAAO,aAAciB,KAAKgmB,mBAGvC9C,mBAAoB,SAASjG,GACzB,IAAI8E,EAAa/hB,KAAKjB,OAAO,cAC7B,GAAIke,GAAY8E,IAAe/hB,KAAKjB,OAAO,cAAe,CACtD,IAAIskB,EAAarjB,KAAKsjB,yBAClB0D,EAAmB3D,EAAa,MAAQ,OAC5CtB,EAAWiB,QAAQqB,IACfA,EAAU2C,IAAqB/J,MAI3C4F,iBAAkB,SAAS1E,GACvB,OAAOne,KAAK6jB,YAAY0C,QAAQpI,EAAavX,IAAI,KAErD2T,qBAAsB,SAASvX,GAC3B,IAAI2F,EAAO3I,KAAKmB,SAASiC,MAAMpD,KAAMqD,WAErC,OADAsF,EAAK6R,MAAMoH,UAAY5hB,KAAK6iB,iBAAiB7f,GACtC2F,GAEXse,mBAAoB,SAASpe,GACzB7I,KAAKmiB,sBAAwBniB,KAAKmiB,qBAAqBjU,OAAOrF,IAElEya,uBAAwB,WACpB,MAAO,aAAetjB,KAAKjB,OAAO,oBAEtCmoB,kBAAmB,SAASrF,EAASC,GACjC,IAAIqF,EAAqBnnB,KAAK4V,wBAA0B5V,KAAKsd,sBACzDsE,EAAY5hB,KAAKjB,OAAO,aAC5B,OAAI,OAAS8iB,EACFD,EAEJ9Z,KAAKC,IAAIof,GAAsBvF,GAAaC,GAAWC,EAAiBD,EAAUA,EAAU,EAAG,IAE1GyD,2BAA4B,SAAS/kB,EAAG8jB,GACpC,IAAI1O,EAAkB3V,KAAK4V,sBACvBiM,EAAU7hB,KAAKknB,kBAAkB7C,EAAU5B,MAAO4B,EAAUvC,gBAC5D1E,EAAY,OAAAlc,EAAA,MAAOlB,KAAK4b,cAAcrb,GAAI,CAC1CshB,QAASA,EACTC,eAAgBuC,EAAUvC,iBAE9BuC,EAAUsC,SAAW3mB,KAAK2b,WAAW,eAAhB3b,CAAgCod,IACjDA,EAAUzP,QAAW0W,EAAUsC,SASnC3mB,KAAKjB,OAAO,CACR+iB,eAAgBuC,EAAUvC,eAC1BD,QAASwC,EAAU5B,QAEvBziB,KAAK2b,WAAW,wBAAhB3b,CAAyC,OAAAkB,EAAA,MAAOlB,KAAK4b,cAAcrb,GAAI,CACnE6mB,mBAAoB,eAAiBpnB,KAAKmiB,sBAC1ChK,YAAa,eAAiBxC,EAAgB2E,kBAElDta,KAAK2iB,qBAhBI0B,EAAUsC,SACX3mB,KAAKjB,OAAO,CACR+iB,gBAAgB,EAChBD,QAAS,QAezBwF,qBAAsB,SAASpB,EAAOpkB,GAElC,GADA7B,KAAKsnB,aAAetnB,KAAK6Z,eAAeoM,GACpCjmB,KAAKsnB,cAAgB,eAAStnB,KAAKsnB,cAAgBzlB,EAAO,CAC1D,IAAI0lB,EAAkB,eAASvnB,KAAKsnB,cAChCE,EAAavB,EAAM5e,SAASjJ,KAAO4B,KAAKsnB,aAAajgB,SAASjJ,KAC9DqpB,EAAcF,EAAkB,eAActB,GAASuB,EAEvD3lB,EADA2lB,EAAa,EACLD,EAAkBC,EACnBC,EAAc,EACbF,EAAkBE,EAElBF,EAGhB,OAAO1lB,GAEX6lB,wBAAyB,SAASC,EAAqB1P,GACnD,IAAI6J,EAAiB9hB,KAAKjB,OAAO,kBAC7BknB,EAAQ,eAAEhO,GACVoL,EAAarjB,KAAKsjB,yBAClBzhB,EAAQ,GACRC,EAAS,GACb6lB,EAAoBxjB,YAAYnE,KAAKmZ,iBAAiB,sBAAuB2I,IACzEuB,GAAcvB,KACdjgB,EAAQ,eAAcokB,IAErB5C,IAAcvB,IACfhgB,EAAS,eAAemkB,IAE5BpkB,EAAQ7B,KAAKqnB,qBAAqBpB,EAAOpkB,GACzC8lB,EAAoBliB,IAAI,CACpB5D,MAAOA,EACPC,OAAQA,KAGhBijB,UAAW,SAAS5G,EAAcsE,EAAOkC,GACrC,IAAIiD,EACAC,EAAgB7nB,KAAK6jB,YACrBiE,EAAqBD,EAAcpF,GACnC9M,EAAkB3V,KAAK4V,sBACvB+O,IACAxG,EAAeA,EAAanH,QAC5BrB,EAAgBuF,wBAAuB,EAAOiD,IAE7C2J,IACDF,EAAyBC,EAAcpF,EAAQ,IAEnDziB,KAAK+nB,cAAc5J,EAAc2J,EAAoBF,IAEzDG,cAAe,SAASC,EAAavd,EAAMwd,GAClCxd,GAASwd,EAEHA,EACPD,EAAYE,YAAY,eAAED,IAE1BD,EAAYtC,aAAa,eAAEjb,IAJ3Bud,EAAYpc,SAAS5L,KAAKgD,aAOlCgZ,kBAAmB,SAASzb,EAAG4d,GAC3B,OAAO,OAAAjd,EAAA,MAAOlB,KAAKmB,SAASiC,MAAMpD,KAAMqD,WAAY,CAChDue,UAAW5hB,KAAK6iB,iBAAiB1E,MAGzCvC,cAAe,SAASrb,GACpB,IAAIoV,EAAkB3V,KAAK4V,sBACvByH,EAAkBrd,KAAKsd,sBACvBwE,EAAiBzE,EAAgBte,OAAO,kBAC5C,OAAO,OAAAmC,EAAA,MAAOlB,KAAKmB,SAASiC,MAAMpD,KAAMqD,WAAY,CAChDue,UAAWjM,EAAgB5W,OAAO,aAClC8iB,QAAS7hB,KAAKknB,kBAAkB7J,EAAgBte,OAAO,WAAY+iB,GACnEA,eAAgBA,KAGxBpZ,eAAgB,SAASC,GACrB,IAAIhK,EAAOgK,EAAKhK,KAChB,OAAQA,GACJ,IAAK,eACL,IAAK,wBACL,IAAK,QACL,IAAK,WACL,IAAK,YACDqB,KAAK,IAAMrB,EAAO,UAAYqB,KAAKwN,sBAAsB7O,GACzD,MACJ,IAAK,kBACL,IAAK,sBACL,IAAK,iBACL,IAAK,mBACL,IAAK,aACL,IAAK,YACL,IAAK,kBACL,IAAK,kBACL,IAAK,SACL,IAAK,uBACL,IAAK,aACD,MACJ,IAAK,YACD,EAAC,GAAO,GAAMqkB,QAAQmF,IAClB,IAAIvG,EAAYuG,EAAexf,EAAKE,MAAQF,EAAKG,cACjD,GAAI,OAAS8Y,EAAW,CACpB,IAAIwG,EAAe,eAAEpoB,KAAK6jB,YAAYjC,IACtC5hB,KAAKkb,uBAAuBiN,EAAcC,MAGlD,MACJ,IAAK,iBACDpoB,KAAKqoB,6BAA6B1f,GAClC,MACJ,IAAK,UACD3I,KAAKsoB,sBAAsB3f,GAC3B,MACJ,QACI3I,KAAKmB,SAASwH,KAG1B0f,6BAA8B,WACtBroB,KAAKoiB,mBAAqBpiB,KAAKmiB,sBAC/BniB,KAAKmjB,oBAGboF,mBAAoB,SAASnnB,GACzB,IACIonB,EADAxlB,EAAWhD,KAAKgD,WAYpB,GAVI,WAAaA,EAASyC,IAAI,YAC1B+iB,EAAkBxlB,EAAS4D,IAAI,GAE/B5D,EAAS0a,UAAU+K,MAAK,WACpB,GAAI,YAAc,eAAEzoB,MAAMyF,IAAI,YAE1B,OADA+iB,EAAkBxoB,MACX,KAIfwoB,EAAiB,CACjB,IAAIE,EAAa,eAAgBF,GAC7BG,EAAwB3oB,KAAKsjB,yBAC7BjR,EAAQsW,EAAwB,MAAQ,OACxCrW,EAAMqW,EAAwB,SAAW,QACzCC,EAAaD,EAAwB,EAAOE,YAAc,EAAOC,YACrE,GAAI1nB,EAASiR,GAASqW,EAAWrW,GAASuW,GAAcxnB,EAASiR,GAASqW,EAAWpW,GAAOsW,EACxF,OAAO,EAGf,OAAO,GAEXN,sBAAuB,SAAS3f,GAC5B,IAAIkZ,EAAUlZ,EAAKE,MACnB,GAAI7I,KAAKoiB,kBAAmB,CACxB,IAAI2G,EAAkB,OAASlH,GAAWA,GAAW,EACrD7hB,KAAKinB,mBAAmB8B,GACpBA,GACA/oB,KAAKmjB,wBAGTnjB,KAAKgpB,WAAWrgB,EAAKG,cAAeH,EAAKE,MAAOF,EAAKR,aAG7D+b,OAAQ,WACJ,GAAI,OAASlkB,KAAKjB,OAAO,cAAgB,OAASiB,KAAKjB,OAAO,WAA9D,CAGAiB,KAAK2iB,mBAAkB,GACvB3iB,KAAKipB,yBACL,IAAIpH,EAAU7hB,KAAKjB,OAAO,WAC1BiB,KAAKsoB,sBAAsB,CACvBzf,MAAOgZ,EACP1Z,YAAY,MAGpB8gB,uBAAwB,WACpB,IAAIrH,EAAY5hB,KAAKkpB,sBACjBd,EAAe,eAAEpoB,KAAK6jB,YAAYjC,IAClCwG,EAAatkB,SACb9D,KAAKmb,gBAAkBiN,EACvBpoB,KAAKkb,wBAAuB,EAAMkN,KAG1Ce,oBAAqB,SAAS/qB,EAAMgrB,GAChC,IAAIrV,EAAc/T,KAAKsnB,aAIvB,OAHIvT,GAAe/T,KAAKsjB,0BAA4BvP,EAAY1C,aAAe+X,IAC3EhrB,GAAQ2V,EAAY1C,aAAe+X,GAEhChrB,GAEX+kB,iBAAkB,WACd,IAAIwE,EAAsB3nB,KAAKmiB,sBAAwBniB,KAAKwlB,qBAC5D,GAAKmC,EAAL,CAGA,IAAInF,EAAQxiB,KAAK6jB,YACbhC,EAAU7hB,KAAKjB,OAAO,WACtB4pB,EAAwB3oB,KAAKsjB,yBAC7B6B,EAAanlB,KAAKjB,OAAO,cACzB+iB,EAAiB9hB,KAAKjB,OAAO,kBAC7BqC,EAAW,KACXgoB,EAAa,EACbnR,EAAcuK,EAAMX,GACxB,GAAI5J,EAAa,CACb,IAAIkG,EAAe,eAAElG,GACrB7W,EAAW+c,EAAa9W,SACxB+hB,EAAazR,WAAWwG,EAAa1Y,IAAI,eACpCkjB,IAAyBxD,GAAerD,IACzC1gB,EAAShD,MAAQ,eAAc+f,GAAc,QAE9C,CACH,IAAIkL,EAAyBpR,EAAcjY,KAAKuiB,oBAAoBC,EAAOX,GACvEwH,IACAjoB,EAAW,eAAEioB,GAAwBhiB,SACjCshB,EACAvnB,EAAS/C,KAAO,eAAegrB,GAAwB,GAC/ClE,IACR/jB,EAAShD,MAAQ,eAAcirB,GAAwB,KAInErpB,KAAK0nB,wBAAwBC,EAAqB1P,GAC9C7W,IAAapB,KAAKuoB,mBAAmBnnB,KACrCA,EAAW,MAEXA,IACAA,EAAShD,KAAO4B,KAAKmpB,oBAAoB/nB,EAAShD,KAAMgrB,GACxDppB,KAAK6Y,MAAMzX,EAAUumB,IAEzBA,EAAoBzZ,SAAS9M,KAEjCkoB,cAAe,SAAS9G,EAAO+G,EAAa3H,EAAWC,GAEnD,IADA,IAAI2H,EAAY,GACPpE,EAAI,EAAGA,EAAI5C,EAAM1e,OAAQshB,IAAK,CACnC,IAAIhkB,EAAW,EACX,OAASygB,GAAW,OAASD,IAI5B,IAAMA,EACHwD,GAAKvD,IACLzgB,EAAWmoB,IAEP,IAAM1H,EACVuD,EAAIxD,IACJxgB,GAAYmoB,GAET3H,EAAYC,EACfuD,EAAIxD,GAAawD,EAAIvD,IACrBzgB,GAAYmoB,GAET3H,EAAYC,GACfuD,GAAKvD,GAAWuD,EAAIxD,IACpBxgB,EAAWmoB,GAGnBC,EAAU9C,KAAKtlB,IApBXooB,EAAU9C,KAAKtlB,GAsBvB,OAAOooB,GAEXC,yBAA0B,SAASd,GAC/B,IAAIrC,EAAiBtmB,KAAKqb,uBACtB5G,EAAOzU,KAAKjB,OAAO,wBAOvB,OANK0V,IACDA,EAAOkU,GAAyB,eAAerC,GAAkB,eAAeA,GAAgB,IAAS,GAAK,eAAcA,GAAkB,eAAcA,GAAgB,IAAS,EAChLtmB,KAAKjB,OAAO,eACbiB,KAAKjB,OAAO,uBAAwB0V,IAGrCA,GAEXyU,oBAAqB,WACjB,IACItH,UAAWA,EACXI,gBAAiBA,EACjB3a,OAAQA,GACRrH,KAAKjB,SACT,OAAO,MAAQ6iB,EAAY,KAAOA,EAAYI,EAAkB3a,GAEpE2hB,WAAY,SAASU,EAAa7H,EAAS1Z,GAUvC,IATA,IAAIyZ,EAAY5hB,KAAKkpB,sBACjBP,EAAwB3oB,KAAKsjB,yBAC7B0D,EAAmB2B,EAAwB,MAAQ,OACnDY,EAAcvpB,KAAKypB,yBAAyBd,GAC5CnG,EAAQxiB,KAAK6jB,YACb8F,EAAgB3pB,KAAKspB,cAAc9G,EAAO+G,EAAa3H,EAAW8H,GAClEF,EAAYxpB,KAAKspB,cAAc9G,EAAO+G,EAAa3H,EAAWC,GAC9D+H,EAAkB5pB,KAAKjB,OAAO,aAC9BomB,EAAanlB,KAAKjB,OAAO,cACpBqmB,EAAI,EAAGA,EAAI5C,EAAM1e,OAAQshB,IAAK,CACnC,IAAInN,EAAcuK,EAAM4C,GACpByE,EAAeF,EAAcvE,GAC7BhkB,EAAWooB,EAAUpE,GACrB,OAASvD,GAAW,OAASD,EAC7BpB,EAAcvI,IACP4R,IAAiBzoB,GAAY+G,GAAc/G,IAClD2e,EAAQ9H,EAAa,OAAA/W,EAAA,MAAO,GAAI0oB,EAAiB,CAC7CloB,GAAI,CACA,CAACslB,IAAoB2B,GAAyBxD,GAAc/jB,EAAWA,QAM3F8Z,uBAAwB,SAASrS,EAAO7F,GACpC,IAAIsY,EAAiBtY,GAAYhD,KAAKmb,gBACtCnb,KAAKmB,SAASiC,MAAMpD,KAAMqD,WACrBrD,KAAKoiB,mBACN9G,GAAkBA,EAAenX,YAAYnE,KAAKmZ,iBAAiB,iBAAkBtQ,IAG7F8W,SAAU,WACN3f,KAAKqV,QACLrV,KAAKmB,YAET2jB,cAAe,SAASpP,GACpB,IAAI/M,EAAO3I,KAAK4b,cAAclG,GAE9B,OADA1V,KAAK2b,WAAW,QAAhB3b,CAAyB2I,GAClBA,EAAKgF,QAEhBkI,iBAAkB,SAASH,GACvB,IAAIC,EAAkB3V,KAAK4V,sBACvBjN,EAAO3I,KAAK4b,cAAclG,GAE9B,OADAC,EAAgBgG,WAAW,WAA3BhG,CAAuChN,GAChCA,EAAKgF,QAEhBqX,kBAAmB,SAAStP,GACxB,IAAI/M,EAAO3I,KAAK4b,cAAclG,GAE9B,OADA1V,KAAK2b,WAAW,YAAhB3b,CAA6B2I,GACtBA,EAAK4F,UAAW,IAAK,QAAUuH,aAG9C,eAAkB8J,EAAUkB,IACb","file":"js/chunk-0ec68ce4.60a44c5d.js","sourcesContent":["/**\r\n * DevExtreme (esm/ui/popover/ui.popover.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWidth,\r\n setWidth,\r\n getHeight,\r\n setHeight\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n move\r\n} from \"../../animation/translator\";\r\nimport positionUtils from \"../../animation/position\";\r\nimport {\r\n isObject,\r\n isString\r\n} from \"../../core/utils/type\";\r\nimport {\r\n fitIntoRange\r\n} from \"../../core/utils/math\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport Popup from \"../popup\";\r\nimport {\r\n getBoundingRect\r\n} from \"../../core/utils/position\";\r\nimport {\r\n PopoverPositionController,\r\n POPOVER_POSITION_ALIASES\r\n} from \"./popover_position_controller\";\r\nvar POPOVER_CLASS = \"dx-popover\";\r\nvar POPOVER_WRAPPER_CLASS = \"dx-popover-wrapper\";\r\nvar POPOVER_ARROW_CLASS = \"dx-popover-arrow\";\r\nvar POPOVER_WITHOUT_TITLE_CLASS = \"dx-popover-without-title\";\r\nvar POSITION_FLIP_MAP = {\r\n left: \"right\",\r\n top: \"bottom\",\r\n right: \"left\",\r\n bottom: \"top\",\r\n center: \"center\"\r\n};\r\nvar getEventNameByOption = function(optionValue) {\r\n return isObject(optionValue) ? optionValue.name : optionValue\r\n};\r\nvar getEventName = function(that, optionName) {\r\n var optionValue = that.option(optionName);\r\n return getEventNameByOption(optionValue)\r\n};\r\nvar getEventDelay = function(that, optionName) {\r\n var optionValue = that.option(optionName);\r\n return isObject(optionValue) && optionValue.delay\r\n};\r\nvar attachEvent = function(that, name) {\r\n var {\r\n target: target,\r\n shading: shading,\r\n disabled: disabled,\r\n hideEvent: hideEvent\r\n } = that.option();\r\n var isSelector = isString(target);\r\n var shouldIgnoreHideEvent = shading && \"hide\" === name;\r\n var event = shouldIgnoreHideEvent ? null : getEventName(that, \"\".concat(name, \"Event\"));\r\n if (shouldIgnoreHideEvent && hideEvent) {\r\n errors.log(\"W1020\")\r\n }\r\n if (!event || disabled) {\r\n return\r\n }\r\n var eventName = addNamespace(event, that.NAME);\r\n var action = that._createAction(function() {\r\n var delay = getEventDelay(that, name + \"Event\");\r\n this._clearEventsTimeouts();\r\n if (delay) {\r\n this._timeouts[name] = setTimeout((function() {\r\n that[name]()\r\n }), delay)\r\n } else {\r\n that[name]()\r\n }\r\n }.bind(that), {\r\n validatingTargetName: \"target\"\r\n });\r\n var handler = function(e) {\r\n action({\r\n event: e,\r\n target: $(e.currentTarget)\r\n })\r\n };\r\n var EVENT_HANDLER_NAME = \"_\" + name + \"EventHandler\";\r\n if (isSelector) {\r\n that[EVENT_HANDLER_NAME] = handler;\r\n eventsEngine.on(domAdapter.getDocument(), eventName, target, handler)\r\n } else {\r\n var targetElement = getPublicElement($(target));\r\n that[EVENT_HANDLER_NAME] = void 0;\r\n eventsEngine.on(targetElement, eventName, handler)\r\n }\r\n};\r\nvar detachEvent = function(that, target, name, event) {\r\n var eventName = event || getEventName(that, name + \"Event\");\r\n if (!eventName) {\r\n return\r\n }\r\n eventName = addNamespace(eventName, that.NAME);\r\n var EVENT_HANDLER_NAME = \"_\" + name + \"EventHandler\";\r\n if (that[EVENT_HANDLER_NAME]) {\r\n eventsEngine.off(domAdapter.getDocument(), eventName, target, that[EVENT_HANDLER_NAME])\r\n } else {\r\n eventsEngine.off(getPublicElement($(target)), eventName)\r\n }\r\n};\r\nvar Popover = Popup.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n target: void 0,\r\n shading: false,\r\n position: extend({}, POPOVER_POSITION_ALIASES.bottom),\r\n closeOnOutsideClick: true,\r\n animation: {\r\n show: {\r\n type: \"fade\",\r\n from: 0,\r\n to: 1\r\n },\r\n hide: {\r\n type: \"fade\",\r\n to: 0\r\n }\r\n },\r\n showTitle: false,\r\n width: \"auto\",\r\n height: \"auto\",\r\n dragEnabled: false,\r\n resizeEnabled: false,\r\n fullScreen: false,\r\n hideOnParentScroll: true,\r\n arrowPosition: \"\",\r\n arrowOffset: 0,\r\n _fixWrapperPosition: true\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return [{\r\n device: {\r\n platform: \"ios\"\r\n },\r\n options: {\r\n arrowPosition: {\r\n boundaryOffset: {\r\n h: 20,\r\n v: -10\r\n },\r\n collision: \"fit\"\r\n }\r\n }\r\n }, {\r\n device: function() {\r\n return !hasWindow()\r\n },\r\n options: {\r\n animation: null\r\n }\r\n }]\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._renderArrow();\r\n this._timeouts = {};\r\n this.$element().addClass(POPOVER_CLASS);\r\n this.$wrapper().addClass(POPOVER_WRAPPER_CLASS)\r\n },\r\n _render: function() {\r\n this.callBase.apply(this, arguments);\r\n this._detachEvents(this.option(\"target\"));\r\n this._attachEvents()\r\n },\r\n _detachEvents: function(target) {\r\n detachEvent(this, target, \"show\");\r\n detachEvent(this, target, \"hide\")\r\n },\r\n _attachEvents: function() {\r\n attachEvent(this, \"show\");\r\n attachEvent(this, \"hide\")\r\n },\r\n _renderArrow: function() {\r\n this._$arrow = $(\"
\").addClass(POPOVER_ARROW_CLASS).prependTo(this.$overlayContent())\r\n },\r\n _documentDownHandler: function(e) {\r\n if (this._isOutsideClick(e)) {\r\n return this.callBase(e)\r\n }\r\n return true\r\n },\r\n _isOutsideClick: function(e) {\r\n return !$(e.target).closest(this.option(\"target\")).length\r\n },\r\n _animate: function(animation) {\r\n if (animation && animation.to && \"object\" === typeof animation.to) {\r\n extend(animation.to, {\r\n position: this._getContainerPosition()\r\n })\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _stopAnimation: function() {\r\n this.callBase.apply(this, arguments)\r\n },\r\n _renderTitle: function() {\r\n this.$wrapper().toggleClass(POPOVER_WITHOUT_TITLE_CLASS, !this.option(\"showTitle\"));\r\n this.callBase()\r\n },\r\n _renderPosition: function() {\r\n this.callBase();\r\n this._renderOverlayPosition();\r\n this._actions.onPositioned()\r\n },\r\n _renderOverlayPosition: function() {\r\n this._resetOverlayPosition();\r\n this._updateContentSize();\r\n var contentPosition = this._getContainerPosition();\r\n var resultLocation = positionUtils.setup(this.$overlayContent(), contentPosition);\r\n var positionSide = this._getSideByLocation(resultLocation);\r\n this._togglePositionClass(\"dx-position-\" + positionSide);\r\n this._toggleFlippedClass(resultLocation.h.flip, resultLocation.v.flip);\r\n var isArrowVisible = this._isHorizontalSide() || this._isVerticalSide();\r\n if (isArrowVisible) {\r\n this._renderArrowPosition(positionSide)\r\n }\r\n },\r\n _resetOverlayPosition: function() {\r\n this._setContentHeight(true);\r\n this._togglePositionClass(\"dx-position-\" + this._positionController._positionSide);\r\n move(this.$overlayContent(), {\r\n left: 0,\r\n top: 0\r\n });\r\n this._$arrow.css({\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n left: \"auto\"\r\n })\r\n },\r\n _updateContentSize: function() {\r\n if (!this.$content()) {\r\n return\r\n }\r\n var containerLocation = positionUtils.calculate(this.$overlayContent(), this._getContainerPosition());\r\n if (containerLocation.h.oversize > 0 && this._isHorizontalSide() && !containerLocation.h.fit) {\r\n var newContainerWidth = getWidth(this.$overlayContent()) - containerLocation.h.oversize;\r\n setWidth(this.$overlayContent(), newContainerWidth)\r\n }\r\n if (containerLocation.v.oversize > 0 && this._isVerticalSide() && !containerLocation.v.fit) {\r\n var newOverlayContentHeight = getHeight(this.$overlayContent()) - containerLocation.v.oversize;\r\n var newPopupContentHeight = getHeight(this.$content()) - containerLocation.v.oversize;\r\n setHeight(this.$overlayContent(), newOverlayContentHeight);\r\n setHeight(this.$content(), newPopupContentHeight)\r\n }\r\n },\r\n _getContainerPosition: function() {\r\n return this._positionController._getContainerPosition()\r\n },\r\n _getSideByLocation: function(location) {\r\n var isFlippedByVertical = location.v.flip;\r\n var isFlippedByHorizontal = location.h.flip;\r\n return this._isVerticalSide() && isFlippedByVertical || this._isHorizontalSide() && isFlippedByHorizontal || this._isPopoverInside() ? POSITION_FLIP_MAP[this._positionController._positionSide] : this._positionController._positionSide\r\n },\r\n _togglePositionClass: function(positionClass) {\r\n this.$wrapper().removeClass(\"dx-position-left dx-position-right dx-position-top dx-position-bottom\").addClass(positionClass)\r\n },\r\n _toggleFlippedClass: function(isFlippedHorizontal, isFlippedVertical) {\r\n this.$wrapper().toggleClass(\"dx-popover-flipped-horizontal\", isFlippedHorizontal).toggleClass(\"dx-popover-flipped-vertical\", isFlippedVertical)\r\n },\r\n _renderArrowPosition: function(side) {\r\n var arrowRect = getBoundingRect(this._$arrow.get(0));\r\n var arrowFlip = -(this._isVerticalSide(side) ? arrowRect.height : arrowRect.width);\r\n this._$arrow.css(POSITION_FLIP_MAP[side], arrowFlip);\r\n var axis = this._isVerticalSide(side) ? \"left\" : \"top\";\r\n var sizeProperty = this._isVerticalSide(side) ? \"width\" : \"height\";\r\n var $target = $(this._positionController._position.of);\r\n var targetOffset = positionUtils.offset($target) || {\r\n top: 0,\r\n left: 0\r\n };\r\n var contentOffset = positionUtils.offset(this.$overlayContent());\r\n var arrowSize = arrowRect[sizeProperty];\r\n var contentLocation = contentOffset[axis];\r\n var contentSize = getBoundingRect(this.$overlayContent().get(0))[sizeProperty];\r\n var targetLocation = targetOffset[axis];\r\n var targetElement = $target.get(0);\r\n var targetSize = targetElement && !targetElement.preventDefault ? getBoundingRect(targetElement)[sizeProperty] : 0;\r\n var min = Math.max(contentLocation, targetLocation);\r\n var max = Math.min(contentLocation + contentSize, targetLocation + targetSize);\r\n var arrowLocation;\r\n if (\"start\" === this.option(\"arrowPosition\")) {\r\n arrowLocation = min - contentLocation\r\n } else if (\"end\" === this.option(\"arrowPosition\")) {\r\n arrowLocation = max - contentLocation - arrowSize\r\n } else {\r\n arrowLocation = (min + max) / 2 - contentLocation - arrowSize / 2\r\n }\r\n var borderWidth = this._positionController._getContentBorderWidth(side);\r\n var finalArrowLocation = fitIntoRange(arrowLocation - borderWidth + this.option(\"arrowOffset\"), borderWidth, contentSize - arrowSize - 2 * borderWidth);\r\n this._$arrow.css(axis, finalArrowLocation)\r\n },\r\n _isPopoverInside: function() {\r\n return this._positionController._isPopoverInside()\r\n },\r\n _setContentHeight: function(fullUpdate) {\r\n if (fullUpdate) {\r\n this.callBase()\r\n }\r\n },\r\n _getPositionControllerConfig() {\r\n var {\r\n shading: shading\r\n } = this.option();\r\n return extend({}, this.callBase(), {\r\n shading: shading,\r\n $arrow: this._$arrow\r\n })\r\n },\r\n _initPositionController() {\r\n this._positionController = new PopoverPositionController(this._getPositionControllerConfig())\r\n },\r\n _renderWrapperDimensions: function() {\r\n if (this.option(\"shading\")) {\r\n this.$wrapper().css({\r\n width: \"100%\",\r\n height: \"100%\"\r\n })\r\n }\r\n },\r\n _isVerticalSide: function(side) {\r\n return this._positionController._isVerticalSide(side)\r\n },\r\n _isHorizontalSide: function(side) {\r\n return this._positionController._isHorizontalSide(side)\r\n },\r\n _clearEventTimeout: function(name) {\r\n clearTimeout(this._timeouts[name])\r\n },\r\n _clearEventsTimeouts: function() {\r\n this._clearEventTimeout(\"show\");\r\n this._clearEventTimeout(\"hide\")\r\n },\r\n _clean: function() {\r\n this._detachEvents(this.option(\"target\"));\r\n this.callBase.apply(this, arguments)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"arrowPosition\":\r\n case \"arrowOffset\":\r\n this._renderGeometry();\r\n break;\r\n case \"fullScreen\":\r\n if (args.value) {\r\n this.option(\"fullScreen\", false)\r\n }\r\n break;\r\n case \"target\":\r\n args.previousValue && this._detachEvents(args.previousValue);\r\n this.callBase(args);\r\n break;\r\n case \"showEvent\":\r\n case \"hideEvent\":\r\n var name = args.name.substring(0, 4);\r\n var event = getEventNameByOption(args.previousValue);\r\n this.hide();\r\n detachEvent(this, this.option(\"target\"), name, event);\r\n attachEvent(this, name);\r\n break;\r\n case \"visible\":\r\n this._clearEventTimeout(args.value ? \"show\" : \"hide\");\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n show: function(target) {\r\n if (target) {\r\n this.option(\"target\", target)\r\n }\r\n return this.callBase()\r\n }\r\n});\r\nregisterComponent(\"dxPopover\", Popover);\r\nexport default Popover;\r\n","/**\r\n * DevExtreme (esm/ui/popover.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Popover from \"./popover/ui.popover\";\r\nexport default Popover;\r\n","/**\r\n * DevExtreme (esm/ui/action_sheet.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n getWindow\r\n} from \"../core/utils/window\";\r\nvar window = getWindow();\r\nimport {\r\n noop\r\n} from \"../core/utils/common\";\r\nimport messageLocalization from \"../localization/message\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport Button from \"./button\";\r\nimport CollectionWidget from \"./collection/ui.collection_widget.edit\";\r\nimport Popup from \"./popup\";\r\nimport Popover from \"./popover\";\r\nimport {\r\n BindableTemplate\r\n} from \"../core/templates/bindable_template\";\r\nimport {\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nvar ACTION_SHEET_CLASS = \"dx-actionsheet\";\r\nvar ACTION_SHEET_CONTAINER_CLASS = \"dx-actionsheet-container\";\r\nvar ACTION_SHEET_POPUP_WRAPPER_CLASS = \"dx-actionsheet-popup-wrapper\";\r\nvar ACTION_SHEET_POPOVER_WRAPPER_CLASS = \"dx-actionsheet-popover-wrapper\";\r\nvar ACTION_SHEET_CANCEL_BUTTON_CLASS = \"dx-actionsheet-cancel\";\r\nvar ACTION_SHEET_ITEM_CLASS = \"dx-actionsheet-item\";\r\nvar ACTION_SHEET_ITEM_DATA_KEY = \"dxActionSheetItemData\";\r\nvar ACTION_SHEET_WITHOUT_TITLE_CLASS = \"dx-actionsheet-without-title\";\r\nvar ACTION_SHEET_BUTTON_DEFAULT_STYLING_MODE = \"outlined\";\r\nvar ActionSheet = CollectionWidget.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n usePopover: false,\r\n target: null,\r\n title: \"\",\r\n showTitle: true,\r\n showCancelButton: true,\r\n cancelText: messageLocalization.format(\"Cancel\"),\r\n onCancelClick: null,\r\n visible: false,\r\n noDataText: \"\",\r\n focusStateEnabled: false,\r\n selectionByClick: false\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: {\r\n platform: \"ios\",\r\n tablet: true\r\n },\r\n options: {\r\n usePopover: true\r\n }\r\n }])\r\n },\r\n _initTemplates: function() {\r\n this.callBase();\r\n this._templateManager.addDefaultTemplates({\r\n item: new BindableTemplate((function($container, data) {\r\n var button = new Button($(\"
\"), extend({\r\n onClick: data && data.click,\r\n stylingMode: data && data.stylingMode || ACTION_SHEET_BUTTON_DEFAULT_STYLING_MODE\r\n }, data));\r\n $container.append(button.$element())\r\n }), [\"disabled\", \"icon\", \"text\", \"type\", \"onClick\", \"click\", \"stylingMode\"], this.option(\"integrationOptions.watchMethod\"))\r\n })\r\n },\r\n _itemContainer: function() {\r\n return this._$itemContainer\r\n },\r\n _itemClass: function() {\r\n return ACTION_SHEET_ITEM_CLASS\r\n },\r\n _itemDataKey: function() {\r\n return ACTION_SHEET_ITEM_DATA_KEY\r\n },\r\n _toggleVisibility: noop,\r\n _renderDimensions: noop,\r\n _initMarkup: function() {\r\n this.callBase();\r\n this.$element().addClass(ACTION_SHEET_CLASS);\r\n this._createItemContainer()\r\n },\r\n _render: function() {\r\n this._renderPopup()\r\n },\r\n _createItemContainer: function() {\r\n this._$itemContainer = $(\"
\").addClass(ACTION_SHEET_CONTAINER_CLASS);\r\n this._renderDisabled()\r\n },\r\n _renderDisabled: function() {\r\n this._$itemContainer.toggleClass(\"dx-state-disabled\", this.option(\"disabled\"))\r\n },\r\n _renderPopup: function() {\r\n this._$popup = $(\"
\").appendTo(this.$element());\r\n this._isPopoverMode() ? this._createPopover() : this._createPopup();\r\n this._renderPopupTitle();\r\n this._mapPopupOption(\"visible\")\r\n },\r\n _mapPopupOption: function(optionName) {\r\n this._popup && this._popup.option(optionName, this.option(optionName))\r\n },\r\n _isPopoverMode: function() {\r\n return this.option(\"usePopover\") && this.option(\"target\")\r\n },\r\n _renderPopupTitle: function() {\r\n this._mapPopupOption(\"showTitle\");\r\n this._popup && this._popup.$wrapper().toggleClass(ACTION_SHEET_WITHOUT_TITLE_CLASS, !this.option(\"showTitle\"))\r\n },\r\n _clean: function() {\r\n if (this._$popup) {\r\n this._$popup.remove()\r\n }\r\n this.callBase()\r\n },\r\n _overlayConfig: function() {\r\n return {\r\n onInitialized: function(args) {\r\n this._popup = args.component\r\n }.bind(this),\r\n disabled: false,\r\n showTitle: true,\r\n title: this.option(\"title\"),\r\n deferRendering: !window.angular,\r\n onContentReady: this._popupContentReadyAction.bind(this),\r\n onHidden: this.hide.bind(this)\r\n }\r\n },\r\n _createPopover: function() {\r\n this._createComponent(this._$popup, Popover, extend(this._overlayConfig(), {\r\n width: this.option(\"width\") || 200,\r\n height: this.option(\"height\") || \"auto\",\r\n target: this.option(\"target\")\r\n }));\r\n this._popup.$wrapper().addClass(ACTION_SHEET_POPOVER_WRAPPER_CLASS)\r\n },\r\n _createPopup: function() {\r\n this._createComponent(this._$popup, Popup, extend(this._overlayConfig(), {\r\n dragEnabled: false,\r\n width: this.option(\"width\") || \"100%\",\r\n height: this.option(\"height\") || \"auto\",\r\n showCloseButton: false,\r\n position: {\r\n my: \"bottom\",\r\n at: \"bottom\",\r\n of: window\r\n },\r\n animation: {\r\n show: {\r\n type: \"slide\",\r\n duration: 400,\r\n from: {\r\n position: {\r\n my: \"top\",\r\n at: \"bottom\",\r\n of: window\r\n }\r\n },\r\n to: {\r\n position: {\r\n my: \"bottom\",\r\n at: \"bottom\",\r\n of: window\r\n }\r\n }\r\n },\r\n hide: {\r\n type: \"slide\",\r\n duration: 400,\r\n from: {\r\n position: {\r\n my: \"bottom\",\r\n at: \"bottom\",\r\n of: window\r\n }\r\n },\r\n to: {\r\n position: {\r\n my: \"top\",\r\n at: \"bottom\",\r\n of: window\r\n }\r\n }\r\n }\r\n }\r\n }));\r\n this._popup.$wrapper().addClass(ACTION_SHEET_POPUP_WRAPPER_CLASS)\r\n },\r\n _popupContentReadyAction: function() {\r\n this._popup.$content().append(this._$itemContainer);\r\n this._attachClickEvent();\r\n this._attachHoldEvent();\r\n this._prepareContent();\r\n this._renderContent();\r\n this._renderCancelButton()\r\n },\r\n _renderCancelButton: function() {\r\n if (this._isPopoverMode()) {\r\n return\r\n }\r\n if (this._$cancelButton) {\r\n this._$cancelButton.remove()\r\n }\r\n if (this.option(\"showCancelButton\")) {\r\n var cancelClickAction = this._createActionByOption(\"onCancelClick\") || noop;\r\n var that = this;\r\n this._$cancelButton = $(\"
\").addClass(ACTION_SHEET_CANCEL_BUTTON_CLASS).appendTo(this._popup && this._popup.$content());\r\n this._createComponent(this._$cancelButton, Button, {\r\n disabled: false,\r\n stylingMode: ACTION_SHEET_BUTTON_DEFAULT_STYLING_MODE,\r\n text: this.option(\"cancelText\"),\r\n onClick: function(e) {\r\n var hidingArgs = {\r\n event: e,\r\n cancel: false\r\n };\r\n cancelClickAction(hidingArgs);\r\n if (!hidingArgs.cancel) {\r\n that.hide()\r\n }\r\n },\r\n integrationOptions: {}\r\n })\r\n }\r\n },\r\n _attachItemClickEvent: noop,\r\n _itemClickHandler: function(e) {\r\n this.callBase(e);\r\n if (!$(e.target).is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n this.hide()\r\n }\r\n },\r\n _itemHoldHandler: function(e) {\r\n this.callBase(e);\r\n if (!$(e.target).is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n this.hide()\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"width\":\r\n case \"height\":\r\n case \"visible\":\r\n case \"title\":\r\n this._mapPopupOption(args.name);\r\n break;\r\n case \"disabled\":\r\n this._renderDisabled();\r\n break;\r\n case \"showTitle\":\r\n this._renderPopupTitle();\r\n break;\r\n case \"showCancelButton\":\r\n case \"onCancelClick\":\r\n case \"cancelText\":\r\n this._renderCancelButton();\r\n break;\r\n case \"target\":\r\n case \"usePopover\":\r\n case \"items\":\r\n this._invalidate();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n toggle: function(showing) {\r\n var that = this;\r\n var d = new Deferred;\r\n that._popup.toggle(showing).done((function() {\r\n that.option(\"visible\", showing);\r\n d.resolveWith(that)\r\n }));\r\n return d.promise()\r\n },\r\n show: function() {\r\n return this.toggle(true)\r\n },\r\n hide: function() {\r\n return this.toggle(false)\r\n }\r\n});\r\nregisterComponent(\"dxActionSheet\", ActionSheet);\r\nexport default ActionSheet;\r\n","/**\r\n * DevExtreme (esm/ui/list/modules/search.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport searchBoxMixin from \"../../widget/ui.search_box_mixin\";\r\nimport TextBox from \"../../text_box\";\r\nsearchBoxMixin.setEditorClass(TextBox);\r\n","/**\r\n * DevExtreme (esm/renovation/ui/resizable/utils.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isWindow\r\n} from \"../../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport {\r\n getOuterWidth,\r\n getInnerWidth,\r\n getOuterHeight,\r\n getInnerHeight,\r\n getOffset\r\n} from \"../../../core/utils/size\";\r\nexport var borderWidthStyles = {\r\n left: \"borderLeftWidth\",\r\n top: \"borderTopWidth\",\r\n right: \"borderRightWidth\",\r\n bottom: \"borderBottomWidth\"\r\n};\r\n\r\nfunction getBorderWidth(el, direction) {\r\n if (!isWindow(el)) {\r\n var borderWidth = el.style[borderWidthStyles[direction]];\r\n return parseInt(borderWidth, 10) || 0\r\n }\r\n return 0\r\n}\r\nvar correctGeometry = function(area, mainEl) {\r\n var el = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : void 0;\r\n var {\r\n height: height,\r\n offset: offset,\r\n width: width\r\n } = area;\r\n var {\r\n left: left,\r\n top: top\r\n } = offset;\r\n var areaBorderLeft = el ? getBorderWidth(el, \"left\") : 0;\r\n var areaBorderTop = el ? getBorderWidth(el, \"top\") : 0;\r\n return {\r\n width: width - getOuterWidth(mainEl) - getInnerWidth(mainEl),\r\n height: height - getOuterHeight(mainEl) - getInnerHeight(mainEl),\r\n offset: {\r\n left: left + areaBorderLeft + getBorderWidth(mainEl, \"left\"),\r\n top: top + areaBorderTop + getBorderWidth(mainEl, \"top\")\r\n }\r\n }\r\n};\r\nexport var getAreaFromElement = (el, mainEl) => correctGeometry({\r\n width: getInnerWidth(el),\r\n height: getInnerHeight(el),\r\n offset: extend({\r\n top: 0,\r\n left: 0\r\n }, isWindow(el) ? {} : getOffset(el))\r\n}, mainEl, el);\r\nexport var getAreaFromObject = (_ref, mainEl) => {\r\n var {\r\n bottom: bottom,\r\n left: left,\r\n right: right,\r\n top: top\r\n } = _ref;\r\n return correctGeometry({\r\n width: right - left,\r\n height: bottom - top,\r\n offset: {\r\n left: left,\r\n top: top\r\n }\r\n }, mainEl)\r\n};\r\nexport var getMovingSides = el => {\r\n var {\r\n className: className\r\n } = el;\r\n var hasCornerTopLeftClass = className.includes(\"dx-resizable-handle-corner-top-left\");\r\n var hasCornerTopRightClass = className.includes(\"dx-resizable-handle-corner-top-right\");\r\n var hasCornerBottomLeftClass = className.includes(\"dx-resizable-handle-corner-bottom-left\");\r\n var hasCornerBottomRightClass = className.includes(\"dx-resizable-handle-corner-bottom-right\");\r\n return {\r\n top: className.includes(\"dx-resizable-handle-top\") || hasCornerTopLeftClass || hasCornerTopRightClass,\r\n left: className.includes(\"dx-resizable-handle-left\") || hasCornerTopLeftClass || hasCornerBottomLeftClass,\r\n bottom: className.includes(\"dx-resizable-handle-bottom\") || hasCornerBottomLeftClass || hasCornerBottomRightClass,\r\n right: className.includes(\"dx-resizable-handle-right\") || hasCornerTopRightClass || hasCornerBottomRightClass\r\n }\r\n};\r\nexport function getDragOffsets(area, handleEl, areaProp) {\r\n var hWidth = getOuterWidth(handleEl);\r\n var hHeight = getOuterHeight(handleEl);\r\n var hOffset = getOffset(handleEl);\r\n var areaOffset = area.offset;\r\n var isAreaWindow = isWindow(areaProp);\r\n var scrollOffset_scrollX = isAreaWindow ? areaProp.pageXOffset : 0,\r\n scrollOffset_scrollY = isAreaWindow ? areaProp.pageYOffset : 0;\r\n return {\r\n maxLeftOffset: hOffset.left - areaOffset.left - scrollOffset_scrollX,\r\n maxRightOffset: areaOffset.left + area.width - hOffset.left - hWidth + scrollOffset_scrollX,\r\n maxTopOffset: hOffset.top - areaOffset.top - scrollOffset_scrollY,\r\n maxBottomOffset: areaOffset.top + area.height - hOffset.top - hHeight + scrollOffset_scrollY\r\n }\r\n}\r\nexport var filterOffsets = (offset, handleEl) => {\r\n var sides = getMovingSides(handleEl);\r\n var offsetX = !sides.left && !sides.right ? 0 : offset.x;\r\n var offsetY = !sides.top && !sides.bottom ? 0 : offset.y;\r\n return {\r\n x: offsetX,\r\n y: offsetY\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/popover/popover_position_controller.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"shading\", \"$arrow\"];\r\nimport {\r\n isDefined,\r\n isString\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport positionUtils from \"../../animation/position\";\r\nimport {\r\n pairToObject\r\n} from \"../../core/utils/common\";\r\nimport {\r\n borderWidthStyles\r\n} from \"../../renovation/ui/resizable/utils\";\r\nimport {\r\n getWidth,\r\n getHeight\r\n} from \"../../core/utils/size\";\r\nimport {\r\n OverlayPositionController\r\n} from \"../overlay/overlay_position_controller\";\r\nvar WEIGHT_OF_SIDES = {\r\n left: -1,\r\n top: -1,\r\n center: 0,\r\n right: 1,\r\n bottom: 1\r\n};\r\nvar POPOVER_POSITION_ALIASES = {\r\n top: {\r\n my: \"bottom center\",\r\n at: \"top center\",\r\n collision: \"fit flip\"\r\n },\r\n bottom: {\r\n my: \"top center\",\r\n at: \"bottom center\",\r\n collision: \"fit flip\"\r\n },\r\n right: {\r\n my: \"left center\",\r\n at: \"right center\",\r\n collision: \"flip fit\"\r\n },\r\n left: {\r\n my: \"right center\",\r\n at: \"left center\",\r\n collision: \"flip fit\"\r\n }\r\n};\r\nvar POPOVER_DEFAULT_BOUNDARY_OFFSET = {\r\n h: 10,\r\n v: 10\r\n};\r\nclass PopoverPositionController extends OverlayPositionController {\r\n constructor(_ref) {\r\n var {\r\n shading: shading,\r\n $arrow: $arrow\r\n } = _ref, args = _objectWithoutPropertiesLoose(_ref, _excluded);\r\n super(args);\r\n this._props = _extends({}, this._props, {\r\n shading: shading\r\n });\r\n this._$arrow = $arrow;\r\n this._positionSide = void 0\r\n }\r\n positionWrapper() {\r\n if (this._props.shading) {\r\n this._$wrapper.css({\r\n top: 0,\r\n left: 0\r\n })\r\n }\r\n }\r\n _renderBoundaryOffset() {}\r\n _getContainerPosition() {\r\n var offset = pairToObject(this._position.offset || \"\");\r\n var {\r\n h: hOffset,\r\n v: vOffset\r\n } = offset;\r\n var isVerticalSide = this._isVerticalSide();\r\n var isHorizontalSide = this._isHorizontalSide();\r\n if (isVerticalSide || isHorizontalSide) {\r\n var isPopoverInside = this._isPopoverInside();\r\n var sign = (isPopoverInside ? -1 : 1) * WEIGHT_OF_SIDES[this._positionSide];\r\n var arrowSize = isVerticalSide ? getHeight(this._$arrow) : getWidth(this._$arrow);\r\n var arrowSizeCorrection = this._getContentBorderWidth(this._positionSide);\r\n var arrowOffset = sign * (arrowSize - arrowSizeCorrection);\r\n isVerticalSide ? vOffset += arrowOffset : hOffset += arrowOffset\r\n }\r\n return extend({}, this._position, {\r\n offset: hOffset + \" \" + vOffset\r\n })\r\n }\r\n _getContentBorderWidth(side) {\r\n var borderWidth = this._$content.css(borderWidthStyles[side]);\r\n return parseInt(borderWidth) || 0\r\n }\r\n _isPopoverInside() {\r\n var my = positionUtils.setup.normalizeAlign(this._position.my);\r\n var at = positionUtils.setup.normalizeAlign(this._position.at);\r\n return my.h === at.h && my.v === at.v\r\n }\r\n _isVerticalSide() {\r\n var side = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._positionSide;\r\n return \"top\" === side || \"bottom\" === side\r\n }\r\n _isHorizontalSide() {\r\n var side = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._positionSide;\r\n return \"left\" === side || \"right\" === side\r\n }\r\n _getDisplaySide(position) {\r\n var my = positionUtils.setup.normalizeAlign(position.my);\r\n var at = positionUtils.setup.normalizeAlign(position.at);\r\n var weightSign = WEIGHT_OF_SIDES[my.h] === WEIGHT_OF_SIDES[at.h] && WEIGHT_OF_SIDES[my.v] === WEIGHT_OF_SIDES[at.v] ? -1 : 1;\r\n var horizontalWeight = Math.abs(WEIGHT_OF_SIDES[my.h] - weightSign * WEIGHT_OF_SIDES[at.h]);\r\n var verticalWeight = Math.abs(WEIGHT_OF_SIDES[my.v] - weightSign * WEIGHT_OF_SIDES[at.v]);\r\n return horizontalWeight > verticalWeight ? at.h : at.v\r\n }\r\n _normalizePosition(positionProp, targetProp) {\r\n var defaultPositionConfig = {\r\n of: targetProp,\r\n boundaryOffset: POPOVER_DEFAULT_BOUNDARY_OFFSET\r\n };\r\n var resultPosition;\r\n if (isDefined(positionProp)) {\r\n resultPosition = extend(true, {}, defaultPositionConfig, this._positionToObject(positionProp))\r\n } else {\r\n resultPosition = defaultPositionConfig\r\n }\r\n this._positionSide = this._getDisplaySide(resultPosition);\r\n return resultPosition\r\n }\r\n _positionToObject(positionProp) {\r\n if (isString(positionProp)) {\r\n return extend({}, POPOVER_POSITION_ALIASES[positionProp])\r\n }\r\n return positionProp\r\n }\r\n}\r\nexport {\r\n PopoverPositionController,\r\n POPOVER_POSITION_ALIASES\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/draggable.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWidth,\r\n getHeight,\r\n getOuterWidth,\r\n getOuterHeight\r\n} from \"../core/utils/size\";\r\nimport $ from \"../core/renderer\";\r\nimport domAdapter from \"../core/dom_adapter\";\r\nimport {\r\n getWindow\r\n} from \"../core/utils/window\";\r\nimport {\r\n getBoundingRect\r\n} from \"../core/utils/position\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport {\r\n quadToObject\r\n} from \"../core/utils/string\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport {\r\n locate,\r\n move\r\n} from \"../animation/translator\";\r\nimport Animator from \"./scroll_view/animator\";\r\nimport {\r\n dasherize\r\n} from \"../core/utils/inflector\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport DOMComponent from \"../core/dom_component\";\r\nimport {\r\n getPublicElement\r\n} from \"../core/element\";\r\nimport {\r\n addNamespace,\r\n needSkipEvent\r\n} from \"../events/utils/index\";\r\nimport pointerEvents from \"../events/pointer\";\r\nimport {\r\n start as dragEventStart,\r\n move as dragEventMove,\r\n end as dragEventEnd,\r\n enter as dragEventEnter,\r\n leave as dragEventLeave\r\n} from \"../events/drag\";\r\nimport positionUtils from \"../animation/position\";\r\nimport {\r\n isFunction,\r\n isObject\r\n} from \"../core/utils/type\";\r\nimport {\r\n noop,\r\n splitPair\r\n} from \"../core/utils/common\";\r\nimport {\r\n value as viewPort\r\n} from \"../core/utils/view_port\";\r\nimport {\r\n EmptyTemplate\r\n} from \"../core/templates/empty_template\";\r\nimport {\r\n when,\r\n fromPromise,\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nvar window = getWindow();\r\nvar DRAGGABLE = \"dxDraggable\";\r\nvar DRAGSTART_EVENT_NAME = addNamespace(dragEventStart, DRAGGABLE);\r\nvar DRAG_EVENT_NAME = addNamespace(dragEventMove, DRAGGABLE);\r\nvar DRAGEND_EVENT_NAME = addNamespace(dragEventEnd, DRAGGABLE);\r\nvar DRAG_ENTER_EVENT_NAME = addNamespace(dragEventEnter, DRAGGABLE);\r\nvar DRAGEND_LEAVE_EVENT_NAME = addNamespace(dragEventLeave, DRAGGABLE);\r\nvar POINTERDOWN_EVENT_NAME = addNamespace(pointerEvents.down, DRAGGABLE);\r\nvar CLONE_CLASS = \"clone\";\r\nvar targetDraggable;\r\nvar sourceDraggable;\r\nvar ANONYMOUS_TEMPLATE_NAME = \"content\";\r\nvar getMousePosition = event => ({\r\n x: event.pageX - $(window).scrollLeft(),\r\n y: event.pageY - $(window).scrollTop()\r\n});\r\nvar GESTURE_COVER_CLASS = \"dx-gesture-cover\";\r\nvar OVERLAY_WRAPPER_CLASS = \"dx-overlay-wrapper\";\r\nvar OVERLAY_CONTENT_CLASS = \"dx-overlay-content\";\r\nclass ScrollHelper {\r\n constructor(orientation, component) {\r\n this._preventScroll = true;\r\n this._component = component;\r\n if (\"vertical\" === orientation) {\r\n this._scrollValue = \"scrollTop\";\r\n this._overFlowAttr = \"overflowY\";\r\n this._sizeAttr = \"height\";\r\n this._scrollSizeProp = \"scrollHeight\";\r\n this._clientSizeProp = \"clientHeight\";\r\n this._limitProps = {\r\n start: \"top\",\r\n end: \"bottom\"\r\n }\r\n } else {\r\n this._scrollValue = \"scrollLeft\";\r\n this._overFlowAttr = \"overflowX\";\r\n this._sizeAttr = \"width\";\r\n this._scrollSizeProp = \"scrollWidth\";\r\n this._clientSizeProp = \"clientWidth\";\r\n this._limitProps = {\r\n start: \"left\",\r\n end: \"right\"\r\n }\r\n }\r\n }\r\n updateScrollable(elements, mousePosition) {\r\n var isScrollableFound = false;\r\n elements.some(element => {\r\n var $element = $(element);\r\n var isTargetOverOverlayWrapper = $element.hasClass(OVERLAY_WRAPPER_CLASS);\r\n var isTargetOverOverlayContent = $element.hasClass(OVERLAY_CONTENT_CLASS);\r\n if (isTargetOverOverlayWrapper || isTargetOverOverlayContent) {\r\n return true\r\n }\r\n isScrollableFound = this._trySetScrollable(element, mousePosition);\r\n return isScrollableFound\r\n });\r\n if (!isScrollableFound) {\r\n this._$scrollableAtPointer = null;\r\n this._scrollSpeed = 0\r\n }\r\n }\r\n isScrolling() {\r\n return !!this._scrollSpeed\r\n }\r\n isScrollable($element) {\r\n return (\"auto\" === $element.css(this._overFlowAttr) || $element.hasClass(\"dx-scrollable-container\")) && $element.prop(this._scrollSizeProp) > (\"width\" === this._sizeAttr ? getWidth($element) : getHeight($element))\r\n }\r\n _trySetScrollable(element, mousePosition) {\r\n var $element = $(element);\r\n var distanceToBorders;\r\n var sensitivity = this._component.option(\"scrollSensitivity\");\r\n var isScrollable = this.isScrollable($element);\r\n if (isScrollable) {\r\n distanceToBorders = this._calculateDistanceToBorders($element, mousePosition);\r\n if (sensitivity > distanceToBorders[this._limitProps.start]) {\r\n if (!this._preventScroll) {\r\n this._scrollSpeed = -this._calculateScrollSpeed(distanceToBorders[this._limitProps.start]);\r\n this._$scrollableAtPointer = $element\r\n }\r\n } else if (sensitivity > distanceToBorders[this._limitProps.end]) {\r\n if (!this._preventScroll) {\r\n this._scrollSpeed = this._calculateScrollSpeed(distanceToBorders[this._limitProps.end]);\r\n this._$scrollableAtPointer = $element\r\n }\r\n } else {\r\n isScrollable = false;\r\n this._preventScroll = false\r\n }\r\n }\r\n return isScrollable\r\n }\r\n _calculateDistanceToBorders($area, mousePosition) {\r\n var area = $area.get(0);\r\n var areaBoundingRect;\r\n if (area) {\r\n areaBoundingRect = getBoundingRect(area);\r\n return {\r\n left: mousePosition.x - areaBoundingRect.left,\r\n top: mousePosition.y - areaBoundingRect.top,\r\n right: areaBoundingRect.right - mousePosition.x,\r\n bottom: areaBoundingRect.bottom - mousePosition.y\r\n }\r\n } else {\r\n return {}\r\n }\r\n }\r\n _calculateScrollSpeed(distance) {\r\n var component = this._component;\r\n var sensitivity = component.option(\"scrollSensitivity\");\r\n var maxSpeed = component.option(\"scrollSpeed\");\r\n return Math.ceil(Math.pow((sensitivity - distance) / sensitivity, 2) * maxSpeed)\r\n }\r\n scrollByStep() {\r\n if (this._$scrollableAtPointer && this._scrollSpeed) {\r\n if (this._$scrollableAtPointer.hasClass(\"dx-scrollable-container\")) {\r\n var $scrollable = this._$scrollableAtPointer.closest(\".dx-scrollable\");\r\n var scrollableInstance = $scrollable.data(\"dxScrollable\") || $scrollable.data(\"dxScrollView\");\r\n if (scrollableInstance) {\r\n var nextScrollPosition = scrollableInstance.scrollOffset()[this._limitProps.start] + this._scrollSpeed;\r\n scrollableInstance.scrollTo({\r\n [this._limitProps.start]: nextScrollPosition\r\n })\r\n }\r\n } else {\r\n var _nextScrollPosition = this._$scrollableAtPointer[this._scrollValue]() + this._scrollSpeed;\r\n this._$scrollableAtPointer[this._scrollValue](_nextScrollPosition)\r\n }\r\n var dragMoveArgs = this._component._dragMoveArgs;\r\n if (dragMoveArgs) {\r\n this._component._dragMoveHandler(dragMoveArgs)\r\n }\r\n }\r\n }\r\n reset() {\r\n this._$scrollableAtPointer = null;\r\n this._scrollSpeed = 0;\r\n this._preventScroll = true\r\n }\r\n isOutsideScrollable($scrollable, event) {\r\n if (!$scrollable) {\r\n return false\r\n }\r\n var scrollableSize = getBoundingRect($scrollable.get(0));\r\n var start = scrollableSize[this._limitProps.start];\r\n var size = scrollableSize[this._sizeAttr];\r\n var mousePosition = getMousePosition(event);\r\n var location = \"width\" === this._sizeAttr ? mousePosition.x : mousePosition.y;\r\n return location < start || location > start + size\r\n }\r\n}\r\nvar ScrollAnimator = Animator.inherit({\r\n ctor: function(strategy) {\r\n this.callBase();\r\n this._strategy = strategy\r\n },\r\n _step: function() {\r\n var horizontalScrollHelper = this._strategy._horizontalScrollHelper;\r\n var verticalScrollHelper = this._strategy._verticalScrollHelper;\r\n horizontalScrollHelper && horizontalScrollHelper.scrollByStep();\r\n verticalScrollHelper && verticalScrollHelper.scrollByStep()\r\n }\r\n});\r\nvar Draggable = DOMComponent.inherit({\r\n reset: noop,\r\n dragMove: noop,\r\n dragEnter: noop,\r\n dragLeave: noop,\r\n dragEnd: function(sourceEvent) {\r\n var sourceDraggable = this._getSourceDraggable();\r\n sourceDraggable._fireRemoveEvent(sourceEvent);\r\n return (new Deferred).resolve()\r\n },\r\n _fireRemoveEvent: noop,\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n onDragStart: null,\r\n onDragMove: null,\r\n onDragEnd: null,\r\n onDragEnter: null,\r\n onDragLeave: null,\r\n onDrop: null,\r\n immediate: true,\r\n dragDirection: \"both\",\r\n boundary: void 0,\r\n boundOffset: 0,\r\n allowMoveByClick: false,\r\n itemData: null,\r\n container: void 0,\r\n dragTemplate: void 0,\r\n contentTemplate: \"content\",\r\n handle: \"\",\r\n filter: \"\",\r\n clone: false,\r\n autoScroll: true,\r\n scrollSpeed: 30,\r\n scrollSensitivity: 60,\r\n group: void 0,\r\n data: void 0\r\n })\r\n },\r\n _setOptionsByReference: function() {\r\n this.callBase.apply(this, arguments);\r\n extend(this._optionsByReference, {\r\n component: true,\r\n group: true,\r\n itemData: true,\r\n data: true\r\n })\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._attachEventHandlers();\r\n this._scrollAnimator = new ScrollAnimator(this);\r\n this._horizontalScrollHelper = new ScrollHelper(\"horizontal\", this);\r\n this._verticalScrollHelper = new ScrollHelper(\"vertical\", this)\r\n },\r\n _normalizeCursorOffset: function(offset) {\r\n if (isObject(offset)) {\r\n offset = {\r\n h: offset.x,\r\n v: offset.y\r\n }\r\n }\r\n offset = splitPair(offset).map(value => parseFloat(value));\r\n return {\r\n left: offset[0],\r\n top: 1 === offset.length ? offset[0] : offset[1]\r\n }\r\n },\r\n _getNormalizedCursorOffset: function(offset, options) {\r\n if (isFunction(offset)) {\r\n offset = offset.call(this, options)\r\n }\r\n return this._normalizeCursorOffset(offset)\r\n },\r\n _calculateElementOffset: function(options) {\r\n var elementOffset;\r\n var dragElementOffset;\r\n var event = options.event;\r\n var $element = $(options.itemElement);\r\n var $dragElement = $(options.dragElement);\r\n var isCloned = this._dragElementIsCloned();\r\n var cursorOffset = this.option(\"cursorOffset\");\r\n var normalizedCursorOffset = {\r\n left: 0,\r\n top: 0\r\n };\r\n var currentLocate = this._initialLocate = locate($dragElement);\r\n if (isCloned || options.initialOffset || cursorOffset) {\r\n elementOffset = options.initialOffset || $element.offset();\r\n if (cursorOffset) {\r\n normalizedCursorOffset = this._getNormalizedCursorOffset(cursorOffset, options);\r\n if (isFinite(normalizedCursorOffset.left)) {\r\n elementOffset.left = event.pageX\r\n }\r\n if (isFinite(normalizedCursorOffset.top)) {\r\n elementOffset.top = event.pageY\r\n }\r\n }\r\n dragElementOffset = $dragElement.offset();\r\n elementOffset.top -= dragElementOffset.top + (normalizedCursorOffset.top || 0) - currentLocate.top;\r\n elementOffset.left -= dragElementOffset.left + (normalizedCursorOffset.left || 0) - currentLocate.left\r\n }\r\n return elementOffset\r\n },\r\n _initPosition: function(options) {\r\n var $dragElement = $(options.dragElement);\r\n var elementOffset = this._calculateElementOffset(options);\r\n if (elementOffset) {\r\n this._move(elementOffset, $dragElement)\r\n }\r\n this._startPosition = locate($dragElement)\r\n },\r\n _startAnimator: function() {\r\n if (!this._scrollAnimator.inProgress()) {\r\n this._scrollAnimator.start()\r\n }\r\n },\r\n _stopAnimator: function() {\r\n this._scrollAnimator.stop()\r\n },\r\n _addWidgetPrefix: function(className) {\r\n var componentName = this.NAME;\r\n return dasherize(componentName) + (className ? \"-\" + className : \"\")\r\n },\r\n _getItemsSelector: function() {\r\n return this.option(\"filter\") || \"\"\r\n },\r\n _$content: function() {\r\n var $element = this.$element();\r\n var $wrapper = $element.children(\".dx-template-wrapper\");\r\n return $wrapper.length ? $wrapper : $element\r\n },\r\n _attachEventHandlers: function() {\r\n if (this.option(\"disabled\")) {\r\n return\r\n }\r\n var $element = this._$content();\r\n var itemsSelector = this._getItemsSelector();\r\n var allowMoveByClick = this.option(\"allowMoveByClick\");\r\n var data = {\r\n direction: this.option(\"dragDirection\"),\r\n immediate: this.option(\"immediate\"),\r\n checkDropTarget: ($target, event) => {\r\n var targetGroup = this.option(\"group\");\r\n var sourceGroup = this._getSourceDraggable().option(\"group\");\r\n var $scrollable = this._getScrollable($target);\r\n if (this._verticalScrollHelper.isOutsideScrollable($scrollable, event) || this._horizontalScrollHelper.isOutsideScrollable($scrollable, event)) {\r\n return false\r\n }\r\n return sourceGroup && sourceGroup === targetGroup\r\n }\r\n };\r\n if (allowMoveByClick) {\r\n $element = this._getArea();\r\n eventsEngine.on($element, POINTERDOWN_EVENT_NAME, data, this._pointerDownHandler.bind(this))\r\n }\r\n if (\">\" === itemsSelector[0]) {\r\n itemsSelector = itemsSelector.slice(1)\r\n }\r\n eventsEngine.on($element, DRAGSTART_EVENT_NAME, itemsSelector, data, this._dragStartHandler.bind(this));\r\n eventsEngine.on($element, DRAG_EVENT_NAME, data, this._dragMoveHandler.bind(this));\r\n eventsEngine.on($element, DRAGEND_EVENT_NAME, data, this._dragEndHandler.bind(this));\r\n eventsEngine.on($element, DRAG_ENTER_EVENT_NAME, data, this._dragEnterHandler.bind(this));\r\n eventsEngine.on($element, DRAGEND_LEAVE_EVENT_NAME, data, this._dragLeaveHandler.bind(this))\r\n },\r\n _dragElementIsCloned: function() {\r\n return this._$dragElement && this._$dragElement.hasClass(this._addWidgetPrefix(CLONE_CLASS))\r\n },\r\n _getDragTemplateArgs: function($element, $container) {\r\n return {\r\n container: getPublicElement($container),\r\n model: {\r\n itemData: this.option(\"itemData\"),\r\n itemElement: getPublicElement($element)\r\n }\r\n }\r\n },\r\n _createDragElement: function($element) {\r\n var result = $element;\r\n var clone = this.option(\"clone\");\r\n var $container = this._getContainer();\r\n var template = this.option(\"dragTemplate\");\r\n if (template) {\r\n template = this._getTemplate(template);\r\n result = $(\"
\").appendTo($container);\r\n template.render(this._getDragTemplateArgs($element, result))\r\n } else if (clone) {\r\n result = $(\"
\").appendTo($container);\r\n $element.clone().css({\r\n width: $element.css(\"width\"),\r\n height: $element.css(\"height\")\r\n }).appendTo(result)\r\n }\r\n return result.toggleClass(this._addWidgetPrefix(CLONE_CLASS), result.get(0) !== $element.get(0)).toggleClass(\"dx-rtl\", this.option(\"rtlEnabled\"))\r\n },\r\n _resetDragElement: function() {\r\n if (this._dragElementIsCloned()) {\r\n this._$dragElement.remove()\r\n } else {\r\n this._toggleDraggingClass(false)\r\n }\r\n this._$dragElement = null\r\n },\r\n _resetSourceElement: function() {\r\n this._toggleDragSourceClass(false);\r\n this._$sourceElement = null\r\n },\r\n _detachEventHandlers: function() {\r\n eventsEngine.off(this._$content(), \".\" + DRAGGABLE);\r\n eventsEngine.off(this._getArea(), \".\" + DRAGGABLE)\r\n },\r\n _move: function(position, $element) {\r\n move($element || this._$dragElement, position)\r\n },\r\n _getDraggableElement: function(e) {\r\n var $sourceElement = this._getSourceElement();\r\n if ($sourceElement) {\r\n return $sourceElement\r\n }\r\n var allowMoveByClick = this.option(\"allowMoveByClick\");\r\n if (allowMoveByClick) {\r\n return this.$element()\r\n }\r\n var $target = $(e && e.target);\r\n var itemsSelector = this._getItemsSelector();\r\n if (\">\" === itemsSelector[0]) {\r\n var $items = this._$content().find(itemsSelector);\r\n if (!$items.is($target)) {\r\n $target = $target.closest($items)\r\n }\r\n }\r\n return $target\r\n },\r\n _getSourceElement: function() {\r\n var draggable = this._getSourceDraggable();\r\n return draggable._$sourceElement\r\n },\r\n _pointerDownHandler: function(e) {\r\n if (needSkipEvent(e)) {\r\n return\r\n }\r\n var position = {};\r\n var $element = this.$element();\r\n var dragDirection = this.option(\"dragDirection\");\r\n if (\"horizontal\" === dragDirection || \"both\" === dragDirection) {\r\n position.left = e.pageX - $element.offset().left + locate($element).left - getWidth($element) / 2\r\n }\r\n if (\"vertical\" === dragDirection || \"both\" === dragDirection) {\r\n position.top = e.pageY - $element.offset().top + locate($element).top - getHeight($element) / 2\r\n }\r\n this._move(position, $element);\r\n this._getAction(\"onDragMove\")(this._getEventArgs(e))\r\n },\r\n _isValidElement: function(event, $element) {\r\n var handle = this.option(\"handle\");\r\n var $target = $(event.originalEvent && event.originalEvent.target);\r\n if (handle && !$target.closest(handle).length) {\r\n return false\r\n }\r\n if (!$element.length) {\r\n return false\r\n }\r\n return !$element.is(\".dx-state-disabled, .dx-state-disabled *\")\r\n },\r\n _dragStartHandler: function(e) {\r\n var $element = this._getDraggableElement(e);\r\n if (!this._isValidElement(e, $element)) {\r\n e.cancel = true;\r\n return\r\n }\r\n if (this._$sourceElement) {\r\n return\r\n }\r\n var dragStartArgs = this._getDragStartArgs(e, $element);\r\n this._getAction(\"onDragStart\")(dragStartArgs);\r\n if (dragStartArgs.cancel) {\r\n e.cancel = true;\r\n return\r\n }\r\n this.option(\"itemData\", dragStartArgs.itemData);\r\n this._setSourceDraggable();\r\n this._$sourceElement = $element;\r\n var initialOffset = $element.offset();\r\n var $dragElement = this._$dragElement = this._createDragElement($element);\r\n this._toggleDraggingClass(true);\r\n this._toggleDragSourceClass(true);\r\n this._setGestureCoverCursor($dragElement.children());\r\n var isFixedPosition = \"fixed\" === $dragElement.css(\"position\");\r\n this._initPosition(extend({}, dragStartArgs, {\r\n dragElement: $dragElement.get(0),\r\n initialOffset: isFixedPosition && initialOffset\r\n }));\r\n var $area = this._getArea();\r\n var areaOffset = this._getAreaOffset($area);\r\n var boundOffset = this._getBoundOffset();\r\n var areaWidth = getOuterWidth($area);\r\n var areaHeight = getOuterHeight($area);\r\n var elementWidth = getWidth($dragElement);\r\n var elementHeight = getHeight($dragElement);\r\n var startOffset_left = $dragElement.offset().left - areaOffset.left,\r\n startOffset_top = $dragElement.offset().top - areaOffset.top;\r\n if ($area.length) {\r\n e.maxLeftOffset = startOffset_left - boundOffset.left;\r\n e.maxRightOffset = areaWidth - startOffset_left - elementWidth - boundOffset.right;\r\n e.maxTopOffset = startOffset_top - boundOffset.top;\r\n e.maxBottomOffset = areaHeight - startOffset_top - elementHeight - boundOffset.bottom\r\n }\r\n if (this.option(\"autoScroll\")) {\r\n this._startAnimator()\r\n }\r\n },\r\n _getAreaOffset: function($area) {\r\n var offset = $area && positionUtils.offset($area);\r\n return offset ? offset : {\r\n left: 0,\r\n top: 0\r\n }\r\n },\r\n _toggleDraggingClass: function(value) {\r\n this._$dragElement && this._$dragElement.toggleClass(this._addWidgetPrefix(\"dragging\"), value)\r\n },\r\n _toggleDragSourceClass: function(value, $element) {\r\n var $sourceElement = $element || this._$sourceElement;\r\n $sourceElement && $sourceElement.toggleClass(this._addWidgetPrefix(\"source\"), value)\r\n },\r\n _setGestureCoverCursor: function($element) {\r\n $(\".\".concat(GESTURE_COVER_CLASS)).css(\"cursor\", $element.css(\"cursor\"))\r\n },\r\n _getBoundOffset: function() {\r\n var boundOffset = this.option(\"boundOffset\");\r\n if (isFunction(boundOffset)) {\r\n boundOffset = boundOffset.call(this)\r\n }\r\n return quadToObject(boundOffset)\r\n },\r\n _getArea: function() {\r\n var area = this.option(\"boundary\");\r\n if (isFunction(area)) {\r\n area = area.call(this)\r\n }\r\n return $(area)\r\n },\r\n _getContainer: function() {\r\n var container = this.option(\"container\");\r\n if (void 0 === container) {\r\n container = viewPort()\r\n }\r\n return $(container)\r\n },\r\n _dragMoveHandler: function(e, scrollBy) {\r\n this._dragMoveArgs = e;\r\n if (!this._$dragElement) {\r\n e.cancel = true;\r\n return\r\n }\r\n var offset = e.offset;\r\n var startPosition = this._startPosition;\r\n this._move({\r\n left: startPosition.left + offset.x,\r\n top: startPosition.top + offset.y\r\n });\r\n if (!scrollBy) {\r\n this._updateScrollable(e)\r\n }\r\n var eventArgs = this._getEventArgs(e);\r\n this._getAction(\"onDragMove\")(eventArgs);\r\n if (true === eventArgs.cancel) {\r\n return\r\n }\r\n var targetDraggable = this._getTargetDraggable();\r\n targetDraggable.dragMove(e, scrollBy)\r\n },\r\n _updateScrollable: function(e) {\r\n if (this.option(\"autoScroll\")) {\r\n var mousePosition = getMousePosition(e);\r\n var allObjects = domAdapter.elementsFromPoint(mousePosition.x, mousePosition.y);\r\n this._verticalScrollHelper.updateScrollable(allObjects, mousePosition);\r\n this._horizontalScrollHelper.updateScrollable(allObjects, mousePosition)\r\n }\r\n },\r\n _getScrollable: function($element) {\r\n var $scrollable;\r\n $element.parents().toArray().some(parent => {\r\n var $parent = $(parent);\r\n if (this._horizontalScrollHelper.isScrollable($parent) || this._verticalScrollHelper.isScrollable($parent)) {\r\n $scrollable = $parent;\r\n return true\r\n }\r\n });\r\n return $scrollable\r\n },\r\n _defaultActionArgs: function() {\r\n var args = this.callBase.apply(this, arguments);\r\n var component = this.option(\"component\");\r\n if (component) {\r\n args.component = component;\r\n args.element = component.element()\r\n }\r\n return args\r\n },\r\n _getEventArgs: function(e) {\r\n var sourceDraggable = this._getSourceDraggable();\r\n var targetDraggable = this._getTargetDraggable();\r\n return {\r\n event: e,\r\n itemData: sourceDraggable.option(\"itemData\"),\r\n itemElement: getPublicElement(sourceDraggable._$sourceElement),\r\n fromComponent: sourceDraggable.option(\"component\") || sourceDraggable,\r\n toComponent: targetDraggable.option(\"component\") || targetDraggable,\r\n fromData: sourceDraggable.option(\"data\"),\r\n toData: targetDraggable.option(\"data\")\r\n }\r\n },\r\n _getDragStartArgs: function(e, $itemElement) {\r\n var args = this._getEventArgs(e);\r\n return {\r\n event: args.event,\r\n itemData: args.itemData,\r\n itemElement: $itemElement,\r\n fromData: args.fromData\r\n }\r\n },\r\n _revertItemToInitialPosition: function() {\r\n !this._dragElementIsCloned() && this._move(this._initialLocate, this._$sourceElement)\r\n },\r\n _dragEndHandler: function(e) {\r\n var d = new Deferred;\r\n var dragEndEventArgs = this._getEventArgs(e);\r\n var dropEventArgs = this._getEventArgs(e);\r\n var targetDraggable = this._getTargetDraggable();\r\n var needRevertPosition = true;\r\n try {\r\n this._getAction(\"onDragEnd\")(dragEndEventArgs)\r\n } finally {\r\n when(fromPromise(dragEndEventArgs.cancel)).done(cancel => {\r\n if (!cancel) {\r\n if (targetDraggable !== this) {\r\n targetDraggable._getAction(\"onDrop\")(dropEventArgs)\r\n }\r\n if (!dropEventArgs.cancel) {\r\n needRevertPosition = false;\r\n when(fromPromise(targetDraggable.dragEnd(dragEndEventArgs))).always(d.resolve);\r\n return\r\n }\r\n }\r\n d.resolve()\r\n }).fail(d.resolve);\r\n d.done(() => {\r\n if (needRevertPosition) {\r\n this._revertItemToInitialPosition()\r\n }\r\n this.reset();\r\n targetDraggable.reset();\r\n this._stopAnimator();\r\n this._horizontalScrollHelper.reset();\r\n this._verticalScrollHelper.reset();\r\n this._resetDragElement();\r\n this._resetSourceElement();\r\n this._resetTargetDraggable();\r\n this._resetSourceDraggable()\r\n })\r\n }\r\n },\r\n _isTargetOverAnotherDraggable: function(e) {\r\n var sourceDraggable = this._getSourceDraggable();\r\n if (this === sourceDraggable) {\r\n return false\r\n }\r\n var $dragElement = sourceDraggable._$dragElement;\r\n var $sourceDraggableElement = sourceDraggable.$element();\r\n var $targetDraggableElement = this.$element();\r\n var mousePosition = getMousePosition(e);\r\n var elements = domAdapter.elementsFromPoint(mousePosition.x, mousePosition.y);\r\n var firstWidgetElement = elements.filter(element => {\r\n var $element = $(element);\r\n if ($element.hasClass(this._addWidgetPrefix())) {\r\n return !$element.closest($dragElement).length\r\n }\r\n })[0];\r\n var $sourceElement = this._getSourceElement();\r\n var isTargetOverItself = firstWidgetElement === $sourceDraggableElement.get(0);\r\n var isTargetOverNestedDraggable = $(firstWidgetElement).closest($sourceElement).length;\r\n return !firstWidgetElement || firstWidgetElement === $targetDraggableElement.get(0) && !isTargetOverItself && !isTargetOverNestedDraggable\r\n },\r\n _dragEnterHandler: function(e) {\r\n this._fireDragEnterEvent(e);\r\n if (this._isTargetOverAnotherDraggable(e)) {\r\n this._setTargetDraggable()\r\n }\r\n var sourceDraggable = this._getSourceDraggable();\r\n sourceDraggable.dragEnter(e)\r\n },\r\n _dragLeaveHandler: function(e) {\r\n this._fireDragLeaveEvent(e);\r\n this._resetTargetDraggable();\r\n if (this !== this._getSourceDraggable()) {\r\n this.reset()\r\n }\r\n var sourceDraggable = this._getSourceDraggable();\r\n sourceDraggable.dragLeave(e)\r\n },\r\n _getAction: function(name) {\r\n return this[\"_\" + name + \"Action\"] || this._createActionByOption(name)\r\n },\r\n _getAnonymousTemplateName: function() {\r\n return ANONYMOUS_TEMPLATE_NAME\r\n },\r\n _initTemplates: function() {\r\n if (!this.option(\"contentTemplate\")) {\r\n return\r\n }\r\n this._templateManager.addDefaultTemplates({\r\n content: new EmptyTemplate\r\n });\r\n this.callBase.apply(this, arguments)\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this.$element().addClass(this._addWidgetPrefix());\r\n var transclude = this._templateManager.anonymousTemplateName === this.option(\"contentTemplate\");\r\n var template = this._getTemplateByOption(\"contentTemplate\");\r\n if (template) {\r\n $(template.render({\r\n container: this.element(),\r\n transclude: transclude\r\n }))\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n var name = args.name;\r\n switch (name) {\r\n case \"onDragStart\":\r\n case \"onDragMove\":\r\n case \"onDragEnd\":\r\n case \"onDrop\":\r\n case \"onDragEnter\":\r\n case \"onDragLeave\":\r\n this[\"_\" + name + \"Action\"] = this._createActionByOption(name);\r\n break;\r\n case \"dragTemplate\":\r\n case \"contentTemplate\":\r\n case \"container\":\r\n case \"clone\":\r\n break;\r\n case \"allowMoveByClick\":\r\n case \"dragDirection\":\r\n case \"disabled\":\r\n case \"boundary\":\r\n case \"filter\":\r\n case \"immediate\":\r\n this._resetDragElement();\r\n this._detachEventHandlers();\r\n this._attachEventHandlers();\r\n break;\r\n case \"autoScroll\":\r\n this._verticalScrollHelper.reset();\r\n this._horizontalScrollHelper.reset();\r\n break;\r\n case \"scrollSensitivity\":\r\n case \"scrollSpeed\":\r\n case \"boundOffset\":\r\n case \"handle\":\r\n case \"group\":\r\n case \"data\":\r\n case \"itemData\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _getTargetDraggable: function() {\r\n return targetDraggable || this\r\n },\r\n _getSourceDraggable: function() {\r\n return sourceDraggable || this\r\n },\r\n _setTargetDraggable: function() {\r\n var currentGroup = this.option(\"group\");\r\n var sourceDraggable = this._getSourceDraggable();\r\n if (currentGroup && currentGroup === sourceDraggable.option(\"group\")) {\r\n targetDraggable = this\r\n }\r\n },\r\n _setSourceDraggable: function() {\r\n sourceDraggable = this\r\n },\r\n _resetSourceDraggable: function() {\r\n sourceDraggable = null\r\n },\r\n _resetTargetDraggable: function() {\r\n targetDraggable = null\r\n },\r\n _dispose: function() {\r\n this.callBase();\r\n this._detachEventHandlers();\r\n this._resetDragElement();\r\n this._resetTargetDraggable();\r\n this._resetSourceDraggable();\r\n this._$sourceElement = null;\r\n this._stopAnimator()\r\n },\r\n _fireDragEnterEvent: function(sourceEvent) {\r\n var args = this._getEventArgs(sourceEvent);\r\n this._getAction(\"onDragEnter\")(args)\r\n },\r\n _fireDragLeaveEvent: function(sourceEvent) {\r\n var args = this._getEventArgs(sourceEvent);\r\n this._getAction(\"onDragLeave\")(args)\r\n }\r\n});\r\nregisterComponent(DRAGGABLE, Draggable);\r\nexport default Draggable;\r\n","/**\r\n * DevExtreme (esm/ui/sortable.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getHeight,\r\n getOuterHeight,\r\n getOuterWidth,\r\n getWidth\r\n} from \"../core/utils/size\";\r\nimport $ from \"../core/renderer\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport Draggable from \"./draggable\";\r\nimport {\r\n getPublicElement\r\n} from \"../core/element\";\r\nimport {\r\n getWindow\r\n} from \"../core/utils/window\";\r\nimport {\r\n getBoundingRect\r\n} from \"../core/utils/position\";\r\nimport {\r\n resetPosition\r\n} from \"../animation/translator\";\r\nimport fx from \"../animation/fx\";\r\nimport {\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nvar window = getWindow();\r\nvar SORTABLE = \"dxSortable\";\r\nvar PLACEHOLDER_CLASS = \"placeholder\";\r\nvar CLONE_CLASS = \"clone\";\r\nvar isElementVisible = itemElement => $(itemElement).is(\":visible\");\r\nvar animate = (element, config) => {\r\n var _config$to, _config$to2;\r\n if (!element) {\r\n return\r\n }\r\n var left = (null === (_config$to = config.to) || void 0 === _config$to ? void 0 : _config$to.left) || 0;\r\n var top = (null === (_config$to2 = config.to) || void 0 === _config$to2 ? void 0 : _config$to2.top) || 0;\r\n element.style.transform = \"translate(\".concat(left, \"px,\").concat(top, \"px)\");\r\n element.style.transition = fx.off ? \"\" : \"transform \".concat(config.duration, \"ms \").concat(config.easing)\r\n};\r\nvar stopAnimation = element => {\r\n if (!element) {\r\n return\r\n }\r\n element.style.transform = \"\";\r\n element.style.transition = \"\"\r\n};\r\n\r\nfunction getScrollableBoundary($scrollable) {\r\n var offset = $scrollable.offset();\r\n var style = $scrollable[0].style;\r\n var paddingLeft = parseFloat(style.paddingLeft) || 0;\r\n var paddingRight = parseFloat(style.paddingRight) || 0;\r\n var paddingTop = parseFloat(style.paddingTop) || 0;\r\n var width = $scrollable[0].clientWidth - (paddingLeft + paddingRight);\r\n var height = getHeight($scrollable);\r\n var left = offset.left + paddingLeft;\r\n var top = offset.top + paddingTop;\r\n return {\r\n left: left,\r\n right: left + width,\r\n top: top,\r\n bottom: top + height\r\n }\r\n}\r\nvar Sortable = Draggable.inherit({\r\n _init: function() {\r\n this.callBase();\r\n this._sourceScrollHandler = this._handleSourceScroll.bind(this);\r\n this._sourceScrollableInfo = null\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n clone: true,\r\n filter: \"> *\",\r\n itemOrientation: \"vertical\",\r\n dropFeedbackMode: \"push\",\r\n allowDropInsideItem: false,\r\n allowReordering: true,\r\n moveItemOnDrop: false,\r\n onDragChange: null,\r\n onAdd: null,\r\n onRemove: null,\r\n onReorder: null,\r\n onPlaceholderPrepared: null,\r\n animation: {\r\n type: \"slide\",\r\n duration: 300,\r\n easing: \"ease\"\r\n },\r\n fromIndex: null,\r\n toIndex: null,\r\n dropInsideItem: false,\r\n itemPoints: null,\r\n fromIndexOffset: 0,\r\n offset: 0,\r\n autoUpdate: false,\r\n draggableElementSize: 0\r\n })\r\n },\r\n reset: function() {\r\n this.option({\r\n dropInsideItem: false,\r\n toIndex: null,\r\n fromIndex: null,\r\n itemPoints: null,\r\n fromIndexOffset: 0,\r\n draggableElementSize: 0\r\n });\r\n if (this._$placeholderElement) {\r\n this._$placeholderElement.remove()\r\n }\r\n this._$placeholderElement = null;\r\n if (!this._isIndicateMode() && this._$modifiedItem) {\r\n this._$modifiedItem.css(\"marginBottom\", this._modifiedItemMargin);\r\n this._$modifiedItem = null\r\n }\r\n },\r\n _getPrevVisibleItem: function(items, index) {\r\n return items.slice(0, index).reverse().filter(isElementVisible)[0]\r\n },\r\n _dragStartHandler: function(e) {\r\n this.callBase.apply(this, arguments);\r\n if (true === e.cancel) {\r\n return\r\n }\r\n var $sourceElement = this._getSourceElement();\r\n this._updateItemPoints();\r\n this._subscribeToSourceScroll(e);\r\n this.option(\"fromIndex\", this._getElementIndex($sourceElement));\r\n this.option(\"fromIndexOffset\", this.option(\"offset\"))\r\n },\r\n _subscribeToSourceScroll: function(e) {\r\n var $scrollable = this._getScrollable($(e.target));\r\n if ($scrollable) {\r\n this._sourceScrollableInfo = {\r\n element: $scrollable,\r\n scrollLeft: $scrollable.scrollLeft(),\r\n scrollTop: $scrollable.scrollTop()\r\n };\r\n eventsEngine.on($scrollable, \"scroll\", this._sourceScrollHandler)\r\n }\r\n },\r\n _unsubscribeFromSourceScroll: function() {\r\n if (this._sourceScrollableInfo) {\r\n eventsEngine.off(this._sourceScrollableInfo.element, \"scroll\", this._sourceScrollHandler);\r\n this._sourceScrollableInfo = null\r\n }\r\n },\r\n _handleSourceScroll: function(e) {\r\n var sourceScrollableInfo = this._sourceScrollableInfo;\r\n if (sourceScrollableInfo) {\r\n [\"scrollLeft\", \"scrollTop\"].forEach(scrollProp => {\r\n if (e.target[scrollProp] !== sourceScrollableInfo[scrollProp]) {\r\n var scrollBy = e.target[scrollProp] - sourceScrollableInfo[scrollProp];\r\n this._correctItemPoints(scrollBy);\r\n this._movePlaceholder();\r\n sourceScrollableInfo[scrollProp] = e.target[scrollProp]\r\n }\r\n })\r\n }\r\n },\r\n _dragEnterHandler: function(e) {\r\n this.callBase.apply(this, arguments);\r\n this._subscribeToSourceScroll(e);\r\n if (this === this._getSourceDraggable()) {\r\n return\r\n }\r\n this._updateItemPoints();\r\n this.option(\"fromIndex\", -1);\r\n if (!this._isIndicateMode()) {\r\n var itemPoints = this.option(\"itemPoints\");\r\n var lastItemPoint = itemPoints[itemPoints.length - 1];\r\n if (lastItemPoint) {\r\n var $element = this.$element();\r\n var $sourceElement = this._getSourceElement();\r\n var isVertical = this._isVerticalOrientation();\r\n var sourceElementSize = isVertical ? getOuterHeight($sourceElement, true) : getOuterWidth($sourceElement, true);\r\n var scrollSize = $element.get(0)[isVertical ? \"scrollHeight\" : \"scrollWidth\"];\r\n var scrollPosition = $element.get(0)[isVertical ? \"scrollTop\" : \"scrollLeft\"];\r\n var positionProp = isVertical ? \"top\" : \"left\";\r\n var lastPointPosition = lastItemPoint[positionProp];\r\n var elementPosition = $element.offset()[positionProp];\r\n var freeSize = elementPosition + scrollSize - scrollPosition - lastPointPosition;\r\n if (freeSize < sourceElementSize) {\r\n if (isVertical) {\r\n var items = this._getItems();\r\n var $lastItem = $(this._getPrevVisibleItem(items));\r\n this._$modifiedItem = $lastItem;\r\n this._modifiedItemMargin = $lastItem.get(0).style.marginBottom;\r\n $lastItem.css(\"marginBottom\", sourceElementSize - freeSize);\r\n var $sortable = $lastItem.closest(\".dx-sortable\");\r\n var sortable = $sortable.data(\"dxScrollable\") || $sortable.data(\"dxScrollView\");\r\n sortable && sortable.update()\r\n }\r\n }\r\n }\r\n }\r\n },\r\n _dragLeaveHandler: function() {\r\n this.callBase.apply(this, arguments);\r\n this._unsubscribeFromSourceScroll()\r\n },\r\n dragEnter: function() {\r\n if (this !== this._getTargetDraggable()) {\r\n this.option(\"toIndex\", -1)\r\n }\r\n },\r\n dragLeave: function() {\r\n if (this !== this._getTargetDraggable()) {\r\n this.option(\"toIndex\", this.option(\"fromIndex\"))\r\n }\r\n },\r\n _allowDrop: function(event) {\r\n var targetDraggable = this._getTargetDraggable();\r\n var $targetDraggable = targetDraggable.$element();\r\n var $scrollable = this._getScrollable($targetDraggable);\r\n if ($scrollable) {\r\n var {\r\n left: left,\r\n right: right,\r\n top: top,\r\n bottom: bottom\r\n } = getScrollableBoundary($scrollable);\r\n var toIndex = this.option(\"toIndex\");\r\n var itemPoints = this.option(\"itemPoints\");\r\n var itemPoint = null === itemPoints || void 0 === itemPoints ? void 0 : itemPoints.filter(item => item.index === toIndex)[0];\r\n if (itemPoint && void 0 !== itemPoint.top) {\r\n var isVertical = this._isVerticalOrientation();\r\n if (isVertical) {\r\n return top <= itemPoint.top && itemPoint.top <= bottom\r\n } else {\r\n return left <= itemPoint.left && itemPoint.left <= right\r\n }\r\n }\r\n }\r\n return true\r\n },\r\n dragEnd: function(sourceEvent) {\r\n var _sourceEvent$fromComp, _sourceEvent$fromComp2, _sourceEvent$toCompon, _sourceEvent$toCompon2;\r\n null === (_sourceEvent$fromComp = (_sourceEvent$fromComp2 = sourceEvent.fromComponent)._unsubscribeFromSourceScroll) || void 0 === _sourceEvent$fromComp ? void 0 : _sourceEvent$fromComp.call(_sourceEvent$fromComp2);\r\n null === (_sourceEvent$toCompon = (_sourceEvent$toCompon2 = sourceEvent.toComponent)._unsubscribeFromSourceScroll) || void 0 === _sourceEvent$toCompon ? void 0 : _sourceEvent$toCompon.call(_sourceEvent$toCompon2);\r\n var $sourceElement = this._getSourceElement();\r\n var sourceDraggable = this._getSourceDraggable();\r\n var isSourceDraggable = sourceDraggable.NAME !== this.NAME;\r\n var toIndex = this.option(\"toIndex\");\r\n var event = sourceEvent.event;\r\n var allowDrop = this._allowDrop(event);\r\n if (null !== toIndex && toIndex >= 0 && allowDrop) {\r\n var cancelAdd;\r\n var cancelRemove;\r\n if (sourceDraggable !== this) {\r\n cancelAdd = this._fireAddEvent(event);\r\n if (!cancelAdd) {\r\n cancelRemove = this._fireRemoveEvent(event)\r\n }\r\n }\r\n if (isSourceDraggable) {\r\n resetPosition($sourceElement)\r\n }\r\n if (this.option(\"moveItemOnDrop\")) {\r\n !cancelAdd && this._moveItem($sourceElement, toIndex, cancelRemove)\r\n }\r\n if (sourceDraggable === this) {\r\n return this._fireReorderEvent(event)\r\n }\r\n }\r\n return (new Deferred).resolve()\r\n },\r\n dragMove: function(e) {\r\n var itemPoints = this.option(\"itemPoints\");\r\n if (!itemPoints) {\r\n return\r\n }\r\n var isVertical = this._isVerticalOrientation();\r\n var axisName = isVertical ? \"top\" : \"left\";\r\n var cursorPosition = isVertical ? e.pageY : e.pageX;\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var itemPoint;\r\n for (var i = itemPoints.length - 1; i >= 0; i--) {\r\n var centerPosition = itemPoints[i + 1] && (itemPoints[i][axisName] + itemPoints[i + 1][axisName]) / 2;\r\n if ((!isVertical && rtlEnabled ? cursorPosition > centerPosition : centerPosition > cursorPosition) || void 0 === centerPosition) {\r\n itemPoint = itemPoints[i]\r\n } else {\r\n break\r\n }\r\n }\r\n if (itemPoint) {\r\n this._updatePlaceholderPosition(e, itemPoint);\r\n if (this._verticalScrollHelper.isScrolling() && this._isIndicateMode()) {\r\n this._movePlaceholder()\r\n }\r\n }\r\n },\r\n _isIndicateMode: function() {\r\n return \"indicate\" === this.option(\"dropFeedbackMode\") || this.option(\"allowDropInsideItem\")\r\n },\r\n _createPlaceholder: function() {\r\n var $placeholderContainer;\r\n if (this._isIndicateMode()) {\r\n $placeholderContainer = $(\"
\").addClass(this._addWidgetPrefix(PLACEHOLDER_CLASS)).insertBefore(this._getSourceDraggable()._$dragElement)\r\n }\r\n this._$placeholderElement = $placeholderContainer;\r\n return $placeholderContainer\r\n },\r\n _getItems: function() {\r\n var itemsSelector = this._getItemsSelector();\r\n return this._$content().find(itemsSelector).not(\".\" + this._addWidgetPrefix(PLACEHOLDER_CLASS)).not(\".\" + this._addWidgetPrefix(CLONE_CLASS)).toArray()\r\n },\r\n _allowReordering: function() {\r\n var sourceDraggable = this._getSourceDraggable();\r\n var targetDraggable = this._getTargetDraggable();\r\n return sourceDraggable !== targetDraggable || this.option(\"allowReordering\")\r\n },\r\n _isValidPoint: function(visibleIndex, draggableVisibleIndex, dropInsideItem) {\r\n var allowDropInsideItem = this.option(\"allowDropInsideItem\");\r\n var allowReordering = dropInsideItem || this._allowReordering();\r\n if (!allowReordering && (0 !== visibleIndex || !allowDropInsideItem)) {\r\n return false\r\n }\r\n if (!this._isIndicateMode()) {\r\n return true\r\n }\r\n return -1 === draggableVisibleIndex || visibleIndex !== draggableVisibleIndex && (dropInsideItem || visibleIndex !== draggableVisibleIndex + 1)\r\n },\r\n _getItemPoints: function() {\r\n var result = [];\r\n var $item;\r\n var offset;\r\n var itemWidth;\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var isVertical = this._isVerticalOrientation();\r\n var itemElements = this._getItems();\r\n var visibleItemElements = itemElements.filter(isElementVisible);\r\n var visibleItemCount = visibleItemElements.length;\r\n var $draggableItem = this._getDraggableElement();\r\n var draggableVisibleIndex = visibleItemElements.indexOf($draggableItem.get(0));\r\n if (visibleItemCount) {\r\n for (var i = 0; i <= visibleItemCount; i++) {\r\n var needCorrectLeftPosition = !isVertical && rtlEnabled ^ i === visibleItemCount;\r\n var needCorrectTopPosition = isVertical && i === visibleItemCount;\r\n if (i < visibleItemCount) {\r\n $item = $(visibleItemElements[i]);\r\n offset = $item.offset();\r\n itemWidth = getOuterWidth($item)\r\n }\r\n result.push({\r\n dropInsideItem: false,\r\n left: offset.left + (needCorrectLeftPosition ? itemWidth : 0),\r\n top: offset.top + (needCorrectTopPosition ? result[i - 1].height : 0),\r\n index: i === visibleItemCount ? itemElements.length : itemElements.indexOf($item.get(0)),\r\n $item: $item,\r\n width: getOuterWidth($item),\r\n height: getOuterHeight($item),\r\n isValid: this._isValidPoint(i, draggableVisibleIndex)\r\n })\r\n }\r\n if (this.option(\"allowDropInsideItem\")) {\r\n var points = result;\r\n result = [];\r\n for (var _i = 0; _i < points.length; _i++) {\r\n result.push(points[_i]);\r\n if (points[_i + 1]) {\r\n result.push(extend({}, points[_i], {\r\n dropInsideItem: true,\r\n top: Math.floor((points[_i].top + points[_i + 1].top) / 2),\r\n left: Math.floor((points[_i].left + points[_i + 1].left) / 2),\r\n isValid: this._isValidPoint(_i, draggableVisibleIndex, true)\r\n }))\r\n }\r\n }\r\n }\r\n } else {\r\n result.push({\r\n dropInsideItem: false,\r\n index: 0,\r\n isValid: true\r\n })\r\n }\r\n return result\r\n },\r\n _updateItemPoints: function(forceUpdate) {\r\n if (forceUpdate || this.option(\"autoUpdate\") || !this.option(\"itemPoints\")) {\r\n this.option(\"itemPoints\", this._getItemPoints())\r\n }\r\n },\r\n _correctItemPoints: function(scrollBy) {\r\n var itemPoints = this.option(\"itemPoints\");\r\n if (scrollBy && itemPoints && !this.option(\"autoUpdate\")) {\r\n var isVertical = this._isVerticalOrientation();\r\n var positionPropName = isVertical ? \"top\" : \"left\";\r\n itemPoints.forEach(itemPoint => {\r\n itemPoint[positionPropName] -= scrollBy\r\n })\r\n }\r\n },\r\n _getElementIndex: function($itemElement) {\r\n return this._getItems().indexOf($itemElement.get(0))\r\n },\r\n _getDragTemplateArgs: function($element) {\r\n var args = this.callBase.apply(this, arguments);\r\n args.model.fromIndex = this._getElementIndex($element);\r\n return args\r\n },\r\n _togglePlaceholder: function(value) {\r\n this._$placeholderElement && this._$placeholderElement.toggle(value)\r\n },\r\n _isVerticalOrientation: function() {\r\n return \"vertical\" === this.option(\"itemOrientation\")\r\n },\r\n _normalizeToIndex: function(toIndex, dropInsideItem) {\r\n var isAnotherDraggable = this._getSourceDraggable() !== this._getTargetDraggable();\r\n var fromIndex = this.option(\"fromIndex\");\r\n if (null === toIndex) {\r\n return fromIndex\r\n }\r\n return Math.max(isAnotherDraggable || fromIndex >= toIndex || dropInsideItem ? toIndex : toIndex - 1, 0)\r\n },\r\n _updatePlaceholderPosition: function(e, itemPoint) {\r\n var sourceDraggable = this._getSourceDraggable();\r\n var toIndex = this._normalizeToIndex(itemPoint.index, itemPoint.dropInsideItem);\r\n var eventArgs = extend(this._getEventArgs(e), {\r\n toIndex: toIndex,\r\n dropInsideItem: itemPoint.dropInsideItem\r\n });\r\n itemPoint.isValid && this._getAction(\"onDragChange\")(eventArgs);\r\n if (eventArgs.cancel || !itemPoint.isValid) {\r\n if (!itemPoint.isValid) {\r\n this.option({\r\n dropInsideItem: false,\r\n toIndex: null\r\n })\r\n }\r\n return\r\n }\r\n this.option({\r\n dropInsideItem: itemPoint.dropInsideItem,\r\n toIndex: itemPoint.index\r\n });\r\n this._getAction(\"onPlaceholderPrepared\")(extend(this._getEventArgs(e), {\r\n placeholderElement: getPublicElement(this._$placeholderElement),\r\n dragElement: getPublicElement(sourceDraggable._$dragElement)\r\n }));\r\n this._updateItemPoints()\r\n },\r\n _makeWidthCorrection: function($item, width) {\r\n this._$scrollable = this._getScrollable($item);\r\n if (this._$scrollable && getWidth(this._$scrollable) < width) {\r\n var scrollableWidth = getWidth(this._$scrollable);\r\n var offsetLeft = $item.offset().left - this._$scrollable.offset().left;\r\n var offsetRight = scrollableWidth - getOuterWidth($item) - offsetLeft;\r\n if (offsetLeft > 0) {\r\n width = scrollableWidth - offsetLeft\r\n } else if (offsetRight > 0) {\r\n width = scrollableWidth - offsetRight\r\n } else {\r\n width = scrollableWidth\r\n }\r\n }\r\n return width\r\n },\r\n _updatePlaceholderSizes: function($placeholderElement, itemElement) {\r\n var dropInsideItem = this.option(\"dropInsideItem\");\r\n var $item = $(itemElement);\r\n var isVertical = this._isVerticalOrientation();\r\n var width = \"\";\r\n var height = \"\";\r\n $placeholderElement.toggleClass(this._addWidgetPrefix(\"placeholder-inside\"), dropInsideItem);\r\n if (isVertical || dropInsideItem) {\r\n width = getOuterWidth($item)\r\n }\r\n if (!isVertical || dropInsideItem) {\r\n height = getOuterHeight($item)\r\n }\r\n width = this._makeWidthCorrection($item, width);\r\n $placeholderElement.css({\r\n width: width,\r\n height: height\r\n })\r\n },\r\n _moveItem: function($itemElement, index, cancelRemove) {\r\n var $prevTargetItemElement;\r\n var $itemElements = this._getItems();\r\n var $targetItemElement = $itemElements[index];\r\n var sourceDraggable = this._getSourceDraggable();\r\n if (cancelRemove) {\r\n $itemElement = $itemElement.clone();\r\n sourceDraggable._toggleDragSourceClass(false, $itemElement)\r\n }\r\n if (!$targetItemElement) {\r\n $prevTargetItemElement = $itemElements[index - 1]\r\n }\r\n this._moveItemCore($itemElement, $targetItemElement, $prevTargetItemElement)\r\n },\r\n _moveItemCore: function($targetItem, item, prevItem) {\r\n if (!item && !prevItem) {\r\n $targetItem.appendTo(this.$element())\r\n } else if (prevItem) {\r\n $targetItem.insertAfter($(prevItem))\r\n } else {\r\n $targetItem.insertBefore($(item))\r\n }\r\n },\r\n _getDragStartArgs: function(e, $itemElement) {\r\n return extend(this.callBase.apply(this, arguments), {\r\n fromIndex: this._getElementIndex($itemElement)\r\n })\r\n },\r\n _getEventArgs: function(e) {\r\n var sourceDraggable = this._getSourceDraggable();\r\n var targetDraggable = this._getTargetDraggable();\r\n var dropInsideItem = targetDraggable.option(\"dropInsideItem\");\r\n return extend(this.callBase.apply(this, arguments), {\r\n fromIndex: sourceDraggable.option(\"fromIndex\"),\r\n toIndex: this._normalizeToIndex(targetDraggable.option(\"toIndex\"), dropInsideItem),\r\n dropInsideItem: dropInsideItem\r\n })\r\n },\r\n _optionChanged: function(args) {\r\n var name = args.name;\r\n switch (name) {\r\n case \"onDragChange\":\r\n case \"onPlaceholderPrepared\":\r\n case \"onAdd\":\r\n case \"onRemove\":\r\n case \"onReorder\":\r\n this[\"_\" + name + \"Action\"] = this._createActionByOption(name);\r\n break;\r\n case \"itemOrientation\":\r\n case \"allowDropInsideItem\":\r\n case \"moveItemOnDrop\":\r\n case \"dropFeedbackMode\":\r\n case \"itemPoints\":\r\n case \"animation\":\r\n case \"allowReordering\":\r\n case \"fromIndexOffset\":\r\n case \"offset\":\r\n case \"draggableElementSize\":\r\n case \"autoUpdate\":\r\n break;\r\n case \"fromIndex\":\r\n [false, true].forEach(isDragSource => {\r\n var fromIndex = isDragSource ? args.value : args.previousValue;\r\n if (null !== fromIndex) {\r\n var $fromElement = $(this._getItems()[fromIndex]);\r\n this._toggleDragSourceClass(isDragSource, $fromElement)\r\n }\r\n });\r\n break;\r\n case \"dropInsideItem\":\r\n this._optionChangedDropInsideItem(args);\r\n break;\r\n case \"toIndex\":\r\n this._optionChangedToIndex(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _optionChangedDropInsideItem: function() {\r\n if (this._isIndicateMode() && this._$placeholderElement) {\r\n this._movePlaceholder()\r\n }\r\n },\r\n _isPositionVisible: function(position) {\r\n var $element = this.$element();\r\n var scrollContainer;\r\n if (\"hidden\" !== $element.css(\"overflow\")) {\r\n scrollContainer = $element.get(0)\r\n } else {\r\n $element.parents().each((function() {\r\n if (\"visible\" !== $(this).css(\"overflow\")) {\r\n scrollContainer = this;\r\n return false\r\n }\r\n }))\r\n }\r\n if (scrollContainer) {\r\n var clientRect = getBoundingRect(scrollContainer);\r\n var isVerticalOrientation = this._isVerticalOrientation();\r\n var start = isVerticalOrientation ? \"top\" : \"left\";\r\n var end = isVerticalOrientation ? \"bottom\" : \"right\";\r\n var pageOffset = isVerticalOrientation ? window.pageYOffset : window.pageXOffset;\r\n if (position[start] < clientRect[start] + pageOffset || position[start] > clientRect[end] + pageOffset) {\r\n return false\r\n }\r\n }\r\n return true\r\n },\r\n _optionChangedToIndex: function(args) {\r\n var toIndex = args.value;\r\n if (this._isIndicateMode()) {\r\n var showPlaceholder = null !== toIndex && toIndex >= 0;\r\n this._togglePlaceholder(showPlaceholder);\r\n if (showPlaceholder) {\r\n this._movePlaceholder()\r\n }\r\n } else {\r\n this._moveItems(args.previousValue, args.value, args.fullUpdate)\r\n }\r\n },\r\n update: function() {\r\n if (null === this.option(\"fromIndex\") && null === this.option(\"toIndex\")) {\r\n return\r\n }\r\n this._updateItemPoints(true);\r\n this._updateDragSourceClass();\r\n var toIndex = this.option(\"toIndex\");\r\n this._optionChangedToIndex({\r\n value: toIndex,\r\n fullUpdate: true\r\n })\r\n },\r\n _updateDragSourceClass: function() {\r\n var fromIndex = this._getActualFromIndex();\r\n var $fromElement = $(this._getItems()[fromIndex]);\r\n if ($fromElement.length) {\r\n this._$sourceElement = $fromElement;\r\n this._toggleDragSourceClass(true, $fromElement)\r\n }\r\n },\r\n _makeLeftCorrection: function(left, leftMargin) {\r\n var $scrollable = this._$scrollable;\r\n if ($scrollable && this._isVerticalOrientation() && $scrollable.scrollLeft() > leftMargin) {\r\n left += $scrollable.scrollLeft() - leftMargin\r\n }\r\n return left\r\n },\r\n _movePlaceholder: function() {\r\n var $placeholderElement = this._$placeholderElement || this._createPlaceholder();\r\n if (!$placeholderElement) {\r\n return\r\n }\r\n var items = this._getItems();\r\n var toIndex = this.option(\"toIndex\");\r\n var isVerticalOrientation = this._isVerticalOrientation();\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var dropInsideItem = this.option(\"dropInsideItem\");\r\n var position = null;\r\n var leftMargin = 0;\r\n var itemElement = items[toIndex];\r\n if (itemElement) {\r\n var $itemElement = $(itemElement);\r\n position = $itemElement.offset();\r\n leftMargin = parseFloat($itemElement.css(\"marginLeft\"));\r\n if (!isVerticalOrientation && rtlEnabled && !dropInsideItem) {\r\n position.left += getOuterWidth($itemElement, true)\r\n }\r\n } else {\r\n var prevVisibleItemElement = itemElement = this._getPrevVisibleItem(items, toIndex);\r\n if (prevVisibleItemElement) {\r\n position = $(prevVisibleItemElement).offset();\r\n if (isVerticalOrientation) {\r\n position.top += getOuterHeight(prevVisibleItemElement, true)\r\n } else if (!rtlEnabled) {\r\n position.left += getOuterWidth(prevVisibleItemElement, true)\r\n }\r\n }\r\n }\r\n this._updatePlaceholderSizes($placeholderElement, itemElement);\r\n if (position && !this._isPositionVisible(position)) {\r\n position = null\r\n }\r\n if (position) {\r\n position.left = this._makeLeftCorrection(position.left, leftMargin);\r\n this._move(position, $placeholderElement)\r\n }\r\n $placeholderElement.toggle(!!position)\r\n },\r\n _getPositions: function(items, elementSize, fromIndex, toIndex) {\r\n var positions = [];\r\n for (var i = 0; i < items.length; i++) {\r\n var position = 0;\r\n if (null === toIndex || null === fromIndex) {\r\n positions.push(position);\r\n continue\r\n }\r\n if (-1 === fromIndex) {\r\n if (i >= toIndex) {\r\n position = elementSize\r\n }\r\n } else if (-1 === toIndex) {\r\n if (i > fromIndex) {\r\n position = -elementSize\r\n }\r\n } else if (fromIndex < toIndex) {\r\n if (i > fromIndex && i < toIndex) {\r\n position = -elementSize\r\n }\r\n } else if (fromIndex > toIndex) {\r\n if (i >= toIndex && i < fromIndex) {\r\n position = elementSize\r\n }\r\n }\r\n positions.push(position)\r\n }\r\n return positions\r\n },\r\n _getDraggableElementSize: function(isVerticalOrientation) {\r\n var $draggableItem = this._getDraggableElement();\r\n var size = this.option(\"draggableElementSize\");\r\n if (!size) {\r\n size = isVerticalOrientation ? (getOuterHeight($draggableItem) + getOuterHeight($draggableItem, true)) / 2 : (getOuterWidth($draggableItem) + getOuterWidth($draggableItem, true)) / 2;\r\n if (!this.option(\"autoUpdate\")) {\r\n this.option(\"draggableElementSize\", size)\r\n }\r\n }\r\n return size\r\n },\r\n _getActualFromIndex: function() {\r\n var {\r\n fromIndex: fromIndex,\r\n fromIndexOffset: fromIndexOffset,\r\n offset: offset\r\n } = this.option();\r\n return null == fromIndex ? null : fromIndex + fromIndexOffset - offset\r\n },\r\n _moveItems: function(prevToIndex, toIndex, fullUpdate) {\r\n var fromIndex = this._getActualFromIndex();\r\n var isVerticalOrientation = this._isVerticalOrientation();\r\n var positionPropName = isVerticalOrientation ? \"top\" : \"left\";\r\n var elementSize = this._getDraggableElementSize(isVerticalOrientation);\r\n var items = this._getItems();\r\n var prevPositions = this._getPositions(items, elementSize, fromIndex, prevToIndex);\r\n var positions = this._getPositions(items, elementSize, fromIndex, toIndex);\r\n var animationConfig = this.option(\"animation\");\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n for (var i = 0; i < items.length; i++) {\r\n var itemElement = items[i];\r\n var prevPosition = prevPositions[i];\r\n var position = positions[i];\r\n if (null === toIndex || null === fromIndex) {\r\n stopAnimation(itemElement)\r\n } else if (prevPosition !== position || fullUpdate && position) {\r\n animate(itemElement, extend({}, animationConfig, {\r\n to: {\r\n [positionPropName]: !isVerticalOrientation && rtlEnabled ? -position : position\r\n }\r\n }))\r\n }\r\n }\r\n },\r\n _toggleDragSourceClass: function(value, $element) {\r\n var $sourceElement = $element || this._$sourceElement;\r\n this.callBase.apply(this, arguments);\r\n if (!this._isIndicateMode()) {\r\n $sourceElement && $sourceElement.toggleClass(this._addWidgetPrefix(\"source-hidden\"), value)\r\n }\r\n },\r\n _dispose: function() {\r\n this.reset();\r\n this.callBase()\r\n },\r\n _fireAddEvent: function(sourceEvent) {\r\n var args = this._getEventArgs(sourceEvent);\r\n this._getAction(\"onAdd\")(args);\r\n return args.cancel\r\n },\r\n _fireRemoveEvent: function(sourceEvent) {\r\n var sourceDraggable = this._getSourceDraggable();\r\n var args = this._getEventArgs(sourceEvent);\r\n sourceDraggable._getAction(\"onRemove\")(args);\r\n return args.cancel\r\n },\r\n _fireReorderEvent: function(sourceEvent) {\r\n var args = this._getEventArgs(sourceEvent);\r\n this._getAction(\"onReorder\")(args);\r\n return args.promise || (new Deferred).resolve()\r\n }\r\n});\r\nregisterComponent(SORTABLE, Sortable);\r\nexport default Sortable;\r\n"],"sourceRoot":""}