{"version":3,"sources":["kendo.scheduler.monthview.js"],"names":["f","define","$","shiftArray","array","idx","slice","concat","firstVisibleMonthDay","date","calendarInfo","firstDay","firstVisibleDay","Date","getFullYear","getMonth","getHours","getMinutes","getSeconds","getMilliseconds","getDay","kendo","setTime","MS_PER_DAY","isInDateRange","value","min","max","msValue","msMin","msMax","window","ui","SchedulerView","NS","extend","getDate","NUMBER_OF_ROWS","NUMBER_OF_COLUMNS","DAY_TEMPLATE","template","EVENT_WRAPPER_STRING","EVENT_TEMPLATE","MORE_BUTTON_TEMPLATE","MonthGroupedView","Class","init","view","this","_view","_verticalRowCountForLevel","level","_rowCountForLevel","_horizontalGroupCountForLevel","_columnCountForLevel","_getCalendarRowsLength","cellsPerRow","cellCount","_createRows","start","startIdx","horizontalGroupCount","verticalGroupIndex","groupIdx","isVerticallyGrouped","_isVerticallyGrouped","html","_createRow","_adjustStartDate","addDays","_getContent","content","startDate","resources","_getTimeSlotByPosition","x","y","groupIndex","group","groups","daySlotByPosition","_nextSlotStartDate","nextDay","_createRowsLayout","rows","groupHeaderTemplate","_createVerticalColumnsLayout","columns","_createColumnsLayout","_verticalGroupCount","_horizontalGroupCount","_columnOffsetForResource","_positionEvent","event","range","rangeCount","end","rangeIndex","occurrence","isMobilePhoneView","_isMobilePhoneView","endDate","clone","head","tail","_positionMobileEvent","_createEventElement","_addDaySlotCollections","groupCount","tableRows","rowMultiplier","rowIndex","collection","tableRow","cells","cellMultiplier","cellIndex","cell","columnCount","rowCount","addDaySlotCollection","children","setAttribute","addDaySlot","_changePeriodGroupIndex","reverse","length","_createResizeHint","left","startSlot","offsetLeft","top","offsetTop","width","innerWidth","height","clientHeight","hint","fn","call","_appendResizeHint","_createMoveHint","endSlot","css","firstChildHeight","options","eventHeight","index","addClass","_appendMoveHint","MonthGroupedByDateView","verticalStart","dateIdx","_groupCount","isLastRow","cellIdx","_createDateLayout","dataIndex","obj","resource","configuration","data","dataSource","text","htmlEncode","getter","dataTextField","color","dataColorField","field","title","name","dataValueField","className","push","subColumns","i","currentSlot","dateRange","startIndex","endIndex","_slots","daySlotRanges","dateIndex","currentTableIndex","currentCellIndex","currentGroupIndex","_daySlotCollections","vertical","selectionGroupIndex","slotIdx","slot","offsetWidth","offsetHeight","scheduler","MonthView","element","that","_groupedView","_getGroupedView","_templates","_editable","_renderLayout","_groups","_isGroupedByDate","_updateDirection","selection","ranges","multiple","isSameSlot","isSameCollection","updateDirection","collectionIndex","backward","_changeDate","previous","collections","slotIndex","_getCollections","daySlotCollectionCount","_getNextHorizontalRange","method","horizontalRange","isVertical","_getNextVerticalRange","verticalRange","_changeViewPeriod","newStart","newEnd","pad","_isInRange","events","_continuousSlot","continuousSlot","_changeGroupContinuously","lastGroupIndex","_normalizeHorizontalSelection","_normalizeVerticalSelection","settings","Template","templateSettings","eventTemplate","_eventTmpl","dayTemplate","dateForTitle","format","selectedDateFormat","_firstDayOfMonth","_lastDayOfMonth","shortDateForTitle","selectedShortDateFormat","nextDate","previousDate","previousDay","_startDate","_endDate","firstDayOfMonth","lastDayOfMonth","createLayout","_layout","_content","refreshLayout","on","e","offset","currentTarget","_slotByPosition","preventDefault","trigger","editable","_isMobile","_touchEditable","_mouseEditable","uid","closest","attr","create","resourceInfo","_resourceBySlot","eventInfo","isAllDay","update","threshold","support","mobileOS","android","_addUserEvents","UserEvents","useClickAsTap","browser","edge","filter","tap","_scrolling","target","_editUserEvents","selectionByElement","columnLevel","columnLevels","rowLevel","rowLevels","verticalGroupIdx","verticalGroupCount","groupedView","groupedResources","_createCalendar","find","calendarRowsLength","rowIdx","weekStartDates","_slotIndices","_weekStartDates","classes","isToday","getTime","inner","weekDayNames","days","namesShort","names","map","isMobile","showDelete","destroy","resizable","resize","ns","eventResources","inverseColor","_shouldInverseResourceColor","messages","angular","elements","dataItem","_isInDateSlot","slotStart","firstSlot","slotEnd","lastSlot","startTime","toUtcTime","endTime","_slotIndex","slotRange","eventCount","container","collidingEvents","createRows","at","firstChildTop","appendChild","addEvent","_continuousEvents","rightOffset","rowEvents","eventTop","j","eventLength","Math","style","more","clientWidth","appendTo","scrollTop","scrollLeft","ceil","_resizeHint","add","_updateResizeHint","_removeResizeHint","first","toString","timezone","toLocalDate","last","_updateMoveHint","distance","duration","_removeMoveHint","_moveHint","getElementsByTagName","_addResourceView","MS_PER_HOUR","floor","moreButtonHeight","render","remove","Query","sort","dir","toArray","_renderGroups","_renderEvents","rangeStart","rangeEnd","slotRanges","setDate","middle","itemIdx","tmp","_resourceValue","operator","groupEqFilter","table","removeClass","off","jQuery","amd","a1","a2","a3"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;CAwBC,SAAUA,EAAGC,QACVA,OAAO,6BAA8B,wBAAyBD,IAChE,WA6kCE,MApkCC,UAAUE,GAojCP,QAASC,GAAWC,EAAOC,GACvB,MAAOD,GAAME,MAAMD,GAAKE,OAAOH,EAAME,MAAM,EAAGD,IAElD,QAASG,GAAqBC,EAAMC,GAEhC,IADA,GAAIC,GAAWD,EAAaC,SAAUC,EAAkB,GAAIC,MAAKJ,EAAKK,cAAeL,EAAKM,WAAY,EAAGN,EAAKO,WAAYP,EAAKQ,aAAcR,EAAKS,aAAcT,EAAKU,mBAC9JP,EAAgBQ,UAAYT,GAC/BU,EAAMZ,KAAKa,QAAQV,KAAsBW,EAE7C,OAAOX,GAEX,QAASY,GAAcC,EAAOC,EAAKC,GAC/B,GAA8BC,GAA1BC,EAAQH,EAAKI,EAAQH,CAEzB,OADAC,GAAUH,EACHG,GAAWC,GAASD,GAAWE,EAjkC7C,GACOT,GAAQU,OAAOV,MAAOW,EAAKX,EAAMW,GAAIC,EAAgBD,EAAGC,cAAeC,EAAK,kBAAmBC,EAASjC,EAAEiC,OAAQC,EAAUf,EAAMZ,KAAK2B,QAASb,EAAaF,EAAMZ,KAAKc,WAAYc,EAAiB,EAAGC,EAAoB,EAAGC,EAAelB,EAAMmB,SAAS,uEAAwEC,EAAuB,0gCAAgrCC,EAAiBrB,EAAMmB,SAAS,oGAC5iDG,EAAuBtB,EAAMmB,SAAS,mHACtCI,EAAmBvB,EAAMwB,MAAMV,QAC/BW,KAAM,SAAUC,GACZC,KAAKC,MAAQF,GAEjBG,0BAA2B,SAAUC,GACjC,GAAIJ,GAAOC,KAAKC,KAChB,OAAOF,GAAKK,kBAAkBD,IAElCE,8BAA+B,SAAUF,GACrC,GAAIJ,GAAOC,KAAKC,KAChB,OAAOF,GAAKO,qBAAqBH,IAErCI,uBAAwB,SAAUC,EAAaC,GAC3C,MAAOA,GAAYD,GAEvBE,YAAa,SAAUC,EAAOC,EAAUC,EAAsBC,GAAjD,GAKAC,GAJLhB,EAAOC,KAAKC,MACZO,EAAclB,EACd0B,EAAsBjB,EAAKkB,uBAC3BC,EAAO,EACX,KAASH,EAAW,EAAGA,EAAWF,EAAsBE,IACpDG,GAAQnB,EAAKoB,WAAWR,EAAOC,EAAUJ,EAAaQ,EAAsBF,EAAqBC,EAErG,OAAOG,IAEXE,iBAAkB,SAAUT,GACxB,MAAOtC,GAAMZ,KAAK4D,QAAQV,EAAOrB,IAErCgC,YAAa,SAAUC,EAASC,EAAWC,GACvC,MAAOF,IACH9D,KAAM+D,EACNC,UAAWA,KAGnBC,uBAAwB,SAAUC,EAAGC,EAAGC,GACpC,GAAIC,GAAQ9B,KAAKC,MAAM8B,OAAOF,EAC9B,OAAOC,GAAME,kBAAkBL,EAAGC,IAEtCK,mBAAoB,SAAUT,GAC1B,MAAOnD,GAAMZ,KAAKyE,QAAQV,IAE9BW,kBAAmB,SAAUV,EAAWW,EAAMC,GAC1C,GAAItC,GAAOC,KAAKC,KAChB,OAAOF,GAAKoC,kBAAkBV,EAAWW,EAAMC,IAEnDC,6BAA8B,SAAUb,EAAWW,EAAMC,EAAqBE,GAC1E,MAAOA,IAEXC,qBAAsB,SAAUf,EAAWc,EAASF,GAChD,GAAItC,GAAOC,KAAKC,KAChB,OAAOF,GAAKyC,qBAAqBf,EAAWc,EAASF,IAEzDI,oBAAqB,SAAUtC,GAC3B,GAAIJ,GAAOC,KAAKC,KAChB,OAAOF,GAAKK,kBAAkBD,IAElCuC,sBAAuB,SAAUvC,GAC7B,GAAIJ,GAAOC,KAAKC,KAChB,OAAOF,GAAKO,qBAAqBH,GAASJ,EAAK4C,yBAAyBxC,IAE5EyC,eAAgB,SAAUC,EAAOf,EAAOgB,EAAOC,EAAYpC,EAAOqC,EAAKC,GAAvD,GAaRC,GAZAnD,EAAOC,KAAKC,MACZkD,EAAoBpD,EAAKqD,oBACzBL,GAAa,IACM,IAAfE,EACAD,EAAMF,EAAME,IAAIK,UACTJ,GAAcF,EAAa,EAClCpC,EAAQmC,EAAMnC,MAAMa,aAEpBb,EAAQmC,EAAMnC,MAAMa,YACpBwB,EAAMF,EAAME,IAAIK,YAGpBH,EAAaL,EAAMS,OACnB3C,MAAOA,EACPqC,IAAKA,EACLO,KAAMT,EAAMS,KACZC,KAAMV,EAAMU,OAEZL,EACApD,EAAK0D,qBAAqBX,EAAO/C,EAAK2D,oBAAoBR,GAAapB,GAEvE/B,EAAK6C,eAAeE,EAAO/C,EAAK2D,oBAAoBR,GAAapB,IAGzE6B,uBAAwB,SAAUC,EAAYC,EAAWrC,GAAjC,GAIXK,GACDpB,EACAqD,EAIKC,EACDjC,EACAkC,EACAC,EACAC,EACAC,EAKKC,EACDC,EApBZtE,EAAOC,KAAKC,MACZqE,EAAchF,EACdiF,EAAWlF,CACf,KAASwC,EAAa,EAAGA,EAAa+B,EAAY/B,IAM9C,IALIpB,EAAY,EACZqD,EAAgB,EAChB/D,EAAKkB,yBACL6C,EAAgBjC,GAEXkC,EAAWD,EAAgBS,EAAUR,GAAYD,EAAgB,GAAKS,EAAUR,IAUrF,IATIjC,EAAQ/B,EAAKgC,OAAOF,GACpBmC,EAAalC,EAAM0C,qBAAqBnG,EAAMZ,KAAK4D,QAAQG,EAAWf,GAAYpC,EAAMZ,KAAK4D,QAAQG,EAAWf,EAAY6D,IAC5HL,EAAWJ,EAAUE,GACrBG,EAAQD,EAASQ,SACjBN,EAAiB,EACrBF,EAASS,aAAa,OAAQ,OACzB3E,EAAKkB,yBACNkD,EAAiBtC,GAEZuC,EAAYD,EAAiBG,EAAaF,GAAaD,EAAiB,GAAKG,EAAaF,IAC3FC,EAAOH,EAAME,GACjBrE,EAAK4E,WAAWX,EAAYK,EAAM7C,EAAWf,GAC7CA,KAKhBmE,wBAAyB,SAAUC,GAC/B,GAAI9E,GAAOC,KAAKC,KAChB,OAAO4E,GAAU9E,EAAKgC,OAAO+C,OAAS,EAAI,GAE9CC,kBAAmB,SAAUjC,GAAV,GACX/C,GAAOC,KAAKC,MACZ+E,EAAOlC,EAAMmC,YAAYC,WACzBC,EAAMrC,EAAMnC,MAAMyE,UAClBC,EAAQvC,EAAMwC,aACdC,EAASzC,EAAMnC,MAAM6E,aAAe,EACpCC,EAAOxG,EAAcyG,GAAGX,kBAAkBY,KAAK5F,EAAMiF,EAAMG,EAAKE,EAAOE,EAC3ExF,GAAK6F,kBAAkBH,IAE3BI,gBAAiB,SAAU/C,EAAOD,GAAjB,GACT9C,GAAOC,KAAKC,MACZgF,EAAYnC,EAAMmC,YAClBa,EAAUhD,EAAMgD,UAChBL,EAAO1F,EAAK2D,oBAAoBb,EAAMS,OACtCC,KAAMT,EAAMS,KACZC,KAAMV,EAAMU,OAEhBiC,GAAKM,KACDf,KAAMC,EAAUC,WAAa,EAC7BC,IAAKF,EAAUG,UAAYH,EAAUe,iBACrCT,OAAQxF,EAAKkG,QAAQC,YACrBb,MAAOvC,EAAMwC,cAAgBL,EAAUkB,QAAUL,EAAQK,MAAQ,EAAI,KAEzEV,EAAKW,SAAS,qBACdrG,EAAKsG,gBAAgBZ,MAGzBa,EAAyBjI,EAAMwB,MAAMV,QACrCW,KAAM,SAAUC,GACZC,KAAKC,MAAQF,GAEjBG,0BAA2B,WACvB,MAAO,IAEXG,8BAA+B,SAAUF,GACrC,GAAIJ,GAAOC,KAAKC,KAChB,OAAOF,GAAKO,qBAAqBH,EAAQ,GAAKb,GAElDoB,YAAa,SAAUC,EAAOC,EAAUC,GAA3B,GAOD0F,GACA3C,EAPJ7D,EAAOC,KAAKC,MACZO,EAAclB,EACd0B,EAAsBjB,EAAKkB,uBAC3BC,EAAO,GACPsF,EAAU,CACd,IAAIxF,EAAqB,CAGrB,IAFIuF,EAAgB,GAAI1I,MAAK8C,GACzBiD,EAAa7D,EAAK0G,cACjBD,EAASA,EAAUnH,EAAgBmH,IACpCtF,GAAQnB,EAAKoB,WAAWoF,EAAe3F,EAAUgD,EAAY4C,GAC7DD,EAAgBlI,EAAMZ,KAAK4D,QAAQkF,EAAe/F,EAEtDG,GAAQtC,EAAMZ,KAAKyE,QAAQvB,OACxB,CACH,IAAK6F,EAASA,EAAUhG,EAAagG,IACjCtF,GAAQnB,EAAKoB,WAAWR,EAAOC,EAAUC,EAAsB2F,GAC/D7F,EAAQtC,EAAMZ,KAAKyE,QAAQvB,EAE/BA,GAAQtC,EAAMZ,KAAK4D,QAAQV,EAAOH,GAEtC,MAAOU,IAEXE,iBAAkB,SAAUT,EAAO+F,GAAjB,GACV3G,GAAOC,KAAKC,MACZe,EAAsBjB,EAAKkB,sBAC/B,OAAID,GACI0F,EACOrI,EAAMZ,KAAK4D,QAAQV,EAAOrB,GAAqBD,EAAiB,GAAK,GAErEhB,EAAMZ,KAAKyE,QAAQvB,GAG3BtC,EAAMZ,KAAK4D,QAAQV,EAAOrB,IAErCgC,YAAa,SAAUC,EAASC,EAAWC,EAAWkF,GAClD,MAAgB,KAAZA,EACOpF,GACH9D,KAAM+D,EACNC,UAAWA,IAGZ,IAEXC,uBAAwB,SAAUC,EAAGC,EAAGC,GACpC,GAAIC,GAAQ9B,KAAKC,MAAM8B,OAAOF,EAC9B,OAAOC,GAAME,kBAAkBL,EAAGC,GAAG,IAEzCK,mBAAoB,SAAUT,GAC1B,MAAOA,IAEXjB,uBAAwB,WAAA,GAChBR,GAAOC,KAAKC,MACZe,EAAsBjB,EAAKkB,sBAC/B,OAAOD,GAAsB1B,EAAoBD,GAErD8C,kBAAmB,SAAUV,EAAWW,EAAMC,EAAqBE,GAC/D,GAAIxC,GAAOC,KAAKC,KAChB,OAAOF,GAAK6G,kBAAkBrE,EAAS,MAAM,IAEjDD,6BAA8B,SAAUb,EAAWW,EAAMC,GAA3B,GAKjBwE,GACDC,EALJ/G,EAAOC,KAAKC,MACZ8G,EAAWtF,EAAU,GACrBuF,KACAC,EAAOF,EAASG,WAAWnH,MAC/B,KAAS8G,EAAY,EAAGA,EAAYI,EAAKnC,OAASzF,EAAgBwH,IAC1DC,GACAK,KAAM9E,GACF8E,KAAM9I,EAAM+I,WAAW/I,EAAMgJ,OAAON,EAASO,eAAeL,EAAKJ,EAAYI,EAAKnC,UAClFyC,MAAOlJ,EAAMgJ,OAAON,EAASS,gBAAgBP,EAAKJ,EAAYI,EAAKnC,SACnE2C,MAAOV,EAASU,MAChBC,MAAOX,EAASW,MAChBC,KAAMZ,EAASY,KACflJ,MAAOJ,EAAMgJ,OAAON,EAASa,gBAAgBX,EAAKJ,EAAYI,EAAKnC,WAEvE+C,UAAW,eAEff,EAAIvE,QAAUxC,EAAKyC,qBAAqBf,EAAUnE,MAAM,GAAI,KAAM+E,GAClE2E,EAAcc,KAAKhB,EAEvB,OAAOE,IAEXxE,qBAAsB,SAAUf,EAAWc,EAASF,EAAqB0F,GACrE,GAAIhI,GAAOC,KAAKC,KAChB,OAAOF,GAAKyC,qBAAqBf,EAAWc,EAASF,EAAqB0F,GAAY,IAE1FtF,oBAAqB,SAAUtC,GAC3B,GAAIJ,GAAOC,KAAKC,KAChB,OAAOF,GAAKO,qBAAqBH,GAASd,GAE9CqD,sBAAuB,SAAUvC,GAC7B,GAAIJ,GAAOC,KAAKC,KAChB,OAAOF,GAAKO,qBAAqBH,GAASb,GAE9CsD,eAAgB,SAAUC,EAAOf,EAAOgB,EAAOC,EAAYpC,EAAOqC,GAAlD,GAKHgF,GACDC,EACAC,EACAhF,EAPJnD,EAAOC,KAAKC,MACZkI,EAAarF,EAAMnC,MAAMwF,MACzBiC,EAAWtF,EAAME,IAAImD,MACrBhD,EAAoBpD,EAAKqD,oBAC7B,KAAS4E,EAAIlF,EAAMnC,MAAMwF,MAAO6B,GAAKlF,EAAME,IAAImD,MAAO6B,IAC9CC,EAAcnF,EAAMkB,WAAWqE,OAAOL,GACtCE,EAAYpG,EAAMwG,cAAcL,EAAYtH,MAAOsH,EAAYtH,OAAO,GAAM,GAC5EuC,EAAaL,EAAMS,OACnB3C,MAAOqH,IAAMG,EAAaxH,EAAQsH,EAAYzG,YAC9CwB,IAAKgF,IAAMI,EAAWpF,EAAMiF,EAAY5E,UACxCE,KAAMyE,IAAMI,GAAYtF,EAAMS,KAC9BC,KAAMwE,IAAMG,GAAcrF,EAAMU,OAEhCL,EACApD,EAAK0D,qBAAqByE,EAAWnI,EAAK2D,oBAAoBR,GAAapB,GAE3E/B,EAAK6C,eAAesF,EAAWnI,EAAK2D,oBAAoBR,GAAapB,IAIjF6B,uBAAwB,SAAUC,EAAYC,EAAWrC,GAAjC,GAKX+G,GACIxE,EACDlC,EACA2G,EACAvE,EACAC,EACAC,EAKKC,EACD3D,EACAgI,EACApE,EACAqE,EACA5G,EACAkC,EArBZjE,EAAOC,KAAKC,MACZqE,EAAchF,EACdiF,EAAWlF,EACX2B,EAAsBjB,EAAKkB,sBAC/B,KAASsH,EAAY,EAAGA,EAAYjE,EAAaiE,IAC7C,IAASxE,EAAW,EAAGA,EAAWQ,EAAUR,IAUxC,IATIlC,EAAa,EACb2G,EAAoBxH,EAAsBuH,EAAYxE,EACtDE,EAAWJ,EAAU2E,GACrBtE,EAAQD,EAASQ,SACjBN,EAAiB,EACrBF,EAASS,aAAa,OAAQ,OACzB3E,EAAKkB,yBACNkD,EAAiBoE,GAEZnE,EAAYD,EAAiBP,EAAYQ,GAAaD,EAAiB,GAAKP,EAAYQ,IACzF3D,EAAYsD,EAAWO,EAAciE,EACrCE,EAAmBzH,EAAsBoD,EAAYL,EAAWH,EAAaQ,EAC7EC,EAAOH,EAAMuE,GACbC,EAAoB1H,EAAsBoD,EAAYvC,EACtDC,EAAQ/B,EAAKgC,OAAO2G,GAGpB1E,EADc,IAAduE,EACazG,EAAM0C,qBAAqBnG,EAAMZ,KAAK4D,QAAQG,EAAWf,GAAYpC,EAAMZ,KAAK4D,QAAQG,EAAWf,EAAY6D,IAE/GxC,EAAM6G,oBAAoB5E,GAE3ChE,EAAK4E,WAAWX,EAAYK,EAAM7C,EAAWf,GAC7CoB,KAKhB+C,wBAAyB,SAAUC,EAAS+D,EAAUC,GAClD,GAAI9I,GAAOC,KAAKC,KAChB,OAAI2I,IAAY7I,EAAKkB,uBACV4D,EAAU9E,EAAKgC,OAAO+C,OAAS,EAAI,EAEvC+D,GAEX9D,kBAAmB,SAAUjC,GAAV,GAEXkC,GAAMG,EAAKE,EAAOE,EAAQE,EASjBqD,EACDC,EAXRhJ,EAAOC,KAAKC,KAEhB,IAAIF,EAAKkB,uBACL+D,EAAOlC,EAAMmC,YAAYC,WACzBC,EAAMrC,EAAMnC,MAAMyE,UAClBC,EAAQvC,EAAMmC,YAAY+D,YAC1BzD,EAASzC,EAAMgD,UAAUV,UAAYtC,EAAMmC,YAAYgE,aAAenG,EAAMmC,YAAYG,UAAY,EACpGK,EAAOxG,EAAcyG,GAAGX,kBAAkBY,KAAK5F,EAAMiF,EAAMG,EAAKE,EAAOE,GACvExF,EAAK6F,kBAAkBH,OAEvB,KAASqD,EAAUhG,EAAMmC,YAAYkB,MAAO2C,GAAWhG,EAAMgD,UAAUK,MAAO2C,IACtEC,EAAOjG,EAAMkB,WAAWqE,OAAOS,GACnC9D,EAAO+D,EAAK7D,WACZC,EAAM4D,EAAK3D,UACXC,EAAQ0D,EAAKC,YACbzD,EAASwD,EAAKE,aAAe,EAC7BxD,EAAOxG,EAAcyG,GAAGX,kBAAkBY,KAAK5F,EAAMiF,EAAMG,EAAKE,EAAOE,GACvExF,EAAK6F,kBAAkBH,IAInCI,gBAAiB,SAAU/C,EAAOD,GAAjB,GAIJiG,GACDC,EACAtD,EALJ1F,EAAOC,KAAKC,MACZgF,EAAYnC,EAAMmC,YAClBa,EAAUhD,EAAMgD,SACpB,KAASgD,EAAU7D,EAAUkB,MAAO2C,GAAWhD,EAAQK,MAAO2C,IACtDC,EAAOjG,EAAMkB,WAAWqE,OAAOS,GAC/BrD,EAAO1F,EAAK2D,oBAAoBb,EAAMS,OACtCC,KAAMT,EAAMS,KACZC,KAAMV,EAAMU,QAEhBiC,EAAKM,KACDf,KAAM+D,EAAK7D,WACXC,IAAK4D,EAAK3D,UAAY2D,EAAK/C,iBAC3BT,OAAQxF,EAAKkG,QAAQC,YACrBb,MAAO0D,EAAKC,YAAc,IAE9BvD,EAAKW,SAAS,qBACdrG,EAAKsG,gBAAgBZ,KAIjCpH,GAAMW,GAAGkK,UAAUtJ,iBAAmBA,EACtCvB,EAAMW,GAAGkK,UAAU5C,uBAAyBA,EAC5CtH,EAAGmK,UAAYlK,EAAcE,QACzBW,KAAM,SAAUsJ,EAASnD,GACrB,GAAIoD,GAAOrJ,IACXf,GAAcyG,GAAG5F,KAAK6F,KAAK0D,EAAMD,EAASnD,GAC1CoD,EAAKC,aAAeD,EAAKE,kBACzBF,EAAK3B,MAAQ2B,EAAKpD,QAAQyB,MAC1B2B,EAAKG,aACLH,EAAKI,YACLJ,EAAKK,cAAcL,EAAKpD,QAAQxI,MAChC4L,EAAKM,WAEThC,KAAM,QACN4B,gBAAiB,WACb,MAAIvJ,MAAK4J,mBACE,GAAIvL,GAAMW,GAAGkK,UAAU5C,uBAAuBtG,MAE9C,GAAI3B,GAAMW,GAAGkK,UAAUtJ,iBAAiBI,OAGvD6J,iBAAkB,SAAUC,EAAWC,EAAQC,EAAUnF,EAAS+D,GAAhD,GAEN3D,GACAa,EACAmE,EACAC,EACAC,CALJH,KACI/E,EAAY8E,EAAO,GAAGpJ,MACtBmF,EAAUiE,EAAOA,EAAOjF,OAAS,GAAG9B,IACpCiH,EAAahF,EAAUkB,QAAUL,EAAQK,MACzC+D,EAAmBjF,EAAUmF,kBAAoBtE,EAAQsE,gBAGzDD,EADAvB,EACkBqB,GAAcC,GAAoBA,EAElCD,GAAcC,EAEhCC,IACAL,EAAUO,SAAWxF,KAIjCyF,YAAa,SAAUR,EAAWf,EAAMwB,GAA3B,GAELC,GAAarE,EAUTsE,EAXJ3I,EAAQ9B,KAAK+B,OAAO+H,EAAUjI,WAElC,IAAI0I,GAGA,GAFAC,EAAc1I,EAAM4I,gBAAgB5I,EAAM6I,0BAC1CxE,EAAQ4C,EAAKqB,gBAAkB,EAC3BjE,GAAS,EACT,MAAOqE,GAAYrE,GAAOkC,OAAOmC,EAAYrE,GAAOkC,OAAOvD,OAAS,OAMxE,IAHA0F,EAAc1I,EAAM4I,gBAAgB5I,EAAM6I,0BAC1CxE,EAAQ4C,EAAKqB,gBAAkB,EAC3BK,EAAY,EACZD,EAAYrE,IAAUqE,EAAYrE,GAAOkC,OAAOoC,GAChD,MAAOD,GAAYrE,GAAOkC,OAAOoC,IAI7CG,wBAAyB,SAAU9I,EAAO+I,EAAQC,GAC9C,GAAIC,GAAa/K,KAAKiB,sBAGtB,OAFA6J,GAAgB7F,UAAYnD,EAAM+I,GAAQC,EAAgB7F,UAAW8F,GACrED,EAAgBhF,QAAUhE,EAAM+I,GAAQC,EAAgBhF,QAASiF,GAC1DD,GAEXE,sBAAuB,SAAUlJ,EAAO+I,EAAQI,EAAejB,GAC3D,GAAIe,GAAa/K,KAAKiB,wBAA0BjB,KAAK4J,kBAGrD,OAFAqB,GAAchG,UAAYnD,EAAM+I,GAAQI,EAAchG,UAAW+E,EAAUe,GAC3EE,EAAcnF,QAAUhE,EAAM+I,GAAQI,EAAcnF,QAASkE,EAAUe,GAChEE,GAEXC,kBAAmB,SAAUpB,EAAWjF,EAAS+D,GAA9B,GAEXuC,GAAUC,EADVC,EAAMzC,EAAW,EAAI,CAOzB,OALI/D,KACAwG,OAEJF,EAAW9M,EAAMZ,KAAK4D,QAAQyI,EAAUnJ,MAAO0K,GAC/CD,EAAS/M,EAAMZ,KAAK4D,QAAQyI,EAAU9G,IAAKqI,IACvCrL,KAAKsL,WAAWH,EAAUC,KAG9BtB,EAAUnJ,MAAQwK,EAClBrB,EAAU9G,IAAMoI,IACXxC,GAAYA,GAAY5I,KAAKiB,0BAC9B6I,EAAUjI,WAAa7B,KAAKsJ,aAAa1E,wBAAwBC,EAAS+D,EAAUkB,EAAUjI,aAElGiI,EAAUyB,WACH,IAEXC,gBAAiB,SAAU1B,EAAWC,EAAQlF,GAA7B,GACTsB,GAAQ2D,EAAUO,SAAW,EAAIN,EAAOjF,OAAS,EACjDhD,EAAQ9B,KAAK+B,OAAO+H,EAAUjI,WAClC,OAAOC,GAAM2J,eAAe1B,EAAO5D,GAAOxF,MAAOkE,IAErD6G,yBAA0B,SAAU5B,EAAW2B,EAAgBzB,EAAUnF,GAA/C,GAEdhD,GACA8J,EACA/C,EACA9G,CAaR,OAjBKkI,KACGnI,EAAaiI,EAAUjI,WACvB8J,EAAiB3L,KAAK+B,OAAO+C,OAAS,EACtC8D,EAAW5I,KAAKiB,uBAChBa,EAAQ9B,KAAK+B,OAAOF,IACnB4J,GAAkB7C,GACnB6C,EAAiB3J,EAAM+C,EAAU,WAAa,eAC9ChD,GAAcgD,KAAe,GACtB4G,IAAmB7C,IAC1B/G,EAAagD,EAAU8G,EAAiB,IAExC9J,EAAa,GAAKA,EAAa8J,KAC/B9J,EAAagD,EAAU8G,EAAiB,EACxCF,EAAiB,MAErB3B,EAAUjI,WAAaA,GAEpB4J,GAEXG,8BAA+B,SAAU9B,EAAWC,EAAQlF,GACxD,GAAIkE,EAMJ,OAJIA,GADAlE,EACOkF,EAAO,GAAGpJ,MAEVoJ,EAAOA,EAAOjF,OAAS,GAAG9B,KAIzC6I,4BAA6B,SAAU/B,EAAWC,GAC9C,GAAIhB,EAMJ,OAJIA,GADAe,EAAUO,SACHN,EAAO,GAAGpJ,MAEVoJ,EAAOA,EAAOjF,OAAS,GAAG9B,KAIzCwG,WAAY,WACR,GAAIvD,GAAUjG,KAAKiG,QAAS6F,EAAW3M,KAAWd,EAAM0N,SAAU9F,EAAQ+F,iBAC1EhM,MAAKiM,cAAgBjM,KAAKkM,WAAWjG,EAAQgG,cAAexM,GAC5DO,KAAKmM,YAAc9N,EAAMmB,SAASyG,EAAQkG,YAAaL,GACvD9L,KAAKqC,oBAAsBhE,EAAMmB,SAASyG,EAAQ5D,oBAAqByJ,IAE3EM,aAAc,WACV,MAAO/N,GAAMgO,OAAOrM,KAAKiG,QAAQqG,mBAAoBtM,KAAKuM,iBAAkBvM,KAAKwM,kBAErFC,kBAAmB,WACf,MAAOpO,GAAMgO,OAAOrM,KAAKiG,QAAQyG,wBAAyB1M,KAAKuM,iBAAkBvM,KAAKwM,kBAE1FG,SAAU,WACN,MAAOtO,GAAMZ,KAAKyE,QAAQlC,KAAKwM,kBAEnCI,aAAc,WACV,MAAOvO,GAAMZ,KAAKoP,YAAY7M,KAAKuM,mBAEvC/K,UAAW,WACP,MAAOxB,MAAK8M,YAEhBzJ,QAAS,WACL,MAAOrD,MAAK+M,UAEhBrD,cAAe,SAAUjM,GACrB,GAAI4L,GAAOrJ,IACXA,MAAKuM,iBAAmBlO,EAAMZ,KAAKuP,gBAAgBvP,GACnDuC,KAAKwM,gBAAkBnO,EAAMZ,KAAKwP,eAAexP,GACjDuC,KAAK8M,WAAatP,EAAqBC,EAAMuC,KAAKtC,gBAClDsC,KAAKkN,aAAalN,KAAKmN,WACvBnN,KAAKoN,WACLpN,KAAKqN,gBACLrN,KAAKuB,QAAQ+L,GAAG,QAAUpO,EAAI,4BAA6B,SAAUqO,GAAV,GACnDC,GAAStQ,EAAEqQ,EAAEE,eAAeD,SAC5BzE,EAAOM,EAAKqE,gBAAgBF,EAAOxI,KAAMwI,EAAOrI,IACpDoI,GAAEI,iBACFtE,EAAKuE,QAAQ,YACT7N,KAAM,MACNtC,KAAMsL,EAAKvH,iBAIvBiI,UAAW,WACHzJ,KAAKiG,QAAQ4H,WAAa7N,KAAKoD,uBAC3BpD,KAAK8N,YACL9N,KAAK+N,iBAEL/N,KAAKgO,mBAIjBA,eAAgB,WACZ,GAAI3E,GAAOrJ,IACXqJ,GAAKD,QAAQkE,GAAG,QAAUpO,EAAI,oDAAqD,SAAUqO,GACzFlE,EAAKuE,QAAQ,UAAYK,IAAK/Q,EAAE8C,MAAMkO,QAAQ,YAAYC,KAAK9P,EAAM8P,KAAK,UAC1EZ,EAAEI,mBAEFtE,EAAKpD,QAAQ4H,SAASO,UAAW,GACjC/E,EAAKD,QAAQkE,GAAG,WAAapO,EAAI,iDAAkD,SAAUqO,GAAV,GAIvEc,GAHJb,EAAStQ,EAAEqQ,EAAEE,eAAeD,SAC5BzE,EAAOM,EAAKqE,gBAAgBF,EAAOxI,KAAMwI,EAAOrI,IAChD4D,KACIsF,EAAehF,EAAKiF,gBAAgBvF,GACxCM,EAAKuE,QAAQ,OACTW,UAAWpP,GACPqP,UAAU,EACV7N,MAAOoI,EAAKvH,YACZwB,IAAK+F,EAAKvH,aACX6M,MAGXd,EAAEI,mBAGNtE,EAAKpD,QAAQ4H,SAASY,UAAW,GACjCpF,EAAKD,QAAQkE,GAAG,WAAapO,EAAI,kCAAmC,SAAUqO,GAC1ElE,EAAKuE,QAAQ,QAAUK,IAAK/Q,EAAE8C,MAAMkO,QAAQ,YAAYC,KAAK9P,EAAM8P,KAAK,UACxEZ,EAAEI,oBAIdI,eAAgB,WAAA,GACR1E,GAAOrJ,KACP0O,EAAY,CACZrQ,GAAMsQ,QAAQC,SAASC,UACvBH,EAAY,GAEZrF,EAAKpD,QAAQ4H,SAASO,UAAW,IACjC/E,EAAKyF,eAAiB,GAAIzQ,GAAM0Q,WAAW1F,EAAKD,SAC5CsF,UAAWA,EACXM,eAAgB3Q,EAAMsQ,QAAQM,QAAQC,KACtCC,OAAQ,iDACRC,IAAK,SAAU7B,GAAV,GAIGC,GACAzE,EAEIsF,CANJhF,GAAKgG,aAGL7B,EAAStQ,EAAEqQ,EAAE+B,QAAQ9B,SACrBzE,EAAOM,EAAKqE,gBAAgBF,EAAOxI,KAAMwI,EAAOrI,KAChD4D,IACIsF,EAAehF,EAAKiF,gBAAgBvF,GACxCM,EAAKuE,QAAQ,OACTW,UAAWpP,GACPqP,UAAU,EACV7N,MAAOoI,EAAKvH,YACZwB,IAAK+F,EAAKvH,aACX6M,MAGXd,EAAEI,sBAIVtE,EAAKpD,QAAQ4H,SAASY,UAAW,IACjCpF,EAAKkG,gBAAkB,GAAIlR,GAAM0Q,WAAW1F,EAAKD,SAC7CsF,UAAWA,EACXS,OAAQ,kCACRH,eAAgB3Q,EAAMsQ,QAAQM,QAAQC,KACtCE,IAAK,SAAU7B,GACPlE,EAAKgG,YAGqD,IAA1DnS,EAAEqQ,EAAE1K,MAAMyM,QAAQpB,QAAQ,qBAAqBpJ,SAC/CuE,EAAKuE,QAAQ,QAAUK,IAAK/Q,EAAEqQ,EAAE+B,QAAQpB,QAAQ,YAAYC,KAAK9P,EAAM8P,KAAK,UAC5EZ,EAAEI,uBAMtB6B,mBAAoB,SAAUnL,GAC1B,GAAImJ,GAAStQ,EAAEmH,GAAMmJ,QACrB,OAAOxN,MAAK0N,gBAAgBF,EAAOxI,KAAMwI,EAAOrI,MAEpD7E,qBAAsB,SAAUH,GAC5B,GAAIsP,GAAczP,KAAK0P,aAAavP,EACpC,OAAOsP,GAAcA,EAAY3K,OAAS,GAE9C1E,kBAAmB,SAAUD,GACzB,GAAIwP,GAAW3P,KAAK4P,UAAUzP,EAC9B,OAAOwP,GAAWA,EAAS7K,OAAS,GAExCsI,SAAU,WAAA,GAUGyC,GATL3O,EAAO,UACP4O,EAAqB,EACrBC,EAAc/P,KAAKsJ,aACnB7H,EAAYzB,KAAKgQ,gBAMrB,KALIvO,EAAUqD,QACN9E,KAAKiB,yBACL6O,EAAqBC,EAAY7P,0BAA0BuB,EAAUqD,OAAS,IAG7E+K,EAAmB,EAAGA,EAAmBC,EAAoBD,IAClE3O,GAAQlB,KAAKiQ,gBAAgBJ,EAEjC3O,IAAQ,WACRlB,KAAKuB,QAAQ2O,KAAK,SAAShP,KAAKA,IAEpC+O,gBAAiB,SAAUnP,GAAV,GAgBTqP,GACKC,EAGDxP,EAnBJD,EAAQX,KAAKwB,YACbf,EAAYnB,EAAoBD,EAChCmB,EAAclB,EACd+Q,GAAkB1P,GAClBO,EAAO,GACPL,EAAuB,EACvBG,EAAsBhB,KAAKiB,uBAC3B8O,EAAc/P,KAAKsJ,aACnB7H,EAAYzB,KAAKgQ,gBAQrB,KAPIvO,EAAUqD,SACL9D,IACDH,EAAuBkP,EAAY1P,8BAA8BoB,EAAUqD,OAAS,KAG5F9E,KAAKsQ,gBACDH,EAAqBJ,EAAYxP,uBAAuBC,EAAaC,GAChE2P,EAAS,EAAGA,EAASD,EAAoBC,IAC9ClP,GAAQ,OACRmP,EAAevI,KAAKnH,GAChBC,EAAWwP,EAAS5P,EACxBU,GAAQ6O,EAAYrP,YAAYC,EAAOC,EAAUC,EAAsBC,GACvEH,EAAQoP,EAAY3O,iBAAiBT,EAAOyP,IAAWD,EAAqB,GAC5EjP,GAAQ,OAIZ,OAFAlB,MAAKuQ,gBAAkBF,EACvBrQ,KAAK+M,SAAW1O,EAAMZ,KAAKoP,YAAYlM,GAChCO,GAEXC,WAAY,SAAUK,EAAWZ,EAAUJ,EAAaqB,GAA5C,GAWC8E,GAVL0C,EAAOrJ,KACPtB,EAAM2K,EAAKkD,iBACX5N,EAAM0K,EAAKmD,gBACXjL,EAAU8H,EAAK8C,YACfqE,EAAU,GACVtP,EAAO,GACP6O,EAAc/P,KAAKsJ,aACnB7H,EAAY,WACZ,MAAO4H,GAAKiF,iBAAkBzM,WAAYA,IAE9C,KAAS8E,EAAU,EAAGA,EAAUnG,EAAamG,IACzC6J,EAAU,GACNnS,EAAMZ,KAAKgT,QAAQjP,KACnBgP,GAAW,WAEVnS,EAAMZ,KAAKe,cAAcgD,EAAW9C,EAAKC,KAC1C6R,GAAW,kBAEftP,GAAQ,OACQ,KAAZsP,IACAtP,GAAQ,UAAYsP,EAAU,KAElCtP,GAAQ,IACRA,GAAQ6O,EAAYzO,YAAYC,EAASC,EAAWC,EAAWkF,GAC/DzF,GAAQ,QACRmI,EAAKiH,aAAalR,EAAQoC,GAAWkP,WAAa9P,EAAW+F,EAC7DnF,EAAYuO,EAAY9N,mBAAmBT,EAE/C,OAAON,IAEXiM,QAAS,WAAA,GAQD/K,GAIQuO,EACKtT,EAZbK,EAAesC,KAAKtC,eACpBkT,EAAe5Q,KAAK8N,YAAcpQ,EAAamT,KAAKC,WAAapT,EAAamT,KAAKE,MACnFA,EAAQ5T,EAAWyT,EAAclT,EAAaC,UAC9C4E,EAAUrF,EAAE8T,IAAID,EAAO,SAAUtS,GACjC,OAAS0I,KAAM1I,KAEfgD,EAAYzB,KAAKgQ,iBAEjBD,EAAc/P,KAAKsJ,YACvB,IAAI7H,EAAUqD,OACV,GAAI9E,KAAKiB,uBAAwB,CAE7B,IADI0P,KACKtT,EAAM,EAAGA,EAAM,EAAGA,IACvBsT,EAAM7I,MACFX,KAAM,oBACNU,UAAW,wBAGnBzF,GAAO2N,EAAY5N,kBAAkBV,EAAWkP,EAAO3Q,KAAKqC,oBAAqBE,GACjFA,EAAUwN,EAAYzN,6BAA6Bb,EAAWkP,EAAO3Q,KAAKqC,oBAAqBE,OAE/FA,GAAUwN,EAAYvN,qBAAqBf,EAAWc,EAASvC,KAAKqC,oBAAqBE,EAGjG,QACIA,QAASA,EACTH,KAAMA,IAGdsB,oBAAqB,SAAUb,GAAV,GAUbuG,GATAnD,EAAUjG,KAAKiG,QACf4H,EAAW5H,EAAQ4H,SACnBoD,EAAWjR,KAAK8N,WAcpB,OAbAjL,GAAMqO,WAAarD,GAAYA,EAASsD,WAAY,IAAUF,EAC9DpO,EAAMuO,UAAYvD,GAAYA,EAASwD,UAAW,IAAUJ,EAC5DpO,EAAMyO,GAAKjT,EAAMiT,GACjBzO,EAAMpB,UAAYzB,KAAKuR,eAAe1O,GACtCA,EAAM2O,gBAAe3O,EAAMpB,YAAaoB,EAAMpB,UAAU,KAAKzB,KAAKyR,4BAA4B5O,EAAMpB,UAAU,IAC9GoB,EAAM6O,SAAWzL,EAAQyL,WAAcP,QAAS,UAC5C/H,EAAUlM,EAAE8C,KAAKiM,cAAcpJ,IACnC7C,KAAK2R,QAAQ,UAAW,WACpB,OACIC,SAAUxI,EACVnC,OAAS4K,SAAUhP,OAGpBuG,GAEX0I,cAAe,SAAUjP,GAAV,GACPd,GAAS/B,KAAK+B,OAAO,GACrBgQ,EAAYhQ,EAAOiQ,YAAYrR,MAC/BsR,EAAUlQ,EAAOmQ,WAAWlP,IAAM,EAClCmP,EAAY9T,EAAMZ,KAAK2U,UAAUvP,EAAMlC,OACvC0R,EAAUhU,EAAMZ,KAAK2U,UAAUvP,EAAMG,IACzC,QAAQxE,EAAc2T,EAAWJ,EAAWE,IAAYzT,EAAc6T,EAASN,EAAWE,IAAYzT,EAAcuT,EAAWI,EAAWE,IAAY7T,EAAcyT,EAASE,EAAWE,OAAe7T,EAAc6T,EAASN,EAAWA,IAAcvT,EAAc6T,EAASF,EAAWA,IAActP,EAAM2L,WAEjT8D,WAAY,SAAU7U,GAClB,MAAOuC,MAAKsQ,aAAalR,EAAQ3B,GAAMiT,YAE3CjN,qBAAsB,SAAU8O,EAAWnJ,EAAStH,GAA9B,GAKdqG,GACAC,EACAoK,EACAjH,EAMAnJ,EACA2G,EACA0J,EAfAxN,EAAYsN,EAAU5R,KACtB4R,GAAU5R,MAAMuE,WAAaqN,EAAUvP,IAAIkC,aAC3CD,EAAYsN,EAAUvP,KAEtBmF,EAAaoK,EAAU5R,MAAMwF,MAC7BiC,EAAWD,EACXqK,EAAa,EACbjH,EAAStM,EAAcyT,gBAAgBH,EAAUhH,SAAUpD,EAAYC,GAC3EmD,EAAOzD,MACHsB,QAASA,EACTzI,MAAOwH,EACPnF,IAAKoF,IAELhG,EAAOnD,EAAc0T,WAAWpH,GAChCxC,EAAOwJ,EAAUvO,WAAW4O,GAAGzK,GAC/BsK,EAAY1J,EAAK0J,UAChBA,IACDA,EAAYvV,EAAEmB,EAAMgO,OAAO,uEAAwEpH,EAAUG,UAAYH,EAAU4N,cAAgB5N,EAAUe,iBAAmB,KAAMf,EAAUC,WAAa,KAAMD,EAAU+D,YAAc,OAC3OD,EAAK0J,UAAYA,EACjBzS,KAAKuB,QAAQ,GAAGuR,YAAYL,EAAU,KAEtCrQ,EAAK0C,QAAU0N,IACfD,EAAUQ,UACN3J,QAASA,EACTzI,MAAOwH,EACPnF,IAAKoF,EACLvG,WAAYoD,EAAUpD,aAE1BC,EAAMkR,kBAAkBlL,MACpBsB,QAASA,EACT6E,IAAK7E,EAAQ+E,KAAK9P,EAAM8P,KAAK,QAC7BxN,MAAO4R,EAAU5R,MACjBqC,IAAKuP,EAAUvP,MAEnByP,EAAU,GAAGK,YAAY1J,EAAQ,MAGzCxG,eAAgB,SAAU2P,EAAWnJ,EAAStH,GAA9B,GAMRqG,GACAC,EACAoK,EACAjH,EACA0H,EAMA7Q,EACK/E,EAASyH,EACVoO,EACAC,EACKC,EAAOC,EAKP5I,EACDzG,EACA+E,EA1BR7C,EAAclG,KAAKiG,QAAQC,YAC3BjB,EAAYsN,EAAU5R,KAe1B,KAdI4R,EAAU5R,MAAMuE,WAAaqN,EAAUvP,IAAIkC,aAC3CD,EAAYsN,EAAUvP,KAEtBmF,EAAaoK,EAAU5R,MAAMwF,MAC7BiC,EAAWmK,EAAUvP,IAAImD,MACzBqM,EAAavN,EAAUuN,WACvBjH,EAAStM,EAAcyT,gBAAgBH,EAAUhH,SAAUpD,EAAYC,GACvE6K,EAAc9K,IAAeC,EAAW,EAAI,EAChDmD,EAAOzD,MACHsB,QAASA,EACTzI,MAAOwH,EACPnF,IAAKoF,IAELhG,EAAOnD,EAAc0T,WAAWpH,GAC3BlO,EAAM,EAAGyH,EAASwO,KAAK5U,IAAI0D,EAAK0C,OAAQ0N,GAAanV,EAAMyH,EAAQzH,IAGxE,IAFI6V,EAAY9Q,EAAK/E,GAAKkO,OACtB4H,EAAWlO,EAAUG,UAAYH,EAAU4N,cAAgB5N,EAAUe,iBAAmB3I,EAAM6I,EAAc,EAAI7I,EAAM,KACjH+V,EAAI,EAAGC,EAAcH,EAAUpO,OAAQsO,EAAIC,EAAaD,IAC7DF,EAAUE,GAAGhK,QAAQ,GAAGmK,MAAMpO,IAAMgO,CAG5C,IAAI/Q,EAAK0C,OAAS0N,EACd,IAAS/H,EAAYtC,EAAYsC,GAAarC,EAAUqC,IAChDzG,EAAauO,EAAUvO,WACvB+E,EAAO/E,EAAW4O,GAAGnI,GACrB1B,EAAKyK,OAGTzK,EAAKyK,KAAOtW,EAAEyC,GACV2R,GAAIjT,EAAMiT,GACV3Q,MAAO8J,EACPzH,IAAKyH,EACLpF,MAAO0D,EAAK0K,YAAc,EAC1BzO,KAAM+D,EAAK7D,WAAa,EACxBC,IAAK4D,EAAK3D,UAAY2D,EAAK8J,cAAgB9J,EAAK/C,iBAAmBwM,EAAatM,EAAc,EAAIsM,KAEtGxS,KAAKuB,QAAQ,GAAGuR,YAAY/J,EAAKyK,KAAK,SAG1CjB,GAAUQ,UACN3J,QAASA,EACTzI,MAAOwH,EACPnF,IAAKoF,EACLvG,WAAYoD,EAAUpD,aAE1BuH,EAAQ,GAAGmK,MAAMlO,MAAQkN,EAAUjN,aAAe2N,EAAc,KAChE7J,EAAQ,GAAGmK,MAAMvO,KAAOC,EAAUC,WAAa,EAAI,KACnDkE,EAAQ,GAAGmK,MAAMhO,OAASW,EAAc,KACxCpE,EAAMkR,kBAAkBlL,MACpBsB,QAASA,EACT6E,IAAK7E,EAAQ+E,KAAK9P,EAAM8P,KAAK,QAC7BxN,MAAO4R,EAAU5R,MACjBqC,IAAKuP,EAAUvP,MAEnBoG,EAAQsK,SAAS1T,KAAKuB,UAG9BmM,gBAAiB,SAAU/L,EAAGC,GAAb,GAQJC,GACDkH,EARJyE,EAASxN,KAAKuB,QAAQiM,QAO1B,KANA7L,GAAK6L,EAAOxI,KACZpD,GAAK4L,EAAOrI,IACZvD,GAAK5B,KAAKuB,QAAQ,GAAGoS,UACrBhS,GAAK3B,KAAKuB,QAAQ,GAAGqS,WACrBjS,EAAI2R,KAAKO,KAAKlS,GACdC,EAAI0R,KAAKO,KAAKjS,GACLC,EAAa,EAAGA,EAAa7B,KAAK+B,OAAO+C,OAAQjD,IAEtD,GADIkH,EAAO/I,KAAKsJ,aAAa5H,uBAAuBC,EAAGC,EAAGC,GAEtD,MAAOkH,EAGf,OAAO,OAEXnD,kBAAmB,SAAUH,GACzBA,EAAKiO,SAAS1T,KAAKuB,SACnBvB,KAAK8T,YAAc9T,KAAK8T,YAAYC,IAAItO,IAE5CuO,kBAAmB,SAAUnR,EAAOhB,EAAYsQ,EAAWE,GAAxC,GAEXvQ,GACAiI,EACK9G,CAAT,KAHAjD,KAAKiU,oBACDnS,EAAQ9B,KAAK+B,OAAOF,GACpBkI,EAASjI,EAAMiI,OAAOoI,EAAWE,GAAS,EAAMxP,EAAM2L,UACjDvL,EAAa,EAAGA,EAAa8G,EAAOjF,OAAQ7B,IACjDjD,KAAKsJ,aAAavE,kBAAkBgF,EAAO9G,GAE/CjD,MAAK8T,YAAY5D,KAAK,gCAAgC/I,KAAK,IAC3DnH,KAAK8T,YAAYI,QAAQ9N,SAAS,WAAW8J,KAAK,gBAAgB/I,KAAK9I,EAAM8V,SAAS9V,EAAM+V,SAASC,YAAYlC,GAAY,SAC7HnS,KAAK8T,YAAYQ,OAAOlO,SAAS,UAAU8J,KAAK,mBAAmB/I,KAAK9I,EAAM8V,SAAS9V,EAAM+V,SAASC,YAAYhC,GAAU,UAEhIkC,gBAAiB,SAAU1R,EAAOhB,EAAY2S,GAA7B,GAMJvR,GALLtC,EAAQtC,EAAMZ,KAAK2U,UAAUvP,EAAMlC,OAAS6T,EAC5CxR,EAAMrC,EAAQkC,EAAM4R,WACpB3S,EAAQ9B,KAAK+B,OAAOF,GACpBkI,EAASjI,EAAMiI,OAAOpJ,EAAOqC,GAAK,EAAMH,EAAM2L,SAElD,KADAxO,KAAK0U,gBAAgB7R,EAAMoL,KAClBhL,EAAa,EAAGA,EAAa8G,EAAOjF,OAAQ7B,IACjDjD,KAAKsJ,aAAazD,gBAAgBkE,EAAO9G,GAAaJ,IAG9DwD,gBAAiB,SAAUZ,GACvBA,EAAKiO,SAAS1T,KAAKuB,SACnBvB,KAAK2U,UAAY3U,KAAK2U,UAAUZ,IAAItO,IAExCkE,QAAS,WAAA,GAKItM,GAJLuG,EAAa5D,KAAKyG,cAClB5C,EAAY7D,KAAKuB,QAAQ,GAAGqT,qBAAqB,MACjDpT,EAAYxB,KAAKwB,WAErB,KADAxB,KAAK+B,UACI1E,EAAM,EAAGA,EAAMuG,EAAYvG,IAChC2C,KAAK6U,iBAAiBxX,EAE1B2C,MAAKsJ,aAAa3F,uBAAuBC,EAAYC,EAAWrC,IAEpEmD,WAAY,SAAUX,EAAYK,EAAM7C,EAAWf,GAAvC,GAUJ+R,GATAhN,EAAenB,EAAKmB,aACpBQ,EAAmB3B,EAAKI,SAASK,OAAST,EAAKI,SAAS,GAAGwE,aAAe,EAAI,EAC9EtI,EAAQtC,EAAMZ,KAAK4D,QAAQG,EAAWf,GACtCuC,EAAM3E,EAAMZ,KAAKc,UACjBiD,GAAUxD,aAAe2C,EAAM3C,aAC/BgF,IAAQxB,EAAUxD,WAAa2C,EAAM3C,YAAcK,EAAMZ,KAAKqX,aAElEnU,EAAQtC,EAAMZ,KAAK2U,UAAUzR,GAC7BqC,GAAOrC,EACH6R,EAAac,KAAKyB,OAAOvP,EAAeQ,EAAmBhG,KAAKiG,QAAQ+O,mBAAqBhV,KAAKiG,QAAQC,YAAc,IAC5H7B,EAAKK,aAAa,OAAQ,YAC1BL,EAAKK,aAAa,iBAAiB,GACnCV,EAAWW,WAAWN,EAAM1D,EAAOqC,EAAKwP,IAE5CyC,OAAQ,SAAU1J,GACdvL,KAAKuB,QAAQkD,SAAS,+CAA+CyQ,SACrElV,KAAK2J,UACL4B,EAAS,GAAIlN,GAAM4I,KAAKkO,MAAM5J,GAAQ6J,OAE9B3N,MAAO,QACP4N,IAAK,QAGL5N,MAAO,MACP4N,IAAK,UAEVC,SACH,IAAI7T,GAAYzB,KAAKgQ,gBACjBvO,GAAUqD,OACV9E,KAAKuV,cAAchK,EAAQ9J,EAAW,EAAG,GAEzCzB,KAAKwV,cAAcjK,EAAQ,GAE/BvL,KAAKqN,gBACLrN,KAAK4N,QAAQ,aAEjB4H,cAAe,SAAUjK,EAAQ1J,GAAlB,GACPgB,GACAxF,EACAyH,EACAhC,EACAnC,EACAqC,EAIQlB,EACA/B,EACAoD,EAIA4G,EACAhH,EAKI0S,EACAC,EACAvK,EACAC,EAEIlD,EAYCjF,CAhCrB,KAAK5F,EAAM,EAAGyH,EAASyG,EAAOzG,OAAQzH,EAAMyH,EAAQzH,IAEhD,GADAwF,EAAQ0I,EAAOlO,GACX2C,KAAK8R,cAAcjP,GASnB,GARIf,EAAQ9B,KAAK+B,OAAOF,GACpB9B,EAAOC,KAAKsJ,aAAarJ,MACzBkD,EAAoBpD,EAAKqD,qBACxBtB,EAAMkR,oBACPlR,EAAMkR,sBAENjJ,EAASjI,EAAM6T,WAAW9S,GAAO,GACjCE,EAAagH,EAAOjF,OACpB3B,EAQA,IAPAL,EAAQiH,EAAO,GACfpJ,EAAQmC,EAAMnC,MAAMA,MACpBqC,EAAMF,EAAME,IAAIA,IACZyS,EAAa,GAAI5X,MAAKiF,EAAMnC,MAAMA,OAClC+U,EAAW3L,EAAOA,EAAOjF,OAAS,GAAG9B,IAAIA,IACzCmI,EAAW,GAAItN,MAAK4X,GACpBrK,EAAS,GAAIvN,MAAKmF,GACfyS,EAAW/E,WAAagF,GAAY7S,EAAMG,KAAO3E,EAAM+V,SAASC,YAAYoB,IAAe5S,EAAMlC,OAAStC,EAAM+V,SAASC,YAAYqB,IACpIxN,EAAYpG,EAAMwG,cAAc6C,EAASuF,UAAWtF,EAAOsF,WAAW,GAAM,GAChFtF,EAAOwK,QAAQxK,EAAOhM,UAAY,GAClC+L,EAASyK,QAAQzK,EAAS/L,UAAY,GAClC8I,IACAA,EAAU3E,KAAO,KACjB2E,EAAU2N,OAAS,KACnB3N,EAAU1E,KAAO,KACjBxD,KAAKsJ,aAAa1G,eAAeC,EAAOf,EAAOoG,EAAW,EAAGvH,EAAOqC,EAAK,IAE7EyS,EAAapX,EAAMZ,KAAK4D,QAAQoU,EAAY,OAGhD,KAASxS,EAAa,EAAGA,EAAaF,EAAYE,IAC9CH,EAAQiH,EAAO9G,GACftC,EAAQkC,EAAMlC,MACdqC,EAAMH,EAAMG,IACZhD,KAAKsJ,aAAa1G,eAAeC,EAAOf,EAAOgB,EAAOC,EAAYpC,EAAOqC,EAAKC,IAMlGsS,cAAe,SAAUhK,EAAQ9J,EAAW+L,EAAQiC,GAArC,GAGH1P,GACK+V,EACDrX,EACAsX,EALRhP,EAAWtF,EAAU,EACzB,IAAIsF,EAEA,IADIhH,EAAOgH,EAASG,WAAWnH,OACtB+V,EAAU,EAAGA,EAAU/V,EAAK+E,OAAQgR,IACrCrX,EAAQuB,KAAKgW,eAAejP,EAAUhH,EAAK+V,IAC3CC,EAAM,GAAI1X,GAAM4I,KAAKkO,MAAM5J,GAAQ4D,QACnC1H,MAAOV,EAASU,MAChBwO,SAAUhX,EAAciX,cAAczX,KACvC6W,UACC7T,EAAUqD,OAAS,EACnB0I,EAASxN,KAAKuV,cAAcQ,EAAKtU,EAAUnE,MAAM,GAAIkQ,IAAUiC,EAAc,GAE7EzP,KAAKwV,cAAcO,EAAKvI,IAIpC,OAAOA,IAEX/G,YAAa,WAAA,GACLhF,GAAYzB,KAAKgQ,iBACjBD,EAAc/P,KAAKsJ,YACvB,OAAI7H,GAAUqD,OACN9E,KAAKiB,uBACE8O,EAAYtN,oBAAoBhB,EAAUqD,OAAS,GAEnDiL,EAAYrN,sBAAsBjB,EAAUqD,QAGpD,GAEXnC,yBAA0B,SAAUwD,GAChC,MAAOnG,MAAKM,qBAAqB6F,GAASnG,KAAKM,qBAAqB6F,EAAQ,IAEhFgL,QAAS,WACDnR,KAAKmW,OACLnW,KAAKmW,MAAMC,YAAY,yBAEvBpW,KAAKuB,SACLvB,KAAKuB,QAAQ8U,IAAInX,GAEjBc,KAAKoJ,SACLpJ,KAAKoJ,QAAQiN,IAAInX,GAErBD,EAAcyG,GAAGyL,QAAQxL,KAAK3F,MAC1BA,KAAK8N,cAAgB9N,KAAKoD,sBAAwBpD,KAAKiG,QAAQ4H,WAC3D7N,KAAKiG,QAAQ4H,SAASO,UAAW,GACjCpO,KAAK8O,eAAeqC,UAEpBnR,KAAKiG,QAAQ4H,SAASY,UAAW,GACjCzO,KAAKuP,gBAAgB4B,YAIjC5F,QACI,SACA,MACA,OACA,YAEJtF,SACIyB,MAAO,QACPC,KAAM,QACNzB,YAAa,GACb8O,iBAAkB,GAClBnH,UAAU,EACVvB,mBAAoB,QACpBI,wBAAyB,QACzBrK,oBAAqB,UACrB8J,YAAa5M,EACb0M,cAAevM,MAkBzBX,OAAOV,MAAMiY,QACRvX,OAAOV,OACE,kBAAVpB,SAAwBA,OAAOsZ,IAAMtZ,OAAS,SAAUuZ,EAAIC,EAAIC,IACrEA,GAAMD","file":"kendo.scheduler.monthview.min.js","sourcesContent":["/*!\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n*/\n(function (f, define) {\n define('kendo.scheduler.monthview', ['kendo.scheduler.view'], f);\n}(function () {\n var __meta__ = {\n id: 'scheduler.monthview',\n name: 'Scheduler Month View',\n category: 'web',\n description: 'The Scheduler Month View',\n depends: ['scheduler.view'],\n hidden: true\n };\n (function ($) {\n var kendo = window.kendo, ui = kendo.ui, SchedulerView = ui.SchedulerView, NS = '.kendoMonthView', extend = $.extend, getDate = kendo.date.getDate, MS_PER_DAY = kendo.date.MS_PER_DAY, NUMBER_OF_ROWS = 6, NUMBER_OF_COLUMNS = 7, DAY_TEMPLATE = kendo.template('#:kendo.toString(date, \"dd\")#'), EVENT_WRAPPER_STRING = '
' + '' + '# if(data.tail || data.middle) {#' + '' + '#}#' + '# if(data.isException()) {#' + '' + '# } else if(data.isRecurring()) {#' + '' + '#}#' + '' + '{0}' + '' + '#if (showDelete) {#' + '' + '#}#' + '# if(data.head || data.middle) {#' + '' + '#}#' + '' + '# if(resizable && !data.tail && !data.middle) {#' + '' + '#}#' + '# if(resizable && !data.head && !data.middle) {#' + '' + '#}#' + '
', EVENT_TEMPLATE = kendo.template('
' + '
#:title#
' + '
');\n var MORE_BUTTON_TEMPLATE = kendo.template('
...
');\n var MonthGroupedView = kendo.Class.extend({\n init: function (view) {\n this._view = view;\n },\n _verticalRowCountForLevel: function (level) {\n var view = this._view;\n return view._rowCountForLevel(level);\n },\n _horizontalGroupCountForLevel: function (level) {\n var view = this._view;\n return view._columnCountForLevel(level);\n },\n _getCalendarRowsLength: function (cellsPerRow, cellCount) {\n return cellCount / cellsPerRow;\n },\n _createRows: function (start, startIdx, horizontalGroupCount, verticalGroupIndex) {\n var view = this._view;\n var cellsPerRow = NUMBER_OF_COLUMNS;\n var isVerticallyGrouped = view._isVerticallyGrouped();\n var html = '';\n for (var groupIdx = 0; groupIdx < horizontalGroupCount; groupIdx++) {\n html += view._createRow(start, startIdx, cellsPerRow, isVerticallyGrouped ? verticalGroupIndex : groupIdx);\n }\n return html;\n },\n _adjustStartDate: function (start) {\n return kendo.date.addDays(start, NUMBER_OF_COLUMNS);\n },\n _getContent: function (content, startDate, resources) {\n return content({\n date: startDate,\n resources: resources\n });\n },\n _getTimeSlotByPosition: function (x, y, groupIndex) {\n var group = this._view.groups[groupIndex];\n return group.daySlotByPosition(x, y);\n },\n _nextSlotStartDate: function (startDate) {\n return kendo.date.nextDay(startDate);\n },\n _createRowsLayout: function (resources, rows, groupHeaderTemplate) {\n var view = this._view;\n return view._createRowsLayout(resources, rows, groupHeaderTemplate);\n },\n _createVerticalColumnsLayout: function (resources, rows, groupHeaderTemplate, columns) {\n return columns;\n },\n _createColumnsLayout: function (resources, columns, groupHeaderTemplate) {\n var view = this._view;\n return view._createColumnsLayout(resources, columns, groupHeaderTemplate);\n },\n _verticalGroupCount: function (level) {\n var view = this._view;\n return view._rowCountForLevel(level);\n },\n _horizontalGroupCount: function (level) {\n var view = this._view;\n return view._columnCountForLevel(level) / view._columnOffsetForResource(level);\n },\n _positionEvent: function (event, group, range, rangeCount, start, end, rangeIndex) {\n var view = this._view;\n var isMobilePhoneView = view._isMobilePhoneView();\n if (rangeCount > 1) {\n if (rangeIndex === 0) {\n end = range.end.endDate();\n } else if (rangeIndex == rangeCount - 1) {\n start = range.start.startDate();\n } else {\n start = range.start.startDate();\n end = range.end.endDate();\n }\n }\n var occurrence = event.clone({\n start: start,\n end: end,\n head: range.head,\n tail: range.tail\n });\n if (isMobilePhoneView) {\n view._positionMobileEvent(range, view._createEventElement(occurrence), group);\n } else {\n view._positionEvent(range, view._createEventElement(occurrence), group);\n }\n },\n _addDaySlotCollections: function (groupCount, tableRows, startDate) {\n var view = this._view;\n var columnCount = NUMBER_OF_COLUMNS;\n var rowCount = NUMBER_OF_ROWS;\n for (var groupIndex = 0; groupIndex < groupCount; groupIndex++) {\n var cellCount = 0;\n var rowMultiplier = 0;\n if (view._isVerticallyGrouped()) {\n rowMultiplier = groupIndex;\n }\n for (var rowIndex = rowMultiplier * rowCount; rowIndex < (rowMultiplier + 1) * rowCount; rowIndex++) {\n var group = view.groups[groupIndex];\n var collection = group.addDaySlotCollection(kendo.date.addDays(startDate, cellCount), kendo.date.addDays(startDate, cellCount + columnCount));\n var tableRow = tableRows[rowIndex];\n var cells = tableRow.children;\n var cellMultiplier = 0;\n tableRow.setAttribute('role', 'row');\n if (!view._isVerticallyGrouped()) {\n cellMultiplier = groupIndex;\n }\n for (var cellIndex = cellMultiplier * columnCount; cellIndex < (cellMultiplier + 1) * columnCount; cellIndex++) {\n var cell = cells[cellIndex];\n view.addDaySlot(collection, cell, startDate, cellCount);\n cellCount++;\n }\n }\n }\n },\n _changePeriodGroupIndex: function (reverse) {\n var view = this._view;\n return reverse ? view.groups.length - 1 : 0;\n },\n _createResizeHint: function (range) {\n var view = this._view;\n var left = range.startSlot().offsetLeft;\n var top = range.start.offsetTop;\n var width = range.innerWidth();\n var height = range.start.clientHeight - 2;\n var hint = SchedulerView.fn._createResizeHint.call(view, left, top, width, height);\n view._appendResizeHint(hint);\n },\n _createMoveHint: function (range, event) {\n var view = this._view;\n var startSlot = range.startSlot();\n var endSlot = range.endSlot();\n var hint = view._createEventElement(event.clone({\n head: range.head,\n tail: range.tail\n }));\n hint.css({\n left: startSlot.offsetLeft + 2,\n top: startSlot.offsetTop + startSlot.firstChildHeight,\n height: view.options.eventHeight,\n width: range.innerWidth() - (startSlot.index !== endSlot.index ? 5 : 4)\n });\n hint.addClass('k-event-drag-hint');\n view._appendMoveHint(hint);\n }\n });\n var MonthGroupedByDateView = kendo.Class.extend({\n init: function (view) {\n this._view = view;\n },\n _verticalRowCountForLevel: function () {\n return 1;\n },\n _horizontalGroupCountForLevel: function (level) {\n var view = this._view;\n return view._columnCountForLevel(level + 1) / NUMBER_OF_COLUMNS;\n },\n _createRows: function (start, startIdx, horizontalGroupCount) {\n var view = this._view;\n var cellsPerRow = NUMBER_OF_COLUMNS;\n var isVerticallyGrouped = view._isVerticallyGrouped();\n var html = '';\n var dateIdx = 0;\n if (isVerticallyGrouped) {\n var verticalStart = new Date(start);\n var groupCount = view._groupCount();\n for (dateIdx; dateIdx < NUMBER_OF_ROWS; dateIdx++) {\n html += view._createRow(verticalStart, startIdx, groupCount, dateIdx);\n verticalStart = kendo.date.addDays(verticalStart, cellsPerRow);\n }\n start = kendo.date.nextDay(start);\n } else {\n for (dateIdx; dateIdx < cellsPerRow; dateIdx++) {\n html += view._createRow(start, startIdx, horizontalGroupCount, dateIdx);\n start = kendo.date.nextDay(start);\n }\n start = kendo.date.addDays(start, cellsPerRow);\n }\n return html;\n },\n _adjustStartDate: function (start, isLastRow) {\n var view = this._view;\n var isVerticallyGrouped = view._isVerticallyGrouped();\n if (isVerticallyGrouped) {\n if (isLastRow) {\n return kendo.date.addDays(start, NUMBER_OF_COLUMNS * (NUMBER_OF_ROWS - 1) + 1);\n } else {\n return kendo.date.nextDay(start);\n }\n }\n return kendo.date.addDays(start, NUMBER_OF_COLUMNS);\n },\n _getContent: function (content, startDate, resources, cellIdx) {\n if (cellIdx === 0) {\n return content({\n date: startDate,\n resources: resources\n });\n }\n return '';\n },\n _getTimeSlotByPosition: function (x, y, groupIndex) {\n var group = this._view.groups[groupIndex];\n return group.daySlotByPosition(x, y, true);\n },\n _nextSlotStartDate: function (startDate) {\n return startDate;\n },\n _getCalendarRowsLength: function () {\n var view = this._view;\n var isVerticallyGrouped = view._isVerticallyGrouped();\n return isVerticallyGrouped ? NUMBER_OF_COLUMNS : NUMBER_OF_ROWS;\n },\n _createRowsLayout: function (resources, rows, groupHeaderTemplate, columns) {\n var view = this._view;\n return view._createDateLayout(columns, null, false);\n },\n _createVerticalColumnsLayout: function (resources, rows, groupHeaderTemplate) {\n var view = this._view;\n var resource = resources[0];\n var configuration = [];\n var data = resource.dataSource.view();\n for (var dataIndex = 0; dataIndex < data.length * NUMBER_OF_ROWS; dataIndex++) {\n var obj = {\n text: groupHeaderTemplate({\n text: kendo.htmlEncode(kendo.getter(resource.dataTextField)(data[dataIndex % data.length])),\n color: kendo.getter(resource.dataColorField)(data[dataIndex % data.length]),\n field: resource.field,\n title: resource.title,\n name: resource.name,\n value: kendo.getter(resource.dataValueField)(data[dataIndex % data.length])\n }),\n className: 'k-slot-cell'\n };\n obj.columns = view._createColumnsLayout(resources.slice(1), null, groupHeaderTemplate);\n configuration.push(obj);\n }\n return configuration;\n },\n _createColumnsLayout: function (resources, columns, groupHeaderTemplate, subColumns) {\n var view = this._view;\n return view._createColumnsLayout(resources, columns, groupHeaderTemplate, subColumns, true);\n },\n _verticalGroupCount: function (level) {\n var view = this._view;\n return view._columnCountForLevel(level) / NUMBER_OF_ROWS;\n },\n _horizontalGroupCount: function (level) {\n var view = this._view;\n return view._columnCountForLevel(level) / NUMBER_OF_COLUMNS;\n },\n _positionEvent: function (event, group, range, rangeCount, start, end) {\n var view = this._view;\n var startIndex = range.start.index;\n var endIndex = range.end.index;\n var isMobilePhoneView = view._isMobilePhoneView();\n for (var i = range.start.index; i <= range.end.index; i++) {\n var currentSlot = range.collection._slots[i];\n var dateRange = group.daySlotRanges(currentSlot.start, currentSlot.start, true)[0];\n var occurrence = event.clone({\n start: i === startIndex ? start : currentSlot.startDate(),\n end: i === endIndex ? end : currentSlot.endDate(),\n head: i !== endIndex || range.head,\n tail: i !== startIndex || range.tail\n });\n if (isMobilePhoneView) {\n view._positionMobileEvent(dateRange, view._createEventElement(occurrence), group);\n } else {\n view._positionEvent(dateRange, view._createEventElement(occurrence), group);\n }\n }\n },\n _addDaySlotCollections: function (groupCount, tableRows, startDate) {\n var view = this._view;\n var columnCount = NUMBER_OF_COLUMNS;\n var rowCount = NUMBER_OF_ROWS;\n var isVerticallyGrouped = view._isVerticallyGrouped();\n for (var dateIndex = 0; dateIndex < columnCount; dateIndex++) {\n for (var rowIndex = 0; rowIndex < rowCount; rowIndex++) {\n var groupIndex = 0;\n var currentTableIndex = isVerticallyGrouped ? dateIndex : rowIndex;\n var tableRow = tableRows[currentTableIndex];\n var cells = tableRow.children;\n var cellMultiplier = 0;\n tableRow.setAttribute('role', 'row');\n if (!view._isVerticallyGrouped()) {\n cellMultiplier = dateIndex;\n }\n for (var cellIndex = cellMultiplier * groupCount; cellIndex < (cellMultiplier + 1) * groupCount; cellIndex++) {\n var cellCount = rowIndex * columnCount + dateIndex;\n var currentCellIndex = isVerticallyGrouped ? cellIndex + rowIndex * groupCount : cellIndex;\n var cell = cells[currentCellIndex];\n var currentGroupIndex = isVerticallyGrouped ? cellIndex : groupIndex;\n var group = view.groups[currentGroupIndex];\n var collection;\n if (dateIndex === 0) {\n collection = group.addDaySlotCollection(kendo.date.addDays(startDate, cellCount), kendo.date.addDays(startDate, cellCount + columnCount));\n } else {\n collection = group._daySlotCollections[rowIndex];\n }\n view.addDaySlot(collection, cell, startDate, cellCount);\n groupIndex++;\n }\n }\n }\n },\n _changePeriodGroupIndex: function (reverse, vertical, selectionGroupIndex) {\n var view = this._view;\n if (vertical && view._isVerticallyGrouped()) {\n return reverse ? view.groups.length - 1 : 0;\n }\n return selectionGroupIndex;\n },\n _createResizeHint: function (range) {\n var view = this._view;\n var left, top, width, height, hint;\n if (view._isVerticallyGrouped()) {\n left = range.startSlot().offsetLeft;\n top = range.start.offsetTop;\n width = range.startSlot().offsetWidth;\n height = range.endSlot().offsetTop + range.startSlot().offsetHeight - range.startSlot().offsetTop - 2;\n hint = SchedulerView.fn._createResizeHint.call(view, left, top, width, height);\n view._appendResizeHint(hint);\n } else {\n for (var slotIdx = range.startSlot().index; slotIdx <= range.endSlot().index; slotIdx++) {\n var slot = range.collection._slots[slotIdx];\n left = slot.offsetLeft;\n top = slot.offsetTop;\n width = slot.offsetWidth;\n height = slot.offsetHeight - 2;\n hint = SchedulerView.fn._createResizeHint.call(view, left, top, width, height);\n view._appendResizeHint(hint);\n }\n }\n },\n _createMoveHint: function (range, event) {\n var view = this._view;\n var startSlot = range.startSlot();\n var endSlot = range.endSlot();\n for (var slotIdx = startSlot.index; slotIdx <= endSlot.index; slotIdx++) {\n var slot = range.collection._slots[slotIdx];\n var hint = view._createEventElement(event.clone({\n head: range.head,\n tail: range.tail\n }));\n hint.css({\n left: slot.offsetLeft,\n top: slot.offsetTop + slot.firstChildHeight,\n height: view.options.eventHeight,\n width: slot.offsetWidth - 2\n });\n hint.addClass('k-event-drag-hint');\n view._appendMoveHint(hint);\n }\n }\n });\n kendo.ui.scheduler.MonthGroupedView = MonthGroupedView;\n kendo.ui.scheduler.MonthGroupedByDateView = MonthGroupedByDateView;\n ui.MonthView = SchedulerView.extend({\n init: function (element, options) {\n var that = this;\n SchedulerView.fn.init.call(that, element, options);\n that._groupedView = that._getGroupedView();\n that.title = that.options.title;\n that._templates();\n that._editable();\n that._renderLayout(that.options.date);\n that._groups();\n },\n name: 'month',\n _getGroupedView: function () {\n if (this._isGroupedByDate()) {\n return new kendo.ui.scheduler.MonthGroupedByDateView(this);\n } else {\n return new kendo.ui.scheduler.MonthGroupedView(this);\n }\n },\n _updateDirection: function (selection, ranges, multiple, reverse, vertical) {\n if (multiple) {\n var startSlot = ranges[0].start;\n var endSlot = ranges[ranges.length - 1].end;\n var isSameSlot = startSlot.index === endSlot.index;\n var isSameCollection = startSlot.collectionIndex === endSlot.collectionIndex;\n var updateDirection;\n if (vertical) {\n updateDirection = isSameSlot && isSameCollection || isSameCollection;\n } else {\n updateDirection = isSameSlot && isSameCollection;\n }\n if (updateDirection) {\n selection.backward = reverse;\n }\n }\n },\n _changeDate: function (selection, slot, previous) {\n var group = this.groups[selection.groupIndex];\n var collections, index;\n if (previous) {\n collections = group._getCollections(group.daySlotCollectionCount());\n index = slot.collectionIndex - 1;\n if (index >= 0) {\n return collections[index]._slots[collections[index]._slots.length - 1];\n }\n } else {\n collections = group._getCollections(group.daySlotCollectionCount());\n index = slot.collectionIndex + 1;\n var slotIndex = 0;\n if (collections[index] && collections[index]._slots[slotIndex]) {\n return collections[index]._slots[slotIndex];\n }\n }\n },\n _getNextHorizontalRange: function (group, method, horizontalRange) {\n var isVertical = this._isVerticallyGrouped();\n horizontalRange.startSlot = group[method](horizontalRange.startSlot, isVertical);\n horizontalRange.endSlot = group[method](horizontalRange.endSlot, isVertical);\n return horizontalRange;\n },\n _getNextVerticalRange: function (group, method, verticalRange, multiple) {\n var isVertical = this._isVerticallyGrouped() && this._isGroupedByDate();\n verticalRange.startSlot = group[method](verticalRange.startSlot, multiple, isVertical);\n verticalRange.endSlot = group[method](verticalRange.endSlot, multiple, isVertical);\n return verticalRange;\n },\n _changeViewPeriod: function (selection, reverse, vertical) {\n var pad = vertical ? 7 : 1;\n var newStart, newEnd;\n if (reverse) {\n pad *= -1;\n }\n newStart = kendo.date.addDays(selection.start, pad);\n newEnd = kendo.date.addDays(selection.end, pad);\n if (this._isInRange(newStart, newEnd)) {\n return false;\n }\n selection.start = newStart;\n selection.end = newEnd;\n if (!vertical || vertical && this._isVerticallyGrouped()) {\n selection.groupIndex = this._groupedView._changePeriodGroupIndex(reverse, vertical, selection.groupIndex);\n }\n selection.events = [];\n return true;\n },\n _continuousSlot: function (selection, ranges, reverse) {\n var index = selection.backward ? 0 : ranges.length - 1;\n var group = this.groups[selection.groupIndex];\n return group.continuousSlot(ranges[index].start, reverse);\n },\n _changeGroupContinuously: function (selection, continuousSlot, multiple, reverse) {\n if (!multiple) {\n var groupIndex = selection.groupIndex;\n var lastGroupIndex = this.groups.length - 1;\n var vertical = this._isVerticallyGrouped();\n var group = this.groups[groupIndex];\n if (!continuousSlot && vertical) {\n continuousSlot = group[reverse ? 'lastSlot' : 'firstSlot']();\n groupIndex += reverse ? -1 : 1;\n } else if (continuousSlot && !vertical) {\n groupIndex = reverse ? lastGroupIndex : 0;\n }\n if (groupIndex < 0 || groupIndex > lastGroupIndex) {\n groupIndex = reverse ? lastGroupIndex : 0;\n continuousSlot = null;\n }\n selection.groupIndex = groupIndex;\n }\n return continuousSlot;\n },\n _normalizeHorizontalSelection: function (selection, ranges, reverse) {\n var slot;\n if (reverse) {\n slot = ranges[0].start;\n } else {\n slot = ranges[ranges.length - 1].end;\n }\n return slot;\n },\n _normalizeVerticalSelection: function (selection, ranges) {\n var slot;\n if (selection.backward) {\n slot = ranges[0].start;\n } else {\n slot = ranges[ranges.length - 1].end;\n }\n return slot;\n },\n _templates: function () {\n var options = this.options, settings = extend({}, kendo.Template, options.templateSettings);\n this.eventTemplate = this._eventTmpl(options.eventTemplate, EVENT_WRAPPER_STRING);\n this.dayTemplate = kendo.template(options.dayTemplate, settings);\n this.groupHeaderTemplate = kendo.template(options.groupHeaderTemplate, settings);\n },\n dateForTitle: function () {\n return kendo.format(this.options.selectedDateFormat, this._firstDayOfMonth, this._lastDayOfMonth);\n },\n shortDateForTitle: function () {\n return kendo.format(this.options.selectedShortDateFormat, this._firstDayOfMonth, this._lastDayOfMonth);\n },\n nextDate: function () {\n return kendo.date.nextDay(this._lastDayOfMonth);\n },\n previousDate: function () {\n return kendo.date.previousDay(this._firstDayOfMonth);\n },\n startDate: function () {\n return this._startDate;\n },\n endDate: function () {\n return this._endDate;\n },\n _renderLayout: function (date) {\n var that = this;\n this._firstDayOfMonth = kendo.date.firstDayOfMonth(date);\n this._lastDayOfMonth = kendo.date.lastDayOfMonth(date);\n this._startDate = firstVisibleMonthDay(date, this.calendarInfo());\n this.createLayout(this._layout());\n this._content();\n this.refreshLayout();\n this.content.on('click' + NS, '.k-nav-day,.k-more-events', function (e) {\n var offset = $(e.currentTarget).offset();\n var slot = that._slotByPosition(offset.left, offset.top);\n e.preventDefault();\n that.trigger('navigate', {\n view: 'day',\n date: slot.startDate()\n });\n });\n },\n _editable: function () {\n if (this.options.editable && !this._isMobilePhoneView()) {\n if (this._isMobile()) {\n this._touchEditable();\n } else {\n this._mouseEditable();\n }\n }\n },\n _mouseEditable: function () {\n var that = this;\n that.element.on('click' + NS, '.k-scheduler-monthview .k-event a:has(.k-i-close)', function (e) {\n that.trigger('remove', { uid: $(this).closest('.k-event').attr(kendo.attr('uid')) });\n e.preventDefault();\n });\n if (that.options.editable.create !== false) {\n that.element.on('dblclick' + NS, '.k-scheduler-monthview .k-scheduler-content td', function (e) {\n var offset = $(e.currentTarget).offset();\n var slot = that._slotByPosition(offset.left, offset.top);\n if (slot) {\n var resourceInfo = that._resourceBySlot(slot);\n that.trigger('add', {\n eventInfo: extend({\n isAllDay: true,\n start: slot.startDate(),\n end: slot.startDate()\n }, resourceInfo)\n });\n }\n e.preventDefault();\n });\n }\n if (that.options.editable.update !== false) {\n that.element.on('dblclick' + NS, '.k-scheduler-monthview .k-event', function (e) {\n that.trigger('edit', { uid: $(this).closest('.k-event').attr(kendo.attr('uid')) });\n e.preventDefault();\n });\n }\n },\n _touchEditable: function () {\n var that = this;\n var threshold = 0;\n if (kendo.support.mobileOS.android) {\n threshold = 5;\n }\n if (that.options.editable.create !== false) {\n that._addUserEvents = new kendo.UserEvents(that.element, {\n threshold: threshold,\n useClickAsTap: !kendo.support.browser.edge,\n filter: '.k-scheduler-monthview .k-scheduler-content td',\n tap: function (e) {\n if (that._scrolling) {\n return;\n }\n var offset = $(e.target).offset();\n var slot = that._slotByPosition(offset.left, offset.top);\n if (slot) {\n var resourceInfo = that._resourceBySlot(slot);\n that.trigger('add', {\n eventInfo: extend({\n isAllDay: true,\n start: slot.startDate(),\n end: slot.startDate()\n }, resourceInfo)\n });\n }\n e.preventDefault();\n }\n });\n }\n if (that.options.editable.update !== false) {\n that._editUserEvents = new kendo.UserEvents(that.element, {\n threshold: threshold,\n filter: '.k-scheduler-monthview .k-event',\n useClickAsTap: !kendo.support.browser.edge,\n tap: function (e) {\n if (that._scrolling) {\n return;\n }\n if ($(e.event.target).closest('a:has(.k-i-close)').length === 0) {\n that.trigger('edit', { uid: $(e.target).closest('.k-event').attr(kendo.attr('uid')) });\n e.preventDefault();\n }\n }\n });\n }\n },\n selectionByElement: function (cell) {\n var offset = $(cell).offset();\n return this._slotByPosition(offset.left, offset.top);\n },\n _columnCountForLevel: function (level) {\n var columnLevel = this.columnLevels[level];\n return columnLevel ? columnLevel.length : 0;\n },\n _rowCountForLevel: function (level) {\n var rowLevel = this.rowLevels[level];\n return rowLevel ? rowLevel.length : 0;\n },\n _content: function () {\n var html = '';\n var verticalGroupCount = 1;\n var groupedView = this._groupedView;\n var resources = this.groupedResources;\n if (resources.length) {\n if (this._isVerticallyGrouped()) {\n verticalGroupCount = groupedView._verticalRowCountForLevel(resources.length - 1);\n }\n }\n for (var verticalGroupIdx = 0; verticalGroupIdx < verticalGroupCount; verticalGroupIdx++) {\n html += this._createCalendar(verticalGroupIdx);\n }\n html += '';\n this.content.find('table').html(html);\n },\n _createCalendar: function (verticalGroupIndex) {\n var start = this.startDate();\n var cellCount = NUMBER_OF_COLUMNS * NUMBER_OF_ROWS;\n var cellsPerRow = NUMBER_OF_COLUMNS;\n var weekStartDates = [start];\n var html = '';\n var horizontalGroupCount = 1;\n var isVerticallyGrouped = this._isVerticallyGrouped();\n var groupedView = this._groupedView;\n var resources = this.groupedResources;\n if (resources.length) {\n if (!isVerticallyGrouped) {\n horizontalGroupCount = groupedView._horizontalGroupCountForLevel(resources.length - 1);\n }\n }\n this._slotIndices = {};\n var calendarRowsLength = groupedView._getCalendarRowsLength(cellsPerRow, cellCount);\n for (var rowIdx = 0; rowIdx < calendarRowsLength; rowIdx++) {\n html += '';\n weekStartDates.push(start);\n var startIdx = rowIdx * cellsPerRow;\n html += groupedView._createRows(start, startIdx, horizontalGroupCount, verticalGroupIndex);\n start = groupedView._adjustStartDate(start, rowIdx === calendarRowsLength - 1);\n html += '';\n }\n this._weekStartDates = weekStartDates;\n this._endDate = kendo.date.previousDay(start);\n return html;\n },\n _createRow: function (startDate, startIdx, cellsPerRow, groupIndex) {\n var that = this;\n var min = that._firstDayOfMonth;\n var max = that._lastDayOfMonth;\n var content = that.dayTemplate;\n var classes = '';\n var html = '';\n var groupedView = this._groupedView;\n var resources = function () {\n return that._resourceBySlot({ groupIndex: groupIndex });\n };\n for (var cellIdx = 0; cellIdx < cellsPerRow; cellIdx++) {\n classes = '';\n if (kendo.date.isToday(startDate)) {\n classes += 'k-today';\n }\n if (!kendo.date.isInDateRange(startDate, min, max)) {\n classes += ' k-other-month';\n }\n html += ' ',\n className: 'k-hidden k-slot-cell'\n });\n }\n rows = groupedView._createRowsLayout(resources, inner, this.groupHeaderTemplate, columns);\n columns = groupedView._createVerticalColumnsLayout(resources, inner, this.groupHeaderTemplate, columns);\n } else {\n columns = groupedView._createColumnsLayout(resources, columns, this.groupHeaderTemplate, columns);\n }\n }\n return {\n columns: columns,\n rows: rows\n };\n },\n _createEventElement: function (event) {\n var options = this.options;\n var editable = options.editable;\n var isMobile = this._isMobile();\n event.showDelete = editable && editable.destroy !== false && !isMobile;\n event.resizable = editable && editable.resize !== false && !isMobile;\n event.ns = kendo.ns;\n event.resources = this.eventResources(event);\n event.inverseColor = event.resources && event.resources[0] ? this._shouldInverseResourceColor(event.resources[0]) : false;\n event.messages = options.messages || { destroy: 'Delete' };\n var element = $(this.eventTemplate(event));\n this.angular('compile', function () {\n return {\n elements: element,\n data: [{ dataItem: event }]\n };\n });\n return element;\n },\n _isInDateSlot: function (event) {\n var groups = this.groups[0];\n var slotStart = groups.firstSlot().start;\n var slotEnd = groups.lastSlot().end - 1;\n var startTime = kendo.date.toUtcTime(event.start);\n var endTime = kendo.date.toUtcTime(event.end);\n return (isInDateRange(startTime, slotStart, slotEnd) || isInDateRange(endTime, slotStart, slotEnd) || isInDateRange(slotStart, startTime, endTime) || isInDateRange(slotEnd, startTime, endTime)) && (!isInDateRange(endTime, slotStart, slotStart) || isInDateRange(endTime, startTime, startTime) || event.isAllDay);\n },\n _slotIndex: function (date) {\n return this._slotIndices[getDate(date).getTime()];\n },\n _positionMobileEvent: function (slotRange, element, group) {\n var startSlot = slotRange.start;\n if (slotRange.start.offsetLeft > slotRange.end.offsetLeft) {\n startSlot = slotRange.end;\n }\n var startIndex = slotRange.start.index;\n var endIndex = startIndex;\n var eventCount = 3;\n var events = SchedulerView.collidingEvents(slotRange.events(), startIndex, endIndex);\n events.push({\n element: element,\n start: startIndex,\n end: endIndex\n });\n var rows = SchedulerView.createRows(events);\n var slot = slotRange.collection.at(startIndex);\n var container = slot.container;\n if (!container) {\n container = $(kendo.format('
', startSlot.offsetTop + startSlot.firstChildTop + startSlot.firstChildHeight + 'px', startSlot.offsetLeft + 'px', startSlot.offsetWidth + 'px'));\n slot.container = container;\n this.content[0].appendChild(container[0]);\n }\n if (rows.length <= eventCount) {\n slotRange.addEvent({\n element: element,\n start: startIndex,\n end: endIndex,\n groupIndex: startSlot.groupIndex\n });\n group._continuousEvents.push({\n element: element,\n uid: element.attr(kendo.attr('uid')),\n start: slotRange.start,\n end: slotRange.end\n });\n container[0].appendChild(element[0]);\n }\n },\n _positionEvent: function (slotRange, element, group) {\n var eventHeight = this.options.eventHeight;\n var startSlot = slotRange.start;\n if (slotRange.start.offsetLeft > slotRange.end.offsetLeft) {\n startSlot = slotRange.end;\n }\n var startIndex = slotRange.start.index;\n var endIndex = slotRange.end.index;\n var eventCount = startSlot.eventCount;\n var events = SchedulerView.collidingEvents(slotRange.events(), startIndex, endIndex);\n var rightOffset = startIndex !== endIndex ? 5 : 4;\n events.push({\n element: element,\n start: startIndex,\n end: endIndex\n });\n var rows = SchedulerView.createRows(events);\n for (var idx = 0, length = Math.min(rows.length, eventCount); idx < length; idx++) {\n var rowEvents = rows[idx].events;\n var eventTop = startSlot.offsetTop + startSlot.firstChildTop + startSlot.firstChildHeight + idx * eventHeight + 3 * idx + 'px';\n for (var j = 0, eventLength = rowEvents.length; j < eventLength; j++) {\n rowEvents[j].element[0].style.top = eventTop;\n }\n }\n if (rows.length > eventCount) {\n for (var slotIndex = startIndex; slotIndex <= endIndex; slotIndex++) {\n var collection = slotRange.collection;\n var slot = collection.at(slotIndex);\n if (slot.more) {\n continue;\n }\n slot.more = $(MORE_BUTTON_TEMPLATE({\n ns: kendo.ns,\n start: slotIndex,\n end: slotIndex,\n width: slot.clientWidth - 2,\n left: slot.offsetLeft + 2,\n top: slot.offsetTop + slot.firstChildTop + slot.firstChildHeight + eventCount * eventHeight + 3 * eventCount\n }));\n this.content[0].appendChild(slot.more[0]);\n }\n } else {\n slotRange.addEvent({\n element: element,\n start: startIndex,\n end: endIndex,\n groupIndex: startSlot.groupIndex\n });\n element[0].style.width = slotRange.innerWidth() - rightOffset + 'px';\n element[0].style.left = startSlot.offsetLeft + 2 + 'px';\n element[0].style.height = eventHeight + 'px';\n group._continuousEvents.push({\n element: element,\n uid: element.attr(kendo.attr('uid')),\n start: slotRange.start,\n end: slotRange.end\n });\n element.appendTo(this.content);\n }\n },\n _slotByPosition: function (x, y) {\n var offset = this.content.offset();\n x -= offset.left;\n y -= offset.top;\n y += this.content[0].scrollTop;\n x += this.content[0].scrollLeft;\n x = Math.ceil(x);\n y = Math.ceil(y);\n for (var groupIndex = 0; groupIndex < this.groups.length; groupIndex++) {\n var slot = this._groupedView._getTimeSlotByPosition(x, y, groupIndex);\n if (slot) {\n return slot;\n }\n }\n return null;\n },\n _appendResizeHint: function (hint) {\n hint.appendTo(this.content);\n this._resizeHint = this._resizeHint.add(hint);\n },\n _updateResizeHint: function (event, groupIndex, startTime, endTime) {\n this._removeResizeHint();\n var group = this.groups[groupIndex];\n var ranges = group.ranges(startTime, endTime, true, event.isAllDay);\n for (var rangeIndex = 0; rangeIndex < ranges.length; rangeIndex++) {\n this._groupedView._createResizeHint(ranges[rangeIndex]);\n }\n this._resizeHint.find('.k-label-top,.k-label-bottom').text('');\n this._resizeHint.first().addClass('k-first').find('.k-label-top').text(kendo.toString(kendo.timezone.toLocalDate(startTime), 'M/dd'));\n this._resizeHint.last().addClass('k-last').find('.k-label-bottom').text(kendo.toString(kendo.timezone.toLocalDate(endTime), 'M/dd'));\n },\n _updateMoveHint: function (event, groupIndex, distance) {\n var start = kendo.date.toUtcTime(event.start) + distance;\n var end = start + event.duration();\n var group = this.groups[groupIndex];\n var ranges = group.ranges(start, end, true, event.isAllDay);\n this._removeMoveHint(event.uid);\n for (var rangeIndex = 0; rangeIndex < ranges.length; rangeIndex++) {\n this._groupedView._createMoveHint(ranges[rangeIndex], event);\n }\n },\n _appendMoveHint: function (hint) {\n hint.appendTo(this.content);\n this._moveHint = this._moveHint.add(hint);\n },\n _groups: function () {\n var groupCount = this._groupCount();\n var tableRows = this.content[0].getElementsByTagName('tr');\n var startDate = this.startDate();\n this.groups = [];\n for (var idx = 0; idx < groupCount; idx++) {\n this._addResourceView(idx);\n }\n this._groupedView._addDaySlotCollections(groupCount, tableRows, startDate);\n },\n addDaySlot: function (collection, cell, startDate, cellCount) {\n var clientHeight = cell.clientHeight;\n var firstChildHeight = cell.children.length ? cell.children[0].offsetHeight + 3 : 0;\n var start = kendo.date.addDays(startDate, cellCount);\n var end = kendo.date.MS_PER_DAY;\n if (startDate.getHours() !== start.getHours()) {\n end += (startDate.getHours() - start.getHours()) * kendo.date.MS_PER_HOUR;\n }\n start = kendo.date.toUtcTime(start);\n end += start;\n var eventCount = Math.floor((clientHeight - firstChildHeight - this.options.moreButtonHeight) / (this.options.eventHeight + 3));\n cell.setAttribute('role', 'gridcell');\n cell.setAttribute('aria-selected', false);\n collection.addDaySlot(cell, start, end, eventCount);\n },\n render: function (events) {\n this.content.children('.k-event,.k-more-events,.k-events-container').remove();\n this._groups();\n events = new kendo.data.Query(events).sort([\n {\n field: 'start',\n dir: 'asc'\n },\n {\n field: 'end',\n dir: 'desc'\n }\n ]).toArray();\n var resources = this.groupedResources;\n if (resources.length) {\n this._renderGroups(events, resources, 0, 1);\n } else {\n this._renderEvents(events, 0);\n }\n this.refreshLayout();\n this.trigger('activate');\n },\n _renderEvents: function (events, groupIndex) {\n var event;\n var idx;\n var length;\n var range;\n var start;\n var end;\n for (idx = 0, length = events.length; idx < length; idx++) {\n event = events[idx];\n if (this._isInDateSlot(event)) {\n var group = this.groups[groupIndex];\n var view = this._groupedView._view;\n var isMobilePhoneView = view._isMobilePhoneView();\n if (!group._continuousEvents) {\n group._continuousEvents = [];\n }\n var ranges = group.slotRanges(event, true);\n var rangeCount = ranges.length;\n if (isMobilePhoneView) {\n range = ranges[0];\n start = range.start.start;\n end = range.end.end;\n var rangeStart = new Date(range.start.start);\n var rangeEnd = ranges[ranges.length - 1].end.end;\n var newStart = new Date(rangeStart);\n var newEnd = new Date(end);\n while (rangeStart.getTime() <= rangeEnd && event.end >= kendo.timezone.toLocalDate(rangeStart) && event.start <= kendo.timezone.toLocalDate(rangeEnd)) {\n var dateRange = group.daySlotRanges(newStart.getTime(), newEnd.getTime(), true)[0];\n newEnd.setDate(newEnd.getDate() + 1);\n newStart.setDate(newStart.getDate() + 1);\n if (dateRange) {\n dateRange.head = null;\n dateRange.middle = null;\n dateRange.tail = null;\n this._groupedView._positionEvent(event, group, dateRange, 1, start, end, 0);\n }\n rangeStart = kendo.date.addDays(rangeStart, 1);\n }\n } else {\n for (var rangeIndex = 0; rangeIndex < rangeCount; rangeIndex++) {\n range = ranges[rangeIndex];\n start = event.start;\n end = event.end;\n this._groupedView._positionEvent(event, group, range, rangeCount, start, end, rangeIndex);\n }\n }\n }\n }\n },\n _renderGroups: function (events, resources, offset, columnLevel) {\n var resource = resources[0];\n if (resource) {\n var view = resource.dataSource.view();\n for (var itemIdx = 0; itemIdx < view.length; itemIdx++) {\n var value = this._resourceValue(resource, view[itemIdx]);\n var tmp = new kendo.data.Query(events).filter({\n field: resource.field,\n operator: SchedulerView.groupEqFilter(value)\n }).toArray();\n if (resources.length > 1) {\n offset = this._renderGroups(tmp, resources.slice(1), offset++, columnLevel + 1);\n } else {\n this._renderEvents(tmp, offset++);\n }\n }\n }\n return offset;\n },\n _groupCount: function () {\n var resources = this.groupedResources;\n var groupedView = this._groupedView;\n if (resources.length) {\n if (this._isVerticallyGrouped()) {\n return groupedView._verticalGroupCount(resources.length - 1);\n } else {\n return groupedView._horizontalGroupCount(resources.length);\n }\n }\n return 1;\n },\n _columnOffsetForResource: function (index) {\n return this._columnCountForLevel(index) / this._columnCountForLevel(index - 1);\n },\n destroy: function () {\n if (this.table) {\n this.table.removeClass('k-scheduler-monthview');\n }\n if (this.content) {\n this.content.off(NS);\n }\n if (this.element) {\n this.element.off(NS);\n }\n SchedulerView.fn.destroy.call(this);\n if (this._isMobile() && !this._isMobilePhoneView() && this.options.editable) {\n if (this.options.editable.create !== false) {\n this._addUserEvents.destroy();\n }\n if (this.options.editable.update !== false) {\n this._editUserEvents.destroy();\n }\n }\n },\n events: [\n 'remove',\n 'add',\n 'edit',\n 'navigate'\n ],\n options: {\n title: 'Month',\n name: 'month',\n eventHeight: 25,\n moreButtonHeight: 13,\n editable: true,\n selectedDateFormat: '{0:y}',\n selectedShortDateFormat: '{0:y}',\n groupHeaderTemplate: '#=text#',\n dayTemplate: DAY_TEMPLATE,\n eventTemplate: EVENT_TEMPLATE\n }\n });\n function shiftArray(array, idx) {\n return array.slice(idx).concat(array.slice(0, idx));\n }\n function firstVisibleMonthDay(date, calendarInfo) {\n var firstDay = calendarInfo.firstDay, firstVisibleDay = new Date(date.getFullYear(), date.getMonth(), 0, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n while (firstVisibleDay.getDay() != firstDay) {\n kendo.date.setTime(firstVisibleDay, -1 * MS_PER_DAY);\n }\n return firstVisibleDay;\n }\n function isInDateRange(value, min, max) {\n var msMin = min, msMax = max, msValue;\n msValue = value;\n return msValue >= msMin && msValue <= msMax;\n }\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));"]}